]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00139255-1 MX6Q_BSP ESAI: Add esai recording support
authorLionel Xu <Lionel.Xu@freescale.com>
Fri, 26 Aug 2011 10:20:14 +0000 (18:20 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:09:33 +0000 (14:09 +0200)
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>
arch/arm/mach-mx6/board-mx6q_sabreauto.c

index 4eebd2ba728faadf75637cf0abfd0b64a5cb2fcf..9034c1630171634df96bebc5679d7d4bf598d28b 100644 (file)
@@ -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);