Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi
26498 views
// SPDX-License-Identifier: GPL-2.0-only OR MIT

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>

#include "mt7988a.dtsi"

/ {
	chosen {
		stdout-path = "serial0:115200n8";
	};

	fan: pwm-fan {
		compatible = "pwm-fan";
		/* cooling level (0, 1, 2, 3) : (0% duty, 30% duty, 50% duty, 100% duty) */
		cooling-levels = <0 80 128 255>;
		#cooling-cells = <2>;
		pwms = <&pwm 0 50000>;
		status = "okay";
	};

	gpio-leds {
		compatible = "gpio-leds";

		led_green: led-green {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&pio 79 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		led_blue: led-blue {
			function = LED_FUNCTION_WPS;
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&pio 63 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};


	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;
	};
};

&cci {
	proc-supply = <&rt5190_buck3>;
};

&cpu0 {
	proc-supply = <&rt5190_buck3>;
};

&cpu1 {
	proc-supply = <&rt5190_buck3>;
};

&cpu2 {
	proc-supply = <&rt5190_buck3>;
};

&cpu3 {
	proc-supply = <&rt5190_buck3>;
};

&cpu_thermal {
	trips {
		cpu_trip_hot: hot {
			temperature = <120000>;
			hysteresis = <2000>;
			type = "hot";
		};

		cpu_trip_active_high: active-high {
			temperature = <115000>;
			hysteresis = <2000>;
			type = "active";
		};

		cpu_trip_active_med: active-med {
			temperature = <85000>;
			hysteresis = <2000>;
			type = "active";
		};

		cpu_trip_active_low: active-low {
			temperature = <40000>;
			hysteresis = <2000>;
			type = "active";
		};
	};

	cooling-maps {
		map-cpu-active-high {
			/* active: set fan to cooling level 2 */
			cooling-device = <&fan 3 3>;
			trip = <&cpu_trip_active_high>;
		};

		map-cpu-active-med {
			/* active: set fan to cooling level 1 */
			cooling-device = <&fan 2 2>;
			trip = <&cpu_trip_active_med>;
		};

		map-cpu-active-low {
			/* active: set fan to cooling level 0 */
			cooling-device = <&fan 1 1>;
			trip = <&cpu_trip_active_low>;
		};
	};
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";

	rt5190a_64: rt5190a@64 {
		compatible = "richtek,rt5190a";
		reg = <0x64>;
		vin2-supply = <&rt5190_buck1>;
		vin3-supply = <&rt5190_buck1>;
		vin4-supply = <&rt5190_buck1>;

		regulators {
			rt5190_buck1: buck1 {
				regulator-name = "rt5190a-buck1";
				regulator-min-microvolt = <5090000>;
				regulator-max-microvolt = <5090000>;
				regulator-allowed-modes =
				<RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
				regulator-boot-on;
				regulator-always-on;
			};
			buck2 {
				regulator-name = "vcore";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1400000>;
				regulator-boot-on;
				regulator-always-on;
			};
			rt5190_buck3: buck3 {
				regulator-name = "vproc";
				regulator-min-microvolt = <600000>;
				regulator-max-microvolt = <1400000>;
				regulator-boot-on;
			};
			buck4 {
				regulator-name = "rt5190a-buck4";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-allowed-modes =
				<RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
				regulator-boot-on;
				regulator-always-on;
			};
			ldo {
				regulator-name = "rt5190a-ldo";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
				regulator-always-on;
			};
		};
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_1_pins>;
	status = "okay";

	pca9545: i2c-mux@70 {
		compatible = "nxp,pca9545";
		reg = <0x70>;
		reset-gpios = <&pio 5 GPIO_ACTIVE_LOW>;
		#address-cells = <1>;
		#size-cells = <0>;

		i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;

			pcf8563: rtc@51 {
				compatible = "nxp,pcf8563";
				reg = <0x51>;
				#clock-cells = <0>;
			};

			eeprom@57 {
				compatible = "atmel,24c02";
				reg = <0x57>;
				size = <256>;
			};

		};

		i2c_sfp1: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
		};
	};
};

/* mPCIe SIM2 */
&pcie0 {
	status = "okay";
};

/* mPCIe SIM3 */
&pcie1 {
	status = "okay";
};

/* M.2 key-B SIM1 */
&pcie2 {
	status = "okay";
};

/* M.2 key-M SSD */
&pcie3 {
	status = "okay";
};

&pio {
	i2c0_pins: i2c0-g0-pins {
		mux {
			function = "i2c";
			groups = "i2c0_1";
		};
	};

	i2c1_pins: i2c1-g0-pins {
		mux {
			function = "i2c";
			groups = "i2c1_0";
		};
	};

	i2c2_1_pins: i2c2-g1-pins {
		mux {
			function = "i2c";
			groups = "i2c2_1";
		};
	};

	gbe0_led0_pins: gbe0-led0-pins {
		mux {
			function = "led";
			groups = "gbe0_led0";
		};
	};

	gbe1_led0_pins: gbe1-led0-pins {
		mux {
			function = "led";
			groups = "gbe1_led0";
		};
	};

	gbe2_led0_pins: gbe2-led0-pins {
		mux {
			function = "led";
			groups = "gbe2_led0";
		};
	};

	gbe3_led0_pins: gbe3-led0-pins {
		mux {
			function = "led";
			groups = "gbe3_led0";
		};
	};

	i2p5gbe_led0_pins: 2p5gbe-led0-pins {
		mux {
			function = "led";
			groups = "2p5gbe_led0";
		};
	};

	mmc0_pins_emmc_45: mmc0-emmc-45-pins {
		mux {
			function = "flash";
			groups = "emmc_45";
		};
	};

	mmc0_pins_emmc_51: mmc0-emmc-51-pins {
		mux {
			function = "flash";
			groups = "emmc_51";
		};
	};

	mmc0_pins_sdcard: mmc0-sdcard-pins {
		mux {
			function = "flash";
			groups = "sdcard";
		};
	};

	spi0_flash_pins: spi0-flash-pins {
		mux {
			function = "spi";
			groups = "spi0", "spi0_wp_hold";
		};
	};
};

&pwm {
	status = "okay";
};

&serial0 {
	status = "okay";
};

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_flash_pins>;
	status = "okay";

	spi_nand: flash@0 {
		compatible = "spi-nand";
		reg = <0>;
		spi-max-frequency = <52000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
	};
};

&spi1 {
	status = "okay";
};

&spi_nand {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "bl2";
			reg = <0x0 0x200000>;
			read-only;
		};
	};
};

&ssusb1 {
	status = "okay";
};

&tphy {
	status = "okay";
};

&watchdog {
	status = "okay";
};

&xsphy {
	status = "okay";
};