+++ /dev/null
-From a1d821fd433ed86125ce6fc67f58a4416044546b Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 11 Dec 2023 20:57:54 +0200
-Subject: pinctrl: core: Add a convenient define PINCTRL_GROUP_DESC()
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-[ Upstream commit 383da0c7f25428de5ad09dc2cfed7cd43c4fb6ba ]
-
-Add PINCTRL_GROUP_DESC() macro for inline use.
-
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20231211190321.307330-2-andriy.shevchenko@linux.intel.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Stable-dep-of: e64c0ff0d5d8 ("pinctrl: imx: Return NULL if no group is matched and found")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/core.c | 5 +----
- drivers/pinctrl/core.h | 9 +++++++++
- 2 files changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
-index 7342148c65729..241face4ad077 100644
---- a/drivers/pinctrl/core.c
-+++ b/drivers/pinctrl/core.c
-@@ -659,10 +659,7 @@ int pinctrl_generic_add_group(struct pinctrl_dev *pctldev, const char *name,
- if (!group)
- return -ENOMEM;
-
-- group->name = name;
-- group->pins = pins;
-- group->num_pins = num_pins;
-- group->data = data;
-+ *group = PINCTRL_GROUP_DESC(name, pins, num_pins, data);
-
- error = radix_tree_insert(&pctldev->pin_group_tree, selector, group);
- if (error)
-diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h
-index ece4b9c71c970..717ba75bb4cbf 100644
---- a/drivers/pinctrl/core.h
-+++ b/drivers/pinctrl/core.h
-@@ -209,6 +209,15 @@ struct group_desc {
- void *data;
- };
-
-+/* Convenience macro to define a generic pin group descriptor */
-+#define PINCTRL_GROUP_DESC(_name, _pins, _num_pins, _data) \
-+(struct group_desc) { \
-+ .name = _name, \
-+ .pins = _pins, \
-+ .num_pins = _num_pins, \
-+ .data = _data, \
-+}
-+
- int pinctrl_generic_get_group_count(struct pinctrl_dev *pctldev);
-
- const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev,
---
-2.39.5
-
+++ /dev/null
-From 8b71dccff488d6d4939004007318c248c18b2030 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 11 Dec 2023 20:57:57 +0200
-Subject: pinctrl: core: Embed struct pingroup into struct group_desc
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-[ Upstream commit 85174ad7c30fca29a354221e01fad82c0d00d644 ]
-
-struct group_desc is a particular version of the struct pingroup
-with associated opaque data. Start switching pin control core and
-drivers to use it explicitly.
-
-Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20231211190321.307330-5-andriy.shevchenko@linux.intel.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Stable-dep-of: e64c0ff0d5d8 ("pinctrl: imx: Return NULL if no group is matched and found")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/core.c | 15 ++++++++++++---
- drivers/pinctrl/core.h | 5 +++++
- 2 files changed, 17 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
-index 241face4ad077..3f8e348668eb6 100644
---- a/drivers/pinctrl/core.c
-+++ b/drivers/pinctrl/core.c
-@@ -558,7 +558,10 @@ const char *pinctrl_generic_get_group_name(struct pinctrl_dev *pctldev,
- if (!group)
- return NULL;
-
-- return group->name;
-+ if (group->name)
-+ return group->name;
-+
-+ return group->grp.name;
- }
- EXPORT_SYMBOL_GPL(pinctrl_generic_get_group_name);
-
-@@ -584,8 +587,14 @@ int pinctrl_generic_get_group_pins(struct pinctrl_dev *pctldev,
- return -EINVAL;
- }
-
-- *pins = group->pins;
-- *num_pins = group->num_pins;
-+ if (group->pins) {
-+ *pins = group->pins;
-+ *num_pins = group->num_pins;
-+ return 0;
-+ }
-+
-+ *pins = group->grp.pins;
-+ *num_pins = group->grp.npins;
-
- return 0;
- }
-diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h
-index 717ba75bb4cbf..efc4c22367661 100644
---- a/drivers/pinctrl/core.h
-+++ b/drivers/pinctrl/core.h
-@@ -195,14 +195,18 @@ struct pinctrl_maps {
-
- #ifdef CONFIG_GENERIC_PINCTRL_GROUPS
-
-+#include <linux/pinctrl/pinctrl.h>
-+
- /**
- * struct group_desc - generic pin group descriptor
-+ * @grp: generic data of the pin group (name and pins)
- * @name: name of the pin group
- * @pins: array of pins that belong to the group
- * @num_pins: number of pins in the group
- * @data: pin controller driver specific data
- */
- struct group_desc {
-+ struct pingroup grp;
- const char *name;
- int *pins;
- int num_pins;
-@@ -212,6 +216,7 @@ struct group_desc {
- /* Convenience macro to define a generic pin group descriptor */
- #define PINCTRL_GROUP_DESC(_name, _pins, _num_pins, _data) \
- (struct group_desc) { \
-+ .grp = PINCTRL_PINGROUP(_name, _pins, _num_pins), \
- .name = _name, \
- .pins = _pins, \
- .num_pins = _num_pins, \
---
-2.39.5
-
+++ /dev/null
-From e6cfba815a3d278730952170acba316a86368c85 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 11 Dec 2023 20:58:00 +0200
-Subject: pinctrl: imx: Convert to use grp member
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-[ Upstream commit 390270f25b414fd54b307cd68851b36b52f952b5 ]
-
-Convert drivers to use grp member embedded in struct group_desc,
-because other members will be removed to avoid duplication and
-desynchronisation of the generic pin group description.
-
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20231211190321.307330-8-andriy.shevchenko@linux.intel.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Stable-dep-of: e64c0ff0d5d8 ("pinctrl: imx: Return NULL if no group is matched and found")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/freescale/pinctrl-imx.c | 31 +++++++++++--------------
- 1 file changed, 14 insertions(+), 17 deletions(-)
-
-diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
-index 28164b04b1bed..2d3d80921c0d1 100644
---- a/drivers/pinctrl/freescale/pinctrl-imx.c
-+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
-@@ -42,7 +42,7 @@ static inline const struct group_desc *imx_pinctrl_find_group_by_name(
-
- for (i = 0; i < pctldev->num_groups; i++) {
- grp = pinctrl_generic_get_group(pctldev, i);
-- if (grp && !strcmp(grp->name, name))
-+ if (grp && !strcmp(grp->grp.name, name))
- break;
- }
-
-@@ -79,9 +79,9 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev,
- }
-
- if (info->flags & IMX_USE_SCU) {
-- map_num += grp->num_pins;
-+ map_num += grp->grp.npins;
- } else {
-- for (i = 0; i < grp->num_pins; i++) {
-+ for (i = 0; i < grp->grp.npins; i++) {
- pin = &((struct imx_pin *)(grp->data))[i];
- if (!(pin->conf.mmio.config & IMX_NO_PAD_CTL))
- map_num++;
-@@ -109,7 +109,7 @@ static int imx_dt_node_to_map(struct pinctrl_dev *pctldev,
-
- /* create config map */
- new_map++;
-- for (i = j = 0; i < grp->num_pins; i++) {
-+ for (i = j = 0; i < grp->grp.npins; i++) {
- pin = &((struct imx_pin *)(grp->data))[i];
-
- /*
-@@ -263,10 +263,10 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
- if (!func)
- return -EINVAL;
-
-- npins = grp->num_pins;
-+ npins = grp->grp.npins;
-
- dev_dbg(ipctl->dev, "enable function %s group %s\n",
-- func->name, grp->name);
-+ func->name, grp->grp.name);
-
- for (i = 0; i < npins; i++) {
- /*
-@@ -423,7 +423,7 @@ static void imx_pinconf_group_dbg_show(struct pinctrl_dev *pctldev,
- if (!grp)
- return;
-
-- for (i = 0; i < grp->num_pins; i++) {
-+ for (i = 0; i < grp->grp.npins; i++) {
- struct imx_pin *pin = &((struct imx_pin *)(grp->data))[i];
-
- name = pin_get_name(pctldev, pin->pin);
-@@ -526,7 +526,7 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
- pin_size = FSL_PIN_SIZE;
-
- /* Initialise group */
-- grp->name = np->name;
-+ grp->grp.name = np->name;
-
- /*
- * the binding format is fsl,pins = <PIN_FUNC_ID CONFIG ...>,
-@@ -554,19 +554,17 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
- return -EINVAL;
- }
-
-- grp->num_pins = size / pin_size;
-- grp->data = devm_kcalloc(ipctl->dev,
-- grp->num_pins, sizeof(struct imx_pin),
-- GFP_KERNEL);
-+ grp->grp.npins = size / pin_size;
-+ grp->data = devm_kcalloc(ipctl->dev, grp->grp.npins, sizeof(*pin), GFP_KERNEL);
- if (!grp->data)
- return -ENOMEM;
-
-- pins = devm_kcalloc(ipctl->dev, grp->num_pins, sizeof(*pins), GFP_KERNEL);
-+ pins = devm_kcalloc(ipctl->dev, grp->grp.npins, sizeof(*pins), GFP_KERNEL);
- if (!pins)
- return -ENOMEM;
-- grp->pins = pins;
-+ grp->grp.pins = pins;
-
-- for (i = 0; i < grp->num_pins; i++) {
-+ for (i = 0; i < grp->grp.npins; i++) {
- pin = &((struct imx_pin *)(grp->data))[i];
- if (info->flags & IMX_USE_SCU)
- info->imx_pinctrl_parse_pin(ipctl, &pins[i], pin, &list);
-@@ -613,8 +611,7 @@ static int imx_pinctrl_parse_functions(struct device_node *np,
-
- i = 0;
- for_each_child_of_node(np, child) {
-- grp = devm_kzalloc(ipctl->dev, sizeof(struct group_desc),
-- GFP_KERNEL);
-+ grp = devm_kzalloc(ipctl->dev, sizeof(*grp), GFP_KERNEL);
- if (!grp) {
- of_node_put(child);
- return -ENOMEM;
---
-2.39.5
-
+++ /dev/null
-From 05f0d2b7b49ff4006b4d218c02fdab185ec18380 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 27 Mar 2025 11:16:00 +0800
-Subject: pinctrl: imx: Return NULL if no group is matched and found
-
-From: Hui Wang <hui.wang@canonical.com>
-
-[ Upstream commit e64c0ff0d5d85791fbcd126ee558100a06a24a97 ]
-
-Currently if no group is matched and found, this function will return
-the last grp to the caller, this is not expected, it is supposed to
-return NULL in this case.
-
-Fixes: e566fc11ea76 ("pinctrl: imx: use generic pinctrl helpers for managing groups")
-Signed-off-by: Hui Wang <hui.wang@canonical.com>
-Reviewed-by: Frank Li <Frank.Li@nxp.com>
-Link: https://lore.kernel.org/20250327031600.99723-1-hui.wang@canonical.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/freescale/pinctrl-imx.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
-index 2d3d80921c0d1..bcc657af272a3 100644
---- a/drivers/pinctrl/freescale/pinctrl-imx.c
-+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
-@@ -37,16 +37,16 @@ static inline const struct group_desc *imx_pinctrl_find_group_by_name(
- struct pinctrl_dev *pctldev,
- const char *name)
- {
-- const struct group_desc *grp = NULL;
-+ const struct group_desc *grp;
- int i;
-
- for (i = 0; i < pctldev->num_groups; i++) {
- grp = pinctrl_generic_get_group(pctldev, i);
- if (grp && !strcmp(grp->grp.name, name))
-- break;
-+ return grp;
- }
-
-- return grp;
-+ return NULL;
- }
-
- static void imx_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
---
-2.39.5
-
+++ /dev/null
-From b4342d35738d86e8ab37b28ac6789b54d875e2e4 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 29 Nov 2023 18:06:28 +0200
-Subject: pinctrl: imx: Use temporary variable to hold pins
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-[ Upstream commit 26ea8229e7adb508133b078790990486c1657cc7 ]
-
-The pins are allocated from the heap, but in order to pass
-them as constant object, we need to use non-constant pointer.
-Achieve this by using a temporary variable.
-
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20231129161459.1002323-6-andriy.shevchenko@linux.intel.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Stable-dep-of: e64c0ff0d5d8 ("pinctrl: imx: Return NULL if no group is matched and found")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/freescale/pinctrl-imx.c | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
-index 9bc16943014f0..28164b04b1bed 100644
---- a/drivers/pinctrl/freescale/pinctrl-imx.c
-+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
-@@ -511,6 +511,7 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
- {
- const struct imx_pinctrl_soc_info *info = ipctl->info;
- struct imx_pin *pin;
-+ unsigned int *pins;
- int size, pin_size;
- const __be32 *list;
- int i;
-@@ -557,20 +558,20 @@ static int imx_pinctrl_parse_groups(struct device_node *np,
- grp->data = devm_kcalloc(ipctl->dev,
- grp->num_pins, sizeof(struct imx_pin),
- GFP_KERNEL);
-- grp->pins = devm_kcalloc(ipctl->dev,
-- grp->num_pins, sizeof(unsigned int),
-- GFP_KERNEL);
-- if (!grp->pins || !grp->data)
-+ if (!grp->data)
-+ return -ENOMEM;
-+
-+ pins = devm_kcalloc(ipctl->dev, grp->num_pins, sizeof(*pins), GFP_KERNEL);
-+ if (!pins)
- return -ENOMEM;
-+ grp->pins = pins;
-
- for (i = 0; i < grp->num_pins; i++) {
- pin = &((struct imx_pin *)(grp->data))[i];
- if (info->flags & IMX_USE_SCU)
-- info->imx_pinctrl_parse_pin(ipctl, &grp->pins[i],
-- pin, &list);
-+ info->imx_pinctrl_parse_pin(ipctl, &pins[i], pin, &list);
- else
-- imx_pinctrl_parse_pin_mmio(ipctl, &grp->pins[i],
-- pin, &list, np);
-+ imx_pinctrl_parse_pin_mmio(ipctl, &pins[i], pin, &list, np);
- }
-
- return 0;
---
-2.39.5
-
+++ /dev/null
-From 288b9c534a9089e765dbb919803fed4debb27e52 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 11 Dec 2023 20:57:55 +0200
-Subject: pinctrl: mediatek: Use C99 initializers in PINCTRL_PIN_GROUP()
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-[ Upstream commit bb5eace1562fcef3c7ac9d0bd3e01af1187e46d0 ]
-
-For the better flexibility use C99 initializers in PINCTRL_PIN_GROUP().
-
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Link: https://lore.kernel.org/r/20231211190321.307330-3-andriy.shevchenko@linux.intel.com
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-Stable-dep-of: e64c0ff0d5d8 ("pinctrl: imx: Return NULL if no group is matched and found")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/pinctrl/mediatek/pinctrl-moore.h | 12 ++++++------
- drivers/pinctrl/mediatek/pinctrl-paris.h | 12 ++++++------
- 2 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/pinctrl/mediatek/pinctrl-moore.h b/drivers/pinctrl/mediatek/pinctrl-moore.h
-index e1b4b82b9d3db..36ee0021cf7ed 100644
---- a/drivers/pinctrl/mediatek/pinctrl-moore.h
-+++ b/drivers/pinctrl/mediatek/pinctrl-moore.h
-@@ -37,12 +37,12 @@
- .funcs = NULL, \
- }
-
--#define PINCTRL_PIN_GROUP(name, id) \
-- { \
-- name, \
-- id##_pins, \
-- ARRAY_SIZE(id##_pins), \
-- id##_funcs, \
-+#define PINCTRL_PIN_GROUP(_name_, id) \
-+ { \
-+ .name = _name_, \
-+ .pins = id##_pins, \
-+ .num_pins = ARRAY_SIZE(id##_pins), \
-+ .data = id##_funcs, \
- }
-
- int mtk_moore_pinctrl_probe(struct platform_device *pdev,
-diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.h b/drivers/pinctrl/mediatek/pinctrl-paris.h
-index 8762ac5993292..5c4e5b74e43e2 100644
---- a/drivers/pinctrl/mediatek/pinctrl-paris.h
-+++ b/drivers/pinctrl/mediatek/pinctrl-paris.h
-@@ -49,12 +49,12 @@
- __VA_ARGS__, { } }, \
- }
-
--#define PINCTRL_PIN_GROUP(name, id) \
-- { \
-- name, \
-- id##_pins, \
-- ARRAY_SIZE(id##_pins), \
-- id##_funcs, \
-+#define PINCTRL_PIN_GROUP(_name_, id) \
-+ { \
-+ .name = _name_, \
-+ .pins = id##_pins, \
-+ .num_pins = ARRAY_SIZE(id##_pins), \
-+ .data = id##_funcs, \
- }
-
- int mtk_paris_pinctrl_probe(struct platform_device *pdev);
---
-2.39.5
-
iommu-handle-race-with-default-domain-setup.patch
asoc-soc-pcm-fix-hw_params-and-dapm-widget-sequence.patch
book3s64-radix-align-section-vmemmap-start-address-t.patch
-pinctrl-imx-use-temporary-variable-to-hold-pins.patch
-pinctrl-core-add-a-convenient-define-pinctrl_group_d.patch
-pinctrl-mediatek-use-c99-initializers-in-pinctrl_pin.patch
-pinctrl-core-embed-struct-pingroup-into-struct-group.patch
-pinctrl-imx-convert-to-use-grp-member.patch
-pinctrl-imx-return-null-if-no-group-is-matched-and-f.patch
powerpc-boot-check-for-ld-option-support.patch
drm-i915-pxp-fix-undefined-reference-to-intel_pxp_gs.patch
wifi-plfxlc-remove-erroneous-assert-in-plfxlc_mac_re.patch