mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
gpio: siox: normalize return value of gpio_get()
gpio_siox_get() returns the masked bit from the cached input or output byte, so for most lines a high level reads back as a value between 2 and 128 instead of 1. The GPIO get callback is expected to return 0 or 1 (or a negative error code). Since commit86ef402d80("gpiolib: sanitize the return value of gpio_chip::get()"), gpiolib rejected such values with -EBADE and reads of a high line failed. Commitec2cceadfa("gpiolib: normalize the return value of gc->get() on behalf of buggy drivers") made gpiolib clamp the value instead, but it now warns on every such read. Normalize the value returned by gpio_siox_get() to the [0, 1] range. Signed-off-by: Ridham Khurana <khurana.ridham222@gmail.com> Link: https://patch.msgid.link/20260922211702.1480614-1-khurana.ridham222@gmail.com Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
This commit is contained in:
parent
b399579a8e
commit
209fcf6258
|
|
@ -148,11 +148,11 @@ static int gpio_siox_get(struct gpio_chip *chip, unsigned int offset)
|
|||
if (offset >= 12) {
|
||||
unsigned int bitpos = 19 - offset;
|
||||
|
||||
ret = ddata->setdata[0] & (1 << bitpos);
|
||||
ret = !!(ddata->setdata[0] & (1 << bitpos));
|
||||
} else {
|
||||
unsigned int bitpos = 11 - offset;
|
||||
|
||||
ret = ddata->getdata[bitpos / 8] & (1 << (bitpos % 8));
|
||||
ret = !!(ddata->getdata[bitpos / 8] & (1 << (bitpos % 8)));
|
||||
}
|
||||
|
||||
mutex_unlock(&ddata->lock);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user