]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: rockchip: change the GPIO version judgment logic
authorYe Zhang <ye.zhang@rock-chips.com>
Tue, 12 Nov 2024 01:54:06 +0000 (09:54 +0800)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Tue, 12 Nov 2024 12:51:25 +0000 (13:51 +0100)
Have a list of valid IDs and default to -ENODEV.

Signed-off-by: Ye Zhang <ye.zhang@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20241112015408.3139996-3-ye.zhang@rock-chips.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-rockchip.c

index 00883810f429de8bc4f92679e7de503d05bbdab9..a02deea4dbbf01253b5021d71f729143e7e208ab 100644 (file)
@@ -667,8 +667,9 @@ static int rockchip_get_bank_data(struct rockchip_pin_bank *bank)
        clk_prepare_enable(bank->clk);
        id = readl(bank->reg_base + gpio_regs_v2.version_id);
 
-       /* If not gpio v2, that is default to v1. */
-       if (id == GPIO_TYPE_V2 || id == GPIO_TYPE_V2_1) {
+       switch (id) {
+       case GPIO_TYPE_V2:
+       case GPIO_TYPE_V2_1:
                bank->gpio_regs = &gpio_regs_v2;
                bank->gpio_type = GPIO_TYPE_V2;
                bank->db_clk = of_clk_get(bank->of_node, 1);
@@ -677,9 +678,14 @@ static int rockchip_get_bank_data(struct rockchip_pin_bank *bank)
                        clk_disable_unprepare(bank->clk);
                        return -EINVAL;
                }
-       } else {
+               break;
+       case GPIO_TYPE_V1:
                bank->gpio_regs = &gpio_regs_v1;
                bank->gpio_type = GPIO_TYPE_V1;
+               break;
+       default:
+               dev_err(bank->dev, "unsupported version ID: 0x%08x\n", id);
+               return -ENODEV;
        }
 
        return 0;