Skip to content

Instantly share code, notes, and snippets.

@macromorgan
Created June 15, 2023 19:04
Show Gist options
  • Save macromorgan/e1f9e8e2275ae7e53c45fa864148ffed to your computer and use it in GitHub Desktop.
Save macromorgan/e1f9e8e2275ae7e53c45fa864148ffed to your computer and use it in GitHub Desktop.
Anbernic RG-Nano Devicetree
/dts-v1/;
/ {
#address-cells = <0x01>;
#size-cells = <0x01>;
interrupt-parent = <0x01>;
model = "Anbernic";
compatible = "anbernic\0allwinner,sun8i-v3s";
chosen {
#address-cells = <0x01>;
#size-cells = <0x01>;
ranges;
stdout-path = "serial0:115200n8";
framebuffer@0 {
compatible = "allwinner,simple-framebuffer\0simple-framebuffer";
allwinner,pipeline = "de0-lcd0";
clocks = <0x02 0x21 0x03 0x00 0x03 0x06 0x02 0x40>;
status = "disabled";
};
};
cpus {
#address-cells = <0x01>;
#size-cells = <0x00>;
cpu@0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <0x00>;
clocks = <0x02 0x0e>;
clock-latency = <0x3b9b0>;
clock-frequency = <0x13c680>;
operating-points = <0x13c680 0x124f80 0xf6180 0x124f80 0xd2f00 0x124f80 0xafc80 0x10c8e0 0x75300 0xf4240>;
};
};
display-engine {
compatible = "allwinner,sun8i-v3s-display-engine";
allwinner,pipelines = <0x04>;
status = "disabled";
};
timer {
compatible = "arm,armv7-timer";
interrupts = <0x01 0x0d 0xf08 0x01 0x0e 0xf08 0x01 0x0b 0xf08 0x01 0x0a 0xf08>;
};
clocks {
#address-cells = <0x01>;
#size-cells = <0x01>;
ranges;
osc24M_clk {
#clock-cells = <0x00>;
compatible = "fixed-clock";
clock-frequency = <0x16e3600>;
clock-output-names = "osc24M";
linux,phandle = <0x0d>;
phandle = <0x0d>;
};
osc32k_clk {
#clock-cells = <0x00>;
compatible = "fixed-clock";
clock-frequency = <0x8000>;
clock-output-names = "osc32k";
linux,phandle = <0x0e>;
phandle = <0x0e>;
};
};
soc {
compatible = "simple-bus";
#address-cells = <0x01>;
#size-cells = <0x01>;
ranges;
clock@1000000 {
compatible = "allwinner,sun8i-v3s-de2-clk";
reg = <0x1000000 0x100000>;
clocks = <0x02 0x3f 0x02 0x23>;
clock-names = "mod\0bus";
resets = <0x02 0x22>;
#clock-cells = <0x01>;
#reset-cells = <0x01>;
linux,phandle = <0x03>;
phandle = <0x03>;
};
mixer@1100000 {
compatible = "allwinner,sun8i-v3s-de2-mixer";
reg = <0x1100000 0x100000>;
clocks = <0x03 0x00 0x03 0x06>;
clock-names = "bus\0mod";
resets = <0x03 0x00>;
assigned-clocks = <0x03 0x06>;
assigned-clock-rates = <0x8f0d180>;
linux,phandle = <0x04>;
phandle = <0x04>;
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@1 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x01>;
endpoint@0 {
reg = <0x00>;
remote-endpoint = <0x05>;
linux,phandle = <0x06>;
phandle = <0x06>;
};
};
};
};
syscon@1c00000 {
compatible = "allwinner,sun8i-v3s-system-controller\0syscon";
reg = <0x1c00000 0x1000>;
linux,phandle = <0x15>;
phandle = <0x15>;
};
lcd-controller@1c0c000 {
compatible = "allwinner,sun8i-v3s-tcon";
reg = <0x1c0c000 0x1000>;
interrupts = <0x00 0x56 0x04>;
clocks = <0x02 0x21 0x02 0x40>;
clock-names = "ahb\0tcon-ch0";
clock-output-names = "tcon-pixel-clock";
resets = <0x02 0x1b>;
reset-names = "lcd";
status = "disabled";
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
port@0 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x00>;
endpoint@0 {
reg = <0x00>;
remote-endpoint = <0x06>;
linux,phandle = <0x05>;
phandle = <0x05>;
};
};
port@1 {
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x01>;
};
};
};
dma-controller@01c02000 {
compatible = "allwinner,sun8i-v3s-dma";
reg = <0x1c02000 0x1000>;
interrupts = <0x00 0x32 0x04>;
clocks = <0x02 0x15>;
resets = <0x02 0x06>;
#dma-cells = <0x01>;
linux,phandle = <0x10>;
phandle = <0x10>;
};
mmc@01c0f000 {
compatible = "allwinner,sun7i-a20-mmc";
reg = <0x1c0f000 0x1000>;
clocks = <0x02 0x16 0x02 0x2d 0x02 0x2f 0x02 0x2e>;
clock-names = "ahb\0mmc\0output\0sample";
resets = <0x02 0x07>;
reset-names = "ahb";
interrupts = <0x00 0x3c 0x04>;
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
pinctrl-0 = <0x07>;
pinctrl-names = "default";
broken-cd;
bus-width = <0x04>;
vmmc-supply = <0x08>;
vqmmc-supply = <0x08>;
};
mmc@01c10000 {
compatible = "allwinner,sun7i-a20-mmc";
reg = <0x1c10000 0x1000>;
clocks = <0x02 0x17 0x02 0x30 0x02 0x32 0x02 0x31>;
clock-names = "ahb\0mmc\0output\0sample";
resets = <0x02 0x08>;
reset-names = "ahb";
interrupts = <0x00 0x3d 0x04>;
pinctrl-names = "default";
pinctrl-0 = <0x09>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
};
mmc@01c11000 {
compatible = "allwinner,sun7i-a20-mmc";
reg = <0x1c11000 0x1000>;
clocks = <0x02 0x18 0x02 0x33 0x02 0x35 0x02 0x34>;
clock-names = "ahb\0mmc\0output\0sample";
resets = <0x02 0x09>;
reset-names = "ahb";
interrupts = <0x00 0x3e 0x04>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
};
usb@01c19000 {
compatible = "allwinner,sun8i-h3-musb";
reg = <0x1c19000 0x400>;
clocks = <0x02 0x1d>;
resets = <0x02 0x11>;
interrupts = <0x00 0x47 0x04>;
interrupt-names = "mc";
phys = <0x0a 0x00>;
phy-names = "usb";
extcon = <0x0a 0x00>;
status = "okay";
dr_mode = "otg";
};
phy@01c19400 {
compatible = "allwinner,sun8i-v3s-usb-phy";
reg = <0x1c19400 0x2c 0x1c1a800 0x04>;
reg-names = "phy_ctrl\0pmu0";
clocks = <0x02 0x38>;
clock-names = "usb0_phy";
resets = <0x02 0x00>;
reset-names = "usb0_reset";
status = "okay";
#phy-cells = <0x01>;
pinctrl-names = "default";
pinctrl-0 = <0x0b>;
usb0_id_det-gpios = <0x0c 0x06 0x05 0x01>;
linux,phandle = <0x0a>;
phandle = <0x0a>;
};
usb@01c1a000 {
compatible = "allwinner,sun8i-v3s-ehci\0generic-ehci";
reg = <0x1c1a000 0x100>;
interrupts = <0x00 0x48 0x04>;
clocks = <0x02 0x1e 0x02 0x1f>;
resets = <0x02 0x12 0x02 0x16>;
status = "okay";
};
usb@01c1a400 {
compatible = "allwinner,sun8i-v3s-ohci\0generic-ohci";
reg = <0x1c1a400 0x100>;
interrupts = <0x00 0x49 0x04>;
clocks = <0x02 0x1e 0x02 0x1f 0x02 0x39>;
resets = <0x02 0x12 0x02 0x16>;
status = "okay";
};
clock@01c20000 {
compatible = "allwinner,sun8i-v3s-ccu";
reg = <0x1c20000 0x400>;
clocks = <0x0d 0x0e>;
clock-names = "hosc\0losc";
#clock-cells = <0x01>;
#reset-cells = <0x01>;
linux,phandle = <0x02>;
phandle = <0x02>;
};
rtc@01c20400 {
compatible = "allwinner,sun6i-a31-rtc";
reg = <0x1c20400 0x54>;
interrupts = <0x00 0x28 0x04 0x00 0x29 0x04>;
status = "disabled";
};
pinctrl@01c20800 {
compatible = "allwinner,sun8i-v3s-pinctrl";
reg = <0x1c20800 0x400>;
interrupts = <0x00 0x0f 0x04 0x00 0x11 0x04>;
clocks = <0x02 0x25 0x0d 0x0e>;
clock-names = "apb\0hosc\0losc";
gpio-controller;
#gpio-cells = <0x03>;
interrupt-controller;
#interrupt-cells = <0x03>;
linux,phandle = <0x0c>;
phandle = <0x0c>;
i2c0 {
pins = "PB6\0PB7";
function = "i2c0";
linux,phandle = <0x13>;
phandle = <0x13>;
};
pwm0 {
pins = "PB4";
function = "pwm0";
linux,phandle = <0x0f>;
phandle = <0x0f>;
};
uart0@0 {
pins = "PB8\0PB9";
function = "uart0";
linux,phandle = <0x12>;
phandle = <0x12>;
};
lcd-rgb666-pe {
pins = "PE0\0PE1\0PE2\0PE3\0PE4\0PE5\0PE6\0PE7\0PE8\0PE9\0PE10\0PE11\0PE12\0PE13\0PE14\0PE15\0PE16\0PE17\0PE18\0PE19\0PE23\0PE24";
function = "lcd";
};
mmc0@0 {
pins = "PF0\0PF1\0PF2\0PF3\0PF4\0PF5";
function = "mmc0";
drive-strength = <0x1e>;
bias-pull-up;
linux,phandle = <0x07>;
phandle = <0x07>;
};
mmc1 {
pins = "PG0\0PG1\0PG2\0PG3\0PG4\0PG5";
function = "mmc1";
drive-strength = <0x1e>;
bias-pull-up;
linux,phandle = <0x09>;
phandle = <0x09>;
};
spi0 {
pins = "PC0\0PC1\0PC2\0PC3";
function = "spi0";
linux,phandle = <0x17>;
phandle = <0x17>;
};
usb0_id_detect_pin@0 {
pins = "PG5";
function = "gpio_in";
bias-pull-up;
linux,phandle = <0x0b>;
phandle = <0x0b>;
};
};
timer@01c20c00 {
compatible = "allwinner,sun4i-a10-timer";
reg = <0x1c20c00 0xa0>;
interrupts = <0x00 0x12 0x04 0x00 0x13 0x04>;
clocks = <0x0d>;
};
watchdog@01c20ca0 {
compatible = "allwinner,sun6i-a31-wdt";
reg = <0x1c20ca0 0x20>;
interrupts = <0x00 0x19 0x04>;
};
pwm@1c21400 {
compatible = "allwinner,sun8i-v3s-pwm\0allwinner,sun7i-a20-pwm";
reg = <0x1c21400 0x400>;
clocks = <0x0d>;
#pwm-cells = <0x03>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0x0f>;
linux,phandle = <0x18>;
phandle = <0x18>;
};
lradc@1c22800 {
compatible = "allwinner,sun4i-a10-lradc-keys";
reg = <0x1c22800 0x400>;
interrupts = <0x00 0x1e 0x04>;
status = "disabled";
};
codec@01c22c00 {
#sound-dai-cells = <0x00>;
compatible = "allwinner,sun8i-v3s-codec";
reg = <0x1c22c00 0x400>;
interrupts = <0x00 0x1d 0x04>;
clocks = <0x02 0x24 0x02 0x46>;
clock-names = "apb\0codec";
resets = <0x02 0x28>;
dmas = <0x10 0x0f 0x10 0x0f>;
dma-names = "rx\0tx";
allwinner,codec-analog-controls = <0x11>;
status = "okay";
allwinner,audio-routing = "Headphone\0HP\0Headphone\0HPCOM\0MIC1\0Mic\0Mic\0HBIAS";
};
codec-analog@01c23000 {
compatible = "allwinner,sun8i-v3s-codec-analog";
reg = <0x1c23000 0x04>;
status = "okay";
linux,phandle = <0x11>;
phandle = <0x11>;
};
serial@01c28000 {
compatible = "snps,dw-apb-uart";
reg = <0x1c28000 0x400>;
interrupts = <0x00 0x00 0x04>;
reg-shift = <0x02>;
reg-io-width = <0x04>;
clocks = <0x02 0x28>;
resets = <0x02 0x31>;
status = "okay";
pinctrl-0 = <0x12>;
pinctrl-names = "default";
};
serial@01c28400 {
compatible = "snps,dw-apb-uart";
reg = <0x1c28400 0x400>;
interrupts = <0x00 0x01 0x04>;
reg-shift = <0x02>;
reg-io-width = <0x04>;
clocks = <0x02 0x29>;
resets = <0x02 0x32>;
status = "disabled";
};
serial@01c28800 {
compatible = "snps,dw-apb-uart";
reg = <0x1c28800 0x400>;
interrupts = <0x00 0x02 0x04>;
reg-shift = <0x02>;
reg-io-width = <0x04>;
clocks = <0x02 0x2a>;
resets = <0x02 0x33>;
status = "disabled";
};
i2c@01c2ac00 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c2ac00 0x400>;
interrupts = <0x00 0x06 0x04>;
clocks = <0x02 0x26>;
resets = <0x02 0x2e>;
pinctrl-names = "default";
pinctrl-0 = <0x13>;
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
pmic@34 {
compatible = "x-powers,axp209";
reg = <0x34>;
interrupt-parent = <0x0c>;
interrupts = <0x01 0x05 0x02>;
interrupt-controller;
#interrupt-cells = <0x01>;
ac-power-supply {
compatible = "x-powers,axp202-ac-power-supply";
status = "okay";
};
gpio {
compatible = "x-powers,axp209-gpio";
gpio-controller;
#gpio-cells = <0x02>;
status = "okay";
};
battery-power-supply {
compatible = "x-powers,axp209-battery-power-supply";
status = "okay";
monitored-battery = <0x14>;
};
regulators {
x-powers,dcdc-freq = <0x5dc>;
dcdc2 {
regulator-name = "vdd-cpu-sys-ephy";
regulator-always-on;
regulator-min-microvolt = <0xf4240>;
regulator-max-microvolt = <0x155cc0>;
};
dcdc3 {
regulator-name = "vcc-io-ephy-mcsi-usb";
regulator-always-on;
regulator-min-microvolt = <0x2dc6c0>;
regulator-max-microvolt = <0x34a490>;
};
ldo1 {
regulator-always-on;
regulator-min-microvolt = <0x2dc6c0>;
regulator-max-microvolt = <0x36ee80>;
regulator-name = "vcc-rtc";
};
ldo2 {
regulator-name = "avcc-pll";
regulator-always-on;
regulator-min-microvolt = <0x2ab980>;
regulator-max-microvolt = <0x325aa0>;
};
ldo3 {
regulator-name = "ldo3";
};
ldo4 {
regulator-name = "ldo4";
};
ldo5 {
regulator-name = "ldo5";
status = "disabled";
};
};
usb_power_supply {
compatible = "x-powers,axp202-usb-power-supply";
status = "okay";
};
};
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
i2c@01c2b000 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x1c2b000 0x400>;
interrupts = <0x00 0x07 0x04>;
clocks = <0x02 0x27>;
resets = <0x02 0x2f>;
status = "disabled";
#address-cells = <0x01>;
#size-cells = <0x00>;
};
ethernet@1c30000 {
compatible = "allwinner,sun8i-v3s-emac";
syscon = <0x15>;
reg = <0x1c30000 0x10000>;
interrupts = <0x00 0x52 0x04>;
interrupt-names = "macirq";
resets = <0x02 0x0c>;
reset-names = "stmmaceth";
clocks = <0x02 0x1a>;
clock-names = "stmmaceth";
phy-handle = <0x16>;
phy-mode = "mii";
#address-cells = <0x01>;
#size-cells = <0x00>;
status = "disabled";
mdio {
#address-cells = <0x01>;
#size-cells = <0x00>;
ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0x01>;
clocks = <0x02 0x2b>;
resets = <0x02 0x27>;
phy-is-integrated;
linux,phandle = <0x16>;
phandle = <0x16>;
};
};
};
spi@1c68000 {
compatible = "allwinner,sun8i-h3-spi";
reg = <0x1c68000 0x1000>;
interrupts = <0x00 0x41 0x04>;
clocks = <0x02 0x1c 0x02 0x37>;
clock-names = "ahb\0mod";
dmas = <0x10 0x17 0x10 0x17>;
dma-names = "rx\0tx";
pinctrl-names = "default";
pinctrl-0 = <0x17>;
resets = <0x02 0x0f>;
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
st7789v@0 {
compatible = "sitronix,st7789v";
reg = <0x00>;
spi-max-frequency = <0x2faf080>;
txbuflen = <0x1c202>;
spi_async_mode = "true";
rotate = <0x00>;
rotate_soft = <0x10e>;
fps = <0x64>;
buswidth = <0x08>;
reset-gpios = <0x0c 0x01 0x02 0x00>;
dc-gpios = <0x0c 0x02 0x00 0x01>;
debug = <0x00>;
te-irq = <0x0c 0x01 0x01 0x01>;
};
};
interrupt-controller@01c81000 {
compatible = "arm,cortex-a7-gic\0arm,cortex-a15-gic";
reg = <0x1c81000 0x1000 0x1c82000 0x1000 0x1c84000 0x2000 0x1c86000 0x2000>;
interrupt-controller;
#interrupt-cells = <0x03>;
interrupts = <0x01 0x09 0xf04>;
linux,phandle = <0x01>;
phandle = <0x01>;
};
};
ahci-5v {
compatible = "regulator-fixed";
regulator-name = "ahci-5v";
regulator-min-microvolt = <0x4c4b40>;
regulator-max-microvolt = <0x4c4b40>;
regulator-boot-on;
enable-active-high;
gpio = <0x0c 0x01 0x08 0x00>;
status = "disabled";
};
usb0-vbus {
compatible = "regulator-fixed";
regulator-name = "usb0-vbus";
regulator-min-microvolt = <0x4c4b40>;
regulator-max-microvolt = <0x4c4b40>;
enable-active-high;
gpio = <0x0c 0x01 0x09 0x00>;
status = "disabled";
};
usb1-vbus {
compatible = "regulator-fixed";
regulator-name = "usb1-vbus";
regulator-min-microvolt = <0x4c4b40>;
regulator-max-microvolt = <0x4c4b40>;
regulator-boot-on;
enable-active-high;
gpio = <0x0c 0x07 0x06 0x00>;
status = "disabled";
};
usb2-vbus {
compatible = "regulator-fixed";
regulator-name = "usb2-vbus";
regulator-min-microvolt = <0x4c4b40>;
regulator-max-microvolt = <0x4c4b40>;
regulator-boot-on;
enable-active-high;
gpio = <0x0c 0x07 0x03 0x00>;
status = "disabled";
};
vcc3v0 {
compatible = "regulator-fixed";
regulator-name = "vcc3v0";
regulator-min-microvolt = <0x2dc6c0>;
regulator-max-microvolt = <0x2dc6c0>;
regulator-always-on;
status = "okay";
};
vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3";
regulator-min-microvolt = <0x325aa0>;
regulator-max-microvolt = <0x325aa0>;
regulator-always-on;
status = "okay";
linux,phandle = <0x08>;
phandle = <0x08>;
};
vcc5v0 {
compatible = "regulator-fixed";
regulator-name = "vcc5v0";
regulator-min-microvolt = <0x4c4b40>;
regulator-max-microvolt = <0x4c4b40>;
regulator-always-on;
status = "okay";
linux,phandle = <0x19>;
phandle = <0x19>;
};
aliases {
serial0 = "/soc/serial@01c28000";
};
backlight {
compatible = "pwm-backlight";
pwms = <0x18 0x00 0x9c40 0x01>;
brightness-levels = <0x00 0x01 0x02 0x03 0x08 0x0e 0x15 0x20 0x2e 0x3c 0x50 0x64>;
default-brightness-level = <0x0b>;
power-supply = <0x19>;
};
battery {
compatible = "simple-battery";
constant_charge_current_max_microamp = "\0\f5";
linux,phandle = <0x14>;
phandle = <0x14>;
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment