]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00170341 board-mx6q-sabreauto: update spdif for sabreauto platform
authorAdrian Alonso <aalonso@freescale.com>
Thu, 15 Dec 2011 01:24:18 +0000 (19:24 -0600)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:33:38 +0000 (08:33 +0200)
* Update spdif config options for sabreauto platform
* Correct pad settings
* Only SPDIF RX in sabreauto, unset SPDIF TX support.
* spdif and i2c3 doesn't conflict in sabreauto platform
  remove spdif early param and logic that set either pads.

Signed-off-by: Adrian Alonso <aalonso@freescale.com>
arch/arm/mach-mx6/board-mx6q_sabreauto.c

index b47efc64459c8e3defb8655f1713acf4acda2744..27819b742be811253e918c3c18f556e78ddd3333 100644 (file)
 void __init early_console_setup(unsigned long base, struct clk *clk);
 static struct clk *sata_clk;
 static int esai_record;
-static int spdif_en;
 static int mipi_sensor;
 
 extern struct regulator *(*get_cpu_regulator)(void);
@@ -289,6 +288,8 @@ static iomux_v3_cfg_t mx6q_sabreauto_pads[] = {
 
        /* USBOTG ID pin */
        MX6Q_PAD_GPIO_1__USBOTG_ID,
+       /*  SPDIF */
+       MX6Q_PAD_KEY_COL3__SPDIF_IN1,
 };
 
 static iomux_v3_cfg_t mx6q_sabreauto_i2c3_pads[] = {
@@ -296,12 +297,6 @@ static iomux_v3_cfg_t mx6q_sabreauto_i2c3_pads[] = {
        MX6Q_PAD_GPIO_16__I2C3_SDA,
 };
 
-static iomux_v3_cfg_t mx6q_sabreauto_spdif_pads[] = {
-       /* SPDIF */
-       MX6Q_PAD_GPIO_16__SPDIF_IN1,
-       MX6Q_PAD_GPIO_17__SPDIF_OUT1,
-};
-
 static iomux_v3_cfg_t mx6q_sabreauto_can_pads[] = {
        /* CAN1 */
        MX6Q_PAD_GPIO_7__CAN1_TXCAN,
@@ -1309,14 +1304,6 @@ static inline void __init mx6q_csi0_io_init(void)
        mxc_iomux_set_gpr_register(1, 19, 1, 1);
 }
 
-static int __init early_enable_spdif(char *p)
-{
-       spdif_en = 1;
-       return 0;
-}
-
-early_param("spdif", early_enable_spdif);
-
 static int spdif_clk_set_rate(struct clk *clk, unsigned long rate)
 {
        unsigned long rate_actual;
@@ -1326,7 +1313,7 @@ static int spdif_clk_set_rate(struct clk *clk, unsigned long rate)
 }
 
 static struct mxc_spdif_platform_data mxc_spdif_data = {
-       .spdif_tx = 1,          /* enable tx */
+       .spdif_tx = 0,          /* disable tx */
        .spdif_rx = 1,          /* enable rx */
        /*
         * spdif0_clk will be 454.7MHz divided by ccm dividers.
@@ -1360,21 +1347,10 @@ static void __init mx6_board_init(void)
            mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_esai_record_pads,
                        ARRAY_SIZE(mx6q_sabreauto_esai_record_pads));
 
-       /*
-        * S/PDIF in and i2c3 are mutually exclusive because both
-        * use GPIO_16.
-        * S/PDIF out and can1 stby are mutually exclusive because both
-        * use GPIO_17.
-        */
-       if (spdif_en) {
-               mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_spdif_pads,
-                       ARRAY_SIZE(mx6q_sabreauto_spdif_pads));
-       } else {
-               mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_i2c3_pads,
+       mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_i2c3_pads,
                        ARRAY_SIZE(mx6q_sabreauto_i2c3_pads));
-               mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_can_pads,
+       mxc_iomux_v3_setup_multiple_pads(mx6q_sabreauto_can_pads,
                        ARRAY_SIZE(mx6q_sabreauto_can_pads));
-       }
 
        if (mipi_sensor)
                mxc_iomux_v3_setup_multiple_pads(
@@ -1406,11 +1382,9 @@ static void __init mx6_board_init(void)
                        ARRAY_SIZE(mxc_i2c0_board_info));
        i2c_register_board_info(1, mxc_i2c1_board_info,
                        ARRAY_SIZE(mxc_i2c1_board_info));
-       if (!spdif_en) {
-               imx6q_add_imx_i2c(2, &mx6q_sabreauto_i2c_data);
-               i2c_register_board_info(2, mxc_i2c2_board_info,
-                               ARRAY_SIZE(mxc_i2c2_board_info));
-       }
+       imx6q_add_imx_i2c(2, &mx6q_sabreauto_i2c_data);
+       i2c_register_board_info(2, mxc_i2c2_board_info,
+                       ARRAY_SIZE(mxc_i2c2_board_info));
 
        /* SPI */
        imx6q_add_ecspi(0, &mx6q_sabreauto_spi_data);
@@ -1468,22 +1442,19 @@ static void __init mx6_board_init(void)
        imx6q_add_mxc_pwm(0);
        imx6q_add_mxc_pwm_backlight(0, &mx6_sabreauto_pwm_backlight_data);
 
-       if (spdif_en) {
-               mxc_spdif_data.spdif_core_clk = clk_get_sys("mxc_spdif.0",
-                       NULL);
-               clk_put(mxc_spdif_data.spdif_core_clk);
-               imx6q_add_spdif(&mxc_spdif_data);
-               imx6q_add_spdif_dai();
-               imx6q_add_spdif_audio_device();
-       } else {
-               ret = gpio_request_array(mx6q_flexcan_gpios,
+       mxc_spdif_data.spdif_core_clk = clk_get_sys("mxc_spdif.0", NULL);
+       clk_put(mxc_spdif_data.spdif_core_clk);
+       imx6q_add_spdif(&mxc_spdif_data);
+       imx6q_add_spdif_dai();
+       imx6q_add_spdif_audio_device();
+
+       ret = gpio_request_array(mx6q_flexcan_gpios,
                                ARRAY_SIZE(mx6q_flexcan_gpios));
-               if (ret) {
-                       pr_err("failed to request flexcan-gpios: %d\n", ret);
-               } else {
-                       imx6q_add_flexcan0(&mx6q_sabreauto_flexcan_pdata[0]);
-                       imx6q_add_flexcan1(&mx6q_sabreauto_flexcan_pdata[1]);
-               }
+       if (ret) {
+               pr_err("failed to request flexcan-gpios: %d\n", ret);
+       } else {
+               imx6q_add_flexcan0(&mx6q_sabreauto_flexcan_pdata[0]);
+               imx6q_add_flexcan1(&mx6q_sabreauto_flexcan_pdata[1]);
        }
 
        imx6q_add_hdmi_soc();