ARM: DRA7: Add support for DRA72x devices
Subsystems (5)
v4 cover ARM: DRA7: Add support for DRA72x devices
changes in v4:
-1- used full SoC names in compatibles eg "ti,dra742" and "ti,dra722" -2- Created a seperate patch for replacing __initdata with __initconst
changes in v3:
Removed wildcards from compatible strings and duplicates from .dt_compat strings as suggested by Arnd
DRA72x devices are single core Cortex A15 devices belonging to the DRA7 family (Similar to the DRA74x devices which are dual core Cortex A15 based)
The patches (based off 3.15-rc3) add minimal DT/kernel modifications to add boot support on DRA722 device reusing all the kernel data for DRA742 device.
Rajendra Nayak (5):
ARM: dts: dra7-evm: Remove the wrong and undocumented compatible
ARM: dts: Add support for DRA72x family of devices
ARM: OMAP2+: Replace all __initdata with __initconst for const init
ARM: OMAP2+: Add machine entry for dra72x devices
ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x()
varients
.../devicetree/bindings/arm/omap/omap.txt | 12 ++++-- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/dra7-evm.dts | 6 +-- arch/arm/boot/dts/dra7.dtsi | 27 ------------ arch/arm/boot/dts/dra72-evm.dts | 24 +++++++++++ arch/arm/boot/dts/dra72x.dtsi | 25 +++++++++++ arch/arm/boot/dts/dra74x.dtsi | 41 ++++++++++++++++++ arch/arm/mach-omap2/board-generic.c | 45 ++++++++++++++------ arch/arm/mach-omap2/soc.h | 7 +++ 9 files changed, 142 insertions(+), 48 deletions(-) create mode 100644 arch/arm/boot/dts/dra72-evm.dts create mode 100644 arch/arm/boot/dts/dra72x.dtsi create mode 100644 arch/arm/boot/dts/dra74x.dtsi
Signature · 1 line
1.7.9.5
PATCH v4 1/5 ARM: dts: dra7-evm: Remove the wrong and undocumented compatible
"ti,dra752" is neither documented nor correct, since the device is actually a dra742 device as rightly documented in dt bindings.
--- arch/arm/boot/dts/dra7-evm.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/dra7-evm.dts +1 -1
@@ -11,7 +11,7 @@ / { model = "TI DRA7"; - compatible = "ti,dra7-evm", "ti,dra752", "ti,dra7"; + compatible = "ti,dra7-evm", "ti,dra7"; memory { device_type = "memory";
Signature · 1 line
1.7.9.5
PATCH v4 2/5 ARM: dts: Add support for DRA72x family of devices
In reply to Rajendra NayakDRA722 is part of DRA72x family which are single core cortex A15 devices with most infrastructure IPs otherwise same as whats on the DRA74x family.
So move the cpu nodes into dra74x.dtsi and dra72x.dtsi respectively.
Also add a minimal dra72-evm dts file.
--- .../devicetree/bindings/arm/omap/omap.txt | 12 ++++-- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/dra7-evm.dts | 6 +-- arch/arm/boot/dts/dra7.dtsi | 27 ------------- arch/arm/boot/dts/dra72-evm.dts | 24 ++++++++++++ arch/arm/boot/dts/dra72x.dtsi | 25 ++++++++++++ arch/arm/boot/dts/dra74x.dtsi | 41 ++++++++++++++++++++ 7 files changed, 104 insertions(+), 34 deletions(-) create mode 100644 arch/arm/boot/dts/dra72-evm.dts create mode 100644 arch/arm/boot/dts/dra72x.dtsi create mode 100644 arch/arm/boot/dts/dra74x.dtsi
Documentation/devicetree/bindings/arm/omap/omap.txt +9 -3
@@ -80,7 +80,10 @@ SoCs: compatible = "ti,omap5432", "ti,omap5" - DRA742 - compatible = "ti,dra7xx", "ti,dra7" + compatible = "ti,dra742", "ti,dra74", "ti,dra7" + +- DRA722 + compatible = "ti,dra722", "ti,dra72", "ti,dra7" - AM4372 compatible = "ti,am4372", "ti,am43"
@@ -120,5 +123,8 @@ Boards: - AM437x GP EVM compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43" -- DRA7 EVM: Software Developement Board for DRA7XX - compatible = "ti,dra7-evm", "ti,dra7" +- DRA742 EVM: Software Developement Board for DRA742 + compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7" + +- DRA722 EVM: Software Development Board for DRA722 + compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7"
arch/arm/boot/dts/Makefile +2 -1
@@ -288,7 +288,8 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ am3517_mt_ventoux.dtb \ am43x-epos-evm.dtb \ am437x-gp-evm.dtb \ - dra7-evm.dtb + dra7-evm.dtb \ + dra72-evm.dtb dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb dtb-$(CONFIG_ARCH_QCOM) += qcom-msm8660-surf.dtb \
arch/arm/boot/dts/dra7-evm.dts +3 -3
@@ -7,11 +7,11 @@ */ /dts-v1/; -#include "dra7.dtsi" +#include "dra74x.dtsi" / { - model = "TI DRA7"; - compatible = "ti,dra7-evm", "ti,dra7"; + model = "TI DRA742"; + compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7"; memory { device_type = "memory";
arch/arm/boot/dts/dra7.dtsi +0 -27
@@ -33,33 +33,6 @@ serial5 = &uart6; }; - cpus { - #address-cells = <1>; - #size-cells = <0>; - - cpu0: cpu at 0 { - device_type = "cpu"; - compatible = "arm,cortex-a15"; - reg = <0>; - - operating-points = < - /* kHz uV */ - 1000000 1060000 - 1176000 1160000 - >; - - clocks = <&dpll_mpu_ck>; - clock-names = "cpu"; - - clock-latency = <300000>; /* From omap-cpufreq driver */ - }; - cpu at 1 { - device_type = "cpu"; - compatible = "arm,cortex-a15"; - reg = <1>; - }; - }; - timer { compatible = "arm,armv7-timer"; interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
arch/arm/boot/dts/dra72-evm.dts new file +24 -0
@@ -0,0 +1,24 @@ +/* + * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +/dts-v1/; + +#include "dra72x.dtsi" + +/ { + model = "TI DRA722"; + compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7"; + + memory { + device_type = "memory"; + reg = <0x80000000 0x40000000>; /* 1024 MB */ + }; +}; + +&uart1 { + status = "okay"; +};
arch/arm/boot/dts/dra72x.dtsi new file +25 -0
@@ -0,0 +1,25 @@ +/* + * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * Based on "omap4.dtsi" + */ + +#include "dra7.dtsi" + +/ { + compatible = "ti,dra722", "ti,dra72", "ti,dra7"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu at 0 { + device_type = "cpu"; + compatible = "arm,cortex-a15"; + reg = <0>; + }; + }; +};
arch/arm/boot/dts/dra74x.dtsi new file +41 -0
41 lines not on this page · raw message
Signature · 1 line
1.7.9.5
Arnd Bergmann
maintainerPATCH v4 2/5 ARM: dts: Add support for DRA72x family of devices
Quoted 10 lines · On Tuesday 29 April 2014 16:35:10 Rajendra Nayak wrote:
DRA722 is part of DRA72x family which are single core cortex A15 devices with most infrastructure IPs otherwise same as whats on the DRA74x family.
So move the cpu nodes into
dra74x.dtsianddra72x.dtsirespectively.Also add a minimal dra72-evm dts file.
Signed-off-by Rajendra Nayak <[email protected]>Cc linux-doc at vger.kernel.orgCc devicetree at vger.kernel.org
PATCH v4 3/5 ARM: OMAP2+: Replace all __initdata with __initconst for const init
In reply to Rajendra NayakUse of const init definition must use __initconst so replace all such instances where __initdata is used.
--- arch/arm/mach-omap2/board-generic.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
arch/arm/mach-omap2/board-generic.c +11 -11
@@ -43,7 +43,7 @@ static void __init omap_generic_init(void) }#ifdef CONFIG_SOC_OMAP2420 -static const char *omap242x_boards_compat[]__initdata = { +static const char *omap242x_boards_compat[]__initconst = {"ti,omap2420" ,NULL , };
@@ -62,7 +62,7 @@ MACHINE_END#endif #ifdef CONFIG_SOC_OMAP2430 -static const char *omap243x_boards_compat[]__initdata = { +static const char *omap243x_boards_compat[]__initconst = {"ti,omap2430" ,NULL , };
@@ -81,7 +81,7 @@ MACHINE_END#endif #ifdef CONFIG_ARCH_OMAP3 -static const char *omap3_boards_compat[]__initdata = { +static const char *omap3_boards_compat[]__initconst = {"ti,omap3430" ,"ti,omap3" , NULL,
@@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") .restart = omap3xxx_restart,MACHINE_END -static const char *omap36xx_boards_compat[] __initdata = { +static const char *omap36xx_boards_compat[] __initconst = {"ti,omap36xx" ,NULL , };
@@ -118,7 +118,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") .restart = omap3xxx_restart,MACHINE_END -static const char *omap3_gp_boards_compat[] __initdata = { +static const char *omap3_gp_boards_compat[] __initconst = {"ti,omap3-beagle" ,"timll,omap3-devkit8000" ,NULL ,
@@ -137,7 +137,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") .restart = omap3xxx_restart,MACHINE_END -static const char *am3517_boards_compat[] __initdata = { +static const char *am3517_boards_compat[] __initconst = {"ti,am3517" ,NULL , };
@@ -157,7 +157,7 @@ MACHINE_END#endif #ifdef CONFIG_SOC_AM33XX -static const char *am33xx_boards_compat[]__initdata = { +static const char *am33xx_boards_compat[]__initconst = {"ti,am33xx" ,NULL , };
@@ -177,7 +177,7 @@ MACHINE_END#endif #ifdef CONFIG_ARCH_OMAP4 -static const char *omap4_boards_compat[]__initdata = { +static const char *omap4_boards_compat[]__initconst = {"ti,omap4460" ,"ti,omap4430" , "ti,omap4",
@@ -199,7 +199,7 @@ MACHINE_END#endif #ifdef CONFIG_SOC_OMAP5 -static const char *omap5_boards_compat[]__initdata = { +static const char *omap5_boards_compat[]__initconst = {"ti,omap5432" ,"ti,omap5430" , "ti,omap5",
@@ -221,7 +221,7 @@ MACHINE_END#endif #ifdef CONFIG_SOC_AM43XX -static const char *am43_boards_compat[]__initdata = { +static const char *am43_boards_compat[]__initconst = {"ti,am4372" ,"ti,am43" , NULL,
@@ -240,7 +240,7 @@ MACHINE_END#endif #ifdef CONFIG_SOC_DRA7XX -static const char *dra7xx_boards_compat[]__initdata = { +static const char *dra7xx_boards_compat[]__initconst = {"ti,dra7xx" ,"ti,dra7" , NULL,
Signature · 1 line
1.7.9.5
PATCH v4 4/5 ARM: OMAP2+: Add machine entry for dra72x devices
In reply to Rajendra NayakThe only difference from the dra74x devices is the missing .smp entry.
--- arch/arm/mach-omap2/board-generic.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/board-generic.c +21 -4
@@ -240,13 +240,13 @@ MACHINE_END#endif #ifdef CONFIG_SOC_DRA7XX -static const char *dra7xx_boards_compat[]__initconst = { -"ti,dra7xx" , +static const char *dra74x_boards_compat[]__initconst = { +"ti,dra742" ,"ti,dra7" ,NULL , }; -DT_MACHINE_START (DRA7XX_DT ,"Generic DRA7XX (Flattened Device Tree)" ) +DT_MACHINE_START (DRA74X_DT ,"Generic DRA74X (Flattened Device Tree)" ) .reserve = omap_reserve, .smp = smp_ops(omap4_smp_ops), .map_io = omap5_map_io,
@@ -255,7 +255,24 @@ DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)") .init_irq = omap_gic_of_init, .init_machine = omap_generic_init, .init_time = omap5_realtime_timer_init, - .dt_compat = dra7xx_boards_compat, + .dt_compat = dra74x_boards_compat, + .restart = omap44xx_restart, +MACHINE_END + +static const char *dra72x_boards_compat[] __initconst = { +"ti,dra722" , +NULL , +}; + +DT_MACHINE_START (DRA72X_DT ,"Generic DRA72X (Flattened Device Tree)" ) + .reserve = omap_reserve, + .map_io = omap5_map_io, + .init_early = dra7xx_init_early, + .init_late = dra7xx_init_late, + .init_irq = omap_gic_of_init, + .init_machine = omap_generic_init, + .init_time = omap5_realtime_timer_init, + .dt_compat = dra72x_boards_compat, .restart = omap44xx_restart, MACHINE_END#endif
Signature · 1 line
1.7.9.5
Arnd Bergmann
maintainerPATCH v4 4/5 ARM: OMAP2+: Add machine entry for dra72x devices
Quoted 7 lines · On Tuesday 29 April 2014 16:35:12 Rajendra Nayak wrote:
The only difference from the dra74x devices is the missing .smp entry.
Signed-off-by Rajendra Nayak <[email protected]>--- arch/arm/mach-omap2/board-generic.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)
PATCH v4 5/5 ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients
In reply to Rajendra NayakUse the corresponding compatibles to identify the devices.
--- arch/arm/mach-omap2/soc.h | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/mach-omap2/soc.h +7 -0
@@ -245,6 +245,8 @@ IS_AM_SUBCLASS(437x, 0x437)#define soc_is_omap54xx () 0#define soc_is_omap543x () 0#define soc_is_dra7xx () 0 +#define soc_is_dra74x () 0 +#define soc_is_dra72x () 0#if defined(MULTI_OMAP2 )# if defined(CONFIG_ARCH_OMAP2 )
@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)#if defined(CONFIG_SOC_DRA7XX )#undef soc_is_dra7xx +#undef soc_is_dra74x +#undef soc_is_dra72x#define soc_is_dra7xx () (of_machine_is_compatible("ti,dra7")) +#define soc_is_dra74x () (of_machine_is_compatible("ti,dra74")) +#define soc_is_dra72x () (of_machine_is_compatible("ti,dra72")) +#endif /* Various silicon revisions for omap2 */
Signature · 1 line
1.7.9.5
Arnd Bergmann
maintainerPATCH v4 5/5 ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients
arch/arm/mach-omap2/soc.h IS_OMAP_TYPE(3430, 0x3430) · line 403
Quoted 10 lines · On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
arch/arm/mach-omap2/soc.h +5
-0@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)#if defined(CONFIG_SOC_DRA7XX )#undef soc_is_dra7xx +#undef soc_is_dra74x +#undef soc_is_dra72x#define soc_is_dra7xx () (of_machine_is_compatible("ti,dra7")) +#define soc_is_dra74x () (of_machine_is_compatible("ti,dra74")) +#define soc_is_dra72x () (of_machine_is_compatible("ti,dra72")) +
You shouldn't normally have to define these. Why are they needed?
Maybe it's better to wait for a user to show up, and then we can decide whether we actually want to have them this way, or if there is a better solution for the particular use case.
Normally, we'd want to make run-time decisions based on properties of the nodes a driver is working on, not the global machine compatible string.
Arnd
PATCH v4 5/5 ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients
Quoted 14 lines · Arnd Bergmann
arch/arm/mach-omap2/soc.h IS_OMAP_TYPE(3430, 0x3430) · line 403
Quoted 10 lines · On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
arch/arm/mach-omap2/soc.h +5
-0@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)#if defined(CONFIG_SOC_DRA7XX )#undef soc_is_dra7xx +#undef soc_is_dra74x +#undef soc_is_dra72x#define soc_is_dra7xx () (of_machine_is_compatible("ti,dra7")) +#define soc_is_dra74x () (of_machine_is_compatible("ti,dra74")) +#define soc_is_dra72x () (of_machine_is_compatible("ti,dra72")) +You shouldn't normally have to define these. Why are they needed?
Quoted 7 lines
Maybe it's better to wait for a user to show up, and then we can decide whether we actually want to have them this way, or if there is a better solution for the particular use case.
Normally, we'd want to make run-time decisions based on properties of the nodes a driver is working on, not the global machine compatible string.
Yeah, actually this can be dropped. There is no user for it now.
Quoted 3 lines
Arnd
Tony Lindgren
maintainerPATCH v4 5/5 ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients
Quoted 19 lines · Rajendra Nayak
Quoted 18 lines · Arnd Bergmann
arch/arm/mach-omap2/soc.h IS_OMAP_TYPE(3430, 0x3430) · line 403
Quoted 10 lines · On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
arch/arm/mach-omap2/soc.h +5
-0@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)#if defined(CONFIG_SOC_DRA7XX )#undef soc_is_dra7xx +#undef soc_is_dra74x +#undef soc_is_dra72x#define soc_is_dra7xx () (of_machine_is_compatible("ti,dra7")) +#define soc_is_dra74x () (of_machine_is_compatible("ti,dra74")) +#define soc_is_dra72x () (of_machine_is_compatible("ti,dra72")) +You shouldn't normally have to define these. Why are they needed?
Maybe it's better to wait for a user to show up, and then we can decide whether we actually want to have them this way, or if there is a better solution for the particular use case.
Quoted 5 lines
Quoted 3 lines
Normally, we'd want to make run-time decisions based on properties of the nodes a driver is working on, not the global machine compatible string.
Yeah, actually this can be dropped. There is no user for it now.
OK applying all but the last patch into omap-for-v3.16/dt branch, it seems there's no need to separate out the fixes in this case.
Regards,
Tony
PATCH v4 5/5 ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients
Quoted 20 lines · Tony Lindgren
Quoted 19 lines · Rajendra Nayak
Quoted 18 lines · Arnd Bergmann
arch/arm/mach-omap2/soc.h IS_OMAP_TYPE(3430, 0x3430) · line 403
Quoted 10 lines · On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
arch/arm/mach-omap2/soc.h +5
-0@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)#if defined(CONFIG_SOC_DRA7XX )#undef soc_is_dra7xx +#undef soc_is_dra74x +#undef soc_is_dra72x#define soc_is_dra7xx () (of_machine_is_compatible("ti,dra7")) +#define soc_is_dra74x () (of_machine_is_compatible("ti,dra74")) +#define soc_is_dra72x () (of_machine_is_compatible("ti,dra72")) +You shouldn't normally have to define these. Why are they needed?
Maybe it's better to wait for a user to show up, and then we can decide whether we actually want to have them this way, or if there is a better solution for the particular use case.
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
Normally, we'd want to make run-time decisions based on properties of the nodes a driver is working on, not the global machine compatible string.
Yeah, actually this can be dropped. There is no user for it now.
OK applying all but the last patch into omap-for-v3.16/dt branch, it seems there's no need to separate out the fixes in this case.
Thanks Tony.
Quoted 5 lines
Regards,
Tony
v4 cover ARM: DRA7: Add support for DRA72x devices
In reply to Rajendra NayakQuoted 8 lines · Rajendra Nayak
changes in v4:
-1- used full SoC names in compatibles eg "ti,dra742" and "ti,dra722" -2- Created a seperate patch for replacing__initdatawith__initconstchanges in v3:
Removed wildcards from compatible strings and duplicates from .dt_compat strings as suggested by Arnd
Quoted 6 lines
DRA72x devices are single core Cortex A15 devices belonging to the DRA7 family (Similar to the DRA74x devices which are dual core Cortex A15 based)
The patches (based off 3.15-rc3) add minimal DT/kernel modifications to add boot support on DRA722 device reusing all the kernel data for DRA742 device.
Tony, Can this series be pulled in for 3.16? Patch 2/5 and 4/5 are acked by Arnd. Patch 5/5 can be dropped since there are no users for soc_is_dra7**() at the moment.
Quoted 23 lines
Rajendra Nayak (5):
ARM: dts: dra7-evm: Remove the wrong and undocumented compatible
ARM: dts: Add support for DRA72x family of devices
ARM: OMAP2+: Replace all__initdatawith__initconstfor const init
ARM: OMAP2+: Add machine entry for dra72x devices
ARM: DRA7: Add support forsoc_is_dra74x()andsoc_is_dra72x()
varients.../devicetree/bindings/arm/omap/omap.txt | 12 ++++-- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/dra7-evm.dts | 6 +-- arch/arm/boot/dts/dra7.dtsi | 27 ------------ arch/arm/boot/dts/dra72-evm.dts | 24 +++++++++++ arch/arm/boot/dts/dra72x.dtsi | 25 +++++++++++ arch/arm/boot/dts/dra74x.dtsi | 41 ++++++++++++++++++ arch/arm/mach-omap2/board-generic.c | 45 ++++++++++++++------ arch/arm/mach-omap2/soc.h | 7 +++ 9 files changed, 142 insertions(+), 48 deletions(-) create mode 100644 arch/arm/boot/dts/dra72-evm.dts create mode 100644 arch/arm/boot/dts/dra72x.dtsi create mode 100644 arch/arm/boot/dts/dra74x.dtsi