| .. | .. |
|---|
| 65 | 65 | unsigned offset) |
|---|
| 66 | 66 | { |
|---|
| 67 | 67 | /* This device always input */ |
|---|
| 68 | | - return 1; |
|---|
| 68 | + return GPIO_LINE_DIRECTION_IN; |
|---|
| 69 | 69 | } |
|---|
| 70 | 70 | |
|---|
| 71 | 71 | static int pisosr_gpio_direction_input(struct gpio_chip *chip, |
|---|
| .. | .. |
|---|
| 96 | 96 | unsigned long *mask, unsigned long *bits) |
|---|
| 97 | 97 | { |
|---|
| 98 | 98 | struct pisosr_gpio *gpio = gpiochip_get_data(chip); |
|---|
| 99 | | - unsigned int nbytes = DIV_ROUND_UP(chip->ngpio, 8); |
|---|
| 100 | | - unsigned int i, j; |
|---|
| 99 | + unsigned long offset; |
|---|
| 100 | + unsigned long gpio_mask; |
|---|
| 101 | + unsigned long buffer_state; |
|---|
| 101 | 102 | |
|---|
| 102 | 103 | pisosr_gpio_refresh(gpio); |
|---|
| 103 | 104 | |
|---|
| 104 | 105 | bitmap_zero(bits, chip->ngpio); |
|---|
| 105 | | - for (i = 0; i < nbytes; i++) { |
|---|
| 106 | | - j = i / sizeof(unsigned long); |
|---|
| 107 | | - bits[j] |= ((unsigned long) gpio->buffer[i]) |
|---|
| 108 | | - << (8 * (i % sizeof(unsigned long))); |
|---|
| 106 | + for_each_set_clump8(offset, gpio_mask, mask, chip->ngpio) { |
|---|
| 107 | + buffer_state = gpio->buffer[offset / 8] & gpio_mask; |
|---|
| 108 | + bitmap_set_value8(bits, buffer_state, offset); |
|---|
| 109 | 109 | } |
|---|
| 110 | 110 | |
|---|
| 111 | 111 | return 0; |
|---|
| .. | .. |
|---|
| 148 | 148 | return -ENOMEM; |
|---|
| 149 | 149 | |
|---|
| 150 | 150 | gpio->load_gpio = devm_gpiod_get_optional(dev, "load", GPIOD_OUT_LOW); |
|---|
| 151 | | - if (IS_ERR(gpio->load_gpio)) { |
|---|
| 152 | | - ret = PTR_ERR(gpio->load_gpio); |
|---|
| 153 | | - if (ret != -EPROBE_DEFER) |
|---|
| 154 | | - dev_err(dev, "Unable to allocate load GPIO\n"); |
|---|
| 155 | | - return ret; |
|---|
| 156 | | - } |
|---|
| 151 | + if (IS_ERR(gpio->load_gpio)) |
|---|
| 152 | + return dev_err_probe(dev, PTR_ERR(gpio->load_gpio), |
|---|
| 153 | + "Unable to allocate load GPIO\n"); |
|---|
| 157 | 154 | |
|---|
| 158 | 155 | mutex_init(&gpio->lock); |
|---|
| 159 | 156 | |
|---|