diff options
| author | Dave Airlie <airlied@redhat.com> | 2018-05-30 18:35:47 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2018-05-30 18:35:47 -0400 |
| commit | 0e333751cff1dd7383be15372960a1be6e2b4e47 (patch) | |
| tree | 8f34196f8308776778e7d6060ff5c96453cdb0b2 | |
| parent | 2b85352e3b08159c9d5c82144d05767a00169f9d (diff) | |
| parent | c32048d9e93a5ab925d745396c63e7b912147f0a (diff) | |
Merge tag 'drm-misc-fixes-2018-05-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes
dw-hdmi: Fix Oops regression from rc1 (Neil)
Cc: Neil Armstrong <narmstrong@baylibre.com>
* tag 'drm-misc-fixes-2018-05-30' of git://anongit.freedesktop.org/drm/drm-misc:
drm/bridge/synopsys: dw-hdmi: fix dw_hdmi_setup_rx_sense
| -rw-r--r-- | drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/meson/meson_dw_hdmi.c | 2 | ||||
| -rw-r--r-- | include/drm/bridge/dw_hdmi.h | 2 |
3 files changed, 6 insertions, 13 deletions
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index ec8d0006ef7c..3c136f2b954f 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | |||
| @@ -2077,7 +2077,7 @@ static irqreturn_t dw_hdmi_hardirq(int irq, void *dev_id) | |||
| 2077 | return ret; | 2077 | return ret; |
| 2078 | } | 2078 | } |
| 2079 | 2079 | ||
| 2080 | void __dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense) | 2080 | void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense) |
| 2081 | { | 2081 | { |
| 2082 | mutex_lock(&hdmi->mutex); | 2082 | mutex_lock(&hdmi->mutex); |
| 2083 | 2083 | ||
| @@ -2103,13 +2103,6 @@ void __dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense) | |||
| 2103 | } | 2103 | } |
| 2104 | mutex_unlock(&hdmi->mutex); | 2104 | mutex_unlock(&hdmi->mutex); |
| 2105 | } | 2105 | } |
| 2106 | |||
| 2107 | void dw_hdmi_setup_rx_sense(struct device *dev, bool hpd, bool rx_sense) | ||
| 2108 | { | ||
| 2109 | struct dw_hdmi *hdmi = dev_get_drvdata(dev); | ||
| 2110 | |||
| 2111 | __dw_hdmi_setup_rx_sense(hdmi, hpd, rx_sense); | ||
| 2112 | } | ||
| 2113 | EXPORT_SYMBOL_GPL(dw_hdmi_setup_rx_sense); | 2106 | EXPORT_SYMBOL_GPL(dw_hdmi_setup_rx_sense); |
| 2114 | 2107 | ||
| 2115 | static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) | 2108 | static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) |
| @@ -2145,9 +2138,9 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) | |||
| 2145 | */ | 2138 | */ |
| 2146 | if (intr_stat & | 2139 | if (intr_stat & |
| 2147 | (HDMI_IH_PHY_STAT0_RX_SENSE | HDMI_IH_PHY_STAT0_HPD)) { | 2140 | (HDMI_IH_PHY_STAT0_RX_SENSE | HDMI_IH_PHY_STAT0_HPD)) { |
| 2148 | __dw_hdmi_setup_rx_sense(hdmi, | 2141 | dw_hdmi_setup_rx_sense(hdmi, |
| 2149 | phy_stat & HDMI_PHY_HPD, | 2142 | phy_stat & HDMI_PHY_HPD, |
| 2150 | phy_stat & HDMI_PHY_RX_SENSE); | 2143 | phy_stat & HDMI_PHY_RX_SENSE); |
| 2151 | 2144 | ||
| 2152 | if ((phy_stat & (HDMI_PHY_RX_SENSE | HDMI_PHY_HPD)) == 0) | 2145 | if ((phy_stat & (HDMI_PHY_RX_SENSE | HDMI_PHY_HPD)) == 0) |
| 2153 | cec_notifier_set_phys_addr(hdmi->cec_notifier, | 2146 | cec_notifier_set_phys_addr(hdmi->cec_notifier, |
diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c index a393095aac1a..c9ad45686e7a 100644 --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c | |||
| @@ -529,7 +529,7 @@ static irqreturn_t dw_hdmi_top_thread_irq(int irq, void *dev_id) | |||
| 529 | if (stat & HDMITX_TOP_INTR_HPD_RISE) | 529 | if (stat & HDMITX_TOP_INTR_HPD_RISE) |
| 530 | hpd_connected = true; | 530 | hpd_connected = true; |
| 531 | 531 | ||
| 532 | dw_hdmi_setup_rx_sense(dw_hdmi->dev, hpd_connected, | 532 | dw_hdmi_setup_rx_sense(dw_hdmi->hdmi, hpd_connected, |
| 533 | hpd_connected); | 533 | hpd_connected); |
| 534 | 534 | ||
| 535 | drm_helper_hpd_irq_event(dw_hdmi->encoder.dev); | 535 | drm_helper_hpd_irq_event(dw_hdmi->encoder.dev); |
diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h index dd2a8cf7d20b..ccb5aa8468e0 100644 --- a/include/drm/bridge/dw_hdmi.h +++ b/include/drm/bridge/dw_hdmi.h | |||
| @@ -151,7 +151,7 @@ struct dw_hdmi *dw_hdmi_bind(struct platform_device *pdev, | |||
| 151 | struct drm_encoder *encoder, | 151 | struct drm_encoder *encoder, |
| 152 | const struct dw_hdmi_plat_data *plat_data); | 152 | const struct dw_hdmi_plat_data *plat_data); |
| 153 | 153 | ||
| 154 | void dw_hdmi_setup_rx_sense(struct device *dev, bool hpd, bool rx_sense); | 154 | void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bool hpd, bool rx_sense); |
| 155 | 155 | ||
| 156 | void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate); | 156 | void dw_hdmi_set_sample_rate(struct dw_hdmi *hdmi, unsigned int rate); |
| 157 | void dw_hdmi_audio_enable(struct dw_hdmi *hdmi); | 157 | void dw_hdmi_audio_enable(struct dw_hdmi *hdmi); |
