From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Yan Subject: Re: [PATCH 1/2] imx-drm: imx-hdmi: split imx soc specific code from imx-hdmi Date: Fri, 07 Nov 2014 10:47:55 +0800 Message-ID: <545C32DB.7090907@rock-chips.com> References: <1415192101-6404-1-git-send-email-andy.yan@rock-chips.com> <1415192101-6404-2-git-send-email-andy.yan@rock-chips.com> <1415194882.5696.9.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: <1415194882.5696.9.camel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: Philipp Zabel 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 , 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, Shawn Guo , Lucas Stach List-Id: devicetree@vger.kernel.org Ck9uIDIwMTTlubQxMeaciDA15pelIDIxOjQxLCBQaGlsaXBwIFphYmVsIHdyb3RlOgo+IEhpIEFu ZHksCj4KPiBJIHRoaW5rIHNlcGFyYXRpbmcgdGhlIGNvcmUgZnJvbSB0aGUgU29DIHNwZWNpZmlj IHBhcnQgaXMgYSBnb29kIHN0ZXAKPiBpbnRvIHRoZSByaWdodCBkaXJlY3Rpb24uCj4KPiBBbSBN aXR0d29jaCwgZGVuIDA1LjExLjIwMTQsIDIwOjU1ICswODAwIHNjaHJpZWIgQW5keSBZYW46Cj4+ IGlteDYgYW5kIHJvY2tjaGlwIHJrMzI4OCBhbmQgSlo0NzgwIChJbmdlbmljIFhidXJzdC9NSVBT KQo+PiB1c2UgdGhlIGludGVyZmFjZSBjb21wYXRpYmxlIERlc2lnbndhcmUgSERNSSBJUCwgYnV0 IHRoZXkKPj4gYWxzbyBoYXZlIHNvbWUgbGlnaHRseSBkaWZmZXJlbmNlLCBzdWNoIGFzIHBoeSBw bGwgY29uZmlndXJhdGlvbiwKPj4gcmVnaXN0ZXIgd2lkdGgoaW14IGhkbWkgcmVnaXN0ZXIgaXMg b25lIGJ5dGUsIGJ1dCByazMyODggaXMgNAo+PiBieXRlcyB3aWR0aCksIDRLIHN1cHBvcnQoaW14 NiBkb2Vzbid0IHN1cHBvcnQgNGssIGJ1dCByazMyODggZG9lcyksCj4+IGNsayB1c2VhZ2UsYW5k IHRoZSBjcnRjIG11eCBjb25maWd1cmF0aW9uIGlzIGFsc28gcGxhdGZvcm0gc3BlY2lmaWMuCj4+ Cj4+IFRvIHJldXNlIHRoZSBpbXggaGRtaSBkcml2ZXIsIHNwbGl0IHRoZSBwbGF0Zm9ybSBzcGVj aWZpYyBjb2RlIG91dAo+PiB0byBkd19oZG1pLWlteC5jLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBB bmR5IFlhbiA8YW5keS55YW5Acm9jay1jaGlwcy5jb20+Cj4gWy4uLl0KPj4gK3N0YXRpYyBpbnQg aW14X2hkbWlfcGFyc2VfZHQoc3RydWN0IGlteF9oZG1pX3ByaXYgKmhkbWkpCj4+ICt7Cj4+ICsJ c3RydWN0IGRldmljZV9ub2RlICpucCA9IGhkbWktPmRldi0+b2Zfbm9kZTsKPj4gKwo+PiArCWhk bWktPnJlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobnAsICJncHIiKTsK Pj4gKwlpZiAoSVNfRVJSKGhkbWktPnJlZ21hcCkpIHsKPj4gKwkJZGV2X2VycihoZG1pLT5kZXYs ICJVbmFibGUgdG8gZ2V0IGdwclxuIik7Cj4+ICsJCXJldHVybiBQVFJfRVJSKGhkbWktPnJlZ21h cCk7Cj4+ICsJfQo+PiArCj4+ICsJaGRtaS0+aXNmcl9jbGsgPSBkZXZtX2Nsa19nZXQoaGRtaS0+ ZGV2LCAiaXNmciIpOwo+PiArCWlmIChJU19FUlIoaGRtaS0+aXNmcl9jbGspKSB7Cj4+ICsJCWRl dl9lcnIoaGRtaS0+ZGV2LCAiVW5hYmxlIHRvIGdldCBIRE1JIGlzZnIgY2xrXG4iKTsKPj4gKwkJ cmV0dXJuIFBUUl9FUlIoaGRtaS0+aXNmcl9jbGspOwo+PiArCX0KPj4gKwo+PiArCWhkbWktPmlh aGJfY2xrID0gZGV2bV9jbGtfZ2V0KGhkbWktPmRldiwgImlhaGIiKTsKPj4gKwlpZiAoSVNfRVJS KGhkbWktPmlhaGJfY2xrKSkgewo+PiArCQlkZXZfZXJyKGhkbWktPmRldiwgIlVuYWJsZSB0byBn ZXQgSERNSSBpYWhiIGNsa1xuIik7Cj4+ICsJCXJldHVybiBQVFJfRVJSKGhkbWktPmlhaGJfY2xr KTsKPj4gKwl9Cj4gU3VyZWx5IHRoaXMgSVAgY29yZSBuZWVkcyB0byBiZSBjbG9ja2VkIHJlZ2Fy ZGxlc3Mgb2YgdGhlIFNvQz8gSG93IGFyZQo+IGNsb2NrcyBjb250cm9sbGVkIG9uIHJrMzI4OCBh bmQgano0NzgwPwp5ZXMsIHRoaXMgSVAgY29yZSBuZWVkIHRvIGJlIGNsb2NrZWQuIEJ1dCBkaWZm ZXJlbnQgU29jIGhhcyBkaWZmZXJlbnQKdXNhZ2Ugb2YgdGhlIGNsaywgb24gZnJlZXNjYWxlIGlt eCBwbGF0Zm9ybSBvbmUgY2xrIGlzIHVzZWQgZm9yIGlzZnIsIApvbmUgaXMgdXNlZCBmb3IgaWFo YiwKYnV0IG9uIHJvY2tjaGlwIHJrMzI4OCwgb25lIGNsayBpcyB1c2VkIGZvciBjb250cm9sIGxv Z2ljICwgdGhlIGFub3RoZXIgCmlzIHVzZWQgZm9yIGhkY3AuCkkgYW0gbm90IHN1cmUgaG93IGFy ZSB0aGUgY2xvY2tzIG9uIGp6NDc4MAoKPgo+IFsuLi5dCj4+ICsvKk9uIHJvY2tjaGlwIHBsYXRm b3JtLCBuby13b3JkIGFjY2VzcyB0byB0aGUgaGRtaQo+PiArICogcmVnaXN0ZXIgd2lsbCBjYXVz ZXMgYW4gaW1wcmVjaXNlIGV4dGVybmFsIGFib3J0Cj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUg dm9pZCBoZG1pX3dyaXRlbChzdHJ1Y3QgaW14X2hkbWkgKmhkbWksIHUzMiB2YWwsIGludCBvZmZz ZXQpCj4+ICt7Cj4+ICsJd3JpdGVsKHZhbCwgaGRtaS0+cmVncyArIChvZmZzZXQgPDwgMikpOwo+ PiArfQo+PiAgIAo+PiAtCWJvb2wgcGh5X2VuYWJsZWQ7Cj4+IC0Jc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgcHJldmlvdXNfbW9kZTsKPj4gK3N0YXRpYyBpbmxpbmUgdTMyIGhkbWlfcmVhZGwoc3Ry dWN0IGlteF9oZG1pICpoZG1pLCBpbnQgb2Zmc2V0KQo+PiArewo+PiArCXJldHVybiByZWFkbCho ZG1pLT5yZWdzICsgKG9mZnNldCA8PCAyKSk7Cj4+ICt9Cj4+ICAgCj4+IC0Jc3RydWN0IHJlZ21h cCAqcmVnbWFwOwo+PiAtCXN0cnVjdCBpMmNfYWRhcHRlciAqZGRjOwo+PiAtCXZvaWQgX19pb21l bSAqcmVnczsKPj4gK3N0YXRpYyB2b2lkIGhkbWlfbW9kbChzdHJ1Y3QgaW14X2hkbWkgKmhkbWks IHUzMiBkYXRhLCB1MzIgbWFzaywgdW5zaWduZWQgcmVnKQo+PiArewo+PiArCXUzMiB2YWwgPSBo ZG1pX3JlYWRsKGhkbWksIHJlZykgJiB+bWFzazsKPj4gICAKPj4gLQl1bnNpZ25lZCBpbnQgc2Ft cGxlX3JhdGU7Cj4+IC0JaW50IHJhdGlvOwo+PiAtfTsKPj4gKwl2YWwgfD0gZGF0YSAmIG1hc2s7 Cj4+ICsJaGRtaV93cml0ZWwoaGRtaSwgdmFsLCByZWcpOwo+PiArfQo+PiAgIAo+PiAtc3RhdGlj IHZvaWQgaW14X2hkbWlfc2V0X2lwdV9kaV9tdXgoc3RydWN0IGlteF9oZG1pICpoZG1pLCBpbnQg aXB1X2RpKQo+PiArc3RhdGljIHZvaWQgaGRtaV9tYXNrX3dyaXRlbChzdHJ1Y3QgaW14X2hkbWkg KmhkbWksIHUzMiBkYXRhLCB1bnNpZ25lZCBpbnQgcmVnLAo+PiArCQkJICAgICB1MzIgc2hpZnQs IHUzMiBtYXNrKQo+PiAgIHsKPj4gLQlyZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+cmVnbWFwLCBJ T01VWENfR1BSMywKPj4gLQkJCSAgIElNWDZRX0dQUjNfSERNSV9NVVhfQ1RMX01BU0ssCj4+IC0J CQkgICBpcHVfZGkgPDwgSU1YNlFfR1BSM19IRE1JX01VWF9DVExfU0hJRlQpOwo+PiArCWhkbWlf bW9kbChoZG1pLCBkYXRhIDw8IHNoaWZ0LCBtYXNrLCByZWcpOwo+PiAgIH0KPj4gICAKPj4gLXN0 YXRpYyBpbmxpbmUgdm9pZCBoZG1pX3dyaXRlYihzdHJ1Y3QgaW14X2hkbWkgKmhkbWksIHU4IHZh bCwgaW50IG9mZnNldCkKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBoZG1pX3dyaXRlYihzdHJ1Y3Qg aW14X2hkbWkgKmhkbWksIHUzMiB2YWwsIGludCBvZmZzZXQpCj4+ICAgewo+PiAgIAl3cml0ZWIo dmFsLCBoZG1pLT5yZWdzICsgb2Zmc2V0KTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW5saW5l IHU4IGhkbWlfcmVhZGIoc3RydWN0IGlteF9oZG1pICpoZG1pLCBpbnQgb2Zmc2V0KQo+PiArc3Rh dGljIGlubGluZSB1MzIgaGRtaV9yZWFkYihzdHJ1Y3QgaW14X2hkbWkgKmhkbWksIGludCBvZmZz ZXQpCj4+ICAgewo+PiAgIAlyZXR1cm4gcmVhZGIoaGRtaS0+cmVncyArIG9mZnNldCk7Cj4+ICAg fQo+PiAgIAo+PiAtc3RhdGljIHZvaWQgaGRtaV9tb2RiKHN0cnVjdCBpbXhfaGRtaSAqaGRtaSwg dTggZGF0YSwgdTggbWFzaywgdW5zaWduZWQgcmVnKQo+PiArc3RhdGljIHZvaWQgaGRtaV9tb2Ri KHN0cnVjdCBpbXhfaGRtaSAqaGRtaSwgdTMyIGRhdGEsIHUzMiBtYXNrLCB1bnNpZ25lZCByZWcp Cj4+ICAgewo+PiAgIAl1OCB2YWwgPSBoZG1pX3JlYWRiKGhkbWksIHJlZykgJiB+bWFzazsKPiBE byB5b3UgcmVhbGx5IG5lZWQgdG8gdXNlIHJlYWRsIGluc3RlYWQgb2YgcmVhZGI/IEluIG15IG9w aW5pb24gaXQgd291bGQKPiBiZSBiZXR0ZXIgdGhlbiB0byBjb252ZXJ0IHRoZSBkcml2ZXIgdG8g dXNlIHJlZ21hcCBmb3IgcmVnaXN0ZXIgYWNjZXNzCj4gKGluIGEgc2VwYXJhdGUgcGF0Y2gpIGFu ZCB0aGVuIGxldCB0aGUgU29DIHNwZWNpZmljIGRyaXZlciBleHRlbnNpb24KPiBwcm92aWRlIHRo ZSByZWdtYXAgdG8gdGhlIGNvcmUgZHJpdmVyLgpSb2NrY2hpcCBSSzMyODggY2FuIG9ubHkgYWNj ZXNzIHRoZSBoZG1pIHJlZ2lzdGVyIGJ5IDMyYml0KHJlYWRsL3dyaXRlbCkKYnl0ZSBhY2Nlc3Mo cmVhZGIvd3JpdGViKSB3aWxsIGNhdXNlICBhbiBpbXByZWNpc2UgZXh0ZXJuYWwgYWJvcnQKCkkg cmVmYWN0b3IgdGhlIHJlZ2lzdGVyIGFjY2VzcyBpbiBQQVRDSCBWMywgaWYgeW91IGhhdmUgYW55 IApzdWdnZXN0aW9uLHBsZWFzZQp0ZWxsIG1lLgo+Cj4gWy4uLl0KPj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmggYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5o Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmU3ZTgyODUKPj4gLS0t IC9kZXYvbnVsbAo+PiArKysgYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCj4+IEBAIC0w LDAgKzEsMTE0IEBACj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDExIEZyZWVzY2FsZSBT ZW1pY29uZHVjdG9yLCBJbmMuCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4gKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cj4+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+PiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9fRFdfSERNSV9IX18KPj4gKyNkZWZp bmUgX19EV19IRE1JX0hfXwo+PiArCj4+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4gKwo+PiAr I2RlZmluZSBIRE1JX0VESURfTEVOICAgICAgICAgICA1MTIKPj4gKwo+PiArZW51bSB7Cj4+ICsJ UkVTXzgsCj4+ICsJUkVTXzEwLAo+PiArCVJFU18xMiwKPj4gKwlSRVNfTUFYLAo+PiArfTsKPj4g Kwo+PiArZW51bSBpbXhfaGRtaV9kZXZ0eXBlIHsKPj4gKwlJTVg2UV9IRE1JLAo+PiArCUlNWDZE TF9IRE1JLAo+PiArfTsKPj4gKwo+PiArc3RydWN0IG1wbGxfY29uZmlnIHsKPj4gKwl1bnNpZ25l ZCBsb25nIG1waXhlbGNsb2NrOwo+PiArCXN0cnVjdCB7Cj4+ICsJCXUxNiBjcGNlOwo+PiArCQl1 MTYgZ21wOwo+PiArCX0gcmVzW1JFU19NQVhdOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IGN1cnJf Y3RybCB7Cj4+ICsJdW5zaWduZWQgbG9uZyBtcGl4ZWxjbG9jazsKPj4gKwl1MTYgY3VycltSRVNf TUFYXTsKPj4gK307Cj4gRm9yIGEgaGVhZGVyIGZpbGUgaW4gaW5jbHVkZS9kcm0vYnJpZGdlIG1h eWJlIHRoZXNlIHN0cnVjdCBuYW1lcyBhcmUgYQo+IGJpdCB0b28gZ2VuZXJpYyBub3cuCj4KPiBy ZWdhcmRzCj4gUGhpbGlwcAo+Cj4KPgo+Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxAbGludXhkcml2ZXJw cm9qZWN0Lm9yZwpodHRwOi8vZHJpdmVyZGV2LmxpbnV4ZHJpdmVycHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcml2ZXJkZXYtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751449AbaKGCsZ (ORCPT ); Thu, 6 Nov 2014 21:48:25 -0500 Received: from regular1.263xmail.com ([211.150.99.131]:34417 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751196AbaKGCsV (ORCPT ); Thu, 6 Nov 2014 21:48:21 -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: linux-rockchip@lists.infradead.org X-SENDER-IP: 121.15.173.1 X-LOGIN-NAME: andy.yan@rock-chips.com X-UNIQUE-TAG: <40cb6c0a3e6e57b239ff652904ef54ac> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <545C32DB.7090907@rock-chips.com> Date: Fri, 07 Nov 2014 10:47:55 +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: Philipp Zabel CC: airlied@linux.ie, heiko@sntech.de, fabio.estevam@freescale.com, rmk+kernel@arm.linux.org.uk, Greg Kroah-Hartman , Grant Likely , Rob Herring , Shawn Guo , Josh Boyer , Sean Paul , Inki Dae , Dave Airlie , Arnd Bergmann , Lucas Stach , 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 Subject: Re: [PATCH 1/2] imx-drm: imx-hdmi: split imx soc specific code from imx-hdmi References: <1415192101-6404-1-git-send-email-andy.yan@rock-chips.com> <1415192101-6404-2-git-send-email-andy.yan@rock-chips.com> <1415194882.5696.9.camel@pengutronix.de> In-Reply-To: <1415194882.5696.9.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月05日 21:41, Philipp Zabel wrote: > Hi Andy, > > I think separating the core from the SoC specific part is a good step > into the right direction. > > Am Mittwoch, den 05.11.2014, 20:55 +0800 schrieb Andy Yan: >> imx6 and rockchip rk3288 and JZ4780 (Ingenic Xburst/MIPS) >> use the interface compatible Designware HDMI IP, but they >> also have some lightly difference, such as phy pll configuration, >> register width(imx hdmi register is one byte, but rk3288 is 4 >> bytes width), 4K support(imx6 doesn't support 4k, but rk3288 does), >> clk useage,and the crtc mux configuration is also platform specific. >> >> To reuse the imx hdmi driver, split the platform specific code out >> to dw_hdmi-imx.c. >> >> Signed-off-by: Andy Yan > [...] >> +static int imx_hdmi_parse_dt(struct imx_hdmi_priv *hdmi) >> +{ >> + struct device_node *np = hdmi->dev->of_node; >> + >> + hdmi->regmap = syscon_regmap_lookup_by_phandle(np, "gpr"); >> + if (IS_ERR(hdmi->regmap)) { >> + dev_err(hdmi->dev, "Unable to get gpr\n"); >> + return PTR_ERR(hdmi->regmap); >> + } >> + >> + hdmi->isfr_clk = devm_clk_get(hdmi->dev, "isfr"); >> + if (IS_ERR(hdmi->isfr_clk)) { >> + dev_err(hdmi->dev, "Unable to get HDMI isfr clk\n"); >> + return PTR_ERR(hdmi->isfr_clk); >> + } >> + >> + hdmi->iahb_clk = devm_clk_get(hdmi->dev, "iahb"); >> + if (IS_ERR(hdmi->iahb_clk)) { >> + dev_err(hdmi->dev, "Unable to get HDMI iahb clk\n"); >> + return PTR_ERR(hdmi->iahb_clk); >> + } > Surely this IP core needs to be clocked regardless of the SoC? How are > clocks controlled on rk3288 and jz4780? yes, this IP core need to be clocked. But different Soc has different usage of the clk, on freescale imx platform one clk is used for isfr, one is used for iahb, but on rockchip rk3288, one clk is used for control logic , the another is used for hdcp. I am not sure how are the clocks on jz4780 > > [...] >> +/*On rockchip platform, no-word access to the hdmi >> + * register will causes an imprecise external abort >> + */ >> +static inline void hdmi_writel(struct imx_hdmi *hdmi, u32 val, int offset) >> +{ >> + writel(val, hdmi->regs + (offset << 2)); >> +} >> >> - bool phy_enabled; >> - struct drm_display_mode previous_mode; >> +static inline u32 hdmi_readl(struct imx_hdmi *hdmi, int offset) >> +{ >> + return readl(hdmi->regs + (offset << 2)); >> +} >> >> - struct regmap *regmap; >> - struct i2c_adapter *ddc; >> - void __iomem *regs; >> +static void hdmi_modl(struct imx_hdmi *hdmi, u32 data, u32 mask, unsigned reg) >> +{ >> + u32 val = hdmi_readl(hdmi, reg) & ~mask; >> >> - unsigned int sample_rate; >> - int ratio; >> -}; >> + val |= data & mask; >> + hdmi_writel(hdmi, val, reg); >> +} >> >> -static void imx_hdmi_set_ipu_di_mux(struct imx_hdmi *hdmi, int ipu_di) >> +static void hdmi_mask_writel(struct imx_hdmi *hdmi, u32 data, unsigned int reg, >> + u32 shift, u32 mask) >> { >> - regmap_update_bits(hdmi->regmap, IOMUXC_GPR3, >> - IMX6Q_GPR3_HDMI_MUX_CTL_MASK, >> - ipu_di << IMX6Q_GPR3_HDMI_MUX_CTL_SHIFT); >> + hdmi_modl(hdmi, data << shift, mask, reg); >> } >> >> -static inline void hdmi_writeb(struct imx_hdmi *hdmi, u8 val, int offset) >> +static inline void hdmi_writeb(struct imx_hdmi *hdmi, u32 val, int offset) >> { >> writeb(val, hdmi->regs + offset); >> } >> >> -static inline u8 hdmi_readb(struct imx_hdmi *hdmi, int offset) >> +static inline u32 hdmi_readb(struct imx_hdmi *hdmi, int offset) >> { >> return readb(hdmi->regs + offset); >> } >> >> -static void hdmi_modb(struct imx_hdmi *hdmi, u8 data, u8 mask, unsigned reg) >> +static void hdmi_modb(struct imx_hdmi *hdmi, u32 data, u32 mask, unsigned reg) >> { >> u8 val = hdmi_readb(hdmi, reg) & ~mask; > Do you really need to use readl instead of readb? In my opinion it would > be better then to convert the driver to use regmap for register access > (in a separate patch) and then let the SoC specific driver extension > provide the regmap to the core driver. Rockchip RK3288 can only access the hdmi register by 32bit(readl/writel) byte access(readb/writeb) will cause an imprecise external abort I refactor the register access in PATCH V3, if you have any suggestion,please tell me. > > [...] >> diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h >> new file mode 100644 >> index 0000000..e7e8285 >> --- /dev/null >> +++ b/include/drm/bridge/dw_hdmi.h >> @@ -0,0 +1,114 @@ >> +/* >> + * Copyright (C) 2011 Freescale Semiconductor, Inc. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation; either version 2 of the License, or >> + * (at your option) any later version. >> + */ >> + >> +#ifndef __DW_HDMI_H__ >> +#define __DW_HDMI_H__ >> + >> +#include >> + >> +#define HDMI_EDID_LEN 512 >> + >> +enum { >> + RES_8, >> + RES_10, >> + RES_12, >> + RES_MAX, >> +}; >> + >> +enum imx_hdmi_devtype { >> + IMX6Q_HDMI, >> + IMX6DL_HDMI, >> +}; >> + >> +struct mpll_config { >> + unsigned long mpixelclock; >> + struct { >> + u16 cpce; >> + u16 gmp; >> + } res[RES_MAX]; >> +}; >> + >> +struct curr_ctrl { >> + unsigned long mpixelclock; >> + u16 curr[RES_MAX]; >> +}; > For a header file in include/drm/bridge maybe these struct names are a > bit too generic now. > > regards > Philipp > > > > >