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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 03672C7EE31 for ; Wed, 25 Jun 2025 09:03:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=k7pRqIGukkDjzBOtEj5Q63TQtWIKhAVMy3bhht1fxSc=; b=KhJGDX/14HY+Wg RvCCJwpC1RWAW8ensP6yvufP93UUb7j7JXy3pg1R8STOHjL7cpY4dRfua2pKwbNsxf6ib2V3BGoFn U5jdPNhVtLT47cWeTR8fexa3YvgG+E2Zo0R09PYWLkf4xC6H/cTsL3T8yydPPwRSHlVBzTQW62ire buogoqY8lBj7nB9FR/HVlr5BlfnfyQ9kyXqeV1M/F1XvtxDDp2lGl+b3KFILnPqFpCiU2lbyo5M+J a7Kud4bu/KiwAERd80JRuurgEK5cjwAmo7WMvRZYPByxBUljVumlRD+AecI5liv9giJ/XzMZD8SBj 8Ol6RrTo/j0zqLPY9FsA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uUM2B-000000083sV-0p8W; Wed, 25 Jun 2025 09:03:11 +0000 Received: from nyc.source.kernel.org ([2604:1380:45d1:ec00::3]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uULOG-00000007wWS-1gfT for linux-riscv@lists.infradead.org; Wed, 25 Jun 2025 08:21:57 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 7ED03A48E5C; Wed, 25 Jun 2025 08:21:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A48CC4CEEA; Wed, 25 Jun 2025 08:21:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750839715; bh=EWmpGBQr93VwGYphPN1mqtDgtD2Nh9NaQj6utWcWPlw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QNtVW0PciOraX7px3gUf6NBKLnvSlyvsSJ6TLRHWjUzX0iwSm3iR/M3Pr9jiHZWvh GmOrxW8fPt5ABhZrSrlOmgnBtOUelqqTxqXsxTTyq8bg+mtSiI0CpvFEytlQsIGc7j nsBIz8QjD+9r9Q8v8TbuHkWQgfCDFifE9+veARSvsKk2BkGFdHG/CmIbYH2+T00qKX g3RfNFfjUbVV/oWFJyAGxl4ybPu5hIv7t/gAxapfhBnEmSjf0kQ3Gb4aoKBxvGnArX Uy1qRxAKjVy5TQ582NauhE5PA+vSz5xwXsWIfnVcBHAvYSxibp0pac6B4nuN/cm7Hh QursECtoS8m7Q== Date: Wed, 25 Jun 2025 09:21:49 +0100 From: Lee Jones To: Alex Elder Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, guodong@riscstar.com, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/6] mfd: spacemit: add support for SpacemiT PMICs Message-ID: <20250625082149.GO795775@google.com> References: <20250613210150.1468845-1-elder@riscstar.com> <20250613210150.1468845-3-elder@riscstar.com> <20250619144023.GG795775@google.com> <8126de92-0338-4cd0-98fc-4f8c37500201@riscstar.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <8126de92-0338-4cd0-98fc-4f8c37500201@riscstar.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250625_012156_577318_CF609D92 X-CRM114-Status: GOOD ( 59.57 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCAyMCBKdW4gMjAyNSwgQWxleCBFbGRlciB3cm90ZToKCj4gT24gNi8xOS8yNSA5OjQw IEFNLCBMZWUgSm9uZXMgd3JvdGU6Cj4gPiBPbiBGcmksIDEzIEp1biAyMDI1LCBBbGV4IEVsZGVy IHdyb3RlOgo+ID4gCj4gPiA+IEFkZCBzdXBwb3J0IGZvciBTcGFjZW1pVCBQTUlDcy4gSW5pdGlh bGx5IG9ubHkgdGhlIFAxIFBNSUMgaXMgc3VwcG9ydGVkCj4gPiA+IGJ1dCB0aGUgZHJpdmVyIGlz IHN0cnVjdHVyZWQgdG8gYWxsb3cgc3VwcG9ydCBmb3Igb3RoZXJzIHRvIGJlIGFkZGVkLgo+ID4g PiAKPiA+ID4gVGhlIFAxIFBNSUMgaXMgY29udHJvbGxlZCBieSBJMkMsIGFuZCBpcyBub3JtYWxs eSBpbXBsZW1lbnRlZCB3aXRoIHRoZQo+ID4gPiBTcGFjZW1pVCBLMSBTb0MuICBUaGlzIFBNSUMg cHJvdmlkZXMgc2l4IGJ1Y2sgY29udmVydGVycyBhbmQgMTIgTERPCj4gPiAKPiA+IHNpeCBvciAx Mi4gIFBsZWFzZSBwaWNrIGEgZm9ybWF0IGFuZCByZW1haW4gY29uc2lzdGVudC4KPiAKPiAiTnVt YmVycyBzbWFsbGVyIHRoYW4gdGVuIHNob3VsZCBiZSBzcGVsbGVkIG91dC4iCgpOZXZlciBoZWFy ZCBvZiB0aGF0IGJlZm9yZSBHb29nbGluZyBpdC4gIEZvcm1hbCB3cml0aW5nIGlzIG9kZC4gOikK Cj4gQnV0IEknbGwgdXNlIDYgYW5kIDEyLgo+IAo+ID4gPiByZWd1bGF0b3JzLiAgSXQgYWxzbyBp bXBsZW1lbnRzIGEgc3dpdGNoLCB3YXRjaGRvZyB0aW1lciwgcmVhbC10aW1lIGNsb2NrLAo+ID4g PiBhbmQgbW9yZSwgYnV0IGluaXRpYWxseSB3ZSB3aWxsIG9ubHkgc3VwcG9ydCBpdHMgcmVndWxh dG9ycy4KPiA+IAo+ID4gWW91IGhhdmUgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciBtb3JlIHRoYW4g b25lIGRldmljZSBmb3IgdGhpcyB0byBiZQo+ID4gYWNjZXB0ZWQgaW50byBNRkQuCj4gCj4gT0su ICBJJ20gbG9va2luZyBhdCB0aGUgb3RoZXIgZGV2aWNlIGZ1bmN0aW9ucyB0byBzZWUgaWYgSQo+ IGNhbiBwaWNrIHRoZSBlYXNpZXN0IG9uZS4KPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogQWxleCBF bGRlciA8ZWxkZXJAcmlzY3N0YXIuY29tPgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL21mZC9L Y29uZmlnICAgICAgICAgfCAxMSArKysrKwo+ID4gPiAgIGRyaXZlcnMvbWZkL01ha2VmaWxlICAg ICAgICB8ICAxICsKPiA+ID4gICBkcml2ZXJzL21mZC9zcGFjZW1pdC1wbWljLmMgfCA5MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAgMyBmaWxlcyBjaGFuZ2Vk LCAxMDMgaW5zZXJ0aW9ucygrKQo+ID4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21m ZC9zcGFjZW1pdC1wbWljLmMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9L Y29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ID4gPiBpbmRleCA2ZmIzNzY4ZTNkNzFjLi5j NTlhZTZjYzJkZDhkIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCj4gPiA+ ICsrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKPiA+ID4gQEAgLTExODIsNiArMTE4MiwxNyBAQCBj b25maWcgTUZEX1FDT01fUlBNCj4gPiA+ICAgCSAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBp bmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBRdWFsY29tbSBSUE0gYXMgYQo+ID4gPiAgIAkgIG1vZHVs ZS4gVGhpcyB3aWxsIGJ1aWxkIGEgbW9kdWxlIGNhbGxlZCAicWNvbV9ycG0iLgo+ID4gPiArY29u ZmlnIE1GRF9TUEFDRU1JVF9QTUlDCj4gPiA+ICsJdHJpc3RhdGUgIlNwYWNlbWlUIFBNSUMiCj4g PiA+ICsJZGVwZW5kcyBvbiBBUkNIX1NQQUNFTUlUIHx8IENPTVBJTEVfVEVTVAo+ID4gPiArCWRl cGVuZHMgb24gSTJDICYmIE9GCj4gPiA+ICsJc2VsZWN0IE1GRF9DT1JFCj4gPiA+ICsJc2VsZWN0 IFJFR01BUF9JMkMKPiA+ID4gKwlkZWZhdWx0IEFSQ0hfU1BBQ0VNSVQKPiA+ID4gKwloZWxwCj4g PiA+ICsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIFNwYWNlbWlUIEkyQyBiYXNl ZCBQTUlDcy4gIEF0Cj4gPiA+ICsJICB0aGlzIHRpbWUgb25seSB0aGUgUDEgUE1JQyAodXNlZCB3 aXRoIHRoZSBLMSBTb0MpIGlzIHN1cHBvcnRlZC4KPiA+ID4gKwo+ID4gPiAgIGNvbmZpZyBNRkRf U1BNSV9QTUlDCj4gPiA+ICAgCXRyaXN0YXRlICJRdWFsY29tbSBTUE1JIFBNSUNzIgo+ID4gPiAg IAlkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1QKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWZkL01ha2VmaWxlIGIvZHJpdmVycy9tZmQvTWFrZWZpbGUKPiA+ID4gaW5kZXgg Nzk0OTVmOWYzNDU3Yi4uNTlkMWVjOGRiM2EzZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9t ZmQvTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9tZmQvTWFrZWZpbGUKPiA+ID4gQEAgLTI2 Niw2ICsyNjYsNyBAQCBvYmotJChDT05GSUdfTUZEX1NVTjRJX0dQQURDKQkrPSBzdW40aS1ncGFk Yy5vCj4gPiA+ICAgb2JqLSQoQ09ORklHX01GRF9TVE0zMl9MUFRJTUVSKQkrPSBzdG0zMi1scHRp bWVyLm8KPiA+ID4gICBvYmotJChDT05GSUdfTUZEX1NUTTMyX1RJTUVSUykgCSs9IHN0bTMyLXRp bWVycy5vCj4gPiA+ICAgb2JqLSQoQ09ORklHX01GRF9NWFNfTFJBREMpICAgICArPSBteHMtbHJh ZGMubwo+ID4gPiArb2JqLSQoQ09ORklHX01GRF9TUEFDRU1JVF9QTUlDKQkrPSBzcGFjZW1pdC1w bWljLm8KPiA+ID4gICBvYmotJChDT05GSUdfTUZEX1NDMjdYWF9QTUlDKQkrPSBzcHJkLXNjMjd4 eC1zcGkubwo+ID4gPiAgIG9iai0kKENPTkZJR19SQVZFX1NQX0NPUkUpCSs9IHJhdmUtc3Aubwo+ ID4gPiAgIG9iai0kKENPTkZJR19NRkRfUk9ITV9CRDcxODI4KQkrPSByb2htLWJkNzE4Mjgubwo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvc3BhY2VtaXQtcG1pYy5jIGIvZHJpdmVycy9t ZmQvc3BhY2VtaXQtcG1pYy5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4 IDAwMDAwMDAwMDAwMDAuLjdjM2MzZTI3MjM2ZGEKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiAr KysgYi9kcml2ZXJzL21mZC9zcGFjZW1pdC1wbWljLmMKPiA+ID4gQEAgLTAsMCArMSw5MSBAQAo+ ID4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gPiArLyoK PiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBieSBSSVNDc3RhciBTb2x1dGlvbnMgQ29ycG9y YXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ID4gPiArICogRGVyaXZlZCBmcm9tIGNvZGUg ZnJvbToKPiA+ID4gKyAqCUNvcHlyaWdodCAoQykgMjAyNCBUcm95IE1pdGNoZWxsIDx0cm95bWl0 Y2hlbGw5ODhAZ21haWwuY29tPgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9kZXZpY2UuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiA+ID4gKyNpbmNs dWRlIDxsaW51eC9pMmMuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tZmQvY29yZS5oPgo+ID4g PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgv dHlwZXMuaD4KPiA+ID4gKwo+ID4gPiArc3RydWN0IHNwYWNlbWl0X3BtaWNfZGF0YSB7Cj4gPiAK PiA+IHMvZGF0YS9kZGF0YS8KPiAKPiBJIGhhZG4ndCBub3RpY2VkIHRoYXQgY29udmVudGlvbi4g IEknbGwgdXNlIGl0Lgo+IAo+ID4gPiArCWNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnICpyZWdt YXBfY29uZmlnOwo+ID4gPiArCWNvbnN0IHN0cnVjdCBtZmRfY2VsbCAqbWZkX2NlbGxzOwkvKiBh cnJheSAqLwo+ID4gCj4gPiBIbW0gLi4uIHRoaXMgaXMgYSByZWQgZmxhZy4gIExldCdzIHNlZS4K PiA+IAo+ID4gPiArCXNpemVfdCBtZmRfY2VsbF9jb3VudDsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBwMV9yZWdtYXBfY29uZmlnID0g ewo+ID4gPiArCS5yZWdfYml0cwk9IDgsCj4gPiA+ICsJLnZhbF9iaXRzCT0gOCwKPiA+ID4gKwku bWF4X3JlZ2lzdGVyCT0gMHhhYSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKy8qIFRoZSBuYW1l IGZpZWxkIGRlZmluZXMgdGhlICpkcml2ZXIqIG5hbWUgdGhhdCBzaG91bGQgYmluZCB0byB0aGUg ZGV2aWNlICovCj4gPiAKPiA+IFRoaXMgY29tbWVudCBpcyBzdXBlcmZsdW91cy4KPiAKPiBJJ2xs IGRlbGV0ZSBpdC4KPiAKPiBJIHdhcyBleHBlY3RpbmcgdGhlIGRyaXZlciB0byByZWNvZ25pemUg dGhlIGRldmljZSwgbm90Cj4gdGhlIGRldmljZSBzcGVjaWZ5aW5nIHdoYXQgZHJpdmVyIHRvIHVz ZSwgYnV0IEkgZ3Vlc3MKPiBJJ20gdXNlZCB0byB0aGUgRFQgbW9kZWwuCgpFdmVuIGluIERULCB0 aGUgKmRyaXZlciogY29tcGF0aWJsZSBpcyBzcGVjaWZpZWQuCgogIC5kcml2ZXIub2ZfbWF0Y2hf dGFibGUtPmNvbXBhdGlibGUKCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1mZF9jZWxsIHAx X2NlbGxzW10gPSB7Cj4gPiA+ICsJewo+ID4gPiArCQkubmFtZQkJPSAic3BhY2VtaXQtcDEtcmVn dWxhdG9yIiwKPiA+IAo+ID4gVGhpcyBzcGFjaW5nIGlzIHdvbmt5LiAgVGFrZSBhIGxvb2sgYXQg YWxsIHRoZSBvdGhlciBkcml2ZXJzIGhlcmUuCj4gPiAKPiA+IEFsc28sIHlvdSBwcm9iYWJseSB3 YW50IHRvIHVzZSBNRkRfQ0VMTF9OQU1FKCkuCj4gCj4gWWVzLCBJIHNlZSB0aGF0IGRvZXMgd2hh dCBJIHdhbnQuCj4gCj4gPiBPbmUgaXMgbm90IGVub3VnaC4KPiA+IAo+ID4gPiArCX0sCj4gPiA+ ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNwYWNlbWl0X3BtaWNfZGF0 YSBwMV9wbWljX2RhdGEgPSB7Cj4gPiA+ICsJLnJlZ21hcF9jb25maWcJPSAmcDFfcmVnbWFwX2Nv bmZpZywKPiA+ID4gKwkubWZkX2NlbGxzCT0gcDFfY2VsbHMsCj4gPiA+ICsJLm1mZF9jZWxsX2Nv dW50CT0gQVJSQVlfU0laRShwMV9jZWxscyksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgaW50IHNwYWNlbWl0X3BtaWNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiA+ ID4gK3sKPiA+ID4gKwljb25zdCBzdHJ1Y3Qgc3BhY2VtaXRfcG1pY19kYXRhICpkYXRhOwo+ID4g PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsKPiA+ID4gKwlzdHJ1Y3QgcmVn bWFwICpyZWdtYXA7Cj4gPiA+ICsKPiA+ID4gKwkvKiBXZSBjdXJyZW50bHkgaGF2ZSBubyBuZWVk IGZvciBhIGRldmljZS1zcGVjaWZpYyBzdHJ1Y3R1cmUgKi8KPiA+IAo+ID4gVGhlbiB3aHkgYXJl IHdlIGFkZGluZyBvbmU/Cj4gCj4gSSBkb24ndCB1bmRlcnN0YW5kLCBidXQgaXQgbWlnaHQgYmUg bW9vdCBvbmNlIEkgYWRkIHN1cHBvcnQKPiBmb3IgYW5vdGhlciAoc3ViKWRldmljZS4KClRoZXJl IGFyZSAyIHJ1bGVzIGluIHBsYXkgaGVyZToKCiAgLSBPbmx5IGFkZCB3aGF0IHlvdSBuZWVkLCB3 aGVuIHlvdSBuZWVkIGl0CiAgLSBNRkRzIG11c3QgY29udGFpbiBtb3JlIHRoYW4gMSBkZXZpY2UK Ci4uLiBhbmQgeW91J3JlIHJpZ2h0LiAgVGhlIHNlY29uZCBydWxlIG1vb3RzIHRoZSBmaXJzdCBo ZXJlLgoKPiA+ID4gKwlkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Cj4gPiA+ ICsJcmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCBkYXRhLT5yZWdtYXBfY29u ZmlnKTsKPiA+ID4gKwlpZiAoSVNfRVJSKHJlZ21hcCkpCj4gPiA+ICsJCXJldHVybiBkZXZfZXJy X3Byb2JlKGRldiwgUFRSX0VSUihyZWdtYXApLAo+ID4gPiArCQkJCSAgICAgInJlZ21hcCBpbml0 aWFsaXphdGlvbiBmYWlsZWQiKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiBkZXZtX21mZF9hZGRf ZGV2aWNlcyhkZXYsIFBMQVRGT1JNX0RFVklEX0FVVE8sCj4gPiA+ICsJCQkJICAgIGRhdGEtPm1m ZF9jZWxscywgZGF0YS0+bWZkX2NlbGxfY291bnQsCj4gPiA+ICsJCQkJICAgIE5VTEwsIDAsIE5V TEwpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBzcGFjZW1pdF9wbWljX21hdGNoW10gPSB7Cj4gPiA+ICsJewo+ID4gPiArCQkuY29tcGF0 aWJsZQk9ICJzcGFjZW1pdCxwMSIsCj4gPiA+ICsJCS5kYXRhCQk9ICZwMV9wbWljX2RhdGEsCj4g PiAKPiA+IEFoLCBub3cgSSBzZWUuCj4gPiAKPiA+IFdlIGRvIG5vdCBhbGxvdyBvbmUgZGF0YSBm cm9tIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20gKE1GRCkgdG8gYmUgcGlwZWQKPiA+IHRocm91Z2gg YW5vdGhlciAoT0YpLiAgSWYgeW91IGhhdmUgdG8gbWF0Y2ggcGxhdGZvcm0gZGF0YSB0byBkZXZp Y2UgKHlvdQo+ID4gZG9uJ3QpLCB0aGVuIHBhc3MgdGhyb3VnaCBpZGVudGlmaWVycyBhbmQgbWF0 Y2ggb24gdGhvc2UgaW4gYSBzd2l0Y2goKQo+ID4gc3RhdGVtZW50IGluc3RlYWQuCj4gCj4gSSBo YXZlbid0IGRvbmUgYW4gTUZEIGRyaXZlciBiZWZvcmUgYW5kIGl0IHRvb2sgc29tZSB0aW1lCj4g dG8gZ2V0IHRoaXMgd29ya2luZy4gIEknbGwgdGVsbCB5b3Ugd2hhdCBsZWQgbWUgdG8gaXQuCj4g Cj4gSSB1c2VkIGNvZGUgcG9zdGVkIGJ5IFRyb3kgTWl0Y2hlbGwgKHBsdXMgZG93bnN0cmVhbSkg YXMgYQo+IHN0YXJ0aW5nIHBvaW50Lgo+ICAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8y MDI0MTIzMC1rMS1wMS12MS0wLWFhNGUwMmI5Zjk5M0BnbWFpbC5jb20vCj4gCj4gS3J6eXN6dG9m IEtvemxvd3NraSBtYWRlIHRoaXMgY29tbWVudCBvbiBUcm95J3MgRFQgYmluZGluZzoKPiAgIERy b3AgY29tcGF0aWJsZSwgcmVndWxhdG9ycyBhcmUgbm90IHJlLXVzYWJsZSBibG9ja3MuCj4gCj4g U28gbXkgZ29hbCB3YXMgdG8gaGF2ZSB0aGUgUE1JQyByZWd1bGF0b3JzIGdldCBib3VuZCB0byBh Cj4gZHJpdmVyIHdpdGhvdXQgc3BlY2lmeWluZyBhIERUIGNvbXBhdGlibGUgc3RyaW5nLCBhbmQg SQo+IGZvdW5kIHRoaXMgd29ya2VkLgo+IAo+IFlvdSBzYXkgSSBkb24ndCBuZWVkIHRvIG1hdGNo IHBsYXRmb3JtIGRhdGEgdG8gZGV2aWNlLCBidXQKPiBpZiBJIGRpZCBJIHdvdWxkIHBhc3MgdGhy b3VnaCBpZGVudGlmaWVycy4gIENhbiB5b3UgcmVmZXIKPiBtZSB0byBhbiBleGFtcGxlIG9mIGNv ZGUgdGhhdCBjb3JyZWN0bHkgZG9lcyB3aGF0IEkgc2hvdWxkCj4gYmUgZG9pbmcgaW5zdGVhZD8K CmdpdCBncmVwIC1BNSBjb21wYXRpYmxlIC0tIGRyaXZlcnMvbWZkIHwgZ3JlcCAtRSAiXC5kYXRh ID0gLipbQS1aXSsiCgpUaG9zZSBpZGVudGlmaWVycyBhcmUgdXN1YWxseSBtYXRjaGVkIGluIGEg c3d0aWNoKCkgc3RhdGVtZW50LgoKPiBPbmUgb3RoZXIgY29tbWVudC9xdWVzdGlvbjoKPiAgIFRo aXMgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYXMgaWYgaXQgY291bGQgc3VwcG9ydCBhIGRpZmZlcmVu dAo+ICAgUE1JQyAoaW4gYWRkaXRpb24gdG8gUDEpLiAgU2hvdWxkIEkgKm5vdCogZG8gdGhhdCwg YW5kIHNpbXBseQo+ICAgbWFrZSBhIHNvdXJjZSBmaWxlIGhhcmQtY29kZWQgZm9yIHRoaXMgb25l IFBNSUM/CgpUaGlzIGNvbWVzIGJhY2sgdG8gdGhlICJhZGQgb25seSB3aGF0IHlvdSBuZWVkLCB3 aGVuIHlvdSBuZWVkIGl0IiBydWxlLgoKPiA+ID4gKwl9LAo+ID4gPiArCXsgfQo+ID4gPiArfTsK PiA+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwYWNlbWl0X3BtaWNfbWF0Y2gpOwo+ID4g PiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3BhY2VtaXRfcG1pY19pMmNfZHJp dmVyID0gewo+ID4gPiArCS5kcml2ZXIgPSB7Cj4gPiA+ICsJCS5uYW1lID0gInNwYWNlbWl0LXBt aWMiLAo+ID4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBzcGFjZW1pdF9wbWljX21hdGNoLAo+ID4g PiArCX0sCj4gPiA+ICsJLnByb2JlICAgID0gc3BhY2VtaXRfcG1pY19wcm9iZSwKPiA+IAo+ID4g UmVtb3ZlIHRoZXNlIG9kZCB0YWJzIHBsZWFzZS4KPiAKPiBPSy4KPiAKPiA+ID4gK307Cj4gPiA+ ICsKPiA+ID4gK3N0YXRpYyBpbnQgX19pbml0IHNwYWNlbWl0X3BtaWNfaW5pdCh2b2lkKQo+ID4g PiArewo+ID4gPiArCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc3BhY2VtaXRfcG1pY19pMmNfZHJp dmVyKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgX19leGl0IHNwYWNlbWl0 X3BtaWNfZXhpdCh2b2lkKQo+ID4gPiArewo+ID4gPiArCWkyY19kZWxfZHJpdmVyKCZzcGFjZW1p dF9wbWljX2kyY19kcml2ZXIpOwo+ID4gPiArfQo+ID4gPiArCj4gPiAKPiA+IFJlbW92ZSB0aGlz IGxpbmUuCj4gCj4gU3VyZS4KPiAKPiA+ID4gK21vZHVsZV9pbml0KHNwYWNlbWl0X3BtaWNfaW5p dCk7Cj4gPiA+ICttb2R1bGVfZXhpdChzcGFjZW1pdF9wbWljX2V4aXQpOwo+ID4gCj4gPiBBcmUg eW91IHN1cmUgdGhlcmUgaXNuJ3Qgc29tZSBib2lsZXIgcGxhdGUgdG8gZG8gYWxsIG9mIHRoaXM/ Cj4gPiAKPiA+IEFoIGhhOgo+ID4gCj4gPiAgICBtb2R1bGVfaTJjX2RyaXZlcigpCj4gCj4gVGhh bmtzIGZvciBHb29nbGluZyB0aGF0IGZvciBtZS4gIEFuZCB0aGFuayB5b3UgdmVyeSBtdWNoCj4g Zm9yIHRoZSByZXZpZXcuCgpgZ2l0IGdyZXBgIGlzIG15IGJlc3RpZSEgPTotKQoKLS0gCkxlZSBK b25lcyBb5p2O55C85pavXQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yaXNjdgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B752A15A86B; Wed, 25 Jun 2025 08:21:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750839715; cv=none; b=OG2uA2QvOpnzgcXVvQ9b+e9GTFBbNpKBmnUj+NHFTOx8A1HwvqxxVZ1VEx8Kkd5ZOS29uEJfHWTERKtEhZQpmu0ZwA7vg1/S/GqTckqhYtJ+VvyT74sqQB+WTUhnqJFgHj5l5V1ze8TF8rqFERebdkLewE4FI7pxIWErbbSFTIs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750839715; c=relaxed/simple; bh=EWmpGBQr93VwGYphPN1mqtDgtD2Nh9NaQj6utWcWPlw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=SZzf2pYN2u2hYxqpvBFAKtWdcmhD/OcpNXGI5ydN7Vs8ORThYIVRWPYrCYGPzP27Nn6/v1LqrCsHNT0xZ9YTID9mo+qaSym1SVEK8ekdLwTM10Y/M4A1Mew8Wbx72KkPmN8ccp6EdZhla90br86PkNzZPG5vNvgT5u1w89hE7fo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QNtVW0Pc; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QNtVW0Pc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A48CC4CEEA; Wed, 25 Jun 2025 08:21:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750839715; bh=EWmpGBQr93VwGYphPN1mqtDgtD2Nh9NaQj6utWcWPlw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=QNtVW0PciOraX7px3gUf6NBKLnvSlyvsSJ6TLRHWjUzX0iwSm3iR/M3Pr9jiHZWvh GmOrxW8fPt5ABhZrSrlOmgnBtOUelqqTxqXsxTTyq8bg+mtSiI0CpvFEytlQsIGc7j nsBIz8QjD+9r9Q8v8TbuHkWQgfCDFifE9+veARSvsKk2BkGFdHG/CmIbYH2+T00qKX g3RfNFfjUbVV/oWFJyAGxl4ybPu5hIv7t/gAxapfhBnEmSjf0kQ3Gb4aoKBxvGnArX Uy1qRxAKjVy5TQ582NauhE5PA+vSz5xwXsWIfnVcBHAvYSxibp0pac6B4nuN/cm7Hh QursECtoS8m7Q== Date: Wed, 25 Jun 2025 09:21:49 +0100 From: Lee Jones To: Alex Elder Cc: lgirdwood@gmail.com, broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, troymitchell988@gmail.com, guodong@riscstar.com, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/6] mfd: spacemit: add support for SpacemiT PMICs Message-ID: <20250625082149.GO795775@google.com> References: <20250613210150.1468845-1-elder@riscstar.com> <20250613210150.1468845-3-elder@riscstar.com> <20250619144023.GG795775@google.com> <8126de92-0338-4cd0-98fc-4f8c37500201@riscstar.com> Precedence: bulk X-Mailing-List: spacemit@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8126de92-0338-4cd0-98fc-4f8c37500201@riscstar.com> On Fri, 20 Jun 2025, Alex Elder wrote: > On 6/19/25 9:40 AM, Lee Jones wrote: > > On Fri, 13 Jun 2025, Alex Elder wrote: > > > > > Add support for SpacemiT PMICs. Initially only the P1 PMIC is supported > > > but the driver is structured to allow support for others to be added. > > > > > > The P1 PMIC is controlled by I2C, and is normally implemented with the > > > SpacemiT K1 SoC. This PMIC provides six buck converters and 12 LDO > > > > six or 12. Please pick a format and remain consistent. > > "Numbers smaller than ten should be spelled out." Never heard of that before Googling it. Formal writing is odd. :) > But I'll use 6 and 12. > > > > regulators. It also implements a switch, watchdog timer, real-time clock, > > > and more, but initially we will only support its regulators. > > > > You have to provide support for more than one device for this to be > > accepted into MFD. > > OK. I'm looking at the other device functions to see if I > can pick the easiest one. > > > > Signed-off-by: Alex Elder > > > --- > > > drivers/mfd/Kconfig | 11 +++++ > > > drivers/mfd/Makefile | 1 + > > > drivers/mfd/spacemit-pmic.c | 91 +++++++++++++++++++++++++++++++++++++ > > > 3 files changed, 103 insertions(+) > > > create mode 100644 drivers/mfd/spacemit-pmic.c > > > > > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > > > index 6fb3768e3d71c..c59ae6cc2dd8d 100644 > > > --- a/drivers/mfd/Kconfig > > > +++ b/drivers/mfd/Kconfig > > > @@ -1182,6 +1182,17 @@ config MFD_QCOM_RPM > > > Say M here if you want to include support for the Qualcomm RPM as a > > > module. This will build a module called "qcom_rpm". > > > +config MFD_SPACEMIT_PMIC > > > + tristate "SpacemiT PMIC" > > > + depends on ARCH_SPACEMIT || COMPILE_TEST > > > + depends on I2C && OF > > > + select MFD_CORE > > > + select REGMAP_I2C > > > + default ARCH_SPACEMIT > > > + help > > > + This option enables support for SpacemiT I2C based PMICs. At > > > + this time only the P1 PMIC (used with the K1 SoC) is supported. > > > + > > > config MFD_SPMI_PMIC > > > tristate "Qualcomm SPMI PMICs" > > > depends on ARCH_QCOM || COMPILE_TEST > > > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > > > index 79495f9f3457b..59d1ec8db3a3f 100644 > > > --- a/drivers/mfd/Makefile > > > +++ b/drivers/mfd/Makefile > > > @@ -266,6 +266,7 @@ obj-$(CONFIG_MFD_SUN4I_GPADC) += sun4i-gpadc.o > > > obj-$(CONFIG_MFD_STM32_LPTIMER) += stm32-lptimer.o > > > obj-$(CONFIG_MFD_STM32_TIMERS) += stm32-timers.o > > > obj-$(CONFIG_MFD_MXS_LRADC) += mxs-lradc.o > > > +obj-$(CONFIG_MFD_SPACEMIT_PMIC) += spacemit-pmic.o > > > obj-$(CONFIG_MFD_SC27XX_PMIC) += sprd-sc27xx-spi.o > > > obj-$(CONFIG_RAVE_SP_CORE) += rave-sp.o > > > obj-$(CONFIG_MFD_ROHM_BD71828) += rohm-bd71828.o > > > diff --git a/drivers/mfd/spacemit-pmic.c b/drivers/mfd/spacemit-pmic.c > > > new file mode 100644 > > > index 0000000000000..7c3c3e27236da > > > --- /dev/null > > > +++ b/drivers/mfd/spacemit-pmic.c > > > @@ -0,0 +1,91 @@ > > > +// SPDX-License-Identifier: GPL-2.0-only > > > +/* > > > + * Copyright (C) 2025 by RISCstar Solutions Corporation. All rights reserved. > > > + * Derived from code from: > > > + * Copyright (C) 2024 Troy Mitchell > > > + */ > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > + > > > +struct spacemit_pmic_data { > > > > s/data/ddata/ > > I hadn't noticed that convention. I'll use it. > > > > + const struct regmap_config *regmap_config; > > > + const struct mfd_cell *mfd_cells; /* array */ > > > > Hmm ... this is a red flag. Let's see. > > > > > + size_t mfd_cell_count; > > > +}; > > > + > > > +static const struct regmap_config p1_regmap_config = { > > > + .reg_bits = 8, > > > + .val_bits = 8, > > > + .max_register = 0xaa, > > > +}; > > > + > > > +/* The name field defines the *driver* name that should bind to the device */ > > > > This comment is superfluous. > > I'll delete it. > > I was expecting the driver to recognize the device, not > the device specifying what driver to use, but I guess > I'm used to the DT model. Even in DT, the *driver* compatible is specified. .driver.of_match_table->compatible > > > +static const struct mfd_cell p1_cells[] = { > > > + { > > > + .name = "spacemit-p1-regulator", > > > > This spacing is wonky. Take a look at all the other drivers here. > > > > Also, you probably want to use MFD_CELL_NAME(). > > Yes, I see that does what I want. > > > One is not enough. > > > > > + }, > > > +}; > > > + > > > +static const struct spacemit_pmic_data p1_pmic_data = { > > > + .regmap_config = &p1_regmap_config, > > > + .mfd_cells = p1_cells, > > > + .mfd_cell_count = ARRAY_SIZE(p1_cells), > > > +}; > > > + > > > +static int spacemit_pmic_probe(struct i2c_client *client) > > > +{ > > > + const struct spacemit_pmic_data *data; > > > + struct device *dev = &client->dev; > > > + struct regmap *regmap; > > > + > > > + /* We currently have no need for a device-specific structure */ > > > > Then why are we adding one? > > I don't understand, but it might be moot once I add support > for another (sub)device. There are 2 rules in play here: - Only add what you need, when you need it - MFDs must contain more than 1 device ... and you're right. The second rule moots the first here. > > > + data = of_device_get_match_data(dev); > > > + regmap = devm_regmap_init_i2c(client, data->regmap_config); > > > + if (IS_ERR(regmap)) > > > + return dev_err_probe(dev, PTR_ERR(regmap), > > > + "regmap initialization failed"); > > > + > > > + return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, > > > + data->mfd_cells, data->mfd_cell_count, > > > + NULL, 0, NULL); > > > +} > > > + > > > +static const struct of_device_id spacemit_pmic_match[] = { > > > + { > > > + .compatible = "spacemit,p1", > > > + .data = &p1_pmic_data, > > > > Ah, now I see. > > > > We do not allow one data from registration mechanism (MFD) to be piped > > through another (OF). If you have to match platform data to device (you > > don't), then pass through identifiers and match on those in a switch() > > statement instead. > > I haven't done an MFD driver before and it took some time > to get this working. I'll tell you what led me to it. > > I used code posted by Troy Mitchell (plus downstream) as a > starting point. > https://lore.kernel.org/lkml/20241230-k1-p1-v1-0-aa4e02b9f993@gmail.com/ > > Krzysztof Kozlowski made this comment on Troy's DT binding: > Drop compatible, regulators are not re-usable blocks. > > So my goal was to have the PMIC regulators get bound to a > driver without specifying a DT compatible string, and I > found this worked. > > You say I don't need to match platform data to device, but > if I did I would pass through identifiers. Can you refer > me to an example of code that correctly does what I should > be doing instead? git grep -A5 compatible -- drivers/mfd | grep -E "\.data = .*[A-Z]+" Those identifiers are usually matched in a swtich() statement. > One other comment/question: > This driver is structured as if it could support a different > PMIC (in addition to P1). Should I *not* do that, and simply > make a source file hard-coded for this one PMIC? This comes back to the "add only what you need, when you need it" rule. > > > + }, > > > + { } > > > +}; > > > +MODULE_DEVICE_TABLE(of, spacemit_pmic_match); > > > + > > > +static struct i2c_driver spacemit_pmic_i2c_driver = { > > > + .driver = { > > > + .name = "spacemit-pmic", > > > + .of_match_table = spacemit_pmic_match, > > > + }, > > > + .probe = spacemit_pmic_probe, > > > > Remove these odd tabs please. > > OK. > > > > +}; > > > + > > > +static int __init spacemit_pmic_init(void) > > > +{ > > > + return i2c_add_driver(&spacemit_pmic_i2c_driver); > > > +} > > > + > > > +static void __exit spacemit_pmic_exit(void) > > > +{ > > > + i2c_del_driver(&spacemit_pmic_i2c_driver); > > > +} > > > + > > > > Remove this line. > > Sure. > > > > +module_init(spacemit_pmic_init); > > > +module_exit(spacemit_pmic_exit); > > > > Are you sure there isn't some boiler plate to do all of this? > > > > Ah ha: > > > > module_i2c_driver() > > Thanks for Googling that for me. And thank you very much > for the review. `git grep` is my bestie! =:-) -- Lee Jones [李琼斯]