aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxc
diff options
context:
space:
mode:
authorTerry Lv <r65388@freescale.com>2011-12-26 12:16:20 +0800
committerTerry Lv <r65388@freescale.com>2011-12-27 14:04:10 +0800
commit1a40ba7a2af35559da6b21fc485424afd90b0817 (patch)
tree1dd897ab9c433237bb13fd9f044fa08c37520e9a /arch/arm/plat-mxc
parent3b2e3729dc57a5ff532552cde49de7ace4c5792c (diff)
ENGR00139278-1: Add MLB driver board level code for mx6q
Add board level code for mlb, including platform data, clock, etc. Signed-off-by: Terry Lv <r65388@freescale.com>
Diffstat (limited to 'arch/arm/plat-mxc')
-rw-r--r--arch/arm/plat-mxc/devices/Kconfig3
-rw-r--r--arch/arm/plat-mxc/devices/Makefile1
-rw-r--r--arch/arm/plat-mxc/devices/platform-mxc_mlb.c71
-rw-r--r--arch/arm/plat-mxc/include/mach/devices-common.h2
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx6q.h10
5 files changed, 84 insertions, 3 deletions
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig
index 60c42ef46d2..644515089d6 100644
--- a/arch/arm/plat-mxc/devices/Kconfig
+++ b/arch/arm/plat-mxc/devices/Kconfig
@@ -1,6 +1,9 @@
config IMX_HAVE_PLATFORM_DMA
bool
+config IMX_HAVE_PLATFORM_MXC_MLB
+ bool
+
config IMX_HAVE_PLATFORM_FEC
bool
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile
index aa7d7bf4930..cc1a7fedbdf 100644
--- a/arch/arm/plat-mxc/devices/Makefile
+++ b/arch/arm/plat-mxc/devices/Makefile
@@ -1,4 +1,5 @@
obj-$(CONFIG_IMX_HAVE_PLATFORM_DMA) += platform-dma.o
+obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MLB) += platform-mxc_mlb.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o
diff --git a/arch/arm/plat-mxc/devices/platform-mxc_mlb.c b/arch/arm/plat-mxc/devices/platform-mxc_mlb.c
new file mode 100644
index 00000000000..a1ede415ed8
--- /dev/null
+++ b/arch/arm/plat-mxc/devices/platform-mxc_mlb.c
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#include <mach/hardware.h>
+#include <mach/devices-common.h>
+
+#ifdef CONFIG_SOC_IMX53
+struct platform_device *__init imx_add_mlb(
+ const struct mxc_mlb_platform_data *pdata)
+{
+ struct resource res[] = {
+ {
+ .start = MX53_MLB_BASE_ADDR,
+ .end = MX53_MLB_BASE_ADDR + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = MX53_INT_MLB,
+ .end = MX53_INT_MLB,
+ .flags = IORESOURCE_IRQ,
+ },
+ };
+ return imx_add_platform_device("mxc_mlb", 0,
+ res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
+}
+#endif /* ifdef CONFIG_SOC_IMX53 */
+
+#ifdef CONFIG_SOC_IMX6Q
+struct platform_device *__init imx_add_mlb(
+ const struct mxc_mlb_platform_data *pdata)
+{
+ struct resource res[] = {
+ {
+ .start = MLB_BASE_ADDR,
+ .end = MLB_BASE_ADDR + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = MXC_INT_MLB,
+ .end = MXC_INT_MLB,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MXC_INT_MLB_AHB0,
+ .end = MXC_INT_MLB_AHB0,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = MXC_INT_MLB_AHB1,
+ .end = MXC_INT_MLB_AHB1,
+ .flags = IORESOURCE_IRQ,
+ },
+ };
+ return imx_add_platform_device("mxc_mlb150", 0,
+ res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
+}
+#endif
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
index 339018118d0..903751829b6 100644
--- a/arch/arm/plat-mxc/include/mach/devices-common.h
+++ b/arch/arm/plat-mxc/include/mach/devices-common.h
@@ -51,6 +51,8 @@ struct platform_device *__init imx_add_flexcan(
const struct flexcan_platform_data *pdata);
#include <linux/fsl_devices.h>
+struct platform_device *__init imx_add_mlb(
+ const struct mxc_mlb_platform_data *pdata);
struct imx_fsl_usb2_udc_data {
resource_size_t iobase;
resource_size_t irq;
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
index 9ebde65d18d..c199ad2e424 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
@@ -46,6 +46,10 @@ typedef enum iomux_config {
PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
#define MX6Q_HIGH_DRV (PAD_CTL_DSE_120ohm)
+
+#define MX6Q_MLB150_PAD_CTRL (PAD_CTL_SPEED_LOW | \
+ PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST) \
+
#define MX6Q_UART_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
@@ -5915,7 +5919,7 @@ typedef enum iomux_config {
#define MX6Q_PAD_GPIO_3__USBOH3_USBH1_OC \
(_MX6Q_PAD_GPIO_3__USBOH3_USBH1_OC | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_GPIO_3__MLB_MLBCLK \
- (_MX6Q_PAD_GPIO_3__MLB_MLBCLK | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_GPIO_3__MLB_MLBCLK | MUX_PAD_CTRL(MX6Q_MLB150_PAD_CTRL))
#define MX6Q_PAD_GPIO_6__ESAI1_SCKT \
(_MX6Q_PAD_GPIO_6__ESAI1_SCKT | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -5932,7 +5936,7 @@ typedef enum iomux_config {
#define MX6Q_PAD_GPIO_6__USDHC2_LCTL \
(_MX6Q_PAD_GPIO_6__USDHC2_LCTL | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
#define MX6Q_PAD_GPIO_6__MLB_MLBSIG \
- (_MX6Q_PAD_GPIO_6__MLB_MLBSIG | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_GPIO_6__MLB_MLBSIG | MUX_PAD_CTRL(MX6Q_MLB150_PAD_CTRL))
#define MX6Q_PAD_GPIO_2__ESAI1_FST \
(_MX6Q_PAD_GPIO_2__ESAI1_FST | MUX_PAD_CTRL(NO_PAD_CTRL))
@@ -5949,7 +5953,7 @@ typedef enum iomux_config {
#define MX6Q_PAD_GPIO_2__USDHC2_WP \
(_MX6Q_PAD_GPIO_2__USDHC2_WP | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
#define MX6Q_PAD_GPIO_2__MLB_MLBDAT \
- (_MX6Q_PAD_GPIO_2__MLB_MLBDAT | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_GPIO_2__MLB_MLBDAT | MUX_PAD_CTRL(MX6Q_MLB150_PAD_CTRL))
#define MX6Q_PAD_GPIO_4__ESAI1_HCKT \
(_MX6Q_PAD_GPIO_4__ESAI1_HCKT | MUX_PAD_CTRL(NO_PAD_CTRL))