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>
--- /dev/null
+/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";
+ };
+ };
+};