From: Zhang Xiaodong Date: Mon, 2 Jul 2012 06:48:35 +0000 (+0800) Subject: ENGR00215182-1 sabresd: Add basic support for HDMI CEC X-Git-Tag: v3.0.35-fsl~818 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4d1f5617da3621e570d1a187529c076693e96bf3;p=karo-tx-linux.git ENGR00215182-1 sabresd: Add basic support for HDMI CEC - 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 --- diff --git a/arch/arm/configs/imx6_defconfig b/arch/arm/configs/imx6_defconfig index f36b37da51b9..81a054919d61 100644 --- a/arch/arm/configs/imx6_defconfig +++ b/arch/arm/configs/imx6_defconfig @@ -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 # diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.h b/arch/arm/mach-mx6/board-mx6q_sabresd.h index af3df8b01092..56a35ca3f721 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabresd.h +++ b/arch/arm/mach-mx6/board-mx6q_sabresd.h @@ -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 */ diff --git a/arch/arm/plat-mxc/devices/platform-mxc_hdmi.c b/arch/arm/plat-mxc/devices/platform-mxc_hdmi.c index c0545705e8c0..d4952620e223 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc_hdmi.c +++ b/arch/arm/plat-mxc/devices/platform-mxc_hdmi.c @@ -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)); } diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h index 5df7162d5d70..98e44710ba0e 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h @@ -81,6 +81,10 @@ #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 \ @@ -3868,7 +3872,7 @@ #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)) @@ -5778,7 +5782,7 @@ #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)) diff --git a/arch/arm/plat-mxc/include/mach/mxc_edid.h b/arch/arm/plat-mxc/include/mach/mxc_edid.h index 7385c2710db8..2b35fec91c6b 100755 --- a/arch/arm/plat-mxc/include/mach/mxc_edid.h +++ b/arch/arm/plat-mxc/include/mach/mxc_edid.h @@ -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); diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h index bc1ed6c48ecd..0ea37ae40aed 100644 --- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h +++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h @@ -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,