/* 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 #include #include #include / { chosen { cros-ec,espi = &espi0; cros-ec,watchdog = &wdt_counter; cros-ec,raw-kb = &cros_kb_raw; cros-ec,flash-controller = &cros_flash; }; aliases { bmi260-int = &ms_bmi260_accel; bmi160-int = &ms_bmi160_accel; tcs3400-int = &tcs3400_clear; gpio-wp = &gpio_wp_l; gpio-kbd-kso2 = &gpio_ec_kso_02_inv; }; usbc { #address-cells = <1>; #size-cells = <0>; port0@0 { compatible = "named-usbc-port"; reg = <0>; chg { compatible = "intersil,isl923x"; status = "okay"; port = <&i2c_charger>; }; }; port1@1 { compatible = "named-usbc-port"; reg = <1>; }; }; /* * Keep these GPIOs in pin order. * If you need to add one, make sure you increase * ngpios in the gpio0 node further down. */ named-gpios { compatible = "named-gpios"; gpio_acok_od: acok_od { gpios = <&gpio0 2 GPIO_INPUT>; enum-name = "GPIO_AC_PRESENT"; }; /* In test WP is output because CBI use it, but it is also * input, because test_all_tags set it to enable write * protection. */ gpio_wp_l: wp_l { gpios = <&gpio0 3 (GPIO_INPUT | GPIO_OUTPUT | GPIO_ACTIVE_LOW)>; }; gpio_ec_kso_02_inv: ec_kso_02_inv { gpios = <&gpio0 4 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; pg_ec_dsw_pwrok { gpios = <&gpio0 4 GPIO_INPUT>; enum-name = "GPIO_TEMP_SENSOR_POWER"; }; gpio_ec_pch_wake_odl: ec_pch_wake_odl { gpios = <&gpio0 5 GPIO_OUTPUT_HIGH>; }; /* Setup USB C1 pin as output to check their state in test */ usb_c1_ls_en: usb_c1_ls_en { gpios = <&gpio0 6 (GPIO_INPUT_PULL_UP | GPIO_OUTPUT)>; }; usb_c1_rt_rst_odl: usb_c1_rt_rst_odl { gpios = <&gpio0 7 (GPIO_OUTPUT | GPIO_INPUT)>; }; gpio_usb_c1_frs_en: usb_c1_frs_en { gpios = <&gpio0 8 (GPIO_OUTPUT_LOW)>; }; usb_c0_tcpc_int_odl: usb_c0_tcpc_int_odl { gpios = <&gpio0 9 GPIO_INPUT>; }; usb_c1_tcpc_int_odl: usb_c1_tcpc_int_odl { gpios = <&gpio0 10 GPIO_INPUT>; }; usb_c0_tcpc_rst_l: usb_c0_tcpc_rst_l { gpios = <&gpio0 11 (GPIO_OUTPUT_HIGH | GPIO_INPUT)>; }; usb_c1_tcpc_rst_l: usb_c1_tcpc_rst_l { gpios = <&gpio0 12 (GPIO_OUTPUT_HIGH | GPIO_INPUT)>; }; gpio_usb_c1_ppc_int: usb_c1_ppc_int { gpios = <&gpio0 13 GPIO_INPUT>; }; gpio_usb_c0_ppc_int: usb_c0_ppc_int { gpios = <&gpio0 14 GPIO_INPUT>; }; gpio_switchcap_pg_int_l: switchcap_pg_int_l { gpios = <&gpio0 15 (GPIO_OUTPUT | GPIO_INPUT)>; }; gpio_ap_rst_l: ap_rst_l { gpios = <&gpio0 16 GPIO_INPUT>; enum-name = "GPIO_AP_RST_L"; }; gpio_ps_hold: ps_hold { gpios = <&gpio0 17 (GPIO_INPUT | GPIO_PULL_DOWN)>; enum-name = "GPIO_PS_HOLD"; }; gpio_mb_power_good: mb_power_good { gpios = <&gpio0 18 (GPIO_OUTPUT | GPIO_INPUT | GPIO_PULL_DOWN)>; enum-name = "GPIO_POWER_GOOD"; }; gpio_ap_suspend: ap_suspend { gpios = <&gpio0 19 GPIO_INPUT>; enum-name = "GPIO_AP_SUSPEND"; }; gpio_pmic_kpd_pwr_odl: pmic_kpd_pwr_odl { gpios = <&gpio0 20 GPIO_ODR_HIGH>; enum-name = "GPIO_PMIC_KPD_PWR_ODL"; }; gpio_pmic_resin_l: pmic_resin_l { gpios = <&gpio0 21 GPIO_ODR_HIGH>; enum-name = "GPIO_PMIC_RESIN_L"; }; gpio_warm_reset_l: warm_reset_l { gpios = <&gpio0 22 GPIO_INPUT>; enum-name = "GPIO_WARM_RESET_L"; }; gpio_lid_open_ec: lid_open_ec { /* GPIO_PULL_UP will cause this start asserted. */ gpios = <&gpio0 23 (GPIO_INPUT | GPIO_PULL_UP)>; enum-name = "GPIO_LID_OPEN"; }; gpio_switchcap_on: switchcap_on { gpios = <&gpio0 24 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; gpio_ec_pwr_btn_odl: ec_pwr_btn_odl { /* GPIO_PULL_UP will cause this start asserted, * i.e. not pressed. */ gpios = <&gpio0 25 (GPIO_INPUT | GPIO_PULL_UP)>; enum-name = "GPIO_POWER_BUTTON_L"; }; gpio_src_vph_pwr_pg: src_vph_pwr_pg { gpios = <&gpio0 26 (GPIO_INPUT | GPIO_OUTPUT | GPIO_PULL_DOWN)>; }; gpio_test: test { gpios = <&gpio0 27 (GPIO_INPUT | GPIO_OUTPUT)>; }; ec_batt_pres_odl { gpios = <&gpio0 28 GPIO_INPUT>; enum-name = "GPIO_BATT_PRES_ODL"; }; gpio_no_init: no_init { gpios = <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_INPUT)>; no-auto-init; }; gpio_ec_chg_led_y_c0: ec_chg_led_y_c0 { #led-pin-cells = <1>; gpios = <&gpio0 30 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; gpio_ec_chg_led_w_c0: ec_chg_led_w_c0 { #led-pin-cells = <1>; gpios = <&gpio0 31 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; gpio_ec_chg_led_y_c1: ec_chg_led_y_c1 { #led-pin-cells = <1>; gpios = <&gpio0 32 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; gpio_ec_chg_led_w_c1: ec_chg_led_w_c1 { #led-pin-cells = <1>; gpios = <&gpio0 33 (GPIO_INPUT | GPIO_OUTPUT_LOW)>; }; }; gpio-interrupts { compatible = "cros-ec,gpio-interrupts"; int_ac_present: ac_present { irq-pin = <&gpio_acok_od>; flags = ; handler = "extpower_interrupt"; }; int_usb_c0: usb_c0 { irq-pin = <&usb_c0_tcpc_int_odl>; flags = ; handler = "tcpc_alert_event"; }; int_usb_c1: usb_c1 { irq-pin = <&usb_c1_tcpc_int_odl>; flags = ; handler = "tcpc_alert_event"; }; int_usb_c0_ppc: usb_c0_ppc { irq-pin = <&gpio_usb_c0_ppc_int>; flags = ; handler = "ppc_alert"; }; int_usb_c1_ppc: usb_c1_ppc { irq-pin = <&gpio_usb_c1_ppc_int>; flags = ; handler = "ppc_alert"; }; int_switchcap_pg: switchcap_pg { irq-pin = <&gpio_switchcap_pg_int_l>; flags = ; handler = "ln9310_interrupt"; }; int_gpio_test: test { irq-pin = <&gpio_test>; flags = ; handler = "gpio_test_interrupt"; }; int_lid_open_ec: lid_open_ec { irq-pin = <&gpio_lid_open_ec>; flags = ; handler = "lid_interrupt"; }; int_mb_power_good: mb_power_good { irq-pin = <&gpio_mb_power_good>; flags = ; handler = "power_signal_interrupt"; }; }; named-i2c-ports { compatible = "named-i2c-ports"; usb-c0 { i2c-port = <&i2c0>; enum-name = "I2C_PORT_USB_C0"; }; usb-c1 { i2c-port = <&i2c1>; enum-name = "I2C_PORT_USB_C1"; }; battery { i2c-port = <&i2c0>; enum-name = "I2C_PORT_BATTERY"; }; power { i2c-port = <&i2c0>; enum-name = "I2C_PORT_POWER"; }; i2c_charger: charger { i2c-port = <&i2c0>; enum-name = "I2C_PORT_CHARGER"; }; eeprom { i2c-port = <&i2c0>; enum-name = "I2C_PORT_EEPROM"; }; i2c_accel: accel { i2c-port = <&i2c0>; enum-name = "I2C_PORT_ACCEL"; }; i2c_sensor: sensor { i2c-port = <&i2c1>; enum-name = "I2C_PORT_SENSOR"; }; virtual-battery { i2c-port = <&i2c0>; enum-name = "I2C_PORT_VIRTUAL_BATTERY"; }; }; batteries { default_battery: lgc_ac17a8m { compatible = "lgc,ac17a8m", "battery-smart"; }; }; cbi-ssfc { compatible = "named-cbi-ssfc"; cbi_ssfc_base_sensor: base_sensor { enum-name = "BASE_SENSOR"; size = <2>; base_sensor_0: base0 { compatible = "named-cbi-ssfc-value"; status = "okay"; value = <1>; default; }; base_sensor_1: base1 { compatible = "named-cbi-ssfc-value"; status = "okay"; value = <2>; }; }; }; cbi-fw-config { compatible = "cros-ec,cbi-fw-config"; field-1 { enum-name = "FW_CONFIG_FIELD_1"; start = <0>; size = <2>; val-0 { compatible = "cros-ec,cbi-fw-config-value"; enum-name = "FW_FIELD_1_A"; value = <0>; }; val-1 { compatible = "cros-ec,cbi-fw-config-value"; enum-name = "FW_FIELD_1_B"; value = <1>; default; }; }; field-2 { enum-name = "FW_CONFIG_FIELD_2"; start = <5>; size = <1>; val-1 { compatible = "cros-ec,cbi-fw-config-value"; enum-name = "FW_FIELD_2_X"; value = <1>; }; }; }; adc0: adc { compatible = "zephyr,adc-emul"; nchannels = <6>; ref-internal-mv = <3300>; #io-channel-cells = <1>; label = "ADC_0"; status = "okay"; }; named-adc-channels { compatible = "named-adc-channels"; adc_charger: charger { enum-name = "ADC_TEMP_SENSOR_CHARGER"; io-channels = <&adc0 0>; }; adc_pp3300_regulator: pp3300-regulator { enum-name = "ADC_TEMP_SENSOR_PP3300_REGULATOR"; io-channels = <&adc0 1>; }; adc_ddr_soc: ddr-soc { enum-name = "ADC_TEMP_SENSOR_DDR_SOC"; io-channels = <&adc0 2>; }; adc_fan: fan { enum-name = "ADC_TEMP_SENSOR_FAN"; io-channels = <&adc0 3>; }; amon_bmon { enum-name = "ADC_AMON_BMON"; io-channels = <&adc0 4>; mul = <1000>; div = <20>; }; psys { enum-name = "ADC_PSYS"; io-channels = <&adc0 5>; mul = <124000>; }; }; named-temp-sensors { charger { thermistor = <&thermistor_3V3_13K7_47K_4050B>; status = "okay"; compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; enum-name = "TEMP_SENSOR_CHARGER"; temp_fan_off = <40>; temp_fan_max = <55>; temp_host_high = <75>; temp_host_halt = <80>; temp_host_release_high = <65>; adc = <&adc_charger>; }; pp3300-regulator { thermistor = <&thermistor_3V3_30K9_47K_4050B>; status = "okay"; compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; enum-name = "TEMP_SENSOR_PP3300_REGULATOR"; temp_fan_off = <40>; temp_fan_max = <55>; temp_host_high = <75>; temp_host_halt = <80>; temp_host_release_high = <65>; adc = <&adc_pp3300_regulator>; }; ddr-soc { thermistor = <&thermistor_3V3_51K1_47K_4050B>; status = "okay"; compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; enum-name = "TEMP_SENSOR_DDR_SOC"; temp_fan_off = <35>; temp_fan_max = <50>; temp_host_high = <70>; temp_host_halt = <80>; temp_host_release_high = <65>; adc = <&adc_ddr_soc>; }; fan { thermistor = <&thermistor_3V0_22K6_47K_4050B>; status = "okay"; compatible = "cros-ec,temp-sensor-thermistor", "cros-ec,temp-sensor"; enum-name = "TEMP_SENSOR_FAN"; temp_fan_off = <35>; temp_fan_max = <50>; temp_host_high = <70>; temp_host_halt = <80>; temp_host_release_high = <65>; adc = <&adc_fan>; }; }; /* * Declare mutexes used by sensor drivers. * A mutex node is used to create an instance of mutex_t. * A mutex node is referenced by a sensor node if the * corresponding sensor driver needs to use the * instance of the mutex. */ motionsense-mutex { compatible = "cros-ec,motionsense-mutex"; mutex_bma255: bma255-mutex { }; mutex_bmi260: bmi260-mutex { }; mutex_bmi160: bmi160-mutex { }; mutex_lis2dw12: lis2dw12-mutex { }; }; /* * Driver specific data. A driver-specific data can be shared with * different motion sensors while they are using the same driver. */ motionsense-sensor-data { bma255_data: bma255-drv-data { compatible = "cros-ec,drvdata-bma255"; status = "okay"; }; bmi260_data: bmi260-drv-data { compatible = "cros-ec,drvdata-bmi260"; status = "okay"; }; bmi160_data: bmi160-drv-data { compatible = "cros-ec,drvdata-bmi160"; status = "okay"; }; lis2dw12_data: lis2dw12-drv-data { compatible = "cros-ec,drvdata-lis2dw12"; status = "okay"; }; tcs_clear_data: tcs3400-clear-drv-data { compatible = "cros-ec,drvdata-tcs3400-clear"; status = "okay"; als-drv-data { compatible = "cros-ec,accelgyro-als-drv-data"; als-cal { scale = <1>; uscale = <0>; offset = <0>; als-channel-scale { compatible = "cros-ec,accelgyro-als-channel-scale"; k-channel-scale = <1>; cover-scale = <1>; }; }; }; }; tcs_rgb_data: tcs3400-rgb-drv-data { compatible = "cros-ec,drvdata-tcs3400-rgb"; status = "okay"; /* node for rgb_calibration_t defined in accelgyro.h */ rgb_calibration { compatible = "cros-ec,accelgyro-rgb-calibration"; irt = <1>; rgb-cal-x { offset = <0>; coeff = <0 1 0 0>; als-channel-scale { compatible = "cros-ec,accelgyro-als-channel-scale"; k-channel-scale = <1>; cover-scale = <1>; }; }; rgb-cal-y { offset = <0>; coeff = <0 0 1 0>; als-channel-scale { compatible = "cros-ec,accelgyro-als-channel-scale"; k-channel-scale = <1>; cover-scale = <1>; }; }; rgb-cal-z { offset = <0>; coeff = <0 0 0 1>; als-channel-scale { compatible = "cros-ec,accelgyro-als-channel-scale"; k-channel-scale = <1>; cover-scale = <1>; }; }; }; }; }; /* * List of motion sensors that creates motion_sensors array. * The nodelabel "lid_accel" and "base_accel" are used to indicate * motion sensor IDs for lid angle calculation. */ motionsense-sensor { ms_bma255: ms-bma255 { compatible = "cros-ec,bma255"; status = "okay"; active-mask = "SENSOR_ACTIVE_S0_S3_S5"; location = "MOTIONSENSE_LOC_LID"; mutex = <&mutex_bma255>; port = <&i2c_accel>; default-range = <2>; drv-data = <&bma255_data>; i2c-spi-addr-flags = "BMA2x2_I2C_ADDR1_FLAGS"; configs { compatible = "cros-ec,motionsense-sensor-config"; ec-s0 { /* Run ALS sensor in S0 */ odr = <1000>; }; ec-s3 { odr = <10000>; }; ec-s5 { odr = <10000>; }; }; }; ms_bmi260_accel: ms-bmi260-accel { compatible = "cros-ec,bmi260-accel"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&mutex_bmi260>; port = <&i2c_accel>; drv-data = <&bmi260_data>; default-range = <4>; i2c-spi-addr-flags = "BMI260_ADDR0_FLAGS"; }; ms_bmi260_gyro: ms-bmi260-gyro { compatible = "cros-ec,bmi260-gyro"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&mutex_bmi260>; port = <&i2c_accel>; drv-data = <&bmi260_data>; default-range = <1000>; /* dps */ i2c-spi-addr-flags = "BMI260_ADDR0_FLAGS"; }; ms_bmi160_accel: ms-bmi160-accel { compatible = "cros-ec,bmi160-accel"; status = "okay"; active-mask = "SENSOR_ACTIVE_S0_S3_S5"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&mutex_bmi160>; port = <&i2c_sensor>; drv-data = <&bmi160_data>; default-range = <4>; i2c-spi-addr-flags = "BMI160_ADDR0_FLAGS"; }; ms_bmi160_gyro: ms-bmi160-gyro { compatible = "cros-ec,bmi160-gyro"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&mutex_bmi160>; port = <&i2c_sensor>; drv-data = <&bmi160_data>; default-range = <1000>; /* dps */ i2c-spi-addr-flags = "BMI160_ADDR0_FLAGS"; }; ms_lis2dw12_accel: ms-lis2dw12-accel { compatible = "cros-ec,lis2dw12"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; mutex = <&mutex_lis2dw12>; port = <&i2c_accel>; drv-data = <&lis2dw12_data>; default-range = <2>; i2c-spi-addr-flags = "LIS2DWL_ADDR1_FLAGS"; }; tcs3400_clear: tcs3400-clear { compatible = "cros-ec,tcs3400-clear"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; port = <&i2c_sensor>; default-range = <0x10000>; drv-data = <&tcs_clear_data>; i2c-spi-addr-flags = "TCS3400_I2C_ADDR_FLAGS"; configs { compatible = "cros-ec,motionsense-sensor-config"; ec-s0 { /* Run ALS sensor in S0 */ odr = <1000>; }; }; }; tcs3400_rgb: tcs3400-rgb { compatible = "cros-ec,tcs3400-rgb"; status = "okay"; location = "MOTIONSENSE_LOC_BASE"; default-range = <0x10000>; /* scale = 1x, uscale = 0 */ drv-data = <&tcs_rgb_data>; }; }; motionsense-sensor-info { compatible = "cros-ec,motionsense-sensor-info"; accel-force-mode-sensors = <&ms_bma255 &ms_lis2dw12_accel>; }; /* * Second i2c bus is required, because there are already devices with * addresses 0x68, 0xb and 0x9 on the first bus */ i2c1: i2c@400 { status = "okay"; compatible = "zephyr,i2c-emul-controller"; clock-frequency = ; #address-cells = <1>; #size-cells = <0>; reg = <0x400 4>; label = "I2C_1"; ps8xxx_emul: ps8xxx_emul@b { compatible = "cros,ps8xxx-emul"; reg = <0xb>; alert_gpio = <&usb_c1_tcpc_int_odl>; p0-i2c-addr = <0x8>; p1-i2c-addr = <0x9>; gpio-i2c-addr = <0x1a>; label = "PS8XXX_EMUL"; }; tcs_emul: tcs@39 { compatible = "zephyr,tcs3400"; reg = <0x39>; label = "TCS_EMUL"; error-on-ro-write; error-on-reserved-bit-write; error-on-msb-first-access; }; syv682x_emul: syv682x@41 { compatible = "zephyr,syv682x-emul"; reg = <0x41>; label = "SYV682X_EMUL"; frs_en_gpio = <&gpio_usb_c1_frs_en>; alert_gpio = <&gpio_usb_c1_ppc_int>; }; usb_c1_bb_retimer_emul: bbretimer@42 { compatible = "cros,bb-retimer-emul"; reg = <0x42>; label = "USB_C1_BB_RETIMER"; vendor = "BB_RETIMER_VENDOR_ID_1"; error-on-ro-write; error-on-reserved-bit-write; }; accel_bmi160: bmi160@68 { compatible = "zephyr,bmi"; reg = <0x68>; label = "BMI160"; device-model = "BMI_EMUL_160"; error-on-ro-write; error-on-wo-read; error-on-reserved-bit-write; simulate-command-exec-time; }; }; clock: clock { compatible = "cros,clock-control-emul"; clock-frequency = ; /* 100 MHz */ }; wdt_counter: wdt-counter { compatible = "zephyr,counter-watchdog"; status = "okay"; counter = <&counter0>; label = "WDT_COUNTER"; }; cros_kb_raw: kb-raw-emul { compatible = "cros-ec,kb-raw-emul"; label = "KB_RAW"; }; cros_flash: cros-flash { compatible = "cros-ec,flash-emul"; }; }; &espi0 { espi-host@0 { status = "okay"; compatible = "zephyr,espi-emul-espi-host"; reg = <0x0>; label = "ESPI_HOST"; }; }; &gpio0 { ngpios = <34>; }; &i2c0 { cbi_eeprom: eeprom@56 { compatible = "atmel,at24"; reg = <0x56>; label = "EEPROM_CBI"; size = <512>; pagesize = <8>; address-width = <8>; timeout = <5>; }; battery: sb@b { compatible = "zephyr,smart-battery"; reg = <0xb>; label = "BATTERY"; cycle-count = <99>; version = "BATTERY_SPEC_VER_1_1_WITH_PEC"; /* Real battery voltages are multiples of 4.4V. */ desired-charg-volt = <5000>; desired-charg-cur = <1000>; }; bma_emul: bma@18 { compatible = "zephyr,bma255"; reg = <0x18>; label = "BMA_EMUL"; error-on-compensation-not-ready; error-on-ro-write; error-on-reserved-bit-write; error-on-msb-first-access; }; pi3usb9201_emul: pi3usb9201@5f { compatible = "zephyr,pi3usb9201-emul"; reg = <0x5f>; label = "PI3USB9201_EMUL"; }; sn5s330_emul: sn5s330@40 { compatible = "cros,sn5s330-emul"; reg = <0x40>; label = "SN5S330_EMUL"; int-pin = <&gpio_usb_c0_ppc_int>; }; accel_bmi260: bmi260@68 { compatible = "zephyr,bmi"; reg = <0x68>; label = "BMI260"; device-model = "BMI_EMUL_260"; error-on-ro-write; error-on-wo-read; error-on-reserved-bit-write; simulate-command-exec-time; }; ln9310: ln9310@80 { compatible = "cros,ln9310-emul"; status = "okay"; reg = <0x80>; label = "LN9310"; pg-int-pin = <&gpio_switchcap_pg_int_l>; }; lis2dw12_emul: lis2dw12@19 { compatible = "cros,lis2dw12-emul"; status = "okay"; reg = <0x19>; label = "LIS2DW12_EMUL"; }; i2c_mock: i2c_mock@84 { compatible = "cros,i2c-mock"; status = "okay"; reg = <0x84>; label = "I2C_MOCK"; }; isl923x_emul: isl923x@9 { compatible = "cros,isl923x-emul"; status = "okay"; reg = <0x9>; label = "ISL923X_EMUL"; battery = <&battery>; }; tcpci_emul: tcpci_emul@82 { compatible = "cros,tcpci-generic-emul"; status = "okay"; reg = <0x82>; label = "TCPCI_EMUL"; alert_gpio = <&usb_c0_tcpc_int_odl>; }; }; /* Enable all thermistors for testing */ &thermistor_3V3_30K9_47K_4050B { status = "okay"; }; &thermistor_3V0_22K6_47K_4050B { status = "okay"; }; &thermistor_3V3_13K7_47K_4050B { status = "okay"; }; &thermistor_3V3_51K1_47K_4050B { status = "okay"; };