summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-06-25 09:33:23 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-06-25 09:33:23 -0700
commit962528fef90253aeded29cee20a9b6ff3595fed4 (patch)
tree69f2373365d74da31f90a8ba4aec7dd47fb80717 /arch
parentec85be724c5c0c2cc392f5681b45da0403ea60ec (diff)
parent4e8eb6952aa6749726c6c3763ae0032a6332c24f (diff)
Merge tag 'gpio-fixes-for-v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
Pull gpio fixes from Bartosz Golaszewski: - fix locking context with shared GPIOs in gpio-tegra - fix IRQ domain leak in error path in gpio-davinci - fix returning a potentially uninitialized integer in gpiochip_set_multiple() - use raw spinlock in gpio-eic-sprd and gpio-sch to address locking context issues - bail out of probe() if registering the GPIO chip fails in gpio-mlxbf3 - fix varible type for storing the "ngpios" property in gpio-pisosr - fix out-of-bounds pin access in GPIO ACPI - make GPIO ACPI core only trigger interrupts on boot that are marked as ActiveBoth - fix kerneldoc in gpio-tb10x - reference the real software node of the cs5535 GPIO controller in Geode board file * tag 'gpio-fixes-for-v7.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: gpio: davinci: fix IRQ domain leak on devm_kzalloc failure gpio: tegra: do not call pinctrl for GPIO direction gpio: tb10x: fix struct tb10x_gpio kernel-doc gpiolib: initialize return value in gpiochip_set_multiple() x86/platform/geode: reference the real node of the cs5535 GPIO controller gpio: eic-sprd: use raw_spinlock_t in the irq startup path gpio: sch: use raw_spinlock_t in the irq startup path gpiolib: acpi: Prevent out-of-bounds pin access in OperationRegion handler gpiolib: acpi: Add robust bounds-checking for GPIO pin resources gpio: mlxbf3: fail probe if gpiochip registration fails gpio: pisosr: Read "ngpios" as u32 gpiolib: acpi: Only trigger ActiveBoth interrupts on boot
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/Kconfig10
-rw-r--r--arch/x86/platform/geode/geode-common.c12
2 files changed, 10 insertions, 12 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index fa4f0079614c..bdad90f210e4 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -3026,7 +3026,7 @@ config GEODE_COMMON
config ALIX
bool "PCEngines ALIX System Support (LED setup)"
- select GPIOLIB
+ depends on GPIO_CS5535=y
select GEODE_COMMON
help
This option enables system support for the PCEngines ALIX.
@@ -3034,21 +3034,21 @@ config ALIX
ALIX2/3/6 boards. However, other system specific setup should
get added here.
- Note: You must still enable the drivers for GPIO and LED support
- (GPIO_CS5535 & LEDS_GPIO) to actually use the LEDs
+ Note: You must still enable the drivers for LED support (LEDS_GPIO)
+ to actually use the LEDs
Note: You have to set alix.force=1 for boards with Award BIOS.
config NET5501
bool "Soekris Engineering net5501 System Support (LEDS, GPIO, etc)"
- select GPIOLIB
+ depends on GPIO_CS5535=y
select GEODE_COMMON
help
This option enables system support for the Soekris Engineering net5501.
config GEOS
bool "Traverse Technologies GEOS System Support (LEDS, GPIO, etc)"
- select GPIOLIB
+ depends on GPIO_CS5535=y
select GEODE_COMMON
depends on DMI
help
diff --git a/arch/x86/platform/geode/geode-common.c b/arch/x86/platform/geode/geode-common.c
index 1843ae385e2d..679b4b07b790 100644
--- a/arch/x86/platform/geode/geode-common.c
+++ b/arch/x86/platform/geode/geode-common.c
@@ -9,15 +9,12 @@
#include <linux/gpio/property.h>
#include <linux/input.h>
#include <linux/leds.h>
+#include <linux/mfd/cs5535.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include "geode-common.h"
-static const struct software_node geode_gpiochip_node = {
- .name = "cs5535-gpio",
-};
-
static const struct property_entry geode_gpio_keys_props[] = {
PROPERTY_ENTRY_U32("poll-interval", 20),
{ }
@@ -44,7 +41,6 @@ static const struct software_node geode_restart_key_node = {
};
static const struct software_node *geode_gpio_keys_swnodes[] __initconst = {
- &geode_gpiochip_node,
&geode_gpio_keys_node,
&geode_restart_key_node,
NULL
@@ -66,7 +62,7 @@ int __init geode_create_restart_key(unsigned int pin)
struct platform_device *pd;
int err;
- geode_restart_gpio_ref = SOFTWARE_NODE_REFERENCE(&geode_gpiochip_node,
+ geode_restart_gpio_ref = SOFTWARE_NODE_REFERENCE(&cs5535_gpio_swnode,
pin, GPIO_ACTIVE_LOW);
err = software_node_register_node_group(geode_gpio_keys_swnodes);
@@ -143,7 +139,7 @@ int __init geode_create_leds(const char *label, const struct geode_led *leds,
goto err_free_names;
}
- gpio_refs[i] = SOFTWARE_NODE_REFERENCE(&geode_gpiochip_node,
+ gpio_refs[i] = SOFTWARE_NODE_REFERENCE(&cs5535_gpio_swnode,
leds[i].pin,
GPIO_ACTIVE_LOW);
props[i * 3 + 0] =
@@ -188,3 +184,5 @@ err_free_swnodes:
kfree(swnodes);
return err;
}
+
+MODULE_IMPORT_NS("CS5535");