Hi William, I love your patch! Yet something to improve: [auto build test ERROR on v4.16-rc4] [also build test ERROR on next-20180316] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/William-Breathitt-Gray/Implement-get_multiple-for-ACCES-and-PC-104-drivers/20180317-224135 config: x86_64-randconfig-x016-201810 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): drivers/gpio/gpio-104-idi-48.c: In function 'idi_48_gpio_get_multiple': >> drivers/gpio/gpio-104-idi-48.c:120:3: error: 'word_mask' undeclared (first use in this function); did you mean 'port_mask'? word_mask = mask[word_index] & (port_mask << word_offset); ^~~~~~~~~ port_mask drivers/gpio/gpio-104-idi-48.c:120:3: note: each undeclared identifier is reported only once for each function it appears in >> drivers/gpio/gpio-104-idi-48.c:127:20: error: 'idi48egpio' undeclared (first use in this function); did you mean 'idi48gpio'? port_state = inb(idi48egpio->base + ports[i]); ^~~~~~~~~~ idi48gpio drivers/gpio/gpio-104-idi-48.c:101:16: warning: unused variable 'mask_word' [-Wunused-variable] unsigned long mask_word; ^~~~~~~~~ drivers/gpio/gpio-104-idi-48.c:94:28: warning: unused variable 'idi48gpio' [-Wunused-variable] struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip); ^~~~~~~~~ vim +120 drivers/gpio/gpio-104-idi-48.c 90 91 static int idi_48_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask, 92 unsigned long *bits) 93 { 94 struct idi_48_gpio *const idi48gpio = gpiochip_get_data(chip); 95 size_t i; 96 const size_t ports[] = { 0, 1, 2, 4, 5, 6 }; 97 const unsigned int gpio_reg_size = 8; 98 unsigned int bits_offset; 99 size_t word_index; 100 unsigned int word_offset; 101 unsigned long mask_word; 102 const unsigned long port_mask = GENMASK(gpio_reg_size, 0); 103 unsigned long port_state; 104 105 /* clear bits array to a clean slate */ 106 bitmap_zero(bits, chip->ngpio); 107 108 /* get bits are evaluated a gpio port register at a time */ 109 for (i = 0; i < ARRAY_SIZE(ports); i++) { 110 /* gpio offset in bits array */ 111 bits_offset = i * gpio_reg_size; 112 113 /* word index for bits array */ 114 word_index = BIT_WORD(bits_offset); 115 116 /* gpio offset within current word of bits array */ 117 word_offset = bits_offset % BITS_PER_LONG; 118 119 /* mask of get bits for current gpio within current word */ > 120 word_mask = mask[word_index] & (port_mask << word_offset); 121 if (!word_mask) { 122 /* no get bits in this port so skip to next one */ 123 continue; 124 } 125 126 /* read bits from current gpio port */ > 127 port_state = inb(idi48egpio->base + ports[i]); 128 129 /* store acquired bits at respective bits array offset */ 130 bits[word_index] |= port_state << word_offset; 131 } 132 133 return 0; 134 } 135 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip