]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00215182-1 sabresd: Add basic support for HDMI CEC
authorZhang Xiaodong <B39117@freescale.com>
Mon, 2 Jul 2012 06:48:35 +0000 (14:48 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:34:56 +0000 (08:34 +0200)
- Changes to IOMUX to allow HDMI CEC controller to use KEY_ROW2
  pin that it needs
- Add cec device in platform-mxc_hdmi.c
- Add MXC_HDMI_CEC in imx6_defconfig

Signed-off-by: Zhang Xiaodong <B39117@freescale.com>
arch/arm/configs/imx6_defconfig
arch/arm/mach-mx6/board-mx6q_sabresd.h
arch/arm/plat-mxc/devices/platform-mxc_hdmi.c
arch/arm/plat-mxc/include/mach/iomux-mx6q.h
arch/arm/plat-mxc/include/mach/mxc_edid.h
arch/arm/plat-mxc/include/mach/mxc_hdmi.h

index f36b37da51b9754cca67a832acee9d2d1b963cc4..81a054919d61ac9d9ae38220f729c4a988292680 100644 (file)
@@ -2314,6 +2314,11 @@ CONFIG_ANATOP_THERMAL=y
 #
 CONFIG_MXC_MIPI_CSI2=y
 
+#
+# MXC HDMI CEC (Consumer Electronics Control) support
+#
+CONFIG_MXC_HDMI_CEC=y
+
 #
 # File systems
 #
index af3df8b0109235f25f41478c2e970aa7ccf6f79f..56a35ca3f721fb271168bf7cfe7e3afc2ee496ca 100644 (file)
@@ -28,7 +28,7 @@ static iomux_v3_cfg_t mx6q_sabresd_pads[] = {
        MX6Q_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD,
 
        /* CAN1  */
-       MX6Q_PAD_KEY_ROW2__CAN1_RXCAN,
+       MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE,
        /* MX6Q_PAD_KEY_COL2__CAN1_TXCAN, */
        MX6Q_PAD_GPIO_1__GPIO_1_1,              /* user defiend green led */
        MX6Q_PAD_GPIO_2__GPIO_1_2,              /* user defined red led */
index c0545705e8c0fbce92fcbd02aad5fdfcb954c03b..d4952620e223f837a07330fad8cd4fca5499ee70 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright (C) 2011-2012 Freescale Semiconductor, Inc. All Rights Reserved.
  */
 
 /*
@@ -43,7 +43,8 @@ struct platform_device *__init imx_add_mxc_hdmi(
                        .flags = IORESOURCE_IRQ,
                },
        };
-
+       imx_add_platform_device("mxc_hdmi_cec", 0,
+                                      res, ARRAY_SIZE(res), NULL, 0);
        return imx_add_platform_device_dmamask("mxc_hdmi", -1,
                res, ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32));
 }
index 5df7162d5d709541d8816ccac48cfbdb50879b2a..98e44710ba0eb4a80969331e98ee37eafd76f865 100644 (file)
 #define MX6Q_ECSPI_PAD_CTRL    (PAD_CTL_SRE_FAST | PAD_CTL_SPEED_MED | \
                PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
 
+#define MX6Q_HDMICEC_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_PUS_22K_UP | \
+               PAD_CTL_PUE | PAD_CTL_PKE | PAD_CTL_ODE | PAD_CTL_SPEED_MED | \
+               PAD_CTL_DSE_40ohm | PAD_CTL_SRE_SLOW)
+
 #define _MX6Q_PAD_SD2_DAT1__USDHC2_DAT1                                \
                IOMUX_PAD(0x0360, 0x004C, 0, 0x0000, 0, 0)
 #define _MX6Q_PAD_SD2_DAT1__ECSPI5_SS0                         \
 #define  MX6Q_PAD_EIM_A25__GPIO_5_2            \
                (_MX6Q_PAD_EIM_A25__GPIO_5_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE            \
-               (_MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE | MUX_PAD_CTRL(MX6Q_HDMICEC_PAD_CTRL))
 #define  MX6Q_PAD_EIM_A25__PL301_MX6QPER1_HBURST_0             \
                (_MX6Q_PAD_EIM_A25__PL301_MX6QPER1_HBURST_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_KEY_ROW2__GPIO_4_11          \
                (_MX6Q_PAD_KEY_ROW2__GPIO_4_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE           \
-               (_MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE | MUX_PAD_CTRL(MX6Q_HDMICEC_PAD_CTRL))
 #define  MX6Q_PAD_KEY_ROW2__PL301_MX6QPER1_HADDR_4             \
                (_MX6Q_PAD_KEY_ROW2__PL301_MX6QPER1_HADDR_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
index 7385c2710db83e67e56e9272ef7ec619d2c59c49..2b35fec91c6b886e3b7b70b808457ec26f458a31 100755 (executable)
@@ -69,6 +69,7 @@ struct mxc_edid_cfg {
        u8 sample_sizes;
        u8 sample_rates;
        u8 speaker_alloc;
+       u8 physical_address[4];
 };
 
 int mxc_edid_var_to_vic(struct fb_var_screeninfo *var);
index bc1ed6c48ecd6ab3dbe0876d33e231865ba60371..0ea37ae40aed78f90b3a1542fb2aa9077af43de3 100644 (file)
@@ -583,6 +583,16 @@ enum {
        HDMI_IH_PHY_STAT0_TX_PHY_LOCK = 0x2,
        HDMI_IH_PHY_STAT0_HPD = 0x1,
 
+/* IH_CEC_STAT0 field values */
+       HDMI_IH_CEC_STAT0_WAKEUP = 0x40,
+       HDMI_IH_CEC_STAT0_ERROR_FOLL = 0x20,
+       HDMI_IH_CEC_STAT0_ERROR_INIT = 0x10,
+       HDMI_IH_CEC_STAT0_ARB_LOST = 0x8,
+       HDMI_IH_CEC_STAT0_NACK = 0x4,
+       HDMI_IH_CEC_STAT0_EOM = 0x2,
+       HDMI_IH_CEC_STAT0_DONE = 0x1,
+
+
 /* IH_MUTE_I2CMPHY_STAT0 field values */
        HDMI_IH_MUTE_I2CMPHY_STAT0_I2CMPHYDONE = 0x2,
        HDMI_IH_MUTE_I2CMPHY_STAT0_I2CMPHYERROR = 0x1,