summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Xu <Lionel.Xu@freescale.com>2011-11-16 16:57:27 +0800
committerLionel Xu <Lionel.Xu@freescale.com>2011-11-16 19:15:19 +0800
commit5a02ab1865b6e0ab5913e0d5118fa09982eaa70e (patch)
treefd8a9745a73e39a3662393cd86d1bb1d6b48f9a3
parent8b828257c97b0c9e07de531f0d51a4e2c8dbac2e (diff)
ENGR00139276-1 MX6 BT: Add basic bluetooth support to mx6 platform
Add basic bluetooth support to mx6q platform: 1) Enable bluetooth driver by default 2) Configure uart2 which is used by bluetooth Signed-off-by: Lionel Xu <Lionel.Xu@freescale.com>
-rw-r--r--arch/arm/configs/imx6_defconfig6
-rw-r--r--arch/arm/mach-mx6/board-mx6q_arm2.c15
-rw-r--r--arch/arm/plat-mxc/include/mach/imx-uart.h1
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx6q.h4
4 files changed, 21 insertions, 5 deletions
diff --git a/arch/arm/configs/imx6_defconfig b/arch/arm/configs/imx6_defconfig
index 621b76faeff5..06ee86f5e0b7 100644
--- a/arch/arm/configs/imx6_defconfig
+++ b/arch/arm/configs/imx6_defconfig
@@ -608,7 +608,11 @@ CONFIG_BT_HIDP=y
#
CONFIG_BT_HCIBTUSB=y
# CONFIG_BT_HCIBTSDIO is not set
-# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIUART=y
+# CONFIG_BT_HCIUART_H4 is not set
+# CONFIG_BT_HCIUART_BCSP is not set
+CONFIG_BT_HCIUART_ATH3K=y
+# CONFIG_BT_HCIUART_LL is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
diff --git a/arch/arm/mach-mx6/board-mx6q_arm2.c b/arch/arm/mach-mx6/board-mx6q_arm2.c
index 21296ee0f6ab..99a183c9d86b 100644
--- a/arch/arm/mach-mx6/board-mx6q_arm2.c
+++ b/arch/arm/mach-mx6/board-mx6q_arm2.c
@@ -273,12 +273,15 @@ static iomux_v3_cfg_t mx6q_arm2_pads[] = {
MX6Q_PAD_EIM_D24__GPIO_3_24,
+ /* UART2 */
+ MX6Q_PAD_EIM_D26__UART2_RXD,
+ MX6Q_PAD_EIM_D27__UART2_TXD,
+ MX6Q_PAD_EIM_D28__UART2_RTS,
+ MX6Q_PAD_EIM_D29__UART2_CTS,
+
/* PWM1 */
MX6Q_PAD_GPIO_9__PWM1_PWMO,
- /* DISP0 I2C ENABLE*/
- MX6Q_PAD_EIM_D28__GPIO_3_28,
-
/* DISP0 DET */
MX6Q_PAD_EIM_D31__GPIO_3_31,
@@ -469,10 +472,14 @@ static const struct anatop_thermal_platform_data
.name = "anatop_thermal",
};
+static const struct imxuart_platform_data mx6q_uart1_data __initconst = {
+ .flags = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE,
+};
+
static inline void mx6q_arm2_init_uart(void)
{
imx6q_add_imx_uart(0, NULL);
- imx6q_add_imx_uart(1, NULL);
+ imx6q_add_imx_uart(1, &mx6q_uart1_data);
imx6q_add_imx_uart(3, NULL);
}
diff --git a/arch/arm/plat-mxc/include/mach/imx-uart.h b/arch/arm/plat-mxc/include/mach/imx-uart.h
index 4adec9b154dd..15b1a6c03f94 100644
--- a/arch/arm/plat-mxc/include/mach/imx-uart.h
+++ b/arch/arm/plat-mxc/include/mach/imx-uart.h
@@ -21,6 +21,7 @@
#define IMXUART_HAVE_RTSCTS (1<<0)
#define IMXUART_IRDA (1<<1)
+#define IMXUART_USE_DCEDTE (1<<2)
struct imxuart_platform_data {
int (*init)(struct platform_device *pdev);
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
index a1c53aa8d629..c0e228790ca1 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
@@ -526,6 +526,8 @@ typedef enum iomux_config {
#define _MX6Q_PAD_EIM_D28__IPU2_CSI1_D_12 \
IOMUX_PAD(0x03D8, 0x00C4, 3, 0x08B8, 0, 0)
#define _MX6Q_PAD_EIM_D28__UART2_CTS \
+ IOMUX_PAD(0x03D8, 0x00C4, 4, 0x0000, 0, 0)
+#define _MX6Q_PAD_EIM_D28__UART2_RTS \
IOMUX_PAD(0x03D8, 0x00C4, 4, 0x0924, 0, 0)
#define _MX6Q_PAD_EIM_D28__GPIO_3_28 \
IOMUX_PAD(0x03D8, 0x00C4, 5, 0x0000, 0, 0)
@@ -4128,6 +4130,8 @@ typedef enum iomux_config {
(_MX6Q_PAD_EIM_D28__IPU2_CSI1_D_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_D28__UART2_CTS \
(_MX6Q_PAD_EIM_D28__UART2_CTS | MUX_PAD_CTRL(MX6Q_UART_PAD_CTRL))
+#define MX6Q_PAD_EIM_D28__UART2_RTS \
+ (_MX6Q_PAD_EIM_D28__UART2_RTS | MUX_PAD_CTRL(MX6Q_UART_PAD_CTRL))
#define MX6Q_PAD_EIM_D28__GPIO_3_28 \
(_MX6Q_PAD_EIM_D28__GPIO_3_28 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
#define MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG \