1
0
Fork 0
alistair23-linux/drivers/tty/serial
Laurent Pinchart caec70381b serial: sh-sci: Don't enable/disable port from within break timer
The break timer accesses hardware registers and thus requires the port
to be enabled. It currently ensures this by enabling the port at the
beginning of the timer handler, and disabling it at the end. However,
the enable/disable operations call the runtime PM sync functions, which
are not allowed in atomic context. The current situation is thus broken.

This change relies on non-atomic code to enable/disable the port. The
break timer will only be started from the IRQ handler, which already
runs with the port enabled. We just need to ensure that the port won't
be disabled with the timer running, and that's easily done by just
cancelling the timer in the port disable function.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Magnus Damm <damm@opensource.se>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
2013-12-14 09:58:12 +09:00
..
8250 serial: 8250_pci: add Pericom PCIe Serial board Support (12d8:7952/4/8) - Chip PI7C9X7952/4/8 2013-10-19 19:51:17 -07:00
cpm_uart Merge remote-tracking branch 'grant/devicetree/next' into for-next 2013-11-07 10:34:46 -06:00
jsm TTY: jsm, remove superfluous check 2013-03-18 16:17:20 -07:00
21285.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
68328serial.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu 2013-05-10 07:22:35 -07:00
Kconfig serial: sh-sci: Enable the driver on all ARM platforms 2013-10-29 17:01:02 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2013-09-06 11:14:33 -07:00
altera_jtaguart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
altera_uart.c ARM: SoC DT updates for 3.12 2013-09-06 13:26:27 -07:00
amba-pl010.c serial: Remove unnecessary amba_set_drvdata() 2013-10-03 16:09:47 -07:00
amba-pl011.c serial: Remove unnecessary amba_set_drvdata() 2013-10-03 16:09:47 -07:00
apbuart.c tty: serial: apbuart: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:33 -07:00
apbuart.h
ar933x_uart.c tty: ar933x_uart: add device tree support and binding documentation 2013-08-30 14:11:27 -07:00
arc_uart.c serial: arc_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
atmel_serial.c tty/serial: at91: add a fallback option to determine uart/usart property 2013-10-17 13:31:19 -07:00
bcm63xx_uart.c tty: serial: bcm63xx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
bfin_sport_uart.c serial: bfin_sport_uart: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
bfin_sport_uart.h tty: bfin-sport-uart: Rx interrupt is not called always with irq disabled. 2011-12-09 19:05:33 -08:00
bfin_uart.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
clps711x.c serial: clps711x: drop needless devm_clk_put 2013-09-26 15:44:46 -07:00
crisv10.c crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
crisv10.h crisv10: use counts from tty_port 2013-03-18 16:26:33 -07:00
dz.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
dz.h
efm32-uart.c tty: serial: efm32: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
fsl_lpuart.c serial: fsl_lpuart: Return proper error on lpuart_serial_init error path 2013-07-26 16:01:20 -07:00
icom.c serial: icom: move array overflow checks earlier 2013-08-27 16:24:33 -07:00
icom.h
ifx6x60.c serial: ifx6x60: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
ifx6x60.h serial:ifx6x60:Prevent data transfer when IFX6x60 port is shutdown 2012-11-01 08:50:01 -07:00
imx.c TTY/Serial driver updates for 3.13-rc1 2013-11-07 12:17:06 +09:00
ioc3_serial.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
ioc4_serial.c serial: ioc4_serial: Staticize ioc4_serial_attach_one() 2013-08-12 11:35:32 -07:00
ip22zilog.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
ip22zilog.h
kgdb_nmi.c kgdb: remove #include <linux/serial_8250.h> from kgdb.h 2013-02-04 15:35:26 -08:00
kgdboc.c treewide: Convert retrun typos to return 2013-09-04 12:26:36 +02:00
lantiq.c serial: MIPS: lantiq: fix clock error check 2013-08-12 11:37:48 -07:00
lpc32xx_hs.c tty: serial: lpc32xx_hs: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio.c tty: serial: m32r_sio: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
m32r_sio.h TTY: serial, include pci.h in m32r_sio 2012-03-08 11:47:02 -08:00
m32r_sio_reg.h m32r: relocate drivers back out of 8250 dir 2012-02-08 15:04:32 -08:00
max310x.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
max3100.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
mcf.c tty: serial: mcf: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
mfd.c serial: mfd: Staticize local symbols 2013-10-29 16:34:11 -07:00
mpc52xx_uart.c serial: mpc52xx: remove reference to .set_wake() 2013-10-16 13:16:19 -07:00
mpsc.c serial: mpsc: Remove casting the return value which is a void pointer 2013-09-26 14:29:58 -07:00
mrst_max3110.c mrst_max3110: fix unbalanced IRQ issue during resume 2013-10-29 16:26:54 -07:00
mrst_max3110.h
msm_serial.c msm_serial: Send more than 1 character on the console w/ UARTDM 2013-08-27 16:22:59 -07:00
msm_serial.h msm_serial: Make baud_code detection more dynamic 2013-07-26 16:13:29 -07:00
msm_serial_hs.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
msm_smd_tty.c TTY: msm_smd_tty, clean up activate/shutdown 2013-03-18 16:19:44 -07:00
mux.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
mxs-auart.c serial: mxs-auart: set the FIFO size to DMA buffer size 2013-10-05 18:03:01 -07:00
netx-serial.c tty: serial: netx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:34 -07:00
nwpserial.c tty: serial: nwpserial: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
of_serial.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
omap-serial.c serial: omap: fix missing comma 2013-10-31 09:03:20 -07:00
pch_uart.c serial: pch_uart: remove reference to .set_wake() 2013-10-16 13:16:19 -07:00
pmac_zilog.c DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
pmac_zilog.h tty/serial/pmac_zilog: Fix suspend & resume 2011-12-16 11:10:01 +11:00
pnx8xxx_uart.c tty: serial: pnx8xxx: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
pxa.c serial: pxa: Staticize local symbols 2013-08-12 11:10:16 -07:00
rp2.c tty: serial: rp2: drop uart_port->lock before calling tty_flip_buffer_push() 2013-08-27 16:17:35 -07:00
sa1100.c serial: sa1100: delete .set_wake callback 2013-10-16 13:16:18 -07:00
samsung.c serial: samsung: add support for manual RTS setting 2013-09-26 15:41:38 -07:00
samsung.h serial: samsung: Remove casting the return value which is a void pointer 2013-09-26 14:29:59 -07:00
sb1250-duart.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
sc26xx.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
sccnxp.c serial: sccnxp: missing uart_unregister_driver() on error in sccnxp_probe() 2013-09-26 15:44:45 -07:00
serial-tegra.c serial: tegra: remove deprecated IRQF_DISABLED 2013-10-07 00:13:58 -07:00
serial_core.c serial: report base_baud after initialization 2013-07-26 16:03:05 -07:00
serial_ks8695.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
serial_txx9.c serial: txx9: remove unnecessary pci_set_drvdata() 2013-09-26 15:41:38 -07:00
sh-sci.c serial: sh-sci: Don't enable/disable port from within break timer 2013-12-14 09:58:12 +09:00
sh-sci.h serial: sh-sci: remove obsolete Kconfig macros 2013-03-25 14:06:45 -07:00
sirfsoc_uart.c serial: sirf: don't submit dma desc after timeout irqs occur 2013-09-26 15:41:39 -07:00
sirfsoc_uart.h serial: sirf: remove duplicate defines 2013-10-29 16:26:54 -07:00
sn_console.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
st-asc.c serial: st-asc: remove unnecessary platform_set_drvdata() 2013-08-27 16:24:33 -07:00
suncore.c tty: sparc: rename drivers/tty/serial/suncore.h -> include/linux/sunserialcore.h 2012-02-10 10:44:35 -08:00
sunhv.c serial: use platform_{get,set}_drvdata() 2013-06-03 10:21:33 -07:00
sunsab.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
sunsab.h
sunsu.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
sunzilog.c tty: Remove unnecessary semicolons 2013-10-16 13:08:16 -07:00
sunzilog.h
tilegx.c tilegx: Add tty serial support for TILE-Gx on-chip UART 2013-09-03 14:50:40 -04:00
timbuart.c serial: timbuart: Staticize local symbols 2013-08-12 11:35:31 -07:00
timbuart.h
uartlite.c tty: serial: uartlite: Support uartlite on big and little endian systems 2013-02-13 08:38:45 -08:00
ucc_uart.c DeviceTree updates for 3.13. This is a bit larger pull request than 2013-11-12 16:52:17 +09:00
vr41xx_siu.c serial: use dev_get_platdata() 2013-07-31 17:56:15 -07:00
vt8500_serial.c serial: vt8500: add missing braces 2013-10-16 13:22:16 -07:00
xilinx_uartps.c tty: xuartps: Fix build error when COMMON_CLK is not set 2013-10-29 09:26:11 -07:00
zs.c TTY: switch tty_flip_buffer_push 2013-01-15 22:30:15 -08:00
zs.h