]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mfd: cs5535: Add, assign and expose the software node for the GPIO cell
authorBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Wed, 29 Apr 2026 12:23:30 +0000 (14:23 +0200)
committerLee Jones <lee@kernel.org>
Wed, 17 Jun 2026 10:31:55 +0000 (11:31 +0100)
There are board files in-tree that want to request GPIOs from this chip.
They currently rely on the GPIO core's mechanism of matching software
nodes' labels against GPIO controller names. We want to remove this
behavior from the kernel and to this end, we need to associate the
referenced GPIO controller with its target software node.

Create a dedicated GPIO software node for cs5535, assign it to the GPIO
cell and expose its address in a new header.

We only expose a single software node instance but that's alright: all
existing hardware only contains a single cs5535 companion and the geode
board file for which we expose this is legacy anyway.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Link: https://patch.msgid.link/20260429-cs5535-swnode-v1-1-2bc5e17ddcf9@oss.qualcomm.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/cs5535-mfd.c
include/linux/mfd/cs5535.h [new file with mode: 0644]

index d0fb2e52ee76a82ab18f668f41b10ac3f4e01ed3..f3becbef19f5dac1905660df1ac6cbc4f7f4d867 100644 (file)
 
 #include <linux/kernel.h>
 #include <linux/mfd/core.h>
+#include <linux/mfd/cs5535.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/property.h>
+
 #include <asm/olpc.h>
 
 #define DRV_NAME "cs5535-mfd"
@@ -29,6 +32,11 @@ enum cs5535_mfd_bars {
 
 static struct resource cs5535_mfd_resources[NR_BARS];
 
+const struct software_node cs5535_gpio_swnode = {
+       .name = "cs5535-gpio",
+};
+EXPORT_SYMBOL_NS(cs5535_gpio_swnode, "CS5535");
+
 static struct mfd_cell cs5535_mfd_cells[] = {
        {
                .name = "cs5535-smb",
@@ -39,6 +47,7 @@ static struct mfd_cell cs5535_mfd_cells[] = {
                .name = "cs5535-gpio",
                .num_resources = 1,
                .resources = &cs5535_mfd_resources[GPIO_BAR],
+               .swnode = &cs5535_gpio_swnode,
        },
        {
                .name = "cs5535-mfgpt",
diff --git a/include/linux/mfd/cs5535.h b/include/linux/mfd/cs5535.h
new file mode 100644 (file)
index 0000000..2e4ebf5
--- /dev/null
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __MFD_CS5535_H__
+#define __MFD_CS5535_H__
+
+extern const struct software_node cs5535_gpio_swnode;
+
+#endif /* __MFD_CS5535_H__ */