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 = <®_placeholder>; 24058dbafb7SAndré Draszik vdd33-supply = <®_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 = <®_placeholder>; 26258dbafb7SAndré Draszik dvdd-usb20-supply = <®_placeholder>; 26358dbafb7SAndré Draszik vddh-usb20-supply = <®_placeholder>; 26458dbafb7SAndré Draszik vdd33-usb20-supply = <®_placeholder>; 26558dbafb7SAndré Draszik vdda-usbdp-supply = <®_placeholder>; 26658dbafb7SAndré Draszik vddh-usbdp-supply = <®_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