diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c | 32 | ||||
-rw-r--r-- | drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h | 21 |
2 files changed, 52 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c b/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c index 8e0afb8689b..83557cbc6cb 100644 --- a/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c +++ b/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c @@ -394,6 +394,34 @@ static void hdmi_enable_video_path(struct hdmi_ip_data *ip_data) REG_FLD_MOD(core_sys_base, HDMI_CORE_MC_CLKDIS, 0x00, 1, 1); } +static void hdmi_core_mask_interrupts(struct hdmi_ip_data *ip_data) +{ + void __iomem *core_sys_base = hdmi_core_sys_base(ip_data); + REG_FLD_MOD(core_sys_base, HDMI_CORE_VP_MASK, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_FC_MASK0, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_FC_MASK1, 0xfb, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_FC_MASK2, 0x3, 1, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_PHY_MASK0, 0xf3, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_PHY_I2CM_INT_ADDR, 0xf, 3, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_PHY_I2CM_CTLINT_ADDR, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_AUD_INT, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_AUD_CC08, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_AUD_D010, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_CEC_MASK, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_GP_MASK, 0x3, 1, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_HDCP_MASK, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_CEC_MAGIC_MASK, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_I2C1_MASK, 0xff, 7, 0); + REG_FLD_MOD(core_sys_base, HDMI_CORE_I2C2_MASK, 0xff, 7, 0); +} + +static void hdmi_core_enable_interrupts(struct hdmi_ip_data *ip_data) +{ + void __iomem *core_sys_base = hdmi_core_sys_base(ip_data); + /* Unmute interrupts */ + REG_FLD_MOD(core_sys_base, HDMI_CORE_IH_MUTE, 0x0, 1, 0); +} + void ti_hdmi_5xxx_basic_configure(struct hdmi_ip_data *ip_data) { /* HDMI */ @@ -405,6 +433,8 @@ void ti_hdmi_5xxx_basic_configure(struct hdmi_ip_data *ip_data) struct hdmi_config *cfg = &ip_data->cfg; struct hdmi_irq_vector irq_enable; + hdmi_core_mask_interrupts(ip_data); + hdmi_wp_init(&video_timing, &video_format, &irq_enable); hdmi_core_init(&v_core_cfg, avi_cfg, cfg); @@ -461,4 +491,6 @@ void ti_hdmi_5xxx_basic_configure(struct hdmi_ip_data *ip_data) hdmi_core_aux_infoframe_avi_config(ip_data); hdmi_enable_video_path(ip_data); + + hdmi_core_enable_interrupts(ip_data); } diff --git a/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h b/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h index eb167987504..571bd8312ae 100644 --- a/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h +++ b/drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h @@ -48,7 +48,7 @@ #define HDMI_CORE_IH_CEC_STAT0 0x00418 #define HDMI_CORE_IH_VP_STAT0 0x0041C #define HDMI_CORE_IH_I2CMPHY_STAT0 0x00420 -#define HDMI_CORE_IH_MUTE 0x047FC +#define HDMI_CORE_IH_MUTE 0x007FC /* HDMI Video Sampler */ #define HDMI_CORE_TX_INVID0 0x00800 @@ -186,6 +186,15 @@ #define HDMI_CORE_FC_DBGTMDS0 0x04864 #define HDMI_CORE_FC_DBGTMDS1 0x04868 #define HDMI_CORE_FC_DBGTMDS2 0x0486C +#define HDMI_CORE_PHY_MASK0 0x0C018 +#define HDMI_CORE_PHY_I2CM_INT_ADDR 0x0C09C +#define HDMI_CORE_PHY_I2CM_CTLINT_ADDR 0x0C0A0 + +/* HDMI Audio */ +#define HDMI_CORE_AUD_INT 0x0C408 +#define HDMI_CORE_AUD_CC08 0x0CC08 +#define HDMI_CORE_AUD_D010 0x0D010 +#define HDMI_CORE_GP_MASK 0x0D414 /* HDMI Main Controller */ #define HDMI_CORE_MC_CLKDIS 0x10004 @@ -222,6 +231,12 @@ #define HDMI_CORE_CSC_COEF_C4_MSB 0x10460 #define HDMI_CORE_CSC_COEF_C4_LSB 0x10464 +/* HDMI HDCP */ +#define HDMI_CORE_HDCP_MASK 0x14020 + +/* HDMI CEC */ +#define HDMI_CORE_CEC_MASK 0x17408 + /* HDMI I2C Master */ #define HDMI_CORE_I2CM_SLAVE 0x17800 #define HDMI_CORE_I2CM_ADDRESS 0x17804 @@ -243,6 +258,10 @@ #define HDMI_CORE_I2CM_FS_SCL_LCNT_1_ADDR 0x17844 #define HDMI_CORE_I2CM_FS_SCL_LCNT_0_ADDR 0x17848 +#define HDMI_CORE_CEC_MAGIC_MASK 0x1F408 +#define HDMI_CORE_I2C1_MASK 0x1F814 +#define HDMI_CORE_I2C2_MASK 0x1F818 + struct hdmi_core_vid_config { struct hdmi_config v_fc_config; enum hdmi_core_packet_mode packet_mode; |