Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/boot/dts/samsung/exynos5250-manta.dts
171008 views
// SPDX-License-Identifier: GPL-2.0
/*
 * Google Manta (Nexus 10) board device tree source
 *
 * Copyright (c) 2023-2026 Alexandre Marquet
 * Copyright (c) 2025-2026 Lukas Timmermann
 */

/dts-v1/;
#include "exynos5250.dtsi"
#include "exynos-pinctrl.h"
#include "exynos-mfc-reserved-memory.dtsi"

#include <dt-bindings/clock/maxim,max77686.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/leds/common.h>

/ {
	model = "Google Nexus 10";
	compatible = "google,manta", "samsung,exynos5250", "samsung,exynos5";

	aliases {
		mmc0 = &mmc_0; /* eMMC */
		mmc1 = &mmc_1; /* WiFi */
	};

	/* Voltage source unknown */
	bmp180_vdda_reg: regulator-bmp180-vdda {
		compatible = "regulator-fixed";
		regulator-name = "BMP180_VDDA";
	};

	/* Voltage source unknown */
	bmp180_vddd_reg: regulator-bmp180-vddd {
		compatible = "regulator-fixed";
		regulator-name = "BMP180_VDDD";
	};

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

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

		led-flash {
			function = LED_FUNCTION_FLASH;
			color = <LED_COLOR_ID_WHITE>;
			linux,default-trigger = "flash";
			gpios = <&gpe0 1 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};
	};

	fixed-rate-clocks {
		xxti {
			compatible = "samsung,clock-xxti";
			clock-frequency = <24000000>;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-0 = <&gpio_keys>;
		pinctrl-names = "default";

		button-volume-down {
			label = "Volume Down";
			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEDOWN>;
			debounce-interval = <5>;
		};

		button-volume-up {
			label = "Volume Up";
			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEUP>;
			debounce-interval = <5>;
		};

		button-power {
			label = "Power";
			gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			debounce-interval = <5>;
			wakeup-source;
		};

		lid-switch {
			label = "Hall Effect Sensor";
			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_SW>;
			linux,code = <SW_LID>;
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	multi-led {
		compatible = "leds-group-multicolor";
		color = <LED_COLOR_ID_RGB>;
		function = LED_FUNCTION_STATUS;
		leds = <&status_red>, <&status_green>, <&status_blue>, <&status_white>;
	};

	pwrseq: mmc1-pwrseq {
		compatible = "mmc-pwrseq-simple";

		reset-gpios = <&gpv1 0 GPIO_ACTIVE_LOW>;
		pinctrl-0 = <&wlan_pmena>;
		pinctrl-names = "default";

		clocks = <&max77686 MAX77686_CLK_PMIC>;
		clock-names = "ext_clock";

		post-power-on-delay-ms = <300>;
		power-off-delay-us = <50>;
	};

	firmware@204efff {
		compatible = "samsung,secure-firmware";
		reg = <0x0204efff 0x1000>;
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0x40000000 0x20000000>,
		      <0x60000000 0x20000000>,
		      <0x80000000 0x20000000>,
		      <0xa0000000 0x1ff00000>;
	};
};

&clock {
	assigned-clocks = <&clock CLK_FOUT_APLL>;
	assigned-clock-rates = <1000000000>;
};

&cpu0 {
	cpu-supply = <&buck2_reg>;
};

&cpu1 {
	cpu-supply = <&buck2_reg>;
};

&ehci {
	status = "disabled";
};

&i2c_1 {
	status = "okay";

	pressure-sensor@77 {
		compatible = "bosch,bmp180";
		reg = <0x77>;
		vddd-supply = <&bmp180_vddd_reg>;
		vdda-supply = <&bmp180_vdda_reg>;
	};

	accelerometer@68 {
		compatible = "invensense,mpu6050";
		reg = <0x68>;

		pinctrl-0 = <&acc_int>;
		pinctrl-names = "default";

		interrupt-parent = <&gpx1>;
		interrupts = <4 IRQ_TYPE_EDGE_RISING>;

		mount-matrix = "0", "-1",  "0",
			      "-1",  "0",  "0",
			       "0",  "0", "-1";

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

			magnetometer@c {
				compatible = "asahi-kasei,ak8963";
				reg = <0x0c>;

				pinctrl-0 = <&msense_reset>;
				pinctrl-names = "default";

				mount-matrix = "-1", "0",  "0",
					       "0",  "1",  "0",
					       "0",  "0", "-1";
			};
		};
	};

	led-controller@42 {
		compatible = "ams,as3668";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x42>;

		status_red: led@0 {
			reg = <0>;
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_RED>;
		};

		status_green: led@1 {
			reg = <1>;
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_GREEN>;
		};

		status_blue: led@2 {
			reg = <2>;
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_BLUE>;
		};

		status_white: led@3 {
			reg = <3>;
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_WHITE>;
		};
	};
};

&i2c_2 {
	status = "okay";

	light-sensor@23 {
		compatible = "rohm,bh1721";
		reg = <0x23>;

		pinctrl-0 = <&bh1721fvc_reset>;
		pinctrl-names = "default";

		reset-gpios = <&gph1 2 GPIO_ACTIVE_LOW>;
	};

	onewire@18 {
		compatible = "maxim,ds2484";
		reg = <0x18>;

		pinctrl-0 = <&onewire_sleep>;
		pinctrl-names = "default";
	};
};

&i2c_5 {
	samsung,i2c-sda-delay = <100>;
	status = "okay";

	max77686: pmic@9 {
		compatible = "maxim,max77686";
		reg = <0x09>;

		interrupt-parent = <&gpx0>;
		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;

		pinctrl-0 = <&max77686_irq>;
		pinctrl-names = "default";

		#clock-cells = <1>;
		wakeup-source;

		voltage-regulators {
			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck3_reg: BUCK3 {
				regulator-name = "vdd_int";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck4_reg: BUCK4 {
				regulator-name = "vdd_g3d";
				regulator-min-microvolt = <850000>;
				regulator-max-microvolt = <1200000>;
				regulator-boot-on;
			};

			ldo3_reg: LDO3 {
				regulator-name = "VCC_1.8V_AP";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo8_reg: LDO8 {
				regulator-name = "VMIPI_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo9_reg: LDO9 {
				regulator-name = "TOUCH_VDD_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo10_reg: LDO10 {
				regulator-name = "VMIPI_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo12_reg: LDO12 {
				regulator-name = "VUOTG_3.0V";
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo15_reg: LDO15 {
				regulator-name = "VHSIC_1.0V";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo16_reg: LDO16 {
				regulator-name = "VHSIC_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
			};

			ldo17_reg: LDO17 {
				regulator-name = "5M_CORE_1.5V";
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1500000>;
			};

			ldo18_reg: LDO18 {
				regulator-name = "CAM_IO_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo19_reg: LDO19 {
				regulator-name = "VT_CAM_1.8V";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
			};

			ldo20_reg: LDO20 {
				regulator-name = "TA_CHECK_1.35V";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
			};

			ldo23_reg: LDO23 {
				regulator-name = "TSP_AVDD_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			ldo24_reg: LDO24 {
				regulator-name = "CAM_AF_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
			};

			ldo25_reg: LDO25 {
				regulator-name = "VADC_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;
			};
		};
	};
};

&mixer {
	status = "okay";
};

/* eMMC */
&mmc_0 {
	non-removable;
	max-frequency = <200000000>;
	sd-uhs-ddr50;
	mmc-ddr-1_8v;
	cap-mmc-hw-reset;
	mmc-hs200-1_8v;
	bus-width = <8>;
	card-detect-delay = <200>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <1 2>;
	samsung,dw-mshc-ddr-timing = <2 3>;

	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
	pinctrl-names = "default";

	status = "okay";
};

/* WiFi */
&mmc_1 {
	non-removable;
	max-frequency = <100000000>;
	sd-uhs-sdr50;
	cap-sd-highspeed;
	keep-power-in-suspend;
	bus-width = <4>;
	card-detect-delay = <0>;
	samsung,dw-mshc-ciu-div = <3>;
	samsung,dw-mshc-sdr-timing = <2 4>;
	samsung,dw-mshc-ddr-timing = <2 3>;

	pinctrl-names = "default";
	pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus4>;
	mmc-pwrseq = <&pwrseq>;

	status = "okay";

	wifi@1 {
		compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
		reg = <1>;
		interrupt-parent = <&gpx2>;
		interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "host-wake";
		pinctrl-0 = <&wlan_irq>;
		pinctrl-names = "default";
	};
};

&ohci {
	status = "disabled";
};

&pinctrl_0 {
	acc_int: acc-int-pins {
		samsung,pins = "gpx1-4";
		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
	};

	max77686_irq: max77686-irq-pins {
		samsung,pins = "gpx0-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
	};

	gpio_keys: gpio-keys-pins {
		samsung,pins = "gpx2-0", "gpx2-1", "gpx2-7", "gpx1-3";
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	wlan_irq: wlan-irq-pins {
		samsung,pins = "gpx2-5";
		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV3>;
	};
};

&pinctrl_1 {
	bh1721fvc_reset: bh1721fvc-reset-pins {
		samsung,pins = "gph1-2";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
	};

	msense_reset: msense-reset-pins {
		samsung,pins = "gpg2-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
	};

	onewire_sleep: onewire-sleep-pins {
		samsung,pins = "gpg0-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
	};
};

&pinctrl_2 {
	wlan_pmena: wlan-pmena-pins {
		samsung,pins = "gpv1-0";
		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV3>;
		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
		samsung,pin-val = <0>;
	};
};

&pmu_system_controller {
	assigned-clocks = <&pmu_system_controller 0>;
	assigned-clock-parents = <&clock CLK_FIN_PLL>;
};

&rtc {
	clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
	clock-names = "rtc", "rtc_src";
	status = "okay";
};

&sd1_bus4 {
	samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
	samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
};

&sd1_cmd {
	samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
	samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
};

/* Bluetooth */
&serial_0 {
	status = "disabled";
};

/* GPS */
&serial_1 {
	status = "disabled";
};

&serial_2 {
	pinctrl-0 = <&uart2_data>;
	pinctrl-1 = <&uart2_data>, <&uart2_fctl>;
	pinctrl-names = "default", "flow-control";
	status = "okay";
};

&usbdrd {
	status = "disabled";
};

&usbdrd_dwc3 {
	status = "disabled";
};

&usbdrd_phy {
	status = "disabled";
};