{"id":2233365,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2233365/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260506-womb-bonus-68a236490084@spud/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/1.1/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260506-womb-bonus-68a236490084@spud>","date":"2026-05-06T09:57:42","name":"[RFC,v1,4/4] pinctrl: spacemit: move over to generic pinmux dt_node_to_map implementation","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"18c1ec2f3beceec008f97e788d8da8ddb8694ab1","submitter":{"id":84372,"url":"http://patchwork.ozlabs.org/api/1.1/people/84372/?format=json","name":"Conor Dooley","email":"conor@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260506-womb-bonus-68a236490084@spud/mbox/","series":[{"id":502949,"url":"http://patchwork.ozlabs.org/api/1.1/series/502949/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=502949","date":"2026-05-06T09:57:38","name":"generic pinmux dt_node_to_map implementation","version":1,"mbox":"http://patchwork.ozlabs.org/series/502949/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2233365/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2233365/checks/","tags":{},"headers":{"Return-Path":"\n <linux-gpio+bounces-36278-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=WG44oO9T;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-gpio+bounces-36278-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"WG44oO9T\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g9WMQ25sqz1yJx\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 20:09:38 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 3C58C3075652\n\tfor <incoming@patchwork.ozlabs.org>; Wed,  6 May 2026 09:59:49 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id BA028402454;\n\tWed,  6 May 2026 09:58:19 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id E47CF3DC4A3;\n\tWed,  6 May 2026 09:58:17 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 60557C2BCC9;\n\tWed,  6 May 2026 09:58:15 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778061498; cv=none;\n b=Mypo4EzqjemjblwtLDc1mkm5j96aA1RKZ5+wv1khGyxeDY7HfgOIqPOxjWGBSLJ0XQk0bVixYFRnnGnfFrLDtT3/h+p2soWDm8Uevy9i5Oqh5TBdHgMLJlOf2/iBNYkMgqBc8HdSPedxJpU/iJi5iCD7UOHzP14a/WoVmkxSCJw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778061498; c=relaxed/simple;\n\tbh=v2Z43waBNb1sScGZkywyBPPfu9AJTH0bPEJbypNx/9Y=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=sl+/dOmKy+Za8vTBmZceHymoPnVua7fF1AzHTqYuAKEEr7/0298YXje77VYMa9oadMzpWuxW0YlQhFtWPVshcsGhVVcYv2oOZRTOZ38W3vukMxtZxkccAJccXlp4yA4tN+rYIIpmh9BDXxH+iOb8Mh9Rq6KMjLQYgaNFIt8G/RU=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=WG44oO9T; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778061497;\n\tbh=v2Z43waBNb1sScGZkywyBPPfu9AJTH0bPEJbypNx/9Y=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=WG44oO9TMvF7kiD51Etx91un/RdtZOeMoteCnQgQFqUaqeA25FD+DAHQIemqgDZng\n\t 56v2HgLykir7ilGwY9wv7O7zsRQvLUgh5yDL6057DboKTr1t3Py+T+6fRjT0wPJsW8\n\t CdoPtl1bodVpxIaCoadImuzAM6g7WIWpVpbgBiwlZQpAqExNBrz1j8fUi9MLTQVy4p\n\t yXc1RAc8fUEGvdOwVurE48hcOFFCAwlnvPWr1Co5fXGmL1rkzzS/f9hVLCB+UTHR0X\n\t kiT5vg85L0QLRi+TpixO/5bbuxbl+WQzFAIoaf9HUpWupesFCATXTu2Wvyob4pHuh8\n\t UqMinIs5doyBQ==","From":"Conor Dooley <conor@kernel.org>","To":"Linus Walleij <linusw@kernel.org>","Cc":"conor@kernel.org,\n\tConor Dooley <conor.dooley@microchip.com>,\n\tYixun Lan <dlan@kernel.org>,\n\tTroy Mitchell <troy.mitchell@linux.spacemit.com>,\n\tlinux-gpio@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-riscv@lists.infradead.org,\n\tspacemit@lists.linux.dev","Subject":"[RFC v1 4/4] pinctrl: spacemit: move over to generic pinmux\n 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-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-Developer-Signature":"v=1; a=openpgp-sha256; l=3606;\n i=conor.dooley@microchip.com; h=from:subject:message-id;\n bh=EBo7vsj45Fm6ts8vxVZqmKyxIs0BuENJUV4vbK7h45M=;\n b=owGbwMvMwCVWscWwfUFT0iXG02pJDJm/BSb39VRuPlyx7dTVybtPFKcGfqt8LVWl+3qm9zZDQ\n Z9Oix2nO0pZGMS4GGTFFFkSb/e1SK3/47LDuectzBxWJpAhDFycAjARz4+MDPvXrE5ff0aqJjZ+\n 72rz29sKlLcx7hURWFDwKJSjs+PzSw6Gf4Y7Z25c31Yd73LtiJXD7brJorYHdHd7HHn/8v2O0Gw\n XcSYA","X-Developer-Key":"i=conor.dooley@microchip.com; a=openpgp;\n fpr=F9ECA03CF54F12CD01F1655722E2C55B37CF380C","Content-Transfer-Encoding":"8bit"},"content":"From: Conor Dooley <conor.dooley@microchip.com>\n\nSigned-off-by: Conor Dooley <conor.dooley@microchip.com>\n---\n drivers/pinctrl/spacemit/pinctrl-k1.c | 33 ++++++++++-----------------\n 1 file changed, 12 insertions(+), 21 deletions(-)","diff":"diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacemit/pinctrl-k1.c\nindex 41d8a34bc386b..c90b6ccfce2ea 100644\n--- a/drivers/pinctrl/spacemit/pinctrl-k1.c\n+++ b/drivers/pinctrl/spacemit/pinctrl-k1.c\n@@ -114,11 +114,6 @@ struct spacemit_pinctrl_data {\n \tconst struct spacemit_pinctrl_dconf\t*dconf;\n };\n \n-struct spacemit_pin_mux_config {\n-\tconst struct spacemit_pin\t*pin;\n-\tu32\t\t\t\tconfig;\n-};\n-\n /* map pin id to pinctrl register offset, refer MFPR definition */\n static unsigned int spacemit_k1_pin_to_offset(unsigned int pin)\n {\n@@ -474,7 +469,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,\n \tngroups = 0;\n \tguard(mutex)(&pctrl->mutex);\n \tfor_each_available_child_of_node_scoped(np, child) {\n-\t\tstruct spacemit_pin_mux_config *pinmuxs;\n \t\tunsigned int config, *pins;\n \t\tint i, npins;\n \n@@ -497,10 +491,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,\n \t\tif (!pins)\n \t\t\treturn -ENOMEM;\n \n-\t\tpinmuxs = devm_kcalloc(dev, npins, sizeof(*pinmuxs), GFP_KERNEL);\n-\t\tif (!pinmuxs)\n-\t\t\treturn -ENOMEM;\n-\n \t\tfor (i = 0; i < npins; i++) {\n \t\t\tret = of_property_read_u32_index(child, \"pinmux\",\n \t\t\t\t\t\t\t i, &config);\n@@ -509,11 +499,6 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,\n \t\t\t\treturn -EINVAL;\n \n \t\t\tpins[i] = spacemit_dt_get_pin(config);\n-\t\t\tpinmuxs[i].config = config;\n-\t\t\tpinmuxs[i].pin = spacemit_get_pin(pctrl, pins[i]);\n-\n-\t\t\tif (!pinmuxs[i].pin)\n-\t\t\t\treturn dev_err_probe(dev, -ENODEV, \"failed to get pin %d\\n\", pins[i]);\n \t\t}\n \n \t\tmap[nmaps].type = PIN_MAP_TYPE_MUX_GROUP;\n@@ -522,7 +507,7 @@ static int spacemit_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,\n \t\tnmaps += 1;\n \n \t\tret = pinctrl_generic_add_group(pctldev, grpname,\n-\t\t\t\t\t\tpins, npins, pinmuxs);\n+\t\t\t\t\t\tpins, npins, &config);\n \t\tif (ret < 0)\n \t\t\treturn dev_err_probe(dev, ret, \"failed to add group %s: %d\\n\", grpname, ret);\n \n@@ -559,7 +544,7 @@ static const struct pinctrl_ops spacemit_pctrl_ops = {\n \t.get_group_name\t\t= pinctrl_generic_get_group_name,\n \t.get_group_pins\t\t= pinctrl_generic_get_group_pins,\n \t.pin_dbg_show\t\t= spacemit_pctrl_dbg_show,\n-\t.dt_node_to_map\t\t= spacemit_pctrl_dt_node_to_map,\n+\t.dt_node_to_map\t\t= pinctrl_generic_pinmux_dt_node_to_map,\n \t.dt_free_map\t\t= pinctrl_utils_free_map,\n };\n \n@@ -568,8 +553,8 @@ static int spacemit_pmx_set_mux(struct pinctrl_dev *pctldev,\n {\n \tstruct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);\n \tconst struct group_desc *group;\n-\tconst struct spacemit_pin_mux_config *configs;\n \tunsigned int i, mux;\n+\tunsigned int *configs;\n \tvoid __iomem *reg;\n \n \tgroup = pinctrl_generic_get_group(pctldev, gsel);\n@@ -579,11 +564,17 @@ static int spacemit_pmx_set_mux(struct pinctrl_dev *pctldev,\n \tconfigs = group->data;\n \n \tfor (i = 0; i < group->grp.npins; i++) {\n-\t\tconst struct spacemit_pin *spin = configs[i].pin;\n-\t\tu32 value = configs[i].config;\n+\t\tconst struct spacemit_pin *spin;\n+\t\tu32 value = configs[i];\n+\n+\t\tspin = spacemit_get_pin(pctrl, group->grp.pins[i]);\n+\t\tif (!spin) {\n+\t\t\tdev_err(pctrl->dev, \"Invalid pin %u\\n\", group->grp.pins[i]);\n+\t\t\treturn -EINVAL;\n+\t\t}\n \n \t\treg = spacemit_pin_to_reg(pctrl, spin->pin);\n-\t\tmux = spacemit_dt_get_pin_mux(value);\n+\t\tmux = value;\n \n \t\tguard(raw_spinlock_irqsave)(&pctrl->lock);\n \t\tvalue = readl_relaxed(reg) & ~PAD_MUX;\n","prefixes":["RFC","v1","4/4"]}