Created
February 25, 2024 13:33
-
-
Save yogo1212/e110f52df9283928c4689fde21f26d67 to your computer and use it in GitHub Desktop.
Pine64 Star64 device tree for Linux v6.8-rc5-297-gf2e367d6ad3b
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// not everything is tested. | |
// ideally, there'll be a 'no-overcurrent-detection;' for usb | |
/dts-v1/; | |
#include "jh7110.dtsi" | |
#include "jh7110-pinfunc.h" | |
#include <dt-bindings/gpio/gpio.h> | |
#include <dt-bindings/input/input.h> | |
#include <dt-bindings/leds/common.h> | |
/ { | |
model = "Pine64 Star64"; | |
compatible = "pine64,star64", "starfive,jh7110"; | |
aliases { | |
ethernet0 = &gmac0; | |
ethernet1 = &gmac1; | |
i2c0 = &i2c0; | |
i2c2 = &i2c2; | |
i2c5 = &i2c5; | |
i2c6 = &i2c6; | |
mmc0 = &mmc0; | |
mmc1 = &mmc1; | |
serial0 = &uart0; | |
spi0 = &qspi; | |
}; | |
chosen { | |
stdout-path = "serial0:115200n8"; | |
}; | |
cpus { | |
timebase-frequency = <4000000>; | |
}; | |
gpio-restart { | |
compatible = "gpio-restart"; | |
gpios = <&sysgpio 35 GPIO_ACTIVE_HIGH>; | |
priority = <224>; | |
}; | |
leds { | |
compatible = "gpio-leds"; | |
led-blue { | |
gpios = <&aongpio 3 GPIO_ACTIVE_HIGH>; | |
color = <LED_COLOR_ID_BLUE>; | |
function = LED_FUNCTION_HEARTBEAT; | |
linux,default-trigger = "heartbeat"; | |
label = "blue"; | |
}; | |
}; | |
memory@40000000 { | |
device_type = "memory"; | |
reg = <0x0 0x40000000 0x1 0x0>; | |
}; | |
pwmdac_codec: pwmdac-codec { | |
compatible = "linux,spdif-dit"; | |
#sound-dai-cells = <0>; | |
}; | |
gpio-keys { | |
compatible = "gpio-keys"; | |
button-rfkill-bluetooth { | |
label = "bluetooth"; | |
linux,code = <KEY_RFKILL>; | |
/* TODO check pinctrl */ | |
pinctrl-names = "default"; | |
pinctrl-0 = <&rfkill_bluetooth_pins>; | |
radio-type = "bluetooth"; | |
shutdown-gpios = <&aongpio 54 GPIO_ACTIVE_HIGH>; | |
}; | |
button-rfkill-wifi { | |
label = "wifi"; | |
linux,code = <KEY_RFKILL>; | |
/* TODO check pinctrl */ | |
pinctrl-names = "default"; | |
pinctrl-0 = <&rfkill_wifi_pins>; | |
radio-type = "wifi"; | |
shutdown-gpios = <&aongpio 42 GPIO_ACTIVE_HIGH>; | |
}; | |
}; | |
sound-pwmdac { | |
compatible = "simple-audio-card"; | |
simple-audio-card,name = "StarFive-PWMDAC-Sound-Card"; | |
#address-cells = <1>; | |
#size-cells = <0>; | |
simple-audio-card,dai-link@0 { | |
reg = <0>; | |
format = "left_j"; | |
bitclock-master = <&sndcpu0>; | |
frame-master = <&sndcpu0>; | |
sndcpu0: cpu { | |
sound-dai = <&pwmdac>; | |
}; | |
codec { | |
sound-dai = <&pwmdac_codec>; | |
}; | |
}; | |
}; | |
}; | |
&dvp_clk { | |
clock-frequency = <74250000>; | |
}; | |
&gmac0_rgmii_rxin { | |
clock-frequency = <125000000>; | |
}; | |
&gmac0_rmii_refin { | |
clock-frequency = <50000000>; | |
}; | |
&gmac1_rgmii_rxin { | |
clock-frequency = <125000000>; | |
}; | |
&gmac1_rmii_refin { | |
clock-frequency = <50000000>; | |
}; | |
&hdmitx0_pixelclk { | |
clock-frequency = <297000000>; | |
}; | |
&i2srx_bclk_ext { | |
clock-frequency = <12288000>; | |
}; | |
&i2srx_lrck_ext { | |
clock-frequency = <192000>; | |
}; | |
&i2stx_bclk_ext { | |
clock-frequency = <12288000>; | |
}; | |
&i2stx_lrck_ext { | |
clock-frequency = <192000>; | |
}; | |
&mclk_ext { | |
clock-frequency = <12288000>; | |
}; | |
&osc { | |
clock-frequency = <24000000>; | |
}; | |
&rtc_osc { | |
clock-frequency = <32768>; | |
}; | |
&tdm_ext { | |
clock-frequency = <49152000>; | |
}; | |
&gmac0 { | |
assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>; | |
assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>; | |
phy-handle = <&phy0>; | |
phy-mode = "rgmii-id"; | |
starfive,tx-use-rgmii-clk; | |
status = "okay"; | |
mdio { | |
#address-cells = <1>; | |
#size-cells = <0>; | |
compatible = "snps,dwmac-mdio"; | |
phy0: ethernet-phy@0 { | |
reg = <0>; | |
}; | |
}; | |
}; | |
&gmac1 { | |
assigned-clocks = <&syscrg JH7110_SYSCLK_GMAC1_TX>; | |
assigned-clock-parents = <&syscrg JH7110_SYSCLK_GMAC1_RMII_RTX>; | |
phy-handle = <&phy1>; | |
phy-mode = "rgmii-id"; | |
status = "okay"; | |
starfive,tx-use-rgmii-clk; | |
mdio { | |
#address-cells = <1>; | |
#size-cells = <0>; | |
compatible = "snps,dwmac-mdio"; | |
phy1: ethernet-phy@1 { | |
reg = <0>; | |
}; | |
}; | |
}; | |
&i2c0 { | |
clock-frequency = <100000>; | |
i2c-sda-hold-time-ns = <300>; | |
i2c-sda-falling-time-ns = <510>; | |
i2c-scl-falling-time-ns = <510>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2c0_pins>; | |
status = "okay"; | |
}; | |
&i2c2 { | |
clock-frequency = <100000>; | |
i2c-sda-hold-time-ns = <300>; | |
i2c-sda-falling-time-ns = <510>; | |
i2c-scl-falling-time-ns = <510>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2c2_pins>; | |
status = "okay"; | |
// TODO depend on CONFIG_RTC_DRV_HYM8563? | |
// TODO | |
hym8563@51 { | |
compatible = "haoyu,hym8563"; | |
reg = <0x51>; | |
}; | |
}; | |
&i2c5 { | |
clock-frequency = <100000>; | |
i2c-sda-hold-time-ns = <300>; | |
i2c-sda-falling-time-ns = <510>; | |
i2c-scl-falling-time-ns = <510>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2c5_pins>; | |
status = "okay"; | |
axp15060: pmic@36 { | |
compatible = "x-powers,axp15060"; | |
reg = <0x36>; | |
interrupts = <0>; | |
interrupt-controller; | |
#interrupt-cells = <1>; | |
regulators { | |
vcc_3v3: dcdc1 { | |
regulator-boot-on; | |
regulator-always-on; | |
regulator-min-microvolt = <3300000>; | |
regulator-max-microvolt = <3300000>; | |
regulator-name = "vcc_3v3"; | |
}; | |
vdd_cpu: dcdc2 { | |
regulator-always-on; | |
regulator-min-microvolt = <500000>; | |
regulator-max-microvolt = <1540000>; | |
regulator-name = "vdd-cpu"; | |
}; | |
emmc_vdd: aldo4 { | |
regulator-boot-on; | |
regulator-always-on; | |
regulator-min-microvolt = <1800000>; | |
regulator-max-microvolt = <1800000>; | |
regulator-name = "emmc_vdd"; | |
}; | |
}; | |
}; | |
}; | |
&i2c6 { | |
clock-frequency = <100000>; | |
i2c-sda-hold-time-ns = <300>; | |
i2c-sda-falling-time-ns = <510>; | |
i2c-scl-falling-time-ns = <510>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2c6_pins>; | |
status = "okay"; | |
}; | |
&i2srx { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2srx_pins>; | |
status = "okay"; | |
}; | |
&i2stx0 { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&mclk_ext_pins>; | |
status = "okay"; | |
}; | |
&i2stx1 { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&i2stx1_pins>; | |
status = "okay"; | |
}; | |
&mmc0 { | |
max-frequency = <100000000>; | |
assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>; | |
assigned-clock-rates = <50000000>; | |
bus-width = <8>; | |
cap-mmc-highspeed; | |
mmc-ddr-1_8v; | |
mmc-hs200-1_8v; | |
non-removable; | |
cap-mmc-hw-reset; | |
post-power-on-delay-ms = <200>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&mmc0_pins>; | |
vmmc-supply = <&vcc_3v3>; | |
vqmmc-supply = <&emmc_vdd>; | |
status = "okay"; | |
}; | |
&mmc1 { | |
max-frequency = <100000000>; | |
assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>; | |
assigned-clock-rates = <50000000>; | |
bus-width = <4>; | |
no-sdio; | |
no-mmc; | |
broken-cd; | |
cap-sd-highspeed; | |
post-power-on-delay-ms = <200>; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&mmc1_pins>; | |
status = "okay"; | |
}; | |
&pwmdac { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&pwmdac_pins>; | |
status = "okay"; | |
}; | |
&qspi { | |
#address-cells = <1>; | |
#size-cells = <0>; | |
status = "okay"; | |
nor_flash: flash@0 { | |
compatible = "jedec,spi-nor"; | |
reg = <0>; | |
cdns,read-delay = <5>; | |
spi-max-frequency = <12000000>; | |
cdns,tshsl-ns = <1>; | |
cdns,tsd2d-ns = <1>; | |
cdns,tchsh-ns = <1>; | |
cdns,tslch-ns = <1>; | |
partitions { | |
compatible = "fixed-partitions"; | |
#address-cells = <1>; | |
#size-cells = <1>; | |
spl@0 { | |
reg = <0x0 0x80000>; | |
}; | |
uboot-env@f0000 { | |
reg = <0xf0000 0x10000>; | |
}; | |
uboot@100000 { | |
reg = <0x100000 0x400000>; | |
}; | |
reserved-data@600000 { | |
reg = <0x600000 0xa00000>; | |
}; | |
}; | |
}; | |
}; | |
&spi0 { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&spi0_pins>; | |
status = "okay"; | |
spi_dev0: spi@0 { | |
compatible = "rohm,dh2228fv"; | |
reg = <0>; | |
spi-max-frequency = <10000000>; | |
}; | |
}; | |
&sysgpio { | |
gpio-line-names = | |
"", "", "", "", "", "", "", "", | |
//8 | |
"", "", "", "", "", "", "", "", | |
//16 | |
"i2c6-scl", "i2c6-sda", "csi-pwdn", "i2c5-scl", "i2c5-sda", "pci1-wake", "", "", | |
//24 | |
"", "usb-vbus", "", "", "pci1-perst", "pci1-clkreq", "", "", | |
//32 | |
"", "pwmdac0-left", "pwmdac0-right", "", "", "", "i2s-clk0_bclk", "", | |
//40 | |
"", "", "rfkill_wifi", "i2stx", "", "", "", "", | |
//48 | |
"ssp0-clk", "ssp0-cs", "", "", "ssp0-tx", "ssp0-rx", "", "rfkill_bt", | |
//56 | |
"", "i2c0-scl", "i2c0-sda", "pwm_ch1", "", "", "", "", | |
//64 | |
"", "i2srx", "", "i2s-clk0_lrclk", ""; | |
i2c0_pins: i2c0-0 { | |
i2c-pins { | |
pinmux = <GPIOMUX(57, GPOUT_LOW, | |
GPOEN_SYS_I2C0_CLK, | |
GPI_SYS_I2C0_CLK)>, | |
<GPIOMUX(58, GPOUT_LOW, | |
GPOEN_SYS_I2C0_DATA, | |
GPI_SYS_I2C0_DATA)>; | |
// TODO gpio hogs in fishwaldo's kernel. what pulls this down/up? | |
bias-disable; /* external pull-up */ | |
input-enable; | |
input-schmitt-enable; | |
}; | |
}; | |
i2c2_pins: i2c2-0 { | |
i2c-pins { | |
pinmux = <GPIOMUX(3, GPOUT_LOW, | |
GPOEN_SYS_I2C2_CLK, | |
GPI_SYS_I2C2_CLK)>, | |
<GPIOMUX(2, GPOUT_LOW, | |
GPOEN_SYS_I2C2_DATA, | |
GPI_SYS_I2C2_DATA)>; | |
bias-disable; /* external pull-up */ | |
input-enable; | |
input-schmitt-enable; | |
}; | |
}; | |
i2c5_pins: i2c5-0 { | |
i2c-pins { | |
pinmux = <GPIOMUX(19, GPOUT_LOW, | |
GPOEN_SYS_I2C5_CLK, | |
GPI_SYS_I2C5_CLK)>, | |
<GPIOMUX(20, GPOUT_LOW, | |
GPOEN_SYS_I2C5_DATA, | |
GPI_SYS_I2C5_DATA)>; | |
bias-disable; /* external pull-up */ | |
input-enable; | |
input-schmitt-enable; | |
}; | |
}; | |
i2c6_pins: i2c6-0 { | |
i2c-pins { | |
pinmux = <GPIOMUX(16, GPOUT_LOW, | |
GPOEN_SYS_I2C6_CLK, | |
GPI_SYS_I2C6_CLK)>, | |
<GPIOMUX(17, GPOUT_LOW, | |
GPOEN_SYS_I2C6_DATA, | |
GPI_SYS_I2C6_DATA)>; | |
bias-disable; /* external pull-up */ | |
input-enable; | |
input-schmitt-enable; | |
}; | |
}; | |
i2srx_pins: i2srx-0 { | |
clk-sd-pins { | |
pinmux = <GPIOMUX(38, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_I2SRX_BCLK)>, | |
<GPIOMUX(63, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_I2SRX_LRCK)>, | |
<GPIOMUX(38, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_I2STX1_BCLK)>, | |
<GPIOMUX(63, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_I2STX1_LRCK)>, | |
<GPIOMUX(61, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_I2SRX_SDIN0)>; | |
input-enable; | |
}; | |
}; | |
i2stx1_pins: i2stx1-0 { | |
sd-pins { | |
pinmux = <GPIOMUX(44, GPOUT_SYS_I2STX1_SDO0, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-disable; | |
input-disable; | |
}; | |
}; | |
mclk_ext_pins: mclk-ext-0 { | |
mclk-ext-pins { | |
pinmux = <GPIOMUX(4, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_MCLK_EXT)>; | |
input-enable; | |
}; | |
}; | |
mmc0_pins: mmc0-0 { | |
rst-pins { | |
pinmux = <GPIOMUX(62, GPOUT_SYS_SDIO0_RST, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-pull-up; | |
drive-strength = <12>; | |
input-disable; | |
input-schmitt-disable; | |
slew-rate = <0>; | |
}; | |
mmc-pins { | |
pinmux = <PINMUX(64, 0)>, | |
<PINMUX(65, 0)>, | |
<PINMUX(66, 0)>, | |
<PINMUX(67, 0)>, | |
<PINMUX(68, 0)>, | |
<PINMUX(69, 0)>, | |
<PINMUX(70, 0)>, | |
<PINMUX(71, 0)>, | |
<PINMUX(72, 0)>, | |
<PINMUX(73, 0)>; | |
bias-pull-up; | |
drive-strength = <12>; | |
input-enable; | |
}; | |
}; | |
mmc1_pins: mmc1-0 { | |
clk-pins { | |
pinmux = <GPIOMUX(10, GPOUT_SYS_SDIO1_CLK, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-pull-up; | |
drive-strength = <12>; | |
input-disable; | |
input-schmitt-disable; | |
slew-rate = <0>; | |
}; | |
mmc-pins { | |
pinmux = <GPIOMUX(9, GPOUT_SYS_SDIO1_CMD, | |
GPOEN_SYS_SDIO1_CMD, | |
GPI_SYS_SDIO1_CMD)>, | |
<GPIOMUX(11, GPOUT_SYS_SDIO1_DATA0, | |
GPOEN_SYS_SDIO1_DATA0, | |
GPI_SYS_SDIO1_DATA0)>, | |
<GPIOMUX(12, GPOUT_SYS_SDIO1_DATA1, | |
GPOEN_SYS_SDIO1_DATA1, | |
GPI_SYS_SDIO1_DATA1)>, | |
<GPIOMUX(7, GPOUT_SYS_SDIO1_DATA2, | |
GPOEN_SYS_SDIO1_DATA2, | |
GPI_SYS_SDIO1_DATA2)>, | |
<GPIOMUX(8, GPOUT_SYS_SDIO1_DATA3, | |
GPOEN_SYS_SDIO1_DATA3, | |
GPI_SYS_SDIO1_DATA3)>; | |
bias-pull-up; | |
drive-strength = <12>; | |
input-enable; | |
input-schmitt-enable; | |
slew-rate = <0>; | |
}; | |
}; | |
pwmdac_pins: pwmdac-0 { | |
pwmdac-pins { | |
pinmux = <GPIOMUX(33, GPOUT_SYS_PWMDAC_LEFT, | |
GPOEN_ENABLE, | |
GPI_NONE)>, | |
<GPIOMUX(34, GPOUT_SYS_PWMDAC_RIGHT, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-disable; | |
drive-strength = <2>; | |
input-disable; | |
input-schmitt-disable; | |
slew-rate = <0>; | |
}; | |
}; | |
rfkill_bluetooth_pins: rfkill-bluetooth { | |
rfkill-bluetooth-pins { | |
/* TODO GPOUT_LOW? */ | |
pinmux = <GPIOMUX(54, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_NONE)>; | |
/* TODO bias-pull-up? */ | |
bias-pull-up; | |
input-enable; | |
/* TODO does this help with hysteris? */ | |
input-schmitt-enable; | |
}; | |
}; | |
rfkill_wifi_pins: rfkill-wifi { | |
rfkill-wifi-pins { | |
/* TODO GPOUT_LOW? */ | |
pinmux = <GPIOMUX(42, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_NONE)>; | |
/* TODO bias-pull-up? */ | |
bias-pull-up; | |
input-enable; | |
/* TODO does this help with hysteris? */ | |
input-schmitt-enable; | |
}; | |
}; | |
spi0_pins: spi0-0 { | |
mosi-pins { | |
pinmux = <GPIOMUX(52, GPOUT_SYS_SPI0_TXD, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-disable; | |
input-disable; | |
input-schmitt-disable; | |
}; | |
miso-pins { | |
pinmux = <GPIOMUX(53, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_SPI0_RXD)>; | |
bias-pull-up; | |
input-enable; | |
input-schmitt-enable; | |
}; | |
sck-pins { | |
pinmux = <GPIOMUX(48, GPOUT_SYS_SPI0_CLK, | |
GPOEN_ENABLE, | |
GPI_SYS_SPI0_CLK)>; | |
bias-disable; | |
input-disable; | |
input-schmitt-disable; | |
}; | |
ss-pins { | |
pinmux = <GPIOMUX(49, GPOUT_SYS_SPI0_FSS, | |
GPOEN_ENABLE, | |
GPI_SYS_SPI0_FSS)>; | |
bias-disable; | |
input-disable; | |
input-schmitt-disable; | |
}; | |
}; | |
uart0_pins: uart0-0 { | |
tx-pins { | |
pinmux = <GPIOMUX(5, GPOUT_SYS_UART0_TX, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
bias-disable; | |
drive-strength = <12>; | |
input-disable; | |
input-schmitt-disable; | |
slew-rate = <0>; | |
}; | |
rx-pins { | |
pinmux = <GPIOMUX(6, GPOUT_LOW, | |
GPOEN_DISABLE, | |
GPI_SYS_UART0_RX)>; | |
bias-disable; /* external pull-up */ | |
drive-strength = <2>; | |
input-enable; | |
input-schmitt-enable; | |
slew-rate = <0>; | |
}; | |
}; | |
usb0_pins: usb0-0 { | |
/* TODO overcurrent not connected - GPI_SYS_USB_OVERCURRENT? */ | |
drive-vbus { | |
pinmux = <GPIOMUX(25, GPOUT_SYS_USB_DRIVE_VBUS, | |
GPOEN_ENABLE, | |
GPI_NONE)>; | |
/* there'd better be a pull-up :-D */ | |
bias-disable; | |
/* TODO no idea about all these: */ | |
drive-strength = <12>; | |
input-disable; | |
input-schmitt-disable; | |
slew-rate = <0>; | |
}; | |
}; | |
}; | |
&uart0 { | |
pinctrl-names = "default"; | |
pinctrl-0 = <&uart0_pins>; | |
status = "okay"; | |
}; | |
&usb0 { | |
/* TODO does usb3 work? */ | |
dr_mode = "host"; | |
pinctrl-names = "default"; | |
pinctrl-0 = <&usb0_pins>; | |
status = "okay"; | |
}; | |
&U74_1 { | |
cpu-supply = <&vdd_cpu>; | |
}; | |
&U74_2 { | |
cpu-supply = <&vdd_cpu>; | |
}; | |
&U74_3 { | |
cpu-supply = <&vdd_cpu>; | |
}; | |
&U74_4 { | |
cpu-supply = <&vdd_cpu>; | |
}; | |
&phy0 { | |
motorcomm,tx-clk-adj-enabled; | |
motorcomm,tx-clk-100-inverted; | |
motorcomm,tx-clk-1000-inverted; | |
motorcomm,rx-clk-drv-microamp = <3970>; | |
motorcomm,rx-data-drv-microamp = <2910>; | |
rx-internal-delay-ps = <1500>; | |
tx-internal-delay-ps = <1500>; | |
}; | |
&phy1 { | |
motorcomm,tx-clk-adj-enabled; | |
motorcomm,tx-clk-100-inverted; | |
motorcomm,rx-clk-drv-microamp = <3970>; | |
motorcomm,rx-data-drv-microamp = <2910>; | |
rx-internal-delay-ps = <300>; | |
tx-internal-delay-ps = <0>; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment