From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932652AbdC1Nee (ORCPT ); Tue, 28 Mar 2017 09:34:34 -0400 Received: from mail-wr0-f178.google.com ([209.85.128.178]:34884 "EHLO mail-wr0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932176AbdC1Neb (ORCPT ); Tue, 28 Mar 2017 09:34:31 -0400 Subject: Re: [PATCH v4 1/6] drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function To: Jose Abreu , dri-devel@lists.freedesktop.org, laurent.pinchart+renesas@ideasonboard.com, architt@codeaurora.org References: <1490109161-20529-1-git-send-email-narmstrong@baylibre.com> <1490109161-20529-2-git-send-email-narmstrong@baylibre.com> Cc: kieran.bingham@ideasonboard.com, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org From: Neil Armstrong Organization: Baylibre Message-ID: <98e06589-8eb3-e7b8-646a-8099f1de51b0@baylibre.com> Date: Tue, 28 Mar 2017 15:34:17 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/22/2017 02:53 PM, Jose Abreu wrote: > Hi Neil, > > > On 21-03-2017 15:12, Neil Armstrong wrote: >> From: Laurent Pinchart >> >> In preparation for adding PHY operations to handle RX SENSE and HPD, >> group all the PHY interrupt setup code in a single location and extract >> it to a separate function. >> >> Signed-off-by: Laurent Pinchart >> Signed-off-by: Neil Armstrong > > Reviewed-by: Jose Abreu > > Maybe if you submit a next version we could get rid of > "dw_hdmi_fb_registered" totally and move the remaining setup code > to a new "dw_hdmi_setup_i2c" function. Ok I'll do this, Neil > > Best regards, > Jose Miguel Abreu > >> --- >> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 50 ++++++++++++++----------------- >> 1 file changed, 23 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> index af93f7a..f82750a 100644 >> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> @@ -1559,7 +1559,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode) >> } >> >> /* Wait until we are registered to enable interrupts */ >> -static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> +static void dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> { >> hdmi_writeb(hdmi, HDMI_PHY_I2CM_INT_ADDR_DONE_POL, >> HDMI_PHY_I2CM_INT_ADDR); >> @@ -1567,15 +1567,6 @@ static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> hdmi_writeb(hdmi, HDMI_PHY_I2CM_CTLINT_ADDR_NAC_POL | >> HDMI_PHY_I2CM_CTLINT_ADDR_ARBITRATION_POL, >> HDMI_PHY_I2CM_CTLINT_ADDR); >> - >> - /* enable cable hot plug irq */ >> - hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> - >> - /* Clear Hotplug interrupts */ >> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> - HDMI_IH_PHY_STAT0); >> - >> - return 0; >> } >> >> static void initialize_hdmi_ih_mutes(struct dw_hdmi *hdmi) >> @@ -1693,6 +1684,26 @@ static void dw_hdmi_update_phy_mask(struct dw_hdmi *hdmi) >> hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> } >> >> +static void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi) >> +{ >> + /* >> + * Configure the PHY RX SENSE and HPD interrupts polarities and clear >> + * any pending interrupt. >> + */ >> + hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0); >> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> + HDMI_IH_PHY_STAT0); >> + >> + /* Enable cable hot plug irq. */ >> + hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> + >> + /* Clear and unmute interrupts. */ >> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> + HDMI_IH_PHY_STAT0); >> + hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE), >> + HDMI_IH_MUTE_PHY_STAT0); >> +} >> + >> static enum drm_connector_status >> dw_hdmi_connector_detect(struct drm_connector *connector, bool force) >> { >> @@ -2204,29 +2215,14 @@ static int dw_hdmi_detect_phy(struct dw_hdmi *hdmi) >> hdmi->ddc = NULL; >> } >> >> - /* >> - * Configure registers related to HDMI interrupt >> - * generation before registering IRQ. >> - */ >> - hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0); >> - >> - /* Clear Hotplug interrupts */ >> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> - HDMI_IH_PHY_STAT0); >> - >> hdmi->bridge.driver_private = hdmi; >> hdmi->bridge.funcs = &dw_hdmi_bridge_funcs; >> #ifdef CONFIG_OF >> hdmi->bridge.of_node = pdev->dev.of_node; >> #endif >> >> - ret = dw_hdmi_fb_registered(hdmi); >> - if (ret) >> - goto err_iahb; >> - >> - /* Unmute interrupts */ >> - hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE), >> - HDMI_IH_MUTE_PHY_STAT0); >> + dw_hdmi_fb_registered(hdmi); >> + dw_hdmi_phy_setup_hpd(hdmi); >> >> memset(&pdevinfo, 0, sizeof(pdevinfo)); >> pdevinfo.parent = dev; > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Armstrong Subject: Re: [PATCH v4 1/6] drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function Date: Tue, 28 Mar 2017 15:34:17 +0200 Message-ID: <98e06589-8eb3-e7b8-646a-8099f1de51b0@baylibre.com> References: <1490109161-20529-1-git-send-email-narmstrong@baylibre.com> <1490109161-20529-2-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x22b.google.com (mail-wr0-x22b.google.com [IPv6:2a00:1450:400c:c0c::22b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 606B36E5EB for ; Tue, 28 Mar 2017 13:34:20 +0000 (UTC) Received: by mail-wr0-x22b.google.com with SMTP id u1so105703708wra.2 for ; Tue, 28 Mar 2017 06:34:20 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jose Abreu , dri-devel@lists.freedesktop.org, laurent.pinchart+renesas@ideasonboard.com, architt@codeaurora.org Cc: linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org, kieran.bingham@ideasonboard.com, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gMDMvMjIvMjAxNyAwMjo1MyBQTSwgSm9zZSBBYnJldSB3cm90ZToKPiBIaSBOZWlsLAo+IAo+ IAo+IE9uIDIxLTAzLTIwMTcgMTU6MTIsIE5laWwgQXJtc3Ryb25nIHdyb3RlOgo+PiBGcm9tOiBM YXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNv bT4KPj4KPj4gSW4gcHJlcGFyYXRpb24gZm9yIGFkZGluZyBQSFkgb3BlcmF0aW9ucyB0byBoYW5k bGUgUlggU0VOU0UgYW5kIEhQRCwKPj4gZ3JvdXAgYWxsIHRoZSBQSFkgaW50ZXJydXB0IHNldHVw IGNvZGUgaW4gYSBzaW5nbGUgbG9jYXRpb24gYW5kIGV4dHJhY3QKPj4gaXQgdG8gYSBzZXBhcmF0 ZSBmdW5jdGlvbi4KPj4KPj4gU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVu dC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE5l aWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KPiAKPiBSZXZpZXdlZC1ieTog Sm9zZSBBYnJldSA8am9hYnJldUBzeW5vcHN5cy5jb20+Cj4gCj4gTWF5YmUgaWYgeW91IHN1Ym1p dCBhIG5leHQgdmVyc2lvbiB3ZSBjb3VsZCBnZXQgcmlkIG9mCj4gImR3X2hkbWlfZmJfcmVnaXN0 ZXJlZCIgdG90YWxseSBhbmQgbW92ZSB0aGUgcmVtYWluaW5nIHNldHVwIGNvZGUKPiB0byBhIG5l dyAiZHdfaGRtaV9zZXR1cF9pMmMiIGZ1bmN0aW9uLgoKT2sgSSdsbCBkbyB0aGlzLAoKTmVpbAo+ IAo+IEJlc3QgcmVnYXJkcywKPiBKb3NlIE1pZ3VlbCBBYnJldQo+IAo+PiAtLS0KPj4gIGRyaXZl cnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jIHwgNTAgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDI3 IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9z eW5vcHN5cy9kdy1oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhk bWkuYwo+PiBpbmRleCBhZjkzZjdhLi5mODI3NTBhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYwo+PiBAQCAtMTU1OSw3ICsxNTU5LDcgQEAgc3RhdGlj IGludCBkd19oZG1pX3NldHVwKHN0cnVjdCBkd19oZG1pICpoZG1pLCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSkKPj4gIH0KPj4gIAo+PiAgLyogV2FpdCB1bnRpbCB3ZSBhcmUgcmVnaXN0 ZXJlZCB0byBlbmFibGUgaW50ZXJydXB0cyAqLwo+PiAtc3RhdGljIGludCBkd19oZG1pX2ZiX3Jl Z2lzdGVyZWQoc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICtzdGF0aWMgdm9pZCBkd19oZG1pX2Zi X3JlZ2lzdGVyZWQoc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICB7Cj4+ICAJaGRtaV93cml0ZWIo aGRtaSwgSERNSV9QSFlfSTJDTV9JTlRfQUREUl9ET05FX1BPTCwKPj4gIAkJICAgIEhETUlfUEhZ X0kyQ01fSU5UX0FERFIpOwo+PiBAQCAtMTU2NywxNSArMTU2Nyw2IEBAIHN0YXRpYyBpbnQgZHdf aGRtaV9mYl9yZWdpc3RlcmVkKHN0cnVjdCBkd19oZG1pICpoZG1pKQo+PiAgCWhkbWlfd3JpdGVi KGhkbWksIEhETUlfUEhZX0kyQ01fQ1RMSU5UX0FERFJfTkFDX1BPTCB8Cj4+ICAJCSAgICBIRE1J X1BIWV9JMkNNX0NUTElOVF9BRERSX0FSQklUUkFUSU9OX1BPTCwKPj4gIAkJICAgIEhETUlfUEhZ X0kyQ01fQ1RMSU5UX0FERFIpOwo+PiAtCj4+IC0JLyogZW5hYmxlIGNhYmxlIGhvdCBwbHVnIGly cSAqLwo+PiAtCWhkbWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9NQVNL MCk7Cj4+IC0KPj4gLQkvKiBDbGVhciBIb3RwbHVnIGludGVycnVwdHMgKi8KPj4gLQloZG1pX3dy aXRlYihoZG1pLCBIRE1JX0lIX1BIWV9TVEFUMF9IUEQgfCBIRE1JX0lIX1BIWV9TVEFUMF9SWF9T RU5TRSwKPj4gLQkJICAgIEhETUlfSUhfUEhZX1NUQVQwKTsKPj4gLQo+PiAtCXJldHVybiAwOwo+ PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2hkbWlfaWhfbXV0ZXMoc3RydWN0 IGR3X2hkbWkgKmhkbWkpCj4+IEBAIC0xNjkzLDYgKzE2ODQsMjYgQEAgc3RhdGljIHZvaWQgZHdf aGRtaV91cGRhdGVfcGh5X21hc2soc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4+ICAJCWhkbWlfd3Jp dGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9NQVNLMCk7Cj4+ICB9Cj4+ICAKPj4g K3N0YXRpYyB2b2lkIGR3X2hkbWlfcGh5X3NldHVwX2hwZChzdHJ1Y3QgZHdfaGRtaSAqaGRtaSkK Pj4gK3sKPj4gKwkvKgo+PiArCSAqIENvbmZpZ3VyZSB0aGUgUEhZIFJYIFNFTlNFIGFuZCBIUEQg aW50ZXJydXB0cyBwb2xhcml0aWVzIGFuZCBjbGVhcgo+PiArCSAqIGFueSBwZW5kaW5nIGludGVy cnVwdC4KPj4gKwkgKi8KPj4gKwloZG1pX3dyaXRlYihoZG1pLCBIRE1JX1BIWV9IUEQgfCBIRE1J X1BIWV9SWF9TRU5TRSwgSERNSV9QSFlfUE9MMCk7Cj4+ICsJaGRtaV93cml0ZWIoaGRtaSwgSERN SV9JSF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RBVDBfUlhfU0VOU0UsCj4+ICsJCSAg ICBIRE1JX0lIX1BIWV9TVEFUMCk7Cj4+ICsKPj4gKwkvKiBFbmFibGUgY2FibGUgaG90IHBsdWcg aXJxLiAqLwo+PiArCWhkbWlfd3JpdGViKGhkbWksIGhkbWktPnBoeV9tYXNrLCBIRE1JX1BIWV9N QVNLMCk7Cj4+ICsKPj4gKwkvKiBDbGVhciBhbmQgdW5tdXRlIGludGVycnVwdHMuICovCj4+ICsJ aGRtaV93cml0ZWIoaGRtaSwgSERNSV9JSF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9QSFlfU1RB VDBfUlhfU0VOU0UsCj4+ICsJCSAgICBIRE1JX0lIX1BIWV9TVEFUMCk7Cj4+ICsJaGRtaV93cml0 ZWIoaGRtaSwgfihIRE1JX0lIX1BIWV9TVEFUMF9IUEQgfCBIRE1JX0lIX1BIWV9TVEFUMF9SWF9T RU5TRSksCj4+ICsJCSAgICBIRE1JX0lIX01VVEVfUEhZX1NUQVQwKTsKPj4gK30KPj4gKwo+PiAg c3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPj4gIGR3X2hkbWlfY29ubmVjdG9yX2Rl dGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+PiAgewo+ PiBAQCAtMjIwNCwyOSArMjIxNSwxNCBAQCBzdGF0aWMgaW50IGR3X2hkbWlfZGV0ZWN0X3BoeShz dHJ1Y3QgZHdfaGRtaSAqaGRtaSkKPj4gIAkJCWhkbWktPmRkYyA9IE5VTEw7Cj4+ICAJfQo+PiAg Cj4+IC0JLyoKPj4gLQkgKiBDb25maWd1cmUgcmVnaXN0ZXJzIHJlbGF0ZWQgdG8gSERNSSBpbnRl cnJ1cHQKPj4gLQkgKiBnZW5lcmF0aW9uIGJlZm9yZSByZWdpc3RlcmluZyBJUlEuCj4+IC0JICov Cj4+IC0JaGRtaV93cml0ZWIoaGRtaSwgSERNSV9QSFlfSFBEIHwgSERNSV9QSFlfUlhfU0VOU0Us IEhETUlfUEhZX1BPTDApOwo+PiAtCj4+IC0JLyogQ2xlYXIgSG90cGx1ZyBpbnRlcnJ1cHRzICov Cj4+IC0JaGRtaV93cml0ZWIoaGRtaSwgSERNSV9JSF9QSFlfU1RBVDBfSFBEIHwgSERNSV9JSF9Q SFlfU1RBVDBfUlhfU0VOU0UsCj4+IC0JCSAgICBIRE1JX0lIX1BIWV9TVEFUMCk7Cj4+IC0KPj4g IAloZG1pLT5icmlkZ2UuZHJpdmVyX3ByaXZhdGUgPSBoZG1pOwo+PiAgCWhkbWktPmJyaWRnZS5m dW5jcyA9ICZkd19oZG1pX2JyaWRnZV9mdW5jczsKPj4gICNpZmRlZiBDT05GSUdfT0YKPj4gIAlo ZG1pLT5icmlkZ2Uub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwo+PiAgI2VuZGlmCj4+ICAK Pj4gLQlyZXQgPSBkd19oZG1pX2ZiX3JlZ2lzdGVyZWQoaGRtaSk7Cj4+IC0JaWYgKHJldCkKPj4g LQkJZ290byBlcnJfaWFoYjsKPj4gLQo+PiAtCS8qIFVubXV0ZSBpbnRlcnJ1cHRzICovCj4+IC0J aGRtaV93cml0ZWIoaGRtaSwgfihIRE1JX0lIX1BIWV9TVEFUMF9IUEQgfCBIRE1JX0lIX1BIWV9T VEFUMF9SWF9TRU5TRSksCj4+IC0JCSAgICBIRE1JX0lIX01VVEVfUEhZX1NUQVQwKTsKPj4gKwlk d19oZG1pX2ZiX3JlZ2lzdGVyZWQoaGRtaSk7Cj4+ICsJZHdfaGRtaV9waHlfc2V0dXBfaHBkKGhk bWkpOwo+PiAgCj4+ICAJbWVtc2V0KCZwZGV2aW5mbywgMCwgc2l6ZW9mKHBkZXZpbmZvKSk7Cj4+ ICAJcGRldmluZm8ucGFyZW50ID0gZGV2Owo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: narmstrong@baylibre.com (Neil Armstrong) Date: Tue, 28 Mar 2017 15:34:17 +0200 Subject: [PATCH v4 1/6] drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function In-Reply-To: References: <1490109161-20529-1-git-send-email-narmstrong@baylibre.com> <1490109161-20529-2-git-send-email-narmstrong@baylibre.com> Message-ID: <98e06589-8eb3-e7b8-646a-8099f1de51b0@baylibre.com> To: linus-amlogic@lists.infradead.org List-Id: linus-amlogic.lists.infradead.org On 03/22/2017 02:53 PM, Jose Abreu wrote: > Hi Neil, > > > On 21-03-2017 15:12, Neil Armstrong wrote: >> From: Laurent Pinchart >> >> In preparation for adding PHY operations to handle RX SENSE and HPD, >> group all the PHY interrupt setup code in a single location and extract >> it to a separate function. >> >> Signed-off-by: Laurent Pinchart >> Signed-off-by: Neil Armstrong > > Reviewed-by: Jose Abreu > > Maybe if you submit a next version we could get rid of > "dw_hdmi_fb_registered" totally and move the remaining setup code > to a new "dw_hdmi_setup_i2c" function. Ok I'll do this, Neil > > Best regards, > Jose Miguel Abreu > >> --- >> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 50 ++++++++++++++----------------- >> 1 file changed, 23 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> index af93f7a..f82750a 100644 >> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c >> @@ -1559,7 +1559,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode) >> } >> >> /* Wait until we are registered to enable interrupts */ >> -static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> +static void dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> { >> hdmi_writeb(hdmi, HDMI_PHY_I2CM_INT_ADDR_DONE_POL, >> HDMI_PHY_I2CM_INT_ADDR); >> @@ -1567,15 +1567,6 @@ static int dw_hdmi_fb_registered(struct dw_hdmi *hdmi) >> hdmi_writeb(hdmi, HDMI_PHY_I2CM_CTLINT_ADDR_NAC_POL | >> HDMI_PHY_I2CM_CTLINT_ADDR_ARBITRATION_POL, >> HDMI_PHY_I2CM_CTLINT_ADDR); >> - >> - /* enable cable hot plug irq */ >> - hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> - >> - /* Clear Hotplug interrupts */ >> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> - HDMI_IH_PHY_STAT0); >> - >> - return 0; >> } >> >> static void initialize_hdmi_ih_mutes(struct dw_hdmi *hdmi) >> @@ -1693,6 +1684,26 @@ static void dw_hdmi_update_phy_mask(struct dw_hdmi *hdmi) >> hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> } >> >> +static void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi) >> +{ >> + /* >> + * Configure the PHY RX SENSE and HPD interrupts polarities and clear >> + * any pending interrupt. >> + */ >> + hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0); >> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> + HDMI_IH_PHY_STAT0); >> + >> + /* Enable cable hot plug irq. */ >> + hdmi_writeb(hdmi, hdmi->phy_mask, HDMI_PHY_MASK0); >> + >> + /* Clear and unmute interrupts. */ >> + hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> + HDMI_IH_PHY_STAT0); >> + hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE), >> + HDMI_IH_MUTE_PHY_STAT0); >> +} >> + >> static enum drm_connector_status >> dw_hdmi_connector_detect(struct drm_connector *connector, bool force) >> { >> @@ -2204,29 +2215,14 @@ static int dw_hdmi_detect_phy(struct dw_hdmi *hdmi) >> hdmi->ddc = NULL; >> } >> >> - /* >> - * Configure registers related to HDMI interrupt >> - * generation before registering IRQ. >> - */ >> - hdmi_writeb(hdmi, HDMI_PHY_HPD | HDMI_PHY_RX_SENSE, HDMI_PHY_POL0); >> - >> - /* Clear Hotplug interrupts */ >> - hdmi_writeb(hdmi, HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE, >> - HDMI_IH_PHY_STAT0); >> - >> hdmi->bridge.driver_private = hdmi; >> hdmi->bridge.funcs = &dw_hdmi_bridge_funcs; >> #ifdef CONFIG_OF >> hdmi->bridge.of_node = pdev->dev.of_node; >> #endif >> >> - ret = dw_hdmi_fb_registered(hdmi); >> - if (ret) >> - goto err_iahb; >> - >> - /* Unmute interrupts */ >> - hdmi_writeb(hdmi, ~(HDMI_IH_PHY_STAT0_HPD | HDMI_IH_PHY_STAT0_RX_SENSE), >> - HDMI_IH_MUTE_PHY_STAT0); >> + dw_hdmi_fb_registered(hdmi); >> + dw_hdmi_phy_setup_hpd(hdmi); >> >> memset(&pdevinfo, 0, sizeof(pdevinfo)); >> pdevinfo.parent = dev; >