All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM i.MX53 MSL patch set
@ 2010-12-30  5:27 yong.shen at freescale.com
  2010-12-30  5:28 ` [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code yong.shen at freescale.com
  2010-12-30  5:28 ` [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable yong.shen at freescale.com
  0 siblings, 2 replies; 10+ messages in thread
From: yong.shen at freescale.com @ 2010-12-30  5:27 UTC (permalink / raw)
  To: linux-arm-kernel


Only minor change based on v1:
set ckih2 to 0, since it is not installed on evk board.

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

* [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code
  2010-12-30  5:27 [PATCH v2] ARM i.MX53 MSL patch set yong.shen at freescale.com
@ 2010-12-30  5:28 ` yong.shen at freescale.com
  2010-12-30  9:54   ` Uwe Kleine-König
  2010-12-30  5:28 ` [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable yong.shen at freescale.com
  1 sibling, 1 reply; 10+ messages in thread
From: yong.shen at freescale.com @ 2010-12-30  5:28 UTC (permalink / raw)
  To: linux-arm-kernel

From: Yong Shen <yong.shen@linaro.org>

1. pll_base address should return right value
2. uart parent clk is from pll3
3. add cpu_is_mx53 definition

Signed-off-by: Yong Shen <yong.shen@linaro.org>
---
 arch/arm/mach-mx5/clock-mx51-mx53.c  |    7 ++++---
 arch/arm/mach-mx5/crm_regs.h         |    4 ++++
 arch/arm/plat-mxc/include/mach/mxc.h |   15 +++++++++++++--
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
index 9fc65bb..6db69db 100644
--- a/arch/arm/mach-mx5/clock-mx51-mx53.c
+++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
@@ -127,11 +127,11 @@ static inline u32 _get_mux(struct clk *parent, struct clk *m0,
 static inline void __iomem *_get_pll_base(struct clk *pll)
 {
 	if (pll == &pll1_main_clk)
-		return MX51_DPLL1_BASE;
+		return cpu_is_mx51() ? MX51_DPLL1_BASE : MX53_DPLL1_BASE;
 	else if (pll == &pll2_sw_clk)
-		return MX51_DPLL2_BASE;
+		return cpu_is_mx51() ? MX51_DPLL2_BASE : MX53_DPLL2_BASE;
 	else if (pll == &pll3_sw_clk)
-		return MX51_DPLL3_BASE;
+		return cpu_is_mx51() ? MX51_DPLL3_BASE : MX53_DPLL3_BASE;
 	else if (pll == &mx53_pll4_sw_clk)
 		return MX53_DPLL4_BASE;
 	else
@@ -1202,6 +1202,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
 
 	clk_tree_init();
 
+	clk_set_parent(&uart_root_clk, &pll3_sw_clk);
 	clk_enable(&cpu_clk);
 	clk_enable(&main_bus_clk);
 
diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h
index 51ff9bb..b462c22 100644
--- a/arch/arm/mach-mx5/crm_regs.h
+++ b/arch/arm/mach-mx5/crm_regs.h
@@ -19,6 +19,10 @@
 #define MX51_GPC_BASE		MX51_IO_ADDRESS(MX51_GPC_BASE_ADDR)
 
 /*MX53*/
+#define MX53_CCM_BASE		MX53_IO_ADDRESS(MX53_CCM_BASE_ADDR)
+#define MX53_DPLL1_BASE		MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
+#define MX53_DPLL2_BASE		MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
+#define MX53_DPLL3_BASE		MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
 #define MX53_DPLL4_BASE		MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
 
 /* PLL Register Offsets */
diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/plat-mxc/include/mach/mxc.h
index 4abbdd1..eca8f83 100644
--- a/arch/arm/plat-mxc/include/mach/mxc.h
+++ b/arch/arm/plat-mxc/include/mach/mxc.h
@@ -126,7 +126,7 @@ extern unsigned int __mxc_cpu_type;
 # define cpu_is_mx35()		(0)
 #endif
 
-#ifdef CONFIG_ARCH_MX5
+#ifdef CONFIG_ARCH_MX51
 # ifdef mxc_cpu_type
 #  undef mxc_cpu_type
 #  define mxc_cpu_type __mxc_cpu_type
@@ -134,11 +134,22 @@ extern unsigned int __mxc_cpu_type;
 #  define mxc_cpu_type MXC_CPU_MX51
 # endif
 # define cpu_is_mx51()		(mxc_cpu_type == MXC_CPU_MX51)
-# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
 #else
 # define cpu_is_mx51()		(0)
 #endif
 
+#ifdef CONFIG_ARCH_MX53
+# ifdef mxc_cpu_type
+#  undef mxc_cpu_type
+#  define mxc_cpu_type __mxc_cpu_type
+# else
+#  define mxc_cpu_type MXC_CPU_MX53
+# endif
+# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
+#else
+# define cpu_is_mx53()		(0)
+#endif
+
 #ifdef CONFIG_ARCH_MXC91231
 # ifdef mxc_cpu_type
 #  undef mxc_cpu_type
-- 
1.7.0.4

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

* [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable
  2010-12-30  5:27 [PATCH v2] ARM i.MX53 MSL patch set yong.shen at freescale.com
  2010-12-30  5:28 ` [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code yong.shen at freescale.com
@ 2010-12-30  5:28 ` yong.shen at freescale.com
  2010-12-30  9:51   ` Uwe Kleine-König
  1 sibling, 1 reply; 10+ messages in thread
From: yong.shen at freescale.com @ 2010-12-30  5:28 UTC (permalink / raw)
  To: linux-arm-kernel

From: Yong Shen <yong.shen@linaro.org>

1. Add entries to Kconfig
2. Add machine definition
3. Add Uart platform data, pad setting and base address
4. Adjust GPIO irq number

Signed-off-by: Yong Shen <yong.shen@linaro.org>
---
 arch/arm/mach-mx5/Kconfig                     |   17 +++++
 arch/arm/mach-mx5/Makefile                    |    1 +
 arch/arm/mach-mx5/Makefile.boot               |    9 ++-
 arch/arm/mach-mx5/board-mx53_evk.c            |   90 +++++++++++++++++++++++++
 arch/arm/mach-mx5/devices-imx53.h             |   13 ++++
 arch/arm/plat-mxc/devices/platform-imx-uart.c |   10 +++
 arch/arm/plat-mxc/include/mach/iomux-mx53.h   |   20 ++++++
 arch/arm/plat-mxc/include/mach/irqs.h         |    4 +-
 arch/arm/plat-mxc/include/mach/uncompress.h   |    4 +
 9 files changed, 164 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/mach-mx5/board-mx53_evk.c
 create mode 100644 arch/arm/mach-mx5/devices-imx53.h

diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 5011f42..97ac558 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -4,6 +4,9 @@ if ARCH_MX5
 config ARCH_MX51
 	bool
 
+config ARCH_MX53
+	bool
+
 config	SOC_IMX51
 	bool
 	select MXC_TZIC
@@ -12,6 +15,12 @@ config	SOC_IMX51
 	select ARCH_HAS_CPUFREQ
 	select ARCH_MX51
 
+config	SOC_IMX53
+	bool
+	select MXC_TZIC
+	select ARCH_MXC_IOMUX_V3
+	select ARCH_MX53
+
 comment "MX5 platforms:"
 
 config MACH_MX51_BABBAGE
@@ -100,4 +109,12 @@ config MACH_MX51_EFIKAMX
 	  Include support for Genesi Efika MX nettop. This includes specific
 	  configurations for the board and its peripherals.
 
+config MACH_MX53_EVK
+	bool "Support MX53 EVK platforms"
+	select SOC_IMX53
+	select IMX_HAVE_PLATFORM_IMX_UART
+	help
+	  Include support for MX53 EVK platform. This includes specific
+	  configurations for the board and its peripherals.
+
 endif
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
index 026cd85..d631a4d 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -8,6 +8,7 @@ obj-y   := cpu.o mm.o clock-mx51-mx53.o devices.o
 obj-$(CONFIG_CPU_FREQ_IMX)    += cpu_op-mx51.o
 obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
 obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
+obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
 obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
 obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
 obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
diff --git a/arch/arm/mach-mx5/Makefile.boot b/arch/arm/mach-mx5/Makefile.boot
index 9939a19..845aa01 100644
--- a/arch/arm/mach-mx5/Makefile.boot
+++ b/arch/arm/mach-mx5/Makefile.boot
@@ -1,3 +1,6 @@
-   zreladdr-y	:= 0x90008000
-params_phys-y	:= 0x90000100
-initrd_phys-y	:= 0x90800000
+   zreladdr-$(CONFIG_SOC_IMX51)        := 0x90008000
+params_phys-$(CONFIG_SOC_IMX51)        := 0x90000100
+initrd_phys-$(CONFIG_SOC_IMX51)        := 0x90800000
+   zreladdr-$(CONFIG_SOC_IMX53)        := 0x70008000
+params_phys-$(CONFIG_SOC_IMX53)        := 0x70000100
+initrd_phys-$(CONFIG_SOC_IMX53)        := 0x70800000
diff --git a/arch/arm/mach-mx5/board-mx53_evk.c b/arch/arm/mach-mx5/board-mx53_evk.c
new file mode 100644
index 0000000..84ff63a
--- /dev/null
+++ b/arch/arm/mach-mx5/board-mx53_evk.c
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
+ */
+
+/*
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <linux/init.h>
+#include <linux/clk.h>
+#include <mach/common.h>
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/time.h>
+#include <mach/imx-uart.h>
+#include <mach/iomux-mx53.h>
+
+#include "crm_regs.h"
+#include "devices-imx53.h"
+
+static iomux_v3_cfg_t mx53evk_pads[] = {
+	MX53_PAD_CSI0_D10__UART1_TXD,
+	MX53_PAD_CSI0_D11__UART1_RXD,
+	MX53_PAD_ATA_DIOW__UART1_TXD,
+	MX53_PAD_ATA_DMACK__UART1_RXD,
+
+	MX53_PAD_ATA_BUFFER_EN__UART2_RXD,
+	MX53_PAD_ATA_DMARQ__UART2_TXD,
+	MX53_PAD_ATA_DIOR__UART2_RTS,
+	MX53_PAD_ATA_INTRQ__UART2_CTS,
+
+	MX53_PAD_ATA_CS_0__UART3_TXD,
+	MX53_PAD_ATA_CS_1__UART3_RXD,
+	MX53_PAD_ATA_DA_1__UART3_CTS,
+	MX53_PAD_ATA_DA_2__UART3_RTS,
+};
+
+#if defined(CONFIG_SERIAL_IMX) || defined(CONFIG_SERIAL_IMX_MODULE)
+static const struct imxuart_platform_data uart_pdata __initconst = {
+	.flags = IMXUART_HAVE_RTSCTS,
+};
+
+static inline void mxc_init_imx_uart(void)
+{
+	imx53_add_imx_uart(0, &uart_pdata);
+	imx53_add_imx_uart(1, &uart_pdata);
+	imx53_add_imx_uart(2, &uart_pdata);
+}
+#else /* !SERIAL_IMX */
+static inline void mxc_init_imx_uart(void)
+{
+}
+#endif /* SERIAL_IMX */
+
+static void __init mxc_board_init(void)
+{
+	mxc_iomux_v3_setup_multiple_pads(mx53evk_pads,
+					ARRAY_SIZE(mx53evk_pads));
+	mxc_init_imx_uart();
+}
+
+static void __init mx53_evk_timer_init(void)
+{
+	mx53_clocks_init(32768, 24000000, 22579200, 0);
+}
+
+static struct sys_timer mxc_timer = {
+	.init	= mx53_evk_timer_init,
+};
+
+MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
+	.map_io = mx53_map_io,
+	.init_irq = mx53_init_irq,
+	.init_machine = mxc_board_init,
+	.timer = &mxc_timer,
+MACHINE_END
diff --git a/arch/arm/mach-mx5/devices-imx53.h b/arch/arm/mach-mx5/devices-imx53.h
new file mode 100644
index 0000000..9d0ec25
--- /dev/null
+++ b/arch/arm/mach-mx5/devices-imx53.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License version 2 as published by the
+ * Free Software Foundation.
+ */
+#include <mach/mx53.h>
+#include <mach/devices-common.h>
+
+extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
+#define imx53_add_imx_uart(id, pdata)	\
+	imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
diff --git a/arch/arm/plat-mxc/devices/platform-imx-uart.c b/arch/arm/plat-mxc/devices/platform-imx-uart.c
index 7b45b78..3367706 100644
--- a/arch/arm/plat-mxc/devices/platform-imx-uart.c
+++ b/arch/arm/plat-mxc/devices/platform-imx-uart.c
@@ -104,6 +104,16 @@ const struct imx_imx_uart_1irq_data imx51_imx_uart_data[] __initconst = {
 };
 #endif /* ifdef CONFIG_SOC_IMX51 */
 
+#ifdef CONFIG_SOC_IMX53
+const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst = {
+#define imx53_imx_uart_data_entry(_id, _hwid)				\
+	imx_imx_uart_1irq_data_entry(MX53, _id, _hwid, SZ_4K)
+	imx53_imx_uart_data_entry(0, 1),
+	imx53_imx_uart_data_entry(1, 2),
+	imx53_imx_uart_data_entry(2, 3),
+};
+#endif /* ifdef CONFIG_SOC_IMX53 */
+
 struct platform_device *__init imx_add_imx_uart_3irq(
 		const struct imx_imx_uart_3irq_data *data,
 		const struct imxuart_platform_data *pdata)
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx53.h b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
index 80cb3c5..5deee01 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx53.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
@@ -42,6 +42,26 @@ typedef enum iomux_config {
 #define NON_MUX_I	0x00
 #define NON_PAD_I	0x00
 
+#define MX53_UART_PAD_CTRL		(PAD_CTL_PKE | PAD_CTL_PUE |	\
+		PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
+/* UART1 */
+#define MX53_PAD_CSI0_D10__UART1_TXD	IOMUX_PAD(0x414, 0xE8, 2, 0x0, 0, MX53_UART_PAD_CTRL)
+#define MX53_PAD_CSI0_D11__UART1_RXD	IOMUX_PAD(0x418, 0xEC, 2, 0x878, 1, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DIOW__UART1_TXD	IOMUX_PAD(0x5F0, 0x270, 3, 0x0,	0, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DMACK__UART1_RXD	IOMUX_PAD(0x5F4, 0x274, 3, 0x880, 3, MX53_UART_PAD_CTRL)
+
+/* UART2 */
+#define MX53_PAD_ATA_BUFFER_EN__UART2_RXD	IOMUX_PAD(0x5FC, 0x27C, 3, 0x880, 3, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DMARQ__UART2_TXD	IOMUX_PAD(0x5F8, 0x278, 3, 0x0, 0, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DIOR__UART2_RTS	IOMUX_PAD(0x604, 0x284, 3, 0x87C, 3, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_INTRQ__UART2_CTS	IOMUX_PAD(0x600, 0x280, 3, 0x0, 0, MX53_UART_PAD_CTRL)
+
+/* UART3 */
+#define MX53_PAD_ATA_CS_0__UART3_TXD	IOMUX_PAD(0x61C, 0x29C, 4, 0x0, 0, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_CS_1__UART3_RXD	IOMUX_PAD(0x620, 0x2A0, 4, 0x888, 3, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DA_1__UART3_CTS	IOMUX_PAD(0x614, 0x294, 4, 0x0, 0, MX53_UART_PAD_CTRL)
+#define MX53_PAD_ATA_DA_2__UART3_RTS	IOMUX_PAD(0x618, 0x298, 4, 0x884, 5, MX53_UART_PAD_CTRL)
+
 #define MX53_PAD_GPIO_19__GPIO_4_5		IOMUX_PAD(0x348, 0x20,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
 #define MX53_PAD_KEY_COL0__GPIO_4_6		IOMUX_PAD(0x34C, 0x24,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
 #define MX53_PAD_KEY_ROW0__GPIO_4_7		IOMUX_PAD(0x350, 0x28,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
index 86781f7..8f11cfa 100644
--- a/arch/arm/plat-mxc/include/mach/irqs.h
+++ b/arch/arm/plat-mxc/include/mach/irqs.h
@@ -29,8 +29,10 @@
 #define MXC_GPIO_IRQS		(32 * 4)
 #elif defined CONFIG_ARCH_MX25
 #define MXC_GPIO_IRQS		(32 * 4)
-#elif defined CONFIG_ARCH_MX5
+#elif defined CONFIG_ARCH_MX51
 #define MXC_GPIO_IRQS		(32 * 4)
+#elif defined CONFIG_ARCH_MX53
+#define MXC_GPIO_IRQS		(32 * 7)
 #elif defined CONFIG_ARCH_MXC91231
 #define MXC_GPIO_IRQS		(32 * 4)
 #elif defined CONFIG_ARCH_MX3
diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h
index 9dd9c20..ff034e0 100644
--- a/arch/arm/plat-mxc/include/mach/uncompress.h
+++ b/arch/arm/plat-mxc/include/mach/uncompress.h
@@ -63,6 +63,7 @@ static inline void flush(void)
 #define MX3X_UART1_BASE_ADDR	0x43F90000
 #define MX3X_UART2_BASE_ADDR	0x43F94000
 #define MX51_UART1_BASE_ADDR	0x73fbc000
+#define MX53_UART1_BASE_ADDR	0x53fbc000
 
 static __inline__ void __arch_decomp_setup(unsigned long arch_id)
 {
@@ -102,6 +103,9 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
 	case MACH_TYPE_EUKREA_CPUIMX51SD:
 		uart_base = MX51_UART1_BASE_ADDR;
 		break;
+	case MACH_TYPE_MX53_EVK:
+		uart_base = MX53_UART1_BASE_ADDR;
+		break;
 	default:
 		break;
 	}
-- 
1.7.0.4

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

* [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable
  2010-12-30  5:28 ` [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable yong.shen at freescale.com
@ 2010-12-30  9:51   ` Uwe Kleine-König
  2010-12-31  2:11     ` Yong Shen
  2010-12-31  2:12     ` Shawn Guo
  0 siblings, 2 replies; 10+ messages in thread
From: Uwe Kleine-König @ 2010-12-30  9:51 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Yong,

On Thu, Dec 30, 2010 at 01:28:01PM +0800, yong.shen at freescale.com wrote:
> From: Yong Shen <yong.shen@linaro.org>
> 
> 1. Add entries to Kconfig
> 2. Add machine definition
> 3. Add Uart platform data, pad setting and base address
> 4. Adjust GPIO irq number
> 
> Signed-off-by: Yong Shen <yong.shen@linaro.org>
> ---
>  arch/arm/mach-mx5/Kconfig                     |   17 +++++
>  arch/arm/mach-mx5/Makefile                    |    1 +
>  arch/arm/mach-mx5/Makefile.boot               |    9 ++-
>  arch/arm/mach-mx5/board-mx53_evk.c            |   90 +++++++++++++++++++++++++
>  arch/arm/mach-mx5/devices-imx53.h             |   13 ++++
>  arch/arm/plat-mxc/devices/platform-imx-uart.c |   10 +++
>  arch/arm/plat-mxc/include/mach/iomux-mx53.h   |   20 ++++++
>  arch/arm/plat-mxc/include/mach/irqs.h         |    4 +-
>  arch/arm/plat-mxc/include/mach/uncompress.h   |    4 +
>  9 files changed, 164 insertions(+), 4 deletions(-)
>  create mode 100644 arch/arm/mach-mx5/board-mx53_evk.c
>  create mode 100644 arch/arm/mach-mx5/devices-imx53.h
> 
> diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
> index 5011f42..97ac558 100644
> --- a/arch/arm/mach-mx5/Kconfig
> +++ b/arch/arm/mach-mx5/Kconfig
> @@ -4,6 +4,9 @@ if ARCH_MX5
>  config ARCH_MX51
>  	bool
>  
> +config ARCH_MX53
> +	bool
> +
>  config	SOC_IMX51
>  	bool
>  	select MXC_TZIC
> @@ -12,6 +15,12 @@ config	SOC_IMX51
>  	select ARCH_HAS_CPUFREQ
>  	select ARCH_MX51
>  
> +config	SOC_IMX53
> +	bool
> +	select MXC_TZIC
> +	select ARCH_MXC_IOMUX_V3
> +	select ARCH_MX53
> +
>  comment "MX5 platforms:"
>  
>  config MACH_MX51_BABBAGE
> @@ -100,4 +109,12 @@ config MACH_MX51_EFIKAMX
>  	  Include support for Genesi Efika MX nettop. This includes specific
>  	  configurations for the board and its peripherals.
>  
> +config MACH_MX53_EVK
> +	bool "Support MX53 EVK platforms"
> +	select SOC_IMX53
> +	select IMX_HAVE_PLATFORM_IMX_UART
> +	help
> +	  Include support for MX53 EVK platform. This includes specific
> +	  configurations for the board and its peripherals.
> +
>  endif
> diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
> index 026cd85..d631a4d 100644
> --- a/arch/arm/mach-mx5/Makefile
> +++ b/arch/arm/mach-mx5/Makefile
> @@ -8,6 +8,7 @@ obj-y   := cpu.o mm.o clock-mx51-mx53.o devices.o
>  obj-$(CONFIG_CPU_FREQ_IMX)    += cpu_op-mx51.o
>  obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
>  obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
> +obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
>  obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
>  obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
>  obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
> diff --git a/arch/arm/mach-mx5/Makefile.boot b/arch/arm/mach-mx5/Makefile.boot
> index 9939a19..845aa01 100644
> --- a/arch/arm/mach-mx5/Makefile.boot
> +++ b/arch/arm/mach-mx5/Makefile.boot
> @@ -1,3 +1,6 @@
> -   zreladdr-y	:= 0x90008000
> -params_phys-y	:= 0x90000100
> -initrd_phys-y	:= 0x90800000
> +   zreladdr-$(CONFIG_SOC_IMX51)        := 0x90008000
> +params_phys-$(CONFIG_SOC_IMX51)        := 0x90000100
> +initrd_phys-$(CONFIG_SOC_IMX51)        := 0x90800000
> +   zreladdr-$(CONFIG_SOC_IMX53)        := 0x70008000
> +params_phys-$(CONFIG_SOC_IMX53)        := 0x70000100
> +initrd_phys-$(CONFIG_SOC_IMX53)        := 0x70800000
> diff --git a/arch/arm/mach-mx5/board-mx53_evk.c b/arch/arm/mach-mx5/board-mx53_evk.c
> new file mode 100644
> index 0000000..84ff63a
> --- /dev/null
> +++ b/arch/arm/mach-mx5/board-mx53_evk.c
> @@ -0,0 +1,90 @@
> +/*
> + * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved.
> + * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
> + */
> +
> +/*
> + * 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.,
> + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> + */
> +
> +#include <linux/init.h>
> +#include <linux/clk.h>
> +#include <mach/common.h>
> +#include <mach/hardware.h>
> +#include <asm/mach-types.h>
> +#include <asm/mach/arch.h>
> +#include <asm/mach/time.h>
> +#include <mach/imx-uart.h>
> +#include <mach/iomux-mx53.h>
> +
> +#include "crm_regs.h"
> +#include "devices-imx53.h"
> +
> +static iomux_v3_cfg_t mx53evk_pads[] = {
mx53_evk_pads to match MX53_EVK

> +	MX53_PAD_CSI0_D10__UART1_TXD,
> +	MX53_PAD_CSI0_D11__UART1_RXD,
> +	MX53_PAD_ATA_DIOW__UART1_TXD,
> +	MX53_PAD_ATA_DMACK__UART1_RXD,
> +
> +	MX53_PAD_ATA_BUFFER_EN__UART2_RXD,
> +	MX53_PAD_ATA_DMARQ__UART2_TXD,
> +	MX53_PAD_ATA_DIOR__UART2_RTS,
> +	MX53_PAD_ATA_INTRQ__UART2_CTS,
> +
> +	MX53_PAD_ATA_CS_0__UART3_TXD,
> +	MX53_PAD_ATA_CS_1__UART3_RXD,
> +	MX53_PAD_ATA_DA_1__UART3_CTS,
> +	MX53_PAD_ATA_DA_2__UART3_RTS,
> +};
> +
> +#if defined(CONFIG_SERIAL_IMX) || defined(CONFIG_SERIAL_IMX_MODULE)
I usually advocate unconditional device registration.
> +static const struct imxuart_platform_data uart_pdata __initconst = {
mx53_evk_uart_pdata please

> +	.flags = IMXUART_HAVE_RTSCTS,
> +};
> +
> +static inline void mxc_init_imx_uart(void)
> +{
> +	imx53_add_imx_uart(0, &uart_pdata);
> +	imx53_add_imx_uart(1, &uart_pdata);
> +	imx53_add_imx_uart(2, &uart_pdata);
> +}
> +#else /* !SERIAL_IMX */
> +static inline void mxc_init_imx_uart(void)
> +{
> +}
> +#endif /* SERIAL_IMX */
> +
> +static void __init mxc_board_init(void)
please use a machine prefix (i.e. mx53_evk_board_init)

> +{
> +	mxc_iomux_v3_setup_multiple_pads(mx53evk_pads,
> +					ARRAY_SIZE(mx53evk_pads));
> +	mxc_init_imx_uart();
> +}
> +
> +static void __init mx53_evk_timer_init(void)
> +{
> +	mx53_clocks_init(32768, 24000000, 22579200, 0);
> +}
> +
> +static struct sys_timer mxc_timer = {
mx53_evk_timer ...

> +	.init	= mx53_evk_timer_init,
> +};
> +
> +MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
> +	.map_io = mx53_map_io,
> +	.init_irq = mx53_init_irq,
> +	.init_machine = mxc_board_init,
> +	.timer = &mxc_timer,
> +MACHINE_END
> diff --git a/arch/arm/mach-mx5/devices-imx53.h b/arch/arm/mach-mx5/devices-imx53.h
> new file mode 100644
> index 0000000..9d0ec25
> --- /dev/null
> +++ b/arch/arm/mach-mx5/devices-imx53.h
> @@ -0,0 +1,13 @@
> +/*
> + * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
> + *
> + * This program is free software; you can redistribute it and/or modify it under
> + * the terms of the GNU General Public License version 2 as published by the
> + * Free Software Foundation.
> + */
> +#include <mach/mx53.h>
> +#include <mach/devices-common.h>
> +
> +extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
> +#define imx53_add_imx_uart(id, pdata)	\
> +	imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
> diff --git a/arch/arm/plat-mxc/devices/platform-imx-uart.c b/arch/arm/plat-mxc/devices/platform-imx-uart.c
> index 7b45b78..3367706 100644
> --- a/arch/arm/plat-mxc/devices/platform-imx-uart.c
> +++ b/arch/arm/plat-mxc/devices/platform-imx-uart.c
> @@ -104,6 +104,16 @@ const struct imx_imx_uart_1irq_data imx51_imx_uart_data[] __initconst = {
>  };
>  #endif /* ifdef CONFIG_SOC_IMX51 */
>  
> +#ifdef CONFIG_SOC_IMX53
> +const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst = {
> +#define imx53_imx_uart_data_entry(_id, _hwid)				\
> +	imx_imx_uart_1irq_data_entry(MX53, _id, _hwid, SZ_4K)
> +	imx53_imx_uart_data_entry(0, 1),
> +	imx53_imx_uart_data_entry(1, 2),
> +	imx53_imx_uart_data_entry(2, 3),
> +};
> +#endif /* ifdef CONFIG_SOC_IMX53 */
> +
>  struct platform_device *__init imx_add_imx_uart_3irq(
>  		const struct imx_imx_uart_3irq_data *data,
>  		const struct imxuart_platform_data *pdata)
> diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx53.h b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
> index 80cb3c5..5deee01 100644
> --- a/arch/arm/plat-mxc/include/mach/iomux-mx53.h
> +++ b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
> @@ -42,6 +42,26 @@ typedef enum iomux_config {
>  #define NON_MUX_I	0x00
>  #define NON_PAD_I	0x00
>  
> +#define MX53_UART_PAD_CTRL		(PAD_CTL_PKE | PAD_CTL_PUE |	\
> +		PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
> +/* UART1 */
> +#define MX53_PAD_CSI0_D10__UART1_TXD	IOMUX_PAD(0x414, 0xE8, 2, 0x0, 0, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_CSI0_D11__UART1_RXD	IOMUX_PAD(0x418, 0xEC, 2, 0x878, 1, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DIOW__UART1_TXD	IOMUX_PAD(0x5F0, 0x270, 3, 0x0,	0, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DMACK__UART1_RXD	IOMUX_PAD(0x5F4, 0x274, 3, 0x880, 3, MX53_UART_PAD_CTRL)
> +
> +/* UART2 */
> +#define MX53_PAD_ATA_BUFFER_EN__UART2_RXD	IOMUX_PAD(0x5FC, 0x27C, 3, 0x880, 3, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DMARQ__UART2_TXD	IOMUX_PAD(0x5F8, 0x278, 3, 0x0, 0, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DIOR__UART2_RTS	IOMUX_PAD(0x604, 0x284, 3, 0x87C, 3, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_INTRQ__UART2_CTS	IOMUX_PAD(0x600, 0x280, 3, 0x0, 0, MX53_UART_PAD_CTRL)
> +
> +/* UART3 */
> +#define MX53_PAD_ATA_CS_0__UART3_TXD	IOMUX_PAD(0x61C, 0x29C, 4, 0x0, 0, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_CS_1__UART3_RXD	IOMUX_PAD(0x620, 0x2A0, 4, 0x888, 3, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DA_1__UART3_CTS	IOMUX_PAD(0x614, 0x294, 4, 0x0, 0, MX53_UART_PAD_CTRL)
> +#define MX53_PAD_ATA_DA_2__UART3_RTS	IOMUX_PAD(0x618, 0x298, 4, 0x884, 5, MX53_UART_PAD_CTRL)
> +
>  #define MX53_PAD_GPIO_19__GPIO_4_5		IOMUX_PAD(0x348, 0x20,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
>  #define MX53_PAD_KEY_COL0__GPIO_4_6		IOMUX_PAD(0x34C, 0x24,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
>  #define MX53_PAD_KEY_ROW0__GPIO_4_7		IOMUX_PAD(0x350, 0x28,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
> diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
> index 86781f7..8f11cfa 100644
> --- a/arch/arm/plat-mxc/include/mach/irqs.h
> +++ b/arch/arm/plat-mxc/include/mach/irqs.h
> @@ -29,8 +29,10 @@
>  #define MXC_GPIO_IRQS		(32 * 4)
>  #elif defined CONFIG_ARCH_MX25
>  #define MXC_GPIO_IRQS		(32 * 4)
> -#elif defined CONFIG_ARCH_MX5
> +#elif defined CONFIG_ARCH_MX51
>  #define MXC_GPIO_IRQS		(32 * 4)
> +#elif defined CONFIG_ARCH_MX53
> +#define MXC_GPIO_IRQS		(32 * 7)
You didn't read the comment before this block.

>  #elif defined CONFIG_ARCH_MXC91231
>  #define MXC_GPIO_IRQS		(32 * 4)
>  #elif defined CONFIG_ARCH_MX3
> diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h
> index 9dd9c20..ff034e0 100644
> --- a/arch/arm/plat-mxc/include/mach/uncompress.h
> +++ b/arch/arm/plat-mxc/include/mach/uncompress.h
> @@ -63,6 +63,7 @@ static inline void flush(void)
>  #define MX3X_UART1_BASE_ADDR	0x43F90000
>  #define MX3X_UART2_BASE_ADDR	0x43F94000
>  #define MX51_UART1_BASE_ADDR	0x73fbc000
> +#define MX53_UART1_BASE_ADDR	0x53fbc000
>  
>  static __inline__ void __arch_decomp_setup(unsigned long arch_id)
>  {
> @@ -102,6 +103,9 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
>  	case MACH_TYPE_EUKREA_CPUIMX51SD:
>  		uart_base = MX51_UART1_BASE_ADDR;
>  		break;
> +	case MACH_TYPE_MX53_EVK:
> +		uart_base = MX53_UART1_BASE_ADDR;
> +		break;
>  	default:
>  		break;
>  	}
Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

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

* [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code
  2010-12-30  5:28 ` [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code yong.shen at freescale.com
@ 2010-12-30  9:54   ` Uwe Kleine-König
  2010-12-30 14:35     ` Richard Zhao
  2010-12-31  2:31     ` Yong Shen
  0 siblings, 2 replies; 10+ messages in thread
From: Uwe Kleine-König @ 2010-12-30  9:54 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Dec 30, 2010 at 01:28:00PM +0800, yong.shen at freescale.com wrote:
> From: Yong Shen <yong.shen@linaro.org>
> 
> 1. pll_base address should return right value
> 2. uart parent clk is from pll3
> 3. add cpu_is_mx53 definition
> 
> Signed-off-by: Yong Shen <yong.shen@linaro.org>
> ---
>  arch/arm/mach-mx5/clock-mx51-mx53.c  |    7 ++++---
>  arch/arm/mach-mx5/crm_regs.h         |    4 ++++
>  arch/arm/plat-mxc/include/mach/mxc.h |   15 +++++++++++++--
>  3 files changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> index 9fc65bb..6db69db 100644
> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> @@ -127,11 +127,11 @@ static inline u32 _get_mux(struct clk *parent, struct clk *m0,
>  static inline void __iomem *_get_pll_base(struct clk *pll)
>  {
>  	if (pll == &pll1_main_clk)
> -		return MX51_DPLL1_BASE;
> +		return cpu_is_mx51() ? MX51_DPLL1_BASE : MX53_DPLL1_BASE;
>  	else if (pll == &pll2_sw_clk)
> -		return MX51_DPLL2_BASE;
> +		return cpu_is_mx51() ? MX51_DPLL2_BASE : MX53_DPLL2_BASE;
>  	else if (pll == &pll3_sw_clk)
> -		return MX51_DPLL3_BASE;
> +		return cpu_is_mx51() ? MX51_DPLL3_BASE : MX53_DPLL3_BASE;
>  	else if (pll == &mx53_pll4_sw_clk)
>  		return MX53_DPLL4_BASE;
>  	else
hmmm, not nice.  I assume Sascha won't take that.

> @@ -1202,6 +1202,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
>  
>  	clk_tree_init();
>  
> +	clk_set_parent(&uart_root_clk, &pll3_sw_clk);
>  	clk_enable(&cpu_clk);
>  	clk_enable(&main_bus_clk);
>  
> diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h
> index 51ff9bb..b462c22 100644
> --- a/arch/arm/mach-mx5/crm_regs.h
> +++ b/arch/arm/mach-mx5/crm_regs.h
> @@ -19,6 +19,10 @@
>  #define MX51_GPC_BASE		MX51_IO_ADDRESS(MX51_GPC_BASE_ADDR)
>  
>  /*MX53*/
> +#define MX53_CCM_BASE		MX53_IO_ADDRESS(MX53_CCM_BASE_ADDR)
> +#define MX53_DPLL1_BASE		MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
> +#define MX53_DPLL2_BASE		MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
> +#define MX53_DPLL3_BASE		MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
>  #define MX53_DPLL4_BASE		MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
>  
>  /* PLL Register Offsets */
> diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/plat-mxc/include/mach/mxc.h
> index 4abbdd1..eca8f83 100644
> --- a/arch/arm/plat-mxc/include/mach/mxc.h
> +++ b/arch/arm/plat-mxc/include/mach/mxc.h
> @@ -126,7 +126,7 @@ extern unsigned int __mxc_cpu_type;
>  # define cpu_is_mx35()		(0)
>  #endif
>  
> -#ifdef CONFIG_ARCH_MX5
> +#ifdef CONFIG_ARCH_MX51
>  # ifdef mxc_cpu_type
>  #  undef mxc_cpu_type
>  #  define mxc_cpu_type __mxc_cpu_type
> @@ -134,11 +134,22 @@ extern unsigned int __mxc_cpu_type;
>  #  define mxc_cpu_type MXC_CPU_MX51
>  # endif
>  # define cpu_is_mx51()		(mxc_cpu_type == MXC_CPU_MX51)
> -# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
>  #else
>  # define cpu_is_mx51()		(0)
>  #endif
>  
> +#ifdef CONFIG_ARCH_MX53
> +# ifdef mxc_cpu_type
> +#  undef mxc_cpu_type
> +#  define mxc_cpu_type __mxc_cpu_type
> +# else
> +#  define mxc_cpu_type MXC_CPU_MX53
> +# endif
> +# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
> +#else
> +# define cpu_is_mx53()		(0)
> +#endif
> +
>  #ifdef CONFIG_ARCH_MXC91231
>  # ifdef mxc_cpu_type
>  #  undef mxc_cpu_type
This hunk is also included in one of Richard's patches for mx50.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

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

* [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code
  2010-12-30  9:54   ` Uwe Kleine-König
@ 2010-12-30 14:35     ` Richard Zhao
  2010-12-31  2:31     ` Yong Shen
  1 sibling, 0 replies; 10+ messages in thread
From: Richard Zhao @ 2010-12-30 14:35 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

Do you think we need to add postfix -mx51-mx53 to all mx51/53 specific
files :arch/arm/mach-mx5: cpu.c devices.c mm.c crm_regs.h devices.h ?
And add obj-$(CONFIG_SOC_IMX51) := xxxxxxxxxxxxxxxx to Makefile.

Thanks
Richard

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

* [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable
  2010-12-30  9:51   ` Uwe Kleine-König
@ 2010-12-31  2:11     ` Yong Shen
  2010-12-31  2:12     ` Shawn Guo
  1 sibling, 0 replies; 10+ messages in thread
From: Yong Shen @ 2010-12-31  2:11 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

All the comments are acked for this 2/2 patch.

Thanks
Yong

2010/12/30 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> Hello Yong,
>
> On Thu, Dec 30, 2010 at 01:28:01PM +0800, yong.shen at freescale.com wrote:
>> From: Yong Shen <yong.shen@linaro.org>
>>
>> 1. Add entries to Kconfig
>> 2. Add machine definition
>> 3. Add Uart platform data, pad setting and base address
>> 4. Adjust GPIO irq number
>>
>> Signed-off-by: Yong Shen <yong.shen@linaro.org>
>> ---
>> ?arch/arm/mach-mx5/Kconfig ? ? ? ? ? ? ? ? ? ? | ? 17 +++++
>> ?arch/arm/mach-mx5/Makefile ? ? ? ? ? ? ? ? ? ?| ? ?1 +
>> ?arch/arm/mach-mx5/Makefile.boot ? ? ? ? ? ? ? | ? ?9 ++-
>> ?arch/arm/mach-mx5/board-mx53_evk.c ? ? ? ? ? ?| ? 90 +++++++++++++++++++++++++
>> ?arch/arm/mach-mx5/devices-imx53.h ? ? ? ? ? ? | ? 13 ++++
>> ?arch/arm/plat-mxc/devices/platform-imx-uart.c | ? 10 +++
>> ?arch/arm/plat-mxc/include/mach/iomux-mx53.h ? | ? 20 ++++++
>> ?arch/arm/plat-mxc/include/mach/irqs.h ? ? ? ? | ? ?4 +-
>> ?arch/arm/plat-mxc/include/mach/uncompress.h ? | ? ?4 +
>> ?9 files changed, 164 insertions(+), 4 deletions(-)
>> ?create mode 100644 arch/arm/mach-mx5/board-mx53_evk.c
>> ?create mode 100644 arch/arm/mach-mx5/devices-imx53.h
>>
>> diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
>> index 5011f42..97ac558 100644
>> --- a/arch/arm/mach-mx5/Kconfig
>> +++ b/arch/arm/mach-mx5/Kconfig
>> @@ -4,6 +4,9 @@ if ARCH_MX5
>> ?config ARCH_MX51
>> ? ? ? bool
>>
>> +config ARCH_MX53
>> + ? ? bool
>> +
>> ?config ? ? ? SOC_IMX51
>> ? ? ? bool
>> ? ? ? select MXC_TZIC
>> @@ -12,6 +15,12 @@ config ? ? SOC_IMX51
>> ? ? ? select ARCH_HAS_CPUFREQ
>> ? ? ? select ARCH_MX51
>>
>> +config ? ? ? SOC_IMX53
>> + ? ? bool
>> + ? ? select MXC_TZIC
>> + ? ? select ARCH_MXC_IOMUX_V3
>> + ? ? select ARCH_MX53
>> +
>> ?comment "MX5 platforms:"
>>
>> ?config MACH_MX51_BABBAGE
>> @@ -100,4 +109,12 @@ config MACH_MX51_EFIKAMX
>> ? ? ? ? Include support for Genesi Efika MX nettop. This includes specific
>> ? ? ? ? configurations for the board and its peripherals.
>>
>> +config MACH_MX53_EVK
>> + ? ? bool "Support MX53 EVK platforms"
>> + ? ? select SOC_IMX53
>> + ? ? select IMX_HAVE_PLATFORM_IMX_UART
>> + ? ? help
>> + ? ? ? Include support for MX53 EVK platform. This includes specific
>> + ? ? ? configurations for the board and its peripherals.
>> +
>> ?endif
>> diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
>> index 026cd85..d631a4d 100644
>> --- a/arch/arm/mach-mx5/Makefile
>> +++ b/arch/arm/mach-mx5/Makefile
>> @@ -8,6 +8,7 @@ obj-y ? := cpu.o mm.o clock-mx51-mx53.o devices.o
>> ?obj-$(CONFIG_CPU_FREQ_IMX) ? ?+= cpu_op-mx51.o
>> ?obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
>> ?obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
>> +obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
>> ?obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
>> ?obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
>> ?obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
>> diff --git a/arch/arm/mach-mx5/Makefile.boot b/arch/arm/mach-mx5/Makefile.boot
>> index 9939a19..845aa01 100644
>> --- a/arch/arm/mach-mx5/Makefile.boot
>> +++ b/arch/arm/mach-mx5/Makefile.boot
>> @@ -1,3 +1,6 @@
>> - ? zreladdr-y ? ? ? ?:= 0x90008000
>> -params_phys-y ? ? ? ?:= 0x90000100
>> -initrd_phys-y ? ? ? ?:= 0x90800000
>> + ? zreladdr-$(CONFIG_SOC_IMX51) ? ? ? ?:= 0x90008000
>> +params_phys-$(CONFIG_SOC_IMX51) ? ? ? ?:= 0x90000100
>> +initrd_phys-$(CONFIG_SOC_IMX51) ? ? ? ?:= 0x90800000
>> + ? zreladdr-$(CONFIG_SOC_IMX53) ? ? ? ?:= 0x70008000
>> +params_phys-$(CONFIG_SOC_IMX53) ? ? ? ?:= 0x70000100
>> +initrd_phys-$(CONFIG_SOC_IMX53) ? ? ? ?:= 0x70800000
>> diff --git a/arch/arm/mach-mx5/board-mx53_evk.c b/arch/arm/mach-mx5/board-mx53_evk.c
>> new file mode 100644
>> index 0000000..84ff63a
>> --- /dev/null
>> +++ b/arch/arm/mach-mx5/board-mx53_evk.c
>> @@ -0,0 +1,90 @@
>> +/*
>> + * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved.
>> + * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
>> + */
>> +
>> +/*
>> + * 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.,
>> + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>> + */
>> +
>> +#include <linux/init.h>
>> +#include <linux/clk.h>
>> +#include <mach/common.h>
>> +#include <mach/hardware.h>
>> +#include <asm/mach-types.h>
>> +#include <asm/mach/arch.h>
>> +#include <asm/mach/time.h>
>> +#include <mach/imx-uart.h>
>> +#include <mach/iomux-mx53.h>
>> +
>> +#include "crm_regs.h"
>> +#include "devices-imx53.h"
>> +
>> +static iomux_v3_cfg_t mx53evk_pads[] = {
> mx53_evk_pads to match MX53_EVK
>
>> + ? ? MX53_PAD_CSI0_D10__UART1_TXD,
>> + ? ? MX53_PAD_CSI0_D11__UART1_RXD,
>> + ? ? MX53_PAD_ATA_DIOW__UART1_TXD,
>> + ? ? MX53_PAD_ATA_DMACK__UART1_RXD,
>> +
>> + ? ? MX53_PAD_ATA_BUFFER_EN__UART2_RXD,
>> + ? ? MX53_PAD_ATA_DMARQ__UART2_TXD,
>> + ? ? MX53_PAD_ATA_DIOR__UART2_RTS,
>> + ? ? MX53_PAD_ATA_INTRQ__UART2_CTS,
>> +
>> + ? ? MX53_PAD_ATA_CS_0__UART3_TXD,
>> + ? ? MX53_PAD_ATA_CS_1__UART3_RXD,
>> + ? ? MX53_PAD_ATA_DA_1__UART3_CTS,
>> + ? ? MX53_PAD_ATA_DA_2__UART3_RTS,
>> +};
>> +
>> +#if defined(CONFIG_SERIAL_IMX) || defined(CONFIG_SERIAL_IMX_MODULE)
> I usually advocate unconditional device registration.
>> +static const struct imxuart_platform_data uart_pdata __initconst = {
> mx53_evk_uart_pdata please
>
>> + ? ? .flags = IMXUART_HAVE_RTSCTS,
>> +};
>> +
>> +static inline void mxc_init_imx_uart(void)
>> +{
>> + ? ? imx53_add_imx_uart(0, &uart_pdata);
>> + ? ? imx53_add_imx_uart(1, &uart_pdata);
>> + ? ? imx53_add_imx_uart(2, &uart_pdata);
>> +}
>> +#else /* !SERIAL_IMX */
>> +static inline void mxc_init_imx_uart(void)
>> +{
>> +}
>> +#endif /* SERIAL_IMX */
>> +
>> +static void __init mxc_board_init(void)
> please use a machine prefix (i.e. mx53_evk_board_init)
>
>> +{
>> + ? ? mxc_iomux_v3_setup_multiple_pads(mx53evk_pads,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ARRAY_SIZE(mx53evk_pads));
>> + ? ? mxc_init_imx_uart();
>> +}
>> +
>> +static void __init mx53_evk_timer_init(void)
>> +{
>> + ? ? mx53_clocks_init(32768, 24000000, 22579200, 0);
>> +}
>> +
>> +static struct sys_timer mxc_timer = {
> mx53_evk_timer ...
>
>> + ? ? .init ? = mx53_evk_timer_init,
>> +};
>> +
>> +MACHINE_START(MX53_EVK, "Freescale MX53 EVK Board")
>> + ? ? .map_io = mx53_map_io,
>> + ? ? .init_irq = mx53_init_irq,
>> + ? ? .init_machine = mxc_board_init,
>> + ? ? .timer = &mxc_timer,
>> +MACHINE_END
>> diff --git a/arch/arm/mach-mx5/devices-imx53.h b/arch/arm/mach-mx5/devices-imx53.h
>> new file mode 100644
>> index 0000000..9d0ec25
>> --- /dev/null
>> +++ b/arch/arm/mach-mx5/devices-imx53.h
>> @@ -0,0 +1,13 @@
>> +/*
>> + * Copyright (C) 2010 Yong Shen. <Yong.Shen@linaro.org>
>> + *
>> + * This program is free software; you can redistribute it and/or modify it under
>> + * the terms of the GNU General Public License version 2 as published by the
>> + * Free Software Foundation.
>> + */
>> +#include <mach/mx53.h>
>> +#include <mach/devices-common.h>
>> +
>> +extern const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst;
>> +#define imx53_add_imx_uart(id, pdata) ? ? ? ?\
>> + ? ? imx_add_imx_uart_1irq(&imx53_imx_uart_data[id], pdata)
>> diff --git a/arch/arm/plat-mxc/devices/platform-imx-uart.c b/arch/arm/plat-mxc/devices/platform-imx-uart.c
>> index 7b45b78..3367706 100644
>> --- a/arch/arm/plat-mxc/devices/platform-imx-uart.c
>> +++ b/arch/arm/plat-mxc/devices/platform-imx-uart.c
>> @@ -104,6 +104,16 @@ const struct imx_imx_uart_1irq_data imx51_imx_uart_data[] __initconst = {
>> ?};
>> ?#endif /* ifdef CONFIG_SOC_IMX51 */
>>
>> +#ifdef CONFIG_SOC_IMX53
>> +const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst = {
>> +#define imx53_imx_uart_data_entry(_id, _hwid) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\
>> + ? ? imx_imx_uart_1irq_data_entry(MX53, _id, _hwid, SZ_4K)
>> + ? ? imx53_imx_uart_data_entry(0, 1),
>> + ? ? imx53_imx_uart_data_entry(1, 2),
>> + ? ? imx53_imx_uart_data_entry(2, 3),
>> +};
>> +#endif /* ifdef CONFIG_SOC_IMX53 */
>> +
>> ?struct platform_device *__init imx_add_imx_uart_3irq(
>> ? ? ? ? ? ? ? const struct imx_imx_uart_3irq_data *data,
>> ? ? ? ? ? ? ? const struct imxuart_platform_data *pdata)
>> diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx53.h b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
>> index 80cb3c5..5deee01 100644
>> --- a/arch/arm/plat-mxc/include/mach/iomux-mx53.h
>> +++ b/arch/arm/plat-mxc/include/mach/iomux-mx53.h
>> @@ -42,6 +42,26 @@ typedef enum iomux_config {
>> ?#define NON_MUX_I ? ?0x00
>> ?#define NON_PAD_I ? ?0x00
>>
>> +#define MX53_UART_PAD_CTRL ? ? ? ? ? (PAD_CTL_PKE | PAD_CTL_PUE | ? ?\
>> + ? ? ? ? ? ? PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
>> +/* UART1 */
>> +#define MX53_PAD_CSI0_D10__UART1_TXD IOMUX_PAD(0x414, 0xE8, 2, 0x0, 0, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_CSI0_D11__UART1_RXD IOMUX_PAD(0x418, 0xEC, 2, 0x878, 1, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DIOW__UART1_TXD IOMUX_PAD(0x5F0, 0x270, 3, 0x0, 0, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DMACK__UART1_RXD ? ? ? ?IOMUX_PAD(0x5F4, 0x274, 3, 0x880, 3, MX53_UART_PAD_CTRL)
>> +
>> +/* UART2 */
>> +#define MX53_PAD_ATA_BUFFER_EN__UART2_RXD ? ?IOMUX_PAD(0x5FC, 0x27C, 3, 0x880, 3, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DMARQ__UART2_TXD ? ? ? ?IOMUX_PAD(0x5F8, 0x278, 3, 0x0, 0, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DIOR__UART2_RTS IOMUX_PAD(0x604, 0x284, 3, 0x87C, 3, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_INTRQ__UART2_CTS ? ? ? ?IOMUX_PAD(0x600, 0x280, 3, 0x0, 0, MX53_UART_PAD_CTRL)
>> +
>> +/* UART3 */
>> +#define MX53_PAD_ATA_CS_0__UART3_TXD IOMUX_PAD(0x61C, 0x29C, 4, 0x0, 0, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_CS_1__UART3_RXD IOMUX_PAD(0x620, 0x2A0, 4, 0x888, 3, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DA_1__UART3_CTS IOMUX_PAD(0x614, 0x294, 4, 0x0, 0, MX53_UART_PAD_CTRL)
>> +#define MX53_PAD_ATA_DA_2__UART3_RTS IOMUX_PAD(0x618, 0x298, 4, 0x884, 5, MX53_UART_PAD_CTRL)
>> +
>> ?#define MX53_PAD_GPIO_19__GPIO_4_5 ? ? ? ? ? IOMUX_PAD(0x348, 0x20,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
>> ?#define MX53_PAD_KEY_COL0__GPIO_4_6 ? ? ? ? ?IOMUX_PAD(0x34C, 0x24,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
>> ?#define MX53_PAD_KEY_ROW0__GPIO_4_7 ? ? ? ? ?IOMUX_PAD(0x350, 0x28,IOMUX_CONFIG_ALT1, 0x0, 0, NO_PAD_CTRL)
>> diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
>> index 86781f7..8f11cfa 100644
>> --- a/arch/arm/plat-mxc/include/mach/irqs.h
>> +++ b/arch/arm/plat-mxc/include/mach/irqs.h
>> @@ -29,8 +29,10 @@
>> ?#define MXC_GPIO_IRQS ? ? ? ? ? ? ? ?(32 * 4)
>> ?#elif defined CONFIG_ARCH_MX25
>> ?#define MXC_GPIO_IRQS ? ? ? ? ? ? ? ?(32 * 4)
>> -#elif defined CONFIG_ARCH_MX5
>> +#elif defined CONFIG_ARCH_MX51
>> ?#define MXC_GPIO_IRQS ? ? ? ? ? ? ? ?(32 * 4)
>> +#elif defined CONFIG_ARCH_MX53
>> +#define MXC_GPIO_IRQS ? ? ? ? ? ? ? ?(32 * 7)
> You didn't read the comment before this block.
>
>> ?#elif defined CONFIG_ARCH_MXC91231
>> ?#define MXC_GPIO_IRQS ? ? ? ? ? ? ? ?(32 * 4)
>> ?#elif defined CONFIG_ARCH_MX3
>> diff --git a/arch/arm/plat-mxc/include/mach/uncompress.h b/arch/arm/plat-mxc/include/mach/uncompress.h
>> index 9dd9c20..ff034e0 100644
>> --- a/arch/arm/plat-mxc/include/mach/uncompress.h
>> +++ b/arch/arm/plat-mxc/include/mach/uncompress.h
>> @@ -63,6 +63,7 @@ static inline void flush(void)
>> ?#define MX3X_UART1_BASE_ADDR 0x43F90000
>> ?#define MX3X_UART2_BASE_ADDR 0x43F94000
>> ?#define MX51_UART1_BASE_ADDR 0x73fbc000
>> +#define MX53_UART1_BASE_ADDR 0x53fbc000
>>
>> ?static __inline__ void __arch_decomp_setup(unsigned long arch_id)
>> ?{
>> @@ -102,6 +103,9 @@ static __inline__ void __arch_decomp_setup(unsigned long arch_id)
>> ? ? ? case MACH_TYPE_EUKREA_CPUIMX51SD:
>> ? ? ? ? ? ? ? uart_base = MX51_UART1_BASE_ADDR;
>> ? ? ? ? ? ? ? break;
>> + ? ? case MACH_TYPE_MX53_EVK:
>> + ? ? ? ? ? ? uart_base = MX53_UART1_BASE_ADDR;
>> + ? ? ? ? ? ? break;
>> ? ? ? default:
>> ? ? ? ? ? ? ? break;
>> ? ? ? }
> Best regards
> Uwe
>
> --
> Pengutronix e.K. ? ? ? ? ? ? ? ? ? ? ? ? ? | Uwe Kleine-K?nig ? ? ? ? ? ?|
> Industrial Linux Solutions ? ? ? ? ? ? ? ? | http://www.pengutronix.de/ ?|
>

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

* [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable
  2010-12-30  9:51   ` Uwe Kleine-König
  2010-12-31  2:11     ` Yong Shen
@ 2010-12-31  2:12     ` Shawn Guo
  1 sibling, 0 replies; 10+ messages in thread
From: Shawn Guo @ 2010-12-31  2:12 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Dec 30, 2010 at 10:51:42AM +0100, Uwe Kleine-K?nig wrote:
> Hello Yong,
> 
> On Thu, Dec 30, 2010 at 01:28:01PM +0800, yong.shen at freescale.com wrote:
> > From: Yong Shen <yong.shen@linaro.org>
[...]
> > diff --git a/arch/arm/plat-mxc/include/mach/irqs.h b/arch/arm/plat-mxc/include/mach/irqs.h
> > index 86781f7..8f11cfa 100644
> > --- a/arch/arm/plat-mxc/include/mach/irqs.h
> > +++ b/arch/arm/plat-mxc/include/mach/irqs.h
> > @@ -29,8 +29,10 @@
> >  #define MXC_GPIO_IRQS                (32 * 4)
> >  #elif defined CONFIG_ARCH_MX25
> >  #define MXC_GPIO_IRQS                (32 * 4)
> > -#elif defined CONFIG_ARCH_MX5
> > +#elif defined CONFIG_ARCH_MX51
> >  #define MXC_GPIO_IRQS                (32 * 4)
> > +#elif defined CONFIG_ARCH_MX53
> > +#define MXC_GPIO_IRQS                (32 * 7)
> You didn't read the comment before this block.
> 
I did not read the comment either when I was trying to add mxs
support into imx-single-zimage. But the error during the run-time
forced me to go back and read the comment :)

-- 
Regards,
Shawn

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

* [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code
  2010-12-30  9:54   ` Uwe Kleine-König
  2010-12-30 14:35     ` Richard Zhao
@ 2010-12-31  2:31     ` Yong Shen
  2010-12-31 16:20       ` Uwe Kleine-König
  1 sibling, 1 reply; 10+ messages in thread
From: Yong Shen @ 2010-12-31  2:31 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Uwe,

Thanks for comments, some discussion follewed inline.

Yong

2010/12/30 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> On Thu, Dec 30, 2010 at 01:28:00PM +0800, yong.shen at freescale.com wrote:
>> From: Yong Shen <yong.shen@linaro.org>
>>
>> 1. pll_base address should return right value
>> 2. uart parent clk is from pll3
>> 3. add cpu_is_mx53 definition
>>
>> Signed-off-by: Yong Shen <yong.shen@linaro.org>
>> ---
>> ?arch/arm/mach-mx5/clock-mx51-mx53.c ?| ? ?7 ++++---
>> ?arch/arm/mach-mx5/crm_regs.h ? ? ? ? | ? ?4 ++++
>> ?arch/arm/plat-mxc/include/mach/mxc.h | ? 15 +++++++++++++--
>> ?3 files changed, 21 insertions(+), 5 deletions(-)
>>
>> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
>> index 9fc65bb..6db69db 100644
>> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
>> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
>> @@ -127,11 +127,11 @@ static inline u32 _get_mux(struct clk *parent, struct clk *m0,
>> ?static inline void __iomem *_get_pll_base(struct clk *pll)
>> ?{
>> ? ? ? if (pll == &pll1_main_clk)
>> - ? ? ? ? ? ? return MX51_DPLL1_BASE;
>> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL1_BASE : MX53_DPLL1_BASE;
>> ? ? ? else if (pll == &pll2_sw_clk)
>> - ? ? ? ? ? ? return MX51_DPLL2_BASE;
>> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL2_BASE : MX53_DPLL2_BASE;
>> ? ? ? else if (pll == &pll3_sw_clk)
>> - ? ? ? ? ? ? return MX51_DPLL3_BASE;
>> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL3_BASE : MX53_DPLL3_BASE;
>> ? ? ? else if (pll == &mx53_pll4_sw_clk)
>> ? ? ? ? ? ? ? return MX53_DPLL4_BASE;
>> ? ? ? else
> hmmm, not nice. ?I assume Sascha won't take that.
Since the file name is clock-mx51-mx53.c, so this file is supposed to
contain clock information either for mx51 or mx53. And you can find
cpu_is_mx5x() is widely used across the file for this purpose, which
is way I also adapt it in this function. So IMHO, I guess this is the
straight way to add it with little code changes. Please correct me.

>
>> @@ -1202,6 +1202,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
>>
>> ? ? ? clk_tree_init();
>>
>> + ? ? clk_set_parent(&uart_root_clk, &pll3_sw_clk);
>> ? ? ? clk_enable(&cpu_clk);
>> ? ? ? clk_enable(&main_bus_clk);
>>
>> diff --git a/arch/arm/mach-mx5/crm_regs.h b/arch/arm/mach-mx5/crm_regs.h
>> index 51ff9bb..b462c22 100644
>> --- a/arch/arm/mach-mx5/crm_regs.h
>> +++ b/arch/arm/mach-mx5/crm_regs.h
>> @@ -19,6 +19,10 @@
>> ?#define MX51_GPC_BASE ? ? ? ? ? ? ? ?MX51_IO_ADDRESS(MX51_GPC_BASE_ADDR)
>>
>> ?/*MX53*/
>> +#define MX53_CCM_BASE ? ? ? ? ? ? ? ?MX53_IO_ADDRESS(MX53_CCM_BASE_ADDR)
>> +#define MX53_DPLL1_BASE ? ? ? ? ? ? ?MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
>> +#define MX53_DPLL2_BASE ? ? ? ? ? ? ?MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
>> +#define MX53_DPLL3_BASE ? ? ? ? ? ? ?MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
>> ?#define MX53_DPLL4_BASE ? ? ? ? ? ? ?MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
>>
>> ?/* PLL Register Offsets */
>> diff --git a/arch/arm/plat-mxc/include/mach/mxc.h b/arch/arm/plat-mxc/include/mach/mxc.h
>> index 4abbdd1..eca8f83 100644
>> --- a/arch/arm/plat-mxc/include/mach/mxc.h
>> +++ b/arch/arm/plat-mxc/include/mach/mxc.h
>> @@ -126,7 +126,7 @@ extern unsigned int __mxc_cpu_type;
>> ?# define cpu_is_mx35() ? ? ? ? ? ? ? (0)
>> ?#endif
>>
>> -#ifdef CONFIG_ARCH_MX5
>> +#ifdef CONFIG_ARCH_MX51
>> ?# ifdef mxc_cpu_type
>> ?# ?undef mxc_cpu_type
>> ?# ?define mxc_cpu_type __mxc_cpu_type
>> @@ -134,11 +134,22 @@ extern unsigned int __mxc_cpu_type;
>> ?# ?define mxc_cpu_type MXC_CPU_MX51
>> ?# endif
>> ?# define cpu_is_mx51() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX51)
>> -# define cpu_is_mx53() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX53)
>> ?#else
>> ?# define cpu_is_mx51() ? ? ? ? ? ? ? (0)
>> ?#endif
>>
>> +#ifdef CONFIG_ARCH_MX53
>> +# ifdef mxc_cpu_type
>> +# ?undef mxc_cpu_type
>> +# ?define mxc_cpu_type __mxc_cpu_type
>> +# else
>> +# ?define mxc_cpu_type MXC_CPU_MX53
>> +# endif
>> +# define cpu_is_mx53() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX53)
>> +#else
>> +# define cpu_is_mx53() ? ? ? ? ? ? ? (0)
>> +#endif
>> +
>> ?#ifdef CONFIG_ARCH_MXC91231
>> ?# ifdef mxc_cpu_type
>> ?# ?undef mxc_cpu_type
> This hunk is also included in one of Richard's patches for mx50.
Since Richard's patches are not in the tree so far, so I can not
develop my patch based on his code, which is why there are some
duplicated code here. But I guess it should not be an issue, since
maintainer can easily resolve this conflict when merging this patch.

>
> Best regards
> Uwe
>
> --
> Pengutronix e.K. ? ? ? ? ? ? ? ? ? ? ? ? ? | Uwe Kleine-K?nig ? ? ? ? ? ?|
> Industrial Linux Solutions ? ? ? ? ? ? ? ? | http://www.pengutronix.de/ ?|
>

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

* [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code
  2010-12-31  2:31     ` Yong Shen
@ 2010-12-31 16:20       ` Uwe Kleine-König
  0 siblings, 0 replies; 10+ messages in thread
From: Uwe Kleine-König @ 2010-12-31 16:20 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Yong[1],
On Fri, Dec 31, 2010 at 10:31:30AM +0800, Yong Shen wrote:
> 2010/12/30 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> > On Thu, Dec 30, 2010 at 01:28:00PM +0800, yong.shen at freescale.com wrote:
> >> From: Yong Shen <yong.shen@linaro.org>
> >>
> >> 1. pll_base address should return right value
> >> 2. uart parent clk is from pll3
> >> 3. add cpu_is_mx53 definition
> >>
> >> Signed-off-by: Yong Shen <yong.shen@linaro.org>
> >> ---
> >> ?arch/arm/mach-mx5/clock-mx51-mx53.c ?| ? ?7 ++++---
> >> ?arch/arm/mach-mx5/crm_regs.h ? ? ? ? | ? ?4 ++++
> >> ?arch/arm/plat-mxc/include/mach/mxc.h | ? 15 +++++++++++++--
> >> ?3 files changed, 21 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> >> index 9fc65bb..6db69db 100644
> >> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> >> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> >> @@ -127,11 +127,11 @@ static inline u32 _get_mux(struct clk *parent, struct clk *m0,
> >> ?static inline void __iomem *_get_pll_base(struct clk *pll)
> >> ?{
> >> ? ? ? if (pll == &pll1_main_clk)
> >> - ? ? ? ? ? ? return MX51_DPLL1_BASE;
> >> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL1_BASE : MX53_DPLL1_BASE;
> >> ? ? ? else if (pll == &pll2_sw_clk)
> >> - ? ? ? ? ? ? return MX51_DPLL2_BASE;
> >> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL2_BASE : MX53_DPLL2_BASE;
> >> ? ? ? else if (pll == &pll3_sw_clk)
> >> - ? ? ? ? ? ? return MX51_DPLL3_BASE;
> >> + ? ? ? ? ? ? return cpu_is_mx51() ? MX51_DPLL3_BASE : MX53_DPLL3_BASE;
> >> ? ? ? else if (pll == &mx53_pll4_sw_clk)
> >> ? ? ? ? ? ? ? return MX53_DPLL4_BASE;
> >> ? ? ? else
> > hmmm, not nice. ?I assume Sascha won't take that.
> Since the file name is clock-mx51-mx53.c, so this file is supposed to
> contain clock information either for mx51 or mx53. And you can find
> cpu_is_mx5x() is widely used across the file for this purpose, which
> is way I also adapt it in this function. So IMHO, I guess this is the
> straight way to add it with little code changes. Please correct me.
little code changes are not always the first goal.  Note that this code
results in a runtime choice, it would be nicer to have a dedicated
function for mx51 and mx53 each and set pointers to the respective
function.  OTOH this is not a hot path.
 
> >> --- a/arch/arm/plat-mxc/include/mach/mxc.h
> >> +++ b/arch/arm/plat-mxc/include/mach/mxc.h
> >> @@ -126,7 +126,7 @@ extern unsigned int __mxc_cpu_type;
> >> ?# define cpu_is_mx35() ? ? ? ? ? ? ? (0)
> >> ?#endif
> >>
> >> -#ifdef CONFIG_ARCH_MX5
> >> +#ifdef CONFIG_ARCH_MX51
> >> ?# ifdef mxc_cpu_type
> >> ?# ?undef mxc_cpu_type
> >> ?# ?define mxc_cpu_type __mxc_cpu_type
> >> @@ -134,11 +134,22 @@ extern unsigned int __mxc_cpu_type;
> >> ?# ?define mxc_cpu_type MXC_CPU_MX51
> >> ?# endif
> >> ?# define cpu_is_mx51() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX51)
> >> -# define cpu_is_mx53() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX53)
> >> ?#else
> >> ?# define cpu_is_mx51() ? ? ? ? ? ? ? (0)
> >> ?#endif
> >>
> >> +#ifdef CONFIG_ARCH_MX53
> >> +# ifdef mxc_cpu_type
> >> +# ?undef mxc_cpu_type
> >> +# ?define mxc_cpu_type __mxc_cpu_type
> >> +# else
> >> +# ?define mxc_cpu_type MXC_CPU_MX53
> >> +# endif
> >> +# define cpu_is_mx53() ? ? ? ? ? ? ? (mxc_cpu_type == MXC_CPU_MX53)
> >> +#else
> >> +# define cpu_is_mx53() ? ? ? ? ? ? ? (0)
> >> +#endif
> >> +
> >> ?#ifdef CONFIG_ARCH_MXC91231
> >> ?# ifdef mxc_cpu_type
> >> ?# ?undef mxc_cpu_type
> > This hunk is also included in one of Richard's patches for mx50.
> Since Richard's patches are not in the tree so far, so I can not
> develop my patch based on his code, which is why there are some
> duplicated code here. But I guess it should not be an issue, since
> maintainer can easily resolve this conflict when merging this patch.
This was only meant as hint to make you, Richard and Sascha aware of it.

Best regards and happy new year,
Uwe

[1] I hope this is the right part of your name to address you.

-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

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

end of thread, other threads:[~2010-12-31 16:20 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-30  5:27 [PATCH v2] ARM i.MX53 MSL patch set yong.shen at freescale.com
2010-12-30  5:28 ` [PATCH v2 1/2] ARM i.MX53: Some bug fix about MX53 MSL code yong.shen at freescale.com
2010-12-30  9:54   ` Uwe Kleine-König
2010-12-30 14:35     ` Richard Zhao
2010-12-31  2:31     ` Yong Shen
2010-12-31 16:20       ` Uwe Kleine-König
2010-12-30  5:28 ` [PATCH v2 2/2] ARM i.MX53: Make MX53 EVK bootable yong.shen at freescale.com
2010-12-30  9:51   ` Uwe Kleine-König
2010-12-31  2:11     ` Yong Shen
2010-12-31  2:12     ` Shawn Guo

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.