// SPDX-License-Identifier: GPL-2.0 OR MIT /* * Copyright (C) 2022 StarFive Technology Co., Ltd. * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk> */ /dts-v1/; #include "jh7110.dtsi" #include "jh7110-pinfunc.h" #include <dt-bindings/gpio/gpio.h> / { aliases { ethernet0 = &gmac0; ethernet1 = &gmac1; i2c0 = &i2c0; i2c2 = &i2c2; i2c5 = &i2c5; i2c6 = &i2c6; mmc0 = &mmc0; mmc1 = &mmc1; serial0 = &uart0; }; chosen { stdout-path = "serial0:115200n8"; }; cpus { timebase-frequency = <4000000>; }; memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x1 0x0>; }; gpio-restart { compatible = "gpio-restart"; gpios = <&sysgpio 35 GPIO_ACTIVE_HIGH>; priority = <224>; }; }; &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 { phy-handle = <&phy0>; phy-mode = "rgmii-id"; status = "okay"; mdio { #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; phy0: ethernet-phy@0 { reg = <0>; }; }; }; &gmac1 { phy-handle = <&phy1>; phy-mode = "rgmii-id"; status = "okay"; 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"; }; &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"; }; &mmc0 { max-frequency = <100000000>; 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>; 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"; }; &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 { 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)>; 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; }; }; 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>; }; }; 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; }; }; tdm_pins: tdm-0 { tx-pins { pinmux = <GPIOMUX(44, GPOUT_SYS_TDM_TXD, GPOEN_ENABLE, GPI_NONE)>; bias-pull-up; drive-strength = <2>; input-disable; input-schmitt-disable; slew-rate = <0>; }; rx-pins { pinmux = <GPIOMUX(61, GPOUT_HIGH, GPOEN_DISABLE, GPI_SYS_TDM_RXD)>; input-enable; }; sync-pins { pinmux = <GPIOMUX(63, GPOUT_HIGH, GPOEN_DISABLE, GPI_SYS_TDM_SYNC)>; input-enable; }; pcmclk-pins { pinmux = <GPIOMUX(38, GPOUT_HIGH, GPOEN_DISABLE, GPI_SYS_TDM_CLK)>; input-enable; }; }; 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>; }; }; }; &tdm { pinctrl-names = "default"; pinctrl-0 = <&tdm_pins>; status = "okay"; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pins>; status = "okay"; }; &usb0 { dr_mode = "peripheral"; 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>; };