aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/board-mop500.c
diff options
context:
space:
mode:
authorRobert Marklund <robert.marklund@stericsson.com>2011-05-27 13:27:44 +0200
committerPhilippe LANGLAIS <philippe.langlais@stericsson.com>2011-05-27 22:59:07 +0200
commit60c412c82ae4b873c9861f3a5ee6b9d6be3b8b1e (patch)
treeb4722d715510008e06d4dcd69c5327ce22c7a487 /arch/arm/mach-ux500/board-mop500.c
parent3e0c0465fc26db176d0635c8fce22c52fd1bfb7e (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.c35
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 = {