diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2009-04-29 07:17:21 -0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2009-05-07 10:20:09 -0400 |
commit | 5ae07daa488e78994db731d0fd133967a5cf0ceb (patch) | |
tree | 88a14f7d78ecaa6af1ee870d0530526d1aac9dab /arch/arm/mach-mx1 | |
parent | 5b68421f41b47dd9311b81d9e0d7e9781c2983f3 (diff) |
mx1ads: setup iomux pins at once
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx1')
-rw-r--r-- | arch/arm/mach-mx1/mx1ads.c | 73 |
1 files changed, 18 insertions, 55 deletions
diff --git a/arch/arm/mach-mx1/mx1ads.c b/arch/arm/mach-mx1/mx1ads.c index 1d28598bcc37..55d32897cb4a 100644 --- a/arch/arm/mach-mx1/mx1ads.c +++ b/arch/arm/mach-mx1/mx1ads.c | |||
@@ -32,57 +32,36 @@ | |||
32 | 32 | ||
33 | #include "devices.h" | 33 | #include "devices.h" |
34 | 34 | ||
35 | /* | 35 | static int mx1ads_pins[] = { |
36 | * UARTs platform data | 36 | /* UART1 */ |
37 | */ | ||
38 | static int mxc_uart1_pins[] = { | ||
39 | PC9_PF_UART1_CTS, | 37 | PC9_PF_UART1_CTS, |
40 | PC10_PF_UART1_RTS, | 38 | PC10_PF_UART1_RTS, |
41 | PC11_PF_UART1_TXD, | 39 | PC11_PF_UART1_TXD, |
42 | PC12_PF_UART1_RXD, | 40 | PC12_PF_UART1_RXD, |
43 | }; | 41 | /* UART2 */ |
44 | |||
45 | static int uart1_mxc_init(struct platform_device *pdev) | ||
46 | { | ||
47 | return mxc_gpio_setup_multiple_pins(mxc_uart1_pins, | ||
48 | ARRAY_SIZE(mxc_uart1_pins), "UART1"); | ||
49 | } | ||
50 | |||
51 | static int uart1_mxc_exit(struct platform_device *pdev) | ||
52 | { | ||
53 | mxc_gpio_release_multiple_pins(mxc_uart1_pins, | ||
54 | ARRAY_SIZE(mxc_uart1_pins)); | ||
55 | return 0; | ||
56 | } | ||
57 | |||
58 | static int mxc_uart2_pins[] = { | ||
59 | PB28_PF_UART2_CTS, | 42 | PB28_PF_UART2_CTS, |
60 | PB29_PF_UART2_RTS, | 43 | PB29_PF_UART2_RTS, |
61 | PB30_PF_UART2_TXD, | 44 | PB30_PF_UART2_TXD, |
62 | PB31_PF_UART2_RXD, | 45 | PB31_PF_UART2_RXD, |
46 | /* I2C */ | ||
47 | PA15_PF_I2C_SDA, | ||
48 | PA16_PF_I2C_SCL, | ||
49 | /* SPI */ | ||
50 | PC13_PF_SPI1_SPI_RDY, | ||
51 | PC14_PF_SPI1_SCLK, | ||
52 | PC15_PF_SPI1_SS, | ||
53 | PC16_PF_SPI1_MISO, | ||
54 | PC17_PF_SPI1_MOSI, | ||
63 | }; | 55 | }; |
64 | 56 | ||
65 | static int uart2_mxc_init(struct platform_device *pdev) | 57 | /* |
66 | { | 58 | * UARTs platform data |
67 | return mxc_gpio_setup_multiple_pins(mxc_uart2_pins, | 59 | */ |
68 | ARRAY_SIZE(mxc_uart2_pins), "UART2"); | ||
69 | } | ||
70 | |||
71 | static int uart2_mxc_exit(struct platform_device *pdev) | ||
72 | { | ||
73 | mxc_gpio_release_multiple_pins(mxc_uart2_pins, | ||
74 | ARRAY_SIZE(mxc_uart2_pins)); | ||
75 | return 0; | ||
76 | } | ||
77 | 60 | ||
78 | static struct imxuart_platform_data uart_pdata[] = { | 61 | static struct imxuart_platform_data uart_pdata[] = { |
79 | { | 62 | { |
80 | .init = uart1_mxc_init, | ||
81 | .exit = uart1_mxc_exit, | ||
82 | .flags = IMXUART_HAVE_RTSCTS, | 63 | .flags = IMXUART_HAVE_RTSCTS, |
83 | }, { | 64 | }, { |
84 | .init = uart2_mxc_init, | ||
85 | .exit = uart2_mxc_exit, | ||
86 | .flags = IMXUART_HAVE_RTSCTS, | 65 | .flags = IMXUART_HAVE_RTSCTS, |
87 | }, | 66 | }, |
88 | }; | 67 | }; |
@@ -111,23 +90,6 @@ static struct platform_device flash_device = { | |||
111 | /* | 90 | /* |
112 | * I2C | 91 | * I2C |
113 | */ | 92 | */ |
114 | static int i2c_pins[] = { | ||
115 | PA15_PF_I2C_SDA, | ||
116 | PA16_PF_I2C_SCL, | ||
117 | }; | ||
118 | |||
119 | static int i2c_init(struct device *dev) | ||
120 | { | ||
121 | return mxc_gpio_setup_multiple_pins(i2c_pins, | ||
122 | ARRAY_SIZE(i2c_pins), "I2C"); | ||
123 | } | ||
124 | |||
125 | static void i2c_exit(struct device *dev) | ||
126 | { | ||
127 | mxc_gpio_release_multiple_pins(i2c_pins, | ||
128 | ARRAY_SIZE(i2c_pins)); | ||
129 | } | ||
130 | |||
131 | static struct pcf857x_platform_data pcf857x_data[] = { | 93 | static struct pcf857x_platform_data pcf857x_data[] = { |
132 | { | 94 | { |
133 | .gpio_base = 4 * 32, | 95 | .gpio_base = 4 * 32, |
@@ -138,8 +100,6 @@ static struct pcf857x_platform_data pcf857x_data[] = { | |||
138 | 100 | ||
139 | static struct imxi2c_platform_data mx1ads_i2c_data = { | 101 | static struct imxi2c_platform_data mx1ads_i2c_data = { |
140 | .bitrate = 100000, | 102 | .bitrate = 100000, |
141 | .init = i2c_init, | ||
142 | .exit = i2c_exit, | ||
143 | }; | 103 | }; |
144 | 104 | ||
145 | static struct i2c_board_info mx1ads_i2c_devices[] = { | 105 | static struct i2c_board_info mx1ads_i2c_devices[] = { |
@@ -159,6 +119,9 @@ static struct i2c_board_info mx1ads_i2c_devices[] = { | |||
159 | */ | 119 | */ |
160 | static void __init mx1ads_init(void) | 120 | static void __init mx1ads_init(void) |
161 | { | 121 | { |
122 | mxc_gpio_setup_multiple_pins(mx1ads_pins, | ||
123 | ARRAY_SIZE(mx1ads_pins), "mx1ads"); | ||
124 | |||
162 | /* UART */ | 125 | /* UART */ |
163 | mxc_register_device(&imx_uart1_device, &uart_pdata[0]); | 126 | mxc_register_device(&imx_uart1_device, &uart_pdata[0]); |
164 | mxc_register_device(&imx_uart2_device, &uart_pdata[1]); | 127 | mxc_register_device(&imx_uart2_device, &uart_pdata[1]); |