hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/gpio/gpio-pisosr.c
....@@ -65,7 +65,7 @@
6565 unsigned offset)
6666 {
6767 /* This device always input */
68
- return 1;
68
+ return GPIO_LINE_DIRECTION_IN;
6969 }
7070
7171 static int pisosr_gpio_direction_input(struct gpio_chip *chip,
....@@ -96,16 +96,16 @@
9696 unsigned long *mask, unsigned long *bits)
9797 {
9898 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;
101102
102103 pisosr_gpio_refresh(gpio);
103104
104105 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);
109109 }
110110
111111 return 0;
....@@ -148,12 +148,9 @@
148148 return -ENOMEM;
149149
150150 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");
157154
158155 mutex_init(&gpio->lock);
159156