/* Copyright 2021 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include / { aliases { gpio-cbi-wp = &gpio_ec_cbi_wp; gpio-wp = &gpio_ec_wp_odl; int-wp = &int_wp_l; }; ec-console { compatible = "ec-console"; disabled = "events", "lpc", "hostcmd"; }; batteries { default_battery: smp { compatible = "smp,l20m3pg0", "battery-smart"; }; }; hibernate-wake-pins { compatible = "cros-ec,hibernate-wake-pins"; wakeup-irqs = < &int_power_button &int_lid_open >; }; gpio-interrupts { compatible = "cros-ec,gpio-interrupts"; int_power_button: power_button { irq-pin = <&gpio_gsc_ec_pwr_btn_odl>; flags = ; handler = "power_button_interrupt"; }; int_vol_down: vol_down { irq-pin = <&gpio_voldn_btn_odl>; flags = ; handler = "button_interrupt"; }; int_vol_up: vol_up { irq-pin = <&gpio_volup_btn_odl>; flags = ; handler = "button_interrupt"; }; int_wp_l: wp_l { irq-pin = <&gpio_ec_wp_odl>; flags = ; handler = "switch_interrupt"; }; int_lid_open: lid_open { irq-pin = <&gpio_lid_open>; flags = ; handler = "lid_interrupt"; }; int_tablet_mode: tablet_mode { irq-pin = <&gpio_tablet_mode_l>; flags = ; handler = "gmr_tablet_switch_isr"; }; int_imu: ec_imu { irq-pin = <&gpio_imu_int_l>; flags = ; handler = "bmi3xx_interrupt"; }; int_usb_c0: usb_c0 { irq-pin = <&gpio_usb_c0_int_odl>; flags = ; handler = "usb_c0_interrupt"; }; int_usb_c1: usb_c1 { irq-pin = <&gpio_sb_1>; flags = ; handler = "usb_c1_interrupt"; }; }; unused-pins { compatible = "unused-gpios"; unused-gpios = <&gpioc 3 0>, <&gpiod 4 0>, <&gpiod 7 0>, <&gpioh 2 0>, <&gpioj 7 0>, <&gpiol 4 0>; }; named-gpios { /* * EC doesn't take any specific action on CC/SBU disconnect due to * fault, but this definition is useful for hardware testing. */ gpio_usb_c0_prot_fault_odl: usb_c0_prot_fault_odl { gpios = <&gpiok 6 GPIO_INPUT_PULL_UP>; }; gpio_sb_1: sb_1 { gpios = <&gpioe 6 0>; no-auto-init; }; gpio_sb_2: sb_2 { gpios = <&gpiof 0 0>; no-auto-init; }; gpio_sb_3: sb_3 { gpios = <&gpioe 7 0>; no-auto-init; }; gpio_sb_4: sb_4 { gpios = <&gpioe 0 0>; no-auto-init; }; }; /* * Aliases used for sub-board GPIOs. */ aliases { /* USB-C: interrupt input. I2C pins are on i2c_ec_i2c_sub_usb_c1 */ gpio-usb-c1-int-odl = &gpio_sb_1; /* * USB-A: VBUS enable output * LTE: power enable output */ gpio-en-usb-a1-vbus = &gpio_sb_2; /* * HDMI: power enable output, HDMI enable output, * and HPD input */ gpio-en-rails-odl = &gpio_sb_1; gpio-hdmi-en-odl = &gpio_sb_4; gpio-hpd-odl = &gpio_sb_3; /* * Enable S5 rails for LTE sub-board */ gpio-en-sub-s5-rails = &gpio_sb_2; }; temp_memory: memory { compatible = "cros-ec,temp-sensor-thermistor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; adc = <&adc_temp_sensor_1>; }; temp_charger: charger { compatible = "cros-ec,temp-sensor-thermistor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; adc = <&adc_temp_sensor_2>; }; temp_ambient: ambient { compatible = "cros-ec,temp-sensor-thermistor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; adc = <&adc_temp_sensor_3>; }; named-temp-sensors { compatible = "cros-ec,temp-sensors"; memory { temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_memory>; }; charger { temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_charger>; }; ambient { temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_ambient>; }; }; usba { compatible = "cros-ec,usba-port-enable-pins"; /* * sb_2 is only configured as GPIO when USB-A1 is present, * but it's still safe to control when disabled. * * ILIM_SEL pins are referred to by legacy enum name, * GPIO_USB*_ILIM_SEL. The one for port A1 is unused on * sub-boards that don't have USB-A so is safe to control * regardless of system configuration. */ enable-pins = <&gpio_en_usb_a0_vbus &gpio_sb_2>; status = "okay"; }; usbc { #address-cells = <1>; #size-cells = <0>; port0@0 { compatible = "named-usbc-port"; reg = <0>; bc12 = <&bc12_port0>; chg = <&chg_port0>; usb-mux-chain-0 { compatible = "cros-ec,usb-mux-chain"; usb-muxes = <&virtual_mux_0>; }; }; port0-muxes { virtual_mux_0: virtual-mux-0 { compatible = "cros-ec,usbc-mux-virtual"; }; }; port1@1 { compatible = "named-usbc-port"; reg = <1>; bc12 = <&bc12_port1>; chg = <&chg_port1>; usb-mux-chain-1 { compatible = "cros-ec,usb-mux-chain"; usb-muxes = <&virtual_mux_1 &tcpci_mux_1>; }; usb_mux_chain_1_no_mux: usb-mux-chain-1-no-mux { compatible = "cros-ec,usb-mux-chain"; alternative-chain; usb-muxes = <&virtual_mux_1>; }; }; port1-muxes { virtual_mux_1: virtual-mux-1 { compatible = "cros-ec,usbc-mux-virtual"; }; tcpci_mux_1: tcpci-mux-1 { compatible = "parade,usbc-mux-ps8xxx"; }; }; }; }; &gpio_acc_int_l { gpios = <&gpioc 0 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>; }; &gpio_imu_int_l { gpios = <&gpioj 0 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>; }; &gpio_vccin_aux_vid0 { gpios = <&gpiod 0 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>; }; &gpio_vccin_aux_vid1 { gpios = <&gpiok 1 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>; }; &gpio_ec_prochot_odl { gpios = <&gpioi 1 (GPIO_ODR_HIGH | GPIO_VOLTAGE_1P8)>; }; &thermistor_3V3_51K1_47K_4050B { status = "okay"; }; &adc_ec_vsense_pp3300_s5 { /* * Voltage divider on input has 47k upper and 220k lower legs with 3 V * full-scale reading on the ADC. Apply the largest possible multiplier * (without overflowing int32) to get the best possible approximation * of the actual ratio, but derate by a factor of two to ensure * unexpectedly high values won't overflow. */ mul = <(715828 / 2)>; div = <(589820 / 2)>; }; &adc0 { pinctrl-0 = <&adc0_ch0_gpi0_default &adc0_ch2_gpi2_default &adc0_ch3_gpi3_default &adc0_ch13_gpl0_default &adc0_ch14_gpl1_default>; pinctrl-names = "default"; }; &pinctrl { i2c4_clk_gpe0_sleep: i2c4_clk_gpe0_sleep { pinmuxs = <&pinctrle 0 IT8XXX2_ALT_DEFAULT>; }; i2c4_data_gpe7_sleep: i2c4_data_gpe7_sleep { pinmuxs = <&pinctrle 7 IT8XXX2_ALT_DEFAULT>; }; i2c2_clk_gpf6_default: i2c2_clk_gpf6_default { gpio-voltage = "1v8"; }; i2c2_data_gpf7_default: i2c2_data_gpf7_default { gpio-voltage = "1v8"; }; }; &i2c0 { label = "I2C_EEPROM"; clock-frequency = ; cbi_eeprom: eeprom@50 { compatible = "atmel,at24"; reg = <0x50>; size = <2048>; pagesize = <16>; address-width = <8>; timeout = <5>; }; pinctrl-0 = <&i2c0_clk_gpb3_default &i2c0_data_gpb4_default>; pinctrl-names = "default"; }; &i2c1 { label = "I2C_BATTERY"; clock-frequency = <50000>; pinctrl-0 = <&i2c1_clk_gpc1_default &i2c1_data_gpc2_default>; pinctrl-names = "default"; }; &i2c2 { label = "I2C_SENSOR"; clock-frequency = ; pinctrl-0 = <&i2c2_clk_gpf6_default &i2c2_data_gpf7_default>; pinctrl-names = "default"; }; &i2c4 { label = "I2C_SUB_C1_TCPC"; clock-frequency = ; pinctrl-0 = <&i2c4_clk_gpe0_default &i2c4_data_gpe7_default>; pinctrl-1 = <&i2c4_clk_gpe0_sleep &i2c4_data_gpe7_sleep>; pinctrl-names = "default", "sleep"; bc12_port1: pi3usb9201@5f { compatible = "pericom,pi3usb9201"; status = "okay"; reg = <0x5f>; }; chg_port1: sm5803@32 { compatible = "siliconmitus,sm5803"; status = "okay"; reg = <0x32>; }; }; &i2c_ec_i2c_sub_usb_c1 { /* * Dynamic speed setting is used for AP-controlled firmware update * of PS8745 TCPC/redriver: the AP lowers speed to 400 kHz in order * to use more efficient window programming, then sets it back when * done. */ dynamic-speed; }; &i2c5 { label = "I2C_USB_C0_TCPC"; clock-frequency = ; pinctrl-0 = <&i2c5_clk_gpa4_default &i2c5_data_gpa5_default>; pinctrl-names = "default"; bc12_port0: pi3usb9201@5f { compatible = "pericom,pi3usb9201"; status = "okay"; reg = <0x5f>; }; chg_port0: sm5803@32 { compatible = "siliconmitus,sm5803"; status = "okay"; reg = <0x32>; }; }; &usbpd0 { status = "okay"; };