Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts
54488 views
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2024 Yangyu Chen <[email protected]>
 */

#include "k1.dtsi"
#include "k1-pinctrl.dtsi"

/ {
	model = "Banana Pi BPI-F3";
	compatible = "bananapi,bpi-f3", "spacemit,k1";

	aliases {
		ethernet0 = &eth0;
		ethernet1 = &eth1;
		serial0 = &uart0;
		i2c2 = &i2c2;
		i2c8 = &i2c8;
	};

	chosen {
		stdout-path = "serial0";
	};

	leds {
		compatible = "gpio-leds";

		led1 {
			label = "sys-led";
			gpios = <&gpio K1_GPIO(96) GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
			default-state = "on";
		};
	};

	pcie_vcc_3v3: pcie-vcc3v3 {
		compatible = "regulator-fixed";
		regulator-name = "PCIE_VCC3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	reg_dc_in: dc-in-12v {
		compatible = "regulator-fixed";
		regulator-name = "dc_in_12v";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-boot-on;
		regulator-always-on;
	};

	reg_vcc_4v: vcc-4v {
		compatible = "regulator-fixed";
		regulator-name = "vcc_4v";
		regulator-min-microvolt = <4000000>;
		regulator-max-microvolt = <4000000>;
		regulator-boot-on;
		regulator-always-on;
		vin-supply = <&reg_dc_in>;
	};

	usb3-vbus-5v {
		compatible = "regulator-fixed";
		regulator-name = "USB30_VBUS";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
		gpio = <&gpio K1_GPIO(97) GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	usb3_hub_5v: usb3-hub-5v {
		compatible = "regulator-fixed";
		regulator-name = "USB30_HUB";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio K1_GPIO(123) GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
};

&combo_phy {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie0_3_cfg>;
	status = "okay";
};

&emmc {
	bus-width = <8>;
	mmc-hs400-1_8v;
	mmc-hs400-enhanced-strobe;
	non-removable;
	no-sd;
	no-sdio;
	status = "okay";
};

&eth0 {
	phy-handle = <&rgmii0>;
	phy-mode = "rgmii-id";
	pinctrl-names = "default";
	pinctrl-0 = <&gmac0_cfg>;
	rx-internal-delay-ps = <0>;
	tx-internal-delay-ps = <0>;
	status = "okay";

	mdio-bus {
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		reset-gpios = <&gpio K1_GPIO(110) GPIO_ACTIVE_LOW>;
		reset-delay-us = <10000>;
		reset-post-delay-us = <100000>;

		rgmii0: phy@1 {
			reg = <0x1>;
		};
	};
};

&eth1 {
	phy-handle = <&rgmii1>;
	phy-mode = "rgmii-id";
	pinctrl-names = "default";
	pinctrl-0 = <&gmac1_cfg>;
	rx-internal-delay-ps = <0>;
	tx-internal-delay-ps = <250>;
	status = "okay";

	mdio-bus {
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		reset-gpios = <&gpio K1_GPIO(115) GPIO_ACTIVE_LOW>;
		reset-delay-us = <10000>;
		reset-post-delay-us = <100000>;

		rgmii1: phy@1 {
			reg = <0x1>;
		};
	};
};

&pdma {
	status = "okay";
};

&qspi {
	pinctrl-names = "default";
	pinctrl-0 = <&qspi_cfg>;
	status = "okay";
};

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

	eeprom@50 {
		compatible = "atmel,24c02";
		reg = <0x50>;
		vcc-supply = <&buck3_1v8>; /* EEPROM_VCC1V8 */
		pagesize = <16>;
		read-only;
		size = <256>;

		nvmem-layout {
			compatible = "onie,tlv-layout";

			mac-address {
				#nvmem-cell-cells = <1>;
			};

			num-macs {
			};

			serial-number {
			};
		};
	};
};

&i2c8 {
	pinctrl-0 = <&i2c8_cfg>;
	pinctrl-names = "default";
	status = "okay";

	pmic@41 {
		compatible = "spacemit,p1";
		reg = <0x41>;
		interrupts = <64>;
		vin-supply = <&reg_vcc_4v>;

		regulators {
			buck1 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3450000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			buck2 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3450000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			buck3_1v8: buck3 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1800000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			buck4 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3300000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			buck5 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3450000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			buck6 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3450000>;
				regulator-ramp-delay = <5000>;
				regulator-always-on;
			};

			aldo1 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
				regulator-boot-on;
			};

			aldo2 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			aldo3 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			aldo4 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			dldo1 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
				regulator-boot-on;
			};

			dldo2 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			dldo3 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			dldo4 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
				regulator-always-on;
			};

			dldo5 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};

			dldo6 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
				regulator-always-on;
			};

			dldo7 {
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <3400000>;
			};
		};
	};
};

&pcie1_phy {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie1_3_cfg>;
	status = "okay";
};

&pcie1_port {
	phys = <&pcie1_phy>;
};

&pcie1 {
	vpcie3v3-supply = <&pcie_vcc_3v3>;
	status = "okay";
};

&pcie2_phy {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie2_4_cfg>;
	status = "okay";
};

&pcie2_port {
	phys = <&pcie2_phy>;
};

&pcie2 {
	vpcie3v3-supply = <&pcie_vcc_3v3>;
	status = "okay";
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_2_cfg>;
	status = "okay";
};

&usbphy2 {
	status = "okay";
};

&usb_dwc3 {
	dr_mode = "host";
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	hub_2_0: hub@1 {
		compatible = "usb2109,2817";
		reg = <0x1>;
		vdd-supply = <&usb3_hub_5v>;
		peer-hub = <&hub_3_0>;
		reset-gpios = <&gpio K1_GPIO(124) GPIO_ACTIVE_LOW>;
	};

	hub_3_0: hub@2 {
		compatible = "usb2109,817";
		reg = <0x2>;
		vdd-supply = <&usb3_hub_5v>;
		peer-hub = <&hub_2_0>;
		reset-gpios = <&gpio K1_GPIO(124) GPIO_ACTIVE_LOW>;
	};
};