mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: ukl@pengutronix.de, "Daniel Brát" <danek.brat@gmail.com>,
	ore@pengutronix.de, "Ahmad Fatoum" <a.fatoum@pengutronix.de>
Subject: [PATCH 09/15] serial: ns16550: rpi: skip baudrate changes for bcm2711
Date: Thu,  5 May 2022 10:01:46 +0200	[thread overview]
Message-ID: <20220505080152.1068424-10-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20220505080152.1068424-1-a.fatoum@pengutronix.de>

Current state of the driver leads to garbled output after divisor
configuration, likely due to wrong clock rate. We so far blissfully
ignored proper clock handling in barebox instead relying on firmware and
fixed clocks. As the VideoCore firmware can already setup the mini-uart,
we can continue wearing the blinders and just disable baudrate changes
for the BCM2711 for now to fix console on the Raspberry Pi 4.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 drivers/serial/serial_ns16550.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index e936711bf816..82acb76793cb 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -153,6 +153,12 @@ static void ns16550_write(struct console_device *cdev, uint32_t val,
 	priv->write_reg(priv, val, off << plat->shift);
 }
 
+static bool ns16550_has_fixed_brg(struct console_device *cdev)
+{
+	/* We don't yet support baudrate switching on Rpi 4 */
+	return IS_ENABLED(CONFIG_MACH_RPI_COMMON) && of_machine_is_compatible("brcm,bcm2711");
+}
+
 /**
  * @brief Compute the divisor for a baud rate
  *
@@ -250,7 +256,9 @@ static void rpi_init_port(struct console_device *cdev)
 	 * (instead of 8 required by the BCM2835 peripheral manual)
 	 */
 	priv->plat.clock = priv->plat.clock*2;
-	ns16550_serial_init_port(cdev);
+
+	if (!ns16550_has_fixed_brg(cdev))
+		ns16550_serial_init_port(cdev);
 }
 
 /*********** Exposed Functions **********************************/
@@ -490,10 +498,12 @@ static int ns16550_probe(struct device_d *dev)
 	cdev->tstc = ns16550_tstc;
 	cdev->putc = ns16550_putc;
 	cdev->getc = ns16550_getc;
-	cdev->setbrg = ns16550_setbaudrate;
 	cdev->flush = ns16550_flush;
 	cdev->linux_console_name = devtype->linux_console_name;
 
+	if (!ns16550_has_fixed_brg(cdev))
+		cdev->setbrg = ns16550_setbaudrate;
+
 	priv->fcrval = FCRVAL;
 
 	devtype->init_port(cdev);
-- 
2.30.2


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


  parent reply	other threads:[~2022-05-05  8:03 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-05  8:01 [PATCH 00/15] ARM: rpi: add basic Raspberry Pi 4 support Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 01/15] PBL: fdt: fix /memory parsing when #address-cells != #size-cells Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 02/15] of: address: fix printing of OF node name in error message Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 03/15] serial: ns16550: rpi: remove ungating now done by proper clk driver Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 04/15] ARM: cpu: prevent recursive dependencies via CPU_SUPPORTS_64BIT_KERNEL Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 05/15] ARM: rpi: add Raspberry Pi 3 64-bit build support Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 06/15] ARM: rpi: rpi3: disallow MMU_EARLY && 64BIT Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 07/15] clk: rpi: add Raspberry Pi 4 support Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 08/15] mci: bcm2835: add bcm2711-emmc2 (Rpi4) support Ahmad Fatoum
2022-05-05  8:01 ` Ahmad Fatoum [this message]
2022-05-05  8:01 ` [PATCH 10/15] clocksource: bcm2835: bump below architeced timer for AArch64 Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 11/15] ARM: rpi: add Raspberry Pi 4 support Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 12/15] ARM: rpi: add debug_ll support for Raspberry Pi 4 Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 13/15] ARM: rpi: add heuristic for skipping detection of SDIO card Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 14/15] doc: bcm283x: add initial docs for Raspberry Pi 4 support Ahmad Fatoum
2022-05-05  8:01 ` [PATCH 15/15] doc: bcm283x: reference newer firmware Ahmad Fatoum
2022-05-06 12:47 ` [PATCH 00/15] ARM: rpi: add basic Raspberry Pi 4 support Ahmad Fatoum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220505080152.1068424-10-a.fatoum@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=danek.brat@gmail.com \
    --cc=ore@pengutronix.de \
    --cc=ukl@pengutronix.de \
    --subject='Re: [PATCH 09/15] serial: ns16550: rpi: skip baudrate changes for bcm2711' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox