aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPraneeth Bajjuri2017-07-24 10:11:56 -0500
committerJean-Jacques Hiblot2017-08-02 09:13:37 -0500
commit6c8751206974e2a9bbca2c1d69d2fa182d6cb4d7 (patch)
treef541be45a9b094dfecb60b224b819ff9a8c0ca9b
parent5ad422bcc6fbe86fe458c3eab4fde4ada26cc299 (diff)
downloadu-boot-6c8751206974e2a9bbca2c1d69d2fa182d6cb4d7.tar.gz
u-boot-6c8751206974e2a9bbca2c1d69d2fa182d6cb4d7.tar.xz
u-boot-6c8751206974e2a9bbca2c1d69d2fa182d6cb4d7.zip
arm: dra76: Add support for ES1.0 detection
dra76 family is a high-performance, infotainment application device, based on OMAP architecture on a 28-nm technology. This contains most of the subsystems, peripherals that are available on dra74, dra72 family. This SoC mainly features Subsystems: - 2 x Cortex-A15 with max speed of 1.8GHz - 2 X DSP - 2 X Cortex-M4 IPU - ISS - CAL - DSS - VPE - VIP Connectivity peripherals: - 1 USB3.0 and 3 USB2.0 subsystems - 2 x SATA - 2 x PCI Express Gen2 - 3-port Gigabit ethernet switch - 2 x CAN - MCAN More information can be found here[1]. Adding CPU detection support for the dra76 ES1.0 soc and update prcm, control module, dplls data. [1] TBD Signed-off-by: Praneeth Bajjuri <praneeth@ti.com> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
-rw-r--r--arch/arm/cpu/armv7/omap5/hw_data.c27
-rw-r--r--arch/arm/cpu/armv7/omap5/hwinit.c3
-rw-r--r--arch/arm/include/asm/arch-omap5/omap.h1
-rw-r--r--arch/arm/include/asm/omap_common.h8
4 files changed, 39 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/omap5/hw_data.c b/arch/arm/cpu/armv7/omap5/hw_data.c
index 2f9f5ad161..2b6d9d4984 100644
--- a/arch/arm/cpu/armv7/omap5/hw_data.c
+++ b/arch/arm/cpu/armv7/omap5/hw_data.c
@@ -113,6 +113,16 @@ static const struct dpll_params per_dpll_params_768mhz_dra7xx[NUM_SYS_CLKS] = {
113 {10, 0, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 38.4 MHz */ 113 {10, 0, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1}, /* 38.4 MHz */
114}; 114};
115 115
116static const struct dpll_params per_dpll_params_768mhz_dra76x[NUM_SYS_CLKS] = {
117 {32, 0, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 12 MHz */
118 {96, 4, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 20 MHz */
119 {160, 6, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 16.8 MHz */
120 {20, 0, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 19.2 MHz */
121 {192, 12, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 26 MHz */
122 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */
123 {10, 0, 4, 1, 3, 4, 8, 2, -1, -1, -1, -1}, /* 38.4 MHz */
124};
125
116static const struct dpll_params iva_dpll_params_2330mhz[NUM_SYS_CLKS] = { 126static const struct dpll_params iva_dpll_params_2330mhz[NUM_SYS_CLKS] = {
117 {1165, 11, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ 127 {1165, 11, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1}, /* 12 MHz */
118 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ 128 {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */
@@ -234,6 +244,17 @@ struct dplls omap5_dplls_es2 = {
234 .ddr = NULL 244 .ddr = NULL
235}; 245};
236 246
247struct dplls dra76x_dplls = {
248 .mpu = mpu_dpll_params_1ghz,
249 .core = core_dpll_params_2128mhz_dra7xx,
250 .per = per_dpll_params_768mhz_dra76x,
251 .abe = abe_dpll_params_sysclk2_361267khz,
252 .iva = iva_dpll_params_2330mhz_dra7xx,
253 .usb = usb_dpll_params_1920mhz,
254 .ddr = ddr_dpll_params_2664mhz,
255 .gmac = gmac_dpll_params_2000mhz,
256};
257
237struct dplls dra7xx_dplls = { 258struct dplls dra7xx_dplls = {
238 .mpu = mpu_dpll_params_1ghz, 259 .mpu = mpu_dpll_params_1ghz,
239 .core = core_dpll_params_2128mhz_dra7xx, 260 .core = core_dpll_params_2128mhz_dra7xx,
@@ -700,6 +721,12 @@ void __weak hw_data_init(void)
700 *ctrl = &omap5_ctrl; 721 *ctrl = &omap5_ctrl;
701 break; 722 break;
702 723
724 case DRA762_ES1_0:
725 *prcm = &dra7xx_prcm;
726 *dplls_data = &dra76x_dplls;
727 *ctrl = &dra7xx_ctrl;
728 break;
729
703 case DRA752_ES1_0: 730 case DRA752_ES1_0:
704 case DRA752_ES1_1: 731 case DRA752_ES1_1:
705 case DRA752_ES2_0: 732 case DRA752_ES2_0:
diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c
index 1d0ca1e8c1..434d304686 100644
--- a/arch/arm/cpu/armv7/omap5/hwinit.c
+++ b/arch/arm/cpu/armv7/omap5/hwinit.c
@@ -362,6 +362,9 @@ void init_omap_revision(void)
362 case OMAP5432_CONTROL_ID_CODE_ES2_0: 362 case OMAP5432_CONTROL_ID_CODE_ES2_0:
363 *omap_si_rev = OMAP5432_ES2_0; 363 *omap_si_rev = OMAP5432_ES2_0;
364 break; 364 break;
365 case DRA762_CONTROL_ID_CODE_ES1_0:
366 *omap_si_rev = DRA762_ES1_0;
367 break;
365 case DRA752_CONTROL_ID_CODE_ES1_0: 368 case DRA752_CONTROL_ID_CODE_ES1_0:
366 *omap_si_rev = DRA752_ES1_0; 369 *omap_si_rev = DRA752_ES1_0;
367 break; 370 break;
diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h
index b5e5519fbd..aca5af86fc 100644
--- a/arch/arm/include/asm/arch-omap5/omap.h
+++ b/arch/arm/include/asm/arch-omap5/omap.h
@@ -58,6 +58,7 @@
58#define OMAP5430_CONTROL_ID_CODE_ES2_0 0x1B94202F 58#define OMAP5430_CONTROL_ID_CODE_ES2_0 0x1B94202F
59#define OMAP5432_CONTROL_ID_CODE_ES1_0 0x0B99802F 59#define OMAP5432_CONTROL_ID_CODE_ES1_0 0x0B99802F
60#define OMAP5432_CONTROL_ID_CODE_ES2_0 0x1B99802F 60#define OMAP5432_CONTROL_ID_CODE_ES2_0 0x1B99802F
61#define DRA762_CONTROL_ID_CODE_ES1_0 0x0BB5002F
61#define DRA752_CONTROL_ID_CODE_ES1_0 0x0B99002F 62#define DRA752_CONTROL_ID_CODE_ES1_0 0x0B99002F
62#define DRA752_CONTROL_ID_CODE_ES1_1 0x1B99002F 63#define DRA752_CONTROL_ID_CODE_ES1_1 0x1B99002F
63#define DRA752_CONTROL_ID_CODE_ES2_0 0x2B99002F 64#define DRA752_CONTROL_ID_CODE_ES2_0 0x2B99002F
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 0e6196fe52..5796cf8f86 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -699,6 +699,7 @@ static inline u8 is_omap54xx(void)
699 699
700#define DRA7XX 0x07000000 700#define DRA7XX 0x07000000
701#define DRA72X 0x07200000 701#define DRA72X 0x07200000
702#define DRA76X 0x07600000
702 703
703static inline u8 is_dra7xx(void) 704static inline u8 is_dra7xx(void)
704{ 705{
@@ -711,6 +712,12 @@ static inline u8 is_dra72x(void)
711 extern u32 *const omap_si_rev; 712 extern u32 *const omap_si_rev;
712 return (*omap_si_rev & 0xFFF00000) == DRA72X; 713 return (*omap_si_rev & 0xFFF00000) == DRA72X;
713} 714}
715
716static inline u8 is_dra76x(void)
717{
718 extern u32 *const omap_si_rev;
719 return (*omap_si_rev & 0xFFF00000) == DRA76X;
720}
714#endif 721#endif
715 722
716/* 723/*
@@ -738,6 +745,7 @@ static inline u8 is_dra72x(void)
738#define OMAP5432_ES2_0 0x54320200 745#define OMAP5432_ES2_0 0x54320200
739 746
740/* DRA7XX */ 747/* DRA7XX */
748#define DRA762_ES1_0 0x07620100
741#define DRA752_ES1_0 0x07520100 749#define DRA752_ES1_0 0x07520100
742#define DRA752_ES1_1 0x07520110 750#define DRA752_ES1_1 0x07520110
743#define DRA752_ES2_0 0x07520200 751#define DRA752_ES2_0 0x07520200