aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 14:58:15 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 14:58:15 -0400
commitea584595fc85e65796335033dfca25ed655cd0ed (patch)
tree79d444c507472f6c66d887ad332e7c1784eeb4de /drivers/tty
parent782d59c5dfc5ac39ac8cfb4c6dd40597938dde9c (diff)
parenta092e19b688be88f7329bd05f90cb92ebe1a4f5b (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.c10
-rw-r--r--drivers/tty/serial/sc16is7xx.c13
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
1253out_uart: 1253out_uart:
1254#endif 1254#endif
@@ -1263,12 +1263,10 @@ out_clk:
1263static int max310x_remove(struct device *dev) 1263static 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
1288static const struct of_device_id __maybe_unused max310x_dt_ids[] = { 1286static 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
1162out_uart: 1162out_uart:
1163#endif 1163#endif
@@ -1173,14 +1173,11 @@ out_clk:
1173static int sc16is7xx_remove(struct device *dev) 1173static 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
1201static const struct of_device_id __maybe_unused sc16is7xx_dt_ids[] = { 1198static const struct of_device_id __maybe_unused sc16is7xx_dt_ids[] = {