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 86C60C4BA24 for ; Thu, 27 Feb 2020 01:18:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3D5132072D for ; Thu, 27 Feb 2020 01:18:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="UtKQrtG9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728177AbgB0BS4 (ORCPT ); Wed, 26 Feb 2020 20:18:56 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:31531 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728094AbgB0BSz (ORCPT ); Wed, 26 Feb 2020 20:18:55 -0500 X-UUID: 8c623ce9db9e4ca3a5c20d82e806e0e2-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=yXW8DIWB0/OF+vlxKwtMdA9ZUE5alnauOjBVkRixaho=; b=UtKQrtG9tksb/cEl/2nkoget1sJkqS/veERIP2lHjry4+ZmSqAZ5ND3ebndPK4FzjVUADk43UTvsGvB+WoB6LLYtU0nCT8UQttuxI2SKpjQpdgCQ3IOUmbB4kKAZowSAUAXEwuMm2xf0zZOLeD7Wr7+f5MITqQXh2uoYvGZnMC4=; X-UUID: 8c623ce9db9e4ca3a5c20d82e806e0e2-20200227 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1207506835; Thu, 27 Feb 2020 09:18:49 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:17:55 +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:18:37 +0800 Message-ID: <1582766327.20746.4.camel@mtksdaap41> Subject: Re: [PATCH v9 3/4] soc: mediatek: Move mt8173 MMSYS to platform driver From: CK Hu To: Enric Balletbo i Serra CC: , , , , , , , , "Mauro Carvalho Chehab" , , , Weiyi Lu , "Seiya Wang" , , "Collabora Kernel ML" , mtk01761 , Allison Randal , Thomas Gleixner , , Kate Stewart , "Greg Kroah-Hartman" , Houlong Wei , Matthias Brugger , , , , , Minghsiu Tsai , Andrew-CT Chen , , , Matthias Brugger , , Richard Fontana , , , Daniel Vetter Date: Thu, 27 Feb 2020 09:18:47 +0800 In-Reply-To: <20200226105419.632771-4-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-4-enric.balletbo@collabora.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIEVucmljOg0KDQpPbiBXZWQsIDIwMjAtMDItMjYgYXQgMTE6NTQgKzAxMDAsIEVucmljIEJh bGxldGJvIGkgU2VycmEgd3JvdGU6DQo+IEZyb206IE1hdHRoaWFzIEJydWdnZXIgPG1icnVnZ2Vy QHN1c2UuY29tPg0KPiANCj4gVGhlcmUgaXMgbm8gc3Ryb25nIHJlYXNvbiBmb3IgdGhpcyB0byB1 c2UgQ0xLX09GX0RFQ0xBUkUgaW5zdGVhZCBvZg0KPiBiZWluZyBhIHBsYXRmb3JtIGRyaXZlci4g UGx1cywgdGhpcyBkcml2ZXIgcHJvdmlkZXMgY2xvY2tzIGJ1dCBhbHNvDQo+IGEgc2hhcmVkIHJl Z2lzdGVyIHNwYWNlIGZvciB0aGUgbWVkaWF0ZWstZHJtIGFuZCB0aGUgbWVkaWF0ZWstbWRwDQo+ IGRyaXZlci4gU28gbW92ZSB0byBkcml2ZXJzL3NvYy9tZWRpYXRlayBhcyBhIHBsYXRmb3JtIGRy aXZlci4NCj4gDQoNClJldmlld2VkLWJ5OiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPg0KDQo+ IFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEJydWdnZXIgPG1icnVnZ2VyQHN1c2UuY29tPg0KPiBT aWduZWQtb2ZmLWJ5OiBFbnJpYyBCYWxsZXRibyBpIFNlcnJhIDxlbnJpYy5iYWxsZXRib0Bjb2xs YWJvcmEuY29tPg0KPiAtLS0NCj4gDQo+IENoYW5nZXMgaW4gdjk6DQo+IC0gTW92ZSBtbXN5cyB0 byBkcml2ZXJzL3NvYy9tZWRpYXRlayAoQ0spDQo+IA0KPiBDaGFuZ2VzIGluIHY4Og0KPiAtIEJl IGEgYnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIgbGlrZSBvdGhlciBtZWRpYXRlayBtbXN5cyBkcml2 ZXJzLg0KPiANCj4gQ2hhbmdlcyBpbiB2NzoNCj4gLSBGcmVlIGNsa19kYXRhLT5jbGtzIGFzIHdl bGwNCj4gLSBHZXQgcmlkIG9mIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUNCj4gDQo+ICBkcml2ZXJz L2Nsay9tZWRpYXRlay9jbGstbXQ4MTczLmMgICB8IDEwNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gIGRyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWcgICAgICAgIHwgICA3ICsrDQo+ICBkcml2 ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJzL3NvYy9t ZWRpYXRlay9tdDgxNzMtbW1zeXMuYyB8IDEzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+ICA0IGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0p DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXQ4MTczLW1tc3lz LmMNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ4MTczLmMg Yi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ4MTczLmMNCj4gaW5kZXggNTM3YTdmNDliMGY3 Li44Zjg5OGFjNDc2YzAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1t dDgxNzMuYw0KPiArKysgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ4MTczLmMNCj4gQEAg LTc1Myw5MyArNzUzLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZSBpbWdfY2xrc1td IF9faW5pdGNvbnN0ID0gew0KPiAgCUdBVEVfSU1HKENMS19JTUdfRkQsICJpbWdfZmQiLCAibW1f c2VsIiwgMTEpLA0KPiAgfTsNCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZV9y ZWdzIG1tMF9jZ19yZWdzIF9faW5pdGNvbnN0ID0gew0KPiAtCS5zZXRfb2ZzID0gMHgwMTA0LA0K PiAtCS5jbHJfb2ZzID0gMHgwMTA4LA0KPiAtCS5zdGFfb2ZzID0gMHgwMTAwLA0KPiAtfTsNCj4g LQ0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZV9yZWdzIG1tMV9jZ19yZWdzIF9faW5p dGNvbnN0ID0gew0KPiAtCS5zZXRfb2ZzID0gMHgwMTE0LA0KPiAtCS5jbHJfb2ZzID0gMHgwMTE4 LA0KPiAtCS5zdGFfb2ZzID0gMHgwMTEwLA0KPiAtfTsNCj4gLQ0KPiAtI2RlZmluZSBHQVRFX01N MChfaWQsIF9uYW1lLCBfcGFyZW50LCBfc2hpZnQpIHsJCQlcDQo+IC0JCS5pZCA9IF9pZCwJCQkJ CVwNCj4gLQkJLm5hbWUgPSBfbmFtZSwJCQkJCVwNCj4gLQkJLnBhcmVudF9uYW1lID0gX3BhcmVu dCwJCQkJXA0KPiAtCQkucmVncyA9ICZtbTBfY2dfcmVncywJCQkJXA0KPiAtCQkuc2hpZnQgPSBf c2hpZnQsCQkJCVwNCj4gLQkJLm9wcyA9ICZtdGtfY2xrX2dhdGVfb3BzX3NldGNsciwJCVwNCj4g LQl9DQo+IC0NCj4gLSNkZWZpbmUgR0FURV9NTTEoX2lkLCBfbmFtZSwgX3BhcmVudCwgX3NoaWZ0 KSB7CQkJXA0KPiAtCQkuaWQgPSBfaWQsCQkJCQlcDQo+IC0JCS5uYW1lID0gX25hbWUsCQkJCQlc DQo+IC0JCS5wYXJlbnRfbmFtZSA9IF9wYXJlbnQsCQkJCVwNCj4gLQkJLnJlZ3MgPSAmbW0xX2Nn X3JlZ3MsCQkJCVwNCj4gLQkJLnNoaWZ0ID0gX3NoaWZ0LAkJCQlcDQo+IC0JCS5vcHMgPSAmbXRr X2Nsa19nYXRlX29wc19zZXRjbHIsCQlcDQo+IC0JfQ0KPiAtDQo+IC1zdGF0aWMgY29uc3Qgc3Ry dWN0IG10a19nYXRlIG1tX2Nsa3NbXSBfX2luaXRjb25zdCA9IHsNCj4gLQkvKiBNTTAgKi8NCj4g LQlHQVRFX01NMChDTEtfTU1fU01JX0NPTU1PTiwgIm1tX3NtaV9jb21tb24iLCAibW1fc2VsIiwg MCksDQo+IC0JR0FURV9NTTAoQ0xLX01NX1NNSV9MQVJCMCwgIm1tX3NtaV9sYXJiMCIsICJtbV9z ZWwiLCAxKSwNCj4gLQlHQVRFX01NMChDTEtfTU1fQ0FNX01EUCwgIm1tX2NhbV9tZHAiLCAibW1f c2VsIiwgMiksDQo+IC0JR0FURV9NTTAoQ0xLX01NX01EUF9SRE1BMCwgIm1tX21kcF9yZG1hMCIs ICJtbV9zZWwiLCAzKSwNCj4gLQlHQVRFX01NMChDTEtfTU1fTURQX1JETUExLCAibW1fbWRwX3Jk bWExIiwgIm1tX3NlbCIsIDQpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9NRFBfUlNaMCwgIm1tX21k cF9yc3owIiwgIm1tX3NlbCIsIDUpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9NRFBfUlNaMSwgIm1t X21kcF9yc3oxIiwgIm1tX3NlbCIsIDYpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9NRFBfUlNaMiwg Im1tX21kcF9yc3oyIiwgIm1tX3NlbCIsIDcpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9NRFBfVERT SFAwLCAibW1fbWRwX3Rkc2hwMCIsICJtbV9zZWwiLCA4KSwNCj4gLQlHQVRFX01NMChDTEtfTU1f TURQX1REU0hQMSwgIm1tX21kcF90ZHNocDEiLCAibW1fc2VsIiwgOSksDQo+IC0JR0FURV9NTTAo Q0xLX01NX01EUF9XRE1BLCAibW1fbWRwX3dkbWEiLCAibW1fc2VsIiwgMTEpLA0KPiAtCUdBVEVf TU0wKENMS19NTV9NRFBfV1JPVDAsICJtbV9tZHBfd3JvdDAiLCAibW1fc2VsIiwgMTIpLA0KPiAt CUdBVEVfTU0wKENMS19NTV9NRFBfV1JPVDEsICJtbV9tZHBfd3JvdDEiLCAibW1fc2VsIiwgMTMp LA0KPiAtCUdBVEVfTU0wKENMS19NTV9GQUtFX0VORywgIm1tX2Zha2VfZW5nIiwgIm1tX3NlbCIs IDE0KSwNCj4gLQlHQVRFX01NMChDTEtfTU1fTVVURVhfMzJLLCAibW1fbXV0ZXhfMzJrIiwgInJ0 Y19zZWwiLCAxNSksDQo+IC0JR0FURV9NTTAoQ0xLX01NX0RJU1BfT1ZMMCwgIm1tX2Rpc3Bfb3Zs MCIsICJtbV9zZWwiLCAxNiksDQo+IC0JR0FURV9NTTAoQ0xLX01NX0RJU1BfT1ZMMSwgIm1tX2Rp c3Bfb3ZsMSIsICJtbV9zZWwiLCAxNyksDQo+IC0JR0FURV9NTTAoQ0xLX01NX0RJU1BfUkRNQTAs ICJtbV9kaXNwX3JkbWEwIiwgIm1tX3NlbCIsIDE4KSwNCj4gLQlHQVRFX01NMChDTEtfTU1fRElT UF9SRE1BMSwgIm1tX2Rpc3BfcmRtYTEiLCAibW1fc2VsIiwgMTkpLA0KPiAtCUdBVEVfTU0wKENM S19NTV9ESVNQX1JETUEyLCAibW1fZGlzcF9yZG1hMiIsICJtbV9zZWwiLCAyMCksDQo+IC0JR0FU RV9NTTAoQ0xLX01NX0RJU1BfV0RNQTAsICJtbV9kaXNwX3dkbWEwIiwgIm1tX3NlbCIsIDIxKSwN Cj4gLQlHQVRFX01NMChDTEtfTU1fRElTUF9XRE1BMSwgIm1tX2Rpc3Bfd2RtYTEiLCAibW1fc2Vs IiwgMjIpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9ESVNQX0NPTE9SMCwgIm1tX2Rpc3BfY29sb3Iw IiwgIm1tX3NlbCIsIDIzKSwNCj4gLQlHQVRFX01NMChDTEtfTU1fRElTUF9DT0xPUjEsICJtbV9k aXNwX2NvbG9yMSIsICJtbV9zZWwiLCAyNCksDQo+IC0JR0FURV9NTTAoQ0xLX01NX0RJU1BfQUFM LCAibW1fZGlzcF9hYWwiLCAibW1fc2VsIiwgMjUpLA0KPiAtCUdBVEVfTU0wKENMS19NTV9ESVNQ X0dBTU1BLCAibW1fZGlzcF9nYW1tYSIsICJtbV9zZWwiLCAyNiksDQo+IC0JR0FURV9NTTAoQ0xL X01NX0RJU1BfVUZPRSwgIm1tX2Rpc3BfdWZvZSIsICJtbV9zZWwiLCAyNyksDQo+IC0JR0FURV9N TTAoQ0xLX01NX0RJU1BfU1BMSVQwLCAibW1fZGlzcF9zcGxpdDAiLCAibW1fc2VsIiwgMjgpLA0K PiAtCUdBVEVfTU0wKENMS19NTV9ESVNQX1NQTElUMSwgIm1tX2Rpc3Bfc3BsaXQxIiwgIm1tX3Nl bCIsIDI5KSwNCj4gLQlHQVRFX01NMChDTEtfTU1fRElTUF9NRVJHRSwgIm1tX2Rpc3BfbWVyZ2Ui LCAibW1fc2VsIiwgMzApLA0KPiAtCUdBVEVfTU0wKENMS19NTV9ESVNQX09ELCAibW1fZGlzcF9v ZCIsICJtbV9zZWwiLCAzMSksDQo+IC0JLyogTU0xICovDQo+IC0JR0FURV9NTTEoQ0xLX01NX0RJ U1BfUFdNME1NLCAibW1fZGlzcF9wd20wbW0iLCAibW1fc2VsIiwgMCksDQo+IC0JR0FURV9NTTEo Q0xLX01NX0RJU1BfUFdNMDI2TSwgIm1tX2Rpc3BfcHdtMDI2bSIsICJwd21fc2VsIiwgMSksDQo+ IC0JR0FURV9NTTEoQ0xLX01NX0RJU1BfUFdNMU1NLCAibW1fZGlzcF9wd20xbW0iLCAibW1fc2Vs IiwgMiksDQo+IC0JR0FURV9NTTEoQ0xLX01NX0RJU1BfUFdNMTI2TSwgIm1tX2Rpc3BfcHdtMTI2 bSIsICJwd21fc2VsIiwgMyksDQo+IC0JR0FURV9NTTEoQ0xLX01NX0RTSTBfRU5HSU5FLCAibW1f ZHNpMF9lbmdpbmUiLCAibW1fc2VsIiwgNCksDQo+IC0JR0FURV9NTTEoQ0xLX01NX0RTSTBfRElH SVRBTCwgIm1tX2RzaTBfZGlnaXRhbCIsICJkc2kwX2RpZyIsIDUpLA0KPiAtCUdBVEVfTU0xKENM S19NTV9EU0kxX0VOR0lORSwgIm1tX2RzaTFfZW5naW5lIiwgIm1tX3NlbCIsIDYpLA0KPiAtCUdB VEVfTU0xKENMS19NTV9EU0kxX0RJR0lUQUwsICJtbV9kc2kxX2RpZ2l0YWwiLCAiZHNpMV9kaWci LCA3KSwNCj4gLQlHQVRFX01NMShDTEtfTU1fRFBJX1BJWEVMLCAibW1fZHBpX3BpeGVsIiwgImRw aTBfc2VsIiwgOCksDQo+IC0JR0FURV9NTTEoQ0xLX01NX0RQSV9FTkdJTkUsICJtbV9kcGlfZW5n aW5lIiwgIm1tX3NlbCIsIDkpLA0KPiAtCUdBVEVfTU0xKENMS19NTV9EUEkxX1BJWEVMLCAibW1f ZHBpMV9waXhlbCIsICJsdmRzX3B4bCIsIDEwKSwNCj4gLQlHQVRFX01NMShDTEtfTU1fRFBJMV9F TkdJTkUsICJtbV9kcGkxX2VuZ2luZSIsICJtbV9zZWwiLCAxMSksDQo+IC0JR0FURV9NTTEoQ0xL X01NX0hETUlfUElYRUwsICJtbV9oZG1pX3BpeGVsIiwgImRwaTBfc2VsIiwgMTIpLA0KPiAtCUdB VEVfTU0xKENMS19NTV9IRE1JX1BMTENLLCAibW1faGRtaV9wbGxjayIsICJoZG1pX3NlbCIsIDEz KSwNCj4gLQlHQVRFX01NMShDTEtfTU1fSERNSV9BVURJTywgIm1tX2hkbWlfYXVkaW8iLCAiYXBs bDEiLCAxNCksDQo+IC0JR0FURV9NTTEoQ0xLX01NX0hETUlfU1BESUYsICJtbV9oZG1pX3NwZGlm IiwgImFwbGwyIiwgMTUpLA0KPiAtCUdBVEVfTU0xKENMS19NTV9MVkRTX1BJWEVMLCAibW1fbHZk c19waXhlbCIsICJsdmRzX3B4bCIsIDE2KSwNCj4gLQlHQVRFX01NMShDTEtfTU1fTFZEU19DVFMs ICJtbV9sdmRzX2N0cyIsICJsdmRzX2N0cyIsIDE3KSwNCj4gLQlHQVRFX01NMShDTEtfTU1fU01J X0xBUkI0LCAibW1fc21pX2xhcmI0IiwgIm1tX3NlbCIsIDE4KSwNCj4gLQlHQVRFX01NMShDTEtf TU1fSERNSV9IRENQLCAibW1faGRtaV9oZGNwIiwgImhkY3Bfc2VsIiwgMTkpLA0KPiAtCUdBVEVf TU0xKENMS19NTV9IRE1JX0hEQ1AyNE0sICJtbV9oZG1pX2hkY3AyNG0iLCAiaGRjcF8yNG1fc2Vs IiwgMjApLA0KPiAtfTsNCj4gLQ0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZV9yZWdz IHZkZWMwX2NnX3JlZ3MgX19pbml0Y29uc3QgPSB7DQo+ICAJLnNldF9vZnMgPSAweDAwMDAsDQo+ ICAJLmNscl9vZnMgPSAweDAwMDQsDQo+IEBAIC0xMTQ0LDIzICsxMDU3LDYgQEAgc3RhdGljIHZv aWQgX19pbml0IG10a19pbWdzeXNfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpDQo+ICB9 DQo+ICBDTEtfT0ZfREVDTEFSRShtdGtfaW1nc3lzLCAibWVkaWF0ZWssbXQ4MTczLWltZ3N5cyIs IG10a19pbWdzeXNfaW5pdCk7DQo+ICANCj4gLXN0YXRpYyB2b2lkIF9faW5pdCBtdGtfbW1zeXNf aW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpDQo+IC17DQo+IC0Jc3RydWN0IGNsa19vbmVj ZWxsX2RhdGEgKmNsa19kYXRhOw0KPiAtCWludCByOw0KPiAtDQo+IC0JY2xrX2RhdGEgPSBtdGtf YWxsb2NfY2xrX2RhdGEoQ0xLX01NX05SX0NMSyk7DQo+IC0NCj4gLQltdGtfY2xrX3JlZ2lzdGVy X2dhdGVzKG5vZGUsIG1tX2Nsa3MsIEFSUkFZX1NJWkUobW1fY2xrcyksDQo+IC0JCQkJCQljbGtf ZGF0YSk7DQo+IC0NCj4gLQlyID0gb2ZfY2xrX2FkZF9wcm92aWRlcihub2RlLCBvZl9jbGtfc3Jj X29uZWNlbGxfZ2V0LCBjbGtfZGF0YSk7DQo+IC0JaWYgKHIpDQo+IC0JCXByX2VycigiJXMoKTog Y291bGQgbm90IHJlZ2lzdGVyIGNsb2NrIHByb3ZpZGVyOiAlZFxuIiwNCj4gLQkJCV9fZnVuY19f LCByKTsNCj4gLX0NCj4gLUNMS19PRl9ERUNMQVJFKG10a19tbXN5cywgIm1lZGlhdGVrLG10ODE3 My1tbXN5cyIsIG10a19tbXN5c19pbml0KTsNCj4gLQ0KPiAgc3RhdGljIHZvaWQgX19pbml0IG10 a192ZGVjc3lzX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQ0KPiAgew0KPiAgCXN0cnVj dCBjbGtfb25lY2VsbF9kYXRhICpjbGtfZGF0YTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29j L21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnDQo+IGluZGV4 IDIxMTRiNTYzNDc4Yy4uZGNkNjQ4MWExNGQwIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3NvYy9t ZWRpYXRlay9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWcNCj4g QEAgLTQ0LDQgKzQ0LDExIEBAIGNvbmZpZyBNVEtfU0NQU1lTDQo+ICAJICBTYXkgeWVzIGhlcmUg dG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBTQ1BTWVMgcG93ZXIgZG9tYWluDQo+ICAJ ICBkcml2ZXIuDQo+ICANCj4gK2NvbmZpZyBNVDgxNzNfTU1TWVMNCj4gKwlib29sICJNZWRpYVRl ayBNVDgxNzMgTU1TWVMgU3VwcG9ydCINCj4gKwlkZXBlbmRzIG9uIENPTU1PTl9DTEtfTVQ4MTcz DQo+ICsJaGVscA0KPiArCSAgU2F5IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgTWVk aWFUZWsgTVQ4MTczIE11bHRpbWVkaWENCj4gKwkgIFN1YnN5c3RlbSAoTU1TWVMpLg0KPiArDQo+ ICBlbmRtZW51DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSBi L2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlDQo+IGluZGV4IGIwMTczMzA3NGFkNi4uYTE4 NWU0ZWU3NjAxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0K PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0KPiBAQCAtMywzICszLDQgQEAg b2JqLSQoQ09ORklHX01US19DTURRKSArPSBtdGstY21kcS1oZWxwZXIubw0KPiAgb2JqLSQoQ09O RklHX01US19JTkZSQUNGRykgKz0gbXRrLWluZnJhY2ZnLm8NCj4gIG9iai0kKENPTkZJR19NVEtf UE1JQ19XUkFQKSArPSBtdGstcG1pYy13cmFwLm8NCj4gIG9iai0kKENPTkZJR19NVEtfU0NQU1lT KSArPSBtdGstc2Nwc3lzLm8NCj4gK29iai0kKENPTkZJR19NVDgxNzNfTU1TWVMpICs9IG10ODE3 My1tbXN5cy5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdDgxNzMtbW1z eXMuYyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ODE3My1tbXN5cy5jDQo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNDhlNmMxNTdkMjhlDQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXQ4MTczLW1tc3lzLmMNCj4gQEAg LTAsMCArMSwxMzcgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkNCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLg0KPiArICog QXV0aG9yOiBKYW1lcyBMaWFvIDxqYW1lc2pqLmxpYW9AbWVkaWF0ZWsuY29tPg0KPiArICovDQo+ ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gKw0KPiArI2luY2x1ZGUgIi4uLy4uL2Nsay9tZWRpYXRl ay9jbGstZ2F0ZS5oIg0KPiArI2luY2x1ZGUgIi4uLy4uL2Nsay9tZWRpYXRlay9jbGstbXRrLmgi DQo+ICsNCj4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9jbG9jay9tdDgxNzMtY2xrLmg+DQo+ICsN Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGVfcmVncyBtbTBfY2dfcmVncyA9IHsNCj4g Kwkuc2V0X29mcyA9IDB4MDEwNCwNCj4gKwkuY2xyX29mcyA9IDB4MDEwOCwNCj4gKwkuc3RhX29m cyA9IDB4MDEwMCwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGVf cmVncyBtbTFfY2dfcmVncyA9IHsNCj4gKwkuc2V0X29mcyA9IDB4MDExNCwNCj4gKwkuY2xyX29m cyA9IDB4MDExOCwNCj4gKwkuc3RhX29mcyA9IDB4MDExMCwNCj4gK307DQo+ICsNCj4gKyNkZWZp bmUgR0FURV9NTTAoX2lkLCBfbmFtZSwgX3BhcmVudCwgX3NoaWZ0KSB7CQkJXA0KPiArCQkuaWQg PSBfaWQsCQkJCQlcDQo+ICsJCS5uYW1lID0gX25hbWUsCQkJCQlcDQo+ICsJCS5wYXJlbnRfbmFt ZSA9IF9wYXJlbnQsCQkJCVwNCj4gKwkJLnJlZ3MgPSAmbW0wX2NnX3JlZ3MsCQkJCVwNCj4gKwkJ LnNoaWZ0ID0gX3NoaWZ0LAkJCQlcDQo+ICsJCS5vcHMgPSAmbXRrX2Nsa19nYXRlX29wc19zZXRj bHIsCQlcDQo+ICsJfQ0KPiArDQo+ICsjZGVmaW5lIEdBVEVfTU0xKF9pZCwgX25hbWUsIF9wYXJl bnQsIF9zaGlmdCkgewkJCVwNCj4gKwkJLmlkID0gX2lkLAkJCQkJXA0KPiArCQkubmFtZSA9IF9u YW1lLAkJCQkJXA0KPiArCQkucGFyZW50X25hbWUgPSBfcGFyZW50LAkJCQlcDQo+ICsJCS5yZWdz ID0gJm1tMV9jZ19yZWdzLAkJCQlcDQo+ICsJCS5zaGlmdCA9IF9zaGlmdCwJCQkJXA0KPiArCQku b3BzID0gJm10a19jbGtfZ2F0ZV9vcHNfc2V0Y2xyLAkJXA0KPiArCX0NCj4gKw0KPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZSBtbV9jbGtzW10gPSB7DQo+ICsJLyogTU0wICovDQo+ICsJ R0FURV9NTTAoQ0xLX01NX1NNSV9DT01NT04sICJtbV9zbWlfY29tbW9uIiwgIm1tX3NlbCIsIDAp LA0KPiArCUdBVEVfTU0wKENMS19NTV9TTUlfTEFSQjAsICJtbV9zbWlfbGFyYjAiLCAibW1fc2Vs IiwgMSksDQo+ICsJR0FURV9NTTAoQ0xLX01NX0NBTV9NRFAsICJtbV9jYW1fbWRwIiwgIm1tX3Nl bCIsIDIpLA0KPiArCUdBVEVfTU0wKENMS19NTV9NRFBfUkRNQTAsICJtbV9tZHBfcmRtYTAiLCAi bW1fc2VsIiwgMyksDQo+ICsJR0FURV9NTTAoQ0xLX01NX01EUF9SRE1BMSwgIm1tX21kcF9yZG1h MSIsICJtbV9zZWwiLCA0KSwNCj4gKwlHQVRFX01NMChDTEtfTU1fTURQX1JTWjAsICJtbV9tZHBf cnN6MCIsICJtbV9zZWwiLCA1KSwNCj4gKwlHQVRFX01NMChDTEtfTU1fTURQX1JTWjEsICJtbV9t ZHBfcnN6MSIsICJtbV9zZWwiLCA2KSwNCj4gKwlHQVRFX01NMChDTEtfTU1fTURQX1JTWjIsICJt bV9tZHBfcnN6MiIsICJtbV9zZWwiLCA3KSwNCj4gKwlHQVRFX01NMChDTEtfTU1fTURQX1REU0hQ MCwgIm1tX21kcF90ZHNocDAiLCAibW1fc2VsIiwgOCksDQo+ICsJR0FURV9NTTAoQ0xLX01NX01E UF9URFNIUDEsICJtbV9tZHBfdGRzaHAxIiwgIm1tX3NlbCIsIDkpLA0KPiArCUdBVEVfTU0wKENM S19NTV9NRFBfV0RNQSwgIm1tX21kcF93ZG1hIiwgIm1tX3NlbCIsIDExKSwNCj4gKwlHQVRFX01N MChDTEtfTU1fTURQX1dST1QwLCAibW1fbWRwX3dyb3QwIiwgIm1tX3NlbCIsIDEyKSwNCj4gKwlH QVRFX01NMChDTEtfTU1fTURQX1dST1QxLCAibW1fbWRwX3dyb3QxIiwgIm1tX3NlbCIsIDEzKSwN Cj4gKwlHQVRFX01NMChDTEtfTU1fRkFLRV9FTkcsICJtbV9mYWtlX2VuZyIsICJtbV9zZWwiLCAx NCksDQo+ICsJR0FURV9NTTAoQ0xLX01NX01VVEVYXzMySywgIm1tX211dGV4XzMyayIsICJydGNf c2VsIiwgMTUpLA0KPiArCUdBVEVfTU0wKENMS19NTV9ESVNQX09WTDAsICJtbV9kaXNwX292bDAi LCAibW1fc2VsIiwgMTYpLA0KPiArCUdBVEVfTU0wKENMS19NTV9ESVNQX09WTDEsICJtbV9kaXNw X292bDEiLCAibW1fc2VsIiwgMTcpLA0KPiArCUdBVEVfTU0wKENMS19NTV9ESVNQX1JETUEwLCAi bW1fZGlzcF9yZG1hMCIsICJtbV9zZWwiLCAxOCksDQo+ICsJR0FURV9NTTAoQ0xLX01NX0RJU1Bf UkRNQTEsICJtbV9kaXNwX3JkbWExIiwgIm1tX3NlbCIsIDE5KSwNCj4gKwlHQVRFX01NMChDTEtf TU1fRElTUF9SRE1BMiwgIm1tX2Rpc3BfcmRtYTIiLCAibW1fc2VsIiwgMjApLA0KPiArCUdBVEVf TU0wKENMS19NTV9ESVNQX1dETUEwLCAibW1fZGlzcF93ZG1hMCIsICJtbV9zZWwiLCAyMSksDQo+ ICsJR0FURV9NTTAoQ0xLX01NX0RJU1BfV0RNQTEsICJtbV9kaXNwX3dkbWExIiwgIm1tX3NlbCIs IDIyKSwNCj4gKwlHQVRFX01NMChDTEtfTU1fRElTUF9DT0xPUjAsICJtbV9kaXNwX2NvbG9yMCIs ICJtbV9zZWwiLCAyMyksDQo+ICsJR0FURV9NTTAoQ0xLX01NX0RJU1BfQ09MT1IxLCAibW1fZGlz cF9jb2xvcjEiLCAibW1fc2VsIiwgMjQpLA0KPiArCUdBVEVfTU0wKENMS19NTV9ESVNQX0FBTCwg Im1tX2Rpc3BfYWFsIiwgIm1tX3NlbCIsIDI1KSwNCj4gKwlHQVRFX01NMChDTEtfTU1fRElTUF9H QU1NQSwgIm1tX2Rpc3BfZ2FtbWEiLCAibW1fc2VsIiwgMjYpLA0KPiArCUdBVEVfTU0wKENMS19N TV9ESVNQX1VGT0UsICJtbV9kaXNwX3Vmb2UiLCAibW1fc2VsIiwgMjcpLA0KPiArCUdBVEVfTU0w KENMS19NTV9ESVNQX1NQTElUMCwgIm1tX2Rpc3Bfc3BsaXQwIiwgIm1tX3NlbCIsIDI4KSwNCj4g KwlHQVRFX01NMChDTEtfTU1fRElTUF9TUExJVDEsICJtbV9kaXNwX3NwbGl0MSIsICJtbV9zZWwi LCAyOSksDQo+ICsJR0FURV9NTTAoQ0xLX01NX0RJU1BfTUVSR0UsICJtbV9kaXNwX21lcmdlIiwg Im1tX3NlbCIsIDMwKSwNCj4gKwlHQVRFX01NMChDTEtfTU1fRElTUF9PRCwgIm1tX2Rpc3Bfb2Qi LCAibW1fc2VsIiwgMzEpLA0KPiArCS8qIE1NMSAqLw0KPiArCUdBVEVfTU0xKENMS19NTV9ESVNQ X1BXTTBNTSwgIm1tX2Rpc3BfcHdtMG1tIiwgIm1tX3NlbCIsIDApLA0KPiArCUdBVEVfTU0xKENM S19NTV9ESVNQX1BXTTAyNk0sICJtbV9kaXNwX3B3bTAyNm0iLCAicHdtX3NlbCIsIDEpLA0KPiAr CUdBVEVfTU0xKENMS19NTV9ESVNQX1BXTTFNTSwgIm1tX2Rpc3BfcHdtMW1tIiwgIm1tX3NlbCIs IDIpLA0KPiArCUdBVEVfTU0xKENMS19NTV9ESVNQX1BXTTEyNk0sICJtbV9kaXNwX3B3bTEyNm0i LCAicHdtX3NlbCIsIDMpLA0KPiArCUdBVEVfTU0xKENMS19NTV9EU0kwX0VOR0lORSwgIm1tX2Rz aTBfZW5naW5lIiwgIm1tX3NlbCIsIDQpLA0KPiArCUdBVEVfTU0xKENMS19NTV9EU0kwX0RJR0lU QUwsICJtbV9kc2kwX2RpZ2l0YWwiLCAiZHNpMF9kaWciLCA1KSwNCj4gKwlHQVRFX01NMShDTEtf TU1fRFNJMV9FTkdJTkUsICJtbV9kc2kxX2VuZ2luZSIsICJtbV9zZWwiLCA2KSwNCj4gKwlHQVRF X01NMShDTEtfTU1fRFNJMV9ESUdJVEFMLCAibW1fZHNpMV9kaWdpdGFsIiwgImRzaTFfZGlnIiwg NyksDQo+ICsJR0FURV9NTTEoQ0xLX01NX0RQSV9QSVhFTCwgIm1tX2RwaV9waXhlbCIsICJkcGkw X3NlbCIsIDgpLA0KPiArCUdBVEVfTU0xKENMS19NTV9EUElfRU5HSU5FLCAibW1fZHBpX2VuZ2lu ZSIsICJtbV9zZWwiLCA5KSwNCj4gKwlHQVRFX01NMShDTEtfTU1fRFBJMV9QSVhFTCwgIm1tX2Rw aTFfcGl4ZWwiLCAibHZkc19weGwiLCAxMCksDQo+ICsJR0FURV9NTTEoQ0xLX01NX0RQSTFfRU5H SU5FLCAibW1fZHBpMV9lbmdpbmUiLCAibW1fc2VsIiwgMTEpLA0KPiArCUdBVEVfTU0xKENMS19N TV9IRE1JX1BJWEVMLCAibW1faGRtaV9waXhlbCIsICJkcGkwX3NlbCIsIDEyKSwNCj4gKwlHQVRF X01NMShDTEtfTU1fSERNSV9QTExDSywgIm1tX2hkbWlfcGxsY2siLCAiaGRtaV9zZWwiLCAxMyks DQo+ICsJR0FURV9NTTEoQ0xLX01NX0hETUlfQVVESU8sICJtbV9oZG1pX2F1ZGlvIiwgImFwbGwx IiwgMTQpLA0KPiArCUdBVEVfTU0xKENMS19NTV9IRE1JX1NQRElGLCAibW1faGRtaV9zcGRpZiIs ICJhcGxsMiIsIDE1KSwNCj4gKwlHQVRFX01NMShDTEtfTU1fTFZEU19QSVhFTCwgIm1tX2x2ZHNf cGl4ZWwiLCAibHZkc19weGwiLCAxNiksDQo+ICsJR0FURV9NTTEoQ0xLX01NX0xWRFNfQ1RTLCAi bW1fbHZkc19jdHMiLCAibHZkc19jdHMiLCAxNyksDQo+ICsJR0FURV9NTTEoQ0xLX01NX1NNSV9M QVJCNCwgIm1tX3NtaV9sYXJiNCIsICJtbV9zZWwiLCAxOCksDQo+ICsJR0FURV9NTTEoQ0xLX01N X0hETUlfSERDUCwgIm1tX2hkbWlfaGRjcCIsICJoZGNwX3NlbCIsIDE5KSwNCj4gKwlHQVRFX01N MShDTEtfTU1fSERNSV9IRENQMjRNLCAibW1faGRtaV9oZGNwMjRtIiwgImhkY3BfMjRtX3NlbCIs IDIwKSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXQ4MTczX21tc3lzX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpu b2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+ICsJc3RydWN0IGNsa19vbmVjZWxsX2RhdGEgKmNs a19kYXRhOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwljbGtfZGF0YSA9IG10a19hbGxvY19jbGtf ZGF0YShDTEtfTU1fTlJfQ0xLKTsNCj4gKwlpZiAoIWNsa19kYXRhKQ0KPiArCQlyZXR1cm4gLUVO T01FTTsNCj4gKw0KPiArCXJldCA9IG10a19jbGtfcmVnaXN0ZXJfZ2F0ZXMobm9kZSwgbW1fY2xr cywgQVJSQVlfU0laRShtbV9jbGtzKSwNCj4gKwkJCQkgICAgIGNsa19kYXRhKTsNCj4gKwlpZiAo cmV0KQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcmV0ID0gb2ZfY2xrX2FkZF9wcm92aWRl cihub2RlLCBvZl9jbGtfc3JjX29uZWNlbGxfZ2V0LCBjbGtfZGF0YSk7DQo+ICsJaWYgKHJldCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tYXRjaF9tdDgxNzNfbW1zeXNbXSA9IHsN Cj4gKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1tbXN5cyIsIH0sDQo+ICsJeyB9 DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDgxNzNfbW1z eXNfZHJ2ID0gew0KPiArCS5kcml2ZXIgPSB7DQo+ICsJCS5uYW1lID0gIm10ODE3My1tbXN5cyIs DQo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX210ODE3M19tbXN5cywNCj4gKwl9LA0K PiArCS5wcm9iZSA9IG10ODE3M19tbXN5c19wcm9iZSwNCj4gK307DQo+ICsNCj4gK2J1aWx0aW5f cGxhdGZvcm1fZHJpdmVyKG10ODE3M19tbXN5c19kcnYpOw0KDQo= 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 E6DD6C4BA24 for ; Thu, 27 Feb 2020 01:19:06 +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 B73F624672 for ; Thu, 27 Feb 2020 01:19:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="P3XZy+qR"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="UtKQrtG9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B73F624672 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=wZIStRApCi0i642QofMJwMliTKkB/P14IyY662XtWh4=; b=P3XZy+qRt9Rxus GVKXT38RqyGgCkl7xYKtMNiM5cEvJu97A4HRHzihIKHq3IxFCDLWfvF0Du4M1tYcDVk6RxOK4RD7W JfThMbXWop1P2QNUSfdxQ4d2/Q48CBDdj6Bcz6eKfwiw7NUCMVukx8kvt0Qb8qhc9GbO3HNZai8TC tbEhmvPJVBBhWZuf02/m/hJvSbt4wI8jvnzF9HGOxoKIdOOmtvjBCVZiZLPnxXbuzguoqiNgRK4Vs kC11ReCLPYG6CP+n4AKa6xf791/eNJnNOpwPKvlT8BHHjR8oNpDQX4cMKFgQPNYDdCg/iEuAmursC 7F30liuKVUahucJgPxDA==; 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 1j77pJ-0003xi-TM; Thu, 27 Feb 2020 01:18:57 +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 1j77pG-0003wL-Bk; Thu, 27 Feb 2020 01:18:56 +0000 X-UUID: 5052c0c08d6e40b481bef530dbedd889-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=yXW8DIWB0/OF+vlxKwtMdA9ZUE5alnauOjBVkRixaho=; b=UtKQrtG9tksb/cEl/2nkoget1sJkqS/veERIP2lHjry4+ZmSqAZ5ND3ebndPK4FzjVUADk43UTvsGvB+WoB6LLYtU0nCT8UQttuxI2SKpjQpdgCQ3IOUmbB4kKAZowSAUAXEwuMm2xf0zZOLeD7Wr7+f5MITqQXh2uoYvGZnMC4=; X-UUID: 5052c0c08d6e40b481bef530dbedd889-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 1483041600; Wed, 26 Feb 2020 17:18:51 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Feb 2020 17:19:55 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:17:55 +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:18:37 +0800 Message-ID: <1582766327.20746.4.camel@mtksdaap41> Subject: Re: [PATCH v9 3/4] soc: mediatek: Move mt8173 MMSYS to platform driver From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:18:47 +0800 In-Reply-To: <20200226105419.632771-4-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-4-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200226_171854_418850_716F489A X-CRM114-Status: GOOD ( 19.92 ) 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, linux-arm-kernel@lists.infradead.org, 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 , Allison Randal , 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 > > There is no strong reason for this to use CLK_OF_DECLARE instead of > being a platform driver. Plus, this driver provides clocks but also > a shared register space for the mediatek-drm and the mediatek-mdp > driver. So move to drivers/soc/mediatek as a platform driver. > Reviewed-by: CK Hu > Signed-off-by: Matthias Brugger > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: > - Move mmsys to drivers/soc/mediatek (CK) > > Changes in v8: > - Be a builtin_platform_driver like other mediatek mmsys drivers. > > Changes in v7: > - Free clk_data->clks as well > - Get rid of private data structure > > drivers/clk/mediatek/clk-mt8173.c | 104 --------------------- > drivers/soc/mediatek/Kconfig | 7 ++ > drivers/soc/mediatek/Makefile | 1 + > drivers/soc/mediatek/mt8173-mmsys.c | 137 ++++++++++++++++++++++++++++ > 4 files changed, 145 insertions(+), 104 deletions(-) > create mode 100644 drivers/soc/mediatek/mt8173-mmsys.c > > diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c > index 537a7f49b0f7..8f898ac476c0 100644 > --- a/drivers/clk/mediatek/clk-mt8173.c > +++ b/drivers/clk/mediatek/clk-mt8173.c > @@ -753,93 +753,6 @@ static const struct mtk_gate img_clks[] __initconst = { > GATE_IMG(CLK_IMG_FD, "img_fd", "mm_sel", 11), > }; > > -static const struct mtk_gate_regs mm0_cg_regs __initconst = { > - .set_ofs = 0x0104, > - .clr_ofs = 0x0108, > - .sta_ofs = 0x0100, > -}; > - > -static const struct mtk_gate_regs mm1_cg_regs __initconst = { > - .set_ofs = 0x0114, > - .clr_ofs = 0x0118, > - .sta_ofs = 0x0110, > -}; > - > -#define GATE_MM0(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm0_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -#define GATE_MM1(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm1_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -static const struct mtk_gate mm_clks[] __initconst = { > - /* MM0 */ > - GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > - GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > - GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > - GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > - GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > - GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > - GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > - GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > - GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > - GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > - GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > - GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > - GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > - GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > - GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > - GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > - GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > - GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > - GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > - GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > - GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > - GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > - GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > - GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > - GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > - GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > - GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > - GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > - GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > - GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > - GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > - /* MM1 */ > - GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > - GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > - GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > - GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > - GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > - GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > - GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > - GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > - GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > - GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > - GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > - GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > - GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > - GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > - GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > - GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > - GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > - GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > - GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > - GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > - GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > -}; > - > static const struct mtk_gate_regs vdec0_cg_regs __initconst = { > .set_ofs = 0x0000, > .clr_ofs = 0x0004, > @@ -1144,23 +1057,6 @@ static void __init mtk_imgsys_init(struct device_node *node) > } > CLK_OF_DECLARE(mtk_imgsys, "mediatek,mt8173-imgsys", mtk_imgsys_init); > > -static void __init mtk_mmsys_init(struct device_node *node) > -{ > - struct clk_onecell_data *clk_data; > - int r; > - > - clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > - > - mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > - clk_data); > - > - r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > - if (r) > - pr_err("%s(): could not register clock provider: %d\n", > - __func__, r); > -} > -CLK_OF_DECLARE(mtk_mmsys, "mediatek,mt8173-mmsys", mtk_mmsys_init); > - > static void __init mtk_vdecsys_init(struct device_node *node) > { > struct clk_onecell_data *clk_data; > diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig > index 2114b563478c..dcd6481a14d0 100644 > --- a/drivers/soc/mediatek/Kconfig > +++ b/drivers/soc/mediatek/Kconfig > @@ -44,4 +44,11 @@ config MTK_SCPSYS > Say yes here to add support for the MediaTek SCPSYS power domain > driver. > > +config MT8173_MMSYS > + bool "MediaTek MT8173 MMSYS Support" > + depends on COMMON_CLK_MT8173 > + help > + Say yes here to add support for the MediaTek MT8173 Multimedia > + Subsystem (MMSYS). > + > endmenu > diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile > index b01733074ad6..a185e4ee7601 100644 > --- a/drivers/soc/mediatek/Makefile > +++ b/drivers/soc/mediatek/Makefile > @@ -3,3 +3,4 @@ obj-$(CONFIG_MTK_CMDQ) += mtk-cmdq-helper.o > obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o > obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o > obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o > +obj-$(CONFIG_MT8173_MMSYS) += mt8173-mmsys.o > diff --git a/drivers/soc/mediatek/mt8173-mmsys.c b/drivers/soc/mediatek/mt8173-mmsys.c > new file mode 100644 > index 000000000000..48e6c157d28e > --- /dev/null > +++ b/drivers/soc/mediatek/mt8173-mmsys.c > @@ -0,0 +1,137 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: James Liao > + */ > + > +#include > +#include > + > +#include "../../clk/mediatek/clk-gate.h" > +#include "../../clk/mediatek/clk-mtk.h" > + > +#include > + > +static const struct mtk_gate_regs mm0_cg_regs = { > + .set_ofs = 0x0104, > + .clr_ofs = 0x0108, > + .sta_ofs = 0x0100, > +}; > + > +static const struct mtk_gate_regs mm1_cg_regs = { > + .set_ofs = 0x0114, > + .clr_ofs = 0x0118, > + .sta_ofs = 0x0110, > +}; > + > +#define GATE_MM0(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm0_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +#define GATE_MM1(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm1_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +static const struct mtk_gate mm_clks[] = { > + /* MM0 */ > + GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > + GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > + GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > + GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > + GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > + GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > + GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > + GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > + GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > + GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > + GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > + GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > + GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > + GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > + GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > + GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > + GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > + GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > + GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > + GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > + GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > + GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > + GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > + GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > + GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > + GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > + GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > + GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > + GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > + GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > + GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > + /* MM1 */ > + GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > + GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > + GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > + GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > + GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > + GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > + GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > + GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > + GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > + GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > + GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > + GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > + GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > + GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > + GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > + GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > + GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > + GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > + GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > + GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > + GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > +}; > + > +static int mt8173_mmsys_probe(struct platform_device *pdev) > +{ > + struct device_node *node = pdev->dev.of_node; > + struct clk_onecell_data *clk_data; > + int ret; > + > + clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > + if (!clk_data) > + return -ENOMEM; > + > + ret = mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > + clk_data); > + if (ret) > + return ret; > + > + ret = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > + if (ret) > + return ret; > + > + return 0; > +} > + > +static const struct of_device_id of_match_mt8173_mmsys[] = { > + { .compatible = "mediatek,mt8173-mmsys", }, > + { } > +}; > + > +static struct platform_driver mt8173_mmsys_drv = { > + .driver = { > + .name = "mt8173-mmsys", > + .of_match_table = of_match_mt8173_mmsys, > + }, > + .probe = mt8173_mmsys_probe, > +}; > + > +builtin_platform_driver(mt8173_mmsys_drv); _______________________________________________ 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 48A5DC4BA24 for ; Thu, 27 Feb 2020 01:19:14 +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 1205A208E4 for ; Thu, 27 Feb 2020 01:19:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fuLHUmaq"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="UtKQrtG9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1205A208E4 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=wPGhcgYUyKM9OZZustMiMIgjM0Qg6jdKLDLw1Wv0kLg=; b=fuLHUmaqeBtH4+ quTrTA4CgeevsqtQ9qNcd5T8C60n7aNsBGHHs7ABRQ7vRUCxhtKzyIX8+lNsC9wxm3rkX5pSjWQyT ou3Nsa2PxwDiyj5d5mRVlQK/5qJUOkyEyKjNTZOR/seC9S5Ay7WxzimHB0vdQTeBPPlml6U2Yb5oz gyGj2UyW4MO1hmFSNDryRJyAzc9rqL9LIMPEykF7ISwA2H44AI13IcP5nLnXgkZrD81BjgNLsxy00 bDM7blgNggf3NzxbeTHT82r/LjY9osOvW9vZVs0u3N3x3TW3d664WHao74THmpafs2mrODrdoiYs4 04rh/2pSG88JSquXQm6A==; 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 1j77pN-0003yi-C9; Thu, 27 Feb 2020 01:19:01 +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 1j77pG-0003wL-Bk; Thu, 27 Feb 2020 01:18:56 +0000 X-UUID: 5052c0c08d6e40b481bef530dbedd889-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=yXW8DIWB0/OF+vlxKwtMdA9ZUE5alnauOjBVkRixaho=; b=UtKQrtG9tksb/cEl/2nkoget1sJkqS/veERIP2lHjry4+ZmSqAZ5ND3ebndPK4FzjVUADk43UTvsGvB+WoB6LLYtU0nCT8UQttuxI2SKpjQpdgCQ3IOUmbB4kKAZowSAUAXEwuMm2xf0zZOLeD7Wr7+f5MITqQXh2uoYvGZnMC4=; X-UUID: 5052c0c08d6e40b481bef530dbedd889-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 1483041600; Wed, 26 Feb 2020 17:18:51 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Feb 2020 17:19:55 -0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:17:55 +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:18:37 +0800 Message-ID: <1582766327.20746.4.camel@mtksdaap41> Subject: Re: [PATCH v9 3/4] soc: mediatek: Move mt8173 MMSYS to platform driver From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:18:47 +0800 In-Reply-To: <20200226105419.632771-4-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-4-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200226_171854_418850_716F489A X-CRM114-Status: GOOD ( 19.92 ) 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, linux-arm-kernel@lists.infradead.org, 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 , Allison Randal , 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 > > There is no strong reason for this to use CLK_OF_DECLARE instead of > being a platform driver. Plus, this driver provides clocks but also > a shared register space for the mediatek-drm and the mediatek-mdp > driver. So move to drivers/soc/mediatek as a platform driver. > Reviewed-by: CK Hu > Signed-off-by: Matthias Brugger > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: > - Move mmsys to drivers/soc/mediatek (CK) > > Changes in v8: > - Be a builtin_platform_driver like other mediatek mmsys drivers. > > Changes in v7: > - Free clk_data->clks as well > - Get rid of private data structure > > drivers/clk/mediatek/clk-mt8173.c | 104 --------------------- > drivers/soc/mediatek/Kconfig | 7 ++ > drivers/soc/mediatek/Makefile | 1 + > drivers/soc/mediatek/mt8173-mmsys.c | 137 ++++++++++++++++++++++++++++ > 4 files changed, 145 insertions(+), 104 deletions(-) > create mode 100644 drivers/soc/mediatek/mt8173-mmsys.c > > diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c > index 537a7f49b0f7..8f898ac476c0 100644 > --- a/drivers/clk/mediatek/clk-mt8173.c > +++ b/drivers/clk/mediatek/clk-mt8173.c > @@ -753,93 +753,6 @@ static const struct mtk_gate img_clks[] __initconst = { > GATE_IMG(CLK_IMG_FD, "img_fd", "mm_sel", 11), > }; > > -static const struct mtk_gate_regs mm0_cg_regs __initconst = { > - .set_ofs = 0x0104, > - .clr_ofs = 0x0108, > - .sta_ofs = 0x0100, > -}; > - > -static const struct mtk_gate_regs mm1_cg_regs __initconst = { > - .set_ofs = 0x0114, > - .clr_ofs = 0x0118, > - .sta_ofs = 0x0110, > -}; > - > -#define GATE_MM0(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm0_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -#define GATE_MM1(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm1_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -static const struct mtk_gate mm_clks[] __initconst = { > - /* MM0 */ > - GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > - GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > - GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > - GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > - GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > - GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > - GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > - GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > - GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > - GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > - GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > - GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > - GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > - GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > - GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > - GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > - GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > - GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > - GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > - GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > - GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > - GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > - GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > - GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > - GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > - GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > - GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > - GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > - GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > - GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > - GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > - /* MM1 */ > - GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > - GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > - GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > - GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > - GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > - GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > - GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > - GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > - GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > - GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > - GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > - GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > - GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > - GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > - GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > - GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > - GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > - GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > - GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > - GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > - GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > -}; > - > static const struct mtk_gate_regs vdec0_cg_regs __initconst = { > .set_ofs = 0x0000, > .clr_ofs = 0x0004, > @@ -1144,23 +1057,6 @@ static void __init mtk_imgsys_init(struct device_node *node) > } > CLK_OF_DECLARE(mtk_imgsys, "mediatek,mt8173-imgsys", mtk_imgsys_init); > > -static void __init mtk_mmsys_init(struct device_node *node) > -{ > - struct clk_onecell_data *clk_data; > - int r; > - > - clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > - > - mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > - clk_data); > - > - r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > - if (r) > - pr_err("%s(): could not register clock provider: %d\n", > - __func__, r); > -} > -CLK_OF_DECLARE(mtk_mmsys, "mediatek,mt8173-mmsys", mtk_mmsys_init); > - > static void __init mtk_vdecsys_init(struct device_node *node) > { > struct clk_onecell_data *clk_data; > diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig > index 2114b563478c..dcd6481a14d0 100644 > --- a/drivers/soc/mediatek/Kconfig > +++ b/drivers/soc/mediatek/Kconfig > @@ -44,4 +44,11 @@ config MTK_SCPSYS > Say yes here to add support for the MediaTek SCPSYS power domain > driver. > > +config MT8173_MMSYS > + bool "MediaTek MT8173 MMSYS Support" > + depends on COMMON_CLK_MT8173 > + help > + Say yes here to add support for the MediaTek MT8173 Multimedia > + Subsystem (MMSYS). > + > endmenu > diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile > index b01733074ad6..a185e4ee7601 100644 > --- a/drivers/soc/mediatek/Makefile > +++ b/drivers/soc/mediatek/Makefile > @@ -3,3 +3,4 @@ obj-$(CONFIG_MTK_CMDQ) += mtk-cmdq-helper.o > obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o > obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o > obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o > +obj-$(CONFIG_MT8173_MMSYS) += mt8173-mmsys.o > diff --git a/drivers/soc/mediatek/mt8173-mmsys.c b/drivers/soc/mediatek/mt8173-mmsys.c > new file mode 100644 > index 000000000000..48e6c157d28e > --- /dev/null > +++ b/drivers/soc/mediatek/mt8173-mmsys.c > @@ -0,0 +1,137 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: James Liao > + */ > + > +#include > +#include > + > +#include "../../clk/mediatek/clk-gate.h" > +#include "../../clk/mediatek/clk-mtk.h" > + > +#include > + > +static const struct mtk_gate_regs mm0_cg_regs = { > + .set_ofs = 0x0104, > + .clr_ofs = 0x0108, > + .sta_ofs = 0x0100, > +}; > + > +static const struct mtk_gate_regs mm1_cg_regs = { > + .set_ofs = 0x0114, > + .clr_ofs = 0x0118, > + .sta_ofs = 0x0110, > +}; > + > +#define GATE_MM0(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm0_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +#define GATE_MM1(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm1_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +static const struct mtk_gate mm_clks[] = { > + /* MM0 */ > + GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > + GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > + GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > + GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > + GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > + GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > + GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > + GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > + GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > + GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > + GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > + GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > + GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > + GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > + GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > + GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > + GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > + GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > + GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > + GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > + GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > + GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > + GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > + GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > + GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > + GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > + GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > + GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > + GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > + GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > + GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > + /* MM1 */ > + GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > + GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > + GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > + GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > + GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > + GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > + GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > + GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > + GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > + GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > + GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > + GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > + GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > + GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > + GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > + GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > + GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > + GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > + GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > + GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > + GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > +}; > + > +static int mt8173_mmsys_probe(struct platform_device *pdev) > +{ > + struct device_node *node = pdev->dev.of_node; > + struct clk_onecell_data *clk_data; > + int ret; > + > + clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > + if (!clk_data) > + return -ENOMEM; > + > + ret = mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > + clk_data); > + if (ret) > + return ret; > + > + ret = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > + if (ret) > + return ret; > + > + return 0; > +} > + > +static const struct of_device_id of_match_mt8173_mmsys[] = { > + { .compatible = "mediatek,mt8173-mmsys", }, > + { } > +}; > + > +static struct platform_driver mt8173_mmsys_drv = { > + .driver = { > + .name = "mt8173-mmsys", > + .of_match_table = of_match_mt8173_mmsys, > + }, > + .probe = mt8173_mmsys_probe, > +}; > + > +builtin_platform_driver(mt8173_mmsys_drv); _______________________________________________ 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 B430EC4BA24 for ; Thu, 27 Feb 2020 01:18:52 +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 6929E2072D for ; Thu, 27 Feb 2020 01:18:52 +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="UtKQrtG9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6929E2072D 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 F3C126E03F; Thu, 27 Feb 2020 01:18:51 +0000 (UTC) Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by gabe.freedesktop.org (Postfix) with ESMTP id A0DC56E03F for ; Thu, 27 Feb 2020 01:18:50 +0000 (UTC) X-UUID: 8c623ce9db9e4ca3a5c20d82e806e0e2-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=yXW8DIWB0/OF+vlxKwtMdA9ZUE5alnauOjBVkRixaho=; b=UtKQrtG9tksb/cEl/2nkoget1sJkqS/veERIP2lHjry4+ZmSqAZ5ND3ebndPK4FzjVUADk43UTvsGvB+WoB6LLYtU0nCT8UQttuxI2SKpjQpdgCQ3IOUmbB4kKAZowSAUAXEwuMm2xf0zZOLeD7Wr7+f5MITqQXh2uoYvGZnMC4=; X-UUID: 8c623ce9db9e4ca3a5c20d82e806e0e2-20200227 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1207506835; Thu, 27 Feb 2020 09:18:49 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 27 Feb 2020 09:17:55 +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:18:37 +0800 Message-ID: <1582766327.20746.4.camel@mtksdaap41> Subject: Re: [PATCH v9 3/4] soc: mediatek: Move mt8173 MMSYS to platform driver From: CK Hu To: Enric Balletbo i Serra Date: Thu, 27 Feb 2020 09:18:47 +0800 In-Reply-To: <20200226105419.632771-4-enric.balletbo@collabora.com> References: <20200226105419.632771-1-enric.balletbo@collabora.com> <20200226105419.632771-4-enric.balletbo@collabora.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 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, linux-arm-kernel@lists.infradead.org, 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 , Allison Randal , 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 > > There is no strong reason for this to use CLK_OF_DECLARE instead of > being a platform driver. Plus, this driver provides clocks but also > a shared register space for the mediatek-drm and the mediatek-mdp > driver. So move to drivers/soc/mediatek as a platform driver. > Reviewed-by: CK Hu > Signed-off-by: Matthias Brugger > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v9: > - Move mmsys to drivers/soc/mediatek (CK) > > Changes in v8: > - Be a builtin_platform_driver like other mediatek mmsys drivers. > > Changes in v7: > - Free clk_data->clks as well > - Get rid of private data structure > > drivers/clk/mediatek/clk-mt8173.c | 104 --------------------- > drivers/soc/mediatek/Kconfig | 7 ++ > drivers/soc/mediatek/Makefile | 1 + > drivers/soc/mediatek/mt8173-mmsys.c | 137 ++++++++++++++++++++++++++++ > 4 files changed, 145 insertions(+), 104 deletions(-) > create mode 100644 drivers/soc/mediatek/mt8173-mmsys.c > > diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c > index 537a7f49b0f7..8f898ac476c0 100644 > --- a/drivers/clk/mediatek/clk-mt8173.c > +++ b/drivers/clk/mediatek/clk-mt8173.c > @@ -753,93 +753,6 @@ static const struct mtk_gate img_clks[] __initconst = { > GATE_IMG(CLK_IMG_FD, "img_fd", "mm_sel", 11), > }; > > -static const struct mtk_gate_regs mm0_cg_regs __initconst = { > - .set_ofs = 0x0104, > - .clr_ofs = 0x0108, > - .sta_ofs = 0x0100, > -}; > - > -static const struct mtk_gate_regs mm1_cg_regs __initconst = { > - .set_ofs = 0x0114, > - .clr_ofs = 0x0118, > - .sta_ofs = 0x0110, > -}; > - > -#define GATE_MM0(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm0_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -#define GATE_MM1(_id, _name, _parent, _shift) { \ > - .id = _id, \ > - .name = _name, \ > - .parent_name = _parent, \ > - .regs = &mm1_cg_regs, \ > - .shift = _shift, \ > - .ops = &mtk_clk_gate_ops_setclr, \ > - } > - > -static const struct mtk_gate mm_clks[] __initconst = { > - /* MM0 */ > - GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > - GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > - GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > - GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > - GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > - GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > - GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > - GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > - GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > - GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > - GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > - GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > - GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > - GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > - GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > - GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > - GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > - GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > - GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > - GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > - GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > - GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > - GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > - GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > - GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > - GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > - GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > - GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > - GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > - GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > - GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > - /* MM1 */ > - GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > - GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > - GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > - GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > - GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > - GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > - GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > - GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > - GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > - GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > - GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > - GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > - GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > - GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > - GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > - GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > - GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > - GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > - GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > - GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > - GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > -}; > - > static const struct mtk_gate_regs vdec0_cg_regs __initconst = { > .set_ofs = 0x0000, > .clr_ofs = 0x0004, > @@ -1144,23 +1057,6 @@ static void __init mtk_imgsys_init(struct device_node *node) > } > CLK_OF_DECLARE(mtk_imgsys, "mediatek,mt8173-imgsys", mtk_imgsys_init); > > -static void __init mtk_mmsys_init(struct device_node *node) > -{ > - struct clk_onecell_data *clk_data; > - int r; > - > - clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > - > - mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > - clk_data); > - > - r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > - if (r) > - pr_err("%s(): could not register clock provider: %d\n", > - __func__, r); > -} > -CLK_OF_DECLARE(mtk_mmsys, "mediatek,mt8173-mmsys", mtk_mmsys_init); > - > static void __init mtk_vdecsys_init(struct device_node *node) > { > struct clk_onecell_data *clk_data; > diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig > index 2114b563478c..dcd6481a14d0 100644 > --- a/drivers/soc/mediatek/Kconfig > +++ b/drivers/soc/mediatek/Kconfig > @@ -44,4 +44,11 @@ config MTK_SCPSYS > Say yes here to add support for the MediaTek SCPSYS power domain > driver. > > +config MT8173_MMSYS > + bool "MediaTek MT8173 MMSYS Support" > + depends on COMMON_CLK_MT8173 > + help > + Say yes here to add support for the MediaTek MT8173 Multimedia > + Subsystem (MMSYS). > + > endmenu > diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile > index b01733074ad6..a185e4ee7601 100644 > --- a/drivers/soc/mediatek/Makefile > +++ b/drivers/soc/mediatek/Makefile > @@ -3,3 +3,4 @@ obj-$(CONFIG_MTK_CMDQ) += mtk-cmdq-helper.o > obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o > obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o > obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o > +obj-$(CONFIG_MT8173_MMSYS) += mt8173-mmsys.o > diff --git a/drivers/soc/mediatek/mt8173-mmsys.c b/drivers/soc/mediatek/mt8173-mmsys.c > new file mode 100644 > index 000000000000..48e6c157d28e > --- /dev/null > +++ b/drivers/soc/mediatek/mt8173-mmsys.c > @@ -0,0 +1,137 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2014 MediaTek Inc. > + * Author: James Liao > + */ > + > +#include > +#include > + > +#include "../../clk/mediatek/clk-gate.h" > +#include "../../clk/mediatek/clk-mtk.h" > + > +#include > + > +static const struct mtk_gate_regs mm0_cg_regs = { > + .set_ofs = 0x0104, > + .clr_ofs = 0x0108, > + .sta_ofs = 0x0100, > +}; > + > +static const struct mtk_gate_regs mm1_cg_regs = { > + .set_ofs = 0x0114, > + .clr_ofs = 0x0118, > + .sta_ofs = 0x0110, > +}; > + > +#define GATE_MM0(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm0_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +#define GATE_MM1(_id, _name, _parent, _shift) { \ > + .id = _id, \ > + .name = _name, \ > + .parent_name = _parent, \ > + .regs = &mm1_cg_regs, \ > + .shift = _shift, \ > + .ops = &mtk_clk_gate_ops_setclr, \ > + } > + > +static const struct mtk_gate mm_clks[] = { > + /* MM0 */ > + GATE_MM0(CLK_MM_SMI_COMMON, "mm_smi_common", "mm_sel", 0), > + GATE_MM0(CLK_MM_SMI_LARB0, "mm_smi_larb0", "mm_sel", 1), > + GATE_MM0(CLK_MM_CAM_MDP, "mm_cam_mdp", "mm_sel", 2), > + GATE_MM0(CLK_MM_MDP_RDMA0, "mm_mdp_rdma0", "mm_sel", 3), > + GATE_MM0(CLK_MM_MDP_RDMA1, "mm_mdp_rdma1", "mm_sel", 4), > + GATE_MM0(CLK_MM_MDP_RSZ0, "mm_mdp_rsz0", "mm_sel", 5), > + GATE_MM0(CLK_MM_MDP_RSZ1, "mm_mdp_rsz1", "mm_sel", 6), > + GATE_MM0(CLK_MM_MDP_RSZ2, "mm_mdp_rsz2", "mm_sel", 7), > + GATE_MM0(CLK_MM_MDP_TDSHP0, "mm_mdp_tdshp0", "mm_sel", 8), > + GATE_MM0(CLK_MM_MDP_TDSHP1, "mm_mdp_tdshp1", "mm_sel", 9), > + GATE_MM0(CLK_MM_MDP_WDMA, "mm_mdp_wdma", "mm_sel", 11), > + GATE_MM0(CLK_MM_MDP_WROT0, "mm_mdp_wrot0", "mm_sel", 12), > + GATE_MM0(CLK_MM_MDP_WROT1, "mm_mdp_wrot1", "mm_sel", 13), > + GATE_MM0(CLK_MM_FAKE_ENG, "mm_fake_eng", "mm_sel", 14), > + GATE_MM0(CLK_MM_MUTEX_32K, "mm_mutex_32k", "rtc_sel", 15), > + GATE_MM0(CLK_MM_DISP_OVL0, "mm_disp_ovl0", "mm_sel", 16), > + GATE_MM0(CLK_MM_DISP_OVL1, "mm_disp_ovl1", "mm_sel", 17), > + GATE_MM0(CLK_MM_DISP_RDMA0, "mm_disp_rdma0", "mm_sel", 18), > + GATE_MM0(CLK_MM_DISP_RDMA1, "mm_disp_rdma1", "mm_sel", 19), > + GATE_MM0(CLK_MM_DISP_RDMA2, "mm_disp_rdma2", "mm_sel", 20), > + GATE_MM0(CLK_MM_DISP_WDMA0, "mm_disp_wdma0", "mm_sel", 21), > + GATE_MM0(CLK_MM_DISP_WDMA1, "mm_disp_wdma1", "mm_sel", 22), > + GATE_MM0(CLK_MM_DISP_COLOR0, "mm_disp_color0", "mm_sel", 23), > + GATE_MM0(CLK_MM_DISP_COLOR1, "mm_disp_color1", "mm_sel", 24), > + GATE_MM0(CLK_MM_DISP_AAL, "mm_disp_aal", "mm_sel", 25), > + GATE_MM0(CLK_MM_DISP_GAMMA, "mm_disp_gamma", "mm_sel", 26), > + GATE_MM0(CLK_MM_DISP_UFOE, "mm_disp_ufoe", "mm_sel", 27), > + GATE_MM0(CLK_MM_DISP_SPLIT0, "mm_disp_split0", "mm_sel", 28), > + GATE_MM0(CLK_MM_DISP_SPLIT1, "mm_disp_split1", "mm_sel", 29), > + GATE_MM0(CLK_MM_DISP_MERGE, "mm_disp_merge", "mm_sel", 30), > + GATE_MM0(CLK_MM_DISP_OD, "mm_disp_od", "mm_sel", 31), > + /* MM1 */ > + GATE_MM1(CLK_MM_DISP_PWM0MM, "mm_disp_pwm0mm", "mm_sel", 0), > + GATE_MM1(CLK_MM_DISP_PWM026M, "mm_disp_pwm026m", "pwm_sel", 1), > + GATE_MM1(CLK_MM_DISP_PWM1MM, "mm_disp_pwm1mm", "mm_sel", 2), > + GATE_MM1(CLK_MM_DISP_PWM126M, "mm_disp_pwm126m", "pwm_sel", 3), > + GATE_MM1(CLK_MM_DSI0_ENGINE, "mm_dsi0_engine", "mm_sel", 4), > + GATE_MM1(CLK_MM_DSI0_DIGITAL, "mm_dsi0_digital", "dsi0_dig", 5), > + GATE_MM1(CLK_MM_DSI1_ENGINE, "mm_dsi1_engine", "mm_sel", 6), > + GATE_MM1(CLK_MM_DSI1_DIGITAL, "mm_dsi1_digital", "dsi1_dig", 7), > + GATE_MM1(CLK_MM_DPI_PIXEL, "mm_dpi_pixel", "dpi0_sel", 8), > + GATE_MM1(CLK_MM_DPI_ENGINE, "mm_dpi_engine", "mm_sel", 9), > + GATE_MM1(CLK_MM_DPI1_PIXEL, "mm_dpi1_pixel", "lvds_pxl", 10), > + GATE_MM1(CLK_MM_DPI1_ENGINE, "mm_dpi1_engine", "mm_sel", 11), > + GATE_MM1(CLK_MM_HDMI_PIXEL, "mm_hdmi_pixel", "dpi0_sel", 12), > + GATE_MM1(CLK_MM_HDMI_PLLCK, "mm_hdmi_pllck", "hdmi_sel", 13), > + GATE_MM1(CLK_MM_HDMI_AUDIO, "mm_hdmi_audio", "apll1", 14), > + GATE_MM1(CLK_MM_HDMI_SPDIF, "mm_hdmi_spdif", "apll2", 15), > + GATE_MM1(CLK_MM_LVDS_PIXEL, "mm_lvds_pixel", "lvds_pxl", 16), > + GATE_MM1(CLK_MM_LVDS_CTS, "mm_lvds_cts", "lvds_cts", 17), > + GATE_MM1(CLK_MM_SMI_LARB4, "mm_smi_larb4", "mm_sel", 18), > + GATE_MM1(CLK_MM_HDMI_HDCP, "mm_hdmi_hdcp", "hdcp_sel", 19), > + GATE_MM1(CLK_MM_HDMI_HDCP24M, "mm_hdmi_hdcp24m", "hdcp_24m_sel", 20), > +}; > + > +static int mt8173_mmsys_probe(struct platform_device *pdev) > +{ > + struct device_node *node = pdev->dev.of_node; > + struct clk_onecell_data *clk_data; > + int ret; > + > + clk_data = mtk_alloc_clk_data(CLK_MM_NR_CLK); > + if (!clk_data) > + return -ENOMEM; > + > + ret = mtk_clk_register_gates(node, mm_clks, ARRAY_SIZE(mm_clks), > + clk_data); > + if (ret) > + return ret; > + > + ret = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); > + if (ret) > + return ret; > + > + return 0; > +} > + > +static const struct of_device_id of_match_mt8173_mmsys[] = { > + { .compatible = "mediatek,mt8173-mmsys", }, > + { } > +}; > + > +static struct platform_driver mt8173_mmsys_drv = { > + .driver = { > + .name = "mt8173-mmsys", > + .of_match_table = of_match_mt8173_mmsys, > + }, > + .probe = mt8173_mmsys_probe, > +}; > + > +builtin_platform_driver(mt8173_mmsys_drv); _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel