]> git.baikalelectronics.ru Git - kernel.git/commitdiff
gpio: dwapb: Add max GPIOs macro
authorSerge Semin <Sergey.Semin@baikalelectronics.ru>
Thu, 30 Jul 2020 15:28:01 +0000 (18:28 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 27 Aug 2020 08:32:57 +0000 (10:32 +0200)
Add a new macro DWAPB_MAX_GPIOS which defines the maximum possible number
of GPIO lines corresponding to the maximum DW APB GPIO controller port
width. Use the new macro instead of number literal 32 where it's
applicable.

Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20200730152808.2955-5-Sergey.Semin@baikalelectronics.ru
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-dwapb.c
include/linux/platform_data/gpio-dwapb.h

index 3081213247d82024e17d402bfc772d79850db996..f3400115285040adc898aa749afb05ab90990da8 100644 (file)
@@ -162,7 +162,7 @@ static struct dwapb_gpio_port *dwapb_offs_to_port(struct dwapb_gpio *gpio, unsig
 
        for (i = 0; i < gpio->nr_ports; i++) {
                port = &gpio->ports[i];
-               if (port->idx == offs / 32)
+               if (port->idx == offs / DWAPB_MAX_GPIOS)
                        return port;
        }
 
@@ -182,7 +182,7 @@ static void dwapb_toggle_trigger(struct dwapb_gpio *gpio, unsigned int offs)
 
        pol = dwapb_read(gpio, GPIO_INT_POLARITY);
        /* Just read the current value right out of the data register */
-       val = gc->get(gc, offs % 32);
+       val = gc->get(gc, offs % DWAPB_MAX_GPIOS);
        if (val)
                pol &= ~BIT(offs);
        else
@@ -197,7 +197,7 @@ static u32 dwapb_do_irq(struct dwapb_gpio *gpio)
        irq_hw_number_t hwirq;
 
        irq_status = dwapb_read(gpio, GPIO_INTSTATUS);
-       for_each_set_bit(hwirq, &irq_status, 32) {
+       for_each_set_bit(hwirq, &irq_status, DWAPB_MAX_GPIOS) {
                int gpio_irq = irq_find_mapping(gpio->domain, hwirq);
                u32 irq_type = irq_get_trigger_type(gpio_irq);
 
@@ -599,7 +599,7 @@ static struct dwapb_platform_data *dwapb_gpio_get_pdata(struct device *dev)
                        dev_info(dev,
                                 "failed to get number of gpios for port%d\n",
                                 i);
-                       pp->ngpio = 32;
+                       pp->ngpio = DWAPB_MAX_GPIOS;
                }
 
                pp->irq_shared  = false;
index ff1be737bad6aa85f8a8b215c8afb889f40f0b45..0aa5c6720259e7907583ce9ab1cba74d5b6218b0 100644 (file)
@@ -6,12 +6,14 @@
 #ifndef GPIO_DW_APB_H
 #define GPIO_DW_APB_H
 
+#define DWAPB_MAX_GPIOS                32
+
 struct dwapb_port_property {
        struct fwnode_handle *fwnode;
        unsigned int    idx;
        unsigned int    ngpio;
        unsigned int    gpio_base;
-       int             irq[32];
+       int             irq[DWAPB_MAX_GPIOS];
        bool            irq_shared;
 };