]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: loongson-64bit: Extend GPIO irq support
authorBinbin Zhou <zhoubinbin@loongson.cn>
Mon, 14 Jul 2025 06:45:42 +0000 (14:45 +0800)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Wed, 16 Jul 2025 09:33:50 +0000 (11:33 +0200)
Add the interrupt enable register offset (inten_offset) so that GPIO
interrupts can be enabled normally on more models.

According to the latest interface specifications, the definition of GPIO
interrupts in ACPI is similar to that in FDT. The GPIO interrupts are
listed one by one according to the GPIO number, and the corresponding
interrupt number can be obtained directly through the GPIO number
specified by the consumer.

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
Link: https://lore.kernel.org/r/20250714064542.2276247-1-zhoubinbin@loongson.cn
[Bartosz: tweaked the commit message]
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-loongson-64bit.c

index 26227669f02692aeb943ec4be8b66b0dc968cac0..d5b2ad848519c33ff40763775500fb66d9002cb5 100644 (file)
@@ -222,6 +222,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls2k2000_data0 = {
        .conf_offset = 0x0,
        .in_offset = 0xc,
        .out_offset = 0x8,
+       .inten_offset = 0x14,
 };
 
 static const struct loongson_gpio_chip_data loongson_gpio_ls2k2000_data1 = {
@@ -230,6 +231,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls2k2000_data1 = {
        .conf_offset = 0x0,
        .in_offset = 0x20,
        .out_offset = 0x10,
+       .inten_offset = 0x30,
 };
 
 static const struct loongson_gpio_chip_data loongson_gpio_ls2k2000_data2 = {
@@ -246,6 +248,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls3a5000_data = {
        .conf_offset = 0x0,
        .in_offset = 0xc,
        .out_offset = 0x8,
+       .inten_offset = 0x14,
 };
 
 static const struct loongson_gpio_chip_data loongson_gpio_ls7a_data = {
@@ -254,6 +257,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls7a_data = {
        .conf_offset = 0x800,
        .in_offset = 0xa00,
        .out_offset = 0x900,
+       .inten_offset = 0xb00,
 };
 
 /* LS7A2000 chipset GPIO */
@@ -263,6 +267,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls7a2000_data0 = {
        .conf_offset = 0x800,
        .in_offset = 0xa00,
        .out_offset = 0x900,
+       .inten_offset = 0xb00,
 };
 
 /* LS7A2000 ACPI GPIO */
@@ -281,6 +286,7 @@ static const struct loongson_gpio_chip_data loongson_gpio_ls3a6000_data = {
        .conf_offset = 0x0,
        .in_offset = 0xc,
        .out_offset = 0x8,
+       .inten_offset = 0x14,
 };
 
 static const struct of_device_id loongson_gpio_of_match[] = {