From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21E81C4BA24 for ; Thu, 27 Feb 2020 01:11:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E1E7220656 for ; Thu, 27 Feb 2020 01:11:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ul3vZYUF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728149AbgB0BLK (ORCPT ); Wed, 26 Feb 2020 20:11:10 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:58973 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727964AbgB0BLK (ORCPT ); Wed, 26 Feb 2020 20:11:10 -0500 X-UUID: 72d4123620a5411cb0392343bcf528b4-20200227 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=g7uCumPTcKLDEaH//G3AL+2SvkEBkLiF4hfq4malq4M=; b=ul3vZYUFyn5UbPg6XAcaJReam8NeZiS5JM+vuu46k+I+dtrsEUZWKGIrFUXuYS2xDF3qwsi2Wdgt9dxCtI5Sbdj1iK2+vA4mt0b4PLiZzAKZ+WPJtJF9ex3a0f9dkQYRCJ6hvTwM7GSVqVQgUudPD+TYowxzt2g0s/ZAmFFzjeI=; X-UUID: 72d4123620a5411cb0392343bcf528b4-20200227 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1807888717; Thu, 27 Feb 2020 09:11:00 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:10:04 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 27 Feb 2020 09:10:48 +0800 Message-ID: <1582765858.20746.2.camel@mtksdaap41> Subject: Re: [PATCH v9 1/4] drm/mediatek: Use regmap for register access From: CK Hu To: Enric Balletbo i Serra CC: , , , , , , , , "Kate Stewart" , Andrew-CT Chen , Minghsiu Tsai , , Richard Fontana , Collabora Kernel ML , , Weiyi Lu , , , mtk01761 , , , , Seiya Wang , , Houlong Wei , , , Matthias Brugger , Thomas Gleixner , "Mauro Carvalho Chehab" , Allison Randal , Matthias Brugger , Greg Kroah-Hartman , , , Daniel Vetter , Date: Thu, 27 Feb 2020 09:10:58 +0800 In-Reply-To: <20200226105419.632771-2-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-2-enric.balletbo@collabora.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: D30F497065135211C6216342C86114129F1F30BEA135DFA590346BD2746D5C1F2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org SGksIEVucmljOg0KDQpPbiBXZWQsIDIwMjAtMDItMjYgYXQgMTE6NTQgKzAxMDAsIEVucmljIEJh bGxldGJvIGkgU2VycmEgd3JvdGU6DQo+IEZyb206IE1hdHRoaWFzIEJydWdnZXIgPG1icnVnZ2Vy QHN1c2UuY29tPg0KPiANCj4gVGhlIG1tc3lzIG1lbW9yeSBzcGFjZSBpcyBzaGFyZWQgYmV0d2Vl biB0aGUgZHJtIGFuZCB0aGUNCj4gY2xrIGRyaXZlci4gVXNlIHJlZ21hcCB0byBhY2Nlc3MgaXQu DQoNCk9uY2UgdGhlcmUgaXMgYSBtbXN5cyBkcml2ZXIgYW5kIGNsb2NrIGNvbnRyb2wgaXMgbW92 ZWQgaW50byBtbXN5cw0KZHJpdmVyLCBJIHRoaW5rIHdlIHNob3VsZCBhbHNvIG1vdmUgcm91dGlu ZyBjb250cm9sIGludG8gbW1zeXMgZHJpdmVyDQphbmQgd2UgY291bGQgZHJvcCB0aGlzIHBhdGNo Lg0KDQpSZWdhcmRzLA0KQ0sNCg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgQnJ1Z2dl ciA8bWJydWdnZXJAc3VzZS5jb20+DQo+IFJldmlld2VkLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnph YmVsQHBlbmd1dHJvbml4LmRlPg0KPiBSZXZpZXdlZC1ieTogQ0sgSHUgPGNrLmh1QG1lZGlhdGVr LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRW5yaWMgQmFsbGV0Ym8gaSBTZXJyYSA8ZW5yaWMuYmFs bGV0Ym9AY29sbGFib3JhLmNvbT4NCj4gLS0tDQo+IA0KPiBDaGFuZ2VzIGluIHY5OiBOb25lDQo+ IENoYW5nZXMgaW4gdjg6DQo+IC0gU2VsZWN0IFJFR01BUCBhbmQgTUZEX1NZU0NPTiAoUmFuZHkg RHVubGFwKQ0KPiANCj4gQ2hhbmdlcyBpbiB2NzoNCj4gLSBBZGQgUi1ieSBmcm9tIENLDQo+IA0K PiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25maWcgICAgICAgIHwgIDIgKw0KPiAgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jIHwgIDQgKy0NCj4gIGRyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jICB8IDUwICsrKysrKysrKysrLS0tLS0tLS0t LS0tLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oICB8ICA0ICst DQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgfCAxMyArKy0tLS0t DQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgfCAgMiArLQ0KPiAg NiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkNCj4gDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9LY29uZmlnDQo+IGluZGV4IGZhNWZmYzRmZTgyMy4uODllMThhNDcz Y2I1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZw0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvS2NvbmZpZw0KPiBAQCAtMTAsOCArMTAsMTAg QEAgY29uZmlnIERSTV9NRURJQVRFSw0KPiAgCXNlbGVjdCBEUk1fS01TX0hFTFBFUg0KPiAgCXNl bGVjdCBEUk1fTUlQSV9EU0kNCj4gIAlzZWxlY3QgRFJNX1BBTkVMDQo+ICsJc2VsZWN0IE1GRF9T WVNDT04NCj4gIAlzZWxlY3QgTUVNT1JZDQo+ICAJc2VsZWN0IE1US19TTUkNCj4gKwlzZWxlY3Qg UkVHTUFQDQo+ICAJc2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTDQo+ICAJaGVscA0KPiAgCSAgQ2hv b3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGEgTWVkaWF0ZWsgU29Dcy4NCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYw0KPiBpbmRleCA1ZWU3NGQ3Y2UzNWMuLmEyMzY0 OTkxMjNhYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f Y3J0Yy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYw0K PiBAQCAtMjgsNyArMjgsNyBAQA0KPiAgICogQGVuYWJsZWQ6IHJlY29yZHMgd2hldGhlciBjcnRj X2VuYWJsZSBzdWNjZWVkZWQNCj4gICAqIEBwbGFuZXM6IGFycmF5IG9mIDQgZHJtX3BsYW5lIHN0 cnVjdHVyZXMsIG9uZSBmb3IgZWFjaCBvdmVybGF5IHBsYW5lDQo+ICAgKiBAcGVuZGluZ19wbGFu ZXM6IHdoZXRoZXIgYW55IHBsYW5lIGhhcyBwZW5kaW5nIGNoYW5nZXMgdG8gYmUgYXBwbGllZA0K PiAtICogQGNvbmZpZ19yZWdzOiBtZW1vcnkgbWFwcGVkIG1tc3lzIGNvbmZpZ3VyYXRpb24gcmVn aXN0ZXIgc3BhY2UNCj4gKyAqIEBjb25maWdfcmVnczogcmVnbWFwIG1hcHBlZCBtbXN5cyBjb25m aWd1cmF0aW9uIHJlZ2lzdGVyIHNwYWNlDQo+ICAgKiBAbXV0ZXg6IGhhbmRsZSB0byBvbmUgb2Yg dGhlIHRlbiBkaXNwX211dGV4IHN0cmVhbXMNCj4gICAqIEBkZHBfY29tcF9ucjogbnVtYmVyIG9m IGNvbXBvbmVudHMgaW4gZGRwX2NvbXANCj4gICAqIEBkZHBfY29tcDogYXJyYXkgb2YgcG9pbnRl cnMgdGhlIG10a19kZHBfY29tcCBzdHJ1Y3R1cmVzIHVzZWQgYnkgdGhpcyBjcnRjDQo+IEBAIC01 MCw3ICs1MCw3IEBAIHN0cnVjdCBtdGtfZHJtX2NydGMgew0KPiAgCXUzMgkJCQljbWRxX2V2ZW50 Ow0KPiAgI2VuZGlmDQo+ICANCj4gLQl2b2lkIF9faW9tZW0JCQkqY29uZmlnX3JlZ3M7DQo+ICsJ c3RydWN0IHJlZ21hcAkJCSpjb25maWdfcmVnczsNCj4gIAlzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXgJ CSptdXRleDsNCj4gIAl1bnNpZ25lZCBpbnQJCQlkZHBfY29tcF9ucjsNCj4gIAlzdHJ1Y3QgbXRr X2RkcF9jb21wCQkqKmRkcF9jb21wOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZGRwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9k ZHAuYw0KPiBpbmRleCAxMzAzNWM5MDYwMzUuLjMwMjc1Mzc0NGNjNiAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMNCj4gQEAgLTM4Myw2MSArMzgzLDUzIEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgbXRrX2RkcF9zZWxfaW4oZW51bSBtdGtfZGRwX2NvbXBfaWQgY3Vy LA0KPiAgCXJldHVybiB2YWx1ZTsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIHZvaWQgbXRrX2RkcF9z b3V0X3NlbCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KPiArc3RhdGljIHZvaWQgbXRrX2Rk cF9zb3V0X3NlbChzdHJ1Y3QgcmVnbWFwICpjb25maWdfcmVncywNCj4gIAkJCSAgICAgZW51bSBt dGtfZGRwX2NvbXBfaWQgY3VyLA0KPiAgCQkJICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0 KQ0KPiAgew0KPiAgCWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4dCA9PSBERFBf Q09NUE9ORU5UX0RTSTApIHsNCj4gLQkJd3JpdGVsX3JlbGF4ZWQoQkxTX1RPX0RTSV9SRE1BMV9U T19EUEkxLA0KPiAtCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9T RUwpOw0KPiArCQlyZWdtYXBfd3JpdGUoY29uZmlnX3JlZ3MsIERJU1BfUkVHX0NPTkZJR19PVVRf U0VMLA0KPiArCQkJCUJMU19UT19EU0lfUkRNQTFfVE9fRFBJMSk7DQo+ICAJfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTApIHsN Cj4gLQkJd3JpdGVsX3JlbGF4ZWQoQkxTX1RPX0RQSV9SRE1BMV9UT19EU0ksDQo+IC0JCQkgICAg ICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfT1VUX1NFTCk7DQo+IC0JCXdyaXRlbF9y ZWxheGVkKERTSV9TRUxfSU5fUkRNQSwNCj4gLQkJCSAgICAgICBjb25maWdfcmVncyArIERJU1Bf UkVHX0NPTkZJR19EU0lfU0VMKTsNCj4gLQkJd3JpdGVsX3JlbGF4ZWQoRFBJX1NFTF9JTl9CTFMs DQo+IC0JCQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfRFBJX1NFTCk7DQo+ ICsJCXJlZ21hcF93cml0ZShjb25maWdfcmVncywgRElTUF9SRUdfQ09ORklHX09VVF9TRUwsDQo+ ICsJCQkJQkxTX1RPX0RQSV9SRE1BMV9UT19EU0kpOw0KPiArCQlyZWdtYXBfd3JpdGUoY29uZmln X3JlZ3MsIERJU1BfUkVHX0NPTkZJR19EU0lfU0VMLA0KPiArCQkJCURTSV9TRUxfSU5fUkRNQSk7 DQo+ICsJCXJlZ21hcF93cml0ZShjb25maWdfcmVncywgRElTUF9SRUdfQ09ORklHX0RQSV9TRUws DQo+ICsJCQkJRFBJX1NFTF9JTl9CTFMpOw0KPiAgCX0NCj4gIH0NCj4gIA0KPiAtdm9pZCBtdGtf ZGRwX2FkZF9jb21wX3RvX3BhdGgodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywNCj4gK3ZvaWQg bXRrX2RkcF9hZGRfY29tcF90b19wYXRoKHN0cnVjdCByZWdtYXAgKmNvbmZpZ19yZWdzLA0KPiAg CQkJICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiAgCQkJICAgICAgZW51bSBtdGtf ZGRwX2NvbXBfaWQgbmV4dCkNCj4gIHsNCj4gLQl1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWUsIHJl ZzsNCj4gKwl1bnNpZ25lZCBpbnQgYWRkciwgdmFsdWU7DQo+ICANCj4gIAl2YWx1ZSA9IG10a19k ZHBfbW91dF9lbihjdXIsIG5leHQsICZhZGRyKTsNCj4gLQlpZiAodmFsdWUpIHsNCj4gLQkJcmVn ID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpIHwgdmFsdWU7DQo+IC0JCXdyaXRl bF9yZWxheGVkKHJlZywgY29uZmlnX3JlZ3MgKyBhZGRyKTsNCj4gLQl9DQo+ICsJaWYgKHZhbHVl KQ0KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoY29uZmlnX3JlZ3MsIGFkZHIsIHZhbHVlLCB2YWx1 ZSk7DQo+ICANCj4gIAltdGtfZGRwX3NvdXRfc2VsKGNvbmZpZ19yZWdzLCBjdXIsIG5leHQpOw0K PiAgDQo+ICAJdmFsdWUgPSBtdGtfZGRwX3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gLQlp ZiAodmFsdWUpIHsNCj4gLQkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIp IHwgdmFsdWU7DQo+IC0JCXdyaXRlbF9yZWxheGVkKHJlZywgY29uZmlnX3JlZ3MgKyBhZGRyKTsN Cj4gLQl9DQo+ICsJaWYgKHZhbHVlKQ0KPiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoY29uZmlnX3Jl Z3MsIGFkZHIsIHZhbHVlLCB2YWx1ZSk7DQo+ICB9DQo+ICANCj4gLXZvaWQgbXRrX2RkcF9yZW1v dmVfY29tcF9mcm9tX3BhdGgodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywNCj4gK3ZvaWQgbXRr X2RkcF9yZW1vdmVfY29tcF9mcm9tX3BhdGgoc3RydWN0IHJlZ21hcCAqY29uZmlnX3JlZ3MsDQo+ ICAJCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiAgCQkJCSAgIGVudW0gbXRrX2Rk cF9jb21wX2lkIG5leHQpDQo+ICB7DQo+IC0JdW5zaWduZWQgaW50IGFkZHIsIHZhbHVlLCByZWc7 DQo+ICsJdW5zaWduZWQgaW50IGFkZHIsIHZhbHVlOw0KPiAgDQo+ICAJdmFsdWUgPSBtdGtfZGRw X21vdXRfZW4oY3VyLCBuZXh0LCAmYWRkcik7DQo+IC0JaWYgKHZhbHVlKSB7DQo+IC0JCXJlZyA9 IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSAmIH52YWx1ZTsNCj4gLQkJd3JpdGVs X3JlbGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0KPiAtCX0NCj4gKwlpZiAodmFsdWUp DQo+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhjb25maWdfcmVncywgYWRkciwgdmFsdWUsIDApOw0K PiAgDQo+ICAJdmFsdWUgPSBtdGtfZGRwX3NlbF9pbihjdXIsIG5leHQsICZhZGRyKTsNCj4gLQlp ZiAodmFsdWUpIHsNCj4gLQkJcmVnID0gcmVhZGxfcmVsYXhlZChjb25maWdfcmVncyArIGFkZHIp ICYgfnZhbHVlOw0KPiAtCQl3cml0ZWxfcmVsYXhlZChyZWcsIGNvbmZpZ19yZWdzICsgYWRkcik7 DQo+IC0JfQ0KPiArCWlmICh2YWx1ZSkNCj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGNvbmZpZ19y ZWdzLCBhZGRyLCB2YWx1ZSwgMCk7DQo+ICB9DQo+ICANCj4gIHN0cnVjdCBtdGtfZGlzcF9tdXRl eCAqbXRrX2Rpc3BfbXV0ZXhfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlk KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaA0KPiBpbmRleCA4MjdiZTQy NGExNDguLjAxZmY4YjY4ODgxZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZGRwLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZGRwLmgNCj4gQEAgLTEyLDEwICsxMiwxMCBAQCBzdHJ1Y3QgcmVnbWFwOw0KPiAgc3RydWN0 IGRldmljZTsNCj4gIHN0cnVjdCBtdGtfZGlzcF9tdXRleDsNCj4gIA0KPiAtdm9pZCBtdGtfZGRw X2FkZF9jb21wX3RvX3BhdGgodm9pZCBfX2lvbWVtICpjb25maWdfcmVncywNCj4gK3ZvaWQgbXRr X2RkcF9hZGRfY29tcF90b19wYXRoKHN0cnVjdCByZWdtYXAgKmNvbmZpZ19yZWdzLA0KPiAgCQkJ ICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KPiAgCQkJICAgICAgZW51bSBtdGtfZGRw X2NvbXBfaWQgbmV4dCk7DQo+IC12b2lkIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJvbV9wYXRoKHZv aWQgX19pb21lbSAqY29uZmlnX3JlZ3MsDQo+ICt2b2lkIG10a19kZHBfcmVtb3ZlX2NvbXBfZnJv bV9wYXRoKHN0cnVjdCByZWdtYXAgKmNvbmZpZ19yZWdzLA0KPiAgCQkJCSAgIGVudW0gbXRrX2Rk cF9jb21wX2lkIGN1ciwNCj4gIAkJCQkgICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0KTsNCj4g IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0KPiBpbmRleCAwNTYzYzY4 MTMzMzMuLmI2ODgzN2VhMDJiMyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZHJ2LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZHJ2LmMNCj4gQEAgLTYsNiArNiw3IEBADQo+ICANCj4gICNpbmNsdWRlIDxsaW51eC9jb21w b25lbnQuaD4NCj4gICNpbmNsdWRlIDxsaW51eC9pb21tdS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L21mZC9zeXNjb24uaD4NCj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gICNpbmNsdWRl IDxsaW51eC9vZl9hZGRyZXNzLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4N Cj4gQEAgLTQyNSw3ICs0MjYsNiBAQCBzdGF0aWMgaW50IG10a19kcm1fcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikNCj4gIHsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRl di0+ZGV2Ow0KPiAgCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXZhdGU7DQo+IC0Jc3RydWN0 IHJlc291cmNlICptZW07DQo+ICAJc3RydWN0IGRldmljZV9ub2RlICpub2RlOw0KPiAgCXN0cnVj dCBjb21wb25lbnRfbWF0Y2ggKm1hdGNoID0gTlVMTDsNCj4gIAlpbnQgcmV0Ow0KPiBAQCAtNDM3 LDE0ICs0MzcsOSBAQCBzdGF0aWMgaW50IG10a19kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gIA0KPiAgCXByaXZhdGUtPmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNo X2RhdGEoZGV2KTsNCj4gIA0KPiAtCW1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJ T1JFU09VUkNFX01FTSwgMCk7DQo+IC0JcHJpdmF0ZS0+Y29uZmlnX3JlZ3MgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoZGV2LCBtZW0pOw0KPiAtCWlmIChJU19FUlIocHJpdmF0ZS0+Y29uZmlnX3Jl Z3MpKSB7DQo+IC0JCXJldCA9IFBUUl9FUlIocHJpdmF0ZS0+Y29uZmlnX3JlZ3MpOw0KPiAtCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpb3JlbWFwIG1tc3lzLWNvbmZpZyByZXNvdXJjZTogJWRc biIsDQo+IC0JCQlyZXQpOw0KPiAtCQlyZXR1cm4gcmV0Ow0KPiAtCX0NCj4gKwlwcml2YXRlLT5j b25maWdfcmVncyA9IHN5c2Nvbl9ub2RlX3RvX3JlZ21hcChkZXYtPm9mX25vZGUpOw0KPiArCWlm IChJU19FUlIocHJpdmF0ZS0+Y29uZmlnX3JlZ3MpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihwcml2 YXRlLT5jb25maWdfcmVncyk7DQo+ICANCj4gIAkvKiBJdGVyYXRlIG92ZXIgc2libGluZyBESVNQ IGZ1bmN0aW9uIGJsb2NrcyAqLw0KPiAgCWZvcl9lYWNoX2NoaWxkX29mX25vZGUoZGV2LT5vZl9u b2RlLT5wYXJlbnQsIG5vZGUpIHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2 LmgNCj4gaW5kZXggMTdiYzk5YjlmNWQ0Li4wMzIwMTA4MDY4OGQgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+IEBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBt dGtfZHJtX3ByaXZhdGUgew0KPiAgDQo+ICAJc3RydWN0IGRldmljZV9ub2RlICptdXRleF9ub2Rl Ow0KPiAgCXN0cnVjdCBkZXZpY2UgKm11dGV4X2RldjsNCj4gLQl2b2lkIF9faW9tZW0gKmNvbmZp Z19yZWdzOw0KPiArCXN0cnVjdCByZWdtYXAgKmNvbmZpZ19yZWdzOw0KPiAgCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqY29tcF9ub2RlW0REUF9DT01QT05FTlRfSURfTUFYXTsNCj4gIAlzdHJ1Y3QgbXRr X2RkcF9jb21wICpkZHBfY29tcFtERFBfQ09NUE9ORU5UX0lEX01BWF07DQo+ICAJY29uc3Qgc3Ry dWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSAqZGF0YTsNCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11503C4BA36 for ; Thu, 27 Feb 2020 01:11:20 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DA8A720656 for ; Thu, 27 Feb 2020 01:11:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="qrmGnr4M"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ul3vZYUF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DA8A720656 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0vIyaOdXdJY7s+AaQPjIJJKLxfFVeqy/qB+azQN9ncg=; b=qrmGnr4MBSXoYx VnSypl1OSvsnZYzMA0fG1MDYFT8iabkglcNmmMT3TA1EZ89GgGQB1BuE+mWK5obFpdDRK9rNRD8I0 5QNYWqKz47uDrxYYLYRvB43W9U8pqsAa0CUEq8oN0XRBoCnRJ7ZOmk79EyxUCyFh7Mxa7Qlxs1xGW Cqf45QzkpGGKipvudkumKNLiI4F3lcjzqbpnA6Vc/Wjj7nnZvcFhPzlg7IO6PtAZZbf/9Y8icJNZF pvRghaktRMVtYq2B1O7SIlitenApcTCdP21dPFruI2Cp+TLb69tqeI8EaPJ47VYZrccKuj5EVYwR7 4Wds5SaLBxrNd3wyhZrA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1j77hn-0001fd-9k; Thu, 27 Feb 2020 01:11:11 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1j77hj-0001ew-0J; Thu, 27 Feb 2020 01:11:09 +0000 X-UUID: c1c830d844fc4b389af933790a186d74-20200226 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=g7uCumPTcKLDEaH//G3AL+2SvkEBkLiF4hfq4malq4M=; b=ul3vZYUFyn5UbPg6XAcaJReam8NeZiS5JM+vuu46k+I+dtrsEUZWKGIrFUXuYS2xDF3qwsi2Wdgt9dxCtI5Sbdj1iK2+vA4mt0b4PLiZzAKZ+WPJtJF9ex3a0f9dkQYRCJ6hvTwM7GSVqVQgUudPD+TYowxzt2g0s/ZAmFFzjeI=; X-UUID: c1c830d844fc4b389af933790a186d74-20200226 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1546166574; Wed, 26 Feb 2020 17:11:02 -0800 Received: from mtkmbs08n2.mediatek.inc (172.21.101.56) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Feb 2020 17:11:00 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:10:04 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 27 Feb 2020 09:10:48 +0800 Message-ID: <1582765858.20746.2.camel@mtksdaap41> Subject: Re: [PATCH v9 1/4] drm/mediatek: Use regmap for register access From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:10:58 +0800 In-Reply-To: <20200226105419.632771-2-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-2-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: D30F497065135211C6216342C86114129F1F30BEA135DFA590346BD2746D5C1F2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200226_171107_064227_BDC9DBBD X-CRM114-Status: GOOD ( 22.71 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Kate Stewart , Minghsiu Tsai , Andrew-CT Chen , airlied@linux.ie, mturquette@baylibre.com, dri-devel@lists.freedesktop.org, Richard Fontana , laurent.pinchart@ideasonboard.com, ulrich.hecht+renesas@gmail.com, Collabora Kernel ML , linux-clk@vger.kernel.org, Weiyi Lu , wens@csie.org, Allison Randal , mtk01761 , linux-media@vger.kernel.org, devicetree@vger.kernel.org, Daniel Vetter , frank-w@public-files.de, Seiya Wang , sean.wang@mediatek.com, Houlong Wei , robh+dt@kernel.org, linux-mediatek@lists.infradead.org, hsinyi@chromium.org, Matthias Brugger , Thomas Gleixner , Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, Matthias Brugger , sboyd@kernel.org, Greg Kroah-Hartman , rdunlap@infradead.org, linux-kernel@vger.kernel.org, p.zabel@pengutronix.de, matthias.bgg@kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi, Enric: On Wed, 2020-02-26 at 11:54 +0100, Enric Balletbo i Serra wrote: > From: Matthias Brugger > > The mmsys memory space is shared between the drm and the > clk driver. Use regmap to access it. Once there is a mmsys driver and clock control is moved into mmsys driver, I think we should also move routing control into mmsys driver and we could drop this patch. Regards, CK > > Signed-off-by: Matthias Brugger > Reviewed-by: Philipp Zabel > Reviewed-by: CK Hu > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: None > Changes in v8: > - Select REGMAP and MFD_SYSCON (Randy Dunlap) > > Changes in v7: > - Add R-by from CK > > drivers/gpu/drm/mediatek/Kconfig | 2 + > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 50 +++++++++++-------------- > drivers/gpu/drm/mediatek/mtk_drm_ddp.h | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 13 ++----- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- > 6 files changed, 32 insertions(+), 43 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/Kconfig b/drivers/gpu/drm/mediatek/Kconfig > index fa5ffc4fe823..89e18a473cb5 100644 > --- a/drivers/gpu/drm/mediatek/Kconfig > +++ b/drivers/gpu/drm/mediatek/Kconfig > @@ -10,8 +10,10 @@ config DRM_MEDIATEK > select DRM_KMS_HELPER > select DRM_MIPI_DSI > select DRM_PANEL > + select MFD_SYSCON > select MEMORY > select MTK_SMI > + select REGMAP > select VIDEOMODE_HELPERS > help > Choose this option if you have a Mediatek SoCs. > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > index 5ee74d7ce35c..a236499123aa 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > @@ -28,7 +28,7 @@ > * @enabled: records whether crtc_enable succeeded > * @planes: array of 4 drm_plane structures, one for each overlay plane > * @pending_planes: whether any plane has pending changes to be applied > - * @config_regs: memory mapped mmsys configuration register space > + * @config_regs: regmap mapped mmsys configuration register space > * @mutex: handle to one of the ten disp_mutex streams > * @ddp_comp_nr: number of components in ddp_comp > * @ddp_comp: array of pointers the mtk_ddp_comp structures used by this crtc > @@ -50,7 +50,7 @@ struct mtk_drm_crtc { > u32 cmdq_event; > #endif > > - void __iomem *config_regs; > + struct regmap *config_regs; > struct mtk_disp_mutex *mutex; > unsigned int ddp_comp_nr; > struct mtk_ddp_comp **ddp_comp; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > index 13035c906035..302753744cc6 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > @@ -383,61 +383,53 @@ static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > return value; > } > > -static void mtk_ddp_sout_sel(void __iomem *config_regs, > +static void mtk_ddp_sout_sel(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DSI0) { > - writel_relaxed(BLS_TO_DSI_RDMA1_TO_DPI1, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DSI_RDMA1_TO_DPI1); > } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DPI0) { > - writel_relaxed(BLS_TO_DPI_RDMA1_TO_DSI, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > - writel_relaxed(DSI_SEL_IN_RDMA, > - config_regs + DISP_REG_CONFIG_DSI_SEL); > - writel_relaxed(DPI_SEL_IN_BLS, > - config_regs + DISP_REG_CONFIG_DPI_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DPI_RDMA1_TO_DSI); > + regmap_write(config_regs, DISP_REG_CONFIG_DSI_SEL, > + DSI_SEL_IN_RDMA); > + regmap_write(config_regs, DISP_REG_CONFIG_DPI_SEL, > + DPI_SEL_IN_BLS); > } > } > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > > mtk_ddp_sout_sel(config_regs, cur, next); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > } > > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > } > > struct mtk_disp_mutex *mtk_disp_mutex_get(struct device *dev, unsigned int id) > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > index 827be424a148..01ff8b68881f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > @@ -12,10 +12,10 @@ struct regmap; > struct device; > struct mtk_disp_mutex; > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 0563c6813333..b68837ea02b3 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -6,6 +6,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -425,7 +426,6 @@ static int mtk_drm_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct mtk_drm_private *private; > - struct resource *mem; > struct device_node *node; > struct component_match *match = NULL; > int ret; > @@ -437,14 +437,9 @@ static int mtk_drm_probe(struct platform_device *pdev) > > private->data = of_device_get_match_data(dev); > > - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - private->config_regs = devm_ioremap_resource(dev, mem); > - if (IS_ERR(private->config_regs)) { > - ret = PTR_ERR(private->config_regs); > - dev_err(dev, "Failed to ioremap mmsys-config resource: %d\n", > - ret); > - return ret; > - } > + private->config_regs = syscon_node_to_regmap(dev->of_node); > + if (IS_ERR(private->config_regs)) > + return PTR_ERR(private->config_regs); > > /* Iterate over sibling DISP function blocks */ > for_each_child_of_node(dev->of_node->parent, node) { > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 17bc99b9f5d4..03201080688d 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -39,7 +39,7 @@ struct mtk_drm_private { > > struct device_node *mutex_node; > struct device *mutex_dev; > - void __iomem *config_regs; > + struct regmap *config_regs; > struct device_node *comp_node[DDP_COMPONENT_ID_MAX]; > struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX]; > const struct mtk_mmsys_driver_data *data; _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7F6FC4BA36 for ; Thu, 27 Feb 2020 01:11:13 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 79CA92468A for ; Thu, 27 Feb 2020 01:11:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="R61b+X2Q"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ul3vZYUF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 79CA92468A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3tcCzVR2STD8s//Md6z6+saYbCVNh+cNER2tlLE783Q=; b=R61b+X2Qz9P9f9 xQA0DjdikO3xFMcPg3PinEkhZ7jXRmkFo4UQUoGnMYjlnwxNPPdYaBjGFQ4OzM7uhw55AQ7GNZFrt htVy9tnwtL7sOCV7ZV13f0QPGYCJ90y1J8ZMUh3vwjXYZ/Qd/l8+bbkD7jGZ3xtWylueiKOU+SSWE HXNHnh5cu6iJZFcu5eODhnSVT/CAxyEyRhbQFBHJMHggH2V5Mej1co+WzK73zbPQXftWb75A2AUxT gQz6KB8UyyciPQFzYkgqYEaPS+CidS1Ty4A3QCkb0APbZGy/WNYFctpVtrjPnEFJJ9gAFfr3xMzJz Xn0CbeWcP5elzH98ogOg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1j77ho-0001gN-FZ; Thu, 27 Feb 2020 01:11:12 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1j77hj-0001ew-0J; Thu, 27 Feb 2020 01:11:09 +0000 X-UUID: c1c830d844fc4b389af933790a186d74-20200226 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=g7uCumPTcKLDEaH//G3AL+2SvkEBkLiF4hfq4malq4M=; b=ul3vZYUFyn5UbPg6XAcaJReam8NeZiS5JM+vuu46k+I+dtrsEUZWKGIrFUXuYS2xDF3qwsi2Wdgt9dxCtI5Sbdj1iK2+vA4mt0b4PLiZzAKZ+WPJtJF9ex3a0f9dkQYRCJ6hvTwM7GSVqVQgUudPD+TYowxzt2g0s/ZAmFFzjeI=; X-UUID: c1c830d844fc4b389af933790a186d74-20200226 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1546166574; Wed, 26 Feb 2020 17:11:02 -0800 Received: from mtkmbs08n2.mediatek.inc (172.21.101.56) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Feb 2020 17:11:00 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:10:04 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 27 Feb 2020 09:10:48 +0800 Message-ID: <1582765858.20746.2.camel@mtksdaap41> Subject: Re: [PATCH v9 1/4] drm/mediatek: Use regmap for register access From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:10:58 +0800 In-Reply-To: <20200226105419.632771-2-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-2-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: D30F497065135211C6216342C86114129F1F30BEA135DFA590346BD2746D5C1F2000:8 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200226_171107_064227_BDC9DBBD X-CRM114-Status: GOOD ( 22.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Kate Stewart , Minghsiu Tsai , Andrew-CT Chen , airlied@linux.ie, mturquette@baylibre.com, dri-devel@lists.freedesktop.org, Richard Fontana , laurent.pinchart@ideasonboard.com, ulrich.hecht+renesas@gmail.com, Collabora Kernel ML , linux-clk@vger.kernel.org, Weiyi Lu , wens@csie.org, Allison Randal , mtk01761 , linux-media@vger.kernel.org, devicetree@vger.kernel.org, Daniel Vetter , frank-w@public-files.de, Seiya Wang , sean.wang@mediatek.com, Houlong Wei , robh+dt@kernel.org, linux-mediatek@lists.infradead.org, hsinyi@chromium.org, Matthias Brugger , Thomas Gleixner , Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, Matthias Brugger , sboyd@kernel.org, Greg Kroah-Hartman , rdunlap@infradead.org, linux-kernel@vger.kernel.org, p.zabel@pengutronix.de, matthias.bgg@kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Enric: On Wed, 2020-02-26 at 11:54 +0100, Enric Balletbo i Serra wrote: > From: Matthias Brugger > > The mmsys memory space is shared between the drm and the > clk driver. Use regmap to access it. Once there is a mmsys driver and clock control is moved into mmsys driver, I think we should also move routing control into mmsys driver and we could drop this patch. Regards, CK > > Signed-off-by: Matthias Brugger > Reviewed-by: Philipp Zabel > Reviewed-by: CK Hu > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: None > Changes in v8: > - Select REGMAP and MFD_SYSCON (Randy Dunlap) > > Changes in v7: > - Add R-by from CK > > drivers/gpu/drm/mediatek/Kconfig | 2 + > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 50 +++++++++++-------------- > drivers/gpu/drm/mediatek/mtk_drm_ddp.h | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 13 ++----- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- > 6 files changed, 32 insertions(+), 43 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/Kconfig b/drivers/gpu/drm/mediatek/Kconfig > index fa5ffc4fe823..89e18a473cb5 100644 > --- a/drivers/gpu/drm/mediatek/Kconfig > +++ b/drivers/gpu/drm/mediatek/Kconfig > @@ -10,8 +10,10 @@ config DRM_MEDIATEK > select DRM_KMS_HELPER > select DRM_MIPI_DSI > select DRM_PANEL > + select MFD_SYSCON > select MEMORY > select MTK_SMI > + select REGMAP > select VIDEOMODE_HELPERS > help > Choose this option if you have a Mediatek SoCs. > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > index 5ee74d7ce35c..a236499123aa 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > @@ -28,7 +28,7 @@ > * @enabled: records whether crtc_enable succeeded > * @planes: array of 4 drm_plane structures, one for each overlay plane > * @pending_planes: whether any plane has pending changes to be applied > - * @config_regs: memory mapped mmsys configuration register space > + * @config_regs: regmap mapped mmsys configuration register space > * @mutex: handle to one of the ten disp_mutex streams > * @ddp_comp_nr: number of components in ddp_comp > * @ddp_comp: array of pointers the mtk_ddp_comp structures used by this crtc > @@ -50,7 +50,7 @@ struct mtk_drm_crtc { > u32 cmdq_event; > #endif > > - void __iomem *config_regs; > + struct regmap *config_regs; > struct mtk_disp_mutex *mutex; > unsigned int ddp_comp_nr; > struct mtk_ddp_comp **ddp_comp; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > index 13035c906035..302753744cc6 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > @@ -383,61 +383,53 @@ static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > return value; > } > > -static void mtk_ddp_sout_sel(void __iomem *config_regs, > +static void mtk_ddp_sout_sel(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DSI0) { > - writel_relaxed(BLS_TO_DSI_RDMA1_TO_DPI1, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DSI_RDMA1_TO_DPI1); > } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DPI0) { > - writel_relaxed(BLS_TO_DPI_RDMA1_TO_DSI, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > - writel_relaxed(DSI_SEL_IN_RDMA, > - config_regs + DISP_REG_CONFIG_DSI_SEL); > - writel_relaxed(DPI_SEL_IN_BLS, > - config_regs + DISP_REG_CONFIG_DPI_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DPI_RDMA1_TO_DSI); > + regmap_write(config_regs, DISP_REG_CONFIG_DSI_SEL, > + DSI_SEL_IN_RDMA); > + regmap_write(config_regs, DISP_REG_CONFIG_DPI_SEL, > + DPI_SEL_IN_BLS); > } > } > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > > mtk_ddp_sout_sel(config_regs, cur, next); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > } > > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > } > > struct mtk_disp_mutex *mtk_disp_mutex_get(struct device *dev, unsigned int id) > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > index 827be424a148..01ff8b68881f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > @@ -12,10 +12,10 @@ struct regmap; > struct device; > struct mtk_disp_mutex; > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 0563c6813333..b68837ea02b3 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -6,6 +6,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -425,7 +426,6 @@ static int mtk_drm_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct mtk_drm_private *private; > - struct resource *mem; > struct device_node *node; > struct component_match *match = NULL; > int ret; > @@ -437,14 +437,9 @@ static int mtk_drm_probe(struct platform_device *pdev) > > private->data = of_device_get_match_data(dev); > > - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - private->config_regs = devm_ioremap_resource(dev, mem); > - if (IS_ERR(private->config_regs)) { > - ret = PTR_ERR(private->config_regs); > - dev_err(dev, "Failed to ioremap mmsys-config resource: %d\n", > - ret); > - return ret; > - } > + private->config_regs = syscon_node_to_regmap(dev->of_node); > + if (IS_ERR(private->config_regs)) > + return PTR_ERR(private->config_regs); > > /* Iterate over sibling DISP function blocks */ > for_each_child_of_node(dev->of_node->parent, node) { > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 17bc99b9f5d4..03201080688d 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -39,7 +39,7 @@ struct mtk_drm_private { > > struct device_node *mutex_node; > struct device *mutex_dev; > - void __iomem *config_regs; > + struct regmap *config_regs; > struct device_node *comp_node[DDP_COMPONENT_ID_MAX]; > struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX]; > const struct mtk_mmsys_driver_data *data; _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45991C4BA35 for ; Thu, 27 Feb 2020 01:11:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1233420656 for ; Thu, 27 Feb 2020 01:11:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ul3vZYUF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1233420656 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 77E0089CDF; Thu, 27 Feb 2020 01:11:05 +0000 (UTC) Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by gabe.freedesktop.org (Postfix) with ESMTP id EE7D689CDF for ; Thu, 27 Feb 2020 01:11:03 +0000 (UTC) X-UUID: 72d4123620a5411cb0392343bcf528b4-20200227 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=g7uCumPTcKLDEaH//G3AL+2SvkEBkLiF4hfq4malq4M=; b=ul3vZYUFyn5UbPg6XAcaJReam8NeZiS5JM+vuu46k+I+dtrsEUZWKGIrFUXuYS2xDF3qwsi2Wdgt9dxCtI5Sbdj1iK2+vA4mt0b4PLiZzAKZ+WPJtJF9ex3a0f9dkQYRCJ6hvTwM7GSVqVQgUudPD+TYowxzt2g0s/ZAmFFzjeI=; X-UUID: 72d4123620a5411cb0392343bcf528b4-20200227 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1807888717; Thu, 27 Feb 2020 09:11:00 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:10:04 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 27 Feb 2020 09:10:48 +0800 Message-ID: <1582765858.20746.2.camel@mtksdaap41> Subject: Re: [PATCH v9 1/4] drm/mediatek: Use regmap for register access From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:10:58 +0800 In-Reply-To: <20200226105419.632771-2-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-2-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-TM-SNTS-SMTP: D30F497065135211C6216342C86114129F1F30BEA135DFA590346BD2746D5C1F2000:8 X-MTK: N X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Kate Stewart , Minghsiu Tsai , Andrew-CT Chen , airlied@linux.ie, mturquette@baylibre.com, dri-devel@lists.freedesktop.org, Richard Fontana , laurent.pinchart@ideasonboard.com, ulrich.hecht+renesas@gmail.com, Collabora Kernel ML , linux-clk@vger.kernel.org, Weiyi Lu , wens@csie.org, Allison Randal , mtk01761 , linux-media@vger.kernel.org, devicetree@vger.kernel.org, frank-w@public-files.de, Seiya Wang , sean.wang@mediatek.com, Houlong Wei , robh+dt@kernel.org, linux-mediatek@lists.infradead.org, hsinyi@chromium.org, Matthias Brugger , Thomas Gleixner , Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, Matthias Brugger , sboyd@kernel.org, Greg Kroah-Hartman , rdunlap@infradead.org, linux-kernel@vger.kernel.org, matthias.bgg@kernel.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, Enric: On Wed, 2020-02-26 at 11:54 +0100, Enric Balletbo i Serra wrote: > From: Matthias Brugger > > The mmsys memory space is shared between the drm and the > clk driver. Use regmap to access it. Once there is a mmsys driver and clock control is moved into mmsys driver, I think we should also move routing control into mmsys driver and we could drop this patch. Regards, CK > > Signed-off-by: Matthias Brugger > Reviewed-by: Philipp Zabel > Reviewed-by: CK Hu > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: None > Changes in v8: > - Select REGMAP and MFD_SYSCON (Randy Dunlap) > > Changes in v7: > - Add R-by from CK > > drivers/gpu/drm/mediatek/Kconfig | 2 + > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 50 +++++++++++-------------- > drivers/gpu/drm/mediatek/mtk_drm_ddp.h | 4 +- > drivers/gpu/drm/mediatek/mtk_drm_drv.c | 13 ++----- > drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +- > 6 files changed, 32 insertions(+), 43 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/Kconfig b/drivers/gpu/drm/mediatek/Kconfig > index fa5ffc4fe823..89e18a473cb5 100644 > --- a/drivers/gpu/drm/mediatek/Kconfig > +++ b/drivers/gpu/drm/mediatek/Kconfig > @@ -10,8 +10,10 @@ config DRM_MEDIATEK > select DRM_KMS_HELPER > select DRM_MIPI_DSI > select DRM_PANEL > + select MFD_SYSCON > select MEMORY > select MTK_SMI > + select REGMAP > select VIDEOMODE_HELPERS > help > Choose this option if you have a Mediatek SoCs. > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > index 5ee74d7ce35c..a236499123aa 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > @@ -28,7 +28,7 @@ > * @enabled: records whether crtc_enable succeeded > * @planes: array of 4 drm_plane structures, one for each overlay plane > * @pending_planes: whether any plane has pending changes to be applied > - * @config_regs: memory mapped mmsys configuration register space > + * @config_regs: regmap mapped mmsys configuration register space > * @mutex: handle to one of the ten disp_mutex streams > * @ddp_comp_nr: number of components in ddp_comp > * @ddp_comp: array of pointers the mtk_ddp_comp structures used by this crtc > @@ -50,7 +50,7 @@ struct mtk_drm_crtc { > u32 cmdq_event; > #endif > > - void __iomem *config_regs; > + struct regmap *config_regs; > struct mtk_disp_mutex *mutex; > unsigned int ddp_comp_nr; > struct mtk_ddp_comp **ddp_comp; > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > index 13035c906035..302753744cc6 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c > @@ -383,61 +383,53 @@ static unsigned int mtk_ddp_sel_in(enum mtk_ddp_comp_id cur, > return value; > } > > -static void mtk_ddp_sout_sel(void __iomem *config_regs, > +static void mtk_ddp_sout_sel(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DSI0) { > - writel_relaxed(BLS_TO_DSI_RDMA1_TO_DPI1, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DSI_RDMA1_TO_DPI1); > } else if (cur == DDP_COMPONENT_BLS && next == DDP_COMPONENT_DPI0) { > - writel_relaxed(BLS_TO_DPI_RDMA1_TO_DSI, > - config_regs + DISP_REG_CONFIG_OUT_SEL); > - writel_relaxed(DSI_SEL_IN_RDMA, > - config_regs + DISP_REG_CONFIG_DSI_SEL); > - writel_relaxed(DPI_SEL_IN_BLS, > - config_regs + DISP_REG_CONFIG_DPI_SEL); > + regmap_write(config_regs, DISP_REG_CONFIG_OUT_SEL, > + BLS_TO_DPI_RDMA1_TO_DSI); > + regmap_write(config_regs, DISP_REG_CONFIG_DSI_SEL, > + DSI_SEL_IN_RDMA); > + regmap_write(config_regs, DISP_REG_CONFIG_DPI_SEL, > + DPI_SEL_IN_BLS); > } > } > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > > mtk_ddp_sout_sel(config_regs, cur, next); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) | value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, value); > } > > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next) > { > - unsigned int addr, value, reg; > + unsigned int addr, value; > > value = mtk_ddp_mout_en(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > > value = mtk_ddp_sel_in(cur, next, &addr); > - if (value) { > - reg = readl_relaxed(config_regs + addr) & ~value; > - writel_relaxed(reg, config_regs + addr); > - } > + if (value) > + regmap_update_bits(config_regs, addr, value, 0); > } > > struct mtk_disp_mutex *mtk_disp_mutex_get(struct device *dev, unsigned int id) > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > index 827be424a148..01ff8b68881f 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.h > @@ -12,10 +12,10 @@ struct regmap; > struct device; > struct mtk_disp_mutex; > > -void mtk_ddp_add_comp_to_path(void __iomem *config_regs, > +void mtk_ddp_add_comp_to_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > -void mtk_ddp_remove_comp_from_path(void __iomem *config_regs, > +void mtk_ddp_remove_comp_from_path(struct regmap *config_regs, > enum mtk_ddp_comp_id cur, > enum mtk_ddp_comp_id next); > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > index 0563c6813333..b68837ea02b3 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c > @@ -6,6 +6,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -425,7 +426,6 @@ static int mtk_drm_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > struct mtk_drm_private *private; > - struct resource *mem; > struct device_node *node; > struct component_match *match = NULL; > int ret; > @@ -437,14 +437,9 @@ static int mtk_drm_probe(struct platform_device *pdev) > > private->data = of_device_get_match_data(dev); > > - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - private->config_regs = devm_ioremap_resource(dev, mem); > - if (IS_ERR(private->config_regs)) { > - ret = PTR_ERR(private->config_regs); > - dev_err(dev, "Failed to ioremap mmsys-config resource: %d\n", > - ret); > - return ret; > - } > + private->config_regs = syscon_node_to_regmap(dev->of_node); > + if (IS_ERR(private->config_regs)) > + return PTR_ERR(private->config_regs); > > /* Iterate over sibling DISP function blocks */ > for_each_child_of_node(dev->of_node->parent, node) { > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > index 17bc99b9f5d4..03201080688d 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h > @@ -39,7 +39,7 @@ struct mtk_drm_private { > > struct device_node *mutex_node; > struct device *mutex_dev; > - void __iomem *config_regs; > + struct regmap *config_regs; > struct device_node *comp_node[DDP_COMPONENT_ID_MAX]; > struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX]; > const struct mtk_mmsys_driver_data *data; _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel