Commit 1adaeea9 authored by Phil Elwell's avatar Phil Elwell
Browse files

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: default avatarPhil Elwell <phil@raspberrypi.org>
parent e54215a9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
	mcp2515-can1.dtbo \
	mcp3008.dtbo \
	midi-uart0.dtbo \
	midi-uart1.dtbo \
	mmc.dtbo \
	mpu6050.dtbo \
	mz61581.dtbo \
+7 −0
Original line number Diff line number Diff line
@@ -892,6 +892,13 @@ Load: dtoverlay=midi-uart0
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
Info:   Selects the bcm2835-mmc SD/MMC driver, optionally with overclock
Load:   dtoverlay=mmc,<param>=<val>
+43 −0
Original line number Diff line number Diff line
/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";
		};
	};
};