aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx5
diff options
context:
space:
mode:
authorYong Shen <yong.shen@freescale.com>2011-01-12 04:14:47 -0500
committerSascha Hauer <s.hauer@pengutronix.de>2011-01-13 04:02:49 -0500
commit3b18c349285a534755e8f84c273aeafac41fdf3b (patch)
tree65c3afbd9952e3eecee5d1d4c001d3d1e7f6b4c5 /arch/arm/mach-mx5
parent6f12ea4e54b7f213a463e2e03768cf02f0cd77a9 (diff)
ARM i.MX53 enable LOCO board bootup
1. Add Kconfig and Makefile entries 2. Add board definition 3. enable uart and fec for LOCO board Signed-off-by: Yong Shen <yong.shen@freescale.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx5')
-rw-r--r--arch/arm/mach-mx5/Kconfig8
-rw-r--r--arch/arm/mach-mx5/Makefile1
-rw-r--r--arch/arm/mach-mx5/board-mx53_loco.c111
3 files changed, 120 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 7c85853de2ca..de4fa992fc3e 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -141,6 +141,14 @@ config MACH_MX53_SMD
141 Include support for MX53 SMD platform. This includes specific 141 Include support for MX53 SMD platform. This includes specific
142 configurations for the board and its peripherals. 142 configurations for the board and its peripherals.
143 143
144config MACH_MX53_LOCO
145 bool "Support MX53 LOCO platforms"
146 select SOC_IMX53
147 select IMX_HAVE_PLATFORM_IMX_UART
148 help
149 Include support for MX53 LOCO platform. This includes specific
150 configurations for the board and its peripherals.
151
144config MACH_MX50_RDP 152config MACH_MX50_RDP
145 bool "Support MX50 reference design platform" 153 bool "Support MX50 reference design platform"
146 depends on BROKEN 154 depends on BROKEN
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
index 895bfe33d6bd..0d43be98e51c 100644
--- a/arch/arm/mach-mx5/Makefile
+++ b/arch/arm/mach-mx5/Makefile
@@ -11,6 +11,7 @@ obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
11obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o 11obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
12obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o 12obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
13obj-$(CONFIG_MACH_MX53_SMD) += board-mx53_smd.o 13obj-$(CONFIG_MACH_MX53_SMD) += board-mx53_smd.o
14obj-$(CONFIG_MACH_MX53_LOCO) += board-mx53_loco.o
14obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o 15obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
15obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o 16obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
16obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o 17obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c
new file mode 100644
index 000000000000..d1348e04ace3
--- /dev/null
+++ b/arch/arm/mach-mx5/board-mx53_loco.c
@@ -0,0 +1,111 @@
1/*
2 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 */
4
5/*
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21#include <linux/init.h>
22#include <linux/clk.h>
23#include <linux/fec.h>
24#include <linux/delay.h>
25#include <linux/gpio.h>
26
27#include <mach/common.h>
28#include <mach/hardware.h>
29#include <mach/imx-uart.h>
30#include <mach/iomux-mx53.h>
31
32#include <asm/mach-types.h>
33#include <asm/mach/arch.h>
34#include <asm/mach/time.h>
35
36#include "crm_regs.h"
37#include "devices-imx53.h"
38
39#define LOCO_FEC_PHY_RST IMX_GPIO_NR(7, 6)
40
41static iomux_v3_cfg_t mx53_loco_pads[] = {
42 MX53_PAD_CSI0_D10__UART1_TXD,
43 MX53_PAD_CSI0_D11__UART1_RXD,
44 MX53_PAD_ATA_DIOW__UART1_TXD,
45 MX53_PAD_ATA_DMACK__UART1_RXD,
46
47 MX53_PAD_ATA_BUFFER_EN__UART2_RXD,
48 MX53_PAD_ATA_DMARQ__UART2_TXD,
49 MX53_PAD_ATA_DIOR__UART2_RTS,
50 MX53_PAD_ATA_INTRQ__UART2_CTS,
51
52 MX53_PAD_ATA_CS_0__UART3_TXD,
53 MX53_PAD_ATA_CS_1__UART3_RXD,
54 MX53_PAD_ATA_DA_1__UART3_CTS,
55 MX53_PAD_ATA_DA_2__UART3_RTS,
56};
57
58static const struct imxuart_platform_data mx53_loco_uart_data __initconst = {
59 .flags = IMXUART_HAVE_RTSCTS,
60};
61
62static inline void mx53_loco_init_uart(void)
63{
64 imx53_add_imx_uart(0, &mx53_loco_uart_data);
65 imx53_add_imx_uart(1, &mx53_loco_uart_data);
66 imx53_add_imx_uart(2, &mx53_loco_uart_data);
67}
68
69static inline void mx53_loco_fec_reset(void)
70{
71 int ret;
72
73 /* reset FEC PHY */
74 ret = gpio_request(LOCO_FEC_PHY_RST, "fec-phy-reset");
75 if (ret) {
76 printk(KERN_ERR"failed to get GPIO_FEC_PHY_RESET: %d\n", ret);
77 return;
78 }
79 gpio_direction_output(LOCO_FEC_PHY_RST, 0);
80 msleep(1);
81 gpio_set_value(LOCO_FEC_PHY_RST, 1);
82}
83
84static struct fec_platform_data mx53_loco_fec_data = {
85 .phy = PHY_INTERFACE_MODE_RMII,
86};
87
88static void __init mx53_loco_board_init(void)
89{
90 mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
91 ARRAY_SIZE(mx53_loco_pads));
92 mx53_loco_init_uart();
93 mx53_loco_fec_reset();
94 imx53_add_fec(&mx53_loco_fec_data);
95}
96
97static void __init mx53_loco_timer_init(void)
98{
99 mx53_clocks_init(32768, 24000000, 0, 0);
100}
101
102static struct sys_timer mx53_loco_timer = {
103 .init = mx53_loco_timer_init,
104};
105
106MACHINE_START(MX53_LOCO, "Freescale MX53 LOCO Board")
107 .map_io = mx53_map_io,
108 .init_irq = mx53_init_irq,
109 .init_machine = mx53_loco_board_init,
110 .timer = &mx53_loco_timer,
111MACHINE_END