diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 14:58:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-09 14:58:15 -0400 |
commit | ea584595fc85e65796335033dfca25ed655cd0ed (patch) | |
tree | 79d444c507472f6c66d887ad332e7c1784eeb4de /drivers/tty | |
parent | 782d59c5dfc5ac39ac8cfb4c6dd40597938dde9c (diff) | |
parent | a092e19b688be88f7329bd05f90cb92ebe1a4f5b (diff) |
Merge tag 'gpio-v3.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio
Pull GPIO changes from Linus Walleij:
"This is the bulk of GPIO changes for the v3.18 development cycle:
- Increase the default ARCH_NR_GPIO from 256 to 512. This was done
to avoid having a custom <asm/gpio.h> header for the x86
architecture - GPIO is custom and complicated enough as it is
already! We want to move to a radix to store the descriptors going
forward, and finally get rid of this fixed array size altogether.
- Endgame patching of the gpio_remove() semantics initiated by
Abdoulaye Berthe. It is not accepted by the system that the
removal of a GPIO chip fails during eg reboot or shutdown, and
therefore the return value has now painfully been refactored away.
For special cases like GPIO expanders on a hot-pluggable bus like
USB, we may later add some gpiochip_try_remove() call, but for the
cases we have now, return values are moot.
- Some incremental refactoring of the gpiolib core and ACPI GPIO
library for more descriptor usage.
- Refactor the chained IRQ handler set-up method to handle also
threaded, nested interrupts and set up the parent IRQ correctly.
Switch STMPE and TC3589x drivers to use this registration method.
- Add a .irq_not_threaded flag to the struct gpio_chip, so that also
GPIO expanders that block but are still not using threaded IRQ
handlers.
- New drivers for the ARM64 X-Gene SoC GPIO controller.
- The syscon GPIO driver has been improved to handle the "DSP GPIO"
found on the TI Keystone 2 SoC:s.
- ADNP driver switched to use gpiolib irqchip helpers.
- Refactor the DWAPB driver to support being instantiated from and
MFD cell (platform device).
- Incremental feature improvement in the Zynq, MCP23S08, DWAPB, OMAP,
Xilinx and Crystalcove drivers.
- Various minor fixes"
* tag 'gpio-v3.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (52 commits)
gpio: pch: Build context save/restore only for PM
pinctrl: abx500: get rid of unused variable
gpio: ks8695: fix 'else should follow close brace '}''
gpio: stmpe: add verbose debug code
gpio: stmpe: fix up interrupt enable logic
gpio: staticize xway_stp_init()
gpio: handle also nested irqchips in the chained handler set-up
gpio: set parent irq on chained handlers
gpiolib: irqchip: use irq_find_mapping while removing irqchip
gpio: crystalcove: support virtual GPIO
pinctrl: bcm281xx: make Kconfig dependency more strict
gpio: kona: enable only on BCM_MOBILE or for compile testing
gpio, bcm-kona, LLVMLinux: Remove use of __initconst
gpio: Fix ngpio in gpio-xilinx driver
gpio: dwapb: fix pointer to integer cast
gpio: xgene: Remove unneeded #ifdef CONFIG_OF guard
gpio: xgene: Remove unneeded forward declation for struct xgene_gpio
gpio: xgene: Fix missing spin_lock_init()
gpio: ks8695: fix switch case indentation
gpiolib: add irq_not_threaded flag to gpio_chip
...
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/max310x.c | 10 | ||||
-rw-r--r-- | drivers/tty/serial/sc16is7xx.c | 13 |
2 files changed, 9 insertions, 14 deletions
diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c index 82573dc4d8cf..0041a64cc86e 100644 --- a/drivers/tty/serial/max310x.c +++ b/drivers/tty/serial/max310x.c | |||
@@ -1248,7 +1248,7 @@ static int max310x_probe(struct device *dev, struct max310x_devtype *devtype, | |||
1248 | mutex_destroy(&s->mutex); | 1248 | mutex_destroy(&s->mutex); |
1249 | 1249 | ||
1250 | #ifdef CONFIG_GPIOLIB | 1250 | #ifdef CONFIG_GPIOLIB |
1251 | WARN_ON(gpiochip_remove(&s->gpio)); | 1251 | gpiochip_remove(&s->gpio); |
1252 | 1252 | ||
1253 | out_uart: | 1253 | out_uart: |
1254 | #endif | 1254 | #endif |
@@ -1263,12 +1263,10 @@ out_clk: | |||
1263 | static int max310x_remove(struct device *dev) | 1263 | static int max310x_remove(struct device *dev) |
1264 | { | 1264 | { |
1265 | struct max310x_port *s = dev_get_drvdata(dev); | 1265 | struct max310x_port *s = dev_get_drvdata(dev); |
1266 | int i, ret = 0; | 1266 | int i; |
1267 | 1267 | ||
1268 | #ifdef CONFIG_GPIOLIB | 1268 | #ifdef CONFIG_GPIOLIB |
1269 | ret = gpiochip_remove(&s->gpio); | 1269 | gpiochip_remove(&s->gpio); |
1270 | if (ret) | ||
1271 | return ret; | ||
1272 | #endif | 1270 | #endif |
1273 | 1271 | ||
1274 | for (i = 0; i < s->uart.nr; i++) { | 1272 | for (i = 0; i < s->uart.nr; i++) { |
@@ -1282,7 +1280,7 @@ static int max310x_remove(struct device *dev) | |||
1282 | uart_unregister_driver(&s->uart); | 1280 | uart_unregister_driver(&s->uart); |
1283 | clk_disable_unprepare(s->clk); | 1281 | clk_disable_unprepare(s->clk); |
1284 | 1282 | ||
1285 | return ret; | 1283 | return 0; |
1286 | } | 1284 | } |
1287 | 1285 | ||
1288 | static const struct of_device_id __maybe_unused max310x_dt_ids[] = { | 1286 | static const struct of_device_id __maybe_unused max310x_dt_ids[] = { |
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index 3284c31085a7..6246820d7f05 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c | |||
@@ -1157,7 +1157,7 @@ static int sc16is7xx_probe(struct device *dev, | |||
1157 | 1157 | ||
1158 | #ifdef CONFIG_GPIOLIB | 1158 | #ifdef CONFIG_GPIOLIB |
1159 | if (devtype->nr_gpio) | 1159 | if (devtype->nr_gpio) |
1160 | WARN_ON(gpiochip_remove(&s->gpio)); | 1160 | gpiochip_remove(&s->gpio); |
1161 | 1161 | ||
1162 | out_uart: | 1162 | out_uart: |
1163 | #endif | 1163 | #endif |
@@ -1173,14 +1173,11 @@ out_clk: | |||
1173 | static int sc16is7xx_remove(struct device *dev) | 1173 | static int sc16is7xx_remove(struct device *dev) |
1174 | { | 1174 | { |
1175 | struct sc16is7xx_port *s = dev_get_drvdata(dev); | 1175 | struct sc16is7xx_port *s = dev_get_drvdata(dev); |
1176 | int i, ret = 0; | 1176 | int i; |
1177 | 1177 | ||
1178 | #ifdef CONFIG_GPIOLIB | 1178 | #ifdef CONFIG_GPIOLIB |
1179 | if (s->devtype->nr_gpio) { | 1179 | if (s->devtype->nr_gpio) |
1180 | ret = gpiochip_remove(&s->gpio); | 1180 | gpiochip_remove(&s->gpio); |
1181 | if (ret) | ||
1182 | return ret; | ||
1183 | } | ||
1184 | #endif | 1181 | #endif |
1185 | 1182 | ||
1186 | for (i = 0; i < s->uart.nr; i++) { | 1183 | for (i = 0; i < s->uart.nr; i++) { |
@@ -1195,7 +1192,7 @@ static int sc16is7xx_remove(struct device *dev) | |||
1195 | if (!IS_ERR(s->clk)) | 1192 | if (!IS_ERR(s->clk)) |
1196 | clk_disable_unprepare(s->clk); | 1193 | clk_disable_unprepare(s->clk); |
1197 | 1194 | ||
1198 | return ret; | 1195 | return 0; |
1199 | } | 1196 | } |
1200 | 1197 | ||
1201 | static const struct of_device_id __maybe_unused sc16is7xx_dt_ids[] = { | 1198 | static const struct of_device_id __maybe_unused sc16is7xx_dt_ids[] = { |