|
@@ -281,9 +281,9 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
}
|
|
|
|
|
|
static void vc5_hdmi_set_timings(struct vc4_hdmi *vc4_hdmi,
|
|
|
-@@ -789,10 +856,13 @@ static void vc5_hdmi_set_timings(struct
|
|
|
+@@ -790,10 +857,13 @@ static void vc5_hdmi_set_timings(struct
|
|
|
VC4_SET_FIELD(mode->crtc_vtotal -
|
|
|
- mode->crtc_vsync_end - interlaced,
|
|
|
+ mode->crtc_vsync_end,
|
|
|
VC4_HDMI_VERTB_VBP));
|
|
|
+ unsigned long flags;
|
|
|
unsigned char gcp;
|
|
@@ -295,7 +295,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
HDMI_WRITE(HDMI_VEC_INTERFACE_XBAR, 0x354021);
|
|
|
HDMI_WRITE(HDMI_HORZA,
|
|
|
(vsync_pos ? VC5_HDMI_HORZA_VPOS : 0) |
|
|
|
-@@ -856,13 +926,18 @@ static void vc5_hdmi_set_timings(struct
|
|
|
+@@ -857,13 +927,18 @@ static void vc5_hdmi_set_timings(struct
|
|
|
HDMI_WRITE(HDMI_MISC_CONTROL, reg);
|
|
|
|
|
|
HDMI_WRITE(HDMI_CLOCK_STOP, 0);
|
|
@@ -314,7 +314,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
drift = HDMI_READ(HDMI_FIFO_CTL);
|
|
|
drift &= VC4_HDMI_FIFO_VALID_WRITE_MASK;
|
|
|
|
|
|
-@@ -870,12 +945,20 @@ static void vc4_hdmi_recenter_fifo(struc
|
|
|
+@@ -871,12 +946,20 @@ static void vc4_hdmi_recenter_fifo(struc
|
|
|
drift & ~VC4_HDMI_FIFO_CTL_RECENTER);
|
|
|
HDMI_WRITE(HDMI_FIFO_CTL,
|
|
|
drift | VC4_HDMI_FIFO_CTL_RECENTER);
|
|
@@ -335,7 +335,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
ret = wait_for(HDMI_READ(HDMI_FIFO_CTL) &
|
|
|
VC4_HDMI_FIFO_CTL_RECENTER_DONE, 1);
|
|
|
WARN_ONCE(ret, "Timeout waiting for "
|
|
|
-@@ -909,6 +992,7 @@ static void vc4_hdmi_encoder_pre_crtc_co
|
|
|
+@@ -910,6 +993,7 @@ static void vc4_hdmi_encoder_pre_crtc_co
|
|
|
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
|
|
unsigned long pixel_rate = vc4_conn_state->pixel_rate;
|
|
|
unsigned long bvb_rate, hsm_rate;
|
|
@@ -343,7 +343,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
int ret;
|
|
|
|
|
|
/*
|
|
|
-@@ -977,11 +1061,15 @@ static void vc4_hdmi_encoder_pre_crtc_co
|
|
|
+@@ -978,11 +1062,15 @@ static void vc4_hdmi_encoder_pre_crtc_co
|
|
|
if (vc4_hdmi->variant->phy_init)
|
|
|
vc4_hdmi->variant->phy_init(vc4_hdmi, vc4_conn_state);
|
|
|
|
|
@@ -359,7 +359,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
if (vc4_hdmi->variant->set_timings)
|
|
|
vc4_hdmi->variant->set_timings(vc4_hdmi, conn_state, mode);
|
|
|
|
|
|
-@@ -1001,6 +1089,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
|
|
|
+@@ -1002,6 +1090,7 @@ static void vc4_hdmi_encoder_pre_crtc_en
|
|
|
struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
|
|
|
struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
|
|
|
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
|
@@ -367,7 +367,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
if (vc4_encoder->hdmi_monitor &&
|
|
|
drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_LIMITED) {
|
|
|
-@@ -1015,7 +1104,9 @@ static void vc4_hdmi_encoder_pre_crtc_en
|
|
|
+@@ -1016,7 +1105,9 @@ static void vc4_hdmi_encoder_pre_crtc_en
|
|
|
vc4_encoder->limited_rgb_range = false;
|
|
|
}
|
|
|
|
|
@@ -377,7 +377,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
}
|
|
|
|
|
|
static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
|
|
|
-@@ -1026,8 +1117,11 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
+@@ -1027,8 +1118,11 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
|
|
|
bool hsync_pos = mode->flags & DRM_MODE_FLAG_PHSYNC;
|
|
|
bool vsync_pos = mode->flags & DRM_MODE_FLAG_PVSYNC;
|
|
@@ -389,7 +389,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
HDMI_WRITE(HDMI_VID_CTL,
|
|
|
VC4_HD_VID_CTL_ENABLE |
|
|
|
VC4_HD_VID_CTL_CLRRGB |
|
|
|
-@@ -1044,6 +1138,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
+@@ -1045,6 +1139,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
HDMI_READ(HDMI_SCHEDULER_CONTROL) |
|
|
|
VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
|
|
|
|
|
@@ -398,7 +398,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
ret = wait_for(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
|
|
|
VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE, 1000);
|
|
|
WARN_ONCE(ret, "Timeout waiting for "
|
|
|
-@@ -1056,6 +1152,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
+@@ -1057,6 +1153,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
HDMI_READ(HDMI_SCHEDULER_CONTROL) &
|
|
|
~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
|
|
|
|
|
@@ -407,7 +407,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
ret = wait_for(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
|
|
|
VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE), 1000);
|
|
|
WARN_ONCE(ret, "Timeout waiting for "
|
|
|
-@@ -1063,6 +1161,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
+@@ -1064,6 +1162,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
}
|
|
|
|
|
|
if (vc4_encoder->hdmi_monitor) {
|
|
@@ -416,7 +416,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
|
|
|
VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
|
|
|
HDMI_WRITE(HDMI_SCHEDULER_CONTROL,
|
|
|
-@@ -1072,6 +1172,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
+@@ -1073,6 +1173,8 @@ static void vc4_hdmi_encoder_post_crtc_e
|
|
|
HDMI_WRITE(HDMI_RAM_PACKET_CONFIG,
|
|
|
VC4_HDMI_RAM_PACKET_ENABLE);
|
|
|
|
|
@@ -425,7 +425,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
vc4_hdmi_set_infoframes(encoder);
|
|
|
}
|
|
|
|
|
|
-@@ -1195,6 +1297,7 @@ static void vc4_hdmi_audio_set_mai_clock
|
|
|
+@@ -1196,6 +1298,7 @@ static void vc4_hdmi_audio_set_mai_clock
|
|
|
unsigned int samplerate)
|
|
|
{
|
|
|
u32 hsm_clock = clk_get_rate(vc4_hdmi->audio_clock);
|
|
@@ -433,7 +433,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
unsigned long n, m;
|
|
|
|
|
|
rational_best_approximation(hsm_clock, samplerate,
|
|
|
-@@ -1204,9 +1307,11 @@ static void vc4_hdmi_audio_set_mai_clock
|
|
|
+@@ -1205,9 +1308,11 @@ static void vc4_hdmi_audio_set_mai_clock
|
|
|
VC4_HD_MAI_SMP_M_SHIFT) + 1,
|
|
|
&n, &m);
|
|
|
|
|
@@ -445,7 +445,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
}
|
|
|
|
|
|
static void vc4_hdmi_set_n_cts(struct vc4_hdmi *vc4_hdmi, unsigned int samplerate)
|
|
|
-@@ -1217,6 +1322,8 @@ static void vc4_hdmi_set_n_cts(struct vc
|
|
|
+@@ -1218,6 +1323,8 @@ static void vc4_hdmi_set_n_cts(struct vc
|
|
|
u32 n, cts;
|
|
|
u64 tmp;
|
|
|
|
|
@@ -454,7 +454,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
n = 128 * samplerate / 1000;
|
|
|
tmp = (u64)(mode->clock * 1000) * n;
|
|
|
do_div(tmp, 128 * samplerate);
|
|
|
-@@ -1246,6 +1353,7 @@ static int vc4_hdmi_audio_startup(struct
|
|
|
+@@ -1247,6 +1354,7 @@ static int vc4_hdmi_audio_startup(struct
|
|
|
{
|
|
|
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
|
|
|
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
|
@@ -462,7 +462,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
/*
|
|
|
* If the HDMI encoder hasn't probed, or the encoder is
|
|
|
-@@ -1257,12 +1365,14 @@ static int vc4_hdmi_audio_startup(struct
|
|
|
+@@ -1258,12 +1366,14 @@ static int vc4_hdmi_audio_startup(struct
|
|
|
|
|
|
vc4_hdmi->audio.streaming = true;
|
|
|
|
|
@@ -477,7 +477,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
if (vc4_hdmi->variant->phy_rng_enable)
|
|
|
vc4_hdmi->variant->phy_rng_enable(vc4_hdmi);
|
|
|
-@@ -1274,6 +1384,7 @@ static void vc4_hdmi_audio_reset(struct
|
|
|
+@@ -1275,6 +1385,7 @@ static void vc4_hdmi_audio_reset(struct
|
|
|
{
|
|
|
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
|
|
struct device *dev = &vc4_hdmi->pdev->dev;
|
|
@@ -485,7 +485,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
int ret;
|
|
|
|
|
|
vc4_hdmi->audio.streaming = false;
|
|
|
-@@ -1281,20 +1392,29 @@ static void vc4_hdmi_audio_reset(struct
|
|
|
+@@ -1282,20 +1393,29 @@ static void vc4_hdmi_audio_reset(struct
|
|
|
if (ret)
|
|
|
dev_err(dev, "Failed to stop audio infoframe: %d\n", ret);
|
|
|
|
|
@@ -515,7 +515,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
if (vc4_hdmi->variant->phy_rng_disable)
|
|
|
vc4_hdmi->variant->phy_rng_disable(vc4_hdmi);
|
|
|
|
|
|
-@@ -1349,6 +1469,7 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
+@@ -1350,6 +1470,7 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
|
|
unsigned int sample_rate = params->sample_rate;
|
|
|
unsigned int channels = params->channels;
|
|
@@ -523,7 +523,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
u32 audio_packet_config, channel_mask;
|
|
|
u32 channel_map;
|
|
|
u32 mai_audio_format;
|
|
|
-@@ -1357,14 +1478,15 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
+@@ -1358,14 +1479,15 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
dev_dbg(dev, "%s: %u Hz, %d bit, %d channels\n", __func__,
|
|
|
sample_rate, params->sample_width, channels);
|
|
|
|
|
@@ -541,7 +541,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
mai_sample_rate = sample_rate_to_mai_fmt(sample_rate);
|
|
|
if (params->iec.status[0] & IEC958_AES0_NONAUDIO &&
|
|
|
params->channels == 8)
|
|
|
-@@ -1402,8 +1524,11 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
+@@ -1403,8 +1525,11 @@ static int vc4_hdmi_audio_prepare(struct
|
|
|
channel_map = vc4_hdmi->variant->channel_map(vc4_hdmi, channel_mask);
|
|
|
HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map);
|
|
|
HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config);
|
|
@@ -553,7 +553,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea));
|
|
|
vc4_hdmi_set_audio_infoframe(encoder);
|
|
|
|
|
|
-@@ -1677,6 +1802,8 @@ static void vc4_cec_read_msg(struct vc4_
|
|
|
+@@ -1678,6 +1803,8 @@ static void vc4_cec_read_msg(struct vc4_
|
|
|
struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
|
|
|
unsigned int i;
|
|
|
|
|
@@ -562,7 +562,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >>
|
|
|
VC4_HDMI_CEC_REC_WRD_CNT_SHIFT);
|
|
|
|
|
|
-@@ -1695,11 +1822,12 @@ static void vc4_cec_read_msg(struct vc4_
|
|
|
+@@ -1696,11 +1823,12 @@ static void vc4_cec_read_msg(struct vc4_
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -577,7 +577,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
|
|
|
vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD;
|
|
|
cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
|
|
|
-@@ -1708,11 +1836,24 @@ static irqreturn_t vc4_cec_irq_handler_t
|
|
|
+@@ -1709,11 +1837,24 @@ static irqreturn_t vc4_cec_irq_handler_t
|
|
|
return IRQ_WAKE_THREAD;
|
|
|
}
|
|
|
|
|
@@ -603,7 +603,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
vc4_hdmi->cec_rx_msg.len = 0;
|
|
|
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
|
|
|
vc4_cec_read_msg(vc4_hdmi, cntrl1);
|
|
|
-@@ -1725,6 +1866,18 @@ static irqreturn_t vc4_cec_irq_handler_r
|
|
|
+@@ -1726,6 +1867,18 @@ static irqreturn_t vc4_cec_irq_handler_r
|
|
|
return IRQ_WAKE_THREAD;
|
|
|
}
|
|
|
|
|
@@ -622,7 +622,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
|
|
|
{
|
|
|
struct vc4_hdmi *vc4_hdmi = priv;
|
|
|
-@@ -1735,14 +1888,17 @@ static irqreturn_t vc4_cec_irq_handler(i
|
|
|
+@@ -1736,14 +1889,17 @@ static irqreturn_t vc4_cec_irq_handler(i
|
|
|
if (!(stat & VC4_HDMI_CPU_CEC))
|
|
|
return IRQ_NONE;
|
|
|
|
|
@@ -642,7 +642,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-@@ -1751,6 +1907,7 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
+@@ -1752,6 +1908,7 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
|
|
/* clock period in microseconds */
|
|
|
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
|
|
@@ -650,7 +650,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
u32 val;
|
|
|
int ret;
|
|
|
|
|
|
-@@ -1758,6 +1915,8 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
+@@ -1759,6 +1916,8 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
@@ -659,7 +659,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
val = HDMI_READ(HDMI_CEC_CNTRL_5);
|
|
|
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
|
|
|
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
|
|
|
-@@ -1788,12 +1947,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
+@@ -1789,12 +1948,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
|
|
if (!vc4_hdmi->variant->external_irq_controller)
|
|
|
HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC);
|
|
|
|
|
@@ -677,7 +677,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
if (!vc4_hdmi->variant->external_irq_controller)
|
|
|
HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
|
|
|
-@@ -1801,6 +1965,8 @@ static int vc4_hdmi_cec_disable(struct c
|
|
|
+@@ -1802,6 +1966,8 @@ static int vc4_hdmi_cec_disable(struct c
|
|
|
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
|
|
|
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
|
|
|
|
|
@@ -686,7 +686,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
pm_runtime_put(&vc4_hdmi->pdev->dev);
|
|
|
|
|
|
return 0;
|
|
|
-@@ -1817,10 +1983,14 @@ static int vc4_hdmi_cec_adap_enable(stru
|
|
|
+@@ -1818,10 +1984,14 @@ static int vc4_hdmi_cec_adap_enable(stru
|
|
|
static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
|
|
|
{
|
|
|
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
|
@@ -701,7 +701,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-@@ -1829,6 +1999,7 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
+@@ -1830,6 +2000,7 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
{
|
|
|
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
|
|
struct drm_device *dev = vc4_hdmi->connector.dev;
|
|
@@ -709,7 +709,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
u32 val;
|
|
|
unsigned int i;
|
|
|
|
|
|
-@@ -1837,6 +2008,8 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
+@@ -1838,6 +2009,8 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
@@ -718,7 +718,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
for (i = 0; i < msg->len; i += 4)
|
|
|
HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2),
|
|
|
(msg->msg[i]) |
|
|
|
-@@ -1852,6 +2025,9 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
+@@ -1853,6 +2026,9 @@ static int vc4_hdmi_cec_adap_transmit(st
|
|
|
val |= VC4_HDMI_CEC_START_XMIT_BEGIN;
|
|
|
|
|
|
HDMI_WRITE(HDMI_CEC_CNTRL_1, val);
|
|
@@ -728,7 +728,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-@@ -1866,6 +2042,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
+@@ -1867,6 +2043,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
struct cec_connector_info conn_info;
|
|
|
struct platform_device *pdev = vc4_hdmi->pdev;
|
|
|
struct device *dev = &pdev->dev;
|
|
@@ -736,7 +736,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
u32 value;
|
|
|
int ret;
|
|
|
|
|
|
-@@ -1886,10 +2063,12 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
+@@ -1887,10 +2064,12 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
|
|
|
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
|
|
|
|
@@ -749,7 +749,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
|
|
|
|
|
|
-@@ -1908,7 +2087,9 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
+@@ -1909,7 +2088,9 @@ static int vc4_hdmi_cec_init(struct vc4_
|
|
|
if (ret)
|
|
|
goto err_remove_cec_rx_handler;
|
|
|
} else {
|
|
@@ -759,7 +759,7 @@ Signed-off-by: Maxime Ripard <[email protected]>
|
|
|
|
|
|
ret = request_threaded_irq(platform_get_irq(pdev, 0),
|
|
|
vc4_cec_irq_handler,
|
|
|
-@@ -2178,6 +2359,7 @@ static int vc4_hdmi_bind(struct device *
|
|
|
+@@ -2179,6 +2360,7 @@ static int vc4_hdmi_bind(struct device *
|
|
|
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
|
|
|
if (!vc4_hdmi)
|
|
|
return -ENOMEM;
|