]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:40:58 +0000 (18:40 +0200)
[ Upstream commit 27cb8f702eb789f97f7a8bd5a91d76c65a937b2f ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpio/gpio-loongson-64bit.c

index 70a01c5b8ad1762e4e70e1b9b0b27abac3f46ebd..add09971d26a18653259978bc25a0af822a58199 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[] = {