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 0A555C55174 for ; Sun, 2 Aug 2026 20:34:29 +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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FLdD9kwkgPThjR7gi9kIsKQPB2tNLgDqQD+HyzRxwHY=; b=QPpPNHUBFde47m UrwPYTl8WBj68rjA1GaI8xz+XFgsdol3g5ryVN6377On2aK7+ziHc2q2CS4Eq+T1gL5MaYD6oveid zvCMCsveUicnls+1qboBc/sJm5fhssJabLav/yUl75f+G6jIyFN1K3/ABLeqdVS2tpEalnxiO7Pk4 Bx8JhXb25at/IFTq5H7dj0A+iANRHxu2y3MfaZHiX3m1+yGB+6WutmF7L/B5ZKdn0/EVzPBIyi6hm GYcY/9qPY8dZDwefC2VlEqWH4mtdrsX8qwl4hnP8/mDdkzn4iKi6QfNMb5JD7YoVBTQo/6HLjhT+k 1Qb8mxLtZh/BfedvjFTA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctA-0000000G1Xt-3BRU; Sun, 02 Aug 2026 20:34:28 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqct8-0000000G1VK-0o3D for linux-phy@lists.infradead.org; Sun, 02 Aug 2026 20:34:28 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-490cf322ed0so7136785e9.1 for ; Sun, 02 Aug 2026 13:34:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785702864; x=1786307664; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=yx9y/Q4rUmTnVZBD/oVaP0c3pNlAmpBQq+Yqe1RoBhg=; b=UOTgv2u1uxkArEXVozjL727z5U5lmgR9eB2B6+BfnHHRZfbjk94z2zHwogsFj/RteU yJ3N5tT/pz5gmMEgojjJrl3VmtWN8d751wUKWgnlnvnjWoaS1/iIj47V88F+2BQhd9nd RqvOxPZ/Sd5e+G7r82koNWacny6rA9489V6jywaZP/Pxga6sbmp5+/8XTFiv/6fRbR/F A1cdaS0yDNxxTcIRNoZZKgh921A6vjMpwVRGyWNM/wRyZerKeortfK1Xo7dsDrP8cc8N NElGxnO4oJ8GfihHl/bqmujMrq4ipmBmnHvZWgy0sDxZHBWwY7JpRNj1nXAmaT1rshhg 78Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785702864; x=1786307664; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=yx9y/Q4rUmTnVZBD/oVaP0c3pNlAmpBQq+Yqe1RoBhg=; b=ANXlfPsA0JqHWNryUJgLtY9qfo9TtrtXnaumcvsH1bJdnFj12up+LDQv7Te7o1sXQT KJAdpsnfY8vHlqk2S8O0HdNW7l443HhUEkb7bUI1SowXTtrpl6u66E8Mc8wTYTvX9CHw xCLtp0JbofURMwka43xOC36rMKfQp1+o2pO3wfXRa+f4XhWSlf1EB/6j1/gLbXzqe+cM pGndajlYuE04ARX570sSw9JfzRX1sCGTg7jDLHM6BQhYH/jSETlmjhuxp5FspwYR6MLt uzxOXZegMB8xjMmSRQwxPAkPV1hEO1IeUK5FMSUQ8xjOwcQtwvoalOZXUAzndUgdjRRv RfoQ== X-Forwarded-Encrypted: i=1; AHgh+RrRnVKAtnVfbC9UuMo5Qa9XyJj65tFCW9GEIm1oFwWg2uttDhjrSs/5+5EbjuIGwXlCg93Ow2dXJ6M=@lists.infradead.org X-Gm-Message-State: AOJu0Yy6LMuTY2huIWSkl36fZl/6SJKBfCulioVMo48T1GzbiBWG0vch WqkGqD20wdwiyd/gVGcmynAOHYa0NpI78qXnDnIsQqT0Sic9xW62424O X-Gm-Gg: AR+sD13S6IrfbDcQwtvQH74PaH5uNwEKnK32XF2VX3J9kJVsP8ej46ZPYRxfgCwkKdx QPUjPoNUNKaWksfz47NWbdAbPQ+urZq7jdNfWf88WGQGbsGF+MG4IaYzFpmksfAewEfvh1/bWsb W/wNQVVfzYsQmoJmX4iIMkduJ20I7G150wQBX4jY5J6FzELXPvRMvoJpXqmYFtGSnkGGoBXviya AflRd/z0qMwmllUJoFYXQhP7xpIKDpbeFovY/3amNZQz2cvNtfzoJXIwYtcXy/a4mwRkc3Y0mGF zQgcDkZAd4EJTQP1jUPhhxPyDukqYWbBsivryuor7zGoWWPhlQAhdFYP0TC6eacVN4MO9bS/Q9f zOpUAOkJTCYzJsLTg6ipJ3jTbW+MvTuR5t2iBH/ra9V3DmoB4oSltIM53Ko0NbYANPiX/shHcQd 2D2Mfam9FAwOhrmj7vX5auo2DMDT4Hozs23zHH/qduJNg+OCSTwWcvuKuvZDbL6phzj+gzDec4 X-Received: by 2002:a05:600c:190f:b0:495:39aa:1359 with SMTP id 5b1f17b1804b1-4980c66b43fmr121883265e9.3.1785702864156; Sun, 02 Aug 2026 13:34:24 -0700 (PDT) Received: from [192.168.0.2] ([197.250.226.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49807bb45ebsm118499905e9.4.2026.08.02.13.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 13:34:23 -0700 (PDT) From: =?utf-8?q?Stefan_D=C3=B6singer?= Date: Sun, 02 Aug 2026 23:33:36 +0300 Subject: [PATCH v9 04/12] mfd: zx297520v3: Add a clock and reset MFD driver MIME-Version: 1.0 Message-Id: <20260802-zx29clk-v9-4-d05530d85d28@gmail.com> References: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> In-Reply-To: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Brian Masney , Vinod Koul , Neil Armstrong , Russell King , Lee Jones Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-phy@lists.infradead.org, mfd@lists.linux.dev, =?utf-8?q?Stefan_D=C3=B6singer?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=8132; i=stefandoesinger@gmail.com; h=from:subject:message-id; bh=HDB6HKomcJYNmQDMZ6Gdx360Qh14RD85fFKiFafb3J0=; b=owEBiQJ2/ZANAwAIAT0TvMhUTxoiAcsmYgBqb6mysk8ZAIRhyiWgck/Nf3N8sNG9hqDSp4efE iQp2GBhrR2JAk8EAAEIADkWIQRDFvS2qgVbJ5UyXWw9E7zIVE8aIgUCam+pshsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQPRO8yFRPGiKk+RAAp4FsiuVXDePHeCuEUimSugNlBdbsE6X r9DohvSpZN8c3PYA4atJj1AsgPChWzl1c+SMOdsEZCi6z/TyLE87mSYydsv9n5XzOoUdRMP05yD Qo1Yb6iQj53PB4SLYNLjEpzmuYOv+UTK4sZND4EoS8EHerOeXwF2vtJSXlCAfR8IYyMuXFwSEI3 Ix46FLYJMvgqJNhHpglJpD09s9/slj8na6RI4sEjkTOBNFWJRhR9QxsNzpyZQAmixdcTfZHiUof g1gBC/eZIbMRJN/OOH3HffTLJ5nmrXr22oKJ9znSH/NyzjbH/4RMtmKwvUgxUf52PkgECFoXvmu LCd0SKSKKN2eXJmyZT6ZrxjPynsiETtnDjEEqp1dG7yTJ9bqCvOY8hutiS3j3rSpT6HZ1MLIpFA +cnr7gHGvztxiehgniyx6OsM2AidmnEjoa6J1xwfV02LkYVgvJ9y68nXBeSmC9qfCSpTpTcjUIq CXcXV57cmOpAVKkr3DHf6jjbmZpvPRUe8DVnyFLfXab9F+/jr7tvqbfScod4n9iJIK8EZD5DePt VZfhRNdRPLzLrweY88LEX3TNawe/+hrDO/j+Cx2bBLGgwNeVXgA8+W70yNjE9R3Z8/oF+KaJtUk 9mJrMconBf35VXu1/Y+9AlotvjPa92q8H43Oe4XYdK8VqCi681dE= X-Developer-Key: i=stefandoesinger@gmail.com; a=openpgp; fpr=4F9C2C8728019633893EBBB98CB81F9A72BBA155 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260802_133426_281141_F5439065 X-CRM114-Status: GOOD ( 33.41 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhpcyBkcml2ZXIgcmVnaXN0ZXJzIGNoaWxkIGRldmljZXMgZm9yIHRoZSB6eDI5NzUyMHYzIGNs b2NrIGFuZCByZXNldApjb250cm9sbGVycy4gVGhlIGNsay16eDI5NzUyMHYzIGFuZCByZXNldC16 dGUtengyOTc1MjB2MyBzdWJtaXR0ZWQgaW4KdGhlIG5leHQgcGF0Y2hlcyB3aWxsIGRyaXZlIHRo ZSByZXNwZWN0aXZlIGZ1bmN0aW9uYWxpdGllcy4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBEw7Zz aW5nZXIgPHN0ZWZhbmRvZXNpbmdlckBnbWFpbC5jb20+CgotLS0KCldoYXQgSSBhbSBzdGlsbCB1 bnN1cmUgYWJvdXQ6IEhvdyBtdWNoIHNlbnNlIGRvZXMgaXQgbWFrZSB0byBoYXZlIHRoaXMKbW9k dWxlLWNhcGFibGUgYW5kIGFibGUgdG8gdW5iaW5kOiBJbiBwcmFjdGljZSwgdGhlIGJvYXJkIGRv ZXNuJ3Qgd29yawp3aXRob3V0IHRoaXMgZHJpdmVyIGFuZCBpdHMgY2xvY2sgYW5kIHJlc2V0IGNo aWxkcmVuLgoKQ2hhbmdlcyB2OToKRGVhc3NlcnQgdGhlIExTUCByZXNldCBhbmQgZW5hYmxlIHRo ZSBMU1AgcGNsayBoZXJlLiBJbiBwcmFjdGljZSB0aGUKYm9vdCByb20gbmVlZHMgdG8gZG8gdGhh dCBiZWNhdXNlIGl0IHByaW50cyB0byBhbiBMU1AtY29ubmVjdGVkIFVBUlQgYW5kCnJlYWRzIHRo ZSBib290IHBvbGljeSBmcm9tIHRoZSBMU1AgY29ubmVjdGVkIGZsYXNoIGNoaXAuCgpJbiBkb2lu ZyBzbywgSSBtaWdyYXRlZCB0aGUgbWF0Y2ggZGF0YSB0byBhbiBlbnVtIGFzIG1mZC5tZCBzdWdn ZXN0cy4KCkNoYW5nZXMgdjg6CiopIFJlbW92ZSAub2ZfY29tcGF0aWJsZSBmcm9tIFBIWSBtZmQg Y2hpbGQKCiopIE1vdmUgdG8gZHJpdmVycy9tZmQgKFNhc2hpa28pCgpGb3IgbWUgZWl0aGVyIHNv Yy96dGUgb3IgbWZkLyBpcyBmaW5lLiBOb3RlIHRob3VnaCB0aGF0IHRoaXMgTUZEIHBhcmVudApp cyB2ZXJ5IHNwZWNpZmljIHRvIHRoZSB6eDI5NzUyMHYzIFNvQy4gSSBkb24ndCBleHBlY3QgdGhp cyB0byBiZSByZXVzZWQKYW55d2hlcmUgZWxzZS4gVGhlcmUgYXJlIHR3byBtb3JlIE1GRC1pc2gg ZGV2aWNlcyBpbiB0aGVyZTogc29jX3N5cyBhdAoweDE0MDAwMCwgd2hpY2ggSSBwbGFuIHRvIGhh bmRsZSBpbiB0aGUgc2FtZSBkcml2ZXIsIGFuZCBhbiBpMmMgUE1JQywKd2hpY2ggd291bGQgZ2V0 IGl0cyBvd24gaG9zdCBkcml2ZXIuCgoqKSBVc2UgUExBVEZPUk1fREVWSURfQVVUTyAoU2FzaGlr bykuIE5PTkUgd2FzIGludGVudGlvbmFsIGFzIEkgb25seQpldmVyIGV4cGVjdCBvbmUgaW5zdGFu Y2UsIGJ1dCBJIGRvbid0IHNlZSBhbnkgaGFybSBpbiBkb2luZyB0aGUgc3RhbmRhcmQKdGhpbmcg YW5kIHVzZSBBVVRPCgoqKSBPbiB0aGUgc3VnZ2VzdGlvbiBub3QgdG8gcHV0IHRoZSBsaW5rIHRv IG1mZF9jZWxsc1tdIGludG8gbWF0Y2ggZGF0YToKSSBzZWUgdGhhdCBpdCBpcyBzcGVsbGVkIG91 dCBpbiBTYXNoaWtvJ3MgbWZkLm1kLCB3cml0dGVuIGJ5IExlZSBKb25lcywKdGhlIE1GRCBtYWlu dGFpbmVyLiBJIHdvdWxkIGFwcHJlY2lhdGUgc29tZSBlZHVjYXRpb24gb24gdGhlIHJhdGlvbmFs ZQpiZWhpbmQgaXQ6IFB1dHRpbmcgYSBwb2ludGVyIGludG8gdGhlIHZvaWQgKmRhdGEgaXMgYSBj b21tb24gcGF0dGVybiBpbgp0aGUga2VybmVsLiBJIGRvbid0IHVuZGVyc3RhbmQgaW4gd2hpY2gg c2l0dWF0aW9uIHRoaXMgY2FuIHBvc3NpYmx5CmJyZWFrPwoKQm90aCBzdHJ1Y3RzIGFyZSBzdGF0 aWMgY29uc3QgaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdC4gZGF0YSBpcyBhCmNvbnN0IHZv aWQgKiwgbm90IGEgdWludHB0cl90IG9yIGtlcm5lbF91bG9uZ190LCBzbyBpdCBzZWVtcyBwYXNz aW5nIGEKcG9pbnRlciBpcyB0aGUgaW50ZW5kZWQgdXNlLiBXaGF0IGFtIEkgbWlzc2luZz8KCkNo YW5nZXMgdjc6CkFkZCBwaHkgTUZEIGNoaWxkCgpDaGFuZ2VzIHY2OiBNYWtlIHRoZSBaVEUgU29D IGRyaXZlciBzZWN0aW9uIGRlcGVuZCBvbiBIQVNfSU9NRU0KKFNhc2hpa28pLiBUaGUgZW50aXJl IE1GRCBzZWN0aW9uLCB3aGljaCBjb250YWlucyBNRkRfQ09SRSwgZGVwZW5kcyBvbgpIQVNfSU9N RU0gZXZlbiB3aXRoIENPTVBJTEVfVEVTVC4KCkFkZCBhIE5VTEwgcHRyIGNoZWNrIGZvciBvZl9k ZXZpY2VfZ2V0X21hdGNoX2RhdGEgKFNhc2hpa28pLiBXaGlsZSBub3QKdW5pZm9ybSwgcmF2ZS1z cCwgcm9obS1iZDk1NzYsIGF0YzI2MHgsIGRhOTA1Mi1pMmMgcHJvdGVjdCBhZ2FpbnN0CmluY29y cmVjdCBtYW51YWwgYXR0YWNobWVudCB0aGF0IHdheS4KCkFkZCBsc3BjbGsgaGVyZSBhcyB3ZWxs IGluIGFuIGF0dGVtcHQgdG8gc2F0aXNmeSBib3RoIENvbm9yIERvb2xleSwgd2hvCmFza3MgZm9y IE1GRCBmb3IgdG9wIGFuZCBtYXRyaXgsIGFuZCBQaGlsaXBwIFphYmVsLCB3aG8gcHJlZmVycyBh dXggYnV0CmF0IGxlYXN0IHdhbnRzIHRoZSByZXNldCBkcml2ZXIgbGltaXRlZCB0byBvbmUgZHJp dmVyIHR5cGUuCgpDaGFuZ2VzIHY1OiBVc2UgTUZEIGluc3RlYWQgb2YgQXV4IGJ1cyBmb3IgdG9w IGFuZCBtYXRyaXggY3JtIGJlY2F1c2Ugb2YKZXh0cmEgZnVuY3Rpb25hbGl0eTogUmVib290IGlu IHRvcCwgaHdsb2NrIGluIE1hdHJpeC4KCkxTUCBjbG9ja3Mgc3RheSB3aXRoIHRoZSBhdXggYnVz IGFuZCBhcmUgdGh1cyBub3QgaGFuZGxlZCBpbiB0aGlzCmRyaXZlci4gVGhlIGNsayBkcml2ZXIg d2lsbCBiaW5kIGRpcmVjdGx5IHRvIHRoZSBsc3Bjcm0gbm9kZS4KLS0tCiBNQUlOVEFJTkVSUyAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL21mZC9LY29uZmlnICAgICAgICAg ICAgICB8ICAxMSArKysrCiBkcml2ZXJzL21mZC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiAr CiBkcml2ZXJzL21mZC96dGUtengyOTc1MjB2My1jcm0uYyB8IDExNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGUwMWVmMDE0 YzExMC4uYjlmOTY0NTViY2E3IDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJ TkVSUwpAQCAtMzkxNSw2ICszOTE1LDcgQEAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2Nsb2NrL3p0ZSx6eDI5NzUyMHYzLW1hdHJpeGNybS55YW1sCiBGOglEb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svenRlLHp4Mjk3NTIwdjMtdG9wY3JtLnlhbWwK IEY6CWFyY2gvYXJtL2Jvb3QvZHRzL3p0ZS8KIEY6CWFyY2gvYXJtL21hY2gtenRlLworRjoJZHJp dmVycy9tZmQvenRlLXp4Mjk3NTIwdjMtY3JtLmMKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv Y2svenRlLHp4Mjk3NTIwdjMtY2xrLmgKIEY6CWluY2x1ZGUvZHQtYmluZGluZ3MvcGh5L3p0ZSx6 eDI5NzUyMHYzLXRvcGNybS5oCiBGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L3p0ZSx6eDI5 NzUyMHYzLXJlc2V0LmgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL0tjb25maWcgYi9kcml2ZXJz L21mZC9LY29uZmlnCmluZGV4IDM1ZjZlOWI3NmQwNS4uYzBjN2U4MzQ4N2Y0IDEwMDY0NAotLS0g YS9kcml2ZXJzL21mZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKQEAgLTI1NzIs NSArMjU3MiwxNiBAQCBjb25maWcgTUZEX01BWDczNjAKIAkgIGFkZGl0aW9uYWwgZHJpdmVycyBt dXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5CiAJICBvZiB0 aGUgZGV2aWNlLgogCitjb25maWcgTUZEX1pURV9aWDI5NzUyMFYzX0NSTQorCXRyaXN0YXRlICJa VEUgengyOTc1MjB2MyBDbG9jayBhbmQgUmVzZXQgTWFuYWdlciIKKwlzZWxlY3QgTUZEX0NPUkUK KwlkZWZhdWx0IFNPQ19aWDI5NzUyMFYzCisJaGVscAorCSAgU2F5IHllcyBoZXJlIHRvIGVuYWJs ZSB0aGUgZHJpdmVyIGZvciB0aGUgWlRFIHp4Mjk3NTIwdjMgY2xvY2sgYW5kCisJICByZXNldCBt YW5hZ2VyIE1GRCBkcml2ZXIuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBob3N0IGRldmljZSBm b3IKKwkgIHRoZSBjbG9jayBhbmQgcmVzZXQgZHJpdmVycyBhbmQgaXMgcmVxdWlyZWQgdG8gYm9v dCB0aGUgU29DLiBZb3UKKwkgIHdpbGwgYWxzbyBuZWVkIHRvIGVuYWJsZSBDTEtfWlRFX1pYMjk3 NTIwVjMgYW5kIFJFU0VUX1pURV9aWDI5NzUyMFYzCisJICB0byBidWlsZCB0aGUgYWN0dWFsIGNs b2NrIGFuZCByZXNldCBjaGlsZCBkcml2ZXJzLgorCiBlbmRtZW51CiBlbmRpZgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQppbmRleCBkZDRi YjdlNzdjMzMuLjRmNmE3ODE3MGFjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9tZmQvTWFrZWZpbGUKQEAgLTMwMywzICszMDMsNSBAQCBvYmotJChDT05G SUdfTUZEX1JTTVVfU1BJKQkrPSByc211X3NwaS5vIHJzbXVfY29yZS5vCiBvYmotJChDT05GSUdf TUZEX1VQQk9BUkRfRlBHQSkJKz0gdXBib2FyZC1mcGdhLm8KIAogb2JqLSQoQ09ORklHX01GRF9M T09OR1NPTl9TRSkJKz0gbG9vbmdzb24tc2UubworCitvYmotJChDT05GSUdfTUZEX1pURV9aWDI5 NzUyMFYzX0NSTSkJKz0genRlLXp4Mjk3NTIwdjMtY3JtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWZkL3p0ZS16eDI5NzUyMHYzLWNybS5jIGIvZHJpdmVycy9tZmQvenRlLXp4Mjk3NTIwdjMtY3Jt LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zN2NkMGMxNDY4MGUK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21mZC96dGUtengyOTc1MjB2My1jcm0uYwpAQCAt MCwwICsxLDExNyBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQor LyoKKyAqIENvcHlyaWdodCAoQykgMjAyNiBTdGVmYW4gRMO2c2luZ2VyCisgKi8KKworI2luY2x1 ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4 L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUuaD4KKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisKK2VudW0gengyOTc1MjB2M19t ZmRfdHlwZSB7CisJWlgyOTc1MjBWM19NRkRfSU5WQUxJRCA9IDAsCisJWlgyOTc1MjBWM19NRkRf VE9QQ1JNLAorCVpYMjk3NTIwVjNfTUZEX01BVFJJWENSTSwKKwlaWDI5NzUyMFYzX01GRF9MU1BD Uk0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1mZF9jZWxsIHp4Mjk3NTIwdjNfdG9wY3Jt X2NlbGxzW10gPSB7CisJeworCQkubmFtZSA9ICJ6eDI5NzUyMHYzLXRvcGNsayIsCisJfSwKKwl7 CisJCS5uYW1lID0gInp4Mjk3NTIwdjMtdG9wcmVzZXQiLAorCX0sCisJeworCQkubmFtZSA9ICJy ZWJvb3QiLAorCQkub2ZfY29tcGF0aWJsZSA9ICJzeXNjb24tcmVib290IiwKKwl9LAorCXsKKwkJ Lm5hbWUgPSAiengyOTc1MjB2My11c2ItcGh5IiwKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBtZmRfY2VsbCB6eDI5NzUyMHYzX21hdHJpeGNybV9jZWxsc1tdID0geworCXsKKwkJLm5h bWUgPSAiengyOTc1MjB2My1tYXRyaXhjbGsiLAorCX0sCisJeworCQkubmFtZSA9ICJ6eDI5NzUy MHYzLW1hdHJpeHJlc2V0IiwKKwl9LAorCS8qIEEgc2V0IG9mIGh3bG9jayBjb250cm9sbGVycyBp cyBmb3VuZCBoZXJlIGFzIHdlbGwsIGJ1dCBubyBkcml2ZXIgaXMgaW1wbGVtZW50ZWQgeWV0ICov Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG1mZF9jZWxsIHp4Mjk3NTIwdjNfbHNwY3JtX2Nl bGxzW10gPSB7CisJeworCQkubmFtZSA9ICJ6eDI5NzUyMHYzLWxzcGNsayIsCisJfSwKKwl7CisJ CS5uYW1lID0gInp4Mjk3NTIwdjMtbHNwcmVzZXQiLAorCX0sCit9OworCitzdGF0aWMgaW50IHp4 Mjk3NTIwdjNfY3JtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3Ry dWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwllbnVtIHp4Mjk3NTIwdjNfbWZkX3R5cGUg dHlwZTsKKwljb25zdCBzdHJ1Y3QgbWZkX2NlbGwgKmNlbGxzOworCXN0cnVjdCByZXNldF9jb250 cm9sICpyc3Q7CisJdW5zaWduZWQgaW50IG51bV9jZWxsczsKKwlzdHJ1Y3QgY2xrICpwY2xrOwor CisJdHlwZSA9IChlbnVtIHp4Mjk3NTIwdjNfbWZkX3R5cGUpb2ZfZGV2aWNlX2dldF9tYXRjaF9k YXRhKGRldik7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBaWDI5NzUyMFYzX01GRF9UT1BDUk06 CisJCWNlbGxzID0gengyOTc1MjB2M190b3Bjcm1fY2VsbHM7CisJCW51bV9jZWxscyA9IEFSUkFZ X1NJWkUoengyOTc1MjB2M190b3Bjcm1fY2VsbHMpOworCQlicmVhazsKKworCWNhc2UgWlgyOTc1 MjBWM19NRkRfTUFUUklYQ1JNOgorCQljZWxscyA9IHp4Mjk3NTIwdjNfbWF0cml4Y3JtX2NlbGxz OworCQludW1fY2VsbHMgPSBBUlJBWV9TSVpFKHp4Mjk3NTIwdjNfbWF0cml4Y3JtX2NlbGxzKTsK KwkJYnJlYWs7CisKKwljYXNlIFpYMjk3NTIwVjNfTUZEX0xTUENSTToKKwkJY2VsbHMgPSB6eDI5 NzUyMHYzX2xzcGNybV9jZWxsczsKKwkJbnVtX2NlbGxzID0gQVJSQVlfU0laRSh6eDI5NzUyMHYz X2xzcGNybV9jZWxscyk7CisKKwkJcGNsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKGRldiwgInBj bGsiKTsKKwkJaWYgKElTX0VSUihwY2xrKSkKKwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwg UFRSX0VSUihwY2xrKSwgIkNvdWxkIG5vdCBnZXQgcGNsa1xuIik7CisKKwkJcnN0ID0gZGV2bV9y ZXNldF9jb250cm9sX2dldF9leGNsdXNpdmVfZGVhc3NlcnRlZChkZXYsIE5VTEwpOworCQlpZiAo SVNfRVJSKHJzdCkpCisJCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocnN0KSwg IkNvdWxkIG5vdCBnZXQgcmVzZXRcbiIpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldHVy biAtRU5PREVWOworCX0KKworCXJldHVybiBkZXZtX21mZF9hZGRfZGV2aWNlcyhkZXYsIFBMQVRG T1JNX0RFVklEX0FVVE8sIGNlbGxzLCBudW1fY2VsbHMsIE5VTEwsIDAsIE5VTEwpOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9tYXRjaF96eDI5NzUyMHYzX2NybVtd ID0geworCXsgLmNvbXBhdGlibGUgPSAienRlLHp4Mjk3NTIwdjMtdG9wY3JtIiwgLmRhdGEgPSAo dm9pZCAqKVpYMjk3NTIwVjNfTUZEX1RPUENSTSB9LAorCXsgLmNvbXBhdGlibGUgPSAienRlLHp4 Mjk3NTIwdjMtbWF0cml4Y3JtIiwgLmRhdGEgPSAodm9pZCAqKVpYMjk3NTIwVjNfTUZEX01BVFJJ WENSTSB9LAorCXsgLmNvbXBhdGlibGUgPSAienRlLHp4Mjk3NTIwdjMtbHNwY3JtIiwgLmRhdGEg PSAodm9pZCAqKVpYMjk3NTIwVjNfTUZEX0xTUENSTSB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIG9mX21hdGNoX3p4Mjk3NTIwdjNfY3JtKTsKKworc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgengyOTc1MjB2M19jcm0gPSB7CisJLnByb2JlID0gengyOTc1MjB2M19j cm1fcHJvYmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiengyOTc1MjB2My1jcm0iLAorCQku b2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF96eDI5NzUyMHYzX2NybSwKKwl9LAorfTsKK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoengyOTc1MjB2M19jcm0pOworCitNT0RVTEVfQVVUSE9SKCJTdGVm YW4gRMO2c2luZ2VyIDxzdGVmYW5kb2VzaW5nZXJAZ21haWwuY29tPiIpOworTU9EVUxFX0RFU0NS SVBUSU9OKCJaVEUgengyOTc1MjB2MyBDUk0gTUZEIGhvc3QgZHJpdmVyIik7CitNT0RVTEVfTElD RU5TRSgiR1BMIik7CgotLSAKMi41NC4wCgoKLS0gCmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGlu dXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg== 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 037CEC55162 for ; Sun, 2 Aug 2026 20:34:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=yx9y/Q4rUmTnVZBD/oVaP0c3pNlAmpBQq+Yqe1RoBhg=; b=rF146ZUuVlzS9GuG0VIjL4tQlw /KuIAJIuoAYlJKmtTte0Zkh4o8ollvQUChUhTOPjMEoNsock4Vw4eWKQpA7StJrxyn3zHSB7EC0sE XG1kYufiAtku/MCjhyrVgrr9oTVM04/5jH5bz6zS30+qBOMKG8uUD20AjxeD0BDkf21/bd0iGPiPI 1AH4Iv9kRmejKtFVkTTdCr/2oNLjJ+A0k9yfY5b7AmFUB6NG8mT7TBpqEJRCUxpLvpoV8GUQxX8W5 LOWlgc8wy0l0dJpuzm+cVilhaE+8kav8nD6b0gimxfQcf95vRNcnZANnER9wA/SFkUzXBJ5UsguOt PFUR3g6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqctA-0000000G1Xa-2nd3; Sun, 02 Aug 2026 20:34:28 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wqct8-0000000G1VL-0o2U for linux-arm-kernel@lists.infradead.org; Sun, 02 Aug 2026 20:34:27 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-47f93b2fe4cso1612344f8f.0 for ; Sun, 02 Aug 2026 13:34:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785702864; x=1786307664; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=yx9y/Q4rUmTnVZBD/oVaP0c3pNlAmpBQq+Yqe1RoBhg=; b=UOTgv2u1uxkArEXVozjL727z5U5lmgR9eB2B6+BfnHHRZfbjk94z2zHwogsFj/RteU yJ3N5tT/pz5gmMEgojjJrl3VmtWN8d751wUKWgnlnvnjWoaS1/iIj47V88F+2BQhd9nd RqvOxPZ/Sd5e+G7r82koNWacny6rA9489V6jywaZP/Pxga6sbmp5+/8XTFiv/6fRbR/F A1cdaS0yDNxxTcIRNoZZKgh921A6vjMpwVRGyWNM/wRyZerKeortfK1Xo7dsDrP8cc8N NElGxnO4oJ8GfihHl/bqmujMrq4ipmBmnHvZWgy0sDxZHBWwY7JpRNj1nXAmaT1rshhg 78Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785702864; x=1786307664; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=yx9y/Q4rUmTnVZBD/oVaP0c3pNlAmpBQq+Yqe1RoBhg=; b=Fk/7Tw54KtVjmYMi0dLS3wHaRWNwHOiDYOxvVzvRTFPFx5FKQzvr70Rc+rpayPWG3E 2WzEyiiYZukvdATvT5/0DdUYfXmJb7UCJR5P7ZA6TV95z3SSPwKS8SvimoShAoPvA+4f Mk79opIgitWDYB5iv0S3+Gw1xsrulYPVpTBvS2LfWccvK/+Q7BcxdsOKmKSNZYq5et3h OjlGfrHJERvduiriLGrYlF1FO+wLVLF/Y78MQgszdHL+Cj+lditP5ON9QYnMysY3d2oD 77WV49kPnDxAsP+hYGIWBOItTRANIkqpVcoVs4PXXOCGFu2qz8AESRw7EYrETLz8BIQF O9Jw== X-Forwarded-Encrypted: i=1; AHgh+RqEcYLB7qNygyb1skcQAA5yaxC+ea++Ydg8xLpqUlUyHmZ+bE71hnBinYu0D9BoRYfUaG+vbbENzfN+JUXea0IU@lists.infradead.org X-Gm-Message-State: AOJu0Yx0MDardM5cqQKm+YYJ5W2YG0nxfflFleR/Bg4M0LAdETkNMQUc 7WCZxq0/jXzBhJsFzqTwJuwvVOOzODujYdBihZfXmXJX5n7eUDllOIs5 X-Gm-Gg: AR+sD132dZJv8XQHZ6Tl5DtclY/KRaTYapiyNCzJ7smsFZbhWoqeF3Nw1o0uflPbzdt jZgae1uzF1KTNsAJNN3gThS8kHgiANw8AL3ZXd2tzLepwo8KplY/qjaWYRlNvnH4xAWEP5HLzDp 4gk2afnuC/Kb1U4s3yIxlnVFrmuz2dMckxLxo59dXh5B6/HrtKXZvvhHAfny3JAyDiptsPQFhGF G5UCEIU8WbnMofJAJJHxCAXJ/tZVCIP3v3xncIPLBFCBm9ehS8iXEr2OQiTmlpZDZLLP2d+D7rD wZ5HYWPrzBMP+qOIbZ51AhzyyXfo12/liQtsH5JO0GKN7TioNQTvqWGurCX3a3rAolmw52LWw9W ngDiIun9r3GEB6HUz/Kk7/W/aSP7Eqnl+5g6J3B8rf+AkOFLM6mv9XXsKbGm8/agRIxgZ0BbzC2 hJSycIP/an+CAGxk069+NNoKFIqlQg/zITytmcUXmW80+jDFZGAvrMZMqG/uTFS+jIRBTvJR5F X-Received: by 2002:a05:600c:190f:b0:495:39aa:1359 with SMTP id 5b1f17b1804b1-4980c66b43fmr121883265e9.3.1785702864156; Sun, 02 Aug 2026 13:34:24 -0700 (PDT) Received: from [192.168.0.2] ([197.250.226.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49807bb45ebsm118499905e9.4.2026.08.02.13.34.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 13:34:23 -0700 (PDT) From: =?utf-8?q?Stefan_D=C3=B6singer?= Date: Sun, 02 Aug 2026 23:33:36 +0300 Subject: [PATCH v9 04/12] mfd: zx297520v3: Add a clock and reset MFD driver MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20260802-zx29clk-v9-4-d05530d85d28@gmail.com> References: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> In-Reply-To: <20260802-zx29clk-v9-0-d05530d85d28@gmail.com> To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Brian Masney , Vinod Koul , Neil Armstrong , Russell King , Lee Jones Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-phy@lists.infradead.org, mfd@lists.linux.dev, =?utf-8?q?Stefan_D=C3=B6singer?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=8132; i=stefandoesinger@gmail.com; h=from:subject:message-id; bh=HDB6HKomcJYNmQDMZ6Gdx360Qh14RD85fFKiFafb3J0=; b=owEBiQJ2/ZANAwAIAT0TvMhUTxoiAcsmYgBqb6mysk8ZAIRhyiWgck/Nf3N8sNG9hqDSp4efE iQp2GBhrR2JAk8EAAEIADkWIQRDFvS2qgVbJ5UyXWw9E7zIVE8aIgUCam+pshsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDIACgkQPRO8yFRPGiKk+RAAp4FsiuVXDePHeCuEUimSugNlBdbsE6X r9DohvSpZN8c3PYA4atJj1AsgPChWzl1c+SMOdsEZCi6z/TyLE87mSYydsv9n5XzOoUdRMP05yD Qo1Yb6iQj53PB4SLYNLjEpzmuYOv+UTK4sZND4EoS8EHerOeXwF2vtJSXlCAfR8IYyMuXFwSEI3 Ix46FLYJMvgqJNhHpglJpD09s9/slj8na6RI4sEjkTOBNFWJRhR9QxsNzpyZQAmixdcTfZHiUof g1gBC/eZIbMRJN/OOH3HffTLJ5nmrXr22oKJ9znSH/NyzjbH/4RMtmKwvUgxUf52PkgECFoXvmu LCd0SKSKKN2eXJmyZT6ZrxjPynsiETtnDjEEqp1dG7yTJ9bqCvOY8hutiS3j3rSpT6HZ1MLIpFA +cnr7gHGvztxiehgniyx6OsM2AidmnEjoa6J1xwfV02LkYVgvJ9y68nXBeSmC9qfCSpTpTcjUIq CXcXV57cmOpAVKkr3DHf6jjbmZpvPRUe8DVnyFLfXab9F+/jr7tvqbfScod4n9iJIK8EZD5DePt VZfhRNdRPLzLrweY88LEX3TNawe/+hrDO/j+Cx2bBLGgwNeVXgA8+W70yNjE9R3Z8/oF+KaJtUk 9mJrMconBf35VXu1/Y+9AlotvjPa92q8H43Oe4XYdK8VqCi681dE= X-Developer-Key: i=stefandoesinger@gmail.com; a=openpgp; fpr=4F9C2C8728019633893EBBB98CB81F9A72BBA155 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260802_133426_280803_FCF295B1 X-CRM114-Status: GOOD ( 34.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This driver registers child devices for the zx297520v3 clock and reset controllers. The clk-zx297520v3 and reset-zte-zx297520v3 submitted in the next patches will drive the respective functionalities. Signed-off-by: Stefan Dösinger --- What I am still unsure about: How much sense does it make to have this module-capable and able to unbind: In practice, the board doesn't work without this driver and its clock and reset children. Changes v9: Deassert the LSP reset and enable the LSP pclk here. In practice the boot rom needs to do that because it prints to an LSP-connected UART and reads the boot policy from the LSP connected flash chip. In doing so, I migrated the match data to an enum as mfd.md suggests. Changes v8: *) Remove .of_compatible from PHY mfd child *) Move to drivers/mfd (Sashiko) For me either soc/zte or mfd/ is fine. Note though that this MFD parent is very specific to the zx297520v3 SoC. I don't expect this to be reused anywhere else. There are two more MFD-ish devices in there: soc_sys at 0x140000, which I plan to handle in the same driver, and an i2c PMIC, which would get its own host driver. *) Use PLATFORM_DEVID_AUTO (Sashiko). NONE was intentional as I only ever expect one instance, but I don't see any harm in doing the standard thing and use AUTO *) On the suggestion not to put the link to mfd_cells[] into match data: I see that it is spelled out in Sashiko's mfd.md, written by Lee Jones, the MFD maintainer. I would appreciate some education on the rationale behind it: Putting a pointer into the void *data is a common pattern in the kernel. I don't understand in which situation this can possibly break? Both structs are static const in the same compilation unit. data is a const void *, not a uintptr_t or kernel_ulong_t, so it seems passing a pointer is the intended use. What am I missing? Changes v7: Add phy MFD child Changes v6: Make the ZTE SoC driver section depend on HAS_IOMEM (Sashiko). The entire MFD section, which contains MFD_CORE, depends on HAS_IOMEM even with COMPILE_TEST. Add a NULL ptr check for of_device_get_match_data (Sashiko). While not uniform, rave-sp, rohm-bd9576, atc260x, da9052-i2c protect against incorrect manual attachment that way. Add lspclk here as well in an attempt to satisfy both Conor Dooley, who asks for MFD for top and matrix, and Philipp Zabel, who prefers aux but at least wants the reset driver limited to one driver type. Changes v5: Use MFD instead of Aux bus for top and matrix crm because of extra functionality: Reboot in top, hwlock in Matrix. LSP clocks stay with the aux bus and are thus not handled in this driver. The clk driver will bind directly to the lspcrm node. --- MAINTAINERS | 1 + drivers/mfd/Kconfig | 11 ++++ drivers/mfd/Makefile | 2 + drivers/mfd/zte-zx297520v3-crm.c | 117 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index e01ef014c110..b9f96455bca7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3915,6 +3915,7 @@ F: Documentation/devicetree/bindings/clock/zte,zx297520v3-matrixcrm.yaml F: Documentation/devicetree/bindings/clock/zte,zx297520v3-topcrm.yaml F: arch/arm/boot/dts/zte/ F: arch/arm/mach-zte/ +F: drivers/mfd/zte-zx297520v3-crm.c F: include/dt-bindings/clock/zte,zx297520v3-clk.h F: include/dt-bindings/phy/zte,zx297520v3-topcrm.h F: include/dt-bindings/reset/zte,zx297520v3-reset.h diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 35f6e9b76d05..c0c7e83487f4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -2572,5 +2572,16 @@ config MFD_MAX7360 additional drivers must be enabled in order to use the functionality of the device. +config MFD_ZTE_ZX297520V3_CRM + tristate "ZTE zx297520v3 Clock and Reset Manager" + select MFD_CORE + default SOC_ZX297520V3 + help + Say yes here to enable the driver for the ZTE zx297520v3 clock and + reset manager MFD driver. This driver provides the host device for + the clock and reset drivers and is required to boot the SoC. You + will also need to enable CLK_ZTE_ZX297520V3 and RESET_ZTE_ZX297520V3 + to build the actual clock and reset child drivers. + endmenu endif diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index dd4bb7e77c33..4f6a78170ac5 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -303,3 +303,5 @@ obj-$(CONFIG_MFD_RSMU_SPI) += rsmu_spi.o rsmu_core.o obj-$(CONFIG_MFD_UPBOARD_FPGA) += upboard-fpga.o obj-$(CONFIG_MFD_LOONGSON_SE) += loongson-se.o + +obj-$(CONFIG_MFD_ZTE_ZX297520V3_CRM) += zte-zx297520v3-crm.o diff --git a/drivers/mfd/zte-zx297520v3-crm.c b/drivers/mfd/zte-zx297520v3-crm.c new file mode 100644 index 000000000000..37cd0c14680e --- /dev/null +++ b/drivers/mfd/zte-zx297520v3-crm.c @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2026 Stefan Dösinger + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +enum zx297520v3_mfd_type { + ZX297520V3_MFD_INVALID = 0, + ZX297520V3_MFD_TOPCRM, + ZX297520V3_MFD_MATRIXCRM, + ZX297520V3_MFD_LSPCRM, +}; + +static const struct mfd_cell zx297520v3_topcrm_cells[] = { + { + .name = "zx297520v3-topclk", + }, + { + .name = "zx297520v3-topreset", + }, + { + .name = "reboot", + .of_compatible = "syscon-reboot", + }, + { + .name = "zx297520v3-usb-phy", + }, +}; + +static const struct mfd_cell zx297520v3_matrixcrm_cells[] = { + { + .name = "zx297520v3-matrixclk", + }, + { + .name = "zx297520v3-matrixreset", + }, + /* A set of hwlock controllers is found here as well, but no driver is implemented yet */ +}; + +static const struct mfd_cell zx297520v3_lspcrm_cells[] = { + { + .name = "zx297520v3-lspclk", + }, + { + .name = "zx297520v3-lspreset", + }, +}; + +static int zx297520v3_crm_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + enum zx297520v3_mfd_type type; + const struct mfd_cell *cells; + struct reset_control *rst; + unsigned int num_cells; + struct clk *pclk; + + type = (enum zx297520v3_mfd_type)of_device_get_match_data(dev); + switch (type) { + case ZX297520V3_MFD_TOPCRM: + cells = zx297520v3_topcrm_cells; + num_cells = ARRAY_SIZE(zx297520v3_topcrm_cells); + break; + + case ZX297520V3_MFD_MATRIXCRM: + cells = zx297520v3_matrixcrm_cells; + num_cells = ARRAY_SIZE(zx297520v3_matrixcrm_cells); + break; + + case ZX297520V3_MFD_LSPCRM: + cells = zx297520v3_lspcrm_cells; + num_cells = ARRAY_SIZE(zx297520v3_lspcrm_cells); + + pclk = devm_clk_get_enabled(dev, "pclk"); + if (IS_ERR(pclk)) + return dev_err_probe(dev, PTR_ERR(pclk), "Could not get pclk\n"); + + rst = devm_reset_control_get_exclusive_deasserted(dev, NULL); + if (IS_ERR(rst)) + return dev_err_probe(dev, PTR_ERR(rst), "Could not get reset\n"); + break; + + default: + return -ENODEV; + } + + return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, cells, num_cells, NULL, 0, NULL); +} + +static const struct of_device_id of_match_zx297520v3_crm[] = { + { .compatible = "zte,zx297520v3-topcrm", .data = (void *)ZX297520V3_MFD_TOPCRM }, + { .compatible = "zte,zx297520v3-matrixcrm", .data = (void *)ZX297520V3_MFD_MATRIXCRM }, + { .compatible = "zte,zx297520v3-lspcrm", .data = (void *)ZX297520V3_MFD_LSPCRM }, + { } +}; +MODULE_DEVICE_TABLE(of, of_match_zx297520v3_crm); + +static struct platform_driver zx297520v3_crm = { + .probe = zx297520v3_crm_probe, + .driver = { + .name = "zx297520v3-crm", + .of_match_table = of_match_zx297520v3_crm, + }, +}; +module_platform_driver(zx297520v3_crm); + +MODULE_AUTHOR("Stefan Dösinger "); +MODULE_DESCRIPTION("ZTE zx297520v3 CRM MFD host driver"); +MODULE_LICENSE("GPL"); -- 2.54.0