// SPDX-License-Identifier: (GPL-2.0+ OR MIT) // Copyright (C) 2022 Samuel Holland #include #include /dts-v1/; #include "sun20i-d1.dtsi" #include "sun20i-common-regulators.dtsi" / { model = "MangoPi MQ Pro"; compatible = "widora,mangopi-mq-pro", "allwinner,sun20i-d1"; aliases { ethernet0 = &rtl8723ds; serial0 = &uart0; }; chosen { stdout-path = "serial0:115200n8"; }; hdmi_connector: connector { compatible = "hdmi-connector"; type = "c"; port { hdmi_connector_in: endpoint { remote-endpoint = <&hdmi_out_connector>; }; }; }; leds { compatible = "gpio-leds"; led-0 { color = ; function = LED_FUNCTION_STATUS; gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */ }; }; reg_avdd2v8: avdd2v8 { compatible = "regulator-fixed"; regulator-name = "avdd2v8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; vin-supply = <®_vcc_3v3>; }; reg_dvdd: dvdd { compatible = "regulator-fixed"; regulator-name = "dvdd"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; vin-supply = <®_vcc_3v3>; }; 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 17 GPIO_ACTIVE_LOW>; /* PG17 */ }; }; &cpu0 { cpu-supply = <®_vdd_cpu>; }; &dcxo { clock-frequency = <24000000>; }; &codec { routing = "Internal Speaker", "HPOUTL", "Internal Speaker", "HPOUTR"; widgets = "Speaker", "Internal Speaker"; status = "okay"; }; &de { status = "okay"; }; &ehci1 { status = "okay"; }; &hdmi { status = "okay"; }; &hdmi_out { hdmi_out_connector: endpoint { remote-endpoint = <&hdmi_connector_in>; }; }; &hdmi_phy { status = "okay"; }; &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"; rtl8723ds: wifi@1 { reg = <1>; interrupt-parent = <&pio>; interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 */ interrupt-names = "host-wake"; }; }; &ohci1 { status = "okay"; }; &pio { vcc-pe-supply = <®_avdd2v8>; /omit-if-no-ref/ i2c0_pg12_pins: i2c0-pg12-pins { pins = "PG12", "PG13"; function = "i2c0"; }; /omit-if-no-ref/ i2c1_pb4_pins: i2c1-pb4-pins { pins = "PB4", "PB5"; function = "i2c1"; }; /omit-if-no-ref/ i2c2_pb0_pins: i2c2-pb0-pins { pins = "PB0", "PB1"; function = "i2c2"; }; /omit-if-no-ref/ i2c2_pc0_pins: i2c2-pc0-pins { pins = "PC0", "PC1"; function = "i2c2"; }; /omit-if-no-ref/ i2c3_pe16_pins: i2c3-pe16-pins { pins = "PE16", "PE17"; function = "i2c3"; }; /omit-if-no-ref/ uart2_pc0_pins: uart2-pc0-pins { pins = "PC0", "PC1"; function = "uart2"; }; /omit-if-no-ref/ uart3_pd10_pins: uart3-pd10-pins { pins = "PD10", "PD11"; function = "uart3"; }; /omit-if-no-ref/ uart3_pd13_rts_cts_pins: uart3-pd13-rts-cts-pins { pins = "PD13", "PD14"; function = "uart3"; }; /omit-if-no-ref/ uart3_pb6_pins: uart3-pb6-pins { pins = "PB6", "PB7"; function = "uart3"; }; /omit-if-no-ref/ uart4_pb2_pins: uart4-pb2-pins { pins = "PB2", "PB3"; function = "uart4"; }; /omit-if-no-ref/ uart5_pb4_pins: uart5-pb4-pins { pins = "PB4", "PB5"; function = "uart5"; }; /omit-if-no-ref/ pwm0_pb5_pin: pwm0-pb5-pin { pins = "PB5"; function = "pwm0"; }; /omit-if-no-ref/ pwm0_pb12_pin: pwm0-pb12-pin { pins = "PB12"; function = "pwm0"; }; /omit-if-no-ref/ pwm0_pg12_pin: pwm0-pg12-pin { pins = "PG12"; function = "pwm0"; }; /omit-if-no-ref/ pwm1_pb6_pin: pwm1-pb6-pin { pins = "PB6"; function = "pwm1"; }; /omit-if-no-ref/ pwm1_pd17_pin: pwm1-pd17-pin { pins = "PD17"; function = "pwm1"; }; /omit-if-no-ref/ pwm2_pb11_pin: pwm2-pb11-pin { pins = "PB11"; function = "pwm2"; }; /omit-if-no-ref/ pwm2_pg13_pin: pwm2-pg13-pin { pins = "PG13"; function = "pwm2"; }; /omit-if-no-ref/ pwm3_pb0_pin: pwm3-pb0-pin { pins = "PB0"; function = "pwm3"; }; /omit-if-no-ref/ pwm4_pb1_pin: pwm4-pb1-pin { pins = "PB1"; function = "pwm4"; }; /omit-if-no-ref/ pwm5_pb8_pin: pwm5-pb8-pin { pins = "PB8"; function = "pwm5"; }; /omit-if-no-ref/ pwm5_pd21_pin: pwm5-pd21-pin { pins = "PD21"; function = "pwm5"; }; /omit-if-no-ref/ pwm6_pb9_pin: pwm6-pb9-pin { pins = "PB9"; function = "pwm6"; }; /omit-if-no-ref/ pwm7_pb10_pin: pwm7-pb10-pin { pins = "PB10"; function = "pwm7"; }; /omit-if-no-ref/ pwm7_pd22_pin: pwm7-pd22-pin { pins = "PD22"; function = "pwm7"; }; /omit-if-no-ref/ pwm7_pe16_pin: pwm7-pe16-pin { pins = "PE16"; function = "pwm7"; }; }; /* disabled &pwm { pinctrl-0 = <&pwm0_pb12_pin>, <&pwm1_pb6_pin>, <&pwm2_pb11_pin>, <&pwm4_pb1_pin>; pinctrl-names = "default"; status = "okay"; }; */ &spi1 { pinctrl-0 = <&spi1_pd_pins>; // can conflict uart3 pinctrl-names = "default"; status = "okay"; }; &i2c0 { pinctrl-0 = <&i2c0_pg12_pins>; pinctrl-names = "default"; status = "okay"; }; &i2c1 { pinctrl-0 = <&i2c1_pb4_pins>; // can conflict uart5 pinctrl-names = "default"; status = "okay"; }; &i2c2 { pinctrl-0 = <&i2c2_pb0_pins>; pinctrl-names = "default"; status = "okay"; }; /* disabled &i2c2 { pinctrl-0 = <&i2c2_pc0_pins>; // can conflict uart2 pinctrl-names = "default"; status = "okay"; }; */ &i2c3 { pinctrl-0 = <&i2c3_pe16_pins>; pinctrl-names = "default"; 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"; bluetooth { compatible = "realtek,rtl8723ds-bt"; device-wake-gpios = <&pio 6 18 GPIO_ACTIVE_HIGH>; /* PG18 */ enable-gpios = <&pio 6 15 GPIO_ACTIVE_HIGH>; /* PG15 */ host-wake-gpios = <&pio 6 14 GPIO_ACTIVE_HIGH>; /* PG14 */ }; }; &uart2 { pinctrl-0 = <&uart2_pc0_pins>; pinctrl-names = "default"; status = "okay"; }; /* disabled &uart3 { uart-has-rtscts; pinctrl-0 = <&uart3_pd10_pins>, <&uart3_pd13_rts_cts_pins>; // conflicts spi1 pinctrl-names = "default"; status = "okay"; }; */ &uart3 { pinctrl-0 = <&uart3_pb6_pins>; pinctrl-names = "default"; status = "okay"; }; &uart4 { pinctrl-0 = <&uart4_pb2_pins>; pinctrl-names = "default"; status = "okay"; }; /* disabled &uart5 { pinctrl-0 = <&uart5_pb4_pins>; // conflicts i2c1 pinctrl-names = "default"; status = "okay"; }; */ &usb_otg { dr_mode = "peripheral"; status = "okay"; }; &usbphy { usb1_vbus-supply = <®_vcc>; status = "okay"; };