]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00153216-1 MSL: add dvi display driver support
authorJason Chen <b02280@freescale.com>
Mon, 18 Jul 2011 04:30:45 +0000 (12:30 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:09:18 +0000 (14:09 +0200)
change for mx51_bbg, mx53_evk, mx6q_sabr platform.

Signed-off-by: Jason Chen <b02280@freescale.com>
arch/arm/mach-mx5/board-mx51_babbage.c
arch/arm/mach-mx5/board-mx53_evk.c
arch/arm/mach-mx6/board-mx6q_sabreauto.c
arch/arm/plat-mxc/include/mach/iomux-mx6q.h

index 4d600ebc173e4f0289589fd22289b3fad273ce1b..251c6ec909b47e625c08a0b4c56a393b1d0c0759 100755 (executable)
@@ -508,7 +508,7 @@ static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
         .addr = 0x0a,
         },
        {
-        .type = "mxc_ddc",
+        .type = "mxc_dvi",
         .addr = 0x50,
         .irq = gpio_to_irq(BABBAGE_DVI_DET),
         .platform_data = &bbg_ddc_dvi_data,
index 6bde90cde6388e4ce6e3e93cf14aee3e44e69e90..cf785f9bea714e6c40091977b2d14a6f398a5386 100755 (executable)
@@ -511,7 +511,7 @@ static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
         .addr = 0x2c,
         },
        {
-        .type = "mxc_ddc",
+        .type = "mxc_dvi",
         .addr = 0x50,
         .irq = gpio_to_irq(EVK_DISP0_DET_INT),
         .platform_data = &evk_ddc_dvi_data,
index b45081a885c268c088fcbaf900a09ea5e6c1983f..cb3d65880a2163f3c8a15a3d8be8f35f3ba435b2 100644 (file)
@@ -70,6 +70,9 @@
 #define MX6Q_SABREAUTO_ECSPI1_CS0      IMX_GPIO_NR(2, 30)
 #define MX6Q_SABREAUTO_ECSPI1_CS1      IMX_GPIO_NR(3, 19)
 #define MX6Q_SABREAUTO_DISP0_PWR       IMX_GPIO_NR(3, 24)
+#define MX6Q_SABREAUTO_DISP0_I2C_EN    IMX_GPIO_NR(3, 28)
+#define MX6Q_SABREAUTO_DISP0_DET_INT   IMX_GPIO_NR(3, 31)
+#define MX6Q_SABREAUTO_DISP0_RESET     IMX_GPIO_NR(5, 0)
 #define MX6Q_SABREAUTO_SD3_CD  IMX_GPIO_NR(6, 11)
 #define MX6Q_SABREAUTO_SD3_WP  IMX_GPIO_NR(6, 14)
 #define MX6Q_SABREAUTO_USB_OTG_PWR     IMX_GPIO_NR(3, 22)
@@ -192,6 +195,15 @@ static iomux_v3_cfg_t mx6q_sabreauto_pads[] = {
        /* ldb: pwm fixme*/
        MX6Q_PAD_GPIO_9__GPIO_1_9,
 
+       /* DISP0 I2C ENABLE*/
+       MX6Q_PAD_EIM_D28__GPIO_3_28,
+
+       /* DISP0 DET */
+       MX6Q_PAD_EIM_D31__GPIO_3_31,
+
+       /* DISP0 RESET */
+       MX6Q_PAD_EIM_WAIT__GPIO_5_0,
+
        /* I2C3 */
        MX6Q_PAD_GPIO_5__I2C3_SCL,
        MX6Q_PAD_GPIO_16__I2C3_SDA,
@@ -302,6 +314,28 @@ static struct pca953x_platform_data max7310_u48_platdata = {
        .setup          = max7310_u48_setup,
 };
 
+static void ddc_dvi_init(void)
+{
+       /* enable DVI I2C */
+       gpio_set_value(MX6Q_SABREAUTO_DISP0_I2C_EN, 1);
+}
+
+static int ddc_dvi_update(void)
+{
+       /* DVI cable state */
+       if (gpio_get_value(MX6Q_SABREAUTO_DISP0_DET_INT) == 1)
+               return 1;
+       else
+               return 0;
+}
+
+static struct fsl_mxc_dvi_platform_data sabr_ddc_dvi_data = {
+       .ipu_id = 0,
+       .disp_id = 0,
+       .init = ddc_dvi_init,
+       .update = ddc_dvi_update,
+};
+
 static struct imxi2c_platform_data mx6q_sabreauto_i2c_data = {
        .bitrate = 400000,
 };
@@ -315,6 +349,11 @@ static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
                I2C_BOARD_INFO("max7310", 0x1B),
                .platform_data = &max7310_u48_platdata,
        },
+       {
+               I2C_BOARD_INFO("mxc_dvi", 0x50),
+               .platform_data = &sabr_ddc_dvi_data,
+               .irq = gpio_to_irq(MX6Q_SABREAUTO_DISP0_DET_INT),
+       },
 };
 
 static void imx6q_sabreauto_usbotg_vbus(bool on)
@@ -504,6 +543,18 @@ static void __init mx6_board_init(void)
        imx6q_add_ahci(0, &mx6q_sabreauto_sata_data);
        imx6q_add_vpu();
 
+       /* DISP0 Detect */
+       gpio_request(MX6Q_SABREAUTO_DISP0_DET_INT, "disp0-detect");
+       gpio_direction_input(MX6Q_SABREAUTO_DISP0_DET_INT);
+
+       /* DISP0 Reset - Assert for i2c disabled mode */
+       gpio_request(MX6Q_SABREAUTO_DISP0_RESET, "disp0-reset");
+       gpio_direction_output(MX6Q_SABREAUTO_DISP0_RESET, 0);
+
+       /* DISP0 I2C enable */
+       gpio_request(MX6Q_SABREAUTO_DISP0_I2C_EN, "disp0-i2c");
+       gpio_direction_output(MX6Q_SABREAUTO_DISP0_I2C_EN, 0);
+
        gpio_request(MX6Q_SABREAUTO_DISP0_PWR, "disp0-pwr");
        gpio_direction_output(MX6Q_SABREAUTO_DISP0_PWR, 1);
 
index ee90624005f2f9e6e01c838ab72f80fd44647462..6a80467f499e167da5ad367d75d1d4fe5a7b084c 100644 (file)
@@ -4024,7 +4024,7 @@ typedef enum iomux_config {
 #define  MX6Q_PAD_EIM_D24__ECSPI2_SS2          \
                (_MX6Q_PAD_EIM_D24__ECSPI2_SS2 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_D24__GPIO_3_24           \
-               (_MX6Q_PAD_EIM_D24__GPIO_3_24 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_EIM_D24__GPIO_3_24 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
 #define  MX6Q_PAD_EIM_D24__AUDMUX_AUD5_RXFS            \
                (_MX6Q_PAD_EIM_D24__AUDMUX_AUD5_RXFS | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_D24__UART1_DTR           \
@@ -4098,7 +4098,7 @@ typedef enum iomux_config {
 #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__GPIO_3_28           \
-               (_MX6Q_PAD_EIM_D28__GPIO_3_28 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_EIM_D28__GPIO_3_28 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
 #define  MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG               \
                (_MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_D28__IPU1_DI0_PIN13              \
@@ -4668,7 +4668,7 @@ typedef enum iomux_config {
 #define  MX6Q_PAD_EIM_WAIT__WEIM_WEIM_DTACK_B          \
                (_MX6Q_PAD_EIM_WAIT__WEIM_WEIM_DTACK_B | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_WAIT__GPIO_5_0           \
-               (_MX6Q_PAD_EIM_WAIT__GPIO_5_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_EIM_WAIT__GPIO_5_0 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
 #define  MX6Q_PAD_EIM_WAIT__TPSMP_HDATA_30             \
                (_MX6Q_PAD_EIM_WAIT__TPSMP_HDATA_30 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_WAIT__SRC_BT_CFG_25              \