The NBANK macro can be extended in order to avoid the underflow: #define NBANK(chip) (chip->gpio_chip.ngpio == 0 ? 0 : \ ((chip->gpio_chip.ngpio + (BANK_SZ - 1)) / BANK_SZ)) Resending a modified patch. Signed-off-by: Frank Edelhaeuser <mrpace2 <at> gmail.com> --- diff -Nur a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c --- a/drivers/gpio/gpio-pca953x.c 2016-03-10 02:34:56.012345678 +0000 +++ b/drivers/gpio/gpio-pca953x.c 2016-03-10 02:34:56.012345678 +0000 @@ -86,7 +86,8 @@ #define MAX_BANK 5 #define BANK_SZ 8 -#define NBANK(chip) (chip->gpio_chip.ngpio / BANK_SZ) +#define NBANK(chip) (chip->gpio_chip.ngpio == 0 ? 0 : \ + ((chip->gpio_chip.ngpio + (BANK_SZ - 1)) / BANK_SZ)) struct pca953x_chip { unsigned gpio_start; -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html