Import Mediatek/Ralink dtsi patches against OpenWRT dtsi files

This revision suggests dtsi patches to be used with the original OpenWRT
dtsi files so we can re-use what has already been done in OpenWRT for the
Mediatek/Ralink SoCs.

The only thing that is required after importing this revision should be
the following:
1. Import OpenWRT dts/dtsi files into sys/gnu/dts/mips
2. Run the following script in sys/gnu/dts/mips:
for f in `ls [mr]t*.dtsi`; do
printf "\n#include <fbsd-$f>\n" > $f
done

This will apply our dtsi patches to OpenWRT's dtsi files and will allow us
to re-use dts/dtsi files for ~170 Mediatek/Ralink boards.

Currently our drivers are not 100% compatible with OpenWRT's dts files, but
they're compatible enough.
We can add more functionality in the future that would better leverage the
OpenWRT work as well.

Approved by:	adrian (mentor)
Sponsored by:	Smartcom - Bulgaria AD
Differential Revision:	https://reviews.freebsd.org/D5965
This commit is contained in:
Stanislav Galabov 2016-04-15 15:36:09 +00:00
parent fd868a25a8
commit 89f8f24077
9 changed files with 480 additions and 0 deletions

View File

@ -0,0 +1,52 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy: usbphy {
clocks = <&clkctrl 22 &clkctrl 25>;
clock-names = "host", "device";
};
pcie@10140000 {
/*
* Our driver is different that OpenWRT's, so we need slightly
* different values for the reg property
*/
reg = <0x10140000 0x10000>;
/*
* Also, we need resets and clocks defined, so we can properly
* initialize the PCIe
*/
clocks = <&clkctrl 26>;
};
};

View File

@ -0,0 +1,38 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy: usbphy {
clocks = <&clkctrl 22 &clkctrl 25>;
clock-names = "host", "device";
};
};

View File

@ -0,0 +1,102 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
gic: interrupt-controller@1fbc0000 {
/*
* OpenWRT does not define the GIC interrupt, but we need it
* for now, at least until we re-work our GIC driver
*/
interrupt-parent = <&cpuintc>;
interrupts = <2>;
};
palmbus@1E000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {
/*
* Mark uartlite as compatible to mtk,ns16550a instead
* of simply ns16550a so we can autodetect the UART
* clock
*/
compatible = "mtk,ns16550a";
};
gpio@600 {
/*
* Mark gpio as compatible to simple-bus and override
* its #size-cells and provide a default ranges property
* so we can attach instances of our mtk_gpio_v2 driver
* to it for now. Provide exactly the same resources to
* the instances of mtk_gpio_v2.
*/
compatible = "simple-bus";
ranges = <0x0 0x600 0x100>;
#size-cells = <1>;
interrupt-parent = <&gic>;
gpio0: bank@0 {
reg = <0x0 0x100>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
};
gpio1: bank@1 {
reg = <0x0 0x100>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
};
gpio2: bank@2 {
reg = <0x0 0x100>;
interrupts = <GIC_SHARED 6 IRQ_TYPE_LEVEL_HIGH>;
};
};
};
xhci@1E1C0000 {
/*
* A slightly different value for reg size is needed by our
* driver for the moment
*/
reg = <0x1e1c0000 0x20000>;
};
pcie@1e140000 {
/*
* Our driver is different that OpenWRT's, so we need slightly
* different values for the reg property
*/
reg = <0x1e140000 0x10000>;
/*
* Also, we need resets and clocks defined, so we can properly
* initialize the PCIe
*/
resets = <&rstctrl 24>, <&rstctrl 25>, <&rstctrl 26>;
clocks = <&clkctrl 24>, <&clkctrl 25>, <&clkctrl 26>;
};
};

View File

@ -0,0 +1,88 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uart2@e00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uart2@e00 {
/*
* Mark uartlite as compatible to mtk,ns16550a instead
* of simply ns16550a so we can autodetect the UART
* clock
*/
compatible = "mtk,ns16550a";
};
gpio@600 {
/*
* Mark gpio as compatible to simple-bus and override
* its #size-cells and provide a default ranges property
* so we can attach instances of our mtk_gpio_v2 driver
* to it for now. Provide exactly the same resources to
* the instances of mtk_gpio_v2.
*/
compatible = "simple-bus";
ranges = <0x0 0x600 0x100>;
#size-cells = <1>;
gpio0: bank@0 {
reg = <0x0 0x100>;
interrupts = <6>;
};
gpio1: bank@1 {
reg = <0x0 0x100>;
interrupts = <6>;
};
gpio2: bank@2 {
reg = <0x0 0x100>;
interrupts = <6>;
};
};
};
usbphy: usbphy@10120000 {
clocks = <&clkctrl 22 &clkctrl 25>;
clock-names = "host", "device";
};
pcie@10140000 {
/*
* Our driver is different that OpenWRT's, so we need slightly
* different values for the reg property
*/
reg = <0x10140000 0x10000>;
/*
* Also, we need resets and clocks defined, so we can properly
* initialize the PCIe
*/
resets = <&rstctrl 26>, <&rstctrl 27>;
clocks = <&clkctrl 26>, <&clkctrl 27>;
};
};

View File

@ -0,0 +1,33 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@300000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
};

View File

@ -0,0 +1,41 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy: usbphy {
compatible = "ralink,rt3050-usbphy";
resets = <&rstctrl 22>;
reset-names = "otg";
clocks = <&clkctrl 18>;
clock-names = "otg";
};
};

View File

@ -0,0 +1,38 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy {
clocks = <&clkctrl 18 &clkctrl 20>;
clock-names = "host", "device";
};
};

View File

@ -0,0 +1,50 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy: usbphy {
clocks = <&clkctrl 22 &clkctrl 25>;
clock-names = "host", "device";
};
pci@10140000 {
#address-cells = <3>;
#size-cells = <2>;
ranges = <
0x02000000 0 0x00000000 0x20000000 0 0x10000000
0x01000000 0 0x00000000 0x10160000 0 0x00010000
>;
interrupt-parent = <&cpuintc>;
interrupts = <4>;
};
};

View File

@ -0,0 +1,38 @@
/* $FreeBSD$ */
/ {
/*
* FreeBSD's stdin and stdout, so we can have a console
*/
chosen {
stdin = &uartlite;
stdout = &uartlite;
};
/*
* OpenWRT doesn't define a clock controller, but we currently need one
*/
clkctrl: cltctrl {
compatible = "ralink,rt2880-clock";
#clock-cells = <1>;
};
palmbus@10000000 {
/*
* Make palmbus compatible to our simplebus
*/
compatible = "simple-bus";
/*
* Reference uartlite@c00 as uartlite, so we can address it
* within the chosen node above
*/
uartlite: uartlite@c00 {};
};
usbphy {
clocks = <&clkctrl 18>;
clock-names = "host";
};
};