提交 c8347ce1 编写于 作者: D Dom Cobley 提交者: Zheng Zengkai

vc4_hdmi_regs: Make interrupt mask variant specific

raspberrypi inclusion
category: feature
bugzilla: 50432

--------------------------------
Signed-off-by: NDom Cobley <popcornmix@gmail.com>
Signed-off-by: NFang Yafen <yafen@iscas.ac.cn>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 fead9a22
...@@ -1356,7 +1356,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv) ...@@ -1356,7 +1356,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
u32 stat = HDMI_READ(HDMI_CEC_CPU_STATUS); u32 stat = HDMI_READ(HDMI_CEC_CPU_STATUS);
u32 cntrl1, cntrl5; u32 cntrl1, cntrl5;
if (!(stat & VC4_HDMI_CPU_CEC)) if (!(stat & vc4_hdmi->variant->cec_mask))
return IRQ_NONE; return IRQ_NONE;
vc4_hdmi->cec_rx_msg.len = 0; vc4_hdmi->cec_rx_msg.len = 0;
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1); cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
...@@ -1372,7 +1372,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv) ...@@ -1372,7 +1372,7 @@ static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN; cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
} }
HDMI_WRITE(HDMI_CEC_CNTRL_1, cntrl1); HDMI_WRITE(HDMI_CEC_CNTRL_1, cntrl1);
HDMI_WRITE(HDMI_CEC_CPU_CLEAR, VC4_HDMI_CPU_CEC); HDMI_WRITE(HDMI_CEC_CPU_CLEAR, vc4_hdmi->variant->cec_mask);
return IRQ_WAKE_THREAD; return IRQ_WAKE_THREAD;
} }
...@@ -1411,9 +1411,9 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable) ...@@ -1411,9 +1411,9 @@ static int vc4_hdmi_cec_adap_enable(struct cec_adapter *adap, bool enable)
((3600 / usecs) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT) | ((3600 / usecs) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT) |
((3500 / usecs) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT)); ((3500 / usecs) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT));
HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC); HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, vc4_hdmi->variant->cec_mask);
} else { } else {
HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC); HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, vc4_hdmi->variant->cec_mask);
HDMI_WRITE(HDMI_CEC_CNTRL_5, val | HDMI_WRITE(HDMI_CEC_CNTRL_5, val |
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET); VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
} }
...@@ -1884,6 +1884,8 @@ static const struct vc4_hdmi_variant bcm2835_variant = { ...@@ -1884,6 +1884,8 @@ static const struct vc4_hdmi_variant bcm2835_variant = {
.phy_rng_disable = vc4_hdmi_phy_rng_disable, .phy_rng_disable = vc4_hdmi_phy_rng_disable,
.calc_hsm_clock = vc4_hdmi_calc_hsm_clock, .calc_hsm_clock = vc4_hdmi_calc_hsm_clock,
.channel_map = vc4_hdmi_channel_map, .channel_map = vc4_hdmi_channel_map,
.cec_mask = VC4_HDMI_CPU_CEC,
}; };
static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = {
...@@ -1911,6 +1913,8 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { ...@@ -1911,6 +1913,8 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = {
.phy_rng_disable = vc5_hdmi_phy_rng_disable, .phy_rng_disable = vc5_hdmi_phy_rng_disable,
.calc_hsm_clock = vc5_hdmi_calc_hsm_clock, .calc_hsm_clock = vc5_hdmi_calc_hsm_clock,
.channel_map = vc5_hdmi_channel_map, .channel_map = vc5_hdmi_channel_map,
.cec_mask = VC5_HDMI0_CPU_CEC_RX | VC5_HDMI0_CPU_CEC_TX,
}; };
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
...@@ -1938,6 +1942,8 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { ...@@ -1938,6 +1942,8 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
.phy_rng_disable = vc5_hdmi_phy_rng_disable, .phy_rng_disable = vc5_hdmi_phy_rng_disable,
.calc_hsm_clock = vc5_hdmi_calc_hsm_clock, .calc_hsm_clock = vc5_hdmi_calc_hsm_clock,
.channel_map = vc5_hdmi_channel_map, .channel_map = vc5_hdmi_channel_map,
.cec_mask = VC5_HDMI1_CPU_CEC_RX | VC5_HDMI1_CPU_CEC_TX,
}; };
static const struct of_device_id vc4_hdmi_dt_match[] = { static const struct of_device_id vc4_hdmi_dt_match[] = {
......
...@@ -98,6 +98,9 @@ struct vc4_hdmi_variant { ...@@ -98,6 +98,9 @@ struct vc4_hdmi_variant {
/* Callback to get channel map */ /* Callback to get channel map */
u32 (*channel_map)(struct vc4_hdmi *vc4_hdmi, u32 channel_mask); u32 (*channel_map)(struct vc4_hdmi *vc4_hdmi, u32 channel_mask);
/* Bitmask for CEC events */
u32 cec_mask;
}; };
/* HDMI audio information */ /* HDMI audio information */
......
...@@ -668,6 +668,15 @@ ...@@ -668,6 +668,15 @@
# define VC4_HDMI_CPU_CEC BIT(6) # define VC4_HDMI_CPU_CEC BIT(6)
# define VC4_HDMI_CPU_HOTPLUG BIT(0) # define VC4_HDMI_CPU_HOTPLUG BIT(0)
# define VC5_HDMI0_CPU_CEC_RX BIT(1)
# define VC5_HDMI0_CPU_CEC_TX BIT(0)
# define VC5_HDMI0_CPU_HOTPLUG_CONN BIT(4)
# define VC5_HDMI0_CPU_HOTPLUG_REM BIT(5)
# define VC5_HDMI1_CPU_CEC_RX BIT(7)
# define VC5_HDMI1_CPU_CEC_TX BIT(6)
# define VC5_HDMI1_CPU_HOTPLUG_CONN BIT(10)
# define VC5_HDMI1_CPU_HOTPLUG_REM BIT(11)
/* Debug: Current receive value on the CEC pad. */ /* Debug: Current receive value on the CEC pad. */
# define VC4_HD_CECRXD BIT(9) # define VC4_HD_CECRXD BIT(9)
/* Debug: Override CEC output to 0. */ /* Debug: Override CEC output to 0. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册