Re: [PATCH 1/2] Documentation: dt: OMAP: standardize SoC namingdefinition

From: Tony Lindgren
Date: Mon Oct 07 2013 - 15:17:13 EST


Hi,

Few comments below.

* Nishanth Menon <nm@xxxxxx> [131007 09:57]:
> SoC family definitions at the moment are reactive to board needs
> as a result, beagle-xm would matchup with ti,omap3 which invokes
> omap3430_init_early instead of omap3630_init_early. Obviously, this is
> the wrong behavior.

It seems that we should try to queue this as a fix to avoid
debugging it multiple times as it's actually quite easy to hit this
one.

So maybe use a subject along lines of:

"ARM: OMAP3: Fix hardware detection for omap3630 when booted with device tree"

And also include these warnings you can get:

omap_hwmod: uart4: cannot clk_get main_clk uart4_fck
omap_hwmod: uart4: cannot _init_clocks

WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2434 _init+0x6c/0x80()
omap_hwmod: uart4: couldn't init clocks
...

WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2126 _enable+0x254/0x280()
omap_hwmod: timer12: enabled state can only be entered from initialized, idle, or disabled state
...

WARNING: CPU: 0 PID: 46 at arch/arm/mach-omap2/omap_hwmod.c:2224 _idle+0xd4/0xf8()
omap_hwmod: timer12: idle state can only be entered from enabled state

WARNING: CPU: 0 PID: 1 at arch/arm/mach-omap2/omap_hwmod.c:2126 _enable+0x254/0x280()
omap_hwmod: uart4: enabled state can only be entered from initialized, idle, or disabled state

And also describe that the outcome is that the system fails to boot.

> --- a/Documentation/devicetree/bindings/arm/omap/omap.txt
> +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
> @@ -30,6 +30,51 @@ spinlock@1 {
> ti,hwmods = "spinlock";
> };
>
> +SoC Type(optional):
> +- ti,gp - General Purpose devices
> +- ti,hs - High Security devices
> +
> +SoC Families:
> +
> +- OMAP2 generic - defaults to OMAP2420
> + compatible = "ti,omap2"
> +- OMAP3 generic - defaults to OMAP3430
> + compatible = "ti,omap3"
> +- OMAP4 generic - defaults to OMAP4430
> + compatible = "ti,omap4"
> +- OMAP5 generic - defaults to OMAP5430
> + compatible = "ti,omap5"
> +- DRA7 generic - defaults to DRA742
> + compatible = "ti,dra7"
> +- AM43x generic - defaults to AM437x
> + compatible = "ti,am43"
> +
> +SoCs:
> +
> +- OMAP2420
> + compatible = "ti,omap2420", "ti,omap2"
> +- OMAP2430
> + compatible = "ti,omap2430", "ti,omap2"
> +
> +- OMAP3430
> + compatible = "ti,omap343x", "ti,omap3"
> +- OMAP3630
> + compatible = "ti,omap363x", "ti,omap3"
> +- AM33xx
> + compatible = "ti,am33xx", "ti,omap3"
> +
> +- OMAP4430
> + compatible = "ti,omap443x", "ti,omap4"
> +- OMAP4460
> + compatible = "ti,omap446x", "ti,omap4"
> +
> +- OMAP5430
> + compatible = "ti,omap5430", "ti,omap5"
> +- OMAP5432
> + compatible = "ti,omap5432", "ti,omap5"
> +
> +- DRA742
> + compatible = "ti,dra7xx", "ti,dra7"
>
> Boards:

And I would leave the documentation parts out of the fix as
we're pretty late into the -rc cycle.

> +++ b/arch/arm/mach-omap2/board-generic.c
> @@ -113,6 +113,7 @@ MACHINE_END
> #ifdef CONFIG_ARCH_OMAP3
> static const char *omap3_boards_compat[] __initdata = {
> "ti,omap3",
> + "ti,omap343x",
> NULL,
> };
>
> @@ -129,6 +130,24 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
> .restart = omap3xxx_restart,
> MACHINE_END
>
> +static const char *omap36xx_boards_compat[] __initdata = {
> + "ti,omap363x",
> + NULL,
> +};

Why not make it just "ti,omap36xx"? This also applies to 3703
where the 3 is missing as it does not have the DSP.

> +DT_MACHINE_START(OMAP36xx_DT, "Generic OMAP363x (Flattened Device Tree)")

Upper case OMAP36XX_DT here please like the others have.

> + .reserve = omap_reserve,
> + .map_io = omap3_map_io,
> + .init_early = omap3630_init_early,
> + .init_irq = omap_intc_of_init,
> + .handle_irq = omap3_intc_handle_irq,
> + .init_machine = omap_generic_init,
> + .init_late = omap3_init_late,
> + .init_time = omap3_sync32k_timer_init,

Looks like this version has the correct init_time function too :)

> + .dt_compat = omap36xx_boards_compat,
> + .restart = omap3xxx_restart,
> +MACHINE_END

This looks correct to me.

> static const char *omap3_gp_boards_compat[] __initdata = {
> "ti,omap3-beagle",
> "timll,omap3-devkit8000",
> @@ -171,6 +190,8 @@ MACHINE_END
> #ifdef CONFIG_ARCH_OMAP4
> static const char *omap4_boards_compat[] __initdata = {
> "ti,omap4",
> + "ti,omap4430",
> + "ti,omap4460",
> NULL,
> };
>
> @@ -191,6 +212,8 @@ MACHINE_END
> #ifdef CONFIG_SOC_OMAP5
> static const char *omap5_boards_compat[] __initdata = {
> "ti,omap5",
> + "ti,omap5430",
> + "ti,omap5432",
> NULL,
> };

I would leave these parts for later, maybe with the documentation
changes?

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/