[U-Boot] [PATCH 1/2] mx5: Add default pin initializers

Benoît Thébaudeau benoit.thebaudeau at advansee.com
Tue Aug 14 17:46:54 CEST 2012


Create default pin initialization functions for the default iomux function
assignments of the main peripherals.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau at advansee.com>
Cc: Stefano Babic <sbabic at denx.de>
---
 .../arch/arm/cpu/armv7/mx5/soc.c                   |  139 ++++++++++++++++++++
 .../arch/arm/include/asm/arch-mx5/sys_proto.h      |    5 +
 2 files changed, 144 insertions(+)

diff --git u-boot-4d3c95f.orig/arch/arm/cpu/armv7/mx5/soc.c u-boot-4d3c95f/arch/arm/cpu/armv7/mx5/soc.c
index 3f5a4f7..ee19b54 100644
--- u-boot-4d3c95f.orig/arch/arm/cpu/armv7/mx5/soc.c
+++ u-boot-4d3c95f/arch/arm/cpu/armv7/mx5/soc.c
@@ -25,6 +25,8 @@
 
 #include <common.h>
 #include <asm/arch/imx-regs.h>
+#include <asm/arch/mx5x_pins.h>
+#include <asm/arch/iomux.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/sys_proto.h>
 
@@ -71,6 +73,143 @@ u32 get_cpu_rev(void)
 	return system_rev;
 }
 
+#ifdef CONFIG_MXC_UART
+#if CONFIG_MXC_UART_BASE == UART1_BASE
+#ifdef CONFIG_MX51
+void mx51_uart1_init_pins(void)
+{
+	int in_pad, out_pad;
+
+	/* Set up pins for UART1. */
+	mxc_request_iomux(MX51_PIN_UART1_RXD, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_UART1_TXD, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_UART1_RTS, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_UART1_CTS, IOMUX_CONFIG_ALT0);
+
+	mxc_iomux_set_input(MX51_UART1_IPP_UART_RXD_MUX_SELECT_INPUT,
+			    INPUT_CTL_PATH0);
+	mxc_iomux_set_input(MX51_UART1_IPP_UART_RTS_B_SELECT_INPUT,
+			    INPUT_CTL_PATH0);
+
+	in_pad = PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL |
+		PAD_CTL_100K_PU | PAD_CTL_ODE_OPENDRAIN_NONE |
+		PAD_CTL_DRV_HIGH | PAD_CTL_SRE_SLOW;
+	out_pad = PAD_CTL_HYS_NONE | PAD_CTL_PKE_NONE |
+		PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_DRV_HIGH |
+		PAD_CTL_SRE_SLOW;
+
+	mxc_iomux_set_pad(MX51_PIN_UART1_RXD, in_pad);
+	mxc_iomux_set_pad(MX51_PIN_UART1_TXD, out_pad);
+	mxc_iomux_set_pad(MX51_PIN_UART1_RTS, in_pad);
+	mxc_iomux_set_pad(MX51_PIN_UART1_CTS, out_pad);
+}
+#endif
+#endif
+#endif
+
+#ifdef CONFIG_MXC_SPI
+void mx51_ecspi1_init_pins(void)
+{
+	int act_lo_pad, act_hi_pad;
+
+	/* Set up pins for eCSPI1. */
+	mxc_request_iomux(MX51_PIN_CSPI1_SCLK, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_CSPI1_RDY, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_CSPI1_MOSI, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_CSPI1_MISO, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_CSPI1_SS0, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_CSPI1_SS1, IOMUX_CONFIG_ALT0);
+
+	act_lo_pad = PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE |
+		PAD_CTL_PUE_PULL | PAD_CTL_100K_PU |
+		PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_DRV_HIGH |
+		PAD_CTL_SRE_SLOW;
+	act_hi_pad = PAD_CTL_HYS_ENABLE | PAD_CTL_PKE_ENABLE |
+		PAD_CTL_PUE_PULL | PAD_CTL_100K_PD |
+		PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_DRV_HIGH |
+		PAD_CTL_SRE_SLOW;
+
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_SCLK, act_hi_pad);
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_RDY, act_lo_pad);
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_MOSI, act_hi_pad);
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_MISO, act_hi_pad);
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_SS0, act_lo_pad);
+	mxc_iomux_set_pad(MX51_PIN_CSPI1_SS1, act_lo_pad);
+}
+#endif
+
+#ifdef CONFIG_FSL_ESDHC
+void mx51_esdhc1_init_pins(void)
+{
+	int out_pad, io_pad;
+
+	/* Set up pins for eSDHC1. */
+	mxc_request_iomux(MX51_PIN_SD1_CMD,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD1_CLK, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD1_DATA0,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD1_DATA1,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD1_DATA2,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD1_DATA3,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_GPIO1_1,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0); /* WP */
+	mxc_request_iomux(MX51_PIN_GPIO1_0,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0); /* CD */
+
+	out_pad = PAD_CTL_DRV_VOT_HIGH | PAD_CTL_HYS_NONE | PAD_CTL_PKE_ENABLE |
+		PAD_CTL_PUE_PULL | PAD_CTL_47K_PU | PAD_CTL_ODE_OPENDRAIN_NONE |
+		PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST;
+	io_pad = PAD_CTL_DRV_VOT_HIGH | PAD_CTL_HYS_ENABLE |
+		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL | PAD_CTL_47K_PU |
+		PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST;
+
+	mxc_iomux_set_pad(MX51_PIN_SD1_CMD, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD1_CLK, out_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD1_DATA0, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD1_DATA1, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD1_DATA2, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD1_DATA3, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_GPIO1_1, PAD_CTL_HYS_ENABLE); /* WP */
+	mxc_iomux_set_pad(MX51_PIN_GPIO1_0, PAD_CTL_HYS_ENABLE); /* CD */
+}
+
+void mx51_esdhc2_init_pins(void)
+{
+	int out_pad, io_pad;
+
+	/* Set up pins for eSDHC2. */
+	mxc_request_iomux(MX51_PIN_SD2_CMD,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD2_CLK, IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD2_DATA0,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD2_DATA1,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD2_DATA2,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+	mxc_request_iomux(MX51_PIN_SD2_DATA3,
+			  IOMUX_CONFIG_SION | IOMUX_CONFIG_ALT0);
+
+	out_pad = PAD_CTL_DRV_VOT_HIGH | PAD_CTL_HYS_NONE | PAD_CTL_PKE_ENABLE |
+		PAD_CTL_PUE_PULL | PAD_CTL_47K_PU | PAD_CTL_ODE_OPENDRAIN_NONE |
+		PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST;
+	io_pad = PAD_CTL_DRV_VOT_HIGH | PAD_CTL_HYS_ENABLE |
+		PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL | PAD_CTL_47K_PU |
+		PAD_CTL_ODE_OPENDRAIN_NONE | PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST;
+
+	mxc_iomux_set_pad(MX51_PIN_SD2_CMD, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD2_CLK, out_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD2_DATA0, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD2_DATA1, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD2_DATA2, io_pad);
+	mxc_iomux_set_pad(MX51_PIN_SD2_DATA3, io_pad);
+}
+#endif
+
 #if defined(CONFIG_FEC_MXC)
 void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
 {
diff --git u-boot-4d3c95f.orig/arch/arm/include/asm/arch-mx5/sys_proto.h u-boot-4d3c95f/arch/arm/include/asm/arch-mx5/sys_proto.h
index 7b5246e..ce4a94c 100644
--- u-boot-4d3c95f.orig/arch/arm/include/asm/arch-mx5/sys_proto.h
+++ u-boot-4d3c95f/arch/arm/include/asm/arch-mx5/sys_proto.h
@@ -39,4 +39,9 @@ u32 get_ahb_clk(void);
 u32 get_periph_clk(void);
 char *get_reset_cause(void);
 
+void mx51_uart1_init_pins(void);
+void mx51_ecspi1_init_pins(void);
+void mx51_esdhc1_init_pins(void);
+void mx51_esdhc2_init_pins(void);
+
 #endif


More information about the U-Boot mailing list