aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/boot/dts/overlays/midi-uart1-overlay.dts')
-rw-r--r--arch/arm/boot/dts/overlays/midi-uart1-overlay.dts43
1 files changed, 43 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
new file mode 100644
index 000000000000..e0bc410acbff
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
@@ -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";
+ };
+ };
+};