diff options
author | Robert Marklund <robert.marklund@stericsson.com> | 2011-05-27 13:27:44 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-05-27 22:59:07 +0200 |
commit | 60c412c82ae4b873c9861f3a5ee6b9d6be3b8b1e (patch) | |
tree | b4722d715510008e06d4dcd69c5327ce22c7a487 /arch/arm/mach-ux500/board-mop500.c | |
parent | 3e0c0465fc26db176d0635c8fce22c52fd1bfb7e (diff) |
mach-ux500: Add hooks for pl011 uart
ST-Ericsson Linux next: 342766
ST-Ericsson ID: 340139
ST-Ericsson FOSS-OUT ID: Trivial
Signed-off-by: Robert Marklund <robert.marklund@stericsson.com>
Change-Id: I88e986057206c956003c21323c5849d138b72d56
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/24060
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Reviewed-by: Dmitry TARNYAGIN <dmitry.tarnyagin@stericsson.com>
Diffstat (limited to 'arch/arm/mach-ux500/board-mop500.c')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 780b6537a1f..744d73f7c37 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c @@ -49,12 +49,14 @@ #include <mach/ste_audio.h> #include <mach/ste-dma40-db8500.h> #include <video/av8100.h> +#include <plat/pincfg.h> #include "devices-db8500.h" #include "board-mop500.h" #include "board-mop500-regulators.h" #include "board-mop500-bm.h" #include "board-mop500-wlan.h" +#include "pins.h" #ifdef CONFIG_AB8500_DENC static struct ab8500_denc_platform_data ab8500_denc_pdata = { @@ -748,12 +750,45 @@ static struct stedma40_chan_cfg uart2_dma_cfg_tx = { }; #endif +static struct ux500_pins *uart0_pins; +static void ux500_pl011_init(void) +{ + int ret; + + if (!uart0_pins) { + uart0_pins = ux500_pins_get("uart0"); + if (!uart0_pins) { + pr_err("pl011: uart0 pins_get failed\n"); + return; + } + } + + ret = ux500_pins_enable(uart0_pins); + if (ret) + pr_err("pl011: uart0 pins_enable failed\n"); +} + +static void ux500_pl011_exit(void) +{ + int ret; + + if (uart0_pins) { + ret = ux500_pins_disable(uart0_pins); + if (ret) + pr_err("pl011: uart0 pins_disable failed\n"); + ux500_pins_put(uart0_pins); + uart0_pins = NULL; + } +} + static struct amba_pl011_data uart0_plat = { #ifdef CONFIG_STE_DMA40_REMOVE .dma_filter = stedma40_filter, .dma_rx_param = &uart0_dma_cfg_rx, .dma_tx_param = &uart0_dma_cfg_tx, #endif + .init = ux500_pl011_init, + .exit = ux500_pl011_exit, }; static struct amba_pl011_data uart1_plat = { |