{"id":2233263,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2233263/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260506-pinctrl-exyno5250-v3-1-11649fe82210@timmermann.space/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.2/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260506-pinctrl-exyno5250-v3-1-11649fe82210@timmermann.space>","list_archive_url":null,"date":"2026-05-05T23:13:29","name":"[RFC,v3,1/2] pinctrl: exynos: Add exynos5250 driver","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"75b3e2131ee840523a01519ac5ccead3c9316fbe","submitter":{"id":91882,"url":"http://patchwork.ozlabs.org/api/1.2/people/91882/?format=json","name":"Lukas Timmermann","email":"uboot@timmermann.space"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260506-pinctrl-exyno5250-v3-1-11649fe82210@timmermann.space/mbox/","series":[{"id":502911,"url":"http://patchwork.ozlabs.org/api/1.2/series/502911/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=502911","date":"2026-05-05T23:13:28","name":"Modern pinctrl for Exynos5250 devices","version":3,"mbox":"http://patchwork.ozlabs.org/series/502911/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2233263/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2233263/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=timmermann.space","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de; dmarc=none (p=none dis=none)\n header.from=timmermann.space","phobos.denx.de;\n spf=pass smtp.mailfrom=uboot@timmermann.space"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g9DqG64qqz1yJx\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 09:14:18 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id B1A7F849C9;\n\tWed,  6 May 2026 01:14:10 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 7AECA849B8; Wed,  6 May 2026 01:14:09 +0200 (CEST)","from mout-p-102.mailbox.org (mout-p-102.mailbox.org\n [IPv6:2001:67c:2050:0:465::102])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 502D58495B\n for <u-boot@lists.denx.de>; Wed,  6 May 2026 01:14:07 +0200 (CEST)","from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4g9Dpw1XqLz9vXD;\n Wed,  6 May 2026 01:14:00 +0200 (CEST)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.9 required=5.0 tests=BAYES_00,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2","From":"Lukas Timmermann <uboot@timmermann.space>","Date":"Wed, 06 May 2026 01:13:29 +0200","Subject":"[PATCH RFC v3 1/2] pinctrl: exynos: Add exynos5250 driver","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260506-pinctrl-exyno5250-v3-1-11649fe82210@timmermann.space>","References":"<20260506-pinctrl-exyno5250-v3-0-11649fe82210@timmermann.space>","In-Reply-To":"<20260506-pinctrl-exyno5250-v3-0-11649fe82210@timmermann.space>","To":"u-boot@lists.denx.de","Cc":"Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>,\n Neil Armstrong <neil.armstrong@linaro.org>, Yao Zi <me@ziyao.cc>,\n Kory Maincent <kory.maincent@bootlin.com>, Peng Fan <peng.fan@nxp.com>,\n Kuan-Wei Chiu <visitorckw@gmail.com>,\n Raymond Mao <raymond.mao@riscstar.com>,\n Quentin Schulz <quentin.schulz@cherry.de>,\n Stefan Roese <stefan.roese@mailbox.org>,\n Philip Molloy <philip.molloy@analog.com>,\n Jerome Forissier <jerome.forissier@arm.com>,\n Kaustabh Chakraborty <kauschluss@disroot.org>,\n Henrik Grimler <henrik@grimler.se>, Minkyu Kang <mk7.kang@samsung.com>,\n Lukas Timmermann <uboot@timmermann.space>","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"Adds the needed files for using the new pinctrl driver with exynos5250\nSoCs.\n\nSigned-off-by: Lukas Timmermann <uboot@timmermann.space>\n---\n MAINTAINERS                                 |  5 ++\n drivers/pinctrl/exynos/Kconfig              |  8 +++\n drivers/pinctrl/exynos/Makefile             |  1 +\n drivers/pinctrl/exynos/pinctrl-exynos5250.c | 99 +++++++++++++++++++++++++++++\n 4 files changed, 113 insertions(+)","diff":"diff --git a/MAINTAINERS b/MAINTAINERS\nindex 0dcc7243124..475000e56da 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -625,6 +625,11 @@ F:\tdrivers/clk/exynos/clk-exynos850.c\n F:\tdrivers/phy/phy-exynos-usbdrd.c\n F:\tdrivers/pinctrl/exynos/pinctrl-exynos850.c\n \n+ARM SAMSUNG EXYNOS5250 SOC\n+M:\tLukas Timmermann <uboot@timmermann.space>\n+S:\tMaintained\n+F:\tdrivers/pinctrl/exynos/pinctrl-exynos5250.c\n+\n ARM SAMSUNG SOC DRIVERS\n M:\tSam Protsenko <semen.protsenko@linaro.org>\n S:\tMaintained\ndiff --git a/drivers/pinctrl/exynos/Kconfig b/drivers/pinctrl/exynos/Kconfig\nindex 1b7fb62bc4b..18503ce112e 100644\n--- a/drivers/pinctrl/exynos/Kconfig\n+++ b/drivers/pinctrl/exynos/Kconfig\n@@ -1,6 +1,14 @@\n config PINCTRL_EXYNOS\n \tbool\n \n+config PINCTRL_EXYNOS5250\n+\tbool \"Samsung Exynos5250 pinctrl driver\"\n+\tdepends on ARCH_EXYNOS && PINCTRL_FULL\n+\tselect PINCTRL_EXYNOS\n+\thelp\n+\t  Support pin multiplexing and pin configuration control on\n+\t  Samsung's Exynos5250 SoC.\n+\n config PINCTRL_EXYNOS7420\n \tbool \"Samsung Exynos7420 pinctrl driver\"\n \tdepends on ARCH_EXYNOS && PINCTRL_FULL\ndiff --git a/drivers/pinctrl/exynos/Makefile b/drivers/pinctrl/exynos/Makefile\nindex 3abe1226eb7..7ef8d90cb59 100644\n--- a/drivers/pinctrl/exynos/Makefile\n+++ b/drivers/pinctrl/exynos/Makefile\n@@ -4,6 +4,7 @@\n # Thomas Abraham <thomas.ab@samsung.com>\n \n obj-$(CONFIG_PINCTRL_EXYNOS)\t\t+= pinctrl-exynos.o\n+obj-$(CONFIG_PINCTRL_EXYNOS5250)\t+= pinctrl-exynos5250.o\n obj-$(CONFIG_PINCTRL_EXYNOS7420)\t+= pinctrl-exynos7420.o\n obj-$(CONFIG_PINCTRL_EXYNOS78x0)\t+= pinctrl-exynos78x0.o\n obj-$(CONFIG_PINCTRL_EXYNOS850)\t\t+= pinctrl-exynos850.o\ndiff --git a/drivers/pinctrl/exynos/pinctrl-exynos5250.c b/drivers/pinctrl/exynos/pinctrl-exynos5250.c\nnew file mode 100644\nindex 00000000000..8e34f46921a\n--- /dev/null\n+++ b/drivers/pinctrl/exynos/pinctrl-exynos5250.c\n@@ -0,0 +1,99 @@\n+// SPDX-License-Identifier: GPL-2.0\n+/*\n+ * Exynos5250 pinctrl driver.\n+ *\n+ * Copyright (c) 2026 Lukas Timmermann <uboot@timmermann.space>\n+ */\n+\n+#include <dm.h>\n+#include <dm/pinctrl.h>\n+#include \"pinctrl-exynos.h\"\n+\n+static const struct pinctrl_ops exynos5250_pinctrl_ops = {\n+\t.set_state = exynos_pinctrl_set_state\n+};\n+\n+static const struct samsung_pin_bank_data exynos5250_pin_banks0[] = {\n+\tEXYNOS_PIN_BANK(8, 0x000, \"gpa0\"),\n+\tEXYNOS_PIN_BANK(6, 0x020, \"gpa1\"),\n+\tEXYNOS_PIN_BANK(8, 0x040, \"gpa2\"),\n+\tEXYNOS_PIN_BANK(5, 0x060, \"gpb0\"),\n+\tEXYNOS_PIN_BANK(5, 0x080, \"gpb1\"),\n+\tEXYNOS_PIN_BANK(4, 0x0a0, \"gpb2\"),\n+\tEXYNOS_PIN_BANK(4, 0x0c0, \"gpb3\"),\n+\tEXYNOS_PIN_BANK(7, 0x0e0, \"gpc0\"),\n+\tEXYNOS_PIN_BANK(4, 0x100, \"gpc1\"),\n+\tEXYNOS_PIN_BANK(7, 0x120, \"gpc2\"),\n+\tEXYNOS_PIN_BANK(7, 0x140, \"gpc3\"),\n+\tEXYNOS_PIN_BANK(4, 0x160, \"gpd0\"),\n+\tEXYNOS_PIN_BANK(8, 0x180, \"gpd1\"),\n+\tEXYNOS_PIN_BANK(7, 0x2e0, \"gpc4\"),\n+\tEXYNOS_PIN_BANK(6, 0x1a0, \"gpy0\"),\n+\tEXYNOS_PIN_BANK(4, 0x1c0, \"gpy1\"),\n+\tEXYNOS_PIN_BANK(6, 0x1e0, \"gpy2\"),\n+\tEXYNOS_PIN_BANK(8, 0x200, \"gpy3\"),\n+\tEXYNOS_PIN_BANK(8, 0x220, \"gpy4\"),\n+\tEXYNOS_PIN_BANK(8, 0x240, \"gpy5\"),\n+\tEXYNOS_PIN_BANK(8, 0x260, \"gpy6\"),\n+\tEXYNOS_PIN_BANK(8, 0xc00, \"gpx0\"),\n+\tEXYNOS_PIN_BANK(8, 0xc20, \"gpx1\"),\n+\tEXYNOS_PIN_BANK(8, 0xc40, \"gpx2\"),\n+\tEXYNOS_PIN_BANK(8, 0xc60, \"gpx3\"),\n+};\n+\n+static const struct samsung_pin_bank_data exynos5250_pin_banks1[] = {\n+\tEXYNOS_PIN_BANK(8, 0x000, \"gpe0\"),\n+\tEXYNOS_PIN_BANK(2, 0x020, \"gpe1\"),\n+\tEXYNOS_PIN_BANK(4, 0x040, \"gpf0\"),\n+\tEXYNOS_PIN_BANK(4, 0x060, \"gpf1\"),\n+\tEXYNOS_PIN_BANK(8, 0x080, \"gpg0\"),\n+\tEXYNOS_PIN_BANK(8, 0x0a0, \"gpg1\"),\n+\tEXYNOS_PIN_BANK(2, 0x0c0, \"gpg2\"),\n+\tEXYNOS_PIN_BANK(4, 0x0e0, \"gph0\"),\n+\tEXYNOS_PIN_BANK(8, 0x100, \"gph1\"),\n+};\n+\n+static const struct samsung_pin_bank_data exynos5250_pin_banks2[] = {\n+\tEXYNOS_PIN_BANK(8, 0x000, \"gpv0\"),\n+\tEXYNOS_PIN_BANK(8, 0x020, \"gpv1\"),\n+\tEXYNOS_PIN_BANK(8, 0x060, \"gpv2\"),\n+\tEXYNOS_PIN_BANK(8, 0x080, \"gpv3\"),\n+\tEXYNOS_PIN_BANK(2, 0x0c0, \"gpv4\"),\n+};\n+\n+static const struct samsung_pin_bank_data exynos5250_pin_banks3[] = {\n+\tEXYNOS_PIN_BANK(7, 0x000, \"gpz\"),\n+};\n+\n+static const struct samsung_pin_ctrl exynos5250_pin_ctrl[] = {\n+\t{\n+\t\t.pin_banks\t= exynos5250_pin_banks0,\n+\t\t.nr_banks\t= ARRAY_SIZE(exynos5250_pin_banks0),\n+\t}, {\n+\t\t.pin_banks\t= exynos5250_pin_banks1,\n+\t\t.nr_banks\t= ARRAY_SIZE(exynos5250_pin_banks1),\n+\t}, {\n+\t\t.pin_banks\t= exynos5250_pin_banks2,\n+\t\t.nr_banks\t= ARRAY_SIZE(exynos5250_pin_banks2),\n+\t}, {\n+\t\t.pin_banks\t= exynos5250_pin_banks3,\n+\t\t.nr_banks\t= ARRAY_SIZE(exynos5250_pin_banks3),\n+\t},\n+\t{/* list terminator */}\n+};\n+\n+static const struct udevice_id exynos5250_pinctrl_ids[] = {\n+\t{ .compatible = \"samsung,exynos5250-pinctrl\",\n+\t\t.data = (ulong)exynos5250_pin_ctrl },\n+\t{ }\n+};\n+\n+U_BOOT_DRIVER(pinctrl_exynos5250) = {\n+\t.name\t\t= \"pinctrl_exynos5250\",\n+\t.id\t\t= UCLASS_PINCTRL,\n+\t.of_match\t= exynos5250_pinctrl_ids,\n+\t.priv_auto\t= sizeof(struct exynos_pinctrl_priv),\n+\t.ops\t\t= &exynos5250_pinctrl_ops,\n+\t.probe\t\t= exynos_pinctrl_probe,\n+\t.bind\t\t= exynos_pinctrl_bind,\n+};\n","prefixes":["RFC","v3","1/2"]}