summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Xu <Lionel.Xu@freescale.com>2011-08-26 18:20:14 +0800
committerLionel Xu <Lionel.Xu@freescale.com>2011-08-29 13:39:45 +0800
commitb6c1b0ed81a7bec3c361fa82b299ad5dd3ea3d20 (patch)
treeda3da375b893d81a170a9ec99c5fdd2d77d67e4e
parent89b755ee1fe44010bc17ceb773d7fb1679fe9ca3 (diff)
ENGR00139255-1 MX6Q_BSP ESAI: Add esai recording support
Add ESAI recording to mx6q platform. Note: since there is pad conflict between esai record and fec, add a boot argument esai_record to deal with it. This argument is required to enable the record functionality. Signed-off-by: Lionel Xu <R63889@freescale.com>
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabreauto.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.c b/arch/arm/mach-mx6/board-mx6q_sabreauto.c
index 4eebd2ba728f..9034c1630171 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabreauto.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.c
@@ -84,6 +84,7 @@
void __init early_console_setup(unsigned long base, struct clk *clk);
static struct clk *sata_clk;
+static int esai_record;
static iomux_v3_cfg_t mx6q_sabreauto_pads[] = {
@@ -160,18 +161,14 @@ static iomux_v3_cfg_t mx6q_sabreauto_pads[] = {
/* ESAI */
MX6Q_PAD_ENET_RXD0__ESAI1_HCKT,
- /* MX6Q_PAD_ENET_RX_ER__ESAI1_HCKR,
- MX6Q_PAD_ENET_MDIO__ESAI1_SCKR,
- MX6Q_PAD_ENET_REF_CLK__ESAI1_FSR, */
MX6Q_PAD_ENET_CRS_DV__ESAI1_SCKT,
MX6Q_PAD_ENET_RXD1__ESAI1_FST,
- /* MX6Q_PAD_ENET_TX_EN__ESAI1_TX3_RX2,
+ MX6Q_PAD_ENET_TX_EN__ESAI1_TX3_RX2,
MX6Q_PAD_ENET_TXD1__ESAI1_TX2_RX3,
MX6Q_PAD_ENET_TXD0__ESAI1_TX4_RX1,
- MX6Q_PAD_ENET_MDC__ESAI1_TX5_RX0, */
+ MX6Q_PAD_ENET_MDC__ESAI1_TX5_RX0,
MX6Q_PAD_NANDF_CS2__ESAI1_TX0,
MX6Q_PAD_NANDF_CS3__ESAI1_TX1,
- /* MX53_PAD_PATA_DATA4__GPIO2_4, */
/* I2C1 */
MX6Q_PAD_CSI0_DAT8__I2C1_SDA,
@@ -237,6 +234,13 @@ static iomux_v3_cfg_t mx6q_sabreauto_pads[] = {
/* USBOTG ID pin */
MX6Q_PAD_GPIO_1__USBOTG_ID,
};
+
+static iomux_v3_cfg_t mx6q_sabreauto_esai_record_pads[] = {
+ MX6Q_PAD_ENET_RX_ER__ESAI1_HCKR,
+ MX6Q_PAD_ENET_MDIO__ESAI1_SCKR,
+ MX6Q_PAD_ENET_REF_CLK__ESAI1_FSR,
+};
+
static const struct esdhc_platform_data mx6q_sabreauto_sd3_data __initconst = {
.cd_gpio = MX6Q_SABREAUTO_SD3_CD,
.wp_gpio = MX6Q_SABREAUTO_SD3_WP,
@@ -668,7 +672,17 @@ static int imx6q_init_audio(void)
clk_set_parent(esai_clk, pll3_pfd);
clk_set_rate(esai_clk, 101647058);
+
+ return 0;
}
+
+static int __init early_use_esai_record(char *p)
+{
+ esai_record = 1;
+ return 0;
+}
+
+early_param("esai_record", early_use_esai_record);
/*!
* Board specific initialization.
*/
@@ -679,6 +693,10 @@ static void __init mx6_board_init(void)
mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_pads,
ARRAY_SIZE(mx6q_sabreauto_pads));
+ if (esai_record)
+ mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_esai_record_pads,
+ ARRAY_SIZE(mx6q_sabreauto_esai_record_pads));
+
mx6q_sabreauto_init_uart();
imx6q_add_ipuv3(0, &ipu_data[0]);
@@ -706,7 +724,9 @@ static void __init mx6_board_init(void)
imx6q_add_mxc_hdmi(&hdmi_data);
imx6q_add_anatop_thermal_imx(1, &mx6q_sabreauto_anatop_thermal_data);
- imx6q_init_fec();
+
+ if (!esai_record)
+ imx6q_init_fec();
imx6q_add_pm_imx(0, &mx6q_sabreauto_pm_data);
imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabreauto_sd4_data);