diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-06-23 05:57:19 -0400 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-06-30 03:01:01 -0400 |
commit | 5109a4597f7e758b8d20694392d0361a0b4c43b1 (patch) | |
tree | f4a3553afd4c682a1ac0c19577a94f7208485c0f /arch/arm/mach-mx3/mach-mx31moboard.c | |
parent | 6eafde5f02b1f34b7e083d1d6522f40e850bf355 (diff) |
ARM: mx3: complement uart init routine with an exit routine
moboard_uart0_init requests a gpio. Without an exit function that
frees that gpio again binding the uart a second time doesn't work.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx3/mach-mx31moboard.c')
-rw-r--r-- | arch/arm/mach-mx3/mach-mx31moboard.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c index 95633bb063bf..67776bc61c33 100644 --- a/arch/arm/mach-mx3/mach-mx31moboard.c +++ b/arch/arm/mach-mx3/mach-mx31moboard.c | |||
@@ -125,13 +125,25 @@ static struct platform_device mx31moboard_flash = { | |||
125 | 125 | ||
126 | static int moboard_uart0_init(struct platform_device *pdev) | 126 | static int moboard_uart0_init(struct platform_device *pdev) |
127 | { | 127 | { |
128 | gpio_request(IOMUX_TO_GPIO(MX31_PIN_CTS1), "uart0-cts-hack"); | 128 | int ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_CTS1), "uart0-cts-hack"); |
129 | gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CTS1), 0); | 129 | if (ret) |
130 | return 0; | 130 | return ret; |
131 | |||
132 | ret = gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_CTS1), 0); | ||
133 | if (ret) | ||
134 | gpio_free(IOMUX_TO_GPIO(MX31_PIN_CTS1)); | ||
135 | |||
136 | return ret; | ||
137 | } | ||
138 | |||
139 | static void moboard_uart0_exit(struct platform_device *pdev) | ||
140 | { | ||
141 | gpio_free(IOMUX_TO_GPIO(MX31_PIN_CTS1)); | ||
131 | } | 142 | } |
132 | 143 | ||
133 | static const struct imxuart_platform_data uart0_pdata __initconst = { | 144 | static const struct imxuart_platform_data uart0_pdata __initconst = { |
134 | .init = moboard_uart0_init, | 145 | .init = moboard_uart0_init, |
146 | .exit = moboard_uart0_exit, | ||
135 | }; | 147 | }; |
136 | 148 | ||
137 | static const struct imxuart_platform_data uart4_pdata __initconst = { | 149 | static const struct imxuart_platform_data uart4_pdata __initconst = { |