| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | 
 | /* | 
 |  * Copyright (c) 2016 Andreas Färber | 
 |  * Copyright (c) 2016 BayLibre, Inc. | 
 |  * Author: Kevin Hilman <khilman@kernel.org> | 
 |  */ | 
 |  | 
 | #include "meson-gxbb.dtsi" | 
 |  | 
 | / { | 
 | 	aliases { | 
 | 		serial0 = &uart_AO; | 
 | 		ethernet0 = ðmac; | 
 | 	}; | 
 |  | 
 | 	chosen { | 
 | 		stdout-path = "serial0:115200n8"; | 
 | 	}; | 
 |  | 
 | 	memory@0 { | 
 | 		device_type = "memory"; | 
 | 		reg = <0x0 0x0 0x0 0x40000000>; | 
 | 	}; | 
 |  | 
 | 	usb_pwr: regulator-usb-pwrs { | 
 | 		compatible = "regulator-fixed"; | 
 |  | 
 | 		regulator-name = "USB_PWR"; | 
 |  | 
 | 		regulator-min-microvolt = <5000000>; | 
 | 		regulator-max-microvolt = <5000000>; | 
 |  | 
 | 		/* signal name in schematic: USB_PWR_EN */ | 
 | 		gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>; | 
 | 		enable-active-high; | 
 | 	}; | 
 |  | 
 | 	vddio_card: gpio-regulator { | 
 | 		compatible = "regulator-gpio"; | 
 |  | 
 | 		regulator-name = "VDDIO_CARD"; | 
 | 		regulator-min-microvolt = <1800000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 |  | 
 | 		gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; | 
 | 		gpios-states = <1>; | 
 |  | 
 | 		/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */ | 
 | 		states = <1800000 0>, | 
 | 			 <3300000 1>; | 
 |  | 
 | 		regulator-settling-time-up-us = <10000>; | 
 | 		regulator-settling-time-down-us = <150000>; | 
 | 	}; | 
 |  | 
 | 	vddio_boot: regulator-vddio-boot { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "VDDIO_BOOT"; | 
 | 		regulator-min-microvolt = <1800000>; | 
 | 		regulator-max-microvolt = <1800000>; | 
 | 	}; | 
 |  | 
 | 	vddao_3v3: regulator-vddao-3v3 { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "VDDAO_3V3"; | 
 | 		regulator-min-microvolt = <3300000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 | 	}; | 
 |  | 
 | 	vcc_3v3: regulator-vcc-3v3 { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "VCC_3V3"; | 
 | 		regulator-min-microvolt = <3300000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 | 	}; | 
 |  | 
 | 	emmc_pwrseq: emmc-pwrseq { | 
 | 		compatible = "mmc-pwrseq-emmc"; | 
 | 		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; | 
 | 	}; | 
 |  | 
 | 	wifi32k: wifi32k { | 
 | 		compatible = "pwm-clock"; | 
 | 		#clock-cells = <0>; | 
 | 		clock-frequency = <32768>; | 
 | 		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | 
 | 	}; | 
 |  | 
 | 	sdio_pwrseq: sdio-pwrseq { | 
 | 		compatible = "mmc-pwrseq-simple"; | 
 | 		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | 
 | 		clocks = <&wifi32k>; | 
 | 		clock-names = "ext_clock"; | 
 | 	}; | 
 |  | 
 | 	cvbs_connector: cvbs-connector { | 
 | 		compatible = "composite-video-connector"; | 
 |  | 
 | 		port { | 
 | 			cvbs_connector_in: endpoint { | 
 | 				remote-endpoint = <&cvbs_vdac_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	hdmi-connector { | 
 | 		compatible = "hdmi-connector"; | 
 | 		type = "a"; | 
 |  | 
 | 		port { | 
 | 			hdmi_connector_in: endpoint { | 
 | 				remote-endpoint = <&hdmi_tx_tmds_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &cec_AO { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&ao_cec_pins>; | 
 | 	pinctrl-names = "default"; | 
 | 	hdmi-phandle = <&hdmi_tx>; | 
 | }; | 
 |  | 
 | &cvbs_vdac_port { | 
 | 	cvbs_vdac_out: endpoint { | 
 | 		remote-endpoint = <&cvbs_connector_in>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &hdmi_tx { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; | 
 | 	pinctrl-names = "default"; | 
 | }; | 
 |  | 
 | &hdmi_tx_tmds_port { | 
 | 	hdmi_tx_tmds_out: endpoint { | 
 | 		remote-endpoint = <&hdmi_connector_in>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &ir { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&remote_input_ao_pins>; | 
 | 	pinctrl-names = "default"; | 
 | }; | 
 |  | 
 | &pwm_ef { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&pwm_e_pins>; | 
 | 	pinctrl-names = "default"; | 
 | 	clocks = <&clkc CLKID_FCLK_DIV4>; | 
 | 	clock-names = "clkin0"; | 
 | }; | 
 |  | 
 | /* Wireless SDIO Module */ | 
 | &sd_emmc_a { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&sdio_pins>; | 
 | 	pinctrl-1 = <&sdio_clk_gate_pins>; | 
 | 	pinctrl-names = "default", "clk-gate"; | 
 | 	#address-cells = <1>; | 
 | 	#size-cells = <0>; | 
 |  | 
 | 	bus-width = <4>; | 
 | 	cap-sd-highspeed; | 
 | 	max-frequency = <50000000>; | 
 |  | 
 | 	non-removable; | 
 | 	disable-wp; | 
 |  | 
 | 	/* WiFi firmware requires power to be kept while in suspend */ | 
 | 	keep-power-in-suspend; | 
 |  | 
 | 	mmc-pwrseq = <&sdio_pwrseq>; | 
 |  | 
 | 	vmmc-supply = <&vddao_3v3>; | 
 | 	vqmmc-supply = <&vddio_boot>; | 
 |  | 
 | 	brcmf: wifi@1 { | 
 | 		reg = <1>; | 
 | 		compatible = "brcm,bcm4329-fmac"; | 
 | 	}; | 
 | }; | 
 |  | 
 | /* SD card */ | 
 | &sd_emmc_b { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&sdcard_pins>; | 
 | 	pinctrl-1 = <&sdcard_clk_gate_pins>; | 
 | 	pinctrl-names = "default", "clk-gate"; | 
 |  | 
 | 	bus-width = <4>; | 
 | 	cap-sd-highspeed; | 
 | 	sd-uhs-sdr12; | 
 | 	sd-uhs-sdr25; | 
 | 	sd-uhs-sdr50; | 
 | 	max-frequency = <100000000>; | 
 | 	disable-wp; | 
 |  | 
 | 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | 
 |  | 
 | 	vmmc-supply = <&vddao_3v3>; | 
 | 	vqmmc-supply = <&vddio_card>; | 
 | }; | 
 |  | 
 | /* eMMC */ | 
 | &sd_emmc_c { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | 
 | 	pinctrl-1 = <&emmc_clk_gate_pins>; | 
 | 	pinctrl-names = "default", "clk-gate"; | 
 |  | 
 | 	bus-width = <8>; | 
 | 	cap-mmc-highspeed; | 
 | 	max-frequency = <200000000>; | 
 | 	non-removable; | 
 | 	disable-wp; | 
 | 	mmc-ddr-1_8v; | 
 | 	mmc-hs200-1_8v; | 
 |  | 
 | 	mmc-pwrseq = <&emmc_pwrseq>; | 
 | 	vmmc-supply = <&vcc_3v3>; | 
 | 	vqmmc-supply = <&vddio_boot>; | 
 | }; | 
 |  | 
 | /* This UART is brought out to the DB9 connector */ | 
 | &uart_AO { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&uart_ao_a_pins>; | 
 | 	pinctrl-names = "default"; | 
 | }; | 
 |  | 
 | &usb0_phy { | 
 | 	status = "okay"; | 
 | 	phy-supply = <&usb_pwr>; | 
 | }; | 
 |  | 
 | &usb1_phy { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &usb0 { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &usb1 { | 
 | 	status = "okay"; | 
 | }; |