diff options
author | Bartosz Golaszewski <bgolaszewski@baylibre.com> | 2018-10-31 10:01:40 -0400 |
---|---|---|
committer | Bartosz Golaszewski <bgolaszewski@baylibre.com> | 2019-02-19 11:42:28 -0500 |
commit | cbf1e092f2d86e6d7cdb7f9ff8a333f52c826232 (patch) | |
tree | a99a1ee9c4a11fc967adb16a045ad2b9d568c6db /drivers/gpio | |
parent | 9212492f6eeaf944ee0966a85054a59314bb1c39 (diff) |
gpio: mockup: implement get_multiple()
We already support set_multiple(). Implement get_multiple() as well.
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-mockup.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c index b4c1de6acf74..1c945c967f60 100644 --- a/drivers/gpio/gpio-mockup.c +++ b/drivers/gpio/gpio-mockup.c | |||
@@ -102,6 +102,22 @@ static int gpio_mockup_get(struct gpio_chip *gc, unsigned int offset) | |||
102 | return val; | 102 | return val; |
103 | } | 103 | } |
104 | 104 | ||
105 | static int gpio_mockup_get_multiple(struct gpio_chip *gc, | ||
106 | unsigned long *mask, unsigned long *bits) | ||
107 | { | ||
108 | struct gpio_mockup_chip *chip = gpiochip_get_data(gc); | ||
109 | unsigned int bit, val; | ||
110 | |||
111 | mutex_lock(&chip->lock); | ||
112 | for_each_set_bit(bit, mask, gc->ngpio) { | ||
113 | val = __gpio_mockup_get(gc, bit); | ||
114 | __assign_bit(bit, bits, val); | ||
115 | } | ||
116 | mutex_unlock(&chip->lock); | ||
117 | |||
118 | return 0; | ||
119 | } | ||
120 | |||
105 | static void __gpio_mockup_set(struct gpio_chip *gc, | 121 | static void __gpio_mockup_set(struct gpio_chip *gc, |
106 | unsigned int offset, int value) | 122 | unsigned int offset, int value) |
107 | { | 123 | { |
@@ -327,6 +343,7 @@ static int gpio_mockup_probe(struct platform_device *pdev) | |||
327 | gc->parent = dev; | 343 | gc->parent = dev; |
328 | gc->get = gpio_mockup_get; | 344 | gc->get = gpio_mockup_get; |
329 | gc->set = gpio_mockup_set; | 345 | gc->set = gpio_mockup_set; |
346 | gc->get_multiple = gpio_mockup_get_multiple; | ||
330 | gc->set_multiple = gpio_mockup_set_multiple; | 347 | gc->set_multiple = gpio_mockup_set_multiple; |
331 | gc->direction_output = gpio_mockup_dirout; | 348 | gc->direction_output = gpio_mockup_dirout; |
332 | gc->direction_input = gpio_mockup_dirin; | 349 | gc->direction_input = gpio_mockup_dirin; |