From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Yan Subject: Re: [PATCH V4 5/6] dw-hdmi: add support for multi byte register width access Date: Sat, 08 Nov 2014 11:19:42 +0800 Message-ID: <545D8BCE.1030202@rock-chips.com> References: <1415360068-8606-1-git-send-email-andy.yan@rock-chips.com> <1415360125-8655-1-git-send-email-andy.yan@rock-chips.com> <1415360707.2776.1.camel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1415360707.2776.1.camel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Lucas Stach Cc: heiko@sntech.de, airlied@linux.ie, dri-devel@lists.freedesktop.org, ykk@rock-chips.com, devel@driverdev.osuosl.org, linux-rockchip@lists.infradead.org, Grant Likely , Dave Airlie , jay.xu@rock-chips.com, devicetree@vger.kernel.org, Zubair.Kakakhel@imgtec.com, Arnd Bergmann , Inki Dae , Rob Herring , Sean Paul , rmk+kernel@arm.linux.org.uk, fabio.estevam@freescale.com, Josh Boyer , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, djkurtz@google.com, Philipp Zabel , Shawn Guo List-Id: devicetree@vger.kernel.org Ck9uIDIwMTTlubQxMeaciDA35pelIDE5OjQ1LCBMdWNhcyBTdGFjaCB3cm90ZToKPiBBbSBGcmVp dGFnLCBkZW4gMDcuMTEuMjAxNCwgMTk6MzUgKzA4MDAgc2NocmllYiBBbmR5IFlhbjoKPj4gT24g cm9ja2NoaXAgcmszMjg4LCBvbmx5IHdvcmQoMzItYml0KSBhY2Nlc3NlcyBhcmUKPj4gcGVybWl0 dGVkIGZvciBoZG1pIHJlZ2lzdGVycy4gIEJ5dGUgd2lkdGggYWNjZXNzICh3cml0ZWIsCj4+IHJl YWRiKSBnZW5lcmF0ZXMgYW4gaW1wcmVjaXNlIGV4dGVybmFsIGFib3J0Lgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBBbmR5IFlhbiA8YW5keS55YW5Acm9jay1jaGlwcy5jb20+Cj4+IC0tLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRn ZS9kd19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYwo+PiBpbmRleCBk Zjc2YThjLi45ODY3NjQyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3 X2hkbWkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYwo+PiBAQCAt MTI2LDE5ICsxMjYsNDIgQEAgc3RydWN0IGR3X2hkbWkgewo+IFsuLi5dCj4+ICsJdTMyIHZhbDsK Pj4gKwo+PiArCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJyZWctaW8td2lkdGgiLCAm dmFsKSkgewo+PiArCQlzd2l0Y2ggKHZhbCkgewo+PiArCQljYXNlIDQ6Cj4+ICsJCQloZG1pLT53 cml0ZSA9IGR3X2hkbWlfd3JpdGVsOwo+PiArCQkJaGRtaS0+cmVhZCA9IGR3X2hkbWlfcmVhZGw7 Cj4+ICsJCQloZG1pLT5yZWdfc2hpZnQgPSAyOwo+PiArCQkJYnJlYWs7Cj4+ICsJCWRlZmF1bHQ6 Cj4+ICsJCQloZG1pLT53cml0ZSA9IGR3X2hkbWlfd3JpdGViOwo+PiArCQkJaGRtaS0+cmVhZCA9 IGR3X2hkbWlfcmVhZGI7Cj4+ICsJCQloZG1pLT5yZWdfc2hpZnQgPSAwOwo+PiArCQkJYnJlYWs7 Cj4+ICsJCX0KPj4gKwl9IGVsc2Ugewo+PiArCQloZG1pLT53cml0ZSA9IGR3X2hkbWlfd3JpdGVi Owo+PiArCQloZG1pLT5yZWFkID0gZHdfaGRtaV9yZWFkYjsKPj4gKwkJaGRtaS0+cmVnX3NoaWZ0 ID0gMDsKPj4gKwl9Cj4+ICAgCj4+ICAgCWRkY19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShucCwg ImRkYy1pMmMtYnVzIiwgMCk7Cj4+ICAgCWlmIChkZGNfbm9kZSkgewo+IFRoaXMgc2hvdWxkIHRo cm93IGFuIGVycm9yIGlmIHRoZSBwcm9wZXJ0eSB2YWx1ZSBpbiBkZXZpY2V0cmVlIGlzIG5vdAo+ IHJlY29nbml6ZWQuIFRoaXMgY291bGQgYmUgc2ltcGxpZmllZCBsaWtlIHRoaXM6Cj4KPiAJdTMy IHZhbCA9IDE7Cj4KPiAJLy8gdGhpcyB3b24ndCB0b3VjaCB2YWwgaWYgaXQgY2FuJ3QgZmluZCB0 aGUgcHJvcGVydHkKPiAJb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJyZWctaW8td2lkdGgiLCAm dmFsKQo+Cj4KPiAJc3dpdGNoICh2YWwpIHsKPiAJY2FzZSA0Ogo+IAkJaGRtaS0+d3JpdGUgPSBk d19oZG1pX3dyaXRlbDsKPiAJCWhkbWktPnJlYWQgPSBkd19oZG1pX3JlYWRsOwo+IAkJaGRtaS0+ cmVnX3NoaWZ0ID0gMjsKPiAJCWJyZWFrOwo+IAljYXNlIDE6Cj4gCQloZG1pLT53cml0ZSA9IGR3 X2hkbWlfd3JpdGViOwo+IAkJaGRtaS0+cmVhZCA9IGR3X2hkbWlfcmVhZGI7Cj4gCQloZG1pLT5y ZWdfc2hpZnQgPSAwOwo+IAkJYnJlYWs7Cj4gCWRlZmF1bHQ6Cj4gCQlkZXZfZXJyKGRldiwgInVu cmVjb2duaXplZCB2YWx1ZSBmb3IgcmVnLWlvLXdpZHRoIik7Cj4gCQkvLyBlcnJvciBoYW5kbGlu Zwo+IAl9Cj4KPiBBbHNvIHRoZSBEVCBiaW5kaW5nIGRvYyBmb3IgdGhpcyBwcm9wZXJ0eSBpcyBt aXNzaW5nLgo+Cj4gUmVnYXJkcywKPiBMdWNhcwp0aGFua3MgZm9yIHlvdXIgc3VnZ2VzdGlvbiwg SSB3aWxsIHRha2UgaXQuCnRoaXMgcHJvcGVyaXR5IGlzIG9wdGlvbmFsLCBJIHdpbGwgYWRkIGl0 IHRvIERUIGJpbmRpbmcgZG9jCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9y ZwpodHRwOi8vZHJpdmVyZGV2LmxpbnV4ZHJpdmVycHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcml2ZXJkZXYtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753314AbaKHDT6 (ORCPT ); Fri, 7 Nov 2014 22:19:58 -0500 Received: from regular1.263xmail.com ([211.150.99.130]:59243 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753125AbaKHDT4 (ORCPT ); Fri, 7 Nov 2014 22:19:56 -0500 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-RL-SENDER: andy.yan@rock-chips.com X-FST-TO: jay.xu@rock-chips.com X-SENDER-IP: 121.15.173.1 X-LOGIN-NAME: andy.yan@rock-chips.com X-UNIQUE-TAG: <770c6e398cdaf048c9b6504cea7698fe> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <545D8BCE.1030202@rock-chips.com> Date: Sat, 08 Nov 2014 11:19:42 +0800 From: Andy Yan User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Lucas Stach CC: airlied@linux.ie, heiko@sntech.de, fabio.estevam@freescale.com, rmk+kernel@arm.linux.org.uk, Greg Kroah-Hartman , Grant Likely , Rob Herring , Philipp Zabel , Shawn Guo , Josh Boyer , Sean Paul , Inki Dae , Dave Airlie , Arnd Bergmann , Zubair.Kakakhel@imgtec.com, djkurtz@google.com, ykk@rock-chips.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, jay.xu@rock-chips.com Subject: Re: [PATCH V4 5/6] dw-hdmi: add support for multi byte register width access References: <1415360068-8606-1-git-send-email-andy.yan@rock-chips.com> <1415360125-8655-1-git-send-email-andy.yan@rock-chips.com> <1415360707.2776.1.camel@pengutronix.de> In-Reply-To: <1415360707.2776.1.camel@pengutronix.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2014年11月07日 19:45, Lucas Stach wrote: > Am Freitag, den 07.11.2014, 19:35 +0800 schrieb Andy Yan: >> On rockchip rk3288, only word(32-bit) accesses are >> permitted for hdmi registers. Byte width access (writeb, >> readb) generates an imprecise external abort. >> >> Signed-off-by: Andy Yan >> --- >> drivers/gpu/drm/bridge/dw_hdmi.c | 49 +++++++++++++++++++++++++++++++++++++--- >> 1 file changed, 46 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/gpu/drm/bridge/dw_hdmi.c b/drivers/gpu/drm/bridge/dw_hdmi.c >> index df76a8c..9867642 100644 >> --- a/drivers/gpu/drm/bridge/dw_hdmi.c >> +++ b/drivers/gpu/drm/bridge/dw_hdmi.c >> @@ -126,19 +126,42 @@ struct dw_hdmi { > [...] >> + u32 val; >> + >> + if (!of_property_read_u32(np, "reg-io-width", &val)) { >> + switch (val) { >> + case 4: >> + hdmi->write = dw_hdmi_writel; >> + hdmi->read = dw_hdmi_readl; >> + hdmi->reg_shift = 2; >> + break; >> + default: >> + hdmi->write = dw_hdmi_writeb; >> + hdmi->read = dw_hdmi_readb; >> + hdmi->reg_shift = 0; >> + break; >> + } >> + } else { >> + hdmi->write = dw_hdmi_writeb; >> + hdmi->read = dw_hdmi_readb; >> + hdmi->reg_shift = 0; >> + } >> >> ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0); >> if (ddc_node) { > This should throw an error if the property value in devicetree is not > recognized. This could be simplified like this: > > u32 val = 1; > > // this won't touch val if it can't find the property > of_property_read_u32(np, "reg-io-width", &val) > > > switch (val) { > case 4: > hdmi->write = dw_hdmi_writel; > hdmi->read = dw_hdmi_readl; > hdmi->reg_shift = 2; > break; > case 1: > hdmi->write = dw_hdmi_writeb; > hdmi->read = dw_hdmi_readb; > hdmi->reg_shift = 0; > break; > default: > dev_err(dev, "unrecognized value for reg-io-width"); > // error handling > } > > Also the DT binding doc for this property is missing. > > Regards, > Lucas thanks for your suggestion, I will take it. this properity is optional, I will add it to DT binding doc