| // SPDX-License-Identifier: (GPL-2.0+ or MIT) |
| // Copyright (C) 2021-2022 Samuel Holland <samuel@sholland.org> |
| |
| /* |
| * gpio line names |
| * |
| * The Nezha-D1 has a 40-pin IO header. Some of these pins are routed |
| * directly to pads on the SoC, others come from an 8-bit pcf857x IO |
| * expander. Therefore, these line names are specified in two places: |
| * one set for the pcf857x, and one set for the pio controller. |
| * |
| * Lines which are routed to the 40-pin header are named as follows: |
| * <pin#> [<pin name>] |
| * where: |
| * <pin#> is the actual pin number of the 40-pin header |
| * <pin name> is the name of the pin by function/gpio# |
| * |
| * For details regarding pin numbers and names see the schematics (under |
| * "IO EXPAND"): |
| * http://dl.linux-sunxi.org/D1/D1_Nezha_development_board_schematic_diagram_20210224.pdf |
| */ |
| |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| |
| /dts-v1/; |
| |
| #include "sun20i-d1.dtsi" |
| #include "sun20i-common-regulators.dtsi" |
| |
| / { |
| model = "Allwinner D1 Nezha"; |
| compatible = "allwinner,d1-nezha", "allwinner,sun20i-d1"; |
| |
| aliases { |
| ethernet0 = &emac; |
| ethernet1 = &xr829; |
| serial0 = &uart0; |
| }; |
| |
| chosen { |
| stdout-path = "serial0:115200n8"; |
| }; |
| |
| reg_usbvbus: usbvbus { |
| compatible = "regulator-fixed"; |
| regulator-name = "usbvbus"; |
| regulator-min-microvolt = <5000000>; |
| regulator-max-microvolt = <5000000>; |
| gpio = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */ |
| enable-active-high; |
| vin-supply = <®_vcc>; |
| }; |
| |
| /* |
| * This regulator is PWM-controlled, but the PWM controller is not |
| * yet supported, so fix the regulator to its default voltage. |
| */ |
| reg_vdd_cpu: vdd-cpu { |
| compatible = "regulator-fixed"; |
| regulator-name = "vdd-cpu"; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| vin-supply = <®_vcc>; |
| }; |
| |
| wifi_pwrseq: wifi-pwrseq { |
| compatible = "mmc-pwrseq-simple"; |
| reset-gpios = <&pio 6 12 GPIO_ACTIVE_LOW>; /* PG12 */ |
| }; |
| }; |
| |
| &cpu0 { |
| cpu-supply = <®_vdd_cpu>; |
| }; |
| |
| &dcxo { |
| clock-frequency = <24000000>; |
| }; |
| |
| &ehci0 { |
| status = "okay"; |
| }; |
| |
| &ehci1 { |
| status = "okay"; |
| }; |
| |
| &emac { |
| pinctrl-0 = <&rgmii_pe_pins>; |
| pinctrl-names = "default"; |
| phy-handle = <&ext_rgmii_phy>; |
| phy-mode = "rgmii-id"; |
| phy-supply = <®_vcc_3v3>; |
| status = "okay"; |
| }; |
| |
| &i2c2 { |
| pinctrl-0 = <&i2c2_pb0_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| pcf8574a: gpio@38 { |
| compatible = "nxp,pcf8574a"; |
| reg = <0x38>; |
| interrupt-parent = <&pio>; |
| interrupts = <1 2 IRQ_TYPE_LEVEL_LOW>; /* PB2 */ |
| interrupt-controller; |
| gpio-controller; |
| #gpio-cells = <2>; |
| #interrupt-cells = <2>; |
| gpio-line-names = |
| "pin13 [gpio8]", |
| "pin16 [gpio10]", |
| "pin18 [gpio11]", |
| "pin26 [gpio17]", |
| "pin22 [gpio14]", |
| "pin28 [gpio19]", |
| "pin37 [gpio23]", |
| "pin11 [gpio6]"; |
| }; |
| }; |
| |
| &mdio { |
| ext_rgmii_phy: ethernet-phy@1 { |
| compatible = "ethernet-phy-ieee802.3-c22"; |
| reg = <1>; |
| }; |
| }; |
| |
| &mmc0 { |
| bus-width = <4>; |
| cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */ |
| disable-wp; |
| vmmc-supply = <®_vcc_3v3>; |
| vqmmc-supply = <®_vcc_3v3>; |
| pinctrl-0 = <&mmc0_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &mmc1 { |
| bus-width = <4>; |
| mmc-pwrseq = <&wifi_pwrseq>; |
| non-removable; |
| vmmc-supply = <®_vcc_3v3>; |
| vqmmc-supply = <®_vcc_3v3>; |
| pinctrl-0 = <&mmc1_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| xr829: wifi@1 { |
| reg = <1>; |
| interrupt-parent = <&pio>; |
| interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 */ |
| interrupt-names = "host-wake"; |
| }; |
| }; |
| |
| &ohci0 { |
| status = "okay"; |
| }; |
| |
| &ohci1 { |
| status = "okay"; |
| }; |
| |
| &uart0 { |
| pinctrl-0 = <&uart0_pb8_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| }; |
| |
| &uart1 { |
| uart-has-rtscts; |
| pinctrl-0 = <&uart1_pg6_pins>, <&uart1_pg8_rts_cts_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| /* XR829 bluetooth is connected here */ |
| }; |
| |
| &usb_otg { |
| dr_mode = "otg"; |
| status = "okay"; |
| }; |
| |
| &usbphy { |
| usb0_id_det-gpios = <&pio 3 21 GPIO_ACTIVE_HIGH>; /* PD21 */ |
| usb0_vbus_det-gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */ |
| usb0_vbus-supply = <®_usbvbus>; |
| usb1_vbus-supply = <®_vcc>; |
| status = "okay"; |
| }; |
| |
| &pio { |
| gpio-line-names = |
| /* Port A */ |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| /* Port B */ |
| "pin5 [gpio2/twi2-sck]", |
| "pin3 [gpio1/twi2-sda]", |
| "", |
| "pin38 [gpio24/i2s2-din]", |
| "pin40 [gpio25/i2s2-dout]", |
| "pin12 [gpio7/i2s-clk]", |
| "pin35 [gpio22/i2s2-lrck]", |
| "", |
| "pin8 [gpio4/uart0-txd]", |
| "pin10 [gpio5/uart0-rxd]", |
| "", |
| "", |
| "pin15 [gpio9]", |
| "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| /* Port C */ |
| "", |
| "pin31 [gpio21]", |
| "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| "", "", "", "", "", "", "", "", |
| /* Port D */ |
| "", "", "", "", "", "", "", "", |
| "", "", |
| "pin24 [gpio16/spi1-ce0]", |
| "pin23 [gpio15/spi1-clk]", |
| "pin19 [gpio12/spi1-mosi]", |
| "pin21 [gpio13/spi1-miso]", |
| "pin27 [gpio18/spi1-hold]", |
| "pin29 [gpio20/spi1-wp]", |
| "", "", "", "", "", "", |
| "pin7 [gpio3/pwm]"; |
| }; |