xref: /linux/arch/arm64/boot/dts/exynos/google/gs101-pixel-common.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
158dbafb7SAndré Draszik// SPDX-License-Identifier: GPL-2.0-only
258dbafb7SAndré Draszik/*
358dbafb7SAndré Draszik * Device Tree nodes common for all GS101-based Pixel
458dbafb7SAndré Draszik *
558dbafb7SAndré Draszik * Copyright 2021-2023 Google LLC
658dbafb7SAndré Draszik * Copyright 2023 Linaro Ltd - <peter.griffin@linaro.org>
758dbafb7SAndré Draszik */
858dbafb7SAndré Draszik
958dbafb7SAndré Draszik/dts-v1/;
1058dbafb7SAndré Draszik
1158dbafb7SAndré Draszik#include <dt-bindings/gpio/gpio.h>
1258dbafb7SAndré Draszik#include <dt-bindings/input/input.h>
1358dbafb7SAndré Draszik#include <dt-bindings/usb/pd.h>
1458dbafb7SAndré Draszik#include "gs101-pinctrl.h"
1558dbafb7SAndré Draszik#include "gs101.dtsi"
1658dbafb7SAndré Draszik
1758dbafb7SAndré Draszik/ {
1858dbafb7SAndré Draszik	aliases {
1958dbafb7SAndré Draszik		serial0 = &serial_0;
2058dbafb7SAndré Draszik	};
2158dbafb7SAndré Draszik
2258dbafb7SAndré Draszik	chosen {
2358dbafb7SAndré Draszik		/* Bootloader expects bootargs specified otherwise it crashes */
2458dbafb7SAndré Draszik		bootargs = "";
2558dbafb7SAndré Draszik		stdout-path = &serial_0;
2658dbafb7SAndré Draszik
2758dbafb7SAndré Draszik		/* Use display framebuffer as setup by bootloader */
2858dbafb7SAndré Draszik		framebuffer0: framebuffer-0 {
2958dbafb7SAndré Draszik			compatible = "simple-framebuffer";
3058dbafb7SAndré Draszik			memory-region = <&cont_splash_mem>;
3158dbafb7SAndré Draszik			/* format properties to be added by actual board */
3258dbafb7SAndré Draszik			status = "disabled";
3358dbafb7SAndré Draszik		};
3458dbafb7SAndré Draszik	};
3558dbafb7SAndré Draszik
3658dbafb7SAndré Draszik	gpio-keys {
3758dbafb7SAndré Draszik		compatible = "gpio-keys";
3858dbafb7SAndré Draszik		pinctrl-0 = <&key_voldown>, <&key_volup>, <&key_power>;
3958dbafb7SAndré Draszik		pinctrl-names = "default";
4058dbafb7SAndré Draszik
4158dbafb7SAndré Draszik		button-vol-down {
4258dbafb7SAndré Draszik			label = "KEY_VOLUMEDOWN";
4358dbafb7SAndré Draszik			linux,code = <KEY_VOLUMEDOWN>;
4458dbafb7SAndré Draszik			gpios = <&gpa7 3 GPIO_ACTIVE_LOW>;
4558dbafb7SAndré Draszik			wakeup-source;
4658dbafb7SAndré Draszik		};
4758dbafb7SAndré Draszik
4858dbafb7SAndré Draszik		button-vol-up {
4958dbafb7SAndré Draszik			label = "KEY_VOLUMEUP";
5058dbafb7SAndré Draszik			linux,code = <KEY_VOLUMEUP>;
5158dbafb7SAndré Draszik			gpios = <&gpa8 1 GPIO_ACTIVE_LOW>;
5258dbafb7SAndré Draszik			wakeup-source;
5358dbafb7SAndré Draszik		};
5458dbafb7SAndré Draszik
5558dbafb7SAndré Draszik		button-power {
5658dbafb7SAndré Draszik			label = "KEY_POWER";
5758dbafb7SAndré Draszik			linux,code = <KEY_POWER>;
5858dbafb7SAndré Draszik			gpios = <&gpa10 1 GPIO_ACTIVE_LOW>;
5958dbafb7SAndré Draszik			wakeup-source;
6058dbafb7SAndré Draszik		};
6158dbafb7SAndré Draszik	};
6258dbafb7SAndré Draszik
6358dbafb7SAndré Draszik	/* TODO: Remove this once PMIC is implemented  */
6458dbafb7SAndré Draszik	reg_placeholder: regulator-0 {
6558dbafb7SAndré Draszik		compatible = "regulator-fixed";
6658dbafb7SAndré Draszik		regulator-name = "placeholder_reg";
6758dbafb7SAndré Draszik	};
6858dbafb7SAndré Draszik
6958dbafb7SAndré Draszik	/* TODO: Remove this once S2MPG11 slave PMIC is implemented  */
7058dbafb7SAndré Draszik	ufs_0_fixed_vcc_reg: regulator-1 {
7158dbafb7SAndré Draszik		compatible = "regulator-fixed";
7258dbafb7SAndré Draszik		regulator-name = "ufs-vcc";
7358dbafb7SAndré Draszik		gpio = <&gpp0 1 GPIO_ACTIVE_HIGH>;
7458dbafb7SAndré Draszik		regulator-boot-on;
7558dbafb7SAndré Draszik		enable-active-high;
7658dbafb7SAndré Draszik	};
7758dbafb7SAndré Draszik
7858dbafb7SAndré Draszik	reserved-memory {
7958dbafb7SAndré Draszik		cont_splash_mem: splash@fac00000 {
8058dbafb7SAndré Draszik			/* size to be updated by actual board */
8158dbafb7SAndré Draszik			reg = <0x0 0xfac00000 0x0>;
8258dbafb7SAndré Draszik			no-map;
8358dbafb7SAndré Draszik			status = "disabled";
8458dbafb7SAndré Draszik		};
8558dbafb7SAndré Draszik	};
8658dbafb7SAndré Draszik};
8758dbafb7SAndré Draszik
8858dbafb7SAndré Draszik&ext_24_5m {
8958dbafb7SAndré Draszik	clock-frequency = <24576000>;
9058dbafb7SAndré Draszik};
9158dbafb7SAndré Draszik
9258dbafb7SAndré Draszik&ext_200m {
9358dbafb7SAndré Draszik	clock-frequency = <200000000>;
9458dbafb7SAndré Draszik};
9558dbafb7SAndré Draszik
9658dbafb7SAndré Draszik&hsi2c_8 {
9758dbafb7SAndré Draszik	status = "okay";
9858dbafb7SAndré Draszik
9958dbafb7SAndré Draszik	eeprom: eeprom@50 {
10058dbafb7SAndré Draszik		compatible = "atmel,24c08";
10158dbafb7SAndré Draszik		reg = <0x50>;
10258dbafb7SAndré Draszik	};
10358dbafb7SAndré Draszik};
10458dbafb7SAndré Draszik
10558dbafb7SAndré Draszik&hsi2c_12 {
10658dbafb7SAndré Draszik	status = "okay";
10758dbafb7SAndré Draszik	/* TODO: add the devices once drivers exist */
10858dbafb7SAndré Draszik
10958dbafb7SAndré Draszik	usb-typec@25 {
11058dbafb7SAndré Draszik		compatible = "maxim,max77759-tcpci", "maxim,max33359";
11158dbafb7SAndré Draszik		reg = <0x25>;
11258dbafb7SAndré Draszik		interrupts-extended = <&gpa8 2 IRQ_TYPE_LEVEL_LOW>;
11358dbafb7SAndré Draszik		pinctrl-0 = <&typec_int>;
11458dbafb7SAndré Draszik		pinctrl-names = "default";
11558dbafb7SAndré Draszik
11658dbafb7SAndré Draszik		connector {
11758dbafb7SAndré Draszik			compatible = "usb-c-connector";
11858dbafb7SAndré Draszik			label = "USB-C";
11958dbafb7SAndré Draszik			data-role = "dual";
12058dbafb7SAndré Draszik			power-role = "dual";
12158dbafb7SAndré Draszik			self-powered;
12258dbafb7SAndré Draszik			try-power-role = "sink";
12358dbafb7SAndré Draszik			op-sink-microwatt = <2600000>;
12458dbafb7SAndré Draszik			slow-charger-loop;
12558dbafb7SAndré Draszik			/*
12658dbafb7SAndré Draszik			 * max77759 operating in reverse boost mode (0xA) can
12758dbafb7SAndré Draszik			 * source up to 1.5A while extboost can only do ~1A.
12858dbafb7SAndré Draszik			 * Since extboost is the primary path, advertise 900mA.
12958dbafb7SAndré Draszik			 */
13058dbafb7SAndré Draszik			source-pdos = <PDO_FIXED(5000, 900,
13158dbafb7SAndré Draszik						 (PDO_FIXED_SUSPEND
13258dbafb7SAndré Draszik						  | PDO_FIXED_USB_COMM
13358dbafb7SAndré Draszik						  | PDO_FIXED_DATA_SWAP
13458dbafb7SAndré Draszik						  | PDO_FIXED_DUAL_ROLE))>;
13558dbafb7SAndré Draszik			sink-pdos = <PDO_FIXED(5000, 3000,
13658dbafb7SAndré Draszik					       (PDO_FIXED_DATA_SWAP
13758dbafb7SAndré Draszik						| PDO_FIXED_USB_COMM
13858dbafb7SAndré Draszik						| PDO_FIXED_HIGHER_CAP
13958dbafb7SAndré Draszik						| PDO_FIXED_DUAL_ROLE))
14058dbafb7SAndré Draszik				     PDO_FIXED(9000, 2200, 0)
14158dbafb7SAndré Draszik				     PDO_PPS_APDO(5000, 11000, 3000)>;
14258dbafb7SAndré Draszik			sink-vdos = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
14358dbafb7SAndré Draszik					     IDH_PTYPE_DFP_HOST, 2, 0x18d1)
14458dbafb7SAndré Draszik				     VDO_CERT(0x0)
14558dbafb7SAndré Draszik				     VDO_PRODUCT(0x4ee1, 0x0)
14658dbafb7SAndré Draszik				     VDO_UFP(UFP_VDO_VER1_2,
14758dbafb7SAndré Draszik					     (DEV_USB2_CAPABLE
14858dbafb7SAndré Draszik					      | DEV_USB3_CAPABLE),
14958dbafb7SAndré Draszik					     UFP_RECEPTACLE, 0,
15058dbafb7SAndré Draszik					     AMA_VCONN_NOT_REQ, 0,
15158dbafb7SAndré Draszik					     UFP_ALTMODE_NOT_SUPP,
15258dbafb7SAndré Draszik					     UFP_USB32_GEN1)
15358dbafb7SAndré Draszik				     /* padding */ 0
15458dbafb7SAndré Draszik				     VDO_DFP(DFP_VDO_VER1_1,
15558dbafb7SAndré Draszik					     (HOST_USB2_CAPABLE
15658dbafb7SAndré Draszik					      | HOST_USB3_CAPABLE),
15758dbafb7SAndré Draszik					     DFP_RECEPTACLE, 0)>;
15858dbafb7SAndré Draszik			sink-vdos-v1 = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
15958dbafb7SAndré Draszik						0, 0, 0x18d1)
16058dbafb7SAndré Draszik					VDO_CERT(0x0)
16158dbafb7SAndré Draszik					VDO_PRODUCT(0x4ee1, 0x0)>;
16258dbafb7SAndré Draszik			/*
16358dbafb7SAndré Draszik			 * Until bootloader is updated to set those two when
16458dbafb7SAndré Draszik			 * console is enabled, we disable PD here.
16558dbafb7SAndré Draszik			 */
16658dbafb7SAndré Draszik			pd-disable;
16758dbafb7SAndré Draszik			typec-power-opmode = "default";
16858dbafb7SAndré Draszik
16958dbafb7SAndré Draszik			ports {
17058dbafb7SAndré Draszik				#address-cells = <1>;
17158dbafb7SAndré Draszik				#size-cells = <0>;
17258dbafb7SAndré Draszik
17358dbafb7SAndré Draszik				port@0 {
17458dbafb7SAndré Draszik					reg = <0>;
17558dbafb7SAndré Draszik
17658dbafb7SAndré Draszik					usbc0_orien_sw: endpoint {
17758dbafb7SAndré Draszik						remote-endpoint = <&usbdrd31_phy_orien_switch>;
17858dbafb7SAndré Draszik					};
17958dbafb7SAndré Draszik				};
18058dbafb7SAndré Draszik
18158dbafb7SAndré Draszik				port@1 {
18258dbafb7SAndré Draszik					reg = <1>;
18358dbafb7SAndré Draszik
18458dbafb7SAndré Draszik					usbc0_role_sw: endpoint {
18558dbafb7SAndré Draszik						remote-endpoint = <&usbdrd31_dwc3_role_switch>;
18658dbafb7SAndré Draszik					};
18758dbafb7SAndré Draszik				};
18858dbafb7SAndré Draszik			};
18958dbafb7SAndré Draszik		};
19058dbafb7SAndré Draszik	};
19158dbafb7SAndré Draszik};
19258dbafb7SAndré Draszik
19358dbafb7SAndré Draszik&pinctrl_far_alive {
19458dbafb7SAndré Draszik	key_voldown: key-voldown-pins {
19558dbafb7SAndré Draszik		samsung,pins = "gpa7-3";
19658dbafb7SAndré Draszik		samsung,pin-function = <GS101_PIN_FUNC_EINT>;
19758dbafb7SAndré Draszik		samsung,pin-pud = <GS101_PIN_PULL_NONE>;
19858dbafb7SAndré Draszik		samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
19958dbafb7SAndré Draszik	};
20058dbafb7SAndré Draszik
20158dbafb7SAndré Draszik	key_volup: key-volup-pins {
20258dbafb7SAndré Draszik		samsung,pins = "gpa8-1";
20358dbafb7SAndré Draszik		samsung,pin-function = <GS101_PIN_FUNC_EINT>;
20458dbafb7SAndré Draszik		samsung,pin-pud = <GS101_PIN_PULL_NONE>;
20558dbafb7SAndré Draszik		samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
20658dbafb7SAndré Draszik	};
20758dbafb7SAndré Draszik
20858dbafb7SAndré Draszik	typec_int: typec-int-pins {
20958dbafb7SAndré Draszik		samsung,pins = "gpa8-2";
21058dbafb7SAndré Draszik		samsung,pin-function = <GS101_PIN_FUNC_EINT>;
21158dbafb7SAndré Draszik		samsung,pin-pud = <GS101_PIN_PULL_UP>;
21258dbafb7SAndré Draszik		samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
21358dbafb7SAndré Draszik	};
21458dbafb7SAndré Draszik};
21558dbafb7SAndré Draszik
21658dbafb7SAndré Draszik&pinctrl_gpio_alive {
21758dbafb7SAndré Draszik	key_power: key-power-pins {
21858dbafb7SAndré Draszik		samsung,pins = "gpa10-1";
21958dbafb7SAndré Draszik		samsung,pin-function = <GS101_PIN_FUNC_EINT>;
22058dbafb7SAndré Draszik		samsung,pin-pud = <GS101_PIN_PULL_NONE>;
22158dbafb7SAndré Draszik		samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
22258dbafb7SAndré Draszik	};
22358dbafb7SAndré Draszik};
22458dbafb7SAndré Draszik
22558dbafb7SAndré Draszik&serial_0 {
22658dbafb7SAndré Draszik	status = "okay";
22758dbafb7SAndré Draszik};
22858dbafb7SAndré Draszik
22958dbafb7SAndré Draszik&ufs_0 {
23058dbafb7SAndré Draszik	status = "okay";
23158dbafb7SAndré Draszik	vcc-supply = <&ufs_0_fixed_vcc_reg>;
23258dbafb7SAndré Draszik};
23358dbafb7SAndré Draszik
23458dbafb7SAndré Draszik&ufs_0_phy {
23558dbafb7SAndré Draszik	status = "okay";
23658dbafb7SAndré Draszik};
23758dbafb7SAndré Draszik
23858dbafb7SAndré Draszik&usbdrd31 {
23958dbafb7SAndré Draszik	vdd10-supply = <&reg_placeholder>;
24058dbafb7SAndré Draszik	vdd33-supply = <&reg_placeholder>;
24158dbafb7SAndré Draszik	status = "okay";
24258dbafb7SAndré Draszik};
24358dbafb7SAndré Draszik
24458dbafb7SAndré Draszik&usbdrd31_dwc3 {
24558dbafb7SAndré Draszik	dr_mode = "otg";
24658dbafb7SAndré Draszik	usb-role-switch;
24758dbafb7SAndré Draszik	role-switch-default-mode = "peripheral";
24858dbafb7SAndré Draszik	maximum-speed = "super-speed-plus";
24958dbafb7SAndré Draszik	status = "okay";
25058dbafb7SAndré Draszik
25158dbafb7SAndré Draszik	port {
25258dbafb7SAndré Draszik		usbdrd31_dwc3_role_switch: endpoint {
25358dbafb7SAndré Draszik			remote-endpoint = <&usbc0_role_sw>;
25458dbafb7SAndré Draszik		};
25558dbafb7SAndré Draszik	};
25658dbafb7SAndré Draszik};
25758dbafb7SAndré Draszik
25858dbafb7SAndré Draszik&usbdrd31_phy {
25958dbafb7SAndré Draszik	orientation-switch;
26058dbafb7SAndré Draszik	/* TODO: Update these once PMIC is implemented */
26158dbafb7SAndré Draszik	pll-supply = <&reg_placeholder>;
26258dbafb7SAndré Draszik	dvdd-usb20-supply = <&reg_placeholder>;
26358dbafb7SAndré Draszik	vddh-usb20-supply = <&reg_placeholder>;
26458dbafb7SAndré Draszik	vdd33-usb20-supply = <&reg_placeholder>;
26558dbafb7SAndré Draszik	vdda-usbdp-supply = <&reg_placeholder>;
26658dbafb7SAndré Draszik	vddh-usbdp-supply = <&reg_placeholder>;
26758dbafb7SAndré Draszik	status = "okay";
26858dbafb7SAndré Draszik
26958dbafb7SAndré Draszik	port {
27058dbafb7SAndré Draszik		usbdrd31_phy_orien_switch: endpoint {
27158dbafb7SAndré Draszik			remote-endpoint = <&usbc0_orien_sw>;
27258dbafb7SAndré Draszik		};
27358dbafb7SAndré Draszik	};
27458dbafb7SAndré Draszik};
27558dbafb7SAndré Draszik
27658dbafb7SAndré Draszik&usi_uart {
27758dbafb7SAndré Draszik	samsung,clkreq-on; /* needed for UART mode */
27858dbafb7SAndré Draszik	status = "okay";
27958dbafb7SAndré Draszik};
28058dbafb7SAndré Draszik
28158dbafb7SAndré Draszik&usi8 {
282*48552449SIvaylo Ivanov	samsung,mode = <USI_MODE_I2C>;
28358dbafb7SAndré Draszik	status = "okay";
28458dbafb7SAndré Draszik};
28558dbafb7SAndré Draszik
28658dbafb7SAndré Draszik&usi12 {
287*48552449SIvaylo Ivanov	samsung,mode = <USI_MODE_I2C>;
28858dbafb7SAndré Draszik	status = "okay";
28958dbafb7SAndré Draszik};
29058dbafb7SAndré Draszik
29158dbafb7SAndré Draszik&watchdog_cl0 {
29258dbafb7SAndré Draszik	timeout-sec = <30>;
29358dbafb7SAndré Draszik	status = "okay";
29458dbafb7SAndré Draszik};
295