Linux kernel and device drivers for NXP i.MX platforms
 help / color / mirror / Atom feed
From: Laurentiu Mihalcea <laurentiumihalcea111@gmail.com>
To: Abel Vesa <abelvesa@kernel.org>, Peng Fan <peng.fan@nxp.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	Fabio Estevam <festevam@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Daniel Baluta <daniel.baluta@nxp.com>,
	Shengjiu Wang <shengjiu.wang@nxp.com>
Cc: linux-clk@vger.kernel.org, imx@lists.linux.dev,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Pengutronix Kernel Team <kernel@pengutronix.de>
Subject: [PATCH v2 6/8] reset: imx8mp-audiomix: Extend the driver usage
Date: Fri, 17 Oct 2025 04:20:23 -0700	[thread overview]
Message-ID: <20251017112025.11997-7-laurentiumihalcea111@gmail.com> (raw)
In-Reply-To: <20251017112025.11997-1-laurentiumihalcea111@gmail.com>

From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>

Some NXP SoCs integrate one or more, per-subsystem, block control IPs,
which allow users to control the assertion and de-assertion of the
reset lines tied to some peripherals present in said subsystems. Some
examples of such SoCs include i.MX8MP with AUDIOMIX block control and
i.MX8ULP with SIM LPAV.

Some of the aformentioned block control IPs exhibit a common pattern with
respect to the assertion and de-assertion of the reset lines. Namely, the
user is able to control the state of the reset line by toggling a bit from
one of the IP's registers.

Linux can take advantage of this pattern and, instead of having one driver
for each block control IP, a single, more generic driver could be used.

To allow this to happen, the previous approach, in which a single reset
map is used, is replaced by a per-driver approach, in which each auxiliary
device driver holds a reference to a certain reset map.

Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
---
 drivers/reset/reset-imx8mp-audiomix.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/reset/reset-imx8mp-audiomix.c b/drivers/reset/reset-imx8mp-audiomix.c
index c74ce6e04177..c370913107f5 100644
--- a/drivers/reset/reset-imx8mp-audiomix.c
+++ b/drivers/reset/reset-imx8mp-audiomix.c
@@ -24,7 +24,12 @@ struct imx8mp_reset_map {
 	bool active_low;
 };
 
-static const struct imx8mp_reset_map reset_map[] = {
+struct imx8mp_reset_info {
+	const struct imx8mp_reset_map *map;
+	int num_lines;
+};
+
+static const struct imx8mp_reset_map imx8mp_reset_map[] = {
 	[IMX8MP_AUDIOMIX_EARC_RESET] = {
 		.offset	= IMX8MP_AUDIOMIX_EARC_RESET_OFFSET,
 		.mask = BIT(0),
@@ -45,10 +50,16 @@ static const struct imx8mp_reset_map reset_map[] = {
 	},
 };
 
+static const struct imx8mp_reset_info imx8mp_reset_info = {
+	.map = imx8mp_reset_map,
+	.num_lines = ARRAY_SIZE(imx8mp_reset_map),
+};
+
 struct imx8mp_audiomix_reset {
 	struct reset_controller_dev rcdev;
 	void __iomem *base;
 	struct regmap *regmap;
+	const struct imx8mp_reset_info *rinfo;
 };
 
 static struct imx8mp_audiomix_reset *to_imx8mp_audiomix_reset(struct reset_controller_dev *rcdev)
@@ -60,6 +71,7 @@ static int imx8mp_audiomix_update(struct reset_controller_dev *rcdev,
 				  unsigned long id, bool assert)
 {
 	struct imx8mp_audiomix_reset *priv = to_imx8mp_audiomix_reset(rcdev);
+	const struct imx8mp_reset_map *reset_map = priv->rinfo->map;
 	unsigned int mask, offset, active_low, shift, val;
 
 	mask = reset_map[id].mask;
@@ -144,7 +156,8 @@ static int imx8mp_audiomix_reset_probe(struct auxiliary_device *adev,
 		return -ENOMEM;
 
 	priv->rcdev.owner     = THIS_MODULE;
-	priv->rcdev.nr_resets = ARRAY_SIZE(reset_map);
+	priv->rinfo           = (const struct imx8mp_reset_info *)id->driver_data;
+	priv->rcdev.nr_resets = priv->rinfo->num_lines;
 	priv->rcdev.ops       = &imx8mp_audiomix_reset_ops;
 	priv->rcdev.of_node   = dev->parent->of_node;
 	priv->rcdev.dev	      = dev;
@@ -168,6 +181,7 @@ static int imx8mp_audiomix_reset_probe(struct auxiliary_device *adev,
 static const struct auxiliary_device_id imx8mp_audiomix_reset_ids[] = {
 	{
 		.name = "clk_imx8mp_audiomix.reset",
+		.driver_data = (kernel_ulong_t)&imx8mp_reset_info,
 	},
 	{ }
 };
-- 
2.43.0


  parent reply	other threads:[~2025-10-17 11:21 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-17 11:20 [PATCH v2 0/8] Add support for i.MX8ULP's SIM LPAV Laurentiu Mihalcea
2025-10-17 11:20 ` [PATCH v2 1/8] reset: imx8mp-audiomix: Fix bad mask values Laurentiu Mihalcea
2025-10-17 14:28   ` Frank Li
2025-10-20 10:57     ` Laurentiu Mihalcea
2025-10-24  3:36   ` Shengjiu Wang
2025-10-27  9:54   ` Daniel Baluta
2025-10-17 11:20 ` [PATCH v2 2/8] dt-bindings: clock: document 8ULP's SIM LPAV Laurentiu Mihalcea
2025-10-17 14:33   ` Frank Li
2025-10-19 10:04     ` Krzysztof Kozlowski
2025-10-17 14:59   ` Frank Li
2025-10-19 10:05     ` Krzysztof Kozlowski
2025-10-20 15:22       ` Frank Li
2025-10-20 15:50         ` Krzysztof Kozlowski
2025-10-22 12:47         ` Laurentiu Mihalcea
2025-10-19 10:03   ` Krzysztof Kozlowski
2025-10-22 14:08   ` Peng Fan
2025-10-22 16:16     ` Frank Li
2025-10-27 15:17     ` Laurentiu Mihalcea
2025-10-27  9:55   ` Daniel Baluta
2025-10-17 11:20 ` [PATCH v2 3/8] clk: imx: add driver for imx8ulp's sim lpav Laurentiu Mihalcea
2025-10-17 14:41   ` Frank Li
2025-10-20 11:40     ` Laurentiu Mihalcea
2025-10-18  4:15   ` kernel test robot
2025-10-18 11:33   ` kernel test robot
2025-10-18 15:55   ` kernel test robot
2025-10-22 14:03   ` Peng Fan
2025-10-23  7:59     ` Peng Fan
2025-10-27  9:50     ` Laurentiu Mihalcea
2025-10-17 11:20 ` [PATCH v2 4/8] reset: imx8mp-audiomix: Drop unneeded macros Laurentiu Mihalcea
2025-10-17 14:44   ` Frank Li
2025-10-27 10:02     ` Daniel Baluta
2025-10-17 11:20 ` [PATCH v2 5/8] reset: imx8mp-audiomix: Switch to using regmap API Laurentiu Mihalcea
2025-10-17 14:49   ` Frank Li
2025-10-22 11:35     ` Laurentiu Mihalcea
2025-10-17 11:20 ` Laurentiu Mihalcea [this message]
2025-10-17 14:56   ` [PATCH v2 6/8] reset: imx8mp-audiomix: Extend the driver usage Frank Li
2025-10-20 11:59     ` Laurentiu Mihalcea
2025-10-20 15:08       ` Frank Li
2025-10-20 14:06     ` Laurentiu Mihalcea
2025-10-20 14:52       ` Frank Li
2025-10-20 14:18     ` Daniel Baluta
2025-10-17 11:20 ` [PATCH v2 7/8] reset: imx8mp-audiomix: Support i.MX8ULP SIM LPAV Laurentiu Mihalcea
2025-10-17 14:57   ` Frank Li
2025-10-20 14:29     ` Laurentiu Mihalcea
2025-10-20 14:50       ` Frank Li
2025-10-21 13:16         ` Laurentiu Mihalcea
2025-10-21 15:06           ` Frank Li
2025-10-17 11:20 ` [PATCH v2 8/8] arm64: dts: imx8ulp: add sim lpav node Laurentiu Mihalcea
2025-10-27 10:07   ` Daniel Baluta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251017112025.11997-7-laurentiumihalcea111@gmail.com \
    --to=laurentiumihalcea111@gmail.com \
    --cc=abelvesa@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=daniel.baluta@nxp.com \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=p.zabel@pengutronix.de \
    --cc=peng.fan@nxp.com \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=shengjiu.wang@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox