/* Copyright 2021 The Chromium OS Authors. All rights reserved. * 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; }; 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"; }; int_prochot: ap_prochot { irq-pin = <&gpio_ec_prochot_odl>; flags = ; handler = "throttle_ap_prochot_input_interrupt"; }; }; 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; }; named-temp-sensors { memory { compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; label = "DDR and SOC"; enum-name = "TEMP_SENSOR_1"; temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; adc = <&adc_temp_sensor_1>; }; charger { compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; label = "Charger"; enum-name = "TEMP_SENSOR_CHARGER"; temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; adc = <&adc_temp_sensor_2>; }; ambient { compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; label = "Ambient"; enum-name = "TEMP_SENSOR_AMB"; temp_fan_off = <35>; temp_fan_max = <60>; temp_host_high = <85>; temp_host_halt = <90>; temp_host_release_high = <80>; adc = <&adc_temp_sensor_3>; }; }; 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 { compatible = "pericom,pi3usb9201"; port = <&i2c_ec_i2c_usb_c0>; }; chg { compatible = "siliconmitus,sm5803"; status = "okay"; port = <&i2c_ec_i2c_usb_c0>; }; }; port1@1 { compatible = "named-usbc-port"; reg = <1>; bc12 { compatible = "pericom,pi3usb9201"; port = <&i2c_ec_i2c_sub_usb_c1>; }; chg { compatible = "siliconmitus,sm5803"; status = "okay"; port = <&i2c_ec_i2c_sub_usb_c1>; }; }; }; }; &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)>; }; /* Set bus speeds for I2C */ &i2c0 { label = "I2C_EEPROM"; clock-frequency = ; cbi_eeprom: eeprom@50 { compatible = "atmel,at24"; reg = <0x50>; label = "EEPROM_CBI"; size = <2048>; pagesize = <16>; address-width = <8>; timeout = <5>; }; }; &i2c1 { label = "I2C_BATTERY"; clock-frequency = ; }; &i2c2 { label = "I2C_SENSOR"; clock-frequency = ; }; &i2c4 { label = "I2C_SUB_C1_TCPC"; clock-frequency = ; }; &i2c5 { label = "I2C_USB_C0_TCPC"; clock-frequency = ; };