OMAP2+: hwmod: remove OMAP_CHIP*
Subsystems (5)
Paul Walmsley
maintainerPATCH 1/1 OMAP2+: hwmod: remove OMAP_CHIP*
At Tony's request, remove the OMAP_CHIP* flags from the hwmod data, and replace it instead with chip family, variant, and ES level-specific lists of hwmods to register.
--- arch/arm/mach-omap2/omap_hwmod.c | 3 - arch/arm/mach-omap2/omap_hwmod_2420_data.c | 37 ------ arch/arm/mach-omap2/omap_hwmod_2430_data.c | 45 ------- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 172 +++++++++++++------------- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 82 ------------ arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 - 6 files changed, 88 insertions(+), 253 deletions(-)
arch/arm/mach-omap2/omap_hwmod.c +0 -3
@@ -1954,9 +1954,6 @@ int __init omap_hwmod_register(struct omap_hwmod **ohs) i =0 ; do { - if (!omap_chip_is(ohs[i]->omap_chip)) - continue; - r = _register(ohs[i]); WARN(r, "omap_hwmod: %s: _register returned %d\n", ohs[i]->name, r);
arch/arm/mach-omap2/omap_hwmod_2420_data.c +0 -37
@@ -100,7 +100,6 @@ static struct omap_hwmod omap2420_l3_main_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l3_main_masters), .slaves = omap2420_l3_main_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l3_main_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -206,7 +205,6 @@ static struct omap_hwmod omap2420_l4_core_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l4_core_masters), .slaves = omap2420_l4_core_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l4_core_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -227,7 +225,6 @@ static struct omap_hwmod omap2420_l4_wkup_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l4_wkup_masters), .slaves = omap2420_l4_wkup_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l4_wkup_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -243,7 +240,6 @@ static struct omap_hwmod omap2420_mpu_hwmod = { .main_clk = "mpu_ck", .masters = omap2420_mpu_masters, .masters_cnt = ARRAY_SIZE(omap2420_mpu_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/*
@@ -271,7 +267,6 @@ static struct omap_hwmod omap2420_iva_hwmod = { .class = &iva_hwmod_class, .masters = omap2420_iva_masters, .masters_cnt = ARRAY_SIZE(omap2420_iva_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer1 */
@@ -317,7 +312,6 @@ static struct omap_hwmod omap2420_timer1_hwmod = { .slaves = omap2420_timer1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer1_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer2 */
@@ -354,7 +348,6 @@ static struct omap_hwmod omap2420_timer2_hwmod = { .slaves = omap2420_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer2_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer3 */
@@ -391,7 +384,6 @@ static struct omap_hwmod omap2420_timer3_hwmod = { .slaves = omap2420_timer3_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer3_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer4 */
@@ -428,7 +420,6 @@ static struct omap_hwmod omap2420_timer4_hwmod = { .slaves = omap2420_timer4_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer4_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer5 */
@@ -465,7 +456,6 @@ static struct omap_hwmod omap2420_timer5_hwmod = { .slaves = omap2420_timer5_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer5_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };
@@ -503,7 +493,6 @@ static struct omap_hwmod omap2420_timer6_hwmod = { .slaves = omap2420_timer6_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer6_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer7 */
@@ -540,7 +529,6 @@ static struct omap_hwmod omap2420_timer7_hwmod = { .slaves = omap2420_timer7_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer7_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer8 */
@@ -577,7 +565,6 @@ static struct omap_hwmod omap2420_timer8_hwmod = { .slaves = omap2420_timer8_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer8_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer9 */
@@ -614,7 +601,6 @@ static struct omap_hwmod omap2420_timer9_hwmod = { .slaves = omap2420_timer9_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer9_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer10 */
@@ -651,7 +637,6 @@ static struct omap_hwmod omap2420_timer10_hwmod = { .slaves = omap2420_timer10_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer10_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer11 */
@@ -688,7 +673,6 @@ static struct omap_hwmod omap2420_timer11_hwmod = { .slaves = omap2420_timer11_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer11_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer12 */
@@ -725,7 +709,6 @@ static struct omap_hwmod omap2420_timer12_hwmod = { .slaves = omap2420_timer12_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer12_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* l4_wkup -> wd_timer2 */
@@ -766,7 +749,6 @@ static struct omap_hwmod omap2420_wd_timer2_hwmod = { }, .slaves = omap2420_wd_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_wd_timer2_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART1 */
@@ -792,7 +774,6 @@ static struct omap_hwmod omap2420_uart1_hwmod = { .slaves = omap2420_uart1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart1_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART2 */
@@ -818,7 +799,6 @@ static struct omap_hwmod omap2420_uart2_hwmod = { .slaves = omap2420_uart2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart2_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART3 */
@@ -844,7 +824,6 @@ static struct omap_hwmod omap2420_uart3_hwmod = { .slaves = omap2420_uart3_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart3_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* dss */
@@ -898,7 +877,6 @@ static struct omap_hwmod omap2420_dss_core_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves), .masters = omap2420_dss_masters, .masters_cnt = ARRAY_SIZE(omap2420_dss_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -938,7 +916,6 @@ static struct omap_hwmod omap2420_dss_dispc_hwmod = { }, .slaves = omap2420_dss_dispc_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -975,7 +952,6 @@ static struct omap_hwmod omap2420_dss_rfbi_hwmod = { }, .slaves = omap2420_dss_rfbi_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1013,7 +989,6 @@ static struct omap_hwmod omap2420_dss_venc_hwmod = { }, .slaves = omap2420_dss_venc_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_venc_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1064,7 +1039,6 @@ static struct omap_hwmod omap2420_i2c1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_i2c1_slaves), .class = &i2c_class, .dev_attr = &i2c_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_16BIT_REG, };
@@ -1092,7 +1066,6 @@ static struct omap_hwmod omap2420_i2c2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_i2c2_slaves), .class = &i2c_class, .dev_attr = &i2c_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_16BIT_REG, };
@@ -1197,7 +1170,6 @@ static struct omap_hwmod omap2420_gpio1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio1_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio2 */
@@ -1223,7 +1195,6 @@ static struct omap_hwmod omap2420_gpio2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio2_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio3 */
@@ -1249,7 +1220,6 @@ static struct omap_hwmod omap2420_gpio3_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio3_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio4 */
@@ -1275,7 +1245,6 @@ static struct omap_hwmod omap2420_gpio4_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio4_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* dma attributes */
@@ -1322,7 +1291,6 @@ static struct omap_hwmod omap2420_dma_system_hwmod = { .masters = omap2420_dma_system_masters, .masters_cnt = ARRAY_SIZE(omap2420_dma_system_masters), .dev_attr = &dma_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1363,7 +1331,6 @@ static struct omap_hwmod omap2420_mailbox_hwmod = { }, .slaves = omap2420_mailbox_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mailbox_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcspi1 */
@@ -1393,7 +1360,6 @@ static struct omap_hwmod omap2420_mcspi1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_mcspi1_slaves), .class = &omap2xxx_mcspi_class, .dev_attr = &omap_mcspi1_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcspi2 */
@@ -1423,7 +1389,6 @@ static struct omap_hwmod omap2420_mcspi2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_mcspi2_slaves), .class = &omap2xxx_mcspi_class, .dev_attr = &omap_mcspi2_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/*
@@ -1473,7 +1438,6 @@ static struct omap_hwmod omap2420_mcbsp1_hwmod = { }, .slaves = omap2420_mcbsp1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp1_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcbsp2 */
@@ -1514,7 +1478,6 @@ static struct omap_hwmod omap2420_mcbsp2_hwmod = { }, .slaves = omap2420_mcbsp2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp2_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };static __initdata struct omap_hwmod *omap2420_hwmods[] = {
arch/arm/mach-omap2/omap_hwmod_2430_data.c +0 -45
315 lines not on this page · raw message
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +88 -84
556 lines not on this page · raw message
arch/arm/mach-omap2/omap_hwmod_44xx_data.c +0 -82
574 lines not on this page · raw message
arch/arm/plat-omap/include/plat/omap_hwmod.h +0 -2
@@ -496,7 +496,6 @@ struct omap_hwmod_class {* @_state: internal-use hwmod state * @_postsetup_state: internal-use state to leave the hwmod in after _setup() * @flags: hwmod flags (documented below) -* @omap_chip: OMAP chips this hwmod is present on * @_lock: spinlock serializing operations on this hwmod * @node: list node for hwmod list (internal use) *
@@ -545,7 +544,6 @@ struct omap_hwmod {u8 _int_flags;u8 _state;u8 _postsetup_state; -const struct omap_chip_id omap_chip; };int omap_hwmod_register (struct omap_hwmod **ohs);
Signature · 1 line
1.7.5.4
PATCH 1/1 OMAP2+: hwmod: remove OMAP_CHIP*
Quoted 4 lines · Paul Walmsley
arch/arm/mach-omap2/omap_hwmod.c +0
-0
<snip>
Quoted 16 lines
?int
__initomap3xxx_hwmod_init(void)
?{
- ? ? ? returnomap_hwmod_register(omap3xxx_hwmods);
+ ? ? ? int r;
+ ? ? ? structomap_hwmod**h = NULL;arch/arm/mach-omap2/omap_hwmod.c +10
-0+ + ? ? ? /* Register hwmods common to all OMAP3 */ + ? ? ? r = omap_hwmod_register(omap3xxx_hwmods); + ? ? ? if (!r) + ? ? ? ? ? ? ? return r; + + ? ? ? /* +? ? ? ?* Register hwmods common to individual OMAP3 families, all +? ? ? ?* silicon revisions (e.g., 34xx, or AM3505/3517, or 36xx) +? ? ? ?* All possible revisions should be included in this conditional.
arch/arm/mach-omap2/omap_hwmod.c
Quoted 10 lines
arch/arm/mach-omap2/omap_hwmod.c +10
-0+? ? ? ?*/ + ? ? ? if (omap_rev() == OMAP3430_REV_ES1_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_1 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_1 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_1_2) { + ? ? ? ? ? ? ? h = omap34xx_hwmods; + ? ? ? } else if (omap_rev() & OMAP3505_REV(0)) { + ? ? ? ? ? ? ? h = am35xx_hwmods;
This check will be always true I think?
Why not just use cpu_is_omap3xxx() for these tests, since it does same omap_rev() call but only once per family?
Quoted 13 lines
+ ? ? ? } else if (omap_rev() == OMAP3630_REV_ES1_0 || + ? ? ? ? ? ? ? ? ?omap_rev() == OMAP3630_REV_ES1_1 ||+ ? ? ? ? ? ? ? ? ?omap_rev() ==
OMAP3630_REV_ES1_2) {
+ ? ? ? ? ? ? ? h =omap36xx_hwmods;
+ ? ? ? } else {
+ ? ? ? ? ? ? ?WARN(1, "OMAP3 hwmod family init: unknown chip type\n");
+ ? ? ? ? ? ? ? return-EINVAL;
+ ? ? ? };arch/arm/mach-omap2/omap_hwmod.c +5
-0+ + ? ? ? r = omap_hwmod_register(h); + ? ? ? if (!r) + ? ? ? ? ? ? ? return r; +
Tony Lindgren
maintainerPATCH 1/1 OMAP2+: hwmod: remove OMAP_CHIP*
Quoted 36 lines · Grazvydas Ignotas
Quoted 4 lines · Paul Walmsley
arch/arm/mach-omap2/omap_hwmod.c +0
-0<snip>
Quoted 16 lines
?int
__initomap3xxx_hwmod_init(void)
?{
- ? ? ? returnomap_hwmod_register(omap3xxx_hwmods);
+ ? ? ? int r;
+ ? ? ? structomap_hwmod**h = NULL;arch/arm/mach-omap2/omap_hwmod.c +10
-0+ + ? ? ? /* Register hwmods common to all OMAP3 */ + ? ? ? r = omap_hwmod_register(omap3xxx_hwmods); + ? ? ? if (!r) + ? ? ? ? ? ? ? return r; + + ? ? ? /* +? ? ? ?* Register hwmods common to individual OMAP3 families, all +? ? ? ?* silicon revisions (e.g., 34xx, or AM3505/3517, or 36xx) +? ? ? ?* All possible revisions should be included in this conditional. arch/arm/mach-omap2/omap_hwmod.c
Quoted 10 lines
arch/arm/mach-omap2/omap_hwmod.c +10
-0+? ? ? ?*/ + ? ? ? if (omap_rev() == OMAP3430_REV_ES1_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_1 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_1 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_1_2) { + ? ? ? ? ? ? ? h = omap34xx_hwmods; + ? ? ? } else if (omap_rev() & OMAP3505_REV(0)) { + ? ? ? ? ? ? ? h = am35xx_hwmods;This check will be always true I think?
Quoted 2 lines
Why not just use
cpu_is_omap3xxx()for these tests, since it does sameomap_rev()call but only once per family?
For SoC family based ES revision and GP/HS detection we should set up minimal macros. Ideally we would not need cpu_is_omapxxxx during early_init at all.
Regards,
Tony
Paul Walmsley
maintainerPATCH 1/1 OMAP2+: hwmod: remove OMAP_CHIP*
In reply to Grazvydas IgnotasHello Gra?vydas,
Quoted 27 lines · Grazvydas Ignotas
Quoted 4 lines · Paul Walmsley
arch/arm/mach-omap2/omap_hwmod.c +0
-0<snip>
Quoted 20 lines
?int
__initomap3xxx_hwmod_init(void)
?{
- ? ? ? returnomap_hwmod_register(omap3xxx_hwmods);
+ ? ? ? int r;
+ ? ? ? structomap_hwmod**h = NULL;arch/arm/mach-omap2/omap_hwmod.c +14
-0+ + ? ? ? /* Register hwmods common to all OMAP3 */ + ? ? ? r = omap_hwmod_register(omap3xxx_hwmods); + ? ? ? if (!r) + ? ? ? ? ? ? ? return r; + + ? ? ? /* + ? ? ? ?* Register hwmods common to individual OMAP3 families, all + ? ? ? ?* silicon revisions (e.g., 34xx, or AM3505/3517, or 36xx) + ? ? ? ?* All possible revisions should be included in this conditional. + ? ? ? ?*/ + ? ? ? if (omap_rev() == OMAP3430_REV_ES1_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES2_1 ||
Quoted 8 lines
Quoted 6 lines
+ ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_0 || + ? ? ? ? ? omap_rev() == OMAP3430_REV_ES3_1 ||+ ? ? ? ? ?
omap_rev()==OMAP3430_REV_ES3_1_2) {
+ ? ? ? ? ? ? ? h =omap34xx_hwmods;
+ ? ? ? } else if (omap_rev()&OMAP3505_REV(0)) {
+ ? ? ? ? ? ? ? h =am35xx_hwmods;This check will be always true I think?
Thanks for the review; you are absolutely right and this will be fixed.
Quoted 2 lines
Why not just use
cpu_is_omap3xxx()for these tests, since it does sameomap_rev()call but only once per family?
cpu_is_omap*() doesn't do what one would expect :-(
For example, cpu_is_omap34xx() returns 1 on not only 34xx, but also 36xx and 3517/3505. Unfortunately, we don't currently do a good job of separating SoC family detection from individual SoC detection.
If your objection is to the multiple calls to omap_rev(), those do indeed appear in the source to be potentially expensive function calls -- although the compiler should inline them. Just to be sure, the next revision will use a variable.
regards
- Paul
Hi,
Quoted 5 lines · Paul Walmsley
At Tony's request, remove the OMAP_CHIP* flags from the hwmod data, and replace it instead with chip family, variant, and ES level-specific lists of hwmods to register.
Signed-off-by Paul Walmsley <[email protected]>
[...]
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c static __initdata struct omap_hwmod *omap3xxx_hwmods[] = { · line 3243
Quoted 10 lines
int
__initomap3xxx_hwmod_init(void)
{arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +7
-1-return omap_hwmod_register (omap3xxx_hwmods); +int r; +struct omap_hwmod **h =NULL ; + +/* Register hwmods common to all OMAP3 */ + r =omap_hwmod_register (omap3xxx_hwmods); +if (!r) +return r;
Should the timer12 be also removed from the common omap3xxx_hwmods list, as it is not available on (some?) HS devices. See e.g. <http://marc.info/?l=linux-omap&m=129433066521102&w=2>
Currently RM-680 boot is broken because of this.
A.
Paul Walmsley
maintainerHello Aaro,
Quoted 5 lines · Aaro Koskinen
Should the timer12 be also removed from the common
omap3xxx_hwmodslist, as it is not available on (some?) HS devices. See e.g. <http://marc.info/?l=linux-omap&m=129433066521102&w=2>Currently RM-680 boot is broken because of this.
Hmmm. I guess the software that boots the HS devices can pick and choose which of the secure devices to make available to Linux. So I guess that on HS/EMU devices, we'd have to assume that all of the HS devices (e.g. GPT12) are unavailable?
Does that approach make sense?
If so, maybe we can add a fix patch on top of these cleanup patches that handles that...
- Paul
Paul Walmsley
maintainerPATCH v2 1/1 OMAP2+: hwmod: remove OMAP_CHIP*
In reply to Paul WalmsleyAt Tony's request, remove the OMAP_CHIP* flags from the hwmod data, and replace it instead with chip family, variant, and ES level-specific lists of hwmods to register.
Thanks to Gra?vydas Ignotas <[email protected]> for finding a bug in the AM3517/3505 support, and for other review comments.
---
Also available from the branch 'hwmod_remove_omap_chip_cleanup_3.2' ofgit://git.pwsan.com/linux-2.6
arch/arm/mach-omap2/omap_hwmod.c | 3 - arch/arm/mach-omap2/omap_hwmod_2420_data.c | 37 ------ arch/arm/mach-omap2/omap_hwmod_2430_data.c | 45 ------- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 169 +++++++++++++------------- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 82 ------------- arch/arm/plat-omap/include/plat/omap_hwmod.h | 2 - 6 files changed, 85 insertions(+), 253 deletions(-)
arch/arm/mach-omap2/omap_hwmod.c +0 -3
@@ -1954,9 +1954,6 @@ int __init omap_hwmod_register(struct omap_hwmod **ohs) i =0 ; do { - if (!omap_chip_is(ohs[i]->omap_chip)) - continue; - r = _register(ohs[i]); WARN(r, "omap_hwmod: %s: _register returned %d\n", ohs[i]->name, r);
arch/arm/mach-omap2/omap_hwmod_2420_data.c +0 -37
@@ -100,7 +100,6 @@ static struct omap_hwmod omap2420_l3_main_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l3_main_masters), .slaves = omap2420_l3_main_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l3_main_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -206,7 +205,6 @@ static struct omap_hwmod omap2420_l4_core_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l4_core_masters), .slaves = omap2420_l4_core_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l4_core_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -227,7 +225,6 @@ static struct omap_hwmod omap2420_l4_wkup_hwmod = { .masters_cnt = ARRAY_SIZE(omap2420_l4_wkup_masters), .slaves = omap2420_l4_wkup_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_l4_wkup_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -243,7 +240,6 @@ static struct omap_hwmod omap2420_mpu_hwmod = { .main_clk = "mpu_ck", .masters = omap2420_mpu_masters, .masters_cnt = ARRAY_SIZE(omap2420_mpu_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/*
@@ -271,7 +267,6 @@ static struct omap_hwmod omap2420_iva_hwmod = { .class = &iva_hwmod_class, .masters = omap2420_iva_masters, .masters_cnt = ARRAY_SIZE(omap2420_iva_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer1 */
@@ -317,7 +312,6 @@ static struct omap_hwmod omap2420_timer1_hwmod = { .slaves = omap2420_timer1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer1_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer2 */
@@ -354,7 +348,6 @@ static struct omap_hwmod omap2420_timer2_hwmod = { .slaves = omap2420_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer2_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer3 */
@@ -391,7 +384,6 @@ static struct omap_hwmod omap2420_timer3_hwmod = { .slaves = omap2420_timer3_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer3_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer4 */
@@ -428,7 +420,6 @@ static struct omap_hwmod omap2420_timer4_hwmod = { .slaves = omap2420_timer4_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer4_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer5 */
@@ -465,7 +456,6 @@ static struct omap_hwmod omap2420_timer5_hwmod = { .slaves = omap2420_timer5_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer5_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };
@@ -503,7 +493,6 @@ static struct omap_hwmod omap2420_timer6_hwmod = { .slaves = omap2420_timer6_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer6_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer7 */
@@ -540,7 +529,6 @@ static struct omap_hwmod omap2420_timer7_hwmod = { .slaves = omap2420_timer7_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer7_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer8 */
@@ -577,7 +565,6 @@ static struct omap_hwmod omap2420_timer8_hwmod = { .slaves = omap2420_timer8_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer8_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer9 */
@@ -614,7 +601,6 @@ static struct omap_hwmod omap2420_timer9_hwmod = { .slaves = omap2420_timer9_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer9_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer10 */
@@ -651,7 +637,6 @@ static struct omap_hwmod omap2420_timer10_hwmod = { .slaves = omap2420_timer10_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer10_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer11 */
@@ -688,7 +673,6 @@ static struct omap_hwmod omap2420_timer11_hwmod = { .slaves = omap2420_timer11_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer11_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* timer12 */
@@ -725,7 +709,6 @@ static struct omap_hwmod omap2420_timer12_hwmod = { .slaves = omap2420_timer12_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_timer12_slaves), .class = &omap2xxx_timer_hwmod_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420) };/* l4_wkup -> wd_timer2 */
@@ -766,7 +749,6 @@ static struct omap_hwmod omap2420_wd_timer2_hwmod = { }, .slaves = omap2420_wd_timer2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_wd_timer2_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART1 */
@@ -792,7 +774,6 @@ static struct omap_hwmod omap2420_uart1_hwmod = { .slaves = omap2420_uart1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart1_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART2 */
@@ -818,7 +799,6 @@ static struct omap_hwmod omap2420_uart2_hwmod = { .slaves = omap2420_uart2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart2_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* UART3 */
@@ -844,7 +824,6 @@ static struct omap_hwmod omap2420_uart3_hwmod = { .slaves = omap2420_uart3_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_uart3_slaves), .class = &omap2_uart_class, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* dss */
@@ -898,7 +877,6 @@ static struct omap_hwmod omap2420_dss_core_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves), .masters = omap2420_dss_masters, .masters_cnt = ARRAY_SIZE(omap2420_dss_masters), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -938,7 +916,6 @@ static struct omap_hwmod omap2420_dss_dispc_hwmod = { }, .slaves = omap2420_dss_dispc_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_dispc_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -975,7 +952,6 @@ static struct omap_hwmod omap2420_dss_rfbi_hwmod = { }, .slaves = omap2420_dss_rfbi_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_rfbi_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1013,7 +989,6 @@ static struct omap_hwmod omap2420_dss_venc_hwmod = { }, .slaves = omap2420_dss_venc_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_dss_venc_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1064,7 +1039,6 @@ static struct omap_hwmod omap2420_i2c1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_i2c1_slaves), .class = &i2c_class, .dev_attr = &i2c_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_16BIT_REG, };
@@ -1092,7 +1066,6 @@ static struct omap_hwmod omap2420_i2c2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_i2c2_slaves), .class = &i2c_class, .dev_attr = &i2c_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_16BIT_REG, };
@@ -1197,7 +1170,6 @@ static struct omap_hwmod omap2420_gpio1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio1_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio2 */
@@ -1223,7 +1195,6 @@ static struct omap_hwmod omap2420_gpio2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio2_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio3 */
@@ -1249,7 +1220,6 @@ static struct omap_hwmod omap2420_gpio3_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio3_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* gpio4 */
@@ -1275,7 +1245,6 @@ static struct omap_hwmod omap2420_gpio4_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_gpio4_slaves), .class = &omap2xxx_gpio_hwmod_class, .dev_attr = &gpio_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* dma attributes */
@@ -1322,7 +1291,6 @@ static struct omap_hwmod omap2420_dma_system_hwmod = { .masters = omap2420_dma_system_masters, .masters_cnt = ARRAY_SIZE(omap2420_dma_system_masters), .dev_attr = &dma_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), .flags = HWMOD_NO_IDLEST, };
@@ -1363,7 +1331,6 @@ static struct omap_hwmod omap2420_mailbox_hwmod = { }, .slaves = omap2420_mailbox_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mailbox_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcspi1 */
@@ -1393,7 +1360,6 @@ static struct omap_hwmod omap2420_mcspi1_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_mcspi1_slaves), .class = &omap2xxx_mcspi_class, .dev_attr = &omap_mcspi1_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcspi2 */
@@ -1423,7 +1389,6 @@ static struct omap_hwmod omap2420_mcspi2_hwmod = { .slaves_cnt = ARRAY_SIZE(omap2420_mcspi2_slaves), .class = &omap2xxx_mcspi_class, .dev_attr = &omap_mcspi2_dev_attr, - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/*
@@ -1473,7 +1438,6 @@ static struct omap_hwmod omap2420_mcbsp1_hwmod = { }, .slaves = omap2420_mcbsp1_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp1_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };/* mcbsp2 */
@@ -1514,7 +1478,6 @@ static struct omap_hwmod omap2420_mcbsp2_hwmod = { }, .slaves = omap2420_mcbsp2_slaves, .slaves_cnt = ARRAY_SIZE(omap2420_mcbsp2_slaves), - .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2420), };static __initdata struct omap_hwmod *omap2420_hwmods[] = {
arch/arm/mach-omap2/omap_hwmod_2430_data.c +0 -45
315 lines not on this page · raw message
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +85 -84
553 lines not on this page · raw message
arch/arm/mach-omap2/omap_hwmod_44xx_data.c +0 -82
574 lines not on this page · raw message
arch/arm/plat-omap/include/plat/omap_hwmod.h +0 -2
@@ -496,7 +496,6 @@ struct omap_hwmod_class {* @_state: internal-use hwmod state * @_postsetup_state: internal-use state to leave the hwmod in after _setup() * @flags: hwmod flags (documented below) -* @omap_chip: OMAP chips this hwmod is present on * @_lock: spinlock serializing operations on this hwmod * @node: list node for hwmod list (internal use) *
@@ -545,7 +544,6 @@ struct omap_hwmod {u8 _int_flags;u8 _state;u8 _postsetup_state; -const struct omap_chip_id omap_chip; };int omap_hwmod_register (struct omap_hwmod **ohs);
Signature · 1 line
1.7.5.4