304552f790fc43ff313afb4b76a08453ff19571a
[openwrt/staging/noltari.git] / target / linux / bcm27xx / patches-5.10 / 950-0277-serial-8250-bcm2835aux-defer-if-clock-is-zero.patch
1 From e3af8dd4ba4fc1ae6260823dfb3a82236471c353 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Thu, 2 Jul 2020 13:53:20 +0100
4 Subject: [PATCH] serial: 8250: bcm2835aux - defer if clock is zero
5
6 See: https://github.com/raspberrypi/linux/issues/3700
7
8 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
9 ---
10 drivers/tty/serial/8250/8250_bcm2835aux.c | 7 +++++++
11 1 file changed, 7 insertions(+)
12
13 --- a/drivers/tty/serial/8250/8250_bcm2835aux.c
14 +++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
15 @@ -148,6 +148,13 @@ static int bcm2835aux_serial_probe(struc
16 */
17 up.port.uartclk = clk_get_rate(data->clk) * 2;
18
19 + /* The clock is only queried at probe time, which means we get one shot
20 + * at this. A zero clock is never going to work and is almost certainly
21 + * due to a parent not being ready, so prefer to defer.
22 + */
23 + if (!up.port.uartclk)
24 + return -EPROBE_DEFER;
25 +
26 /* register the port */
27 ret = serial8250_register_8250_port(&up);
28 if (ret < 0) {