DRA7xx core support
Subsystems (6)
cover DRA7xx core support
DRA7xx based SoCs' are high-performance, infotainment application devices, based on enhanced OMAP architecture integrated on a 28nm technology.
The DRA7xx family is composed of DRA75x and DRA74x devices. The current device for which the patches add support is the DRA752 SoC.
Most of the core IPs are similar to those found on the OMAP5 devices, including the dual cortex-A15 based MPU subsystem, which has helped quite some reuse from existing OMAP5 support.
This series contains only core support patches and the PRCM, DT and hwmod data needed for the device will be posted as a seperate patch series.
The bootloader support for the platform is already available in mainline u-boot.
The patches are available at:git://github.com/rrnayak/linux.git for-3.12/dra-core
R Sricharan (6):
ARM: DRA7: id: Add cpu detection support for DRA7xx based SoCs'
ARM: DRA7: Reuse all of PRCM and MPUSS SMP infra
ARM: DRA7: Reuse io tables and add a new .init_early
ARM: DRA7: Resue the clocksource, clockevent support
ARM: DRA7: board-generic: Add basic DT support
ARM: DRA7: Kconfig: Increase the default gpio count
Rajendra Nayak (2):
ARM: DRA7: Update SRAM details
ARM: DRA7: hwmod: Reuse the soc_ops used for OMAP4/5
.../devicetree/bindings/arm/omap/omap.txt | 3 ++ arch/arm/Kconfig | 2 +- arch/arm/mach-omap1/include/mach/soc.h | 1 + arch/arm/mach-omap2/Kconfig | 2 +- arch/arm/mach-omap2/Makefile | 8 ++++ arch/arm/mach-omap2/board-generic.c | 18 +++++++++ arch/arm/mach-omap2/common.h | 1 + arch/arm/mach-omap2/id.c | 30 ++++++++++++++- arch/arm/mach-omap2/io.c | 22 ++++++++++- arch/arm/mach-omap2/omap54xx.h | 4 ++ arch/arm/mach-omap2/omap_hwmod.c | 2 +- arch/arm/mach-omap2/soc.h | 39 ++++++++++++++++++++ arch/arm/mach-omap2/sram.c | 7 ++++ arch/arm/mach-omap2/timer.c | 3 +- 14 files changed, 134 insertions(+), 8 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/8 ARM: DRA7: id: Add cpu detection support for DRA7xx based SoCs'
From: R Sricharan <[email protected]>
The DRA7xx is a high-performance, infotainment application device, based on enhanced OMAP architecture integrated on a 28-nm technology.
DRA7xx family is composed of DRA75x and DRA74x devices.
Adding the DRA752 ES1.0 cpu revision detection support.
--- arch/arm/mach-omap1/include/mach/soc.h | 1 + arch/arm/mach-omap2/id.c | 30 ++++++++++++++++++++++-- arch/arm/mach-omap2/soc.h | 39 ++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-)
arch/arm/mach-omap1/include/mach/soc.h +1 -0
@@ -195,6 +195,7 @@ IS_OMAP_TYPE(1710, 0x1710)#define cpu_is_omap34xx () 0#define cpu_is_omap44xx () 0#define soc_is_omap54xx () 0 +#define soc_is_dra7xx () 0#define soc_is_am33xx () 0#define cpu_class_is_omap1 () 1#define cpu_class_is_omap2 () 0
arch/arm/mach-omap2/id.c +28 -2
@@ -61,7 +61,7 @@ int omap_type(void) val =omap_ctrl_readl (OMAP343X_CONTROL_STATUS ); }else if (cpu_is_omap44xx ()) { val =omap_ctrl_readl (OMAP4_CTRL_MODULE_CORE_STATUS ); - }else if (soc_is_omap54xx ()) { + }else if (soc_is_omap54xx () ||soc_is_dra7xx ()) { val =omap_ctrl_readl (OMAP5XXX_CONTROL_STATUS ); val &=OMAP5_DEVICETYPE_MASK ; val >>=6 ;
@@ -116,7 +116,7 @@ static u16 tap_prod_id;void omap_get_die_id (struct omap_die_id *odi) { -if (cpu_is_omap44xx () ||soc_is_omap54xx ()) { +if (cpu_is_omap44xx () ||soc_is_omap54xx () ||soc_is_dra7xx ()) { odi->id_0 =read_tap_reg (OMAP_TAP_DIE_ID_44XX_0 ); odi->id_1 =read_tap_reg (OMAP_TAP_DIE_ID_44XX_1 ); odi->id_2 =read_tap_reg (OMAP_TAP_DIE_ID_44XX_2 );
@@ -606,6 +606,32 @@ void __init omap5xxx_check_revision(void)pr_info ("%s %s\n" , soc_name, soc_rev); } +void __init dra7xx_check_revision (void ) +{ +u32 idcode; +u16 hawkeye; +u8 rev; + + idcode =read_tap_reg (OMAP_TAP_IDCODE ); + hawkeye = (idcode >>12 ) &0xffff ; + rev = (idcode >>28 ) &0xff ; +switch (hawkeye) { +case 0xb990 : +switch (rev) { +case 0 : +default : + omap_revision =DRA752_REV_ES1_0 ; + } +break ; +default : +/* Unknown. Default to latest silicon revision */ + omap_revision =DRA752_REV_ES1_0 ; + } + +pr_info ("DRA%03x ES%d.%d\n" ,omap_rev () >>16 , + ((omap_rev () >>12 ) &0xf ), ((omap_rev () >>8 ) &0xf )); +} +/* * Set up things for map_io and processor detection later on. Gets called * pretty much first thing from board init. For multi-omap, this gets
arch/arm/mach-omap2/soc.h +39 -0
@@ -8,6 +8,7 @@* Written by Tony Lindgren <[email protected]> * * Added OMAP4/5 specific defines - Santosh Shilimkar<[email protected]> +* Added DRA7xxx specific defines - Sricharan R<[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -105,6 +106,15 @@# endif #endif +#ifdef CONFIG_SOC_DRA7XX +# ifdef OMAP_NAME +# undef MULTI_OMAP2 +# define MULTI_OMAP2 +# else +# define OMAP_NAME DRA7XX +# endif +#endif +/* * Omap device type i.e. EMU/HS/TST/GP/BAD */
@@ -145,6 +155,7 @@ static inline int soc_is_omap(void)* cpu_is_omap446x(): True for OMAP4460 * cpu_is_omap447x(): True for OMAP4470 * soc_is_omap543x(): True for OMAP5430, OMAP5432 +* soc_is_dra75x(): True for DRA752, DRA754, DRA756 */ #define GET_OMAP_CLASS (omap_rev() & 0xff)
@@ -170,6 +181,12 @@ static inline int is_ti ##class (void) \return (GET_TI_CLASS == (id)) ?1 :0 ; \ } +#define IS_DRA_CLASS (class, id) \ +static inline int is_dra ##class(void) \ +{ \ + return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ +} +#define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff)#define IS_OMAP_SUBCLASS (subclass, id) \
@@ -190,6 +207,12 @@ static inline int is_am ##subclass (void) \return (GET_OMAP_SUBCLASS == (id)) ?1 :0 ; \ } +#define IS_DRA_SUBCLASS (subclass, id) \ +static inline int is_dra ##subclass(void) \ +{ \ + return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ +} + IS_OMAP_CLASS(24xx, 0x24) IS_OMAP_CLASS(34xx, 0x34) IS_OMAP_CLASS(44xx, 0x44)
@@ -197,6 +220,7 @@ IS_AM_CLASS(35xx, 0x35) IS_OMAP_CLASS(54xx, 0x54) IS_AM_CLASS(33xx, 0x33) IS_AM_CLASS(43xx, 0x43) +IS_DRA_CLASS(7xx, 0x7) IS_TI_CLASS(81xx, 0x81)
@@ -213,6 +237,8 @@ IS_TI_SUBCLASS(816x, 0x816) IS_TI_SUBCLASS(814x, 0x814) IS_AM_SUBCLASS(335x, 0x335) IS_AM_SUBCLASS(437x, 0x437) +IS_DRA_SUBCLASS(75x, 0x75) +IS_DRA_SUBCLASS(74x, 0x74)#define cpu_is_omap24xx () 0#define cpu_is_omap242x () 0
@@ -233,6 +259,8 @@ IS_AM_SUBCLASS(437x, 0x437)#define cpu_is_omap447x () 0#define soc_is_omap54xx () 0#define soc_is_omap543x () 0 +#define soc_is_dra7xx () 0 +#define soc_is_dra75x () 0#if defined(MULTI_OMAP2 )# if defined(CONFIG_ARCH_OMAP2 )
@@ -379,6 +407,13 @@ IS_OMAP_TYPE(3430, 0x3430)# define soc_is_omap543x () is_omap543x()#endif +# if defined(CONFIG_SOC_DRA7XX ) +# undef soc_is_dra7xx +# undef soc_is_dra75x +# define soc_is_dra7xx () is_dra7xx() +# define soc_is_dra75x () is_dra75x() +#endif +/* Various silicon revisions for omap2 */ #define OMAP242X_CLASS 0x24200024#define OMAP2420_REV_ES1_0 OMAP242X_CLASS
@@ -443,6 +478,9 @@ IS_OMAP_TYPE(3430, 0x3430)#define OMAP5432_REV_ES1_0 (OMAP54XX_CLASS | (0x32 << 16) | (0x10 << 8))#define OMAP5432_REV_ES2_0 (OMAP54XX_CLASS | (0x32 << 16) | (0x20 << 8)) +#define DRA7XX_CLASS 0x07000007 +#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8)) +void omap2xxx_check_revision (void );void omap3xxx_check_revision (void );void omap4xxx_check_revision (void );
@@ -451,6 +489,7 @@ void omap3xxx_check_features(void);void ti81xx_check_features (void );void am33xx_check_features (void );void omap4xxx_check_features (void ); +void dra7xx_check_revision (void );/* * Runtime detection of OMAP3 features
Signature · 1 line
1.7.9.5
PATCH 2/8 ARM: DRA7: Update SRAM details
In reply to Rajendra NayakDRA7xx devices have 512K of SRAM for both secure and non-secure devices.
--- arch/arm/mach-omap2/sram.c | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/mach-omap2/sram.c +7 -0
@@ -38,6 +38,7 @@#define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000)#endif #define OMAP5_SRAM_PA 0x40300000 +#define DRA7_SRAM_PA OMAP4_SRAM_PA#define SRAM_BOOTLOADER_SZ 0x00
@@ -111,6 +112,9 @@ static void __init omap_detect_sram(void) }else if (soc_is_omap54xx ()) { omap_sram_start =OMAP5_SRAM_PA ; omap_sram_size =SZ_128K ;/* 128KB */ + }else if (soc_is_dra7xx ()) { + omap_sram_start =DRA7_SRAM_PA ; + omap_sram_size =SZ_512K ;/* 512KB */ }else { omap_sram_start =OMAP2_SRAM_PUB_PA ; omap_sram_size =0x800 ;/* 2K */
@@ -131,6 +135,9 @@ static void __init omap_detect_sram(void) }else if (soc_is_omap54xx ()) { omap_sram_start =OMAP5_SRAM_PA ; omap_sram_size =SZ_128K ;/* 128KB */ + }else if (soc_is_dra7xx ()) { + omap_sram_start =DRA7_SRAM_PA ; + omap_sram_size =SZ_512K ;/* 512KB */ }else { omap_sram_start =OMAP2_SRAM_PA ;if (cpu_is_omap242x ())
Signature · 1 line
1.7.9.5
Tony Lindgren
maintainerPATCH 2/8 ARM: DRA7: Update SRAM details
Quoted 32 lines · Rajendra Nayak
DRA7xx devices have 512K of SRAM for both secure and non-secure devices.
Signed-off-by Rajendra Nayak <[email protected]>Signed-off-by R Sricharan <[email protected]>--- arch/arm/mach-omap2/sram.c | 7 +++++++ 1 file changed, 7 insertions(+)arch/arm/mach-omap2/sram.c +4
-0@@ -38,6 +38,7 @@#define OMAP4_SRAM_PUB_PA (OMAP4_SRAM_PA + 0x4000)#endif #define OMAP5_SRAM_PA 0x40300000 +#define DRA7_SRAM_PA OMAP4_SRAM_PA#define SRAM_BOOTLOADER_SZ 0x00@@ -111,6 +112,9 @@ static void __init omap_detect_sram(void) }else if (soc_is_omap54xx ()) { omap_sram_start =OMAP5_SRAM_PA ; omap_sram_size =SZ_128K ;/* 128KB */ + }else if (soc_is_dra7xx ()) { + omap_sram_start =DRA7_SRAM_PA ; + omap_sram_size =SZ_512K ;/* 512KB */ }else { omap_sram_start =OMAP2_SRAM_PUB_PA ; omap_sram_size =0x800 ;/* 2K */
arch/arm/mach-omap2/sram.c static void __init omap_detect_sram(void) · line 143
Quoted 9 lines
arch/arm/mach-omap2/sram.c +3
-0@@ -131,6 +135,9 @@ static void __init omap_detect_sram(void) }else if (soc_is_omap54xx ()) { omap_sram_start =OMAP5_SRAM_PA ; omap_sram_size =SZ_128K ;/* 128KB */ + }else if (soc_is_dra7xx ()) { + omap_sram_start =DRA7_SRAM_PA ; + omap_sram_size =SZ_512K ;/* 512KB */ }else { omap_sram_start =OMAP2_SRAM_PA ;if (cpu_is_omap242x ())
This again reminds me that we should move omaps to use drivers/misc/sram.c. Other than that, this set looks good to me.
Regards,
Tony
PATCH 3/8 ARM: DRA7: hwmod: Reuse the soc_ops used for OMAP4/5
In reply to Rajendra NayakThe soc_ops for dra7xx devices can be completed reused from the ones used for omap4 and omap5 devices.
--- arch/arm/mach-omap2/omap_hwmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-omap2/omap_hwmod.c +1 -1
@@ -4113,7 +4113,7 @@ void __init omap_hwmod_init(void) soc_ops.assert_hardreset = _omap2_assert_hardreset; soc_ops.deassert_hardreset = _omap2_deassert_hardreset; soc_ops.is_hardreset_asserted = _omap2_is_hardreset_asserted; - }else if (cpu_is_omap44xx () ||soc_is_omap54xx ()) { + }else if (cpu_is_omap44xx () ||soc_is_omap54xx () ||soc_is_dra7xx ()) { soc_ops.enable_module = _omap4_enable_module; soc_ops.disable_module = _omap4_disable_module; soc_ops.wait_target_ready = _omap4_wait_target_ready;
Signature · 1 line
1.7.9.5
PATCH 4/8 ARM: DRA7: Reuse all of PRCM and MPUSS SMP infra
In reply to Rajendra NayakFrom: R Sricharan <[email protected]>
The PRCM and MPUSS parts of DRA7 devices are quite identical to OMAP5 so as to reuse all the existing infrastructure around it. Makefile updates to do just that.
--- arch/arm/mach-omap2/Makefile | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm/mach-omap2/Makefile +8 -0
@@ -23,6 +23,7 @@ obj-$(CONFIG_ARCH_OMAP4) += prm44xx.o $(hwmod-common) $(secure-common) obj-$(CONFIG_SOC_AM33XX) += irq.o $(hwmod-common) obj-$(CONFIG_SOC_OMAP5) += prm44xx.o $(hwmod-common) $(secure-common) obj-$(CONFIG_SOC_AM43XX) += $(hwmod-common) $(secure-common) +obj-$(CONFIG_SOC_DRA7XX) += prm44xx.o $(hwmod-common) $(secure-common) ifneq ($(CONFIG_SND_OMAP_SOC_MCBSP),) obj-y += mcbsp.o
@@ -39,6 +40,7 @@ omap-4-5-common = omap4-common.o omap-wakeupgen.o obj-$(CONFIG_ARCH_OMAP4) += $(omap-4-5-common) $(smp-y) sleep44xx.o obj-$(CONFIG_SOC_OMAP5) += $(omap-4-5-common) $(smp-y) sleep44xx.o obj-$(CONFIG_SOC_AM43XX) += $(omap-4-5-common) +obj-$(CONFIG_SOC_DRA7XX) += $(omap-4-5-common) $(smp-y) plus_sec := $(call as-instr,.arch_extension sec,+sec) AFLAGS_omap-headsmp.o :=-Wa,-march=armv7-a$(plus_sec)
@@ -87,6 +89,7 @@ obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o obj-$(CONFIG_SOC_OMAP5) += omap-mpuss-lowpower.o +obj-$(CONFIG_SOC_DRA7XX) += omap-mpuss-lowpower.o obj-$(CONFIG_PM_DEBUG) += pm-debug.o obj-$(CONFIG_POWER_AVS_OMAP) += sr_device.o
@@ -118,6 +121,7 @@ omap-prcm-4-5-common = cminst44xx.o cm44xx.o prm44xx.o \ vc44xx_data.o vp44xx_data.o obj-$(CONFIG_ARCH_OMAP4) += $(omap-prcm-4-5-common) obj-$(CONFIG_SOC_OMAP5) += $(omap-prcm-4-5-common) +obj-$(CONFIG_SOC_DRA7XX) += $(omap-prcm-4-5-common) # OMAP voltage domains voltagedomain-common := voltage.o vc.o vp.o
@@ -147,6 +151,7 @@ obj-$(CONFIG_SOC_AM33XX) += powerdomains33xx_data.o obj-$(CONFIG_SOC_AM43XX) += $(powerdomain-common) obj-$(CONFIG_SOC_OMAP5) += $(powerdomain-common) obj-$(CONFIG_SOC_OMAP5) += powerdomains54xx_data.o +obj-$(CONFIG_SOC_DRA7XX) += $(powerdomain-common) # PRCM clockdomain control clockdomain-common += clockdomain.o
@@ -164,6 +169,7 @@ obj-$(CONFIG_SOC_AM33XX) += clockdomains33xx_data.o obj-$(CONFIG_SOC_AM43XX) += $(clockdomain-common) obj-$(CONFIG_SOC_OMAP5) += $(clockdomain-common) obj-$(CONFIG_SOC_OMAP5) += clockdomains54xx_data.o +obj-$(CONFIG_SOC_DRA7XX) += $(clockdomain-common) # Clock framework obj-$(CONFIG_ARCH_OMAP2) += $(clock-common) clock2xxx.o
@@ -185,6 +191,8 @@ obj-$(CONFIG_SOC_AM33XX) += $(clock-common) dpll3xxx.o obj-$(CONFIG_SOC_AM33XX) += cclock33xx_data.o obj-$(CONFIG_SOC_OMAP5) += $(clock-common) obj-$(CONFIG_SOC_OMAP5) += dpll3xxx.o dpll44xx.o +obj-$(CONFIG_SOC_DRA7XX) += $(clock-common) +obj-$(CONFIG_SOC_DRA7XX) += dpll3xxx.o dpll44xx.o # OMAP2 clock rate set data (old "OPP" data) obj-$(CONFIG_SOC_OMAP2420) += opp2420_data.o
Signature · 1 line
1.7.9.5
PATCH 5/8 ARM: DRA7: Reuse io tables and add a new .init_early
In reply to Rajendra NayakFrom: R Sricharan <[email protected]>
The IO descriptor tables for DRA7 are a complete reuse from OMAP5. A new dra7xx_init_early() does the base address inits.
--- arch/arm/mach-omap2/common.h | 1 + arch/arm/mach-omap2/io.c | 22 ++++++++++++++++++++-- arch/arm/mach-omap2/omap54xx.h | 4 ++++ 3 files changed, 25 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/common.h +1 -0
@@ -109,6 +109,7 @@ void omap3630_init_late(void);void am35xx_init_late (void );void ti81xx_init_late (void );int omap2_common_pm_late_init (void ); +void dra7xx_init_early (void );#ifdef CONFIG_SOC_BUS void omap_soc_device_init (void );
arch/arm/mach-omap2/io.c +20 -2
@@ -251,7 +251,7 @@ static struct map_desc omap44xx_io_desc[] __initdata = { };#endif -#ifdef CONFIG_SOC_OMAP5 +#if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX) static struct map_desc omap54xx_io_desc[] __initdata = { { .virtual = L3_54XX_VIRT,
@@ -333,7 +333,7 @@ void __init omap4_map_io(void) }#endif -#ifdef CONFIG_SOC_OMAP5 +#if defined(CONFIG_SOC_OMAP5 ) || defined(CONFIG_SOC_DRA7XX )void __init omap5_map_io (void ) {iotable_init (omap54xx_io_desc,ARRAY_SIZE (omap54xx_io_desc));
@@ -653,6 +653,24 @@ void __init omap5_init_early(void) }#endif +#ifdef CONFIG_SOC_DRA7XX +void __init dra7xx_init_early (void ) +{ +omap2_set_globals_tap (DRA7XX_CLASS , +OMAP2_L4_IO_ADDRESS (DRA7XX_TAP_BASE )); +omap2_set_globals_control (OMAP2_L4_IO_ADDRESS (OMAP54XX_SCM_BASE ), +OMAP2_L4_IO_ADDRESS (DRA7XX_CTRL_BASE )); +omap2_set_globals_prm (OMAP2_L4_IO_ADDRESS (OMAP54XX_PRM_BASE )); +omap2_set_globals_cm (OMAP2_L4_IO_ADDRESS (DRA7XX_CM_CORE_AON_BASE ), +OMAP2_L4_IO_ADDRESS (OMAP54XX_CM_CORE_BASE )); +omap2_set_globals_prcm_mpu (OMAP2_L4_IO_ADDRESS (OMAP54XX_PRCM_MPU_BASE )); +omap_prm_base_init (); +omap_cm_base_init (); +dra7xx_check_revision (); +} +#endif + +void __init omap_sdrc_init (struct omap_sdrc_params *sdrc_cs0,struct omap_sdrc_params *sdrc_cs1) {
arch/arm/mach-omap2/omap54xx.h +4 -0
@@ -30,4 +30,8 @@#define OMAP54XX_CTRL_BASE 0x4a002800#define OMAP54XX_SAR_RAM_BASE 0x4ae26000 +#define DRA7XX_CM_CORE_AON_BASE 0x4a005000 +#define DRA7XX_CTRL_BASE 0x4a003400 +#define DRA7XX_TAP_BASE 0x4ae0c000 +#endif /* __ASM_SOC_OMAP555554XX_H */
Signature · 1 line
1.7.9.5
PATCH 6/8 ARM: DRA7: Resue the clocksource, clockevent support
In reply to Rajendra NayakFrom: R Sricharan <[email protected]>
All of OMAP5 timer support for clocksource and clockevent is completely reused across DRA7.
--- arch/arm/mach-omap2/Kconfig | 2 +- arch/arm/mach-omap2/timer.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/Kconfig +1 -1
@@ -50,7 +50,7 @@ config SOC_HAS_OMAP2_SDRC config SOC_HAS_REALTIME_COUNTER bool "Real time free running counter" - depends on SOC_OMAP5 + depends on SOC_OMAP5 || SOC_DRA7XX default y config ARCH_OMAP2
arch/arm/mach-omap2/timer.c +2 -1
@@ -594,7 +594,8 @@ OMAP_SYS_GP_TIMER_INIT(3, 2, "timer_sys_ck", NULL, 1, "timer_sys_ck", "ti,timer-alwon");#endif -#if defined(CONFIG_ARCH_OMAP4 ) || defined(CONFIG_SOC_OMAP5 ) +#if defined(CONFIG_ARCH_OMAP4 ) || defined(CONFIG_SOC_OMAP5 ) || \ + defined(CONFIG_SOC_DRA7XX ) static OMAP_SYS_32K_TIMER_INIT(4, 1, "timer_32k_ck", "ti,timer-alwon", 2, "sys_clkin_ck", NULL);#endif
Signature · 1 line
1.7.9.5
PATCH 7/8 ARM: DRA7: board-generic: Add basic DT support
In reply to Rajendra NayakFrom: R Sricharan <[email protected]>
Describe minimal DT boot machine details for DRA7xx based SoC's. DRA7xx family is based on dual core ARM CORTEX A15 using GIC as the interrupt controller. The PRCM and timer infrastructure is reused from OMAP5 and so are the io descriptor tables.
--- .../devicetree/bindings/arm/omap/omap.txt | 3 +++ arch/arm/mach-omap2/board-generic.c | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+)
Documentation/devicetree/bindings/arm/omap/omap.txt +3 -0
@@ -59,3 +59,6 @@ Boards: - AM43x EPOS EVM compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43" + +- DRA7 EVM: Software Developement Board for DRA7XX + compatible = "ti,dra7-evm", "ti,dra7"
arch/arm/mach-omap2/board-generic.c +18 -0
@@ -201,3 +201,21 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)") .dt_compat = am43_boards_compat, MACHINE_END#endif + +#ifdef CONFIG_SOC_DRA7XX +static const char *dra7xx_boards_compat[]__initdata = { +"ti,dra7" , +NULL , +}; + +DT_MACHINE_START (DRA7XX_DT ,"Generic DRA7XX (Flattened Device Tree)" ) + .reserve = omap_reserve, + .smp = smp_ops(omap4_smp_ops), + .map_io = omap5_map_io, + .init_early = dra7xx_init_early, + .init_irq = omap_gic_of_init, + .init_machine = omap_generic_init, + .init_time = omap5_realtime_timer_init, + .dt_compat = dra7xx_boards_compat, +MACHINE_END +#endif
Signature · 1 line
1.7.9.5
PATCH 8/8 ARM: DRA7: Kconfig: Increase the default gpio count
In reply to Rajendra NayakFrom: R Sricharan <[email protected]>
DRA7xx has 8 GPIO banks so that there are 32x8 = 256 GPIOs. In order for the gpiolib to detect and initialize these additional GPIOs and other TWL GPIOs, ARCH_NR_GPIO is set to 512 instead of present 256.
--- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/Kconfig +1 -1
@@ -1599,7 +1599,7 @@ config LOCAL_TIMERS config ARCH_NR_GPIO int default 1024 if ARCH_SHMOBILE || ARCH_TEGRA - default 512 if SOC_OMAP5 + default 512 if SOC_OMAP5 || SOC_DRA7XX default 512 if ARCH_KEYSTONE default 392 if ARCH_U8500 default 352 if ARCH_VT8500
Signature · 1 line
1.7.9.5
PATCH 8/8 ARM: DRA7: Kconfig: Increase the default gpio count
Quoted 6 lines · Rajendra Nayak
From: R Sricharan <[email protected]>
DRA7xx has 8 GPIO banks so that there are 32x8 = 256 GPIOs. In order for the gpiolib to detect and initialize these additional GPIOs and other TWL GPIOs,
ARCH_NR_GPIOis set to 512 instead of present 256.
nit: the patch itself doesn't change 256 to 512, but just adds another Kconfig default.
Kevin
Quoted 20 lines
Signed-off-by R Sricharan <[email protected]>Signed-off-by Rajendra Nayak <[email protected]>--- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm/Kconfig +1
-1@@ -1599,7 +1599,7 @@ config LOCAL_TIMERS config ARCH_NR_GPIO int default 1024 if ARCH_SHMOBILE || ARCH_TEGRA - default 512 if SOC_OMAP5 + default 512 if SOC_OMAP5 || SOC_DRA7XX default 512 if ARCH_KEYSTONE default 392 if ARCH_U8500 default 352 if ARCH_VT8500
PATCH 8/8 ARM: DRA7: Kconfig: Increase the default gpio count
Quoted 11 lines · Kevin Hilman
Quoted 6 lines · Rajendra Nayak
From: R Sricharan <[email protected]>
DRA7xx has 8 GPIO banks so that there are 32x8 = 256 GPIOs. In order for the gpiolib to detect and initialize these additional GPIOs and other TWL GPIOs,
ARCH_NR_GPIOis set to 512 instead of present 256.nit: the patch itself doesn't change 256 to 512, but just adds another
Kconfigdefault.Kevin
hmm, ok. Will reword the $subject and commit accordingly
Regards,
Sricharan
Quoted 20 lines
Quoted 20 lines
Signed-off-by R Sricharan <[email protected]>Signed-off-by Rajendra Nayak <[email protected]>--- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm/Kconfig +1
-1@@ -1599,7 +1599,7 @@ config LOCAL_TIMERS config ARCH_NR_GPIO int default 1024 if ARCH_SHMOBILE || ARCH_TEGRA - default 512 if SOC_OMAP5 + default 512 if SOC_OMAP5 || SOC_DRA7XX default 512 if ARCH_KEYSTONE default 392 if ARCH_U8500 default 352 if ARCH_VT8500