From nobody Sat Jun 13 17:02:38 2026 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 86A03402BA2; Wed, 6 May 2026 09:58:11 +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=1778061491; cv=none; b=W61GQ4AcViBIpNEw4YRRbk5Yjk9jY0Xdb7/gptpGQ3PZxCI3v0pQIuuerqtW4qwBQcBI9ULSG65xHrtU9rN+J3CjxClqh2npslhmo+WySEArs4CW+p3iZfKWt+wVEeanq/afylfxe53UrMEsMJ7OmRXTvd8vE+A9+JQo8U9qSG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778061491; c=relaxed/simple; bh=nS+w53mgZDDz5/WHgJtZUFy3p+Gm1mncA2Mp8hJAH74=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YV8gxFaSVr+rQSMW/AYYT7DrAGy9RJDnusj/PPRZ62DfzK2G4iGN0/N+A8ZtnpbQZTid9oFnc1Feav+C+YMfTV4BK1ZNvv9K+SbySw0px3Za6BHJZAYH3Fsw+cD62inqSlk1KN574/1g0D4Kg5JUZxpEr8pWC4JRadcitFpaM1U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XNXkQku1; 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="XNXkQku1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC201C2BCC9; Wed, 6 May 2026 09:58:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778061490; bh=nS+w53mgZDDz5/WHgJtZUFy3p+Gm1mncA2Mp8hJAH74=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XNXkQku1uHHdKKAtHRjXNdS25Uae4Aqi3pNq5aNNDiyT2Om7uGSnVXCw8dOCAWQKh bKtCO3LCuYUICNBzWGpN9QXT5o7YJPcFe/eZyh02x03CuhfSEVLNlhPmsGCQAULxTk 7Xa8mbzQjPaAXrDIeq5A8hGur2yo+iDkeBzIvuR/3U+50vJ/ywNyfr4YfFznDmIDEq Up3hQJpqxC8Jn1WWogcn5xF2FTI9kEnOT762Z2PUEOghRsbpW3DE7IhTGKAQLurCYb zb233IsLBDidkAwMIQ6YZILbIS/5bOjpS3ZVYZ7g94WoNN3geDR/WHRCm7S5oevW0l vuKKXk8jx33SQ== From: Conor Dooley To: Linus Walleij Cc: conor@kernel.org, Conor Dooley , Yixun Lan , Troy Mitchell , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Subject: [RFC v1 1/4] pinctrl: generic: change signature of pinctrl_generic_to_map() to pass void data Date: Wed, 6 May 2026 10:57:39 +0100 Message-ID: <20260506-impotency-untagged-2b3d46b57039@spud> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260506-energize-dramatize-051909e54256@spud> References: <20260506-energize-dramatize-051909e54256@spud> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2497; i=conor.dooley@microchip.com; h=from:subject:message-id; bh=t1tswcXW1xGoS+RayKsRaGJ8HHS0FkJbWLql/CcOziI=; b=owGbwMvMwCVWscWwfUFT0iXG02pJDJm/BSaXfFPfffymmOxen8mpidxeynlPvk6YWfI24PrhW 60m13XudJSyMIhxMciKKbIk3u5rkVr/x2WHc89bmDmsTCBDGLg4BWAi17YzMvxXXe7/pf72wa03 T0jExSs8/PpVSzVs7w9l5ec+R7J5ymYx/NOM/ta08MfmounxD0rWsbS/mfBd+Opf15pDag6Hdj+ bvIEVAA== X-Developer-Key: i=conor.dooley@microchip.com; a=openpgp; fpr=F9ECA03CF54F12CD01F1655722E2C55B37CF380C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Conor Dooley Signed-off-by: Conor Dooley --- drivers/pinctrl/pinconf.h | 6 ++---- drivers/pinctrl/pinctrl-generic.c | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/pinctrl/pinconf.h b/drivers/pinctrl/pinconf.h index 83f2d00c732e1..5d99fef27657f 100644 --- a/drivers/pinctrl/pinconf.h +++ b/drivers/pinctrl/pinconf.h @@ -171,8 +171,7 @@ int pinctrl_generic_to_map(struct pinctrl_dev *pctldev,= struct device_node *pare struct device_node *np, struct pinctrl_map **maps, unsigned int *num_maps, unsigned int *num_reserved_maps, const char **group_name, unsigned int ngroups, - const char **functions, unsigned int *pins, - unsigned int npins); + void *data, unsigned int *pins, unsigned int npins); #else static inline int pinctrl_generic_pins_function_dt_node_to_map(struct pinctrl_dev *pctldev, @@ -188,8 +187,7 @@ pinctrl_generic_to_map(struct pinctrl_dev *pctldev, str= uct device_node *parent, struct device_node *np, struct pinctrl_map **maps, unsigned int *num_maps, unsigned int *num_reserved_maps, const char **group_name, unsigned int ngroups, - const char **functions, unsigned int *pins, - unsigned int npins) + void *data, unsigned int *pins, unsigned int npins) { return -ENOTSUPP; } diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-ge= neric.c index 76670aef62da4..6a13fd4eea65b 100644 --- a/drivers/pinctrl/pinctrl-generic.c +++ b/drivers/pinctrl/pinctrl-generic.c @@ -21,8 +21,7 @@ int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, s= truct device_node *pare struct device_node *np, struct pinctrl_map **maps, unsigned int *num_maps, unsigned int *num_reserved_maps, const char **group_names, unsigned int ngroups, - const char **functions, unsigned int *pins, - unsigned int npins) + void *data, unsigned int *pins, unsigned int npins) { struct device *dev =3D pctldev->dev; unsigned int num_configs; @@ -45,7 +44,7 @@ int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, s= truct device_node *pare if (ret < 0) return ret; =20 - ret =3D pinctrl_generic_add_group(pctldev, group_name, pins, npins, funct= ions); + ret =3D pinctrl_generic_add_group(pctldev, group_name, pins, npins, data); if (ret < 0) return dev_err_probe(dev, ret, "failed to add group %s: %d\n", group_name, ret); --=20 2.53.0 From nobody Sat Jun 13 17:02:38 2026 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 9678231D375; Wed, 6 May 2026 09:58:13 +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=1778061493; cv=none; b=eVeDEiHJb6MWmwd4krPURWHvOrVFX6sNv3FVBPBLBj5mWrs3/BnQY30ByfqXdfkF04PVNpt8qPUg6fXUpB7zhQjn72Cowr0dz4Ze0W2iJSe2DAlYSYZSwGz/9ENHsNIrO+YH/Fo3I4IGGl6J2yAcNClyF/GBOjNHcOEIGWi7Caw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778061493; c=relaxed/simple; bh=TVBXqFY3A1biRCKkk5PCThVDRBq0+hrygrveT6A+Tc8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j9Fegx7jmyEfecKkhZeDEVW9fZhOgo7I4SC4XDym3L/qkP5+0ZXmgdz7NC6E8Su2oifCcvVsZI2ZBoZ072vJpksves9M3aGwHj11s3OCaMyemfla3CWUkD0oAW5vG8gKmcFD3nwiAY/OFf4iGkU+1DK0dop/J4naa8N3Rt/umL8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Cw6BHAn2; 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="Cw6BHAn2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05979C2BCC4; Wed, 6 May 2026 09:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778061492; bh=TVBXqFY3A1biRCKkk5PCThVDRBq0+hrygrveT6A+Tc8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cw6BHAn2KmedwdcWVbFXyvNcRPQEIRONAyjCBbZ+epA5/Sa7T/Ud1NCNhWle/9UHx jfpgSRECQquqSvlIA4GW+QdRpHLHLSGyC2K+fgaLI+ANLYDYltVxEC+bHRKVYsFMuw 3q+lH+i4aruIE3OIvHDNUs5eFcL3WctXZd6MKbJ6iOfMnDnc8dpSBldIUByhKmz2Wp hQydrlJrIHnKguASji1EU9DHOgI/CxHSCEl09PrTWXFe1yUpvjpA9AuMGnJ98aH0Mk 1AKWaJNIs8AEkeqfU/S7B/opRpgv/aGx1fuRnbLihUaiKtKBJutorUf8jBZjnrjdfc AjxRXWJA2Eypg== From: Conor Dooley To: Linus Walleij Cc: conor@kernel.org, Conor Dooley , Yixun Lan , Troy Mitchell , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Subject: [RFC v1 2/4] pinctrl: add new generic groups/function creation function for pinmux Date: Wed, 6 May 2026 10:57:40 +0100 Message-ID: <20260506-matted-prominent-6352c26a65a6@spud> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260506-energize-dramatize-051909e54256@spud> References: <20260506-energize-dramatize-051909e54256@spud> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5876; i=conor.dooley@microchip.com; h=from:subject:message-id; bh=IAVHCqBTU/I3FABmI0dhZe5pmDWDVP85YHHq0Hd5uPY=; b=owGbwMvMwCVWscWwfUFT0iXG02pJDJm/BSazdPHMnDO9p/DhFo6FG3kW7/d03HzCUur7NR85/ 50eJ/Vfd5SyMIhxMciKKbIk3u5rkVr/x2WHc89bmDmsTCBDGLg4BWAiZ6UY/pk5BU3UcHJ8XKv+ +Od6bc1NDYpNV/Mre58flTEp7gvfc5vhr7TJSa7G52+PuUxQ5Yh+tEjmpcqam1mKrSvzuyx+RFb +5AMA X-Developer-Key: i=conor.dooley@microchip.com; a=openpgp; fpr=F9ECA03CF54F12CD01F1655722E2C55B37CF380C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Conor Dooley Signed-off-by: Conor Dooley --- drivers/pinctrl/pinconf.h | 14 ++++ drivers/pinctrl/pinctrl-generic.c | 134 ++++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) diff --git a/drivers/pinctrl/pinconf.h b/drivers/pinctrl/pinconf.h index 5d99fef27657f..30c42d81e8829 100644 --- a/drivers/pinctrl/pinconf.h +++ b/drivers/pinctrl/pinconf.h @@ -167,6 +167,11 @@ int pinctrl_generic_pins_function_dt_node_to_map(struc= t pinctrl_dev *pctldev, struct pinctrl_map **maps, unsigned int *num_maps); =20 +int pinctrl_generic_pinmux_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np, + struct pinctrl_map **maps, + unsigned int *num_maps); + int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, struct device_node= *parent, struct device_node *np, struct pinctrl_map **maps, unsigned int *num_maps, unsigned int *num_reserved_maps, @@ -182,6 +187,15 @@ pinctrl_generic_pins_function_dt_node_to_map(struct pi= nctrl_dev *pctldev, return -ENOTSUPP; } =20 +static inline int +pinctrl_generic_pinmux_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np, + struct pinctrl_map **maps, + unsigned int *num_maps) +{ + return -ENOTSUPP; +} + static inline int pinctrl_generic_to_map(struct pinctrl_dev *pctldev, struct device_node *pa= rent, struct device_node *np, struct pinctrl_map **maps, diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-ge= neric.c index 6a13fd4eea65b..69df211f6b964 100644 --- a/drivers/pinctrl/pinctrl-generic.c +++ b/drivers/pinctrl/pinctrl-generic.c @@ -202,3 +202,137 @@ int pinctrl_generic_pins_function_dt_node_to_map(stru= ct pinctrl_dev *pctldev, return 0; } EXPORT_SYMBOL_GPL(pinctrl_generic_pins_function_dt_node_to_map); + + +static int pinctrl_generic_pinmux_dt_subnode_to_map(struct pinctrl_dev *pc= tldev, + struct device_node *parent, + struct device_node *np, + struct pinctrl_map **maps, + unsigned int *num_maps, + unsigned int *num_reserved_maps, + const char **group_names, + unsigned int ngroups) +{ + struct device *dev =3D pctldev->dev; + unsigned int *pins, *muxes; + int npins, ret; + + npins =3D of_property_count_u32_elems(np, "pinmux"); + + if (npins < 1) { + dev_err(dev, "invalid pinctrl group %pOFn.%pOFn %d\n", + parent, np, npins); + return npins; + } + + pins =3D devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL); + if (!pins) + return -ENOMEM; + + muxes =3D devm_kcalloc(dev, npins, sizeof(*muxes), GFP_KERNEL); + if (!muxes) + return -ENOMEM; + + for (int i =3D 0; i < npins; i++) { + unsigned int pinmux; + + ret =3D of_property_read_u32_index(np, "pinmux", i, &pinmux); + if (ret) + return ret; + + pins[i] =3D pinmux >> 16; + muxes[i] =3D pinmux & GENMASK(15, 0); + } + + return pinctrl_generic_to_map(pctldev, parent, np, maps, num_maps, + num_reserved_maps, group_names, ngroups, + muxes, pins, npins); +} + +/* + * For platforms that do not define groups or functions in the driver, but + * instead use the devicetree to describe them. This function will, unlike + * pinconf_generic_dt_node_to_map() etc which rely on driver defined groups + * and functions, create them in addition to parsing pinconf properties and + * adding mappings. + * + * It assumes that the upper 16 bits of the pinmux items contain the pin + * and the lower 16 the mux setting. + */ +int pinctrl_generic_pinmux_dt_node_to_map(struct pinctrl_dev *pctldev, + struct device_node *np, + struct pinctrl_map **maps, + unsigned int *num_maps) +{ + struct device *dev =3D pctldev->dev; + struct device_node *child_np; + const char **group_names; + unsigned int num_reserved_maps =3D 0; + int ngroups =3D 0; + int ret; + + *maps =3D NULL; + *num_maps =3D 0; + + /* + * Check if this is actually the pinmux node, or a parent containing + * multiple pinmux nodes. + */ + if (!of_property_present(np, "pinmux")) + goto parent; + + group_names =3D devm_kcalloc(dev, 1, sizeof(*group_names), GFP_KERNEL); + if (!group_names) + return -ENOMEM; + + ret =3D pinctrl_generic_pinmux_dt_subnode_to_map(pctldev, np, np, + maps, num_maps, + &num_reserved_maps, + group_names, + ngroups); + if (ret) { + pinctrl_utils_free_map(pctldev, *maps, *num_maps); + return dev_err_probe(dev, ret, "error figuring out mappings for %s\n", n= p->name); + } + + ret =3D pinmux_generic_add_function(pctldev, np->name, group_names, 1, NU= LL); + if (ret < 0) { + pinctrl_utils_free_map(pctldev, *maps, *num_maps); + return dev_err_probe(dev, ret, "error adding function %s\n", np->name); + } + + return 0; + +parent: + for_each_available_child_of_node(np, child_np) + ngroups +=3D 1; + + group_names =3D devm_kcalloc(dev, ngroups, sizeof(*group_names), GFP_KERN= EL); + if (!group_names) + return -ENOMEM; + + ngroups =3D 0; + for_each_available_child_of_node_scoped(np, child_np) { + ret =3D pinctrl_generic_pinmux_dt_subnode_to_map(pctldev, np, child_np, + maps, num_maps, + &num_reserved_maps, + group_names, + ngroups); + if (ret) { + pinctrl_utils_free_map(pctldev, *maps, *num_maps); + return dev_err_probe(dev, ret, "error figuring out mappings for %s\n", + np->name); + } + + ngroups++; + } + + ret =3D pinmux_generic_add_function(pctldev, np->name, group_names, ngrou= ps, NULL); + if (ret < 0) { + pinctrl_utils_free_map(pctldev, *maps, *num_maps); + return dev_err_probe(dev, ret, "error adding function %s\n", np->name); + } + + return 0; +} +EXPORT_SYMBOL_GPL(pinctrl_generic_pinmux_dt_node_to_map); --=20 2.53.0 From nobody Sat Jun 13 17:02:38 2026 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 B14CA3FAE0C; Wed, 6 May 2026 09:58:15 +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=1778061495; cv=none; b=J5zS/R0/G20CA6puxC3QsZa/E13AaJPo4HcpA7o2A4Ej58UbN7Ge244JhPDsntN0ZsfcwShP8wyNXfB9XdPRiPRPEXYqSK1wcXhHDyAOH8eEfudcugjM/ToJsS/pTndIbG6jd4UOfA34mxWbSGHTO0tXy7dpfV3tJonZ6+pitK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778061495; c=relaxed/simple; bh=swaIO29uhHgaslA4Hb1JIgdHX4IRPVdujCyvQCSGJPk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RMz1Wh33e+43cWUharXJQCd7625d11thbMeBnbiEoVY2KAOejDYsMkaZNhmdPSxI4giEhjgjcFwBJNHZ9Xd4oCvtCb7koOEDdFIMmtHjiibjab+IqMIkpD5dZ4cW6OIy5F+5XZin2BcaZ/K651/oOqAdcgdSDLyjLqXjbov0Nrs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sr9dxcpK; 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="sr9dxcpK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33148C2BCB8; Wed, 6 May 2026 09:58:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778061495; bh=swaIO29uhHgaslA4Hb1JIgdHX4IRPVdujCyvQCSGJPk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sr9dxcpKbkrPjay+PbxV7TxKARgnQeSvNiWdxHqqwTNyrWnN71FmZ69sBQgaLvVQf jfhZGtsQFIsRLl9k9OgRgPasiztvdv+jBiqTq/tE3N++VVFnbEA0A/ScgMxM5z2sl5 Lp8N0kf+l218jEg7tFKPLbxLeN61EcUyvtV+ayG0qiG5LVUkhIwpdaCzCbcLJGqAFP SfwNY73hVH75Kab2ugZt3wkdwD5h2+LvAyOO2IeTRnNiuanHljXzrPGtD8GjTDZsqk 4WzHdhqekeI1A3CusbSWknRQ0nbkXvEVrWedGSn0fPEpinzyGbRdKeJBzY9aWjdpLa 1LlIf1TfxLL8Q== From: Conor Dooley To: Linus Walleij Cc: conor@kernel.org, Conor Dooley , Yixun Lan , Troy Mitchell , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Subject: [RFC v1 3/4] pinctrl: spacemit: delete check_power() Date: Wed, 6 May 2026 10:57:41 +0100 Message-ID: <20260506-backtalk-pregnant-ff4cbd27b4d0@spud> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260506-energize-dramatize-051909e54256@spud> References: <20260506-energize-dramatize-051909e54256@spud> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2013; i=conor.dooley@microchip.com; h=from:subject:message-id; bh=f33zeKL5li7qyIF7zuSgaFGlrhBhLaxwN0tJ5RiB2fs=; b=owGbwMvMwCVWscWwfUFT0iXG02pJDJm/BSa/fc7zKjvqntBa9fW+u13t5l559yMkpVm8yHaN2 g3T7R9CO0pZGMS4GGTFFFkSb/e1SK3/47LDuectzBxWJpAhDFycAjCRUl9Ghkb7K6GySfZHrVbE +nLKtcfcW7eaP9Uu1v5jRfmelg1TrBkZvodaMm5n71KetaAucPcL7fz3XefyfAtz+vpX7zLwdzf kBQA= X-Developer-Key: i=conor.dooley@microchip.com; a=openpgp; fpr=F9ECA03CF54F12CD01F1655722E2C55B37CF380C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Conor Dooley AFAICT, this is pointless because generate_config performs this check too. Signed-off-by: Conor Dooley --- drivers/pinctrl/spacemit/pinctrl-k1.c | 37 --------------------------- 1 file changed, 37 deletions(-) diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacem= it/pinctrl-k1.c index 62cab6f6cd0a8..41d8a34bc386b 100644 --- a/drivers/pinctrl/spacemit/pinctrl-k1.c +++ b/drivers/pinctrl/spacemit/pinctrl-k1.c @@ -409,38 +409,6 @@ static inline u32 spacemit_get_drive_strength_mA(enum = spacemit_pin_io_type type, } } =20 -static int spacemit_pctrl_check_power(struct pinctrl_dev *pctldev, - struct device_node *dn, - struct spacemit_pin_mux_config *pinmuxs, - int num_pins, const char *grpname) -{ - struct spacemit_pinctrl *pctrl =3D pinctrl_dev_get_drvdata(pctldev); - struct device *dev =3D pctrl->dev; - enum spacemit_pin_io_type type; - u32 power =3D 0, i; - - of_property_read_u32(dn, "power-source", &power); - - for (i =3D 0; i < num_pins; i++) { - type =3D spacemit_to_pin_io_type(pinmuxs[i].pin); - - if (type !=3D IO_TYPE_EXTERNAL) - continue; - - switch (power) { - case PIN_POWER_STATE_1V8: - case PIN_POWER_STATE_3V3: - break; - default: - dev_err(dev, "group %s has unsupported power\n", - grpname); - return -ENOTSUPP; - } - } - - return 0; -} - static void spacemit_set_io_pwr_domain(struct spacemit_pinctrl *pctrl, const struct spacemit_pin *spin, const enum spacemit_pin_io_type type) @@ -548,11 +516,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctr= l_dev *pctldev, return dev_err_probe(dev, -ENODEV, "failed to get pin %d\n", pins[i]); } =20 - ret =3D spacemit_pctrl_check_power(pctldev, child, pinmuxs, - npins, grpname); - if (ret < 0) - return ret; - map[nmaps].type =3D PIN_MAP_TYPE_MUX_GROUP; map[nmaps].data.mux.function =3D np->name; map[nmaps].data.mux.group =3D grpname; --=20 2.53.0 From nobody Sat Jun 13 17:02:38 2026 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 E47CF3DC4A3; Wed, 6 May 2026 09:58:17 +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=1778061498; cv=none; b=Mypo4EzqjemjblwtLDc1mkm5j96aA1RKZ5+wv1khGyxeDY7HfgOIqPOxjWGBSLJ0XQk0bVixYFRnnGnfFrLDtT3/h+p2soWDm8Uevy9i5Oqh5TBdHgMLJlOf2/iBNYkMgqBc8HdSPedxJpU/iJi5iCD7UOHzP14a/WoVmkxSCJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778061498; c=relaxed/simple; bh=v2Z43waBNb1sScGZkywyBPPfu9AJTH0bPEJbypNx/9Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sl+/dOmKy+Za8vTBmZceHymoPnVua7fF1AzHTqYuAKEEr7/0298YXje77VYMa9oadMzpWuxW0YlQhFtWPVshcsGhVVcYv2oOZRTOZ38W3vukMxtZxkccAJccXlp4yA4tN+rYIIpmh9BDXxH+iOb8Mh9Rq6KMjLQYgaNFIt8G/RU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WG44oO9T; 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="WG44oO9T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60557C2BCC9; Wed, 6 May 2026 09:58:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1778061497; bh=v2Z43waBNb1sScGZkywyBPPfu9AJTH0bPEJbypNx/9Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WG44oO9TMvF7kiD51Etx91un/RdtZOeMoteCnQgQFqUaqeA25FD+DAHQIemqgDZng 56v2HgLykir7ilGwY9wv7O7zsRQvLUgh5yDL6057DboKTr1t3Py+T+6fRjT0wPJsW8 CdoPtl1bodVpxIaCoadImuzAM6g7WIWpVpbgBiwlZQpAqExNBrz1j8fUi9MLTQVy4p yXc1RAc8fUEGvdOwVurE48hcOFFCAwlnvPWr1Co5fXGmL1rkzzS/f9hVLCB+UTHR0X kiT5vg85L0QLRi+TpixO/5bbuxbl+WQzFAIoaf9HUpWupesFCATXTu2Wvyob4pHuh8 UqMinIs5doyBQ== From: Conor Dooley To: Linus Walleij Cc: conor@kernel.org, Conor Dooley , Yixun Lan , Troy Mitchell , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Subject: [RFC v1 4/4] pinctrl: spacemit: move over to generic pinmux dt_node_to_map implementation Date: Wed, 6 May 2026 10:57:42 +0100 Message-ID: <20260506-womb-bonus-68a236490084@spud> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260506-energize-dramatize-051909e54256@spud> References: <20260506-energize-dramatize-051909e54256@spud> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3606; i=conor.dooley@microchip.com; h=from:subject:message-id; bh=EBo7vsj45Fm6ts8vxVZqmKyxIs0BuENJUV4vbK7h45M=; b=owGbwMvMwCVWscWwfUFT0iXG02pJDJm/BSb39VRuPlyx7dTVybtPFKcGfqt8LVWl+3qm9zZDQ Z9Oix2nO0pZGMS4GGTFFFkSb/e1SK3/47LDuectzBxWJpAhDFycAjARz4+MDPvXrE5ff0aqJjZ+ 72rz29sKlLcx7hURWFDwKJSjs+PzSw6Gf4Y7Z25c31Yd73LtiJXD7brJorYHdHd7HHn/8v2O0Gw XcSYA X-Developer-Key: i=conor.dooley@microchip.com; a=openpgp; fpr=F9ECA03CF54F12CD01F1655722E2C55B37CF380C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Conor Dooley Signed-off-by: Conor Dooley --- drivers/pinctrl/spacemit/pinctrl-k1.c | 33 ++++++++++----------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacem= it/pinctrl-k1.c index 41d8a34bc386b..c90b6ccfce2ea 100644 --- a/drivers/pinctrl/spacemit/pinctrl-k1.c +++ b/drivers/pinctrl/spacemit/pinctrl-k1.c @@ -114,11 +114,6 @@ struct spacemit_pinctrl_data { const struct spacemit_pinctrl_dconf *dconf; }; =20 -struct spacemit_pin_mux_config { - const struct spacemit_pin *pin; - u32 config; -}; - /* map pin id to pinctrl register offset, refer MFPR definition */ static unsigned int spacemit_k1_pin_to_offset(unsigned int pin) { @@ -474,7 +469,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl= _dev *pctldev, ngroups =3D 0; guard(mutex)(&pctrl->mutex); for_each_available_child_of_node_scoped(np, child) { - struct spacemit_pin_mux_config *pinmuxs; unsigned int config, *pins; int i, npins; =20 @@ -497,10 +491,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctr= l_dev *pctldev, if (!pins) return -ENOMEM; =20 - pinmuxs =3D devm_kcalloc(dev, npins, sizeof(*pinmuxs), GFP_KERNEL); - if (!pinmuxs) - return -ENOMEM; - for (i =3D 0; i < npins; i++) { ret =3D of_property_read_u32_index(child, "pinmux", i, &config); @@ -509,11 +499,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctr= l_dev *pctldev, return -EINVAL; =20 pins[i] =3D spacemit_dt_get_pin(config); - pinmuxs[i].config =3D config; - pinmuxs[i].pin =3D spacemit_get_pin(pctrl, pins[i]); - - if (!pinmuxs[i].pin) - return dev_err_probe(dev, -ENODEV, "failed to get pin %d\n", pins[i]); } =20 map[nmaps].type =3D PIN_MAP_TYPE_MUX_GROUP; @@ -522,7 +507,7 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl= _dev *pctldev, nmaps +=3D 1; =20 ret =3D pinctrl_generic_add_group(pctldev, grpname, - pins, npins, pinmuxs); + pins, npins, &config); if (ret < 0) return dev_err_probe(dev, ret, "failed to add group %s: %d\n", grpname,= ret); =20 @@ -559,7 +544,7 @@ static const struct pinctrl_ops spacemit_pctrl_ops =3D { .get_group_name =3D pinctrl_generic_get_group_name, .get_group_pins =3D pinctrl_generic_get_group_pins, .pin_dbg_show =3D spacemit_pctrl_dbg_show, - .dt_node_to_map =3D spacemit_pctrl_dt_node_to_map, + .dt_node_to_map =3D pinctrl_generic_pinmux_dt_node_to_map, .dt_free_map =3D pinctrl_utils_free_map, }; =20 @@ -568,8 +553,8 @@ static int spacemit_pmx_set_mux(struct pinctrl_dev *pct= ldev, { struct spacemit_pinctrl *pctrl =3D pinctrl_dev_get_drvdata(pctldev); const struct group_desc *group; - const struct spacemit_pin_mux_config *configs; unsigned int i, mux; + unsigned int *configs; void __iomem *reg; =20 group =3D pinctrl_generic_get_group(pctldev, gsel); @@ -579,11 +564,17 @@ static int spacemit_pmx_set_mux(struct pinctrl_dev *p= ctldev, configs =3D group->data; =20 for (i =3D 0; i < group->grp.npins; i++) { - const struct spacemit_pin *spin =3D configs[i].pin; - u32 value =3D configs[i].config; + const struct spacemit_pin *spin; + u32 value =3D configs[i]; + + spin =3D spacemit_get_pin(pctrl, group->grp.pins[i]); + if (!spin) { + dev_err(pctrl->dev, "Invalid pin %u\n", group->grp.pins[i]); + return -EINVAL; + } =20 reg =3D spacemit_pin_to_reg(pctrl, spin->pin); - mux =3D spacemit_dt_get_pin_mux(value); + mux =3D value; =20 guard(raw_spinlock_irqsave)(&pctrl->lock); value =3D readl_relaxed(reg) & ~PAD_MUX; --=20 2.53.0