/* Copyright 2022 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; /* * 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; /* * Enable S5 rails for LTE sub-board */ gpio-en-sub-s5-rails = &gpio_sb_2; }; ec-console { compatible = "ec-console"; disabled = "events", "lpc", "hostcmd"; }; batteries { default_battery: cosmx { compatible = "cosmx,gh02047xl", "battery-smart"; }; dynapack_atl_gh02047xl { compatible = "dynapack,atl_gh02047xl", "battery-smart"; }; dynapack_cosmx_gh02047xl { compatible = "dynapack,cosmx_gh02047xl", "battery-smart"; }; smp_coslight_gh02047xl { compatible = "smp,coslight_gh02047xl", "battery-smart"; }; smp_highpower_gh02047xl { compatible = "smp,highpower_gh02047xl", "battery-smart"; }; default_battery_3s:cosmx_si03058xl { compatible = "cosmx,si03058xl", "battery-smart"; }; smp_highpower_si03058xl { compatible = "smp,highpower_si03058xl", "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_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_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 = <&gpioa 7 0>, <&gpioc 0 0>, <&gpioc 6 0>, <&gpiod 7 0>, <&gpioh 2 0>, <&gpioi 6 0>, <&gpioi 7 0>, <&gpioj 0 0>, <&gpioj 3 0>, <&gpiok 7 GPIO_OUTPUT>; }; 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_fan_enable: fan-enable { gpios = <&gpioa 1 GPIO_OUTPUT>; no-auto-init; }; }; temp_cpu: cpu { compatible = "cros-ec,temp-sensor-thermistor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; adc = <&adc_temp_sensor_1>; }; temp_5v_regulator: 5v_regulator { compatible = "cros-ec,temp-sensor-thermistor"; thermistor = <&thermistor_3V3_51K1_47K_4050B>; adc = <&adc_temp_sensor_2>; }; temp_charger: charger { 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"; cpu { temp_fan_off = <45>; temp_fan_max = <60>; temp_host_high = <75>; temp_host_halt = <85>; temp_host_release_high = <65>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_cpu>; }; 5v_regulator { temp_fan_off = <50>; temp_fan_max = <65>; temp_host_high = <75>; temp_host_halt = <85>; temp_host_release_high = <65>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_5v_regulator>; }; charger { temp_fan_off = <50>; temp_fan_max = <65>; temp_host_high = <80>; temp_host_halt = <85>; temp_host_release_high = <75>; power-good-pin = <&gpio_ec_soc_dsw_pwrok>; sensor = <&temp_charger>; }; }; 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"; }; }; }; fans { compatible = "cros-ec,fans"; fan_0 { pwms = <&pwm2 PWM_CHANNEL_2 PWM_KHZ(25) PWM_POLARITY_NORMAL>; tach = <&tach1>; rpm_min = <2600>; rpm_start = <2600>; rpm_max = <4100>; enable_gpio = <&gpio_fan_enable>; }; }; }; &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"; status = "okay"; }; &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>; label = "EEPROM_CBI"; size = <2048>; pagesize = <16>; address-width = <8>; timeout = <5>; }; pinctrl-0 = <&i2c0_clk_gpb3_default &i2c0_data_gpb4_default>; pinctrl-names = "default"; status = "okay"; }; &i2c1 { label = "I2C_BATTERY"; clock-frequency = <50000>; pinctrl-0 = <&i2c1_clk_gpc1_default &i2c1_data_gpc2_default>; pinctrl-names = "default"; status = "okay"; }; &i2c2 { label = "I2C_SENSOR"; clock-frequency = ; pinctrl-0 = <&i2c2_clk_gpf6_default &i2c2_data_gpf7_default>; pinctrl-names = "default"; status = "okay"; }; &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"; status = "okay"; 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"; status = "okay"; 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"; }; /* pwm for fan */ &pwm2 { status = "okay"; prescaler-cx = ; pinctrl-0 = <&pwm2_gpa2_default>; pinctrl-names = "default"; }; /* fan tachometer sensor */ &tach1 { status = "okay"; channel = ; pulses-per-round = <2>; pinctrl-0 = <&tach1a_gpd7_default>; pinctrl-names = "default"; };