| /* | 
 |  * Copyright 2017-2018 Sean Wang <sean.wang@mediatek.com> | 
 |  * | 
 |  * SPDX-License-Identifier: (GPL-2.0+ OR MIT) | 
 |  */ | 
 |  | 
 | /dts-v1/; | 
 | #include <dt-bindings/input/input.h> | 
 | #include "mt7623n.dtsi" | 
 | #include "mt6323.dtsi" | 
 |  | 
 | / { | 
 | 	model = "Bananapi BPI-R2"; | 
 | 	compatible = "bananapi,bpi-r2", "mediatek,mt7623"; | 
 |  | 
 | 	aliases { | 
 | 		serial2 = &uart2; | 
 | 	}; | 
 |  | 
 | 	chosen { | 
 | 		stdout-path = "serial2:115200n8"; | 
 | 	}; | 
 |  | 
 | 	connector { | 
 | 		compatible = "hdmi-connector"; | 
 | 		label = "hdmi"; | 
 | 		type = "d"; | 
 | 		ddc-i2c-bus = <&hdmiddc0>; | 
 |  | 
 | 		port { | 
 | 			hdmi_connector_in: endpoint { | 
 | 				remote-endpoint = <&hdmi0_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	cpus { | 
 | 		cpu@0 { | 
 | 			proc-supply = <&mt6323_vproc_reg>; | 
 | 		}; | 
 |  | 
 | 		cpu@1 { | 
 | 			proc-supply = <&mt6323_vproc_reg>; | 
 | 		}; | 
 |  | 
 | 		cpu@2 { | 
 | 			proc-supply = <&mt6323_vproc_reg>; | 
 | 		}; | 
 |  | 
 | 		cpu@3 { | 
 | 			proc-supply = <&mt6323_vproc_reg>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	reg_1p8v: regulator-1p8v { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "fixed-1.8V"; | 
 | 		regulator-min-microvolt = <1800000>; | 
 | 		regulator-max-microvolt = <1800000>; | 
 | 		regulator-boot-on; | 
 | 		regulator-always-on; | 
 | 	}; | 
 |  | 
 | 	reg_3p3v: regulator-3p3v { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "fixed-3.3V"; | 
 | 		regulator-min-microvolt = <3300000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 | 		regulator-boot-on; | 
 | 		regulator-always-on; | 
 | 	}; | 
 |  | 
 | 	reg_5v: regulator-5v { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "fixed-5V"; | 
 | 		regulator-min-microvolt = <5000000>; | 
 | 		regulator-max-microvolt = <5000000>; | 
 | 		regulator-boot-on; | 
 | 		regulator-always-on; | 
 | 	}; | 
 |  | 
 | 	reg_vgpu: fixedregulator@0 { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "vdd_fixed_vgpu"; | 
 | 		regulator-min-microvolt = <1150000>; | 
 | 		regulator-max-microvolt = <1150000>; | 
 | 	}; | 
 |  | 
 | 	gpio-keys { | 
 | 		compatible = "gpio-keys"; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&key_pins_a>; | 
 |  | 
 | 		factory { | 
 | 			label = "factory"; | 
 | 			linux,code = <BTN_0>; | 
 | 			gpios = <&pio 256 GPIO_ACTIVE_LOW>; | 
 | 		}; | 
 |  | 
 | 		wps { | 
 | 			label = "wps"; | 
 | 			linux,code = <KEY_WPS_BUTTON>; | 
 | 			gpios = <&pio 257 GPIO_ACTIVE_HIGH>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	leds { | 
 | 		compatible = "gpio-leds"; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&led_pins_a>; | 
 |  | 
 | 		blue { | 
 | 			label = "bpi-r2:pio:blue"; | 
 | 			gpios = <&pio 240 GPIO_ACTIVE_LOW>; | 
 | 			default-state = "off"; | 
 | 		}; | 
 |  | 
 | 		green { | 
 | 			label = "bpi-r2:pio:green"; | 
 | 			gpios = <&pio 241 GPIO_ACTIVE_LOW>; | 
 | 			default-state = "off"; | 
 | 		}; | 
 |  | 
 | 		red { | 
 | 			label = "bpi-r2:pio:red"; | 
 | 			gpios = <&pio 239 GPIO_ACTIVE_LOW>; | 
 | 			default-state = "off"; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	memory@80000000 { | 
 | 		device_type = "memory"; | 
 | 		reg = <0 0x80000000 0 0x80000000>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &bls { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &btif { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &cec { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &cir { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&cir_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &crypto { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &dpi0 { | 
 | 	status = "okay"; | 
 |  | 
 | 	ports { | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <0>; | 
 | 		port@0 { | 
 | 			reg = <0>; | 
 | 			dpi0_out: endpoint { | 
 | 				remote-endpoint = <&hdmi0_in>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | ð { | 
 | 	status = "okay"; | 
 |  | 
 | 	gmac0: mac@0 { | 
 | 		compatible = "mediatek,eth-mac"; | 
 | 		reg = <0>; | 
 | 		phy-mode = "trgmii"; | 
 |  | 
 | 		fixed-link { | 
 | 			speed = <1000>; | 
 | 			full-duplex; | 
 | 			pause; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	mdio: mdio-bus { | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <0>; | 
 |  | 
 | 		switch@0 { | 
 | 			compatible = "mediatek,mt7530"; | 
 | 			reg = <0>; | 
 | 			reset-gpios = <&pio 33 0>; | 
 | 			core-supply = <&mt6323_vpa_reg>; | 
 | 			io-supply = <&mt6323_vemc3v3_reg>; | 
 |  | 
 | 			ports { | 
 | 				#address-cells = <1>; | 
 | 				#size-cells = <0>; | 
 |  | 
 | 				port@0 { | 
 | 					reg = <0>; | 
 | 					label = "wan"; | 
 | 				}; | 
 |  | 
 | 				port@1 { | 
 | 					reg = <1>; | 
 | 					label = "lan0"; | 
 | 				}; | 
 |  | 
 | 				port@2 { | 
 | 					reg = <2>; | 
 | 					label = "lan1"; | 
 | 				}; | 
 |  | 
 | 				port@3 { | 
 | 					reg = <3>; | 
 | 					label = "lan2"; | 
 | 				}; | 
 |  | 
 | 				port@4 { | 
 | 					reg = <4>; | 
 | 					label = "lan3"; | 
 | 				}; | 
 |  | 
 | 				port@6 { | 
 | 					reg = <6>; | 
 | 					label = "cpu"; | 
 | 					ethernet = <&gmac0>; | 
 | 					phy-mode = "trgmii"; | 
 |  | 
 | 					fixed-link { | 
 | 						speed = <1000>; | 
 | 						full-duplex; | 
 | 						pause; | 
 | 					}; | 
 | 				}; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &hdmi0 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&hdmi_pins_a>; | 
 | 	status = "okay"; | 
 |  | 
 | 	ports { | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <0>; | 
 | 		port@0 { | 
 | 			reg = <0>; | 
 | 			hdmi0_in: endpoint { | 
 | 				remote-endpoint = <&dpi0_out>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		port@1 { | 
 | 			reg = <1>; | 
 | 			hdmi0_out: endpoint { | 
 | 				remote-endpoint = <&hdmi_connector_in>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &hdmiddc0 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&hdmi_ddc_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &hdmi_phy { | 
 | 	mediatek,ibias = <0xa>; | 
 | 	mediatek,ibias_up = <0x1c>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &i2c0 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&i2c0_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &i2c1 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&i2c1_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &mali { | 
 | 	mali-supply = <®_vgpu>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &mmc0 { | 
 | 	pinctrl-names = "default", "state_uhs"; | 
 | 	pinctrl-0 = <&mmc0_pins_default>; | 
 | 	pinctrl-1 = <&mmc0_pins_uhs>; | 
 | 	status = "okay"; | 
 | 	bus-width = <8>; | 
 | 	max-frequency = <50000000>; | 
 | 	cap-mmc-highspeed; | 
 | 	vmmc-supply = <®_3p3v>; | 
 | 	vqmmc-supply = <®_1p8v>; | 
 | 	non-removable; | 
 | }; | 
 |  | 
 | &mmc1 { | 
 | 	pinctrl-names = "default", "state_uhs"; | 
 | 	pinctrl-0 = <&mmc1_pins_default>; | 
 | 	pinctrl-1 = <&mmc1_pins_uhs>; | 
 | 	status = "okay"; | 
 | 	bus-width = <4>; | 
 | 	max-frequency = <50000000>; | 
 | 	cap-sd-highspeed; | 
 | 	cd-gpios = <&pio 261 GPIO_ACTIVE_LOW>; | 
 | 	vmmc-supply = <®_3p3v>; | 
 | 	vqmmc-supply = <®_3p3v>; | 
 | }; | 
 |  | 
 | &mt6323_leds { | 
 | 	status = "okay"; | 
 |  | 
 | 	led@0 { | 
 | 		reg = <0>; | 
 | 		label = "bpi-r2:isink:green"; | 
 | 		default-state = "off"; | 
 | 	}; | 
 |  | 
 | 	led@1 { | 
 | 		reg = <1>; | 
 | 		label = "bpi-r2:isink:red"; | 
 | 		default-state = "off"; | 
 | 	}; | 
 |  | 
 | 	led@2 { | 
 | 		reg = <2>; | 
 | 		label = "bpi-r2:isink:blue"; | 
 | 		default-state = "off"; | 
 | 	}; | 
 | }; | 
 |  | 
 | &pcie { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&pcie_default>; | 
 | 	status = "okay"; | 
 |  | 
 | 	pcie@0,0 { | 
 | 		status = "okay"; | 
 | 	}; | 
 |  | 
 | 	pcie@1,0 { | 
 | 		status = "okay"; | 
 | 	}; | 
 | }; | 
 |  | 
 | &pcie0_phy { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &pcie1_phy { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &pwm { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&pwm_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &spi0 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&spi0_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &uart0 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart0_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &uart1 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart1_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &uart2 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart2_pins_a>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &usb1 { | 
 | 	vusb33-supply = <®_3p3v>; | 
 | 	vbus-supply = <®_5v>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &usb2 { | 
 | 	vusb33-supply = <®_3p3v>; | 
 | 	vbus-supply = <®_5v>; | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &u3phy1 { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &u3phy2 { | 
 | 	status = "okay"; | 
 | }; |