Message ID | 20240914145549.879936-4-bigfoot@classfun.cn (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add support for Ariaboard Photonicat RK3568 | expand |
Hi Junhao, On 2024-09-14 16:55, Junhao Xie wrote: > Add dts for Ariaboard Photonicat RK3568. > > Working IO: > Debug UART > SDIO QCA9377 WiFi and Bluetooth > M.2 E-Key PCIe WiFi and Bluetooth > M.2 B-Key USB Modem WWAN > Ethernet WAN Port > MicroSD Card slot > eMMC > HDMI Output > Mali GPU > USB Type-A > > Not working IO: > Ethernet LAN Port (Lack of SGMII support) > Power management MCU on UART4 (Driver pending) > > Not working IO in MCU: > Battery voltage sensor > Board temperature sensor > Hardware Power-off > Hardware Watchdog > Network status LED > Real-time clock > USB Charger voltage sensor > > About onboard power management MCU: > A heartbeat must be sent to the MCU within 60 seconds, > otherwise the MCU will restart the system. > When powering off, a shutdown command needs to be sent to the MCU. > When the power button is long pressed, the MCU will send a shutdown > command to the system. If system does not shutdown within 60 seconds, > the power will be turned off directly. > MCU only provides voltage for charger and battery. > Manufacturer removed RK8xx PMIC. > > Signed-off-by: Junhao Xie <bigfoot@classfun.cn> > --- > arch/arm64/boot/dts/rockchip/Makefile | 1 + > .../boot/dts/rockchip/rk3568-photonicat.dts | 591 ++++++++++++++++++ > 2 files changed, 592 insertions(+) > create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > index fda1b980eb4b..56afd63cb9e2 100644 > --- a/arch/arm64/boot/dts/rockchip/Makefile > +++ b/arch/arm64/boot/dts/rockchip/Makefile > @@ -130,6 +130,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-jaguar.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-nanopc-t6.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-ok3588-c.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-orangepi-5-plus.dtb > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb This should probably be added where the rest of rk3568 dtb is located, not with the rk3588 ones. > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-quartzpro64.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5-itx.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb > diff --git a/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts b/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts > new file mode 100644 > index 000000000000..b3f4fe485e42 > --- /dev/null > +++ b/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts > @@ -0,0 +1,591 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/pinctrl/rockchip.h> > +#include <dt-bindings/soc/rockchip,vop2.h> > +#include "rk3568.dtsi" > + > +/ { > + model = "Ariaboard Photonicat"; > + compatible = "ariaboard,photonicat", "rockchip,rk3568"; > + > + aliases { > + ethernet0 = &gmac0; > + ethernet1 = &gmac1; > + mmc0 = &sdhci; > + mmc1 = &sdmmc0; > + mmc2 = &sdmmc1; > + }; > + > + battery: battery { > + compatible = "simple-battery"; > + device-chemistry = "lithium-ion"; > + charge-full-design-microamp-hours = <6800000>; > + energy-full-design-microwatt-hours = <25000000>; > + voltage-max-design-microvolt = <4200000>; > + voltage-min-design-microvolt = <3400000>; > + > + ocv-capacity-celsius = <25>; > + ocv-capacity-table-0 = <4100000 100>, <4040000 90>, > + <3980000 80>, <3920000 70>, > + <3870000 60>, <3820000 50>, > + <3790000 40>, <3770000 30>, > + <3740000 20>, <3680000 10>, > + <3450000 0>; > + }; > + > + chosen: chosen { > + stdout-path = "serial2:1500000n8"; > + }; > + > + hdmi_con: hdmi-con { > + compatible = "hdmi-connector"; > + type = "a"; > + > + port { > + hdmi_con_in: endpoint { > + remote-endpoint = <&hdmi_out_con>; > + }; > + }; > + }; > + > + rfkill-modem { > + compatible = "rfkill-gpio"; > + label = "M.2 USB Modem"; > + radio-type = "wwan"; > + reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; > + shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; > + }; > + > + vdda_0v9: regulator-0v9-vdda { > + compatible = "regulator-fixed"; > + regulator-name = "vdda_0v9"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + vin-supply = <&vcc3v3_sys>; > + }; > + > + vcc_1v8: regulator-1v8-vcc { > + compatible = "regulator-fixed"; > + regulator-name = "vcc_1v8"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + vin-supply = <&vcc3v3_sys>; > + }; > + > + vcca_1v8: regulator-1v8-vcca { > + compatible = "regulator-fixed"; > + regulator-name = "vcca_1v8"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + vin-supply = <&vcc3v3_sys>; > + }; > + > + vcc_3v3: regulator-3v3-vcc { > + compatible = "regulator-fixed"; > + regulator-name = "vcc_3v3"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&vcc3v3_sys>; > + }; > + > + /* actually fed by vcc_syson, dependent > + * on pi6c clock generator > + */ > + vcc3v3_pcie: regulator-3v3-vcc-pcie { > + compatible = "regulator-fixed"; > + regulator-name = "vcc3v3_pcie"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&vcc3v3_pi6c>; > + }; > + > + /* pi6c pcie clock generator */ > + vcc3v3_pi6c: regulator-3v3-vcc-pi6c { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pcie_pwren_h>; > + regulator-name = "vcc3v3_pi6c"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&vcc_syson>; > + }; > + > + vcc3v3_sd: regulator-3v3-vcc-sd { > + compatible = "regulator-fixed"; > + gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc0_pwren>; > + regulator-boot-on; > + regulator-name = "vcc3v3_sd"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&vcc_3v3>; > + }; > + > + vcc3v3_sys: regulator-3v3-vcc-sys { > + compatible = "regulator-fixed"; > + regulator-name = "vcc3v3_sys"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + vin-supply = <&vcc_syson>; > + }; > + > + vcc3v4_rf: regulator-3v4-vcc-rf { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&rf_pwr_en>; > + regulator-name = "vcc3v4_rf"; > + regulator-min-microvolt = <3400000>; > + regulator-max-microvolt = <3400000>; > + vin-supply = <&vccin_5v>; > + }; > + > + vcc5v0_usb30_otg0: regulator-vcc5v0-usb30-otg0 { > + compatible = "regulator-fixed"; > + enable-active-high; > + gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&usb_host_pwren_h>; > + regulator-name = "vcc5v0_usb30_otg0"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <&vccin_5v>; > + }; > + > + vccin_5v: regulator-vccin-5v { > + compatible = "regulator-fixed"; > + regulator-name = "vccin_5v"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + }; > + > + vcc_sysin: regulator-vcc-sysin { > + compatible = "regulator-fixed"; > + regulator-name = "vcc_sysin"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <&vccin_5v>; > + }; > + > + vcc_syson: regulator-vcc-syson { > + compatible = "regulator-fixed"; > + regulator-name = "vcc_syson"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <&vcc_sysin>; > + }; > + > + vdd_gpu: regulator-vdd-gpu { > + compatible = "pwm-regulator"; > + pwms = <&pwm2 0 5000 1>; > + pwm-supply = <&vcc_syson>; > + regulator-name = "vdd_gpu"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1350000>; > + regulator-ramp-delay = <6001>; > + regulator-settling-time-up-us = <250>; > + }; > + > + vdd_logic: regulator-vdd-logic { > + compatible = "pwm-regulator"; > + pwms = <&pwm1 0 5000 1>; > + pwm-supply = <&vcc_syson>; > + regulator-name = "vdd_logic"; > + regulator-min-microvolt = <500000>; > + regulator-max-microvolt = <1350000>; > + regulator-ramp-delay = <6001>; > + regulator-settling-time-up-us = <250>; > + }; > + > + wifi_pwrseq: wifi-pwrseq { > + compatible = "mmc-pwrseq-simple"; > + clocks = <&pmucru CLK_RTC_32K>; > + clock-names = "ext_clock"; > + pinctrl-names = "default"; > + pinctrl-0 = <&wifi_reg_on_h &clk32k_out1>; > + post-power-on-delay-ms = <200>; > + reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; > + }; > +}; > + > +&combphy0 { > + status = "okay"; > +}; > + > +&combphy1 { > + status = "okay"; > +}; > + > +&combphy2 { > + status = "okay"; > +}; > + > +&cpu0 { > + cpu-supply = <&vdd_cpu>; > +}; > + > +&cpu1 { > + cpu-supply = <&vdd_cpu>; > +}; > + > +&cpu2 { > + cpu-supply = <&vdd_cpu>; > +}; > + > +&cpu3 { > + cpu-supply = <&vdd_cpu>; > +}; > + > +&gmac0 { > + status = "disabled"; > + /* Motorcomm YT8521SC LAN port (require SGMII) */ nit: Please be consistent where comments is added, for recgulators above the comments is above the node, suggest you move the comment above the "&gmac0 {" line, and same for similar comments. > +}; > + > +&gmac1 { > + assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; > + assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; > + assigned-clock-rates = <0>, <125000000>; > + clock_in_out = "output"; > + phy-handle = <&rgmii_phy1>; > + phy-mode = "rgmii-id"; > + phy-supply = <&vcc_3v3>; > + pinctrl-names = "default"; > + pinctrl-0 = <&gmac1m1_miim > + &gmac1m1_tx_bus2 > + &gmac1m1_rx_bus2 > + &gmac1m1_rgmii_clk > + &gmac1m1_rgmii_bus>; > + snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; > + snps,reset-active-low; > + snps,reset-delays-us = <0 20000 100000>; The snps,reset props is deprecated use resets props in phy node instad. > + status = "okay"; > + /* Motorcomm YT8521SC WAN port */ > +}; > + > +&gpu { > + mali-supply = <&vdd_gpu>; > + status = "okay"; > +}; > + > +&hdmi { > + avdd-0v9-supply = <&vdda_0v9>; > + avdd-1v8-supply = <&vcca_1v8>; > + status = "okay"; > +}; > + > +&hdmi_in { > + hdmi_in_vp0: endpoint { > + remote-endpoint = <&vp0_out_hdmi>; > + }; > +}; > + > +&hdmi_out { > + hdmi_out_con: endpoint { > + remote-endpoint = <&hdmi_con_in>; > + }; > +}; > + > +&hdmi_sound { > + status = "okay"; > +}; > + > +&i2c0 { > + status = "okay"; > + > + vdd_cpu: regulator@1c { > + compatible = "tcs,tcs4525"; > + reg = <0x1c>; > + fcs,suspend-voltage-selector = <1>; > + regulator-name = "vdd_cpu"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1150000>; > + regulator-ramp-delay = <2300>; > + vin-supply = <&vcc_syson>; > + > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > +}; > + > +&i2c2 { > + pinctrl-names = "default"; > + pinctrl-0 = <&i2c2m1_xfer>; > + status = "okay"; > +}; > + > +&i2s0_8ch { > + status = "okay"; > +}; > + > +&mdio1 { > + rgmii_phy1: ethernet-phy@0 { > + compatible = "ethernet-phy-ieee802.3-c22"; > + reg = <0x0>; > + rx-internal-delay-ps = <1500>; > + tx-internal-delay-ps = <1500>; > + }; > +}; > + > +&pcie30phy { > + phy-supply = <&vcc3v3_pi6c>; > + status = "okay"; > +}; > + > +&pcie3x2 { > + max-link-speed = <1>; > + num-lanes = <1>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pcie30x1m0_pins>; > + reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; > + vpcie3v3-supply = <&vcc3v3_pcie>; > + status = "okay"; > + /* M.2 E-Key for PCIe WLAN */ > +}; > + > +&pinctrl { > + bt { > + bt_reg_on_h: bt-reg-on-h { > + rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + pcie { > + pcie_pwren_h: pcie-pwren-h { > + rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + sdmmc0 { > + sdmmc0_pwren: sdmmc0-pwren { > + rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + usb { > + rf_pwr_en: rf-pwr-en { > + rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + > + usb_host_pwren_h: usb-host-pwren-h { > + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > + > + wifi { > + wifi_reg_on_h: wifi-reg-on-h { > + rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; > + }; > + }; > +}; > + > +&pmu_io_domains { > + pmuio1-supply = <&vcc_3v3>; > + pmuio2-supply = <&vcc_3v3>; > + vccio1-supply = <&vcc_3v3>; > + vccio2-supply = <&vcc_1v8>; > + vccio3-supply = <&vcc_3v3>; > + vccio4-supply = <&vcc_1v8>; > + vccio5-supply = <&vcc_3v3>; > + vccio6-supply = <&vcc_3v3>; > + vccio7-supply = <&vcc_3v3>; > + status = "okay"; > +}; > + > +&pwm1 { > + status = "okay"; > +}; > + > +&pwm2 { > + status = "okay"; > +}; > + > +&saradc { > + vref-supply = <&vcca_1v8>; > + status = "okay"; > +}; > + > +&sdhci { > + bus-width = <8>; > + max-frequency = <200000000>; Can be dropped, already in base dtsi. > + mmc-hs200-1_8v; > + non-removable; > + pinctrl-names = "default"; > + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; > + vmmc-supply = <&vcc_3v3>; > + vqmmc-supply = <&vcc_1v8>; > + status = "okay"; > + /* eMMC */ > +}; > + > +&sdmmc0 { > + bus-width = <4>; > + cap-sd-highspeed; > + cd-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>; > + disable-wp; > + no-1-8-v; > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>; > + vmmc-supply = <&vcc3v3_sd>; > + vqmmc-supply = <&vcc_3v3>; > + status = "okay"; > + /* Micro SD card slot */ > +}; > + > +&sdmmc1 { > + bus-width = <4>; > + cap-sd-highspeed; > + cap-sdio-irq; > + keep-power-in-suspend; > + mmc-pwrseq = <&wifi_pwrseq>; > + non-removable; > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>; > + sd-uhs-sdr104; > + vmmc-supply = <&vcc3v3_sys>; > + vqmmc-supply = <&vcc_1v8>; > + #address-cells = <1>; > + #size-cells = <0>; > + status = "okay"; > + /* Qualcomm Atheros QCA9377 */ nit: I would move this comment one line down just above the wifi node below. Regards, Jonas > + > + wifi: wifi@1 { > + reg = <1>; > + interrupt-parent = <&gpio2>; > + interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "host-wake"; > + }; > +}; > + > +&tsadc { > + rockchip,hw-tshut-mode = <1>; > + rockchip,hw-tshut-polarity = <0>; > + status = "okay"; > +}; > + > +&uart1 { > + dma-names = "tx", "rx"; > + pinctrl-names = "default"; > + pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>; > + uart-has-rtscts; > + status = "okay"; > + > + bluetooth: bluetooth { > + compatible = "qcom,qca9377-bt"; > + clocks = <&pmucru CLK_RTC_32K>; > + clock-names = "lpo"; > + enable-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&bt_reg_on_h>; > + vddio-supply = <&vcc_1v8>; > + }; > +}; > + > +&uart2 { > + status = "okay"; > + /* Debug UART */ > +}; > + > +&uart3 { > + dma-names = "tx", "rx"; > + status = "okay"; > +}; > + > +&uart4 { > + dma-names = "tx", "rx"; > + status = "okay"; > + /* Onboard power management MCU */ > +}; > + > +&usb_host0_ehci { > + status = "okay"; > + /* M.2 E-Key for USB Bluetooth */ > +}; > + > +&usb_host0_ohci { > + status = "okay"; > +}; > + > +&usb_host0_xhci { > + dr_mode = "host"; > + status = "okay"; > + /* USB Type-A Port */ > +}; > + > +&usb_host1_xhci { > + dr_mode = "host"; > + status = "okay"; > + /* M.2 B-Key for USB Modem WWAN */ > +}; > + > +&usb2phy0 { > + status = "okay"; > +}; > + > +&usb2phy0_host { > + phy-supply = <&vcc3v4_rf>; > + status = "okay"; > +}; > + > +&usb2phy0_otg { > + phy-supply = <&vcc5v0_usb30_otg0>; > + status = "okay"; > +}; > + > +&usb2phy1 { > + status = "okay"; > +}; > + > +&usb2phy1_otg { > + phy-supply = <&vcc5v0_usb30_otg0>; > + status = "okay"; > +}; > + > +&vop { > + assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; > + assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; > + status = "okay"; > +}; > + > +&vop_mmu { > + status = "okay"; > +}; > + > +&vp0 { > + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { > + reg = <ROCKCHIP_VOP2_EP_HDMI0>; > + remote-endpoint = <&hdmi_in_vp0>; > + }; > +}; > + > +&xin32k { > + pinctrl-names = "default"; > + pinctrl-0 = <&clk32k_out1>; > +};
On 2024/9/19 22:52, Jonas Karlman wrote: > Hi Junhao, >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-orangepi-5-plus.dtb >> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb > > This should probably be added where the rest of rk3568 dtb is located, > not with the rk3588 ones. Thanks for your reminder, I made a mistake in the order when renaming dts, I will fix it >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-quartzpro64.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5-itx.dtb >> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb [...] >> + >> +&gmac0 { >> + status = "disabled"; >> + /* Motorcomm YT8521SC LAN port (require SGMII) */ > > nit: Please be consistent where comments is added, for recgulators above > the comments is above the node, suggest you move the comment above the > "&gmac0 {" line, and same for similar comments. I will edit it. This looks better: /* Motorcomm YT8521SC LAN port (require SGMII) */ &gmac0 { status = "disabled"; }; >> +}; >> + >> +&gmac1 { >> + assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; >> + assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; >> + assigned-clock-rates = <0>, <125000000>; >> + clock_in_out = "output"; >> + phy-handle = <&rgmii_phy1>; >> + phy-mode = "rgmii-id"; >> + phy-supply = <&vcc_3v3>; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&gmac1m1_miim >> + &gmac1m1_tx_bus2 >> + &gmac1m1_rx_bus2 >> + &gmac1m1_rgmii_clk >> + &gmac1m1_rgmii_bus>; >> + snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; >> + snps,reset-active-low; >> + snps,reset-delays-us = <0 20000 100000>; > > The snps,reset props is deprecated use resets props in phy node instad. I edited it and it works fine, is the following correct to write? /* Motorcomm YT8521SC WAN port */ &gmac1 { assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; assigned-clock-rates = <0>, <125000000>; clock_in_out = "output"; phy-handle = <&rgmii_phy1>; phy-mode = "rgmii-id"; phy-supply = <&vcc_3v3>; pinctrl-names = "default"; pinctrl-0 = <&gmac1m1_miim &gmac1m1_tx_bus2 &gmac1m1_rx_bus2 &gmac1m1_rgmii_clk &gmac1m1_rgmii_bus>; tx_delay = <0>; rx_delay = <0>; status = "okay"; }; &mdio1 { rgmii_phy1: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0x0>; pinctrl-names = "default"; pinctrl-0 = <ð1_phy_rst>; reset-assert-us = <20000>; reset-deassert-us = <100000>; reset-gpios = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; rx-internal-delay-ps = <1500>; tx-internal-delay-ps = <1500>; }; }; &pinctrl { [...] ethernet { eth1_phy_rst: eth1_phy_rst { rockchip,pins = <4 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; }; }; [...] }; > >> + status = "okay"; >> + /* Motorcomm YT8521SC WAN port */ >> +}; [...] >> +&sdhci { >> + bus-width = <8>; >> + max-frequency = <200000000>; > > Can be dropped, already in base dtsi. max-frequency is not in sdhci node of rk356x.dtsi and rk3568.dtsi. I simply removed the max-frequency and it worked fine. Can it really be removed? >> + mmc-hs200-1_8v; >> + non-removable; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; >> + vmmc-supply = <&vcc_3v3>; >> + vqmmc-supply = <&vcc_1v8>; >> + status = "okay"; >> + /* eMMC */ >> +}; Thanks for your review, I will fix all problems in next version! Best regards, Junhao
On 2024-09-21 15:27, Junhao Xie wrote: > On 2024/9/19 22:52, Jonas Karlman wrote: >> Hi Junhao, >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-orangepi-5-plus.dtb >>> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb >> >> This should probably be added where the rest of rk3568 dtb is located, >> not with the rk3588 ones. > > Thanks for your reminder, I made a mistake in the order when renaming dts, I will fix it > >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-quartzpro64.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5-itx.dtb >>> dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb > [...] >>> + >>> +&gmac0 { >>> + status = "disabled"; >>> + /* Motorcomm YT8521SC LAN port (require SGMII) */ >> >> nit: Please be consistent where comments is added, for recgulators above >> the comments is above the node, suggest you move the comment above the >> "&gmac0 {" line, and same for similar comments. > > I will edit it. This looks better: > > /* Motorcomm YT8521SC LAN port (require SGMII) */ > &gmac0 { > status = "disabled"; > }; > >>> +}; >>> + >>> +&gmac1 { >>> + assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; >>> + assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; >>> + assigned-clock-rates = <0>, <125000000>; >>> + clock_in_out = "output"; >>> + phy-handle = <&rgmii_phy1>; >>> + phy-mode = "rgmii-id"; >>> + phy-supply = <&vcc_3v3>; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&gmac1m1_miim >>> + &gmac1m1_tx_bus2 >>> + &gmac1m1_rx_bus2 >>> + &gmac1m1_rgmii_clk >>> + &gmac1m1_rgmii_bus>; >>> + snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; >>> + snps,reset-active-low; >>> + snps,reset-delays-us = <0 20000 100000>; >> >> The snps,reset props is deprecated use resets props in phy node instad. > > I edited it and it works fine, is the following correct to write? Looks like below props in phy node should match the deprecated snps,reset props. > > /* Motorcomm YT8521SC WAN port */ > &gmac1 { > assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; > assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; > assigned-clock-rates = <0>, <125000000>; > clock_in_out = "output"; > phy-handle = <&rgmii_phy1>; > phy-mode = "rgmii-id"; > phy-supply = <&vcc_3v3>; > pinctrl-names = "default"; > pinctrl-0 = <&gmac1m1_miim > &gmac1m1_tx_bus2 > &gmac1m1_rx_bus2 > &gmac1m1_rgmii_clk > &gmac1m1_rgmii_bus>; > tx_delay = <0>; > rx_delay = <0>; > status = "okay"; > }; > > &mdio1 { > rgmii_phy1: ethernet-phy@0 { > compatible = "ethernet-phy-ieee802.3-c22"; > reg = <0x0>; > pinctrl-names = "default"; > pinctrl-0 = <ð1_phy_rst>; > reset-assert-us = <20000>; > reset-deassert-us = <100000>; > reset-gpios = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; > rx-internal-delay-ps = <1500>; > tx-internal-delay-ps = <1500>; > }; > }; > > &pinctrl { > [...] > ethernet { > eth1_phy_rst: eth1_phy_rst { > rockchip,pins = <4 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>; > }; > }; > [...] > }; > >> >>> + status = "okay"; >>> + /* Motorcomm YT8521SC WAN port */ >>> +}; > [...] >>> +&sdhci { >>> + bus-width = <8>; >>> + max-frequency = <200000000>; >> >> Can be dropped, already in base dtsi. > > max-frequency is not in sdhci node of rk356x.dtsi and rk3568.dtsi. > I simply removed the max-frequency and it worked fine. > Can it really be removed? Ahh, sorry, I looked in rk3588 sdhci node, please ignore my comment regarding max-frequency prop :-) Regards, Jonas > >>> + mmc-hs200-1_8v; >>> + non-removable; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; >>> + vmmc-supply = <&vcc_3v3>; >>> + vqmmc-supply = <&vcc_1v8>; >>> + status = "okay"; >>> + /* eMMC */ >>> +}; > > Thanks for your review, I will fix all problems in next version! > > Best regards, > Junhao >
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile index fda1b980eb4b..56afd63cb9e2 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile @@ -130,6 +130,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-jaguar.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-nanopc-t6.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-ok3588-c.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-orangepi-5-plus.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-quartzpro64.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5-itx.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb diff --git a/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts b/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts new file mode 100644 index 000000000000..b3f4fe485e42 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts @@ -0,0 +1,591 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/pinctrl/rockchip.h> +#include <dt-bindings/soc/rockchip,vop2.h> +#include "rk3568.dtsi" + +/ { + model = "Ariaboard Photonicat"; + compatible = "ariaboard,photonicat", "rockchip,rk3568"; + + aliases { + ethernet0 = &gmac0; + ethernet1 = &gmac1; + mmc0 = &sdhci; + mmc1 = &sdmmc0; + mmc2 = &sdmmc1; + }; + + battery: battery { + compatible = "simple-battery"; + device-chemistry = "lithium-ion"; + charge-full-design-microamp-hours = <6800000>; + energy-full-design-microwatt-hours = <25000000>; + voltage-max-design-microvolt = <4200000>; + voltage-min-design-microvolt = <3400000>; + + ocv-capacity-celsius = <25>; + ocv-capacity-table-0 = <4100000 100>, <4040000 90>, + <3980000 80>, <3920000 70>, + <3870000 60>, <3820000 50>, + <3790000 40>, <3770000 30>, + <3740000 20>, <3680000 10>, + <3450000 0>; + }; + + chosen: chosen { + stdout-path = "serial2:1500000n8"; + }; + + hdmi_con: hdmi-con { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi_con_in: endpoint { + remote-endpoint = <&hdmi_out_con>; + }; + }; + }; + + rfkill-modem { + compatible = "rfkill-gpio"; + label = "M.2 USB Modem"; + radio-type = "wwan"; + reset-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_LOW>; + shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>; + }; + + vdda_0v9: regulator-0v9-vdda { + compatible = "regulator-fixed"; + regulator-name = "vdda_0v9"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + vin-supply = <&vcc3v3_sys>; + }; + + vcc_1v8: regulator-1v8-vcc { + compatible = "regulator-fixed"; + regulator-name = "vcc_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc3v3_sys>; + }; + + vcca_1v8: regulator-1v8-vcca { + compatible = "regulator-fixed"; + regulator-name = "vcca_1v8"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vcc3v3_sys>; + }; + + vcc_3v3: regulator-3v3-vcc { + compatible = "regulator-fixed"; + regulator-name = "vcc_3v3"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc3v3_sys>; + }; + + /* actually fed by vcc_syson, dependent + * on pi6c clock generator + */ + vcc3v3_pcie: regulator-3v3-vcc-pcie { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3_pcie"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc3v3_pi6c>; + }; + + /* pi6c pcie clock generator */ + vcc3v3_pi6c: regulator-3v3-vcc-pi6c { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&pcie_pwren_h>; + regulator-name = "vcc3v3_pi6c"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc_syson>; + }; + + vcc3v3_sd: regulator-3v3-vcc-sd { + compatible = "regulator-fixed"; + gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc0_pwren>; + regulator-boot-on; + regulator-name = "vcc3v3_sd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc_3v3>; + }; + + vcc3v3_sys: regulator-3v3-vcc-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&vcc_syson>; + }; + + vcc3v4_rf: regulator-3v4-vcc-rf { + compatible = "regulator-fixed"; + enable-active-high; + gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&rf_pwr_en>; + regulator-name = "vcc3v4_rf"; + regulator-min-microvolt = <3400000>; + regulator-max-microvolt = <3400000>; + vin-supply = <&vccin_5v>; + }; + + vcc5v0_usb30_otg0: regulator-vcc5v0-usb30-otg0 { + compatible = "regulator-fixed"; + enable-active-high; + gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&usb_host_pwren_h>; + regulator-name = "vcc5v0_usb30_otg0"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vccin_5v>; + }; + + vccin_5v: regulator-vccin-5v { + compatible = "regulator-fixed"; + regulator-name = "vccin_5v"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; + + vcc_sysin: regulator-vcc-sysin { + compatible = "regulator-fixed"; + regulator-name = "vcc_sysin"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vccin_5v>; + }; + + vcc_syson: regulator-vcc-syson { + compatible = "regulator-fixed"; + regulator-name = "vcc_syson"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + vin-supply = <&vcc_sysin>; + }; + + vdd_gpu: regulator-vdd-gpu { + compatible = "pwm-regulator"; + pwms = <&pwm2 0 5000 1>; + pwm-supply = <&vcc_syson>; + regulator-name = "vdd_gpu"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1350000>; + regulator-ramp-delay = <6001>; + regulator-settling-time-up-us = <250>; + }; + + vdd_logic: regulator-vdd-logic { + compatible = "pwm-regulator"; + pwms = <&pwm1 0 5000 1>; + pwm-supply = <&vcc_syson>; + regulator-name = "vdd_logic"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1350000>; + regulator-ramp-delay = <6001>; + regulator-settling-time-up-us = <250>; + }; + + wifi_pwrseq: wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + clocks = <&pmucru CLK_RTC_32K>; + clock-names = "ext_clock"; + pinctrl-names = "default"; + pinctrl-0 = <&wifi_reg_on_h &clk32k_out1>; + post-power-on-delay-ms = <200>; + reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; + }; +}; + +&combphy0 { + status = "okay"; +}; + +&combphy1 { + status = "okay"; +}; + +&combphy2 { + status = "okay"; +}; + +&cpu0 { + cpu-supply = <&vdd_cpu>; +}; + +&cpu1 { + cpu-supply = <&vdd_cpu>; +}; + +&cpu2 { + cpu-supply = <&vdd_cpu>; +}; + +&cpu3 { + cpu-supply = <&vdd_cpu>; +}; + +&gmac0 { + status = "disabled"; + /* Motorcomm YT8521SC LAN port (require SGMII) */ +}; + +&gmac1 { + assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; + assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>; + assigned-clock-rates = <0>, <125000000>; + clock_in_out = "output"; + phy-handle = <&rgmii_phy1>; + phy-mode = "rgmii-id"; + phy-supply = <&vcc_3v3>; + pinctrl-names = "default"; + pinctrl-0 = <&gmac1m1_miim + &gmac1m1_tx_bus2 + &gmac1m1_rx_bus2 + &gmac1m1_rgmii_clk + &gmac1m1_rgmii_bus>; + snps,reset-gpio = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>; + snps,reset-active-low; + snps,reset-delays-us = <0 20000 100000>; + status = "okay"; + /* Motorcomm YT8521SC WAN port */ +}; + +&gpu { + mali-supply = <&vdd_gpu>; + status = "okay"; +}; + +&hdmi { + avdd-0v9-supply = <&vdda_0v9>; + avdd-1v8-supply = <&vcca_1v8>; + status = "okay"; +}; + +&hdmi_in { + hdmi_in_vp0: endpoint { + remote-endpoint = <&vp0_out_hdmi>; + }; +}; + +&hdmi_out { + hdmi_out_con: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; +}; + +&hdmi_sound { + status = "okay"; +}; + +&i2c0 { + status = "okay"; + + vdd_cpu: regulator@1c { + compatible = "tcs,tcs4525"; + reg = <0x1c>; + fcs,suspend-voltage-selector = <1>; + regulator-name = "vdd_cpu"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1150000>; + regulator-ramp-delay = <2300>; + vin-supply = <&vcc_syson>; + + regulator-state-mem { + regulator-off-in-suspend; + }; + }; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2m1_xfer>; + status = "okay"; +}; + +&i2s0_8ch { + status = "okay"; +}; + +&mdio1 { + rgmii_phy1: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x0>; + rx-internal-delay-ps = <1500>; + tx-internal-delay-ps = <1500>; + }; +}; + +&pcie30phy { + phy-supply = <&vcc3v3_pi6c>; + status = "okay"; +}; + +&pcie3x2 { + max-link-speed = <1>; + num-lanes = <1>; + pinctrl-names = "default"; + pinctrl-0 = <&pcie30x1m0_pins>; + reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc3v3_pcie>; + status = "okay"; + /* M.2 E-Key for PCIe WLAN */ +}; + +&pinctrl { + bt { + bt_reg_on_h: bt-reg-on-h { + rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + pcie { + pcie_pwren_h: pcie-pwren-h { + rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + sdmmc0 { + sdmmc0_pwren: sdmmc0-pwren { + rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + usb { + rf_pwr_en: rf-pwr-en { + rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + usb_host_pwren_h: usb-host-pwren-h { + rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + wifi { + wifi_reg_on_h: wifi-reg-on-h { + rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; +}; + +&pmu_io_domains { + pmuio1-supply = <&vcc_3v3>; + pmuio2-supply = <&vcc_3v3>; + vccio1-supply = <&vcc_3v3>; + vccio2-supply = <&vcc_1v8>; + vccio3-supply = <&vcc_3v3>; + vccio4-supply = <&vcc_1v8>; + vccio5-supply = <&vcc_3v3>; + vccio6-supply = <&vcc_3v3>; + vccio7-supply = <&vcc_3v3>; + status = "okay"; +}; + +&pwm1 { + status = "okay"; +}; + +&pwm2 { + status = "okay"; +}; + +&saradc { + vref-supply = <&vcca_1v8>; + status = "okay"; +}; + +&sdhci { + bus-width = <8>; + max-frequency = <200000000>; + mmc-hs200-1_8v; + non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&vcc_1v8>; + status = "okay"; + /* eMMC */ +}; + +&sdmmc0 { + bus-width = <4>; + cap-sd-highspeed; + cd-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>; + disable-wp; + no-1-8-v; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>; + vmmc-supply = <&vcc3v3_sd>; + vqmmc-supply = <&vcc_3v3>; + status = "okay"; + /* Micro SD card slot */ +}; + +&sdmmc1 { + bus-width = <4>; + cap-sd-highspeed; + cap-sdio-irq; + keep-power-in-suspend; + mmc-pwrseq = <&wifi_pwrseq>; + non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>; + sd-uhs-sdr104; + vmmc-supply = <&vcc3v3_sys>; + vqmmc-supply = <&vcc_1v8>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + /* Qualcomm Atheros QCA9377 */ + + wifi: wifi@1 { + reg = <1>; + interrupt-parent = <&gpio2>; + interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "host-wake"; + }; +}; + +&tsadc { + rockchip,hw-tshut-mode = <1>; + rockchip,hw-tshut-polarity = <0>; + status = "okay"; +}; + +&uart1 { + dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>; + uart-has-rtscts; + status = "okay"; + + bluetooth: bluetooth { + compatible = "qcom,qca9377-bt"; + clocks = <&pmucru CLK_RTC_32K>; + clock-names = "lpo"; + enable-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&bt_reg_on_h>; + vddio-supply = <&vcc_1v8>; + }; +}; + +&uart2 { + status = "okay"; + /* Debug UART */ +}; + +&uart3 { + dma-names = "tx", "rx"; + status = "okay"; +}; + +&uart4 { + dma-names = "tx", "rx"; + status = "okay"; + /* Onboard power management MCU */ +}; + +&usb_host0_ehci { + status = "okay"; + /* M.2 E-Key for USB Bluetooth */ +}; + +&usb_host0_ohci { + status = "okay"; +}; + +&usb_host0_xhci { + dr_mode = "host"; + status = "okay"; + /* USB Type-A Port */ +}; + +&usb_host1_xhci { + dr_mode = "host"; + status = "okay"; + /* M.2 B-Key for USB Modem WWAN */ +}; + +&usb2phy0 { + status = "okay"; +}; + +&usb2phy0_host { + phy-supply = <&vcc3v4_rf>; + status = "okay"; +}; + +&usb2phy0_otg { + phy-supply = <&vcc5v0_usb30_otg0>; + status = "okay"; +}; + +&usb2phy1 { + status = "okay"; +}; + +&usb2phy1_otg { + phy-supply = <&vcc5v0_usb30_otg0>; + status = "okay"; +}; + +&vop { + assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>; + assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>; + status = "okay"; +}; + +&vop_mmu { + status = "okay"; +}; + +&vp0 { + vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { + reg = <ROCKCHIP_VOP2_EP_HDMI0>; + remote-endpoint = <&hdmi_in_vp0>; + }; +}; + +&xin32k { + pinctrl-names = "default"; + pinctrl-0 = <&clk32k_out1>; +};
Add dts for Ariaboard Photonicat RK3568. Working IO: Debug UART SDIO QCA9377 WiFi and Bluetooth M.2 E-Key PCIe WiFi and Bluetooth M.2 B-Key USB Modem WWAN Ethernet WAN Port MicroSD Card slot eMMC HDMI Output Mali GPU USB Type-A Not working IO: Ethernet LAN Port (Lack of SGMII support) Power management MCU on UART4 (Driver pending) Not working IO in MCU: Battery voltage sensor Board temperature sensor Hardware Power-off Hardware Watchdog Network status LED Real-time clock USB Charger voltage sensor About onboard power management MCU: A heartbeat must be sent to the MCU within 60 seconds, otherwise the MCU will restart the system. When powering off, a shutdown command needs to be sent to the MCU. When the power button is long pressed, the MCU will send a shutdown command to the system. If system does not shutdown within 60 seconds, the power will be turned off directly. MCU only provides voltage for charger and battery. Manufacturer removed RK8xx PMIC. Signed-off-by: Junhao Xie <bigfoot@classfun.cn> --- arch/arm64/boot/dts/rockchip/Makefile | 1 + .../boot/dts/rockchip/rk3568-photonicat.dts | 591 ++++++++++++++++++ 2 files changed, 592 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-photonicat.dts