summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/ti_hdmi_5xxx_ip.c32
-rw-r--r--drivers/video/omap2/dss/ti_hdmi_5xxx_ip.h21
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;