summaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorBartosz Golaszewski <bgolaszewski@baylibre.com>2018-10-31 10:01:40 -0400
committerBartosz Golaszewski <bgolaszewski@baylibre.com>2019-02-19 11:42:28 -0500
commitcbf1e092f2d86e6d7cdb7f9ff8a333f52c826232 (patch)
treea99a1ee9c4a11fc967adb16a045ad2b9d568c6db /drivers/gpio
parent9212492f6eeaf944ee0966a85054a59314bb1c39 (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.c17
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
105static 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
105static void __gpio_mockup_set(struct gpio_chip *gc, 121static 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;