From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v2 3/8] drm/bridge: dw-hdmi: allow overriding of phy-type reading Date: Mon, 19 Feb 2018 18:59:02 +0200 Message-ID: <3905607.btOD7ERYi5@avalon> References: <20180216204158.29839-1-heiko@sntech.de> <20180216204158.29839-4-heiko@sntech.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180216204158.29839-4-heiko@sntech.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Heiko Stuebner Cc: mark.rutland@arm.com, Jose.Abreu@synopsys.com, algea.cao@rock-chips.com, devicetree@vger.kernel.org, airlied@linux.ie, dri-devel@lists.freedesktop.org, kishon@ti.com, robh+dt@kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, zhengyang@rock-chips.com List-Id: linux-rockchip.vger.kernel.org SGkgSGVpa28sCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIEZyaWRheSwgMTYgRmVicnVh cnkgMjAxOCAyMjo0MTo1MyBFRVQgSGVpa28gU3R1ZWJuZXIgd3JvdGU6Cj4gSW4gc29tZSBJUCBp bXBsZW1lbnRhdGlvbnMgdGhlIHJlYWRpbmcgb2YgdGhlIHBoeS10eXBlIG1heSBiZSBicm9rZW4u Cj4gT25lIGV4YW1wbGUgYXJlIHRoZSBSb2NrY2hpcCByazMyMjggYW5kIHJrMzMyOCBzb2NzIHRo YXQgdXNlIGEgc2VwYXJhdGUKPiBwaHkgZnJvbSBJbm5vc2lsaWNvbiBidXQgc3RpbGwgcmVwb3J0 IHRoZSBIRE1JMjBfVFggdHlwZS4KPiAKPiBTbyBhbGxvdyB0aGUgZ2x1ZSBkcml2ZXIgdG8gZm9y Y2UgYSBzcGVjaWZpYyB0eXBlLCBsaWtlIHRoZSB2ZW5kb3ItcGh5Cj4gZm9yIHRoZXNlIGNhc2Vz Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+CgpU ZXN0ZWQtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJk LmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5j IHwgNCArKystCj4gIGluY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggICAgICAgICAgICAgIHwg MSArCj4gIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5j Cj4gYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3LWhkbWkuYyBpbmRleAo+IGY5 ODAyMzk5Y2MwZC4uNTBkMjMxNjI2YzRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2Uvc3lub3BzeXMvZHctaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9z eW5vcHN5cy9kdy1oZG1pLmMKPiBAQCAtMjIxOCw3ICsyMjE4LDkgQEAgc3RhdGljIGludCBkd19o ZG1pX2RldGVjdF9waHkoc3RydWN0IGR3X2hkbWkgKmhkbWkpCj4gIAl1bnNpZ25lZCBpbnQgaTsK PiAgCXU4IHBoeV90eXBlOwo+IAo+IC0JcGh5X3R5cGUgPSBoZG1pX3JlYWRiKGhkbWksIEhETUlf Q09ORklHMl9JRCk7Cj4gKwlwaHlfdHlwZSA9IChoZG1pLT5wbGF0X2RhdGEtPnBoeV9mb3JjZV90 eXBlKSA/Cj4gKwkJCQloZG1pLT5wbGF0X2RhdGEtPnBoeV9mb3JjZV90eXBlIDoKPiArCQkJCWhk bWlfcmVhZGIoaGRtaSwgSERNSV9DT05GSUcyX0lEKTsKCk5vIG5lZWQgZm9yIHBhcmVudGhlc2Vz LiBZb3UgY291bGQgZXZlbiB3cml0ZSB0aGlzCgogICAgICAgIHBoeV90eXBlID0gaGRtaS0+cGxh dF9kYXRhLT5waHlfZm9yY2VfdHlwZSA/IAogICAgICAgICAgICAgICAgIDogaGRtaV9yZWFkYiho ZG1pLCBIRE1JX0NPTkZJRzJfSUQpOwoKYnV0IHRoYXQncyB1cCB0byB5b3UuCgpXaGF0IGlmIGEg ZHJpdmVyIHdhbnRzIHRvIGZvcmNlIHRoZSBQSFkgdHlwZSB0byBEV19IRE1JX1BIWV9EV0NfSERN SV9UWF9QSFkgPyAKT3IgZG8geW91IGV4cGVjdCBvbmx5IHRoZSBEV19IRE1JX1BIWV9WRU5ET1Jf UEhZIHR5cGUgdG8gYmUgZm9yY2VkID8gSWYgc28sIHdlIApjb3VsZCBhbHNvIHVzZSBhIGZvcmNl X3ZlbmRvcl9waHkgYm9vbGVhbiBmaWVsZCBpbnN0ZWFkIG9mIHBoeV9mb3JjZV90eXBlLgoKPiAg CWlmIChwaHlfdHlwZSA9PSBEV19IRE1JX1BIWV9WRU5ET1JfUEhZKSB7Cj4gIAkJLyogVmVuZG9y IFBIWXMgcmVxdWlyZSBzdXBwb3J0IGZyb20gdGhlIGdsdWUgbGF5ZXIuICovCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdf aGRtaS5oCj4gaW5kZXggZGQyYThjZjdkMjBiLi4zYzFkZGRiMDliOTUgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9kcm0vYnJpZGdlL2R3X2hkbWkuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2JyaWRnZS9k d19oZG1pLmgKPiBAQCAtMTMzLDYgKzEzMyw3IEBAIHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSB7 Cj4gIAljb25zdCBzdHJ1Y3QgZHdfaGRtaV9waHlfb3BzICpwaHlfb3BzOwo+ICAJY29uc3QgY2hh ciAqcGh5X25hbWU7Cj4gIAl2b2lkICpwaHlfZGF0YTsKPiArCXU4IHBoeV9mb3JjZV90eXBlOwo+ IAo+ICAJLyogU3lub3BzeXMgUEhZIHN1cHBvcnQgKi8KPiAgCWNvbnN0IHN0cnVjdCBkd19oZG1p X21wbGxfY29uZmlnICptcGxsX2NmZzsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: laurent.pinchart@ideasonboard.com (Laurent Pinchart) Date: Mon, 19 Feb 2018 18:59:02 +0200 Subject: [PATCH v2 3/8] drm/bridge: dw-hdmi: allow overriding of phy-type reading In-Reply-To: <20180216204158.29839-4-heiko@sntech.de> References: <20180216204158.29839-1-heiko@sntech.de> <20180216204158.29839-4-heiko@sntech.de> Message-ID: <3905607.btOD7ERYi5@avalon> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Heiko, Thank you for the patch. On Friday, 16 February 2018 22:41:53 EET Heiko Stuebner wrote: > In some IP implementations the reading of the phy-type may be broken. > One example are the Rockchip rk3228 and rk3328 socs that use a separate > phy from Innosilicon but still report the HDMI20_TX type. > > So allow the glue driver to force a specific type, like the vendor-phy > for these cases. > > Signed-off-by: Heiko Stuebner Tested-by: Laurent Pinchart > --- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 +++- > include/drm/bridge/dw_hdmi.h | 1 + > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index > f9802399cc0d..50d231626c4d 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > @@ -2218,7 +2218,9 @@ static int dw_hdmi_detect_phy(struct dw_hdmi *hdmi) > unsigned int i; > u8 phy_type; > > - phy_type = hdmi_readb(hdmi, HDMI_CONFIG2_ID); > + phy_type = (hdmi->plat_data->phy_force_type) ? > + hdmi->plat_data->phy_force_type : > + hdmi_readb(hdmi, HDMI_CONFIG2_ID); No need for parentheses. You could even write this phy_type = hdmi->plat_data->phy_force_type ? : hdmi_readb(hdmi, HDMI_CONFIG2_ID); but that's up to you. What if a driver wants to force the PHY type to DW_HDMI_PHY_DWC_HDMI_TX_PHY ? Or do you expect only the DW_HDMI_PHY_VENDOR_PHY type to be forced ? If so, we could also use a force_vendor_phy boolean field instead of phy_force_type. > if (phy_type == DW_HDMI_PHY_VENDOR_PHY) { > /* Vendor PHYs require support from the glue layer. */ > diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h > index dd2a8cf7d20b..3c1dddb09b95 100644 > --- a/include/drm/bridge/dw_hdmi.h > +++ b/include/drm/bridge/dw_hdmi.h > @@ -133,6 +133,7 @@ struct dw_hdmi_plat_data { > const struct dw_hdmi_phy_ops *phy_ops; > const char *phy_name; > void *phy_data; > + u8 phy_force_type; > > /* Synopsys PHY support */ > const struct dw_hdmi_mpll_config *mpll_cfg; -- Regards, Laurent Pinchart