diff options
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2018.12.0/0103-ARM-rpi-retrieve-miniuart-clock-from-firmware.patch')
-rw-r--r-- | configs/platform-v7a/patches/barebox-2018.12.0/0103-ARM-rpi-retrieve-miniuart-clock-from-firmware.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2018.12.0/0103-ARM-rpi-retrieve-miniuart-clock-from-firmware.patch b/configs/platform-v7a/patches/barebox-2018.12.0/0103-ARM-rpi-retrieve-miniuart-clock-from-firmware.patch new file mode 100644 index 0000000..95daa60 --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2018.12.0/0103-ARM-rpi-retrieve-miniuart-clock-from-firmware.patch @@ -0,0 +1,34 @@ +From: Rouven Czerwinski <r.czerwinski@pengutronix.de> +Date: Thu, 13 Dec 2018 07:23:37 +0100 +Subject: [PATCH] ARM: rpi: retrieve miniuart clock from firmware + +The miniuart uses the core clock as the clock source. This clock is fixed by the +firmware to 250Mhz if enable_uart=1 is set in the config.txt file. +However a user could still choose to overclock the core frequency, +which would result in wrong baudrates computed by barebox. +Retrieve the core clock frequency from the firmware to allow all potential +firmware configurations to work with barebox. + +Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de> +--- + arch/arm/boards/raspberry-pi/rpi-common.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c +index 490aeef12306..e29177d08e20 100644 +--- a/arch/arm/boards/raspberry-pi/rpi-common.c ++++ b/arch/arm/boards/raspberry-pi/rpi-common.c +@@ -309,6 +309,13 @@ static int rpi_console_clock_init(void) + clkdev_add_physbase(clk, 0x20201000, NULL); + clkdev_add_physbase(clk, 0x3f201000, NULL); + ++ clk = rpi_register_firmware_clock(BCM2835_MBOX_CLOCK_ID_CORE, ++ "uart1-8250"); ++ if (IS_ERR(clk)) ++ return PTR_ERR(clk); ++ ++ clkdev_add_physbase(clk, 0x3f215040, NULL); ++ + clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "bcm2835-cs"); + |