linux/drivers/tty
Timur Tabi 37ef38f3f8 tty: pl011: fix initialization order of QDF2400 E44
The work-around for Qualcomm Technologies QDF2400 Erratum 44 hinges on a
global variable defined in the pl011 driver.  The ACPI SPCR parsing code
determines whether the work-around is needed, and if so, it changes the
console name from "pl011" to "qdf2400_e44".  The expectation is that
the pl011 driver will implement the work-around when it sees the console
name.  The global variable qdf2400_e44_present is set when that happens.

The problem is that work-around needs to be enabled when the pl011
driver probes, not when the console name is queried.  However, sbsa_probe()
is called before pl011_console_match().  The work-around appeared to work
previously because the default console on QDF2400 platforms was always
ttyAMA1.  The first time sbsa_probe() is called (for ttyAMA0),
qdf2400_e44_present is still false.  Then pl011_console_match() is called,
and it sets qdf2400_e44_present to true.  All subsequent calls to
sbsa_probe() enable the work-around.

The solution is to move the global variable into spcr.c and let the
pl011 driver query it during probe time.  This works because all QDF2400
platforms require SPCR, so parse_spcr() will always be called.
pl011_console_match still checks for the "qdf2400_e44" console name,
but it doesn't do anything else special.

Fixes: 5a0722b898 ("tty: pl011: use "qdf2400_e44" as the earlycon name for QDF2400 E44")
Tested-by: Jeffrey Hugo <jhugo@codeaurora.org>
Signed-off-by: Timur Tabi <timur@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-07-30 07:53:44 -07:00
..
hvc driver core patches for 4.13-rc1 2017-07-03 20:27:48 -07:00
ipwireless networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
serdev driver core patches for 4.13-rc1 2017-07-03 20:27:48 -07:00
serial tty: pl011: fix initialization order of QDF2400 E44 2017-07-30 07:53:44 -07:00
vt vt: fix \e[2m using the wrong placeholder color on graphical consoles 2017-06-09 11:20:08 +02:00
amiserial.c tty: amiserial: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
bfin_jtag_comm.c
cyclades.c tty: cyclades: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
ehv_bytechan.c tty: ehv_bytechan: clean up init error handling 2017-05-18 16:43:55 +02:00
goldfish.c tty: goldfish: Fix a parameter of a call to free_irq 2017-01-12 11:51:25 +01:00
isicom.c
Kconfig devpts: Make each mount of devpts an independent filesystem. 2016-06-05 10:36:01 -07:00
Makefile tty: handle the case where we cannot restore a line discipline 2017-06-03 18:43:46 +09:00
metag_da.c timers, drivers/tty/metag_da: Initialize the poll timer as pinned 2016-07-07 10:25:14 +02:00
mips_ejtag_fdc.c timers, drivers/tty/mips_ejtag: Initialize the poll timer as pinned 2016-07-07 10:34:59 +02:00
moxa.c Annotate hardware config module parameters in drivers/tty/ 2017-04-20 12:02:32 +01:00
moxa.h
mxser.c Annotate hardware config module parameters in drivers/tty/ 2017-04-20 12:02:32 +01:00
mxser.h
n_gsm.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-07-05 12:31:59 -07:00
n_hdlc.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
n_null.c tty: handle the case where we cannot restore a line discipline 2017-06-03 18:43:46 +09:00
n_r3964.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c Fix OpenSSH pty regression on close 2016-05-01 13:22:54 -07:00
nozomi.c tty: nozomi: avoid sprintf buffer overflow 2016-11-29 20:20:07 +01:00
pty.c tty: hide unused pty_get_peer function 2017-07-17 17:04:41 +02:00
rocket_int.h
rocket.c tty: rocket: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
rocket.h
synclink_gt.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-07-05 12:31:59 -07:00
synclink.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
synclinkmp.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
sysrq.c oom: improve oom disable handling 2017-05-03 15:52:10 -07:00
tty_audit.c
tty_baudrate.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_buffer.c tty_port: Add port client functions 2017-02-03 10:17:02 +01:00
tty_io.c tty: add function to convert device name to number 2017-06-27 09:08:47 +02:00
tty_ioctl.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_jobctrl.c tty: split job control support into a file of its own 2017-04-18 18:01:52 +02:00
tty_ldisc.c TTY/Serial patches for 4.13-rc1 2017-07-03 20:04:16 -07:00
tty_ldsem.c sched/headers: Prepare to move the get_task_struct()/put_task_struct() and related APIs from <linux/sched.h> to <linux/sched/task.h> 2017-03-02 08:42:40 +01:00
tty_mutex.c
tty_port.c Revert "tty: fix port buffer locking" 2017-06-04 10:23:25 +02:00