All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board
@ 2012-12-12  7:54 Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 1/4] EXYNOS4: Add pinmux support for UART Jeong Hyeon Kim
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Jeong Hyeon Kim @ 2012-12-12  7:54 UTC (permalink / raw)
  To: u-boot

This patch series adds support for Exynos4 SoCs and ORIGEN_QUAD board.
Exynos4212/4412 are SAMSUNG's ARM Cortex-A15 boased SoCs and Exynos4 series SoCs.
ORIGEN_QUAD board is based on Exynos4212.

[PATCH 1/4] EXYNOS4: Add pinmux support for UART
[PATCH 2/4] EXYNOS4: Add pinmux support for I2C
[PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
[PATCH 4/4] EXYNOS4: Add ORIGEN_QUAD board support

 Makefile                                  |    2 +-
 arch/arm/cpu/armv7/exynos/clock.c         |    7 +-
 arch/arm/cpu/armv7/exynos/pinmux.c        |   92 +++++++++
 arch/arm/include/asm/arch-exynos/clock.h  |  240 +++++++++++++++++++++++
 arch/arm/include/asm/arch-exynos/cpu.h    |    1 +
 board/samsung/origen_quad/Makefile        |   59 ++++++
 board/samsung/origen_quad/boot.c          |   72 +++++++
 board/samsung/origen_quad/clock.c         |  103 ++++++++++
 board/samsung/origen_quad/dmc.c           |  163 ++++++++++++++++
 board/samsung/origen_quad/lowlevel_init.S |  151 +++++++++++++++
 board/samsung/origen_quad/origen_quad.c   |  163 ++++++++++++++++
 board/samsung/origen_quad/setup.h         |  300 +++++++++++++++++++++++++++++
 boards.cfg                                |    1 +
 include/configs/origen_quad.h             |  179 +++++++++++++++++
 tools/Makefile                            |    2 +
 15 files changed, 1533 insertions(+), 2 deletions(-)
 create mode 100644 board/samsung/origen_quad/Makefile
 create mode 100644 board/samsung/origen_quad/boot.c
 create mode 100644 board/samsung/origen_quad/clock.c
 create mode 100644 board/samsung/origen_quad/dmc.c
 create mode 100644 board/samsung/origen_quad/lowlevel_init.S
 create mode 100644 board/samsung/origen_quad/origen_quad.c
 create mode 100644 board/samsung/origen_quad/setup.h
 create mode 100644 include/configs/origen_quad.h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 1/4] EXYNOS4: Add pinmux support for UART
  2012-12-12  7:54 [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board Jeong Hyeon Kim
@ 2012-12-12  7:54 ` Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C Jeong Hyeon Kim
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Jeong Hyeon Kim @ 2012-12-12  7:54 UTC (permalink / raw)
  To: u-boot

From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>

This patch adds pinmux support for UART channels

Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
---
 arch/arm/cpu/armv7/exynos/pinmux.c |   41 ++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
index f02f441..364ee2a 100644
--- a/arch/arm/cpu/armv7/exynos/pinmux.c
+++ b/arch/arm/cpu/armv7/exynos/pinmux.c
@@ -366,6 +366,41 @@ static int exynos4_mmc_config(int peripheral, int flags)
 	return 0;
 }
 
+static void exynos4_uart_config(int peripheral)
+{
+	struct exynos4_gpio_part1 *gpio1 =
+		(struct exynos4_gpio_part1 *) samsung_get_base_gpio_part1();
+	struct s5p_gpio_bank *bank;
+	int i, start, count;
+
+	switch (peripheral) {
+	case PERIPH_ID_UART0:
+		bank = &gpio1->a0;
+		start = 0;
+		count = 4;
+		break;
+	case PERIPH_ID_UART1:
+		bank = &gpio1->a0;
+		start = 4;
+		count = 4;
+		break;
+	case PERIPH_ID_UART2:
+		bank = &gpio1->a1;
+		start = 0;
+		count = 4;
+		break;
+	case PERIPH_ID_UART3:
+		bank = &gpio1->a1;
+		start = 4;
+		count = 2;
+		break;
+	}
+	for (i = start; i < start + count; i++) {
+		s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE);
+		s5p_gpio_cfg_pin(bank, i, GPIO_FUNC(0x2));
+	}
+}
+
 static int exynos4_pinmux_config(int peripheral, int flags)
 {
 	switch (peripheral) {
@@ -377,6 +412,12 @@ static int exynos4_pinmux_config(int peripheral, int flags)
 	case PERIPH_ID_SDMMC4:
 		printf("SDMMC device %d not implemented\n", peripheral);
 		return -1;
+	case PERIPH_ID_UART0:
+	case PERIPH_ID_UART1:
+	case PERIPH_ID_UART2:
+	case PERIPH_ID_UART3:
+		exynos4_uart_config(peripheral);
+		break;
 	default:
 		debug("%s: invalid peripheral %d", __func__, peripheral);
 		return -1;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C
  2012-12-12  7:54 [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 1/4] EXYNOS4: Add pinmux support for UART Jeong Hyeon Kim
@ 2012-12-12  7:54 ` Jeong Hyeon Kim
  2012-12-12  8:16   ` Heiko Schocher
  2012-12-12  7:54 ` [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 4/4] EXYNOS4: Add ORIGEN_QUAD board support Jeong Hyeon Kim
  3 siblings, 1 reply; 11+ messages in thread
From: Jeong Hyeon Kim @ 2012-12-12  7:54 UTC (permalink / raw)
  To: u-boot

From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>

This patch adds pinmux support for I2C channels

Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
---
 arch/arm/cpu/armv7/exynos/pinmux.c |   51 ++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
index 364ee2a..d778b46 100644
--- a/arch/arm/cpu/armv7/exynos/pinmux.c
+++ b/arch/arm/cpu/armv7/exynos/pinmux.c
@@ -401,6 +401,48 @@ static void exynos4_uart_config(int peripheral)
 	}
 }
 
+static void exynos4_i2c_config(int peripheral, int flags)
+{
+
+	struct exynos4_gpio_part1 *gpio1 =
+		(struct exynos4_gpio_part1 *) samsung_get_base_gpio_part1();
+
+	switch (peripheral) {
+	case PERIPH_ID_I2C0:
+		s5p_gpio_cfg_pin(&gpio1->d1, 0, GPIO_FUNC(0x2));
+		s5p_gpio_cfg_pin(&gpio1->d1, 1, GPIO_FUNC(0x2));
+		break;
+	case PERIPH_ID_I2C1:
+		s5p_gpio_cfg_pin(&gpio1->d1, 2, GPIO_FUNC(0x2));
+		s5p_gpio_cfg_pin(&gpio1->d1, 3, GPIO_FUNC(0x2));
+		break;
+	case PERIPH_ID_I2C2:
+		s5p_gpio_cfg_pin(&gpio1->a0, 6, GPIO_FUNC(0x3));
+		s5p_gpio_cfg_pin(&gpio1->a0, 7, GPIO_FUNC(0x3));
+		break;
+	case PERIPH_ID_I2C3:
+		s5p_gpio_cfg_pin(&gpio1->a1, 2, GPIO_FUNC(0x3));
+		s5p_gpio_cfg_pin(&gpio1->a1, 3, GPIO_FUNC(0x3));
+		break;
+	case PERIPH_ID_I2C4:
+		s5p_gpio_cfg_pin(&gpio1->b, 0, GPIO_FUNC(0x3));
+		s5p_gpio_cfg_pin(&gpio1->b, 1, GPIO_FUNC(0x3));
+		break;
+	case PERIPH_ID_I2C5:
+		s5p_gpio_cfg_pin(&gpio1->b, 2, GPIO_FUNC(0x3));
+		s5p_gpio_cfg_pin(&gpio1->b, 3, GPIO_FUNC(0x3));
+		break;
+	case PERIPH_ID_I2C6:
+		s5p_gpio_cfg_pin(&gpio1->c1, 3, GPIO_FUNC(0x4));
+		s5p_gpio_cfg_pin(&gpio1->c1, 4, GPIO_FUNC(0x4));
+		break;
+	case PERIPH_ID_I2C7:
+		s5p_gpio_cfg_pin(&gpio1->d0, 2, GPIO_FUNC(0x3));
+		s5p_gpio_cfg_pin(&gpio1->d0, 3, GPIO_FUNC(0x3));
+		break;
+	}
+}
+
 static int exynos4_pinmux_config(int peripheral, int flags)
 {
 	switch (peripheral) {
@@ -417,6 +459,15 @@ static int exynos4_pinmux_config(int peripheral, int flags)
 	case PERIPH_ID_UART2:
 	case PERIPH_ID_UART3:
 		exynos4_uart_config(peripheral);
+	case PERIPH_ID_I2C0:
+	case PERIPH_ID_I2C1:
+	case PERIPH_ID_I2C2:
+	case PERIPH_ID_I2C3:
+	case PERIPH_ID_I2C4:
+	case PERIPH_ID_I2C5:
+	case PERIPH_ID_I2C6:
+	case PERIPH_ID_I2C7:
+		exynos4_i2c_config(peripheral, flags);
 		break;
 	default:
 		debug("%s: invalid peripheral %d", __func__, peripheral);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
  2012-12-12  7:54 [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 1/4] EXYNOS4: Add pinmux support for UART Jeong Hyeon Kim
  2012-12-12  7:54 ` [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C Jeong Hyeon Kim
@ 2012-12-12  7:54 ` Jeong Hyeon Kim
  2012-12-13  6:19   ` Chander Kashyap
  2012-12-12  7:54 ` [U-Boot] [PATCH 4/4] EXYNOS4: Add ORIGEN_QUAD board support Jeong Hyeon Kim
  3 siblings, 1 reply; 11+ messages in thread
From: Jeong Hyeon Kim @ 2012-12-12  7:54 UTC (permalink / raw)
  To: u-boot

From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>

This patch adds the support for Exynos4212/4412.

Samsung's ARM Cortex-A9 based Exynos4x12 SoCs and Exynos4210 are similar.
Address of a few registers are different in CMU part like MPLL.

Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
---
 arch/arm/cpu/armv7/exynos/clock.c        |    7 +-
 arch/arm/include/asm/arch-exynos/clock.h |  240 ++++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-exynos/cpu.h   |    1 +
 3 files changed, 247 insertions(+), 1 deletion(-)

diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c
index fe61f88..47e2e6c 100644
--- a/arch/arm/cpu/armv7/exynos/clock.c
+++ b/arch/arm/cpu/armv7/exynos/clock.c
@@ -94,7 +94,12 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
 		r = readl(&clk->apll_con0);
 		break;
 	case MPLL:
-		r = readl(&clk->mpll_con0);
+		if (proid_is_exynos4412()) {
+			struct exynos4412_clock *clk4412 =
+				(struct exynos4412_clock *)samsung_get_base_clock();
+			r = readl(&clk4412->mpll_con0);
+		} else
+			r = readl(&clk->mpll_con0);
 		break;
 	case EPLL:
 		r = readl(&clk->epll_con0);
diff --git a/arch/arm/include/asm/arch-exynos/clock.h b/arch/arm/include/asm/arch-exynos/clock.h
index ff6781a..5d4ed5c 100644
--- a/arch/arm/include/asm/arch-exynos/clock.h
+++ b/arch/arm/include/asm/arch-exynos/clock.h
@@ -251,6 +251,246 @@ struct exynos4_clock {
 	unsigned int	div_iem_l1;
 };
 
+struct exynos4412_clock {
+	unsigned char	res1[0x4200];
+	unsigned int	src_leftbus;
+	unsigned char	res2[0x1fc];
+	unsigned int	mux_stat_leftbus;
+	unsigned char	res3[0xfc];
+	unsigned int	div_leftbus;
+	unsigned char	res4[0xfc];
+	unsigned int	div_stat_leftbus;
+	unsigned char	res5[0x1fc];
+	unsigned int	gate_ip_leftbus;
+	unsigned char	res6[0x12c];
+	unsigned int	gate_ip_image;
+	unsigned char	res7[0xcc];
+	unsigned int	clkout_cmu_leftbus;
+	unsigned int	clkout_cmu_leftbus_div_stat;
+	unsigned char	res8[0x37f8];
+	unsigned int	src_rightbus;
+	unsigned char	res9[0x1fc];
+	unsigned int	mux_stat_rightbus;
+	unsigned char	res10[0xfc];
+	unsigned int	div_rightbus;
+	unsigned char	res11[0xfc];
+	unsigned int	div_stat_rightbus;
+	unsigned char	res12[0x1fc];
+	unsigned int	gate_ip_rightbus;
+	unsigned char	res13[0x15c];
+	unsigned int	gate_ip_perir;
+	unsigned char	res14[0x9c];
+	unsigned int	clkout_cmu_rightbus;
+	unsigned int	clkout_cmu_rightbus_div_stat;
+	unsigned char	res15[0x3608];
+	unsigned int	epll_lock;
+	unsigned char	res16[0xc];
+	unsigned int	vpll_lock;
+	unsigned char	res17[0xec];
+	unsigned int	epll_con0;
+	unsigned int	epll_con1;
+	unsigned int	epll_con2;
+	unsigned char	res18[0x4];
+	unsigned int	vpll_con0;
+	unsigned int	vpll_con1;
+	unsigned int	vpll_con2;
+	unsigned char	res19[0xe4];
+	unsigned int	src_top0;
+	unsigned int	src_top1;
+	unsigned char	res20[0x8];
+	unsigned int	src_cam0;
+	unsigned int	src_tv;
+	unsigned int	src_mfc;
+	unsigned int	src_g3d;
+	unsigned char	res21[0x4];
+	unsigned int	src_lcd0;
+	unsigned int	src_isp;
+	unsigned int	src_maudio;
+	unsigned int	src_fsys;
+	unsigned char	res22[0xc];
+	unsigned int	src_peril0;
+	unsigned int	src_peril1;
+	unsigned int	src_cam1;
+	unsigned char	res23[0xc4];
+	unsigned int	src_mask_cam0;
+	unsigned int	src_mask_tv;
+	unsigned char	res24[0xc];
+	unsigned int	src_mask_lcd;
+	unsigned int	src_mask_isp;
+	unsigned int	src_mask_maudio;
+	unsigned int	src_mask_fsys;
+	unsigned char	res25[0xc];
+	unsigned int	src_mask_peril0;
+	unsigned int	src_mask_peril1;
+	unsigned char	res26[0xb8];
+	unsigned int	mux_stat_top;
+	unsigned int	mux_stat_top1;
+	unsigned char	res27[0x10];
+	unsigned int	mux_stat_mfc;
+	unsigned int	mux_stat_g3d;
+	unsigned char	res28[0x28];
+	unsigned int	mux_stat_cam1;
+	unsigned char	res29[0xb4];
+	unsigned int	div_top;
+	unsigned char	res30[0xc];
+	unsigned int	div_cam0;
+	unsigned int	div_tv;
+	unsigned int	div_mfc;
+	unsigned int	div_g3d;
+	unsigned char	res31[0x4];
+	unsigned int	div_lcd;
+	unsigned int	div_isp;
+	unsigned int	div_maudio;
+	unsigned int	div_fsys0;
+	unsigned int	div_fsys1;
+	unsigned int	div_fsys2;
+	unsigned int	div_fsys3;
+	unsigned int	div_peril0;
+	unsigned int	div_peril1;
+	unsigned int	div_peril2;
+	unsigned int	div_peril3;
+	unsigned int	div_peril4;
+	unsigned int	div_peril5;
+	unsigned int	div_cam1;
+	unsigned char	res32[0x14];
+	unsigned int	div2_ratio;
+	unsigned char	res33[0x8c];
+	unsigned int	div_stat_top;
+	unsigned char	res34[0xc];
+	unsigned int	div_stat_cam0;
+	unsigned int	div_stat_tv;
+	unsigned int	div_stat_mfc;
+	unsigned int	div_stat_g3d;
+	unsigned char	res35[0x4];
+	unsigned int	div_stat_lcd;
+	unsigned int	div_stat_isp;
+	unsigned int	div_stat_maudio;
+	unsigned int	div_stat_fsys0;
+	unsigned int	div_stat_fsys1;
+	unsigned int	div_stat_fsys2;
+	unsigned int	div_stat_fsys3;
+	unsigned int	div_stat_peril0;
+	unsigned int	div_stat_peril1;
+	unsigned int	div_stat_peril2;
+	unsigned int	div_stat_peril3;
+	unsigned int	div_stat_peril4;
+	unsigned int	div_stat_peril5;
+	unsigned int	div_stat_cam1;
+	unsigned char	res36[0x14];
+	unsigned int	div2_stat;
+	unsigned char	res37[0xc0];
+	unsigned int	gate_bus_fsys1;
+	unsigned char	res38[0x1d8];
+	unsigned int	gate_ip_cam;
+	unsigned int	gate_ip_tv;
+	unsigned int	gate_ip_mfc;
+	unsigned int	gate_ip_g3d;
+	unsigned char	res39[0x4];
+	unsigned int	gate_ip_lcd;
+	unsigned int	gate_ip_isp;
+	unsigned char	res40[0x4];
+	unsigned int	gate_ip_fsys;
+	unsigned char	res41[0x8];
+	unsigned int	gate_ip_gps;
+	unsigned int	gate_ip_peril;
+	unsigned char	res42[0x1c];
+	unsigned int	gate_block;
+	unsigned char	res43[0x8c];
+	unsigned int	clkout_cmu_top;
+	unsigned int	clkout_cmu_top_div_stat;
+	unsigned char	res44[0x3600];
+	unsigned int	mpll_lock;
+	unsigned char	res45[0xfc];
+	unsigned int	mpll_con0;
+	unsigned int	mpll_con1;
+	unsigned char	res46[0xf0];
+	unsigned int	src_dmc;
+	unsigned char	res47[0xfc];
+	unsigned int	src_mask_dmc;
+	unsigned char	res48[0xfc];
+	unsigned int	mux_stat_dmc;
+	unsigned char	res49[0xfc];
+	unsigned int	div_dmc0;
+	unsigned int	div_dmc1;
+	unsigned char	res50[0xf8];
+	unsigned int	div_stat_dmc0;
+	unsigned int	div_stat_dmc1;
+	unsigned char	res51[0x2f8];
+	unsigned int	gate_ip_dmc;
+	unsigned int	gate_ip_dmc1;
+	unsigned char	res52[0xf8];
+	unsigned int	clkout_cmu_dmc;
+	unsigned int	clkout_cmu_dmc_div_stat;
+	unsigned char	res53[0x5f8];
+	unsigned int	dcgidx_map0;
+	unsigned int	dcgidx_map1;
+	unsigned int	dcgidx_map2;
+	unsigned char	res54[0x14];
+	unsigned int	dcgperf_map0;
+	unsigned int	dcgperf_map1;
+	unsigned char	res55[0x18];
+	unsigned int	dvcidx_map;
+	unsigned char	res56[0x1c];
+	unsigned int	freq_cpu;
+	unsigned int	freq_dpm;
+	unsigned char	res57[0x18];
+	unsigned int	dvsemclk_en;
+	unsigned int	maxperf;
+	unsigned char	res58[0xc];
+	unsigned int	dmc_puause_ctrl;
+	unsigned int	ddrphy_lock_ctrl;
+	unsigned int	c2c_state;
+	unsigned char	res59[0x2f60];
+	unsigned int	apll_lock;
+	unsigned char	res60[0xfc];
+	unsigned int	apll_con0;
+	unsigned int	apll_con1;
+	unsigned char	res61[0xf8];
+	unsigned int	src_cpu;
+	unsigned char	res62[0x1fc];
+	unsigned int	mux_stat_cpu;
+	unsigned char	res63[0xfc];
+	unsigned int	div_cpu0;
+	unsigned int	div_cpu1;
+	unsigned char	res64[0xf8];
+	unsigned int	div_stat_cpu0;
+	unsigned int	div_stat_cpu1;
+	unsigned char	res65[0x2f8];
+	unsigned int	gate_ip_cpu;
+	unsigned char	res66[0xfc];
+	unsigned int	clkout_cmu_cpu;
+	unsigned int	clkout_cmu_cpu_div_stat;
+	unsigned char	res67[0x5f8];
+	unsigned int	armclk_stopctrl;
+	unsigned int	atclk_stopctrl;
+	unsigned char	res68[0x18];
+	unsigned int	pwr_ctrl;
+	unsigned int	pwr_ctrl2;
+	unsigned char	res69[0x3d8];
+	unsigned int	l2_status;
+	unsigned char	res70[0xc];
+	unsigned int	cpu_status;
+	unsigned char	res71[0xc];
+	unsigned int	ptm_status;
+	unsigned char	res72[0x2edc];
+	unsigned int	clk_div_isp0;
+	unsigned int	clk_div_isp1;
+	unsigned char	res73[0xf8];
+	unsigned int	clk_div_stat_isp0;
+	unsigned int	clk_div_stat_isp1;
+	unsigned char	res74[0x3f8];
+	unsigned int	gate_ip_isp0;
+	unsigned int	gate_ip_isp1;
+	unsigned char	res75[0x1f8];
+	unsigned int	clkout_cmu_isp;
+	unsigned int	clkout_cmu_isp_stat;
+	unsigned char	res76[0xf8];
+	unsigned int	clkout_cmu_spare0;
+	unsigned int	clkout_cmu_spare1;
+	unsigned int	clkout_cmu_spare2;
+	unsigned int	clkout_cmu_spare3;
+};
+
 struct exynos5_clock {
 	unsigned int	apll_lock;
 	unsigned char	res1[0xfc];
diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h
index d1b2ea8..7ee5366 100644
--- a/arch/arm/include/asm/arch-exynos/cpu.h
+++ b/arch/arm/include/asm/arch-exynos/cpu.h
@@ -152,6 +152,7 @@ static inline int proid_is_##type(void)			\
 }
 
 IS_EXYNOS_TYPE(exynos4210, 0x4210)
+IS_EXYNOS_TYPE(exynos4412, 0x4412)
 IS_EXYNOS_TYPE(exynos5250, 0x5250)
 
 #define SAMSUNG_BASE(device, base)				\
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 4/4] EXYNOS4: Add ORIGEN_QUAD board support
  2012-12-12  7:54 [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board Jeong Hyeon Kim
                   ` (2 preceding siblings ...)
  2012-12-12  7:54 ` [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs Jeong Hyeon Kim
@ 2012-12-12  7:54 ` Jeong Hyeon Kim
  3 siblings, 0 replies; 11+ messages in thread
From: Jeong Hyeon Kim @ 2012-12-12  7:54 UTC (permalink / raw)
  To: u-boot

From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>

ORIGEN_QUAD board is based on Samsung's Exynos4412 SoC.

Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
---
 Makefile                                  |    2 +-
 board/samsung/origen_quad/Makefile        |   59 ++++++
 board/samsung/origen_quad/boot.c          |   72 +++++++
 board/samsung/origen_quad/clock.c         |  103 ++++++++++
 board/samsung/origen_quad/dmc.c           |  163 ++++++++++++++++
 board/samsung/origen_quad/lowlevel_init.S |  151 +++++++++++++++
 board/samsung/origen_quad/origen_quad.c   |  163 ++++++++++++++++
 board/samsung/origen_quad/setup.h         |  300 +++++++++++++++++++++++++++++
 boards.cfg                                |    1 +
 include/configs/origen_quad.h             |  179 +++++++++++++++++
 tools/Makefile                            |    2 +
 11 files changed, 1194 insertions(+), 1 deletion(-)
 create mode 100644 board/samsung/origen_quad/Makefile
 create mode 100644 board/samsung/origen_quad/boot.c
 create mode 100644 board/samsung/origen_quad/clock.c
 create mode 100644 board/samsung/origen_quad/dmc.c
 create mode 100644 board/samsung/origen_quad/lowlevel_init.S
 create mode 100644 board/samsung/origen_quad/origen_quad.c
 create mode 100644 board/samsung/origen_quad/setup.h
 create mode 100644 include/configs/origen_quad.h

diff --git a/Makefile b/Makefile
index 44db889..c69f740 100644
--- a/Makefile
+++ b/Makefile
@@ -823,7 +823,7 @@ clean:
 	       $(obj)tools/gdb/{astest,gdbcont,gdbsend}			  \
 	       $(obj)tools/gen_eth_addr    $(obj)tools/img2srec		  \
 	       $(obj)tools/mk{env,}image   $(obj)tools/mpc86x_clk	  \
-	       $(obj)tools/mk{smdk5250,}spl				  \
+	       $(obj)tools/mk{$(SOC),$(BOARD),}spl			  \
 	       $(obj)tools/mxsboot					  \
 	       $(obj)tools/ncb		   $(obj)tools/ubsha1		  \
 	       $(obj)tools/kernel-doc/docproc
diff --git a/board/samsung/origen_quad/Makefile b/board/samsung/origen_quad/Makefile
new file mode 100644
index 0000000..c24c921
--- /dev/null
+++ b/board/samsung/origen_quad/Makefile
@@ -0,0 +1,59 @@
+#
+# Copyright (C) 2012 Samsung Electronics
+#
+# Copyright (C) 2012 Insignal
+#
+# Makefile for the Insignal OrigenQUAD board (Exynos4x12)
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).o
+
+SOBJS	:= lowlevel_init.o
+
+COBJS	:= clock.o
+COBJS	+= dmc.o
+
+ifndef CONFIG_SPL_BUILD
+COBJS	+= origen_quad.o
+else
+COBJS	+= boot.o
+endif
+
+SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS) $(SOBJS))
+
+ALL	:= $(obj).depend $(LIB)
+
+all:	$(ALL)
+
+$(LIB):	$(OBJS)
+	$(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
\ No newline at end of file
diff --git a/board/samsung/origen_quad/boot.c b/board/samsung/origen_quad/boot.c
new file mode 100644
index 0000000..53bbe83
--- /dev/null
+++ b/board/samsung/origen_quad/boot.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Board initialize for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <config.h>
+#include "setup.h"
+
+#define IRAM_ADDRESS			0x02020000
+#define EXTERNAL_FUNC_ADDRESS		(IRAM_ADDRESS + 0x0030)
+#define IROM_COPY_FROM_SDMMC		(EXTERNAL_FUNC_ADDRESS + 0x0)
+
+typedef u32 (*copy_from_sdmmc_t)(u32 offset, u32 nblock, u32 dest);
+
+void copy_uboot_to_mem(void)
+{
+	copy_from_sdmmc_t from_sdmmc;
+
+	from_sdmmc = *(copy_from_sdmmc_t *)IROM_COPY_FROM_SDMMC;
+	from_sdmmc(BL2_BLK_OFFSET, BL2_BLK_COUNT, CONFIG_SYS_TEXT_BASE);
+}
+
+void board_init_spl(void)
+{
+	/* PS-Hold high */
+	writel(0x5300, EXYNOS4_POWER_BASE + 0x330c);
+}
+
+void board_init_f(unsigned long bootflag)
+{
+	__attribute__((noreturn)) void (*uboot)(void);
+
+	board_init_spl();
+	copy_uboot_to_mem();
+
+	/* Jump to U-Boot image */
+	uboot = (void *)CONFIG_SYS_TEXT_BASE;
+	(*uboot)();
+	/* Never returns Here */
+}
+
+/* Place Holders */
+void board_init_r(gd_t *id, ulong dest_addr)
+{
+	/* Function attribute is no-return */
+	/* This Function never executes */
+	while (1);
+}
+
+void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {}
diff --git a/board/samsung/origen_quad/clock.c b/board/samsung/origen_quad/clock.c
new file mode 100644
index 0000000..3ed503c
--- /dev/null
+++ b/board/samsung/origen_quad/clock.c
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Clock setup for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/clock.h>
+#include "setup.h"
+
+void clock_ctrl_init(void)
+{
+	struct exynos4412_clock *clk =
+			(struct exynos4412_clock *)EXYNOS4_CLOCK_BASE;
+
+	/* CLK_SRC_CPU */
+	writel(0x00000000, &clk->src_cpu);
+	sdelay(0x10000);
+
+	/* CLK_DIV_DMC */
+	writel(CLK_DIV_DMC0_VAL, &clk->div_dmc0);
+	writel(CLK_DIV_DMC1_VAL, &clk->div_dmc1);
+
+	/* CLK_SRC_TOP */
+	writel(CLK_SRC_TOP0_VAL, &clk->src_top0);
+	writel(CLK_SRC_TOP1_VAL, &clk->src_top1);
+	sdelay(0x10000);
+	writel(CLK_DIV_TOP_VAL, &clk->div_top);
+
+	/* LEFTBUS */
+	writel(CLK_SRC_LEFTBUS_VAL, &clk->src_leftbus);
+	sdelay(0x10000);
+	writel(CLK_DIV_LEFTBUS_VAL, &clk->div_leftbus);
+	/* RIGHTBUS */
+	writel(CLK_SRC_RIGHTBUS_VAL, &clk->src_rightbus);
+	sdelay(0x10000);
+	writel(CLK_DIV_RIGHTBUS_VAL, &clk->div_rightbus);
+
+	/* PLL locktime */
+	writel(APLL_LOCK_VAL, &clk->apll_lock);
+	writel(MPLL_LOCK_VAL, &clk->mpll_lock);
+	writel(EPLL_LOCK_VAL, &clk->epll_lock);
+	writel(VPLL_LOCK_VAL, &clk->vpll_lock);
+
+	/* CLK_DIV_CPU0/1 */
+	writel(CLK_DIV_CPU0_VAL, &clk->div_cpu0);
+	writel(CLK_DIV_CPU1_VAL, &clk->div_cpu1);
+
+	/* APLL */
+	writel(APLL_CON1_VAL, &clk->apll_con1);
+	writel(APLL_CON0_VAL, &clk->apll_con0);
+	/* MPLL */
+	writel(MPLL_CON1_VAL, &clk->mpll_con1);
+	writel(MPLL_CON0_VAL, &clk->mpll_con0);
+	/* EPLL */
+	writel(EPLL_CON2_VAL, &clk->epll_con2);
+	writel(EPLL_CON1_VAL, &clk->epll_con1);
+	writel(EPLL_CON0_VAL, &clk->epll_con0);
+	/* VPLL */
+	writel(VPLL_CON2_VAL, &clk->vpll_con2);
+	writel(VPLL_CON1_VAL, &clk->vpll_con1);
+	writel(VPLL_CON0_VAL, &clk->vpll_con0);
+	sdelay(0x40000);
+
+	writel(CLK_SRC_CPU_VAL, &clk->src_cpu);
+	writel(CLK_SRC_DMC_VAL, &clk->src_dmc);
+	writel(CLK_SRC_TOP0_VAL, &clk->src_top0);
+	writel(CLK_SRC_TOP1_VAL, &clk->src_top1);
+	sdelay(0x10000);
+
+	/* UART */
+	writel(CLK_SRC_PERIL0_VAL, &clk->src_peril0);
+	writel(CLK_DIV_PERIL0_VAL, &clk->div_peril0);
+
+	/* for IROM */
+	/* CLK_DIV_FSYS2 */
+	writel(0x0000000F, &clk->div_fsys2); /* MMC2 - SDMMC */
+	/* CLK_DIV_FSYS3 */
+	writel(0x00000100, &clk->div_fsys3); /* MMC4 - eMMC */
+}
+
diff --git a/board/samsung/origen_quad/dmc.c b/board/samsung/origen_quad/dmc.c
new file mode 100644
index 0000000..0bb1164
--- /dev/null
+++ b/board/samsung/origen_quad/dmc.c
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Memory setup for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <asm/io.h>
+#include <asm/arch/dmc.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cpu.h>
+#include "setup.h"
+
+void mem_ctrl_init(void)
+{
+	struct exynos4_clock *clk =
+			(struct exynos4_clock *)EXYNOS4_CLOCK_BASE;
+	struct exynos4_dmc *dmc0 =
+			(struct exynos4_dmc *)(EXYNOS4_MIU_BASE);
+	struct exynos4_dmc *dmc1 =
+			(struct exynos4_dmc *)(EXYNOS4_MIU_BASE + 0x10000);
+
+	/* Set DMC to 50MHz for IROM */
+	writel(0x00117713, &clk->div_dmc0);
+
+	/*
+	 * DMC 0
+	 */
+	writel(0xE3855403, &dmc0->phyzqcontrol);
+	writel(0x71101008, &dmc0->phycontrol0);
+	writel(0x7110100A, &dmc0->phycontrol0);
+	writel(0x00000084, &dmc0->phycontrol1);
+	writel(0x71101008, &dmc0->phycontrol0);
+	writel(0x0000008C, &dmc0->phycontrol1);
+	writel(0x00000084, &dmc0->phycontrol1);
+	writel(0x0000008C, &dmc0->phycontrol1);
+	writel(0x00000084, &dmc0->phycontrol1);
+	writel(0x0FFF30CA, &dmc0->concontrol);
+	writel(0x00202500, &dmc0->memcontrol);
+	writel(0x40C01323, &dmc0->memconfig0);
+	writel(0x80000007, &dmc0->ivcontrol);
+
+	writel(0x64000000, &dmc0->prechconfig);
+	writel(0x9C4000FF, &dmc0->phycontrol0);
+	writel(0x0000005D, &dmc0->timingref);
+
+#if (CONFIG_CLK_MPLL == 330)
+	writel(0x2b47654e, &dmc0->timingrow);
+	writel(0x35330306, &dmc0->timingdata);
+	writel(0x442f0365, &dmc0->timingpower);
+#else
+	writel(0x34498691, &dmc0->timingrow);
+	writel(0x36330306, &dmc0->timingdata);
+	writel(0x50380365, &dmc0->timingpower);
+#endif
+	sdelay(0x100000);
+
+	writel(0x07000000, &dmc0->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00071C00, &dmc0->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00010BFC, &dmc0->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00000608, &dmc0->directcmd);
+	writel(0x00000810, &dmc0->directcmd);
+	writel(0x00000C08, &dmc0->directcmd);
+
+	/*
+	 * DMC 1
+	 */
+	writel(0xE3855403, &dmc1->phyzqcontrol);
+	writel(0x71101008, &dmc1->phycontrol0);
+	writel(0x7110100A, &dmc1->phycontrol0);
+	writel(0x00000084, &dmc1->phycontrol1);
+	writel(0x71101008, &dmc1->phycontrol0);
+	writel(0x0000008C, &dmc1->phycontrol1);
+	writel(0x00000084, &dmc1->phycontrol1);
+	writel(0x0000008C, &dmc1->phycontrol1);
+	writel(0x00000084, &dmc1->phycontrol1);
+	writel(0x0FFF30CA, &dmc1->concontrol);
+	writel(0x00202500, &dmc1->memcontrol);
+	writel(0x40C01323, &dmc1->memconfig0);
+	writel(0x80000007, &dmc1->ivcontrol);
+	writel(0x64000000, &dmc1->prechconfig);
+	writel(0x9C4000FF, &dmc1->phycontrol0);
+	writel(0x0000005D, &dmc1->timingref);
+
+#if (CONFIG_CLK_MPLL == 330)
+	writel(0x2b47654e, &dmc1->timingrow);
+	writel(0x35330306, &dmc1->timingdata);
+	writel(0x442f0365, &dmc1->timingpower);
+#else
+	writel(0x34498691, &dmc1->timingrow);
+	writel(0x36330306, &dmc1->timingdata);
+	writel(0x50380365, &dmc1->timingpower);
+#endif
+	sdelay(0x100000);
+
+	writel(0x07000000, &dmc1->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00071C00, &dmc1->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00010BFC, &dmc1->directcmd);
+	sdelay(0x100000);
+
+	writel(0x00000608, &dmc1->directcmd);
+	writel(0x00000810, &dmc1->directcmd);
+	writel(0x00000C08, &dmc1->directcmd);
+}
+
+void mem_ctrl_init_2nd(void)
+{
+	struct exynos4_dmc *dmc0 =
+			(struct exynos4_dmc *)(EXYNOS4_MIU_BASE);
+	struct exynos4_dmc *dmc1 =
+			(struct exynos4_dmc *)(EXYNOS4_MIU_BASE + 0x10000);
+
+	writel(0x7F10100A, &dmc0->phycontrol0);
+	writel(0xE0000084, &dmc0->phycontrol1);
+	writel(0x7F10100B, &dmc0->phycontrol0);
+	sdelay(20000);
+	writel(0x0000008C, &dmc0->phycontrol1);
+	writel(0x00000084, &dmc0->phycontrol1);
+	sdelay(20000);
+
+	writel(0x7F10100A, &dmc1->phycontrol0);
+	writel(0xE0000084, &dmc1->phycontrol1);
+	writel(0x7F10100B, &dmc1->phycontrol0);
+	sdelay(20000);
+	writel(0x0000008C, &dmc1->phycontrol1);
+	writel(0x00000084, &dmc1->phycontrol1);
+	sdelay(20000);
+
+	writel(0x0FFF30FA, &dmc0->concontrol);
+	writel(0x0FFF30FA, &dmc1->concontrol);
+	writel(0x00202533, &dmc0->memcontrol);
+	writel(0x00202533, &dmc1->memcontrol);
+}
diff --git a/board/samsung/origen_quad/lowlevel_init.S b/board/samsung/origen_quad/lowlevel_init.S
new file mode 100644
index 0000000..fd30e11
--- /dev/null
+++ b/board/samsung/origen_quad/lowlevel_init.S
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Lowlevel initialize for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <version.h>
+#include <asm/arch/cpu.h>
+#include "setup.h"
+
+_TEXT_BASE:
+	.word	CONFIG_SYS_TEXT_BASE
+
+	.globl lowlevel_init
+lowlevel_init:
+
+	/* use iRAM stack in bl2 */
+	ldr	sp, =0x02060000
+	stmdb	r13!, {ip,lr}
+
+	/* check reset status */
+	ldr	r0, =(EXYNOS4_POWER_BASE + 0x800) /* INFORM1 */
+	ldr	r1, [r0]
+
+	/* AFTR wakeup reset */
+	ldr	r2, =S5P_CHECK_DIDLE
+	cmp	r1, r2
+	beq	exit_wakeup
+
+	/* LPA wakeup reset */
+	ldr	r2, =S5P_CHECK_LPA
+	cmp	r1, r2
+	beq	exit_wakeup
+
+	/* Sleep wakeup reset */
+	ldr	r2, =S5P_CHECK_SLEEP
+	cmp	r1, r2
+	beq	wakeup_reset
+
+	/*
+	 * If U-boot is already running in RAM, no need to relocate U-Boot.
+	 * Memory controller must be configured before relocating U-Boot
+	 * in ram.
+	 */
+	ldr	r0, =0x0ffffff		/* r0 <- Mask Bits*/
+	bic	r1, pc, r0		/* pc <- current addr of code */
+					/* r1 <- unmasked bits of pc */
+	ldr	r2, _TEXT_BASE		/* r2 <- original base addr in ram */
+	bic	r2, r2, r0		/* r2 <- unmasked bits of r2*/
+	cmp	r1, r2			/* compare r1, r2 */
+	beq	1f			/* r0 == r1 then skip sdram init */
+
+	/* DMC initialize */
+	bl	mem_ctrl_init
+
+	/* CMU initialize */
+	bl	clock_ctrl_init
+
+	/* DMC initialize */
+	bl	mem_ctrl_init_2nd
+
+1:
+	/* Trust zone initialize */
+	bl	tzpc_init
+	ldmia	r13!, {ip,pc}
+
+wakeup_reset:
+	bl	clock_ctrl_init
+	bl	mem_ctrl_init
+	bl	tzpc_init
+
+exit_wakeup:
+	/* Load return address and jump to kernel */
+	ldr	r0, =(EXYNOS4_POWER_BASE + 0x800) /* INFORM0 */
+
+	/* r1 = physical address of exynos4_cpu_resume function*/
+	ldr	r1, [r0]
+
+	/* Jump to kernel */
+	mov	pc, r1
+	nop
+	nop
+
+/*
+ * Setting TZPC[TrustZone Protection Controller]
+ */
+tzpc_init:
+
+	ldr	r0, =TZPC0_BASE
+	mov	r1, #0x0
+	str	r1, [r0]
+	mov	r1, #0xff
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	mov	r1, #0xbd
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	mov	r1, #0xff
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	ldr	r0, =TZPC1_BASE
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	ldr	r0, =TZPC2_BASE
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	ldr	r0, =TZPC3_BASE
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	ldr	r0, =TZPC4_BASE
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	ldr	r0, =TZPC5_BASE
+	str	r1, [r0, #TZPC_DECPROT0SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT1SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT2SET_OFFSET]
+	str	r1, [r0, #TZPC_DECPROT3SET_OFFSET]
+
+	mov	pc, lr
diff --git a/board/samsung/origen_quad/origen_quad.c b/board/samsung/origen_quad/origen_quad.c
new file mode 100644
index 0000000..583fab0
--- /dev/null
+++ b/board/samsung/origen_quad/origen_quad.c
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Board initialize for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <netdev.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mmc.h>
+#include <asm/arch/pinmux.h>
+#include <asm/arch/power.h>
+#include <asm/arch/clock.h>
+#include "setup.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_DISPLAY_BOARDINFO
+int checkboard(void)
+{
+	printf("\nBoard: " CONFIG_BOARDNAME "\n");
+	return 0;
+}
+#endif
+
+
+int board_init(void)
+{
+#ifdef CONFIG_EXYNOS_SPI
+	spi_init();
+#endif
+	return 0;
+}
+
+int dram_init(void)
+{
+	gd->ram_size	= get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE)
+			+ get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE)
+			+ get_ram_size((long *)PHYS_SDRAM_3, PHYS_SDRAM_3_SIZE)
+			+ get_ram_size((long *)PHYS_SDRAM_4, PHYS_SDRAM_4_SIZE);
+
+#ifdef CONFIG_RESERVED_DRAM
+	gd->ram_size -= CONFIG_RESERVED_DRAM;
+#endif
+
+	return 0;
+}
+
+void dram_init_banksize(void)
+{
+	gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+	gd->bd->bi_dram[0].size =
+			get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
+	gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
+	gd->bd->bi_dram[1].size =
+			get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE);
+	gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
+	gd->bd->bi_dram[2].size =
+			get_ram_size((long *)PHYS_SDRAM_3, PHYS_SDRAM_3_SIZE);
+	gd->bd->bi_dram[3].start = PHYS_SDRAM_4;
+	gd->bd->bi_dram[3].size =
+			get_ram_size((long *)PHYS_SDRAM_4, PHYS_SDRAM_4_SIZE);
+
+#ifdef CONFIG_RESERVED_DRAM
+	gd->bd->bi_dram[CONFIG_NR_DRAM_BANKS - 1].size -= CONFIG_RESERVED_DRAM;
+#endif
+}
+
+#ifdef CONFIG_GENERIC_MMC
+int board_emmc_init(void)
+{
+	int err;
+	err = exynos_pinmux_config(PERIPH_ID_SDMMC0, PINMUX_FLAG_8BIT_MODE);
+	if (err) {
+		debug("SDMMC0 not configured\n");
+		return err;
+	}
+	return s5p_mmc_init(0, 8);
+}
+
+int board_sdmmc_init(void)
+{
+	int err;
+	err = exynos_pinmux_config(PERIPH_ID_SDMMC2, PINMUX_FLAG_NONE);
+	if (err) {
+		debug("SDMMC2 not configured\n");
+		return err;
+	}
+	return s5p_mmc_init(2, 4);
+}
+
+int board_mmc_init(bd_t *bis)
+{
+	int err;
+
+	struct exynos4_power *power =
+			(struct exynos4_power *)samsung_get_base_power();
+
+	if ((power->om_stat & 0x1E) == 0x8) {
+		err = board_emmc_init();
+		err = board_sdmmc_init();
+	} else {
+		err = board_sdmmc_init();
+		err = board_emmc_init();
+	}
+
+	return 0;
+}
+#endif
+
+int board_eth_init(bd_t *bis)
+{
+#ifdef CONFIG_SMC911X
+	if (smc9115_pre_init())
+		return -1;
+	return smc911x_initialize(0, CONFIG_SMC911X_BASE);
+#endif
+	return 0;
+}
+
+static int board_uart_init(void)
+{
+	int err;
+	err = exynos_pinmux_config(PERIPH_ID_UART, PINMUX_FLAG_NONE);
+	if (err)
+		debug("UART%d not configured\n",
+				PERIPH_ID_UART - PERIPH_ID_UART0);
+	return err;
+}
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+	int err;
+	err = board_uart_init();
+	if (err)
+		debug("UART%d init failed\n",
+				PERIPH_ID_UART - PERIPH_ID_UART0);
+	return err;
+}
+#endif
diff --git a/board/samsung/origen_quad/setup.h b/board/samsung/origen_quad/setup.h
new file mode 100644
index 0000000..6df4341
--- /dev/null
+++ b/board/samsung/origen_quad/setup.h
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Configuration settings for the Insignal Origen QUAD board (Exynos4412)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __SETUP_ORIGEN_QUAD_H
+#define __SETUP_ORIGEN_QUAD_H
+
+#include <config.h>
+#include <version.h>
+#include <asm/arch/cpu.h>
+
+/* Set PLL */
+#define set_pll(mdiv, pdiv, sdiv)	(1<<31 | mdiv<<16 | pdiv<<8 | sdiv)
+
+/* APLL */
+#define	set_clk_div_cpu0(core2, apll, pclk_dbg, atb, periph, corem1, corem0, core) \
+					((core2 << 28) \
+					|(apll << 24) \
+					|(pclk_dbg << 20) \
+					|(atb << 16) \
+					|(periph <<12) \
+					|(corem1 << 8) \
+					|(corem0 << 4) \
+					|(core))
+#define set_clk_div_cpu1(cores, hpm, copy) \
+					((cores << 8) \
+					|(hpm << 4) \
+					|(copy))
+
+#if	(CONFIG_CLK_APLL == 800)
+#define APLL_CON0_VAL			set_pll(0x64, 0x3, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 1, 1, 3, 7, 5, 2, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(3, 0, 3)
+#elif	(CONFIG_CLK_APLL == 1000)
+#define APLL_CON0_VAL			set_pll(0x7D, 0x3, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 1, 1, 4, 7, 5, 2, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(3, 0, 4)
+#elif	(CONFIG_CLK_APLL == 1100)
+#define APLL_CON0_VAL			set_pll(0x113, 0x6, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 2, 1, 4, 7, 6, 3, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(4, 0, 4)
+#elif	(CONFIG_CLK_APLL == 1200)
+#define APLL_CON0_VAL			set_pll(0x96, 0x3, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 2, 1, 5, 7, 7, 3, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(4, 0, 4)
+#elif	(CONFIG_CLK_APLL == 1300)
+#define APLL_CON0_VAL			set_pll(0x145, 0x6, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 2, 1, 5, 7, 7, 3, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(5, 0, 5)
+#elif	(CONFIG_CLK_APLL == 1400)
+#define APLL_CON0_VAL			set_pll(0xAF, 0x3, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 2, 1, 6, 7, 7, 3, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(5, 0, 6)
+#elif	(CONFIG_CLK_APLL == 1500)
+#define APLL_CON0_VAL			set_pll(0xFA, 0x3, 0x0)
+#define CLK_DIV_CPU0_VAL		set_clk_div_cpu0(0, 2, 1, 6, 7, 7, 4, 0)
+#define CLK_DIV_CPU1_VAL		set_clk_div_cpu1(5, 0, 6)
+#else
+#error	Not supported APLL freq
+#endif
+
+#define APLL_CON1_VAL			(0x00803800)
+#define APLL_LOCK_VAL			(((APLL_CON0_VAL >> 8) & 0x3F) * 270)
+
+/* EPLL */
+#define EPLL_CON0_VAL			set_pll(0x40, 0x2, 0x3)
+#define EPLL_CON1_VAL			(0x66010000)
+#define EPLL_CON2_VAL			(0x00000080)
+#define EPLL_LOCK_VAL			(((EPLL_CON0_VAL >> 8) & 0x3F) * 3000)
+
+/* MPLL */
+#if	(CONFIG_CLK_MPLL == 200)
+#define MPLL_CON0_VAL			set_pll(0x64, 0x3, 0x1)
+#elif	(CONFIG_CLK_MPLL == 330)
+#define MPLL_CON0_VAL			set_pll(0x116, 0x5, 0x1)
+#elif	(CONFIG_CLK_MPLL == 400)
+#define MPLL_CON0_VAL			set_pll(0x64, 0x3, 0x0)
+#else
+#error	Not supported MPLL freq
+#endif
+#define MPLL_CON1_VAL			(0x00803800)
+#define MPLL_LOCK_VAL			(((MPLL_CON0_VAL >> 8) & 0x3F) * 270)
+
+/* VPLL */
+#define VPLL_CON0_VAL			set_pll(0x48, 0x2, 0x3)
+#define VPLL_CON1_VAL			(0x66010000)
+#define VPLL_CON2_VAL			(0x00000080)
+#define VPLL_LOCK_VAL			(((EPLL_CON0_VAL >> 8) & 0x3F) * 3000)
+
+/* CLK_SRC_CPU */
+#define MUX_MPLL_USER_SEL		1
+#define MUX_HPM_SEL			0
+#define MUX_CORE_SEL			0
+#define MUX_APLL_SEL			1
+#define CLK_SRC_CPU_VAL			((MUX_MPLL_USER_SEL << 24) \
+					|(MUX_HPM_SEL << 20) \
+					|(MUX_CORE_SEL << 16) \
+					|(MUX_APLL_SEL))
+
+/* CLK_SRC_TOP0	*/
+#define MUX_ONENAND_SEL			0x0 /* 0 = DOUT133, 1 = DOUT166 */
+#define MUX_ACLK_133_SEL		0x0 /* 0 = SCLKMPLL, 1 = SCLKAPLL */
+#define MUX_ACLK_160_SEL		0x0
+#define MUX_ACLK_100_SEL		0x0
+#define MUX_ACLK_200_SEL		0x0
+#define MUX_VPLL_SEL			0x1
+#define MUX_EPLL_SEL			0x1
+#define CLK_SRC_TOP0_VAL		((MUX_ONENAND_SEL << 28) \
+					|(MUX_ACLK_133_SEL << 24) \
+					|(MUX_ACLK_160_SEL << 20) \
+					|(MUX_ACLK_100_SEL << 16) \
+					|(MUX_ACLK_200_SEL << 12) \
+					|(MUX_VPLL_SEL << 8) \
+					|(MUX_EPLL_SEL << 4))
+
+/* CLK_SRC_TOP1	*/
+#define VPLLSRC_SEL			0x0 /* 0 = FINPLL, 1 = SCLKHDMI27M */
+#define CLK_SRC_TOP1_VAL		(0x01111000)
+
+/* CLK_DIV_TOP	*/
+#define ACLK_400_MCUISP_RATIO		0x1
+#define ACLK_266_GPS_RATIO		0x2
+#define ONENAND_RATIO			0x1
+#define ACLK_133_RATIO			0x5
+#define ACLK_160_RATIO			0x4
+#define ACLK_100_RATIO			0x7
+#define ACLK_200_RATIO			0x4
+#define CLK_DIV_TOP_VAL			((ACLK_400_MCUISP_RATIO << 24) \
+					|(ACLK_266_GPS_RATIO << 20) \
+					|(ONENAND_RATIO << 16) \
+					|(ACLK_133_RATIO << 12) \
+					|(ACLK_160_RATIO << 8) \
+					|(ACLK_100_RATIO << 4) \
+					|(ACLK_200_RATIO))
+
+/* CLK_SRC_LEFTBUS */
+#define CLK_SRC_LEFTBUS_VAL		(0x10)
+
+/* CLK_DIV_LEFRBUS */
+#define GPL_RATIO			0x1
+#define GDL_RATIO			0x3
+#define CLK_DIV_LEFTBUS_VAL		((GPL_RATIO << 4)|(GDL_RATIO))
+
+/* CLK_SRC_RIGHTBUS */
+#define CLK_SRC_RIGHTBUS_VAL		(0x10)
+
+/* CLK_DIV_RIGHTBUS */
+#define GPR_RATIO			0x1
+#define GDR_RATIO			0x3
+#define CLK_DIV_RIGHTBUS_VAL		((GPR_RATIO << 4)|(GDR_RATIO))
+
+/* CLK_SRC_DMC	*/
+#define MUX_PWI_SEL			0x1
+#define MUX_CORE_TIMERS_SEL		0x1
+#define MUX_DPHY_SEL			0x0
+#define MUX_DMC_BUS_SEL			0x0
+#define CLK_SRC_DMC_VAL			((MUX_PWI_SEL << 16) \
+					|(MUX_CORE_TIMERS_SEL << 12) \
+					|(MUX_DPHY_SEL << 8) \
+					|(MUX_DMC_BUS_SEL << 4))
+
+/* CLK_DIV_DMC0	*/
+#define CORE_TIMERS_RATIO		0x0
+#define COPY2_RATIO			0x0
+#define DMCP_RATIO			0x1
+#define DMCD_RATIO			0x1
+#if	(CONFIG_CLK_MPLL == 200)
+#define DMC_RATIO			0x3
+#else
+#define DMC_RATIO			0x1
+#endif
+#define DPHY_RATIO			0x1
+#define ACP_PCLK_RATIO			0x1
+#define ACP_RATIO			0x3
+
+#define CLK_DIV_DMC0_VAL		((CORE_TIMERS_RATIO << 28) \
+					|(COPY2_RATIO << 24) \
+					|(DMCP_RATIO << 20) \
+					|(DMCD_RATIO << 16) \
+					|(DMC_RATIO << 12) \
+					|(DPHY_RATIO << 8) \
+					|(ACP_PCLK_RATIO << 4) \
+					|(ACP_RATIO))
+
+#define CLK_DIV_DMC1_VAL		(0x07071713)
+
+/* CLK_SRC_PERIL0 */
+#define PWM_SEL				0
+#define UART4_SEL			6
+#define UART3_SEL			6
+#define UART2_SEL			6
+#define UART1_SEL			6
+#define UART0_SEL			6
+#define CLK_SRC_PERIL0_VAL		((PWM_SEL << 24) \
+					|(UART4_SEL << 16) \
+					|(UART3_SEL << 12) \
+					|(UART2_SEL<< 8) \
+					|(UART1_SEL << 4) \
+					|(UART0_SEL))
+
+/* CLK_DIV_PERIL0	*/
+#define UART4_RATIO			7
+#define UART3_RATIO			7
+#define UART2_RATIO			7
+#define UART1_RATIO			7
+#define UART0_RATIO			7
+#define CLK_DIV_PERIL0_VAL		((UART4_RATIO << 16) \
+					|(UART3_RATIO << 12) \
+					|(UART2_RATIO << 8) \
+					|(UART1_RATIO << 4) \
+					|(UART0_RATIO))
+
+/* Power Down Modes */
+#define S5P_CHECK_SLEEP			0x00000BAD
+#define S5P_CHECK_DIDLE			0xBAD00000
+#define S5P_CHECK_LPA			0xABAD0000
+
+/* TZPC */
+#define	TZPC_BASE			0x10110000
+#define	TZPC_OFFSET			0x10000
+#define TZPC0_BASE			(TZPC_BASE)
+#define TZPC1_BASE			(TZPC0_BASE + TZPC_OFFSET)
+#define TZPC2_BASE			(TZPC1_BASE + TZPC_OFFSET)
+#define TZPC3_BASE			(TZPC2_BASE + TZPC_OFFSET)
+#define TZPC4_BASE			(TZPC3_BASE + TZPC_OFFSET)
+#define TZPC5_BASE			(TZPC4_BASE + TZPC_OFFSET)
+#define TZPC_DECPROT0SET_OFFSET		0x804
+#define TZPC_DECPROT1SET_OFFSET		0x810
+#define TZPC_DECPROT2SET_OFFSET		0x81C
+#define TZPC_DECPROT3SET_OFFSET		0x828
+
+/* IMAGE SIZE (BYTE) */
+#define	MBR_BYTE_COUNT			CONFIG_MBR_SIZE
+#define	SBL_BYTE_COUNT			CONFIG_SBL_SIZE
+#define	BL1_BYTE_COUNT			CONFIG_BL1_SIZE
+#define	BL2_BYTE_COUNT			CONFIG_BL2_SIZE
+#define	ENV_BYTE_COUNT			CONFIG_ENV_SIZE
+
+/* IMAGE OFFSET (BYTE) */
+#define	MBR_BYTE_OFFSET			(0)
+#define	SBL_BYTE_OFFSET			(MBR_BYTE_OFFSET + MBR_BYTE_COUNT)
+#define	BL1_BYTE_OFFSET			(SBL_BYTE_OFFSET + SBL_BYTE_COUNT)
+#define	BL2_BYTE_OFFSET			(BL1_BYTE_OFFSET + BL1_BYTE_COUNT)
+#define	ENV_BYTE_OFFSET			(Bl2_BYTE_OFFSET + BL2_BYTE_COUNT)
+
+#define SDMMC_BLK_SIZE			(512)
+
+/* IMAGE SIZE (BLOCK) */
+#define	SBL_BLK_COUNT			(SBL_BYTE_COUNT / SDMMC_BLK_SIZE)
+#define	BL1_BLK_COUNT			(BL1_BYTE_COUNT / SDMMC_BLK_SIZE)
+#define	BL2_BLK_COUNT			(BL2_BYTE_COUNT / SDMMC_BLK_SIZE)
+#define	ENV_BLK_COUNT			(ENV_BYTE_COUNT / SDMMC_BLK_SIZE)
+
+/* IMAGE OFFSET (BLOCK) */
+#define	SBL_BLK_OFFSET			(SBL_BYTE_OFFSET / SDMMC_BLK_SIZE)
+#define	BL1_BLK_OFFSET			(BL1_BYTE_OFFSET / SDMMC_BLK_SIZE)
+#define	BL2_BLK_OFFSET			(BL2_BYTE_OFFSET / SDMMC_BLK_SIZE)
+#define	ENV_BLK_OFFSET			(ENV_BYTE_OFFSET / SDMMC_BLK_SIZE)
+
+/* UART */
+#if	defined(CONFIG_SERIAL0)
+#define PERIPH_ID_UART			PERIPH_ID_UART0
+#elif	defined(CONFIG_SERIAL1)
+#define PERIPH_ID_UART			PERIPH_ID_UART1
+#elif	defined(CONFIG_SERIAL2)
+#define PERIPH_ID_UART			PERIPH_ID_UART2
+#elif	defined(CONFIG_SERIAL3)
+#define PERIPH_ID_UART			PERIPH_ID_UART3
+#endif
+
+#ifndef __ASSEMBLY__
+void sdelay(unsigned long);
+void clock_ctrl_init(void);
+void mem_ctrl_init(void);
+void tzpc_init(void);
+#endif
+
+#endif /* __SETUP_ORIGEN_QUAD_H */
diff --git a/boards.cfg b/boards.cfg
index 388e4a4..66b9ee3 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -284,6 +284,7 @@ s5pc210_universal            arm         armv7       universal_c210      samsung
 smdk5250		     arm	 armv7	     smdk5250		 samsung	exynos
 smdkv310		     arm	 armv7	     smdkv310		 samsung	exynos
 trats                        arm         armv7       trats               samsung        exynos
+origen_quad                  arm         armv7       origen_quad         samsung        exynos
 harmony                      arm         armv7:arm720t harmony           nvidia         tegra20
 seaboard                     arm         armv7:arm720t seaboard          nvidia         tegra20
 ventana                      arm         armv7:arm720t ventana           nvidia         tegra20
diff --git a/include/configs/origen_quad.h b/include/configs/origen_quad.h
new file mode 100644
index 0000000..d65b470
--- /dev/null
+++ b/include/configs/origen_quad.h
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics
+ *
+ * Copyright (C) 2012 Insignal
+ *
+ * Configuration settings for the Insignal OrigenQUAD board (Exynos4x12)
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_ORIGEN_QUAD_H
+#define __CONFIG_ORIGEN_QUAD_H
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_SAMSUNG			/* in a SAMSUNG core */
+#define CONFIG_S5P			/* S5P Family */
+#define CONFIG_EXYNOS4			/* which is in a Exynos4 series */
+#define CONFIG_EXYNOS4412		/* which is in a Exynos4412 */
+#define CONFIG_ORIGEN_QUAD		/* which is in a ORIGEN QUAD */
+#define CONFIG_BOARDNAME		"Origen"
+#define CONFIG_IDENT_STRING		" for Insignal Origen"
+#define CONFIG_MACH_TYPE		3455
+
+#include <asm/arch/cpu.h>		/* get chip and board defs */
+
+/*
+ * Clock / PLL
+ */
+#define CONFIG_SYS_CLK_FREQ		24000000 /* 24MHz input clock */
+#define CONFIG_CLK_APLL			1000
+#define CONFIG_CLK_MPLL			400
+#define CONFIG_SYS_HZ			1000
+
+#define CONFIG_PWM
+
+/*
+ * Memory
+ */
+/* Default address */
+#define CONFIG_SYS_SDRAM_BASE		0x40000000
+#define CONFIG_SYS_TEXT_BASE		0x43E00000
+#define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_LOAD_ADDR - GENERATED_GBL_DATA_SIZE)
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (1 << 20UL))
+/* Cache */
+#define CONFIG_L2_OFF			1
+#define CONFIG_SYS_DCACHE_OFF		/* Keep L2 Cache Disabled */
+/* DRAM */
+#define CONFIG_NR_DRAM_BANKS		4 /* 256 MB * 4 = 1 GB */
+#define SDRAM_BANK_SIZE			(256UL << 20UL)	/* 256 MB */
+#define PHYS_SDRAM_1			CONFIG_SYS_SDRAM_BASE
+#define PHYS_SDRAM_1_SIZE		SDRAM_BANK_SIZE
+#define PHYS_SDRAM_2			(PHYS_SDRAM_1 + PHYS_SDRAM_1_SIZE)
+#define PHYS_SDRAM_2_SIZE		SDRAM_BANK_SIZE
+#define PHYS_SDRAM_3			(PHYS_SDRAM_2 + PHYS_SDRAM_2_SIZE)
+#define PHYS_SDRAM_3_SIZE		SDRAM_BANK_SIZE
+#define PHYS_SDRAM_4			(PHYS_SDRAM_3 + PHYS_SDRAM_3_SIZE)
+#define PHYS_SDRAM_4_SIZE		SDRAM_BANK_SIZE
+/* Reserved */
+#define CONFIG_RESERVED_DRAM		0x100000
+/* Mem test */
+#define CONFIG_CMD_MEMORY
+#define CONFIG_SYS_MEMTEST_START	CONFIG_SYS_SDRAM_BASE
+#define CONFIG_SYS_MEMTEST_END		(PHYS_SDRAM_4 + PHYS_SDRAM_4_SIZE - (8UL << 20UL))
+
+/*
+ * Serial
+ */
+#define CONFIG_SERIAL2			2 /* use SERIAL2 in 0~3 */
+#define CONFIG_SERIAL_MULTI		1
+#define CONFIG_BAUDRATE			115200
+
+/*
+ * SD/MMC
+ */
+#define CONFIG_GENERIC_MMC
+#define CONFIG_MMC
+#define CONFIG_SDHCI
+#define CONFIG_S5P_SDHCI
+#define CONFIG_CMD_MMC
+
+/*
+ * File System
+ */
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT2
+
+/*
+ * Flash
+ */
+#define CONFIG_SYS_NO_FLASH
+
+/*
+ * Image map on sdmmc/emmc
+ */
+#define CONFIG_SECURE_BL1_ONLY
+#define CONFIG_SPL
+#define	CONFIG_MBR_SIZE			(512)
+#define	CONFIG_SBL_SIZE			(8UL << 10)	/* 8KB */
+#define	CONFIG_BL1_SIZE			(16UL << 10) /* 16KB */
+#define	CONFIG_BL2_SIZE			(512UL << 10) /* 512KB */
+
+/*
+ * Console
+ */
+#define CONFIG_SYS_PROMPT		CONFIG_BOARDNAME " # "
+/* Console I/O Buffer Size */
+#define CONFIG_SYS_CBSIZE		256
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE		384
+/* max number of command args */
+#define CONFIG_SYS_MAXARGS		16
+#define CONFIG_SYS_HUSH_PARSER		/* use "hush" command parser	*/
+
+/*
+ * Commands
+ */
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_SYS_LONGHELP		/* undef to save memory */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+/*
+ * Environment
+ */
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV		0
+#define CONFIG_ENV_OFFSET		(CONFIG_MBR_SIZE \
+					+CONFIG_SBL_SIZE \
+					+CONFIG_BL1_SIZE \
+					+CONFIG_BL2_SIZE)
+#define CONFIG_ENV_SIZE			(16 << 10) /* 16 KB */
+#define CONFIG_ENV_OVERWRITE
+/* Default */
+#define CONFIG_BOOTCOMMAND		"fatload mmc 0 40008000 uImage; bootm 40008000"
+
+/*
+ * Misc
+ */
+/* Initialize */
+#define CONFIG_ARCH_CPU_INIT		1
+#define CONFIG_BOARD_EARLY_INIT_F	1
+/* display information */
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+/* Delay */
+#define CONFIG_BOOTDELAY		3
+#define CONFIG_ZERO_BOOTDELAY_CHECK
+/* TAGS */
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_INITRD_TAG
+/* Enable devicetree support */
+#define CONFIG_OF_LIBFDT
+/* Boot Argument Buffer Size */
+#define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE
+
+#endif /* __CONFIG_ORIGEN_QUAD_H */
diff --git a/tools/Makefile b/tools/Makefile
index 686840a..3da314c 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -68,6 +68,7 @@ BIN_FILES-$(CONFIG_CMD_LOADS) += img2srec$(SFX)
 BIN_FILES-$(CONFIG_XWAY_SWAP_BYTES) += xway-swap-bytes$(SFX)
 BIN_FILES-y += mkenvimage$(SFX)
 BIN_FILES-y += mkimage$(SFX)
+BIN_FILES-$(CONFIG_EXYNOS4) += mk$(BOARD)spl$(SFX)
 BIN_FILES-$(CONFIG_SMDK5250) += mksmdk5250spl$(SFX)
 BIN_FILES-$(CONFIG_MX28) += mxsboot$(SFX)
 BIN_FILES-$(CONFIG_NETCONSOLE) += ncb$(SFX)
@@ -97,6 +98,7 @@ NOPED_OBJ_FILES-y += imximage.o
 NOPED_OBJ_FILES-y += omapimage.o
 NOPED_OBJ_FILES-y += mkenvimage.o
 NOPED_OBJ_FILES-y += mkimage.o
+OBJ_FILES-$(CONFIG_EXYNOS4) += mkexynosspl.o
 OBJ_FILES-$(CONFIG_SMDK5250) += mkexynosspl.o
 OBJ_FILES-$(CONFIG_MX28) += mxsboot.o
 OBJ_FILES-$(CONFIG_NETCONSOLE) += ncb.o
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C
  2012-12-12  7:54 ` [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C Jeong Hyeon Kim
@ 2012-12-12  8:16   ` Heiko Schocher
  2012-12-12 10:19     ` 김정현
  0 siblings, 1 reply; 11+ messages in thread
From: Heiko Schocher @ 2012-12-12  8:16 UTC (permalink / raw)
  To: u-boot

Hello Jeong,

On 12.12.2012 08:54, Jeong Hyeon Kim wrote:
> From: Jeong-Hyeon Kim<jhkim@insignal.co.kr>
>
> This patch adds pinmux support for I2C channels
>
> Signed-off-by: Jeong-Hyeon Kim<jhkim@insignal.co.kr>
> ---
>   arch/arm/cpu/armv7/exynos/pinmux.c |   51 ++++++++++++++++++++++++++++++++++++
>   1 file changed, 51 insertions(+)

similiar patch is applied to u-boot-i2c, see:

http://git.denx.de/?p=u-boot/u-boot-i2c.git;a=commitdiff;h=4d4628dcaa51b501bec148a9c5c55df3920350dc

and pull request is pending. Can you check, if the above patch fits
your needs?

Thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C
  2012-12-12  8:16   ` Heiko Schocher
@ 2012-12-12 10:19     ` 김정현
  0 siblings, 0 replies; 11+ messages in thread
From: 김정현 @ 2012-12-12 10:19 UTC (permalink / raw)
  To: u-boot

Dear Heiko,

Thanks for your concern.

I didn't know the patch.
It can be replaced my patch.

Thank you,
JHKIM



2012? 12? 12? 17:16, Heiko Schocher ? ?:
> Hello Jeong,
>
> On 12.12.2012 08:54, Jeong Hyeon Kim wrote:
>> From: Jeong-Hyeon Kim<jhkim@insignal.co.kr>
>>
>> This patch adds pinmux support for I2C channels
>>
>> Signed-off-by: Jeong-Hyeon Kim<jhkim@insignal.co.kr>
>> ---
>> arch/arm/cpu/armv7/exynos/pinmux.c | 51
>> ++++++++++++++++++++++++++++++++++++
>> 1 file changed, 51 insertions(+)
>
> similiar patch is applied to u-boot-i2c, see:
>
> http://git.denx.de/?p=u-boot/u-boot-i2c.git;a=commitdiff;h=4d4628dcaa51b501bec148a9c5c55df3920350dc
>
>
> and pull request is pending. Can you check, if the above patch fits
> your needs?
>
> Thanks!
>
> bye,
> Heiko

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
  2012-12-12  7:54 ` [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs Jeong Hyeon Kim
@ 2012-12-13  6:19   ` Chander Kashyap
  2012-12-13  6:19     ` Chander Kashyap
  0 siblings, 1 reply; 11+ messages in thread
From: Chander Kashyap @ 2012-12-13  6:19 UTC (permalink / raw)
  To: u-boot

Dear Kim,

On 12 December 2012 13:24, Jeong Hyeon Kim <snow.jhkim@gmail.com> wrote:
> From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>
> This patch adds the support for Exynos4212/4412.
>
> Samsung's ARM Cortex-A9 based Exynos4x12 SoCs and Exynos4210 are similar.
> Address of a few registers are different in CMU part like MPLL.
>
> Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
> ---
>  arch/arm/cpu/armv7/exynos/clock.c        |    7 +-
>  arch/arm/include/asm/arch-exynos/clock.h |  240 ++++++++++++++++++++++++++++++
>  arch/arm/include/asm/arch-exynos/cpu.h   |    1 +
>  3 files changed, 247 insertions(+), 1 deletion(-)
>
As i discussed with you these changes has been already posted.
http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/148856
Kindly use them and resend yours patches.
> diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c
> index fe61f88..47e2e6c 100644
> --- a/arch/arm/cpu/armv7/exynos/clock.c
> +++ b/arch/arm/cpu/armv7/exynos/clock.c
Please have a look patch at the link.
[PATCH] EXYNOS: EXYNOS4X12: extract Exynos4x12 IPs clock frequency
> @@ -94,7 +94,12 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
>                 r = readl(&clk->apll_con0);
>                 break;
>         case MPLL:
> -               r = readl(&clk->mpll_con0);
> +               if (proid_is_exynos4412()) {
> +                       struct exynos4412_clock *clk4412 =
> +                               (struct exynos4412_clock *)samsung_get_base_clock();
> +                       r = readl(&clk4412->mpll_con0);
> +               } else
> +                       r = readl(&clk->mpll_con0);
>                 break;
>         case EPLL:
>                 r = readl(&clk->epll_con0);
> diff --git a/arch/arm/include/asm/arch-exynos/clock.h b/arch/arm/include/asm/arch-exynos/clock.h
> index ff6781a..5d4ed5c 100644
> --- a/arch/arm/include/asm/arch-exynos/clock.h
> +++ b/arch/arm/include/asm/arch-exynos/clock.h
> @@ -251,6 +251,246 @@ struct exynos4_clock {
>         unsigned int    div_iem_l1;
>  };
>
> +struct exynos4412_clock {
> +       unsigned char   res1[0x4200];
> +       unsigned int    src_leftbus;
> +       unsigned char   res2[0x1fc];
> +       unsigned int    mux_stat_leftbus;
> +       unsigned char   res3[0xfc];
> +       unsigned int    div_leftbus;
> +       unsigned char   res4[0xfc];
> +       unsigned int    div_stat_leftbus;
> +       unsigned char   res5[0x1fc];
> +       unsigned int    gate_ip_leftbus;
> +       unsigned char   res6[0x12c];
> +       unsigned int    gate_ip_image;
> +       unsigned char   res7[0xcc];
> +       unsigned int    clkout_cmu_leftbus;
> +       unsigned int    clkout_cmu_leftbus_div_stat;
> +       unsigned char   res8[0x37f8];
> +       unsigned int    src_rightbus;
> +       unsigned char   res9[0x1fc];
> +       unsigned int    mux_stat_rightbus;
> +       unsigned char   res10[0xfc];
> +       unsigned int    div_rightbus;
> +       unsigned char   res11[0xfc];
> +       unsigned int    div_stat_rightbus;
> +       unsigned char   res12[0x1fc];
> +       unsigned int    gate_ip_rightbus;
> +       unsigned char   res13[0x15c];
> +       unsigned int    gate_ip_perir;
> +       unsigned char   res14[0x9c];
> +       unsigned int    clkout_cmu_rightbus;
> +       unsigned int    clkout_cmu_rightbus_div_stat;
> +       unsigned char   res15[0x3608];
> +       unsigned int    epll_lock;
> +       unsigned char   res16[0xc];
> +       unsigned int    vpll_lock;
> +       unsigned char   res17[0xec];
> +       unsigned int    epll_con0;
> +       unsigned int    epll_con1;
> +       unsigned int    epll_con2;
> +       unsigned char   res18[0x4];
> +       unsigned int    vpll_con0;
> +       unsigned int    vpll_con1;
> +       unsigned int    vpll_con2;
> +       unsigned char   res19[0xe4];
> +       unsigned int    src_top0;
> +       unsigned int    src_top1;
> +       unsigned char   res20[0x8];
> +       unsigned int    src_cam0;
> +       unsigned int    src_tv;
> +       unsigned int    src_mfc;
> +       unsigned int    src_g3d;
> +       unsigned char   res21[0x4];
> +       unsigned int    src_lcd0;
> +       unsigned int    src_isp;
> +       unsigned int    src_maudio;
> +       unsigned int    src_fsys;
> +       unsigned char   res22[0xc];
> +       unsigned int    src_peril0;
> +       unsigned int    src_peril1;
> +       unsigned int    src_cam1;
> +       unsigned char   res23[0xc4];
> +       unsigned int    src_mask_cam0;
> +       unsigned int    src_mask_tv;
> +       unsigned char   res24[0xc];
> +       unsigned int    src_mask_lcd;
> +       unsigned int    src_mask_isp;
> +       unsigned int    src_mask_maudio;
> +       unsigned int    src_mask_fsys;
> +       unsigned char   res25[0xc];
> +       unsigned int    src_mask_peril0;
> +       unsigned int    src_mask_peril1;
> +       unsigned char   res26[0xb8];
> +       unsigned int    mux_stat_top;
> +       unsigned int    mux_stat_top1;
> +       unsigned char   res27[0x10];
> +       unsigned int    mux_stat_mfc;
> +       unsigned int    mux_stat_g3d;
> +       unsigned char   res28[0x28];
> +       unsigned int    mux_stat_cam1;
> +       unsigned char   res29[0xb4];
> +       unsigned int    div_top;
> +       unsigned char   res30[0xc];
> +       unsigned int    div_cam0;
> +       unsigned int    div_tv;
> +       unsigned int    div_mfc;
> +       unsigned int    div_g3d;
> +       unsigned char   res31[0x4];
> +       unsigned int    div_lcd;
> +       unsigned int    div_isp;
> +       unsigned int    div_maudio;
> +       unsigned int    div_fsys0;
> +       unsigned int    div_fsys1;
> +       unsigned int    div_fsys2;
> +       unsigned int    div_fsys3;
> +       unsigned int    div_peril0;
> +       unsigned int    div_peril1;
> +       unsigned int    div_peril2;
> +       unsigned int    div_peril3;
> +       unsigned int    div_peril4;
> +       unsigned int    div_peril5;
> +       unsigned int    div_cam1;
> +       unsigned char   res32[0x14];
> +       unsigned int    div2_ratio;
> +       unsigned char   res33[0x8c];
> +       unsigned int    div_stat_top;
> +       unsigned char   res34[0xc];
> +       unsigned int    div_stat_cam0;
> +       unsigned int    div_stat_tv;
> +       unsigned int    div_stat_mfc;
> +       unsigned int    div_stat_g3d;
> +       unsigned char   res35[0x4];
> +       unsigned int    div_stat_lcd;
> +       unsigned int    div_stat_isp;
> +       unsigned int    div_stat_maudio;
> +       unsigned int    div_stat_fsys0;
> +       unsigned int    div_stat_fsys1;
> +       unsigned int    div_stat_fsys2;
> +       unsigned int    div_stat_fsys3;
> +       unsigned int    div_stat_peril0;
> +       unsigned int    div_stat_peril1;
> +       unsigned int    div_stat_peril2;
> +       unsigned int    div_stat_peril3;
> +       unsigned int    div_stat_peril4;
> +       unsigned int    div_stat_peril5;
> +       unsigned int    div_stat_cam1;
> +       unsigned char   res36[0x14];
> +       unsigned int    div2_stat;
> +       unsigned char   res37[0xc0];
> +       unsigned int    gate_bus_fsys1;
> +       unsigned char   res38[0x1d8];
> +       unsigned int    gate_ip_cam;
> +       unsigned int    gate_ip_tv;
> +       unsigned int    gate_ip_mfc;
> +       unsigned int    gate_ip_g3d;
> +       unsigned char   res39[0x4];
> +       unsigned int    gate_ip_lcd;
> +       unsigned int    gate_ip_isp;
> +       unsigned char   res40[0x4];
> +       unsigned int    gate_ip_fsys;
> +       unsigned char   res41[0x8];
> +       unsigned int    gate_ip_gps;
> +       unsigned int    gate_ip_peril;
> +       unsigned char   res42[0x1c];
> +       unsigned int    gate_block;
> +       unsigned char   res43[0x8c];
> +       unsigned int    clkout_cmu_top;
> +       unsigned int    clkout_cmu_top_div_stat;
> +       unsigned char   res44[0x3600];
> +       unsigned int    mpll_lock;
> +       unsigned char   res45[0xfc];
> +       unsigned int    mpll_con0;
> +       unsigned int    mpll_con1;
> +       unsigned char   res46[0xf0];
> +       unsigned int    src_dmc;
> +       unsigned char   res47[0xfc];
> +       unsigned int    src_mask_dmc;
> +       unsigned char   res48[0xfc];
> +       unsigned int    mux_stat_dmc;
> +       unsigned char   res49[0xfc];
> +       unsigned int    div_dmc0;
> +       unsigned int    div_dmc1;
> +       unsigned char   res50[0xf8];
> +       unsigned int    div_stat_dmc0;
> +       unsigned int    div_stat_dmc1;
> +       unsigned char   res51[0x2f8];
> +       unsigned int    gate_ip_dmc;
> +       unsigned int    gate_ip_dmc1;
> +       unsigned char   res52[0xf8];
> +       unsigned int    clkout_cmu_dmc;
> +       unsigned int    clkout_cmu_dmc_div_stat;
> +       unsigned char   res53[0x5f8];
> +       unsigned int    dcgidx_map0;
> +       unsigned int    dcgidx_map1;
> +       unsigned int    dcgidx_map2;
> +       unsigned char   res54[0x14];
> +       unsigned int    dcgperf_map0;
> +       unsigned int    dcgperf_map1;
> +       unsigned char   res55[0x18];
> +       unsigned int    dvcidx_map;
> +       unsigned char   res56[0x1c];
> +       unsigned int    freq_cpu;
> +       unsigned int    freq_dpm;
> +       unsigned char   res57[0x18];
> +       unsigned int    dvsemclk_en;
> +       unsigned int    maxperf;
> +       unsigned char   res58[0xc];
> +       unsigned int    dmc_puause_ctrl;
> +       unsigned int    ddrphy_lock_ctrl;
> +       unsigned int    c2c_state;
> +       unsigned char   res59[0x2f60];
> +       unsigned int    apll_lock;
> +       unsigned char   res60[0xfc];
> +       unsigned int    apll_con0;
> +       unsigned int    apll_con1;
> +       unsigned char   res61[0xf8];
> +       unsigned int    src_cpu;
> +       unsigned char   res62[0x1fc];
> +       unsigned int    mux_stat_cpu;
> +       unsigned char   res63[0xfc];
> +       unsigned int    div_cpu0;
> +       unsigned int    div_cpu1;
> +       unsigned char   res64[0xf8];
> +       unsigned int    div_stat_cpu0;
> +       unsigned int    div_stat_cpu1;
> +       unsigned char   res65[0x2f8];
> +       unsigned int    gate_ip_cpu;
> +       unsigned char   res66[0xfc];
> +       unsigned int    clkout_cmu_cpu;
> +       unsigned int    clkout_cmu_cpu_div_stat;
> +       unsigned char   res67[0x5f8];
> +       unsigned int    armclk_stopctrl;
> +       unsigned int    atclk_stopctrl;
> +       unsigned char   res68[0x18];
> +       unsigned int    pwr_ctrl;
> +       unsigned int    pwr_ctrl2;
> +       unsigned char   res69[0x3d8];
> +       unsigned int    l2_status;
> +       unsigned char   res70[0xc];
> +       unsigned int    cpu_status;
> +       unsigned char   res71[0xc];
> +       unsigned int    ptm_status;
> +       unsigned char   res72[0x2edc];
> +       unsigned int    clk_div_isp0;
> +       unsigned int    clk_div_isp1;
> +       unsigned char   res73[0xf8];
> +       unsigned int    clk_div_stat_isp0;
> +       unsigned int    clk_div_stat_isp1;
> +       unsigned char   res74[0x3f8];
> +       unsigned int    gate_ip_isp0;
> +       unsigned int    gate_ip_isp1;
> +       unsigned char   res75[0x1f8];
> +       unsigned int    clkout_cmu_isp;
> +       unsigned int    clkout_cmu_isp_stat;
> +       unsigned char   res76[0xf8];
> +       unsigned int    clkout_cmu_spare0;
> +       unsigned int    clkout_cmu_spare1;
> +       unsigned int    clkout_cmu_spare2;
> +       unsigned int    clkout_cmu_spare3;
> +};
> +
>  struct exynos5_clock {
>         unsigned int    apll_lock;
>         unsigned char   res1[0xfc];
> diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h
> index d1b2ea8..7ee5366 100644
> --- a/arch/arm/include/asm/arch-exynos/cpu.h
> +++ b/arch/arm/include/asm/arch-exynos/cpu.h
> @@ -152,6 +152,7 @@ static inline int proid_is_##type(void)                     \
>  }
>
>  IS_EXYNOS_TYPE(exynos4210, 0x4210)
> +IS_EXYNOS_TYPE(exynos4412, 0x4412)
>  IS_EXYNOS_TYPE(exynos5250, 0x5250)
>
>  #define SAMSUNG_BASE(device, base)                             \
> --
> 1.7.9.5
>



-- 
with warm regards,
Chander Kashyap

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
  2012-12-13  6:19   ` Chander Kashyap
@ 2012-12-13  6:19     ` Chander Kashyap
  2012-12-13  8:21       ` 김정현
  0 siblings, 1 reply; 11+ messages in thread
From: Chander Kashyap @ 2012-12-13  6:19 UTC (permalink / raw)
  To: u-boot

On 13 December 2012 11:49, Chander Kashyap <chander.kashyap@linaro.org> wrote:
> Dear Kim,
>
> On 12 December 2012 13:24, Jeong Hyeon Kim <snow.jhkim@gmail.com> wrote:
>> From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>>
>> This patch adds the support for Exynos4212/4412.
>>
>> Samsung's ARM Cortex-A9 based Exynos4x12 SoCs and Exynos4210 are similar.
>> Address of a few registers are different in CMU part like MPLL.
>>
>> Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>> ---
>>  arch/arm/cpu/armv7/exynos/clock.c        |    7 +-
>>  arch/arm/include/asm/arch-exynos/clock.h |  240 ++++++++++++++++++++++++++++++
>>  arch/arm/include/asm/arch-exynos/cpu.h   |    1 +
>>  3 files changed, 247 insertions(+), 1 deletion(-)
>>
> As i discussed with you these changes has been already posted.
> http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/148856
> Kindly use them and resend yours patches.
>> diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c
>> index fe61f88..47e2e6c 100644
>> --- a/arch/arm/cpu/armv7/exynos/clock.c
>> +++ b/arch/arm/cpu/armv7/exynos/clock.c
> Please have a look patch at the link.
> [PATCH] EXYNOS: EXYNOS4X12: extract Exynos4x12 IPs clock frequency

http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/143640

>> @@ -94,7 +94,12 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
>>                 r = readl(&clk->apll_con0);
>>                 break;
>>         case MPLL:
>> -               r = readl(&clk->mpll_con0);
>> +               if (proid_is_exynos4412()) {
>> +                       struct exynos4412_clock *clk4412 =
>> +                               (struct exynos4412_clock *)samsung_get_base_clock();
>> +                       r = readl(&clk4412->mpll_con0);
>> +               } else
>> +                       r = readl(&clk->mpll_con0);
>>                 break;
>>         case EPLL:
>>                 r = readl(&clk->epll_con0);
>> diff --git a/arch/arm/include/asm/arch-exynos/clock.h b/arch/arm/include/asm/arch-exynos/clock.h
>> index ff6781a..5d4ed5c 100644
>> --- a/arch/arm/include/asm/arch-exynos/clock.h
>> +++ b/arch/arm/include/asm/arch-exynos/clock.h
>> @@ -251,6 +251,246 @@ struct exynos4_clock {
>>         unsigned int    div_iem_l1;
>>  };
>>
>> +struct exynos4412_clock {
>> +       unsigned char   res1[0x4200];
>> +       unsigned int    src_leftbus;
>> +       unsigned char   res2[0x1fc];
>> +       unsigned int    mux_stat_leftbus;
>> +       unsigned char   res3[0xfc];
>> +       unsigned int    div_leftbus;
>> +       unsigned char   res4[0xfc];
>> +       unsigned int    div_stat_leftbus;
>> +       unsigned char   res5[0x1fc];
>> +       unsigned int    gate_ip_leftbus;
>> +       unsigned char   res6[0x12c];
>> +       unsigned int    gate_ip_image;
>> +       unsigned char   res7[0xcc];
>> +       unsigned int    clkout_cmu_leftbus;
>> +       unsigned int    clkout_cmu_leftbus_div_stat;
>> +       unsigned char   res8[0x37f8];
>> +       unsigned int    src_rightbus;
>> +       unsigned char   res9[0x1fc];
>> +       unsigned int    mux_stat_rightbus;
>> +       unsigned char   res10[0xfc];
>> +       unsigned int    div_rightbus;
>> +       unsigned char   res11[0xfc];
>> +       unsigned int    div_stat_rightbus;
>> +       unsigned char   res12[0x1fc];
>> +       unsigned int    gate_ip_rightbus;
>> +       unsigned char   res13[0x15c];
>> +       unsigned int    gate_ip_perir;
>> +       unsigned char   res14[0x9c];
>> +       unsigned int    clkout_cmu_rightbus;
>> +       unsigned int    clkout_cmu_rightbus_div_stat;
>> +       unsigned char   res15[0x3608];
>> +       unsigned int    epll_lock;
>> +       unsigned char   res16[0xc];
>> +       unsigned int    vpll_lock;
>> +       unsigned char   res17[0xec];
>> +       unsigned int    epll_con0;
>> +       unsigned int    epll_con1;
>> +       unsigned int    epll_con2;
>> +       unsigned char   res18[0x4];
>> +       unsigned int    vpll_con0;
>> +       unsigned int    vpll_con1;
>> +       unsigned int    vpll_con2;
>> +       unsigned char   res19[0xe4];
>> +       unsigned int    src_top0;
>> +       unsigned int    src_top1;
>> +       unsigned char   res20[0x8];
>> +       unsigned int    src_cam0;
>> +       unsigned int    src_tv;
>> +       unsigned int    src_mfc;
>> +       unsigned int    src_g3d;
>> +       unsigned char   res21[0x4];
>> +       unsigned int    src_lcd0;
>> +       unsigned int    src_isp;
>> +       unsigned int    src_maudio;
>> +       unsigned int    src_fsys;
>> +       unsigned char   res22[0xc];
>> +       unsigned int    src_peril0;
>> +       unsigned int    src_peril1;
>> +       unsigned int    src_cam1;
>> +       unsigned char   res23[0xc4];
>> +       unsigned int    src_mask_cam0;
>> +       unsigned int    src_mask_tv;
>> +       unsigned char   res24[0xc];
>> +       unsigned int    src_mask_lcd;
>> +       unsigned int    src_mask_isp;
>> +       unsigned int    src_mask_maudio;
>> +       unsigned int    src_mask_fsys;
>> +       unsigned char   res25[0xc];
>> +       unsigned int    src_mask_peril0;
>> +       unsigned int    src_mask_peril1;
>> +       unsigned char   res26[0xb8];
>> +       unsigned int    mux_stat_top;
>> +       unsigned int    mux_stat_top1;
>> +       unsigned char   res27[0x10];
>> +       unsigned int    mux_stat_mfc;
>> +       unsigned int    mux_stat_g3d;
>> +       unsigned char   res28[0x28];
>> +       unsigned int    mux_stat_cam1;
>> +       unsigned char   res29[0xb4];
>> +       unsigned int    div_top;
>> +       unsigned char   res30[0xc];
>> +       unsigned int    div_cam0;
>> +       unsigned int    div_tv;
>> +       unsigned int    div_mfc;
>> +       unsigned int    div_g3d;
>> +       unsigned char   res31[0x4];
>> +       unsigned int    div_lcd;
>> +       unsigned int    div_isp;
>> +       unsigned int    div_maudio;
>> +       unsigned int    div_fsys0;
>> +       unsigned int    div_fsys1;
>> +       unsigned int    div_fsys2;
>> +       unsigned int    div_fsys3;
>> +       unsigned int    div_peril0;
>> +       unsigned int    div_peril1;
>> +       unsigned int    div_peril2;
>> +       unsigned int    div_peril3;
>> +       unsigned int    div_peril4;
>> +       unsigned int    div_peril5;
>> +       unsigned int    div_cam1;
>> +       unsigned char   res32[0x14];
>> +       unsigned int    div2_ratio;
>> +       unsigned char   res33[0x8c];
>> +       unsigned int    div_stat_top;
>> +       unsigned char   res34[0xc];
>> +       unsigned int    div_stat_cam0;
>> +       unsigned int    div_stat_tv;
>> +       unsigned int    div_stat_mfc;
>> +       unsigned int    div_stat_g3d;
>> +       unsigned char   res35[0x4];
>> +       unsigned int    div_stat_lcd;
>> +       unsigned int    div_stat_isp;
>> +       unsigned int    div_stat_maudio;
>> +       unsigned int    div_stat_fsys0;
>> +       unsigned int    div_stat_fsys1;
>> +       unsigned int    div_stat_fsys2;
>> +       unsigned int    div_stat_fsys3;
>> +       unsigned int    div_stat_peril0;
>> +       unsigned int    div_stat_peril1;
>> +       unsigned int    div_stat_peril2;
>> +       unsigned int    div_stat_peril3;
>> +       unsigned int    div_stat_peril4;
>> +       unsigned int    div_stat_peril5;
>> +       unsigned int    div_stat_cam1;
>> +       unsigned char   res36[0x14];
>> +       unsigned int    div2_stat;
>> +       unsigned char   res37[0xc0];
>> +       unsigned int    gate_bus_fsys1;
>> +       unsigned char   res38[0x1d8];
>> +       unsigned int    gate_ip_cam;
>> +       unsigned int    gate_ip_tv;
>> +       unsigned int    gate_ip_mfc;
>> +       unsigned int    gate_ip_g3d;
>> +       unsigned char   res39[0x4];
>> +       unsigned int    gate_ip_lcd;
>> +       unsigned int    gate_ip_isp;
>> +       unsigned char   res40[0x4];
>> +       unsigned int    gate_ip_fsys;
>> +       unsigned char   res41[0x8];
>> +       unsigned int    gate_ip_gps;
>> +       unsigned int    gate_ip_peril;
>> +       unsigned char   res42[0x1c];
>> +       unsigned int    gate_block;
>> +       unsigned char   res43[0x8c];
>> +       unsigned int    clkout_cmu_top;
>> +       unsigned int    clkout_cmu_top_div_stat;
>> +       unsigned char   res44[0x3600];
>> +       unsigned int    mpll_lock;
>> +       unsigned char   res45[0xfc];
>> +       unsigned int    mpll_con0;
>> +       unsigned int    mpll_con1;
>> +       unsigned char   res46[0xf0];
>> +       unsigned int    src_dmc;
>> +       unsigned char   res47[0xfc];
>> +       unsigned int    src_mask_dmc;
>> +       unsigned char   res48[0xfc];
>> +       unsigned int    mux_stat_dmc;
>> +       unsigned char   res49[0xfc];
>> +       unsigned int    div_dmc0;
>> +       unsigned int    div_dmc1;
>> +       unsigned char   res50[0xf8];
>> +       unsigned int    div_stat_dmc0;
>> +       unsigned int    div_stat_dmc1;
>> +       unsigned char   res51[0x2f8];
>> +       unsigned int    gate_ip_dmc;
>> +       unsigned int    gate_ip_dmc1;
>> +       unsigned char   res52[0xf8];
>> +       unsigned int    clkout_cmu_dmc;
>> +       unsigned int    clkout_cmu_dmc_div_stat;
>> +       unsigned char   res53[0x5f8];
>> +       unsigned int    dcgidx_map0;
>> +       unsigned int    dcgidx_map1;
>> +       unsigned int    dcgidx_map2;
>> +       unsigned char   res54[0x14];
>> +       unsigned int    dcgperf_map0;
>> +       unsigned int    dcgperf_map1;
>> +       unsigned char   res55[0x18];
>> +       unsigned int    dvcidx_map;
>> +       unsigned char   res56[0x1c];
>> +       unsigned int    freq_cpu;
>> +       unsigned int    freq_dpm;
>> +       unsigned char   res57[0x18];
>> +       unsigned int    dvsemclk_en;
>> +       unsigned int    maxperf;
>> +       unsigned char   res58[0xc];
>> +       unsigned int    dmc_puause_ctrl;
>> +       unsigned int    ddrphy_lock_ctrl;
>> +       unsigned int    c2c_state;
>> +       unsigned char   res59[0x2f60];
>> +       unsigned int    apll_lock;
>> +       unsigned char   res60[0xfc];
>> +       unsigned int    apll_con0;
>> +       unsigned int    apll_con1;
>> +       unsigned char   res61[0xf8];
>> +       unsigned int    src_cpu;
>> +       unsigned char   res62[0x1fc];
>> +       unsigned int    mux_stat_cpu;
>> +       unsigned char   res63[0xfc];
>> +       unsigned int    div_cpu0;
>> +       unsigned int    div_cpu1;
>> +       unsigned char   res64[0xf8];
>> +       unsigned int    div_stat_cpu0;
>> +       unsigned int    div_stat_cpu1;
>> +       unsigned char   res65[0x2f8];
>> +       unsigned int    gate_ip_cpu;
>> +       unsigned char   res66[0xfc];
>> +       unsigned int    clkout_cmu_cpu;
>> +       unsigned int    clkout_cmu_cpu_div_stat;
>> +       unsigned char   res67[0x5f8];
>> +       unsigned int    armclk_stopctrl;
>> +       unsigned int    atclk_stopctrl;
>> +       unsigned char   res68[0x18];
>> +       unsigned int    pwr_ctrl;
>> +       unsigned int    pwr_ctrl2;
>> +       unsigned char   res69[0x3d8];
>> +       unsigned int    l2_status;
>> +       unsigned char   res70[0xc];
>> +       unsigned int    cpu_status;
>> +       unsigned char   res71[0xc];
>> +       unsigned int    ptm_status;
>> +       unsigned char   res72[0x2edc];
>> +       unsigned int    clk_div_isp0;
>> +       unsigned int    clk_div_isp1;
>> +       unsigned char   res73[0xf8];
>> +       unsigned int    clk_div_stat_isp0;
>> +       unsigned int    clk_div_stat_isp1;
>> +       unsigned char   res74[0x3f8];
>> +       unsigned int    gate_ip_isp0;
>> +       unsigned int    gate_ip_isp1;
>> +       unsigned char   res75[0x1f8];
>> +       unsigned int    clkout_cmu_isp;
>> +       unsigned int    clkout_cmu_isp_stat;
>> +       unsigned char   res76[0xf8];
>> +       unsigned int    clkout_cmu_spare0;
>> +       unsigned int    clkout_cmu_spare1;
>> +       unsigned int    clkout_cmu_spare2;
>> +       unsigned int    clkout_cmu_spare3;
>> +};
>> +
>>  struct exynos5_clock {
>>         unsigned int    apll_lock;
>>         unsigned char   res1[0xfc];
>> diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h
>> index d1b2ea8..7ee5366 100644
>> --- a/arch/arm/include/asm/arch-exynos/cpu.h
>> +++ b/arch/arm/include/asm/arch-exynos/cpu.h
>> @@ -152,6 +152,7 @@ static inline int proid_is_##type(void)                     \
>>  }
>>
>>  IS_EXYNOS_TYPE(exynos4210, 0x4210)
>> +IS_EXYNOS_TYPE(exynos4412, 0x4412)
>>  IS_EXYNOS_TYPE(exynos5250, 0x5250)
>>
>>  #define SAMSUNG_BASE(device, base)                             \
>> --
>> 1.7.9.5
>>
>
>
>
> --
> with warm regards,
> Chander Kashyap



-- 
with warm regards,
Chander Kashyap

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
  2012-12-13  6:19     ` Chander Kashyap
@ 2012-12-13  8:21       ` 김정현
  2012-12-13  8:28         ` Chander Kashyap
  0 siblings, 1 reply; 11+ messages in thread
From: 김정현 @ 2012-12-13  8:21 UTC (permalink / raw)
  To: u-boot

Dear Chander,

2012? 12? 13? 15:19, Chander Kashyap ? ?:
> On 13 December 2012 11:49, Chander Kashyap <chander.kashyap@linaro.org> wrote:
>> Dear Kim,
>>
>> On 12 December 2012 13:24, Jeong Hyeon Kim <snow.jhkim@gmail.com> wrote:
>>> From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>>>
>>> This patch adds the support for Exynos4212/4412.
>>>
>>> Samsung's ARM Cortex-A9 based Exynos4x12 SoCs and Exynos4210 are similar.
>>> Address of a few registers are different in CMU part like MPLL.
>>>
>>> Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>>> ---
>>>  arch/arm/cpu/armv7/exynos/clock.c        |    7 +-
>>>  arch/arm/include/asm/arch-exynos/clock.h |  240 ++++++++++++++++++++++++++++++
>>>  arch/arm/include/asm/arch-exynos/cpu.h   |    1 +
>>>  3 files changed, 247 insertions(+), 1 deletion(-)
>>>
>> As i discussed with you these changes has been already posted.
>> http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/148856
>> Kindly use them and resend yours patches.
>>> diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c
>>> index fe61f88..47e2e6c 100644
>>> --- a/arch/arm/cpu/armv7/exynos/clock.c
>>> +++ b/arch/arm/cpu/armv7/exynos/clock.c
>> Please have a look patch at the link.
>> [PATCH] EXYNOS: EXYNOS4X12: extract Exynos4x12 IPs clock frequency
> http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/143640
I applied it and your resend patches at 7, Dec. to latest u-boot-samsung
tree.
http://patchwork.ozlabs.org/patch/204445/

It made compile error as below.
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
function 'samsung_get_base_i2s':
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208: error:
'EXYNOS4X12_I2S_BASE' undeclared (first use in this function)
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208: error:
(Each undeclared identifier is reported only once
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208: error:
for each function it appears in.)
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
function 'samsung_get_base_spi':
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:226: error:
'EXYNOS4X12_SPI_BASE' undeclared (first use in this function)
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
function 'samsung_get_base_spi_isp':
/workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:227: error:
'EXYNOS4X12_SPI_ISP_BASE' undeclared (first use in this function)

Please resend patches after fix it.

>
>>> @@ -94,7 +94,12 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
>>>                 r = readl(&clk->apll_con0);
>>>                 break;
>>>         case MPLL:
>>> -               r = readl(&clk->mpll_con0);
>>> +               if (proid_is_exynos4412()) {
>>> +                       struct exynos4412_clock *clk4412 =
>>> +                               (struct exynos4412_clock *)samsung_get_base_clock();
>>> +                       r = readl(&clk4412->mpll_con0);
>>> +               } else
>>> +                       r = readl(&clk->mpll_con0);
>>>                 break;
>>>         case EPLL:
>>>                 r = readl(&clk->epll_con0);
>>> diff --git a/arch/arm/include/asm/arch-exynos/clock.h b/arch/arm/include/asm/arch-exynos/clock.h
>>> index ff6781a..5d4ed5c 100644
>>> --- a/arch/arm/include/asm/arch-exynos/clock.h
>>> +++ b/arch/arm/include/asm/arch-exynos/clock.h
>>> @@ -251,6 +251,246 @@ struct exynos4_clock {
>>>         unsigned int    div_iem_l1;
>>>  };
>>>
>>> +struct exynos4412_clock {
>>> +       unsigned char   res1[0x4200];
>>> +       unsigned int    src_leftbus;
>>> +       unsigned char   res2[0x1fc];
>>> +       unsigned int    mux_stat_leftbus;
>>> +       unsigned char   res3[0xfc];
>>> +       unsigned int    div_leftbus;
>>> +       unsigned char   res4[0xfc];
>>> +       unsigned int    div_stat_leftbus;
>>> +       unsigned char   res5[0x1fc];
>>> +       unsigned int    gate_ip_leftbus;
>>> +       unsigned char   res6[0x12c];
>>> +       unsigned int    gate_ip_image;
>>> +       unsigned char   res7[0xcc];
>>> +       unsigned int    clkout_cmu_leftbus;
>>> +       unsigned int    clkout_cmu_leftbus_div_stat;
>>> +       unsigned char   res8[0x37f8];
>>> +       unsigned int    src_rightbus;
>>> +       unsigned char   res9[0x1fc];
>>> +       unsigned int    mux_stat_rightbus;
>>> +       unsigned char   res10[0xfc];
>>> +       unsigned int    div_rightbus;
>>> +       unsigned char   res11[0xfc];
>>> +       unsigned int    div_stat_rightbus;
>>> +       unsigned char   res12[0x1fc];
>>> +       unsigned int    gate_ip_rightbus;
>>> +       unsigned char   res13[0x15c];
>>> +       unsigned int    gate_ip_perir;
>>> +       unsigned char   res14[0x9c];
>>> +       unsigned int    clkout_cmu_rightbus;
>>> +       unsigned int    clkout_cmu_rightbus_div_stat;
>>> +       unsigned char   res15[0x3608];
>>> +       unsigned int    epll_lock;
>>> +       unsigned char   res16[0xc];
>>> +       unsigned int    vpll_lock;
>>> +       unsigned char   res17[0xec];
>>> +       unsigned int    epll_con0;
>>> +       unsigned int    epll_con1;
>>> +       unsigned int    epll_con2;
>>> +       unsigned char   res18[0x4];
>>> +       unsigned int    vpll_con0;
>>> +       unsigned int    vpll_con1;
>>> +       unsigned int    vpll_con2;
>>> +       unsigned char   res19[0xe4];
>>> +       unsigned int    src_top0;
>>> +       unsigned int    src_top1;
>>> +       unsigned char   res20[0x8];
>>> +       unsigned int    src_cam0;
>>> +       unsigned int    src_tv;
>>> +       unsigned int    src_mfc;
>>> +       unsigned int    src_g3d;
>>> +       unsigned char   res21[0x4];
>>> +       unsigned int    src_lcd0;
>>> +       unsigned int    src_isp;
>>> +       unsigned int    src_maudio;
>>> +       unsigned int    src_fsys;
>>> +       unsigned char   res22[0xc];
>>> +       unsigned int    src_peril0;
>>> +       unsigned int    src_peril1;
>>> +       unsigned int    src_cam1;
>>> +       unsigned char   res23[0xc4];
>>> +       unsigned int    src_mask_cam0;
>>> +       unsigned int    src_mask_tv;
>>> +       unsigned char   res24[0xc];
>>> +       unsigned int    src_mask_lcd;
>>> +       unsigned int    src_mask_isp;
>>> +       unsigned int    src_mask_maudio;
>>> +       unsigned int    src_mask_fsys;
>>> +       unsigned char   res25[0xc];
>>> +       unsigned int    src_mask_peril0;
>>> +       unsigned int    src_mask_peril1;
>>> +       unsigned char   res26[0xb8];
>>> +       unsigned int    mux_stat_top;
>>> +       unsigned int    mux_stat_top1;
>>> +       unsigned char   res27[0x10];
>>> +       unsigned int    mux_stat_mfc;
>>> +       unsigned int    mux_stat_g3d;
>>> +       unsigned char   res28[0x28];
>>> +       unsigned int    mux_stat_cam1;
>>> +       unsigned char   res29[0xb4];
>>> +       unsigned int    div_top;
>>> +       unsigned char   res30[0xc];
>>> +       unsigned int    div_cam0;
>>> +       unsigned int    div_tv;
>>> +       unsigned int    div_mfc;
>>> +       unsigned int    div_g3d;
>>> +       unsigned char   res31[0x4];
>>> +       unsigned int    div_lcd;
>>> +       unsigned int    div_isp;
>>> +       unsigned int    div_maudio;
>>> +       unsigned int    div_fsys0;
>>> +       unsigned int    div_fsys1;
>>> +       unsigned int    div_fsys2;
>>> +       unsigned int    div_fsys3;
>>> +       unsigned int    div_peril0;
>>> +       unsigned int    div_peril1;
>>> +       unsigned int    div_peril2;
>>> +       unsigned int    div_peril3;
>>> +       unsigned int    div_peril4;
>>> +       unsigned int    div_peril5;
>>> +       unsigned int    div_cam1;
>>> +       unsigned char   res32[0x14];
>>> +       unsigned int    div2_ratio;
>>> +       unsigned char   res33[0x8c];
>>> +       unsigned int    div_stat_top;
>>> +       unsigned char   res34[0xc];
>>> +       unsigned int    div_stat_cam0;
>>> +       unsigned int    div_stat_tv;
>>> +       unsigned int    div_stat_mfc;
>>> +       unsigned int    div_stat_g3d;
>>> +       unsigned char   res35[0x4];
>>> +       unsigned int    div_stat_lcd;
>>> +       unsigned int    div_stat_isp;
>>> +       unsigned int    div_stat_maudio;
>>> +       unsigned int    div_stat_fsys0;
>>> +       unsigned int    div_stat_fsys1;
>>> +       unsigned int    div_stat_fsys2;
>>> +       unsigned int    div_stat_fsys3;
>>> +       unsigned int    div_stat_peril0;
>>> +       unsigned int    div_stat_peril1;
>>> +       unsigned int    div_stat_peril2;
>>> +       unsigned int    div_stat_peril3;
>>> +       unsigned int    div_stat_peril4;
>>> +       unsigned int    div_stat_peril5;
>>> +       unsigned int    div_stat_cam1;
>>> +       unsigned char   res36[0x14];
>>> +       unsigned int    div2_stat;
>>> +       unsigned char   res37[0xc0];
>>> +       unsigned int    gate_bus_fsys1;
>>> +       unsigned char   res38[0x1d8];
>>> +       unsigned int    gate_ip_cam;
>>> +       unsigned int    gate_ip_tv;
>>> +       unsigned int    gate_ip_mfc;
>>> +       unsigned int    gate_ip_g3d;
>>> +       unsigned char   res39[0x4];
>>> +       unsigned int    gate_ip_lcd;
>>> +       unsigned int    gate_ip_isp;
>>> +       unsigned char   res40[0x4];
>>> +       unsigned int    gate_ip_fsys;
>>> +       unsigned char   res41[0x8];
>>> +       unsigned int    gate_ip_gps;
>>> +       unsigned int    gate_ip_peril;
>>> +       unsigned char   res42[0x1c];
>>> +       unsigned int    gate_block;
>>> +       unsigned char   res43[0x8c];
>>> +       unsigned int    clkout_cmu_top;
>>> +       unsigned int    clkout_cmu_top_div_stat;
>>> +       unsigned char   res44[0x3600];
>>> +       unsigned int    mpll_lock;
>>> +       unsigned char   res45[0xfc];
>>> +       unsigned int    mpll_con0;
>>> +       unsigned int    mpll_con1;
>>> +       unsigned char   res46[0xf0];
>>> +       unsigned int    src_dmc;
>>> +       unsigned char   res47[0xfc];
>>> +       unsigned int    src_mask_dmc;
>>> +       unsigned char   res48[0xfc];
>>> +       unsigned int    mux_stat_dmc;
>>> +       unsigned char   res49[0xfc];
>>> +       unsigned int    div_dmc0;
>>> +       unsigned int    div_dmc1;
>>> +       unsigned char   res50[0xf8];
>>> +       unsigned int    div_stat_dmc0;
>>> +       unsigned int    div_stat_dmc1;
>>> +       unsigned char   res51[0x2f8];
>>> +       unsigned int    gate_ip_dmc;
>>> +       unsigned int    gate_ip_dmc1;
>>> +       unsigned char   res52[0xf8];
>>> +       unsigned int    clkout_cmu_dmc;
>>> +       unsigned int    clkout_cmu_dmc_div_stat;
>>> +       unsigned char   res53[0x5f8];
>>> +       unsigned int    dcgidx_map0;
>>> +       unsigned int    dcgidx_map1;
>>> +       unsigned int    dcgidx_map2;
>>> +       unsigned char   res54[0x14];
>>> +       unsigned int    dcgperf_map0;
>>> +       unsigned int    dcgperf_map1;
>>> +       unsigned char   res55[0x18];
>>> +       unsigned int    dvcidx_map;
>>> +       unsigned char   res56[0x1c];
>>> +       unsigned int    freq_cpu;
>>> +       unsigned int    freq_dpm;
>>> +       unsigned char   res57[0x18];
>>> +       unsigned int    dvsemclk_en;
>>> +       unsigned int    maxperf;
>>> +       unsigned char   res58[0xc];
>>> +       unsigned int    dmc_puause_ctrl;
>>> +       unsigned int    ddrphy_lock_ctrl;
>>> +       unsigned int    c2c_state;
>>> +       unsigned char   res59[0x2f60];
>>> +       unsigned int    apll_lock;
>>> +       unsigned char   res60[0xfc];
>>> +       unsigned int    apll_con0;
>>> +       unsigned int    apll_con1;
>>> +       unsigned char   res61[0xf8];
>>> +       unsigned int    src_cpu;
>>> +       unsigned char   res62[0x1fc];
>>> +       unsigned int    mux_stat_cpu;
>>> +       unsigned char   res63[0xfc];
>>> +       unsigned int    div_cpu0;
>>> +       unsigned int    div_cpu1;
>>> +       unsigned char   res64[0xf8];
>>> +       unsigned int    div_stat_cpu0;
>>> +       unsigned int    div_stat_cpu1;
>>> +       unsigned char   res65[0x2f8];
>>> +       unsigned int    gate_ip_cpu;
>>> +       unsigned char   res66[0xfc];
>>> +       unsigned int    clkout_cmu_cpu;
>>> +       unsigned int    clkout_cmu_cpu_div_stat;
>>> +       unsigned char   res67[0x5f8];
>>> +       unsigned int    armclk_stopctrl;
>>> +       unsigned int    atclk_stopctrl;
>>> +       unsigned char   res68[0x18];
>>> +       unsigned int    pwr_ctrl;
>>> +       unsigned int    pwr_ctrl2;
>>> +       unsigned char   res69[0x3d8];
>>> +       unsigned int    l2_status;
>>> +       unsigned char   res70[0xc];
>>> +       unsigned int    cpu_status;
>>> +       unsigned char   res71[0xc];
>>> +       unsigned int    ptm_status;
>>> +       unsigned char   res72[0x2edc];
>>> +       unsigned int    clk_div_isp0;
>>> +       unsigned int    clk_div_isp1;
>>> +       unsigned char   res73[0xf8];
>>> +       unsigned int    clk_div_stat_isp0;
>>> +       unsigned int    clk_div_stat_isp1;
>>> +       unsigned char   res74[0x3f8];
>>> +       unsigned int    gate_ip_isp0;
>>> +       unsigned int    gate_ip_isp1;
>>> +       unsigned char   res75[0x1f8];
>>> +       unsigned int    clkout_cmu_isp;
>>> +       unsigned int    clkout_cmu_isp_stat;
>>> +       unsigned char   res76[0xf8];
>>> +       unsigned int    clkout_cmu_spare0;
>>> +       unsigned int    clkout_cmu_spare1;
>>> +       unsigned int    clkout_cmu_spare2;
>>> +       unsigned int    clkout_cmu_spare3;
>>> +};
>>> +
>>>  struct exynos5_clock {
>>>         unsigned int    apll_lock;
>>>         unsigned char   res1[0xfc];
>>> diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h
>>> index d1b2ea8..7ee5366 100644
>>> --- a/arch/arm/include/asm/arch-exynos/cpu.h
>>> +++ b/arch/arm/include/asm/arch-exynos/cpu.h
>>> @@ -152,6 +152,7 @@ static inline int proid_is_##type(void)                     \
>>>  }
>>>
>>>  IS_EXYNOS_TYPE(exynos4210, 0x4210)
>>> +IS_EXYNOS_TYPE(exynos4412, 0x4412)
>>>  IS_EXYNOS_TYPE(exynos5250, 0x5250)
>>>
>>>  #define SAMSUNG_BASE(device, base)                             \
>>> --
>>> 1.7.9.5
>>>
>>
>>
>> --
>> with warm regards,
>> Chander Kashyap
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs
  2012-12-13  8:21       ` 김정현
@ 2012-12-13  8:28         ` Chander Kashyap
  0 siblings, 0 replies; 11+ messages in thread
From: Chander Kashyap @ 2012-12-13  8:28 UTC (permalink / raw)
  To: u-boot

Dear Kim,

On 13 December 2012 13:51, ??? <jhkim@insignal.co.kr> wrote:
> Dear Chander,
>
> 2012? 12? 13? 15:19, Chander Kashyap ? ?:
>
> On 13 December 2012 11:49, Chander Kashyap <chander.kashyap@linaro.org>
> wrote:
>
> Dear Kim,
>
> On 12 December 2012 13:24, Jeong Hyeon Kim <snow.jhkim@gmail.com> wrote:
>
> From: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
>
> This patch adds the support for Exynos4212/4412.
>
> Samsung's ARM Cortex-A9 based Exynos4x12 SoCs and Exynos4210 are similar.
> Address of a few registers are different in CMU part like MPLL.
>
> Signed-off-by: Jeong-Hyeon Kim <jhkim@insignal.co.kr>
> ---
>  arch/arm/cpu/armv7/exynos/clock.c        |    7 +-
>  arch/arm/include/asm/arch-exynos/clock.h |  240
> ++++++++++++++++++++++++++++++
>  arch/arm/include/asm/arch-exynos/cpu.h   |    1 +
>  3 files changed, 247 insertions(+), 1 deletion(-)
>
> As i discussed with you these changes has been already posted.
> http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/148856
> Kindly use them and resend yours patches.
>
> diff --git a/arch/arm/cpu/armv7/exynos/clock.c
> b/arch/arm/cpu/armv7/exynos/clock.c
> index fe61f88..47e2e6c 100644
> --- a/arch/arm/cpu/armv7/exynos/clock.c
> +++ b/arch/arm/cpu/armv7/exynos/clock.c
>
> Please have a look patch at the link.
> [PATCH] EXYNOS: EXYNOS4X12: extract Exynos4x12 IPs clock frequency
>
> http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/143640
>
> I applied it and your resend patches at 7, Dec. to latest u-boot-samsung
> tree.
> http://patchwork.ozlabs.org/patch/204445/
>
> It made compile error as below.
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
> function 'samsung_get_base_i2s':
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208:
> error: 'EXYNOS4X12_I2S_BASE' undeclared (first use in this function)
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208:
> error: (Each undeclared identifier is reported only once
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:208:
> error: for each function it appears in.)
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
> function 'samsung_get_base_spi':
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:226:
> error: 'EXYNOS4X12_SPI_BASE' undeclared (first use in this function)
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h: In
> function 'samsung_get_base_spi_isp':
> /workspace/insignal/bootloader/u-boot-samsung/include/asm/arch/cpu.h:227:
> error: 'EXYNOS4X12_SPI_ISP_BASE' undeclared (first use in this function)
You need apply my patches. Then add these base addresses in cpu.h and
create a patch. Then add yours board specific patches.
>
> Please resend patches after fix it.
>
>
>
> @@ -94,7 +94,12 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
>                 r = readl(&clk->apll_con0);
>                 break;
>         case MPLL:
> -               r = readl(&clk->mpll_con0);
> +               if (proid_is_exynos4412()) {
> +                       struct exynos4412_clock *clk4412 =
> +                               (struct exynos4412_clock
> *)samsung_get_base_clock();
> +                       r = readl(&clk4412->mpll_con0);
> +               } else
> +                       r = readl(&clk->mpll_con0);
>                 break;
>         case EPLL:
>                 r = readl(&clk->epll_con0);
> diff --git a/arch/arm/include/asm/arch-exynos/clock.h
> b/arch/arm/include/asm/arch-exynos/clock.h
> index ff6781a..5d4ed5c 100644
> --- a/arch/arm/include/asm/arch-exynos/clock.h
> +++ b/arch/arm/include/asm/arch-exynos/clock.h
> @@ -251,6 +251,246 @@ struct exynos4_clock {
>         unsigned int    div_iem_l1;
>  };
>
> +struct exynos4412_clock {
> +       unsigned char   res1[0x4200];
> +       unsigned int    src_leftbus;
> +       unsigned char   res2[0x1fc];
> +       unsigned int    mux_stat_leftbus;
> +       unsigned char   res3[0xfc];
> +       unsigned int    div_leftbus;
> +       unsigned char   res4[0xfc];
> +       unsigned int    div_stat_leftbus;
> +       unsigned char   res5[0x1fc];
> +       unsigned int    gate_ip_leftbus;
> +       unsigned char   res6[0x12c];
> +       unsigned int    gate_ip_image;
> +       unsigned char   res7[0xcc];
> +       unsigned int    clkout_cmu_leftbus;
> +       unsigned int    clkout_cmu_leftbus_div_stat;
> +       unsigned char   res8[0x37f8];
> +       unsigned int    src_rightbus;
> +       unsigned char   res9[0x1fc];
> +       unsigned int    mux_stat_rightbus;
> +       unsigned char   res10[0xfc];
> +       unsigned int    div_rightbus;
> +       unsigned char   res11[0xfc];
> +       unsigned int    div_stat_rightbus;
> +       unsigned char   res12[0x1fc];
> +       unsigned int    gate_ip_rightbus;
> +       unsigned char   res13[0x15c];
> +       unsigned int    gate_ip_perir;
> +       unsigned char   res14[0x9c];
> +       unsigned int    clkout_cmu_rightbus;
> +       unsigned int    clkout_cmu_rightbus_div_stat;
> +       unsigned char   res15[0x3608];
> +       unsigned int    epll_lock;
> +       unsigned char   res16[0xc];
> +       unsigned int    vpll_lock;
> +       unsigned char   res17[0xec];
> +       unsigned int    epll_con0;
> +       unsigned int    epll_con1;
> +       unsigned int    epll_con2;
> +       unsigned char   res18[0x4];
> +       unsigned int    vpll_con0;
> +       unsigned int    vpll_con1;
> +       unsigned int    vpll_con2;
> +       unsigned char   res19[0xe4];
> +       unsigned int    src_top0;
> +       unsigned int    src_top1;
> +       unsigned char   res20[0x8];
> +       unsigned int    src_cam0;
> +       unsigned int    src_tv;
> +       unsigned int    src_mfc;
> +       unsigned int    src_g3d;
> +       unsigned char   res21[0x4];
> +       unsigned int    src_lcd0;
> +       unsigned int    src_isp;
> +       unsigned int    src_maudio;
> +       unsigned int    src_fsys;
> +       unsigned char   res22[0xc];
> +       unsigned int    src_peril0;
> +       unsigned int    src_peril1;
> +       unsigned int    src_cam1;
> +       unsigned char   res23[0xc4];
> +       unsigned int    src_mask_cam0;
> +       unsigned int    src_mask_tv;
> +       unsigned char   res24[0xc];
> +       unsigned int    src_mask_lcd;
> +       unsigned int    src_mask_isp;
> +       unsigned int    src_mask_maudio;
> +       unsigned int    src_mask_fsys;
> +       unsigned char   res25[0xc];
> +       unsigned int    src_mask_peril0;
> +       unsigned int    src_mask_peril1;
> +       unsigned char   res26[0xb8];
> +       unsigned int    mux_stat_top;
> +       unsigned int    mux_stat_top1;
> +       unsigned char   res27[0x10];
> +       unsigned int    mux_stat_mfc;
> +       unsigned int    mux_stat_g3d;
> +       unsigned char   res28[0x28];
> +       unsigned int    mux_stat_cam1;
> +       unsigned char   res29[0xb4];
> +       unsigned int    div_top;
> +       unsigned char   res30[0xc];
> +       unsigned int    div_cam0;
> +       unsigned int    div_tv;
> +       unsigned int    div_mfc;
> +       unsigned int    div_g3d;
> +       unsigned char   res31[0x4];
> +       unsigned int    div_lcd;
> +       unsigned int    div_isp;
> +       unsigned int    div_maudio;
> +       unsigned int    div_fsys0;
> +       unsigned int    div_fsys1;
> +       unsigned int    div_fsys2;
> +       unsigned int    div_fsys3;
> +       unsigned int    div_peril0;
> +       unsigned int    div_peril1;
> +       unsigned int    div_peril2;
> +       unsigned int    div_peril3;
> +       unsigned int    div_peril4;
> +       unsigned int    div_peril5;
> +       unsigned int    div_cam1;
> +       unsigned char   res32[0x14];
> +       unsigned int    div2_ratio;
> +       unsigned char   res33[0x8c];
> +       unsigned int    div_stat_top;
> +       unsigned char   res34[0xc];
> +       unsigned int    div_stat_cam0;
> +       unsigned int    div_stat_tv;
> +       unsigned int    div_stat_mfc;
> +       unsigned int    div_stat_g3d;
> +       unsigned char   res35[0x4];
> +       unsigned int    div_stat_lcd;
> +       unsigned int    div_stat_isp;
> +       unsigned int    div_stat_maudio;
> +       unsigned int    div_stat_fsys0;
> +       unsigned int    div_stat_fsys1;
> +       unsigned int    div_stat_fsys2;
> +       unsigned int    div_stat_fsys3;
> +       unsigned int    div_stat_peril0;
> +       unsigned int    div_stat_peril1;
> +       unsigned int    div_stat_peril2;
> +       unsigned int    div_stat_peril3;
> +       unsigned int    div_stat_peril4;
> +       unsigned int    div_stat_peril5;
> +       unsigned int    div_stat_cam1;
> +       unsigned char   res36[0x14];
> +       unsigned int    div2_stat;
> +       unsigned char   res37[0xc0];
> +       unsigned int    gate_bus_fsys1;
> +       unsigned char   res38[0x1d8];
> +       unsigned int    gate_ip_cam;
> +       unsigned int    gate_ip_tv;
> +       unsigned int    gate_ip_mfc;
> +       unsigned int    gate_ip_g3d;
> +       unsigned char   res39[0x4];
> +       unsigned int    gate_ip_lcd;
> +       unsigned int    gate_ip_isp;
> +       unsigned char   res40[0x4];
> +       unsigned int    gate_ip_fsys;
> +       unsigned char   res41[0x8];
> +       unsigned int    gate_ip_gps;
> +       unsigned int    gate_ip_peril;
> +       unsigned char   res42[0x1c];
> +       unsigned int    gate_block;
> +       unsigned char   res43[0x8c];
> +       unsigned int    clkout_cmu_top;
> +       unsigned int    clkout_cmu_top_div_stat;
> +       unsigned char   res44[0x3600];
> +       unsigned int    mpll_lock;
> +       unsigned char   res45[0xfc];
> +       unsigned int    mpll_con0;
> +       unsigned int    mpll_con1;
> +       unsigned char   res46[0xf0];
> +       unsigned int    src_dmc;
> +       unsigned char   res47[0xfc];
> +       unsigned int    src_mask_dmc;
> +       unsigned char   res48[0xfc];
> +       unsigned int    mux_stat_dmc;
> +       unsigned char   res49[0xfc];
> +       unsigned int    div_dmc0;
> +       unsigned int    div_dmc1;
> +       unsigned char   res50[0xf8];
> +       unsigned int    div_stat_dmc0;
> +       unsigned int    div_stat_dmc1;
> +       unsigned char   res51[0x2f8];
> +       unsigned int    gate_ip_dmc;
> +       unsigned int    gate_ip_dmc1;
> +       unsigned char   res52[0xf8];
> +       unsigned int    clkout_cmu_dmc;
> +       unsigned int    clkout_cmu_dmc_div_stat;
> +       unsigned char   res53[0x5f8];
> +       unsigned int    dcgidx_map0;
> +       unsigned int    dcgidx_map1;
> +       unsigned int    dcgidx_map2;
> +       unsigned char   res54[0x14];
> +       unsigned int    dcgperf_map0;
> +       unsigned int    dcgperf_map1;
> +       unsigned char   res55[0x18];
> +       unsigned int    dvcidx_map;
> +       unsigned char   res56[0x1c];
> +       unsigned int    freq_cpu;
> +       unsigned int    freq_dpm;
> +       unsigned char   res57[0x18];
> +       unsigned int    dvsemclk_en;
> +       unsigned int    maxperf;
> +       unsigned char   res58[0xc];
> +       unsigned int    dmc_puause_ctrl;
> +       unsigned int    ddrphy_lock_ctrl;
> +       unsigned int    c2c_state;
> +       unsigned char   res59[0x2f60];
> +       unsigned int    apll_lock;
> +       unsigned char   res60[0xfc];
> +       unsigned int    apll_con0;
> +       unsigned int    apll_con1;
> +       unsigned char   res61[0xf8];
> +       unsigned int    src_cpu;
> +       unsigned char   res62[0x1fc];
> +       unsigned int    mux_stat_cpu;
> +       unsigned char   res63[0xfc];
> +       unsigned int    div_cpu0;
> +       unsigned int    div_cpu1;
> +       unsigned char   res64[0xf8];
> +       unsigned int    div_stat_cpu0;
> +       unsigned int    div_stat_cpu1;
> +       unsigned char   res65[0x2f8];
> +       unsigned int    gate_ip_cpu;
> +       unsigned char   res66[0xfc];
> +       unsigned int    clkout_cmu_cpu;
> +       unsigned int    clkout_cmu_cpu_div_stat;
> +       unsigned char   res67[0x5f8];
> +       unsigned int    armclk_stopctrl;
> +       unsigned int    atclk_stopctrl;
> +       unsigned char   res68[0x18];
> +       unsigned int    pwr_ctrl;
> +       unsigned int    pwr_ctrl2;
> +       unsigned char   res69[0x3d8];
> +       unsigned int    l2_status;
> +       unsigned char   res70[0xc];
> +       unsigned int    cpu_status;
> +       unsigned char   res71[0xc];
> +       unsigned int    ptm_status;
> +       unsigned char   res72[0x2edc];
> +       unsigned int    clk_div_isp0;
> +       unsigned int    clk_div_isp1;
> +       unsigned char   res73[0xf8];
> +       unsigned int    clk_div_stat_isp0;
> +       unsigned int    clk_div_stat_isp1;
> +       unsigned char   res74[0x3f8];
> +       unsigned int    gate_ip_isp0;
> +       unsigned int    gate_ip_isp1;
> +       unsigned char   res75[0x1f8];
> +       unsigned int    clkout_cmu_isp;
> +       unsigned int    clkout_cmu_isp_stat;
> +       unsigned char   res76[0xf8];
> +       unsigned int    clkout_cmu_spare0;
> +       unsigned int    clkout_cmu_spare1;
> +       unsigned int    clkout_cmu_spare2;
> +       unsigned int    clkout_cmu_spare3;
> +};
> +
>  struct exynos5_clock {
>         unsigned int    apll_lock;
>         unsigned char   res1[0xfc];
> diff --git a/arch/arm/include/asm/arch-exynos/cpu.h
> b/arch/arm/include/asm/arch-exynos/cpu.h
> index d1b2ea8..7ee5366 100644
> --- a/arch/arm/include/asm/arch-exynos/cpu.h
> +++ b/arch/arm/include/asm/arch-exynos/cpu.h
> @@ -152,6 +152,7 @@ static inline int proid_is_##type(void)
> \
>  }
>
>  IS_EXYNOS_TYPE(exynos4210, 0x4210)
> +IS_EXYNOS_TYPE(exynos4412, 0x4412)
>  IS_EXYNOS_TYPE(exynos5250, 0x5250)
>
>  #define SAMSUNG_BASE(device, base)                             \
> --
> 1.7.9.5
>
>
>
> --
> with warm regards,
> Chander Kashyap
>
>
>



-- 
with warm regards,
Chander Kashyap

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-12-13  8:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-12  7:54 [U-Boot] [PATCH 0/4] Add support for SAMSUNG Exynos4 SoCs and ORIGEN_QUAD board Jeong Hyeon Kim
2012-12-12  7:54 ` [U-Boot] [PATCH 1/4] EXYNOS4: Add pinmux support for UART Jeong Hyeon Kim
2012-12-12  7:54 ` [U-Boot] [PATCH 2/4] EXYNOS4: Add pinmux support for I2C Jeong Hyeon Kim
2012-12-12  8:16   ` Heiko Schocher
2012-12-12 10:19     ` 김정현
2012-12-12  7:54 ` [U-Boot] [PATCH 3/4] EXYNOS4: Add support for Exynos4x12 SoCs Jeong Hyeon Kim
2012-12-13  6:19   ` Chander Kashyap
2012-12-13  6:19     ` Chander Kashyap
2012-12-13  8:21       ` 김정현
2012-12-13  8:28         ` Chander Kashyap
2012-12-12  7:54 ` [U-Boot] [PATCH 4/4] EXYNOS4: Add ORIGEN_QUAD board support Jeong Hyeon Kim

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.