ARM: OMAP2+: hwmod data: cleanup in preparation for link array removal
Subsystems (4)
Paul Walmsley
maintainercover ARM: OMAP2+: hwmod data: cleanup in preparation for link array removal
Hi
This series cleans up some hwmod data problems. Some of these are necessary prerequisites for the forthcoming link array removal series.
This series is intended to apply on the 'hwmod_code_cleanup_3.4' branch posted earlier.
This series is available via git at git://git.pwsan.com/linux-2.6 in the 'hwmod_data_cleanup_3.4' branch.
- Paul
---
hwmod_data_cleanup_3.4
text data bss dec hex filename
6591935 679436 5593756 12865127 c44e67 vmlinux.omap2plus_defconfig.orig
6591935 680332 5593436 12865703 c450a7 vmlinux.omap2plus_defconfig
Paul Walmsley (9):
ARM: OMAP2/3: hwmod data: update old names
ARM: OMAP3: hwmod data: fix interfaces for the MMC hwmods
ARM: OMAP3: hwmod data: add DSS->L3 interconnect for 3430ES1
ARM: OMAP3: hwmod data: GPTIMER12 is attached to a separate interconnect
ARM: OMAP36xx: hwmod data: fix SmartReflex interface data
ARM: OMAP4: hwmod data: remove bandgap hwmod
ARM: OMAP4: hwmod data: add OCP_USER_DSP; mark omap44xx_dsp__iva appropriately
ARM: OMAP4: hwmod data: uncomment some "excluded" hwmods
ARM: OMAP2+: hwmod: extend OCP_* register offsets from 16 to 32 bits
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 4 - arch/arm/mach-omap2/omap_hwmod_2430_data.c | 6 + arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 137 ++++++++++++++++++++------ arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 39 +------ arch/arm/plat-omap/include/plat/omap_hwmod.h | 7 + 5 files changed, 121 insertions(+), 72 deletions(-)
Paul Walmsley
maintainerPATCH 1/9 ARM: OMAP2/3: hwmod data: update old names
Some of the 2xxx and 3xxx hwmod data files use the old naming style for hwmods, ending in a "_hwmod". These names are used by the OMAP integration code to map hwmods to platform_devices, so they need to be consistent, or the platform_devices won't be created. Remove the _hwmod suffix to conform with the rest of the OMAP SoC data.
--- arch/arm/mach-omap2/omap_hwmod_2420_data.c | 4 ++-- arch/arm/mach-omap2/omap_hwmod_2430_data.c | 6 +++--- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-)
arch/arm/mach-omap2/omap_hwmod_2420_data.c +2 -2
@@ -1376,7 +1376,7 @@ static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = { };static struct omap_hwmod omap2420_mcspi1_hwmod = { - .name ="mcspi1_hwmod" , + .name ="mcspi1" , .mpu_irqs = omap2_mcspi1_mpu_irqs, .sdma_reqs = omap2_mcspi1_sdma_reqs, .main_clk ="mcspi1_fck" ,
@@ -1405,7 +1405,7 @@ static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = { };static struct omap_hwmod omap2420_mcspi2_hwmod = { - .name ="mcspi2_hwmod" , + .name ="mcspi2" , .mpu_irqs = omap2_mcspi2_mpu_irqs, .sdma_reqs = omap2_mcspi2_sdma_reqs, .main_clk ="mcspi2_fck" ,
arch/arm/mach-omap2/omap_hwmod_2430_data.c +3 -3
@@ -1481,7 +1481,7 @@ static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = { };static struct omap_hwmod omap2430_mcspi1_hwmod = { - .name ="mcspi1_hwmod" , + .name ="mcspi1" , .mpu_irqs = omap2_mcspi1_mpu_irqs, .sdma_reqs = omap2_mcspi1_sdma_reqs, .main_clk ="mcspi1_fck" ,
@@ -1510,7 +1510,7 @@ static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = { };static struct omap_hwmod omap2430_mcspi2_hwmod = { - .name ="mcspi2_hwmod" , + .name ="mcspi2" , .mpu_irqs = omap2_mcspi2_mpu_irqs, .sdma_reqs = omap2_mcspi2_sdma_reqs, .main_clk ="mcspi2_fck" ,
@@ -1552,7 +1552,7 @@ static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = { };static struct omap_hwmod omap2430_mcspi3_hwmod = { - .name ="mcspi3_hwmod" , + .name ="mcspi3" , .mpu_irqs = omap2430_mcspi3_mpu_irqs, .sdma_reqs = omap2430_mcspi3_sdma_reqs, .main_clk ="mcspi3_fck" ,
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +5 -5
@@ -1087,7 +1087,7 @@ static struct omap_hwmod omap3xxx_timer11_hwmod = { .class = &omap3xxx_timer_hwmod_class, }; -/* timer12*/ +/* timer12 */ static struct omap_hwmod omap3xxx_timer12_hwmod;static struct omap_hwmod_irq_info omap3xxx_timer12_mpu_irqs[] = { { .irq =95 , },
@@ -2669,7 +2669,7 @@ static struct omap_hwmod_ocp_if *omap3_sr1_slaves[] = { };static struct omap_hwmod omap34xx_sr1_hwmod = { - .name ="sr1_hwmod" , + .name ="sr1" , .class = &omap34xx_smartreflex_hwmod_class, .main_clk ="sr1_fck" , .vdd_name ="mpu_iva" ,
@@ -2688,7 +2688,7 @@ static struct omap_hwmod omap34xx_sr1_hwmod = { };static struct omap_hwmod omap36xx_sr1_hwmod = { - .name ="sr1_hwmod" , + .name ="sr1" , .class = &omap36xx_smartreflex_hwmod_class, .main_clk ="sr1_fck" , .vdd_name ="mpu_iva" ,
@@ -2711,7 +2711,7 @@ static struct omap_hwmod_ocp_if *omap3_sr2_slaves[] = { };static struct omap_hwmod omap34xx_sr2_hwmod = { - .name ="sr2_hwmod" , + .name ="sr2" , .class = &omap34xx_smartreflex_hwmod_class, .main_clk ="sr2_fck" , .vdd_name ="core" ,
@@ -2730,7 +2730,7 @@ static struct omap_hwmod omap34xx_sr2_hwmod = { };static struct omap_hwmod omap36xx_sr2_hwmod = { - .name ="sr2_hwmod" , + .name ="sr2" , .class = &omap36xx_smartreflex_hwmod_class, .main_clk ="sr2_fck" , .vdd_name ="core" ,
Paul Walmsley
maintainerPATCH 2/9 ARM: OMAP3: hwmod data: fix interfaces for the MMC hwmods
In reply to Paul WalmsleyCommit a52e2ab66d4a9305e1ba64d9b9d25754b6c70895 ("ARM: OMAP3: hwmod
data: disable multiblock reads on MMC1/2 on OMAP34xx/35xx <= ES2.1") didn't link the MMC hwmods to the interconnects correctly. Future patches will register hwmods by interface, so if this is not fixed, the MMC IP blocks won't be registered. Update the interface data records to point to the correct IP blocks.
--- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 38 ++++++++++++++++++++++------ 1 files changed, 30 insertions(+), 8 deletions(-)
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +30 -8
@@ -70,8 +70,10 @@ static struct omap_hwmod omap34xx_mcspi1;static struct omap_hwmod omap34xx_mcspi2;static struct omap_hwmod omap34xx_mcspi3;static struct omap_hwmod omap34xx_mcspi4; -static struct omap_hwmod omap3xxx_mmc1_hwmod; -static struct omap_hwmod omap3xxx_mmc2_hwmod; +static struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod; +static struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod; +static struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod; +static struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod;static struct omap_hwmod omap3xxx_mmc3_hwmod;static struct omap_hwmod am35xx_usbhsotg_hwmod;
@@ -192,9 +194,18 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = { };/* L4 CORE -> MMC1 interface */ -static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc1 = { +static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc1 = { .master = &omap3xxx_l4_core_hwmod, - .slave = &omap3xxx_mmc1_hwmod, + .slave = &omap3xxx_pre_es3_mmc1_hwmod, + .clk ="mmchs1_ick" , + .addr = omap2430_mmc1_addr_space, + .user =OCP_USER_MPU |OCP_USER_SDMA , + .flags =OMAP_FIREWALL_L4 +}; + +static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc1 = { + .master = &omap3xxx_l4_core_hwmod, + .slave = &omap3xxx_es3plus_mmc1_hwmod, .clk ="mmchs1_ick" , .addr = omap2430_mmc1_addr_space, .user =OCP_USER_MPU |OCP_USER_SDMA ,
@@ -202,9 +213,18 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc1 = { };/* L4 CORE -> MMC2 interface */ -static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc2 = { +static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc2 = { + .master = &omap3xxx_l4_core_hwmod, + .slave = &omap3xxx_pre_es3_mmc2_hwmod, + .clk ="mmchs2_ick" , + .addr = omap2430_mmc2_addr_space, + .user =OCP_USER_MPU |OCP_USER_SDMA , + .flags =OMAP_FIREWALL_L4 +}; + +static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc2 = { .master = &omap3xxx_l4_core_hwmod, - .slave = &omap3xxx_mmc2_hwmod, + .slave = &omap3xxx_es3plus_mmc2_hwmod, .clk ="mmchs2_ick" , .addr = omap2430_mmc2_addr_space, .user =OCP_USER_MPU |OCP_USER_SDMA ,
@@ -3141,7 +3161,8 @@ static struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = { };static struct omap_hwmod_ocp_if *omap3xxx_mmc1_slaves[] = { - &omap3xxx_l4_core__mmc1, + &omap3xxx_l4_core__pre_es3_mmc1, + &omap3xxx_l4_core__es3plus_mmc1, };static struct omap_mmc_dev_attr mmc1_dev_attr = {
@@ -3216,7 +3237,8 @@ static struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = { };static struct omap_hwmod_ocp_if *omap3xxx_mmc2_slaves[] = { - &omap3xxx_l4_core__mmc2, + &omap3xxx_l4_core__pre_es3_mmc2, + &omap3xxx_l4_core__es3plus_mmc2, };/* See 35xx errata 2.1.1.128 in SPRZ278F */
Paul Walmsley
maintainerPATCH 3/9 ARM: OMAP3: hwmod data: add DSS->L3 interconnect for 3430ES1
In reply to Paul WalmsleyThe OMAP3 hwmod data was missing a DSS->L3 interconnect link for the OMAP3430 ES1 DSS hwmod. Since the hwmod code and data is being modified to register interfaces rather than hwmods, this would result in the DSS hwmod not being registered correctly on OMAP3430ES1.
--- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +7 -0
@@ -133,6 +133,12 @@ static struct omap_hwmod_ocp_if *omap3xxx_l3_main_slaves[] = { };/* DSS -> l3 */ +static struct omap_hwmod_ocp_if omap3430es1_dss__l3 = { + .master = &omap3430es1_dss_core_hwmod, + .slave = &omap3xxx_l3_main_hwmod, + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +static struct omap_hwmod_ocp_if omap3xxx_dss__l3 = { .master = &omap3xxx_dss_core_hwmod, .slave = &omap3xxx_l3_main_hwmod,
@@ -1400,6 +1406,7 @@ static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {/* dss master ports */ static struct omap_hwmod_ocp_if *omap3xxx_dss_masters[] = { &omap3xxx_dss__l3, + &omap3430es1_dss__l3, };/* l4_core -> dss */
Paul Walmsley
maintainerPATCH 4/9 ARM: OMAP3: hwmod data: GPTIMER12 is attached to a separate interconnect
In reply to Paul WalmsleyGPTIMER12 is attached to the L4 SEC interconnect, not directly to L4 WKUP. Add the L4 SEC interconnect and attach GPTIMER12 to it.
--- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 28 +++++++++++++++++++++++++--- 1 files changed, 25 insertions(+), 3 deletions(-)
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +25 -3
@@ -170,6 +170,7 @@ static struct omap_hwmod omap3xxx_l3_main_hwmod = { };static struct omap_hwmod omap3xxx_l4_wkup_hwmod; +static struct omap_hwmod omap3xxx_l4_sec_hwmod;static struct omap_hwmod omap3xxx_uart1_hwmod;static struct omap_hwmod omap3xxx_uart2_hwmod;static struct omap_hwmod omap3xxx_uart3_hwmod;
@@ -521,6 +522,13 @@ static struct omap_hwmod omap3xxx_l4_per_hwmod = { .flags = HWMOD_NO_IDLEST, }; +/* L4_WKUP -> L4_SEC interface */ +static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__l4_sec = { + .master = &omap3xxx_l4_wkup_hwmod, + .slave = &omap3xxx_l4_sec_hwmod, + .user =OCP_USER_MPU |OCP_USER_SDMA , +}; +/* Slave interfaces on the L4_WKUP interconnect */ static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = { &omap3xxx_l4_core__l4_wkup,
@@ -535,6 +543,20 @@ static struct omap_hwmod omap3xxx_l4_wkup_hwmod = { .flags = HWMOD_NO_IDLEST, }; +/* Slave interfaces on the L4_SEC interconnect */ +static struct omap_hwmod_ocp_if *omap3xxx_l4_sec_slaves[] = { + &omap3xxx_l4_wkup__l4_sec, +}; + +/* L4 SEC */ +static struct omap_hwmod omap3xxx_l4_sec_hwmod = { + .name ="l4_sec" , + .class = &l4_hwmod_class, + .slaves = omap3xxx_l4_sec_slaves, + .slaves_cnt =ARRAY_SIZE (omap3xxx_l4_sec_slaves), + .flags =HWMOD_NO_IDLEST , +}; +/* Master interfaces on the MPU device */ static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = { &omap3xxx_mpu__l3_main,
@@ -1130,8 +1152,8 @@ static struct omap_hwmod_addr_space omap3xxx_timer12_addrs[] = { };/* l4_core -> timer12 */ -static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer12 = { - .master = &omap3xxx_l4_core_hwmod, +static struct omap_hwmod_ocp_if omap3xxx_l4_sec__timer12 = { + .master = &omap3xxx_l4_sec_hwmod, .slave = &omap3xxx_timer12_hwmod, .clk ="gpt12_ick" , .addr = omap3xxx_timer12_addrs,
@@ -1140,7 +1162,7 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer12 = {/* timer12 slave port */ static struct omap_hwmod_ocp_if *omap3xxx_timer12_slaves[] = { - &omap3xxx_l4_core__timer12, + &omap3xxx_l4_sec__timer12, };/* timer12 hwmod */
Paul Walmsley
maintainerPATCH 5/9 ARM: OMAP36xx: hwmod data: fix SmartReflex interface data
In reply to Paul WalmsleyCommit d34427267186827dfd62bd8cf726601fffb22534 ("OMAP3: PM: Adding smartreflex hwmod data") added OMAP36xx-specific SmartReflex IP block data, but attempted to share the interface data with the OMAP34xx IP blocks. This causes some problems - for example, the 36xx IP blocks won't be registered when the hwmod subsystem is modified to register links, since they aren't connected to the rest of the data. So, modify the OMAP36xx SmartReflex IP block data to use separate interface data structures from the OMAP34xx SmartReflex IP blocks.
--- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 54 +++++++++++++++++++++------- 1 files changed, 40 insertions(+), 14 deletions(-)
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +40 -14
@@ -66,6 +66,8 @@ static struct omap_hwmod omap3xxx_gpio5_hwmod;static struct omap_hwmod omap3xxx_gpio6_hwmod;static struct omap_hwmod omap34xx_sr1_hwmod;static struct omap_hwmod omap34xx_sr2_hwmod; +static struct omap_hwmod omap36xx_sr1_hwmod; +static struct omap_hwmod omap36xx_sr2_hwmod;static struct omap_hwmod omap34xx_mcspi1;static struct omap_hwmod omap34xx_mcspi2;static struct omap_hwmod omap34xx_mcspi3;
@@ -413,7 +415,7 @@ static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = { { } }; -static struct omap_hwmod_ocp_if omap3_l4_core__sr1 = { +static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap34xx_sr1_hwmod, .clk ="sr_l4_ick" ,
@@ -421,6 +423,14 @@ static struct omap_hwmod_ocp_if omap3_l4_core__sr1 = { .user = OCP_USER_MPU, }; +static struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = { + .master = &omap3xxx_l4_core_hwmod, + .slave = &omap36xx_sr1_hwmod, + .clk ="sr_l4_ick" , + .addr = omap3_sr1_addr_space, + .user =OCP_USER_MPU , +}; +/* L4 CORE -> SR1 interface */ static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = { {
@@ -431,7 +441,7 @@ static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = { { } }; -static struct omap_hwmod_ocp_if omap3_l4_core__sr2 = { +static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = { .master = &omap3xxx_l4_core_hwmod, .slave = &omap34xx_sr2_hwmod, .clk ="sr_l4_ick" ,
@@ -439,6 +449,14 @@ static struct omap_hwmod_ocp_if omap3_l4_core__sr2 = { .user = OCP_USER_MPU, }; +static struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = { + .master = &omap3xxx_l4_core_hwmod, + .slave = &omap36xx_sr2_hwmod, + .clk ="sr_l4_ick" , + .addr = omap3_sr2_addr_space, + .user =OCP_USER_MPU , +}; +/* * usbhsotg interface data */
@@ -2713,8 +2731,8 @@ static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = { };/* SR1 */ -static struct omap_hwmod_ocp_if *omap3_sr1_slaves[] = { - &omap3_l4_core__sr1, +static struct omap_hwmod_ocp_if *omap34xx_sr1_slaves[] = { + &omap34xx_l4_core__sr1, };static struct omap_hwmod omap34xx_sr1_hwmod = {
@@ -2731,11 +2749,15 @@ static struct omap_hwmod omap34xx_sr1_hwmod = { .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT, }, }, - .slaves = omap3_sr1_slaves, - .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves), + .slaves = omap34xx_sr1_slaves, + .slaves_cnt = ARRAY_SIZE(omap34xx_sr1_slaves), .flags = HWMOD_SET_DEFAULT_CLOCKACT, }; +static struct omap_hwmod_ocp_if *omap36xx_sr1_slaves[] = { + &omap36xx_l4_core__sr1, +}; +static struct omap_hwmod omap36xx_sr1_hwmod = { .name ="sr1" , .class = &omap36xx_smartreflex_hwmod_class,
@@ -2750,13 +2772,13 @@ static struct omap_hwmod omap36xx_sr1_hwmod = { .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT, }, }, - .slaves = omap3_sr1_slaves, - .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves), + .slaves = omap36xx_sr1_slaves, + .slaves_cnt = ARRAY_SIZE(omap36xx_sr1_slaves), };/* SR2 */ -static struct omap_hwmod_ocp_if *omap3_sr2_slaves[] = { - &omap3_l4_core__sr2, +static struct omap_hwmod_ocp_if *omap34xx_sr2_slaves[] = { + &omap34xx_l4_core__sr2, }; static struct omap_hwmod omap34xx_sr2_hwmod = {
@@ -2773,11 +2795,15 @@ static struct omap_hwmod omap34xx_sr2_hwmod = { .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT, }, }, - .slaves = omap3_sr2_slaves, - .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves), + .slaves = omap34xx_sr2_slaves, + .slaves_cnt = ARRAY_SIZE(omap34xx_sr2_slaves), .flags = HWMOD_SET_DEFAULT_CLOCKACT, }; +static struct omap_hwmod_ocp_if *omap36xx_sr2_slaves[] = { + &omap36xx_l4_core__sr2, +}; +static struct omap_hwmod omap36xx_sr2_hwmod = { .name ="sr2" , .class = &omap36xx_smartreflex_hwmod_class,
@@ -2792,8 +2818,8 @@ static struct omap_hwmod omap36xx_sr2_hwmod = { .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT, }, }, - .slaves = omap3_sr2_slaves, - .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves), + .slaves = omap36xx_sr2_slaves, + .slaves_cnt = ARRAY_SIZE(omap36xx_sr2_slaves), };/*
Paul Walmsley
maintainerPATCH 5/9 ARM: OMAP36xx: hwmod data: fix SmartReflex interface data
Dropping this patch from this series due to conflicts with the SmartReflex branch. It will be moved to a subsequent series.
- Paul
PATCH 5/9 ARM: OMAP36xx: hwmod data: fix SmartReflex interface data
Hi Paul,
Quoted 3 lines · Paul Walmsley
Dropping this patch from this series due to conflicts with the SmartReflex branch. ?It will be moved to a subsequent series.
I can take this change as part of the series I am preparing for the SR conversion to drivers/.
What do you thin?
Quoted 1 line
- Paul
Jean
Quoted 4 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org
More majordomo info at ?http://vger.kernel.org/majordomo-info.html
Paul Walmsley
maintainerPATCH 5/9 ARM: OMAP36xx: hwmod data: fix SmartReflex interface data
Hi
Quoted 7 lines · Jean Pihet
Quoted 3 lines · Paul Walmsley
Dropping this patch from this series due to conflicts with the SmartReflex branch. ?It will be moved to a subsequent series.
I can take this change as part of the series I am preparing for the SR conversion to
drivers/.
What do you thin?
I've already included it as part of another pull request...
- Paul
Paul Walmsley
maintainerPATCH 6/9 ARM: OMAP4: hwmod data: remove bandgap hwmod
In reply to Paul WalmsleyCommit 407a6888f7362cb3dabe69ea6d9dcf3c750dc56a ("OMAP4: hwmod data:
Add AESS, McPDM, bandgap, counter_32k, MMC, KBD, ISS & IPU") adds a hwmod for the bandgap die temperature sensor IP block. This IP block has no interconnect port or firewall region, nor does it have an independent register space or OCP control registers. Its registers are embedded in the System Control Module (SCM) IP block. So it appears that the bandgap device should be created by the SCM driver.
--- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 30 ---------------------------- 1 files changed, 0 insertions(+), 30 deletions(-)
arch/arm/mach-omap2/omap_hwmod_44xx_data.c +0 -30
@@ -824,33 +824,6 @@ static struct omap_hwmod omap44xx_aess_hwmod = { };/* -* 'bandgap' class -* bangap reference for ldo regulators -*/ - -static struct omap_hwmod_class omap44xx_bandgap_hwmod_class = { - .name ="bandgap" , -}; - -/* bandgap */ -static struct omap_hwmod_opt_clk bandgap_opt_clks[] = { - { .role ="fclk" , .clk ="bandgap_fclk" }, -}; - -static struct omap_hwmod omap44xx_bandgap_hwmod = { - .name ="bandgap" , - .class = &omap44xx_bandgap_hwmod_class, - .clkdm_name ="l4_wkup_clkdm" , - .prcm = { - .omap4 = { - .clkctrl_offs =OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET , - }, - }, - .opt_clks = bandgap_opt_clks, - .opt_clks_cnt =ARRAY_SIZE (bandgap_opt_clks), -}; - -/* * 'counter' class * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock */
@@ -5436,9 +5409,6 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {/* aess class */ /* &omap44xx_aess_hwmod, */ -/* bandgap class */ - &omap44xx_bandgap_hwmod, -/* counter class */ /* &omap44xx_counter_32k_hwmod, */
Paul Walmsley
maintainerPATCH 7/9 ARM: OMAP4: hwmod data: add OCP_USER_DSP; mark omap44xx_dsp__iva appropriately
In reply to Paul WalmsleyOne of the OMAP4 links was missing OCP_USER flags, since it was only used by the DSP initiator, and we did not have an OCP_USER_DSP flag. Future patches will switch the hwmod code and data to register interfaces, rather than hwmods, and it will be mandatory for all interfaces to have at least one user bit set. This patch resolves the issue by adding OCP_USER_DSP and marking the DSP-IVA interface appropriately.
--- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 1 + arch/arm/plat-omap/include/plat/omap_hwmod.h | 1 + 2 files changed, 2 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/omap_hwmod_44xx_data.c +1 -0
@@ -1089,6 +1089,7 @@ static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { .master = &omap44xx_dsp_hwmod, .slave = &omap44xx_iva_hwmod, .clk = "dpll_iva_m5x2_ck", + .user = OCP_USER_DSP, };/* dsp master ports */
arch/arm/plat-omap/include/plat/omap_hwmod.h +1 -0
@@ -213,6 +213,7 @@ struct omap_hwmod_addr_space {*/ #define OCP_USER_MPU (1 << 0)#define OCP_USER_SDMA (1 << 1) +#define OCP_USER_DSP (1 << 2)/* omap_hwmod_ocp_if.flags bits */ #define OCPIF_SWSUP_IDLE (1 << 0)
Paul Walmsley
maintainerPATCH 8/9 ARM: OMAP4: hwmod data: uncomment some "excluded" hwmods
In reply to Paul WalmsleySome hwmods were commented out from the OMAP4 data, under the theory that they shouldn't be added until drivers were ready. But part of the utility of the hwmod code is that it can reset and properly initialize IP blocks that have no drivers associated with them. Rather than commenting the links in the future hwmod data conversion patches, discussing this with Benoit, it seems best to simply uncomment them now.
--- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/omap_hwmod_44xx_data.c +4 -4
@@ -5408,10 +5408,10 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { &omap44xx_mpu_private_hwmod,/* aess class */ -/* &omap44xx_aess_hwmod, */ + &omap44xx_aess_hwmod,/* counter class */ -/* &omap44xx_counter_32k_hwmod, */ + &omap44xx_counter_32k_hwmod,/* dma class */ &omap44xx_dma_system_hwmod,
@@ -5440,7 +5440,7 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { &omap44xx_gpio6_hwmod,/* hsi class */ -/* &omap44xx_hsi_hwmod, */ + &omap44xx_hsi_hwmod,/* i2c class */ &omap44xx_i2c1_hwmod,
@@ -5452,7 +5452,7 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { &omap44xx_ipu_hwmod,/* iss class */ -/* &omap44xx_iss_hwmod, */ + &omap44xx_iss_hwmod,/* iva class */ &omap44xx_iva_hwmod,
Paul Walmsley
maintainerPATCH 9/9 ARM: OMAP2+: hwmod: extend OCP_* register offsets from 16 to 32 bits
In reply to Paul WalmsleyExtend the OCP_* register offsets in the struct omap_hwmod_class_sysconfig to 32 bits. This is required to add the OMAP4+ GPU hwmod, which uses OCP_* register offsets larger than 16 bits.
Another possible solution may be to simply add a single 16 bit offset field in this structure, and to add code to factor that offset into all OCP_* register accesses. This would save some memory, since almost no modules need 32 bit offsets.
--- arch/arm/plat-omap/include/plat/omap_hwmod.h | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
arch/arm/plat-omap/include/plat/omap_hwmod.h +3 -3
@@ -328,9 +328,9 @@ struct omap_hwmod_sysc_fields {* then this field has to be populated with the correct offset structure. */ struct omap_hwmod_class_sysconfig { -u16 rev_offs; -u16 sysc_offs; -u16 syss_offs; +u32 rev_offs; +u32 sysc_offs; +u32 syss_offs;u16 sysc_flags;struct omap_hwmod_sysc_fields *sysc_fields;u8 srst_udelay;