BCM270X_DT: Add midi-uart1 overlay

Add a scaler to the ttyS0 clock so that requesting 38400 baud results
in an approximately 31250 baud signal. This is analagous to
midi-uart0, except for ttyS0, which may be useful on Pi3 and also
may avoid an issue with ttyAMA0 failing to synchronise to an active
data stream.

See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=183860

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
This commit is contained in:
Phil Elwell
2017-05-26 13:03:41 +01:00
committed by popcornmix
parent 7882391137
commit 01da1499b5
3 changed files with 51 additions and 0 deletions

View File

@@ -58,6 +58,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
mcp2515-can1.dtbo \ mcp2515-can1.dtbo \
mcp3008.dtbo \ mcp3008.dtbo \
midi-uart0.dtbo \ midi-uart0.dtbo \
midi-uart1.dtbo \
mmc.dtbo \ mmc.dtbo \
mpu6050.dtbo \ mpu6050.dtbo \
mz61581.dtbo \ mz61581.dtbo \

View File

@@ -892,6 +892,13 @@ Load: dtoverlay=midi-uart0
Params: <None> Params: <None>
Name: midi-uart1
Info: Configures UART1 (ttyS0) so that a requested 38.4kbaud actually gets
31.25kbaud, the frequency required for MIDI
Load: dtoverlay=midi-uart1
Params: <None>
Name: mmc Name: mmc
Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock Info: Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
Load: dtoverlay=mmc,<param>=<val> Load: dtoverlay=mmc,<param>=<val>

View File

@@ -0,0 +1,43 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/bcm2835-aux.h>
/*
* Fake a higher clock rate to get a larger divisor, and thereby a lower
* baudrate. The real clock is 48MHz, which we scale so that requesting
* 38.4kHz results in an actual 31.25kHz.
*
* 48000000*38400/31250 = 58982400
*/
/{
compatible = "brcm,bcm2835";
fragment@0 {
target-path = "/clocks";
__overlay__ {
midi_clk: clock@5 {
compatible = "fixed-factor-clock";
#clock-cells = <0>;
clocks = <&aux BCM2835_AUX_CLOCK_UART>;
clock-mult = <38400>;
clock-div = <31250>;
};
};
};
fragment@1 {
target = <&uart1>;
__overlay__ {
clocks = <&midi_clk>;
};
};
fragment@2 {
target = <&aux>;
__overlay__ {
clock-output-names = "aux_uart", "aux_spi1", "aux_spi2";
};
};
};