mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
of/gpio: add default of_xlate function if device has a node pointer
Implement generic OF gpio hooks and thus make device-enabled GPIO chips (i.e. the ones that have gpio_chip->dev specified) automatically attach to the OpenFirmware subsystem. Which means that now we can handle I2C and SPI GPIO chips almost* transparently. * "Almost" because some chips still require platform data, and for these chips OF-glue is still needed, though with this change the glue will be much smaller. Signed-off-by: Anton Vorontsov <[email protected]> Signed-off-by: Grant Likely <[email protected]> Cc: David Brownell <[email protected]> Cc: Bill Gatliff <[email protected]> Cc: Dmitry Eremin-Solenikov <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Jean Delvare <[email protected]> Cc: Andrew Morton <[email protected]> CC: [email protected] CC: [email protected]
This commit is contained in:
parent
594fa265e0
commit
391c970c0d
13 changed files with 34 additions and 26 deletions
|
|
@ -8,6 +8,7 @@
|
|||
#include <linux/debugfs.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/idr.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
|
|
@ -1099,6 +1100,8 @@ int gpiochip_add(struct gpio_chip *chip)
|
|||
}
|
||||
}
|
||||
|
||||
of_gpiochip_add(chip);
|
||||
|
||||
unlock:
|
||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||
|
||||
|
|
@ -1133,6 +1136,8 @@ int gpiochip_remove(struct gpio_chip *chip)
|
|||
|
||||
spin_lock_irqsave(&gpio_lock, flags);
|
||||
|
||||
of_gpiochip_remove(chip);
|
||||
|
||||
for (id = chip->base; id < chip->base + chip->ngpio; id++) {
|
||||
if (test_bit(FLAG_REQUESTED, &gpio_desc[id].flags)) {
|
||||
status = -EBUSY;
|
||||
|
|
|
|||
|
|
@ -190,7 +190,6 @@ static int __devinit xgpio_of_probe(struct device_node *np)
|
|||
|
||||
spin_lock_init(&chip->gpio_lock);
|
||||
|
||||
chip->mmchip.gc.of_gpio_n_cells = 2;
|
||||
chip->mmchip.gc.direction_input = xgpio_dir_in;
|
||||
chip->mmchip.gc.direction_output = xgpio_dir_out;
|
||||
chip->mmchip.gc.get = xgpio_get;
|
||||
|
|
|
|||
Loading…
Reference in a new issue