summaryrefslogtreecommitdiff
path: root/zephyr/projects/brya/brya
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/projects/brya/brya')
-rw-r--r--zephyr/projects/brya/brya/BUILD.py8
-rw-r--r--zephyr/projects/brya/brya/CMakeLists.txt9
-rw-r--r--zephyr/projects/brya/brya/cbi_eeprom.dts17
-rw-r--r--zephyr/projects/brya/brya/fan.dts29
-rw-r--r--zephyr/projects/brya/brya/gpio.dts61
-rw-r--r--zephyr/projects/brya/brya/include/gpio_map.h36
-rw-r--r--zephyr/projects/brya/brya/motionsense.dts265
-rw-r--r--zephyr/projects/brya/brya/prj.conf73
-rw-r--r--zephyr/projects/brya/brya/pwm.dts74
9 files changed, 534 insertions, 38 deletions
diff --git a/zephyr/projects/brya/brya/BUILD.py b/zephyr/projects/brya/brya/BUILD.py
index 70696c1f3f..45d6dca977 100644
--- a/zephyr/projects/brya/brya/BUILD.py
+++ b/zephyr/projects/brya/brya/BUILD.py
@@ -5,5 +5,11 @@
register_npcx_project(
project_name="brya",
zephyr_board="brya",
- dts_overlays=["gpio.dts"],
+ dts_overlays=[
+ "cbi_eeprom.dts",
+ "fan.dts",
+ "gpio.dts",
+ "motionsense.dts",
+ "pwm.dts",
+ ],
)
diff --git a/zephyr/projects/brya/brya/CMakeLists.txt b/zephyr/projects/brya/brya/CMakeLists.txt
index 59af20ebfe..c5f11ebf5f 100644
--- a/zephyr/projects/brya/brya/CMakeLists.txt
+++ b/zephyr/projects/brya/brya/CMakeLists.txt
@@ -7,4 +7,11 @@ cmake_minimum_required(VERSION 3.13.1)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(brya)
-zephyr_include_directories(include)
+set(PLATFORM_EC_BASEBOARD "${PLATFORM_EC}/baseboard/brya" CACHE PATH
+ "Path to the platform/ec baseboard directory")
+
+zephyr_include_directories(include
+ "${PLATFORM_EC_BASEBOARD}")
+
+zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_EEPROM
+ "${PLATFORM_EC_BASEBOARD}/cbi.c")
diff --git a/zephyr/projects/brya/brya/cbi_eeprom.dts b/zephyr/projects/brya/brya/cbi_eeprom.dts
new file mode 100644
index 0000000000..f584c56afd
--- /dev/null
+++ b/zephyr/projects/brya/brya/cbi_eeprom.dts
@@ -0,0 +1,17 @@
+/* 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.
+ */
+
+&i2c7_0 {
+ cbi_eeprom: eeprom@50 {
+ compatible = "atmel,at24";
+ reg = <0x50>;
+ label = "EEPROM_CBI";
+ size = <2048>;
+ pagesize = <16>;
+ address-width = <8>;
+ timeout = <5>;
+ wp-gpios = <&gpio_ec_wp_l>;
+ };
+};
diff --git a/zephyr/projects/brya/brya/fan.dts b/zephyr/projects/brya/brya/fan.dts
new file mode 100644
index 0000000000..cccd6315bf
--- /dev/null
+++ b/zephyr/projects/brya/brya/fan.dts
@@ -0,0 +1,29 @@
+/* Copyright 2022 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.
+ */
+
+/ {
+ named-fans {
+ compatible = "named-fans";
+
+ fan_0 {
+ label = "FAN_0";
+ pwm = <&pwm_fan>;
+ rpm_min = <2200>;
+ rpm_start = <2200>;
+ rpm_max = <4200>;
+ tach = <&tach1>;
+ enable_gpio = <&gpio_en_pp5000_fan>;
+ };
+ };
+};
+
+/* Tachemeter for fan speed measurement */
+&tach1 {
+ status = "okay";
+ pinctrl-0 = <&alt3_ta1_sl1>; /* Use TA1 as input pin */
+ port = <NPCX_TACH_PORT_A>; /* port-A is selected */
+ sample-clk = <NPCX_TACH_FREQ_LFCLK>; /* Use LFCLK as sampling clock */
+ pulses-per-round = <2>; /* number of pulses per round of encoder */
+};
diff --git a/zephyr/projects/brya/brya/gpio.dts b/zephyr/projects/brya/brya/gpio.dts
index 9ec2af0a12..68549c7b68 100644
--- a/zephyr/projects/brya/brya/gpio.dts
+++ b/zephyr/projects/brya/brya/gpio.dts
@@ -10,137 +10,136 @@
lid_open: lid_open {
gpios = <&gpiod 2 GPIO_INPUT>;
enum-name = "GPIO_LID_OPEN";
- label = "LID_OPEN";
};
- gsc_ec_pwr_btn_odl: power_btn {
+ gsc_ec_pwr_btn_odl: gsc_ec_pwr_btn_odl {
gpios = <&gpio0 1 GPIO_INPUT>;
enum-name = "GPIO_POWER_BUTTON_L";
- label = "GSC_EC_PWR_BTN_ODL";
};
- wp_l {
+ gpio_ec_wp_l: ec_wp_odl {
+ #gpio-cells = <0>;
gpios = <&gpioa 1 GPIO_INPUT>;
enum-name = "GPIO_WP_L";
- label = "EC_WP_ODL";
};
ec_chg_led_y_c1 {
gpios = <&gpioc 3 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_Y_C1";
- label = "EC_CHG_LED_Y_C1";
};
ec_chg_led_b_c1 {
gpios = <&gpioc 4 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_B_C1";
- label = "EC_CHG_LED_B_C1";
};
- packet_mode_en {
+ ec_gsc_packet_mode {
gpios = <&gpio7 5 GPIO_OUT_LOW>;
enum-name = "GPIO_PACKET_MODE_EN";
- label = "EC_GSC_PACKET_MODE";
+ };
+ gpio_ec_accel_int_l: ec_accel_int_l {
+ gpios = <&gpio8 1 GPIO_INPUT>;
+ enum-name = "GPIO_EC_ACCEL_INT";
+ };
+ gpio_ec_imu_int_l: gpio_ec_imu_int_l {
+ gpios = <&gpio5 6 GPIO_INPUT>;
+ enum-name = "GPIO_EC_IMU_INT_L";
+ };
+ gpio_ec_als_rgb_int_l: gpio_ec_als_rgb_int_l {
+ gpios = <&gpiod 4 GPIO_INPUT>;
+ enum-name = "GPIO_EC_ALS_RGB_INT_L";
+ };
+ tablet_mode_l {
+ gpios = <&gpio9 5 GPIO_INPUT>;
+ enum-name = "GPIO_TABLET_MODE_L";
};
acok_od: acok_od {
gpios = <&gpio0 0 GPIO_INPUT>;
enum-name = "GPIO_AC_PRESENT";
- label = "ACOK_OD";
};
ec_kso_02_inv {
gpios = <&gpio1 7 GPIO_OUT_LOW>;
enum-name = "GPIO_KBD_KSO2";
- label = "EC_KSO_02_INV";
};
- pch_wake_odl {
+ ec_pch_wake_r_odl {
gpios = <&gpioc 0 GPIO_ODR_HIGH>;
enum-name = "GPIO_EC_PCH_WAKE_ODL";
- label = "EC_PCH_WAKE_R_ODL";
};
- pch_int_odl {
+ ec_pch_int_odl {
gpios = <&gpiob 0 GPIO_ODR_HIGH>;
enum-name = "GPIO_EC_INT_L";
- label = "EC_PCH_INT_ODL";
};
pg_ec_dsw_pwrok {
gpios = <&gpioc 7 GPIO_INPUT>;
enum-name = "GPIO_PG_EC_DSW_PWROK";
- label = "PG_EC_DSW_PWROK";
};
en_s5_rails {
gpios = <&gpiob 6 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_S5_RAILS";
- label = "EN_S5_RAILS";
};
sys_rst_odl {
gpios = <&gpioc 5 GPIO_ODR_HIGH>;
enum-name = "GPIO_SYS_RESET_L";
- label = "SYS_RST_ODL";
};
pg_ec_rsmrst_odl {
gpios = <&gpioe 2 GPIO_INPUT>;
enum-name = "GPIO_PG_EC_RSMRST_ODL";
- label = "PG_EC_RSMRST_ODL";
};
ec_pch_rsmrst_odl {
gpios = <&gpioa 6 GPIO_OUT_LOW>;
enum-name = "GPIO_PCH_RSMRST_L";
- label = "EC_PCH_RSMRST_ODL";
};
pg_ec_all_sys_pwrgd {
gpios = <&gpiof 4 GPIO_INPUT>;
enum-name = "GPIO_PG_EC_ALL_SYS_PWRGD";
- label = "PG_EC_ALL_SYS_PWRGD";
};
slp_s0_l {
gpios = <&gpiod 5 GPIO_INPUT>;
enum-name = "GPIO_PCH_SLP_S0_L";
- label = "SLP_S0_L";
};
slp_s3_l {
gpios = <&gpioa 5 GPIO_INPUT>;
enum-name = "GPIO_PCH_SLP_S3_L";
- label = "SLP_S3_L";
};
vccst_pwrgd_od {
gpios = <&gpioa 4 GPIO_ODR_LOW>;
enum-name = "GPIO_VCCST_PWRGD_OD";
- label = "VCCST_PWRGD_OD";
};
ec_prochot_odl {
gpios = <&gpio6 3 GPIO_ODR_HIGH>;
enum-name = "GPIO_CPU_PROCHOT";
- label = "EC_PROCHOT_ODL";
};
ec_pch_pwr_btn_odl {
gpios = <&gpioc 1 GPIO_ODR_HIGH>;
enum-name = "GPIO_PCH_PWRBTN_L";
- label = "EC_PCH_PWR_BTN_ODL";
};
slp_sus_l {
gpios = <&gpiof 1 GPIO_INPUT>;
enum-name = "GPIO_SLP_SUS_L";
- label = "SLP_SUS_L";
};
pch_pwrok {
gpios = <&gpio7 2 GPIO_OUT_LOW>;
enum-name = "GPIO_PCH_PWROK";
- label = "PCH_PWROK";
};
ec_pch_sys_pwrok {
gpios = <&gpio3 7 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_PCH_SYS_PWROK";
- label = "EC_PCH_SYS_PWROK";
};
imvp9_vrrdy_od {
gpios = <&gpio4 3 GPIO_INPUT>;
enum-name = "GPIO_IMVP9_VRRDY_OD";
- label = "IMVP9_VRRDY_OD";
};
ec_edp_bl_en {
gpios = <&gpiod 3 GPIO_OUT_HIGH>;
enum-name = "GPIO_ENABLE_BACKLIGHT";
- label = "EC_EDP_BL_EN";
+ };
+ ec_prochot_in_l {
+ gpios = <&gpiof 0 GPIO_INPUT>;
+ enum-name = "GPIO_EC_PROCHOT_IN_L";
+ };
+ gpio_en_pp5000_fan: en_pp5000_fan {
+ gpios = <&gpio6 1 GPIO_OUT_HIGH>;
+ enum-name = "GPIO_EN_PP5000_FAN";
};
};
diff --git a/zephyr/projects/brya/brya/include/gpio_map.h b/zephyr/projects/brya/brya/include/gpio_map.h
index 978b0a921c..953d0d453a 100644
--- a/zephyr/projects/brya/brya/include/gpio_map.h
+++ b/zephyr/projects/brya/brya/include/gpio_map.h
@@ -12,6 +12,32 @@
#define GPIO_ENTERING_RW GPIO_UNIMPLEMENTED
#define GPIO_WP_L GPIO_UNIMPLEMENTED
+#ifdef CONFIG_PLATFORM_EC_ALS_TCS3400
+#define TCS3400_INT(gpio, edge) GPIO_INT(gpio, edge, tcs3400_interrupt)
+#else
+#define TCS3400_INT(gpio, edge)
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_ACCELGYRO_LSM6DSO
+#define LSM6DSO_INT(gpio, edge) GPIO_INT(gpio, edge, lsm6dso_interrupt)
+#else
+#define LSM6DSO_INT(gpio, edge)
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_ACCEL_LIS2DW12
+#define LIS2DW12_INT(gpio, edge) GPIO_INT(gpio, edge, lis2dw12_interrupt)
+#else
+#define LIS2DW12_INT(gpio, edge)
+#endif
+
+#ifdef CONFIG_PLATFORM_EC_GMR_TABLET_MODE
+#define GMR_TABLET_MODE_INT(gpio, edge) GPIO_INT(gpio, edge, \
+ gmr_tablet_switch_isr)
+#define GMR_TABLET_MODE_GPIO_L GPIO_TABLET_MODE_L
+#else
+#define GMR_TABLET_MODE_INT(gpio, edge)
+#endif
+
/*
* Set EC_CROS_GPIO_INTERRUPTS to a space-separated list of GPIO_INT items.
*
@@ -31,21 +57,29 @@
#ifdef CONFIG_PLATFORM_EC_POWERSEQ
#define POWER_SIGNAL_INT(gpio, edge) \
GPIO_INT(gpio, edge, power_signal_interrupt)
+#define AP_PROCHOT_INT(gpio, edge) \
+ GPIO_INT(gpio, edge, throttle_ap_prochot_input_interrupt)
#else
#define POWER_SIGNAL_INT(gpio, edge)
+#define AP_PROCHOT_INT(gpio, edge)
#endif
#define EC_CROS_GPIO_INTERRUPTS \
+ GMR_TABLET_MODE_INT(GPIO_TABLET_MODE_L, GPIO_INT_EDGE_BOTH) \
GPIO_INT(GPIO_LID_OPEN, GPIO_INT_EDGE_BOTH, lid_interrupt) \
GPIO_INT(GPIO_POWER_BUTTON_L, GPIO_INT_EDGE_BOTH, \
power_button_interrupt) \
GPIO_INT(GPIO_WP_L, GPIO_INT_EDGE_BOTH, switch_interrupt) \
GPIO_INT(GPIO_AC_PRESENT, GPIO_INT_EDGE_BOTH, extpower_interrupt) \
+ LIS2DW12_INT(GPIO_EC_ACCEL_INT, GPIO_INT_EDGE_FALLING) \
+ LSM6DSO_INT(GPIO_EC_IMU_INT_L, GPIO_INT_EDGE_FALLING) \
POWER_SIGNAL_INT(GPIO_PCH_SLP_S0_L, GPIO_INT_EDGE_BOTH) \
POWER_SIGNAL_INT(GPIO_PCH_SLP_S3_L, GPIO_INT_EDGE_BOTH) \
POWER_SIGNAL_INT(GPIO_SLP_SUS_L, GPIO_INT_EDGE_BOTH) \
POWER_SIGNAL_INT(GPIO_PG_EC_DSW_PWROK, GPIO_INT_EDGE_BOTH) \
POWER_SIGNAL_INT(GPIO_PG_EC_RSMRST_ODL, GPIO_INT_EDGE_BOTH) \
- POWER_SIGNAL_INT(GPIO_PG_EC_ALL_SYS_PWRGD, GPIO_INT_EDGE_BOTH)
+ POWER_SIGNAL_INT(GPIO_PG_EC_ALL_SYS_PWRGD, GPIO_INT_EDGE_BOTH) \
+ TCS3400_INT(GPIO_EC_ALS_RGB_INT_L, GPIO_INT_EDGE_FALLING) \
+ AP_PROCHOT_INT(GPIO_EC_PROCHOT_IN_L, GPIO_INT_EDGE_BOTH)
#endif /* __ZEPHYR_GPIO_MAP_H */
diff --git a/zephyr/projects/brya/brya/motionsense.dts b/zephyr/projects/brya/brya/motionsense.dts
new file mode 100644
index 0000000000..a4276c3255
--- /dev/null
+++ b/zephyr/projects/brya/brya/motionsense.dts
@@ -0,0 +1,265 @@
+/*
+ * Copyright (c) 2022 The Chromium OS Authors
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <dt-bindings/motionsense/utils.h>
+
+
+/ {
+ aliases {
+ /*
+ * motion sense's <>_INT_EVENT is handled
+ * by alias. Using the alias, each driver creates
+ * its own <>_INT_EVENT.
+ */
+ lsm6dso-int = &base_accel;
+ lis2dw12-int = &lid_accel;
+ tcs3400-int = &als_clear;
+ };
+
+ /*
+ * 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_lis2dw12: lis2dw12-mutex {
+ label = "LIS2DW12_MUTEX";
+ };
+
+ mutex_lsm6dso: lsm6dso-mutex {
+ label = "LSM6DSO_MUTEX";
+ };
+ };
+
+ /* Rotation matrix used by drivers. */
+ motionsense-rotation-ref {
+ compatible = "cros-ec,motionsense-rotation-ref";
+ lid_rot_ref: lid-rotation-ref {
+ mat33 = <0 1 0
+ 1 0 0
+ 0 0 (-1)>;
+ };
+ base_rot_ref: base-rotation-ref {
+ mat33 = <1 0 0
+ 0 (-1) 0
+ 0 0 (-1)>;
+ };
+ };
+
+ /*
+ * Driver specific data. A driver-specific data can be shared with
+ * different motion sensors while they are using the same driver.
+ *
+ * If a node's compatible starts with "cros-ec,accelgyro-", it is for
+ * a common structure defined in accelgyro.h.
+ * e.g) compatible = "cros-ec,accelgyro-als-drv-data" is for
+ * "struct als_drv_data_t" in accelgyro.h
+ */
+ motionsense-sensor-data {
+ lis2dw12_data: lis2dw12-drv-data {
+ compatible = "cros-ec,drvdata-lis2dw12";
+ status = "okay";
+ };
+
+ lsm6dso_data: lsm6dso-drv-data {
+ compatible = "cros-ec,drvdata-lsm6dso";
+ 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 0 0 1>;
+ 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 0 1>;
+ 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 label "lid_accel" and "base_accel" are used to indicate
+ * motion sensor IDs for lid angle calculation.
+ */
+ motionsense-sensor {
+ lid_accel: lid-accel {
+ compatible = "cros-ec,lis2dw12";
+ status = "okay";
+
+ label = "Lid Accel";
+ active-mask = "SENSOR_ACTIVE_S0_S3";
+ location = "MOTIONSENSE_LOC_LID";
+ mutex = <&mutex_lis2dw12>;
+ port = <&i2c_sensor>;
+ rot-standard-ref = <&lid_rot_ref>;
+ default-range = <2>;
+ drv-data = <&lis2dw12_data>;
+ i2c-spi-addr-flags = "LIS2DWL_ADDR0_FLAGS";
+ configs {
+ compatible =
+ "cros-ec,motionsense-sensor-config";
+ ec-s0 {
+ label = "SENSOR_CONFIG_EC_S0";
+ odr = <(10000 | ROUND_UP_FLAG)>;
+ };
+ ec-s3 {
+ label = "SENSOR_CONFIG_EC_S3";
+ odr = <(10000 | ROUND_UP_FLAG)>;
+ };
+ };
+ };
+
+ base_accel: base-accel {
+ compatible = "cros-ec,lsm6dso-accel";
+ status = "okay";
+
+ label = "Base Accel";
+ active-mask = "SENSOR_ACTIVE_S0_S3";
+ location = "MOTIONSENSE_LOC_BASE";
+ mutex = <&mutex_lsm6dso>;
+ port = <&i2c_sensor>;
+ rot-standard-ref = <&base_rot_ref>;
+ default-range = <4>;
+ drv-data = <&lsm6dso_data>;
+ i2c-spi-addr-flags = "LSM6DSO_ADDR0_FLAGS";
+ configs {
+ compatible =
+ "cros-ec,motionsense-sensor-config";
+ ec-s0 {
+ label = "SENSOR_CONFIG_EC_S0";
+ odr = <(13000 | ROUND_UP_FLAG)>;
+ ec-rate = <(100 * USEC_PER_MSEC)>;
+ };
+ ec-s3 {
+ label = "SENSOR_CONFIG_EC_S3";
+ odr = <(10000 | ROUND_UP_FLAG)>;
+ ec-rate = <(100 * USEC_PER_MSEC)>;
+ };
+ };
+ };
+
+ base-gyro {
+ compatible = "cros-ec,lsm6dso-gyro";
+ status = "okay";
+
+ label = "Base Gyro";
+ active-mask = "SENSOR_ACTIVE_S0_S3";
+ location = "MOTIONSENSE_LOC_BASE";
+ mutex = <&mutex_lsm6dso>;
+ port = <&i2c_sensor>;
+ rot-standard-ref = <&base_rot_ref>;
+ default-range = <(1000 | ROUND_UP_FLAG)>; /* dps */
+ drv-data = <&lsm6dso_data>;
+ i2c-spi-addr-flags = "LSM6DSO_ADDR0_FLAGS";
+ };
+
+ als_clear: base-als-clear {
+ compatible = "cros-ec,tcs3400-clear";
+ status = "okay";
+
+ label = "Clear Light";
+ active-mask = "SENSOR_ACTIVE_S0_S3";
+ location = "MOTIONSENSE_LOC_CAMERA";
+ 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 */
+ label = "SENSOR_CONFIG_EC_S0";
+ odr = <1000>;
+ };
+ };
+ };
+
+ base-als-rgb {
+ compatible = "cros-ec,tcs3400-rgb";
+ status = "okay";
+
+ label = "RGB Light";
+ active-mask = "SENSOR_ACTIVE_S0_S3";
+ location = "MOTIONSENSE_LOC_CAMERA";
+ default-range = <0x10000>; /* scale = 1x, uscale = 0 */
+ drv-data = <&tcs_rgb_data>;
+ };
+ };
+
+ motionsense-sensor-info {
+ compatible = "cros-ec,motionsense-sensor-info";
+
+ /* list of entries for motion_als_sensors */
+ als-sensors = <&als_clear>;
+ /*
+ * list of GPIO interrupts that have to
+ * be enabled at initial stage
+ */
+ sensor-irqs = <&gpio_ec_imu_int_l &gpio_ec_als_rgb_int_l
+ &gpio_ec_accel_int_l>;
+ /* list of sensors in force mode */
+ accel-force-mode-sensors = <&lid_accel &als_clear>;
+ };
+};
diff --git a/zephyr/projects/brya/brya/prj.conf b/zephyr/projects/brya/brya/prj.conf
index 13ef01133f..1bfd3ce95b 100644
--- a/zephyr/projects/brya/brya/prj.conf
+++ b/zephyr/projects/brya/brya/prj.conf
@@ -7,6 +7,7 @@ CONFIG_PLATFORM_EC=y
CONFIG_PLATFORM_EC_BRINGUP=y
CONFIG_SHIMMED_TASKS=y
CONFIG_PLATFORM_EC_POWER_BUTTON=y
+CONFIG_PLATFORM_EC_CBI_EEPROM=y
CONFIG_PLATFORM_EC_LID_SWITCH=y
CONFIG_PLATFORM_EC_SWITCH=y
CONFIG_LTO=y
@@ -17,7 +18,8 @@ CONFIG_PLATFORM_EC_VBOOT_HASH=y
CONFIG_PLATFORM_EC_EXTPOWER_GPIO=y
CONFIG_PLATFORM_EC_CONSOLE_CMD_SYSINFO=y
CONFIG_PLATFORM_EC_I2C=y
-CONFIG_PLATFORM_EC_BACKLIGHT_LID=y
+
+CONFIG_PLATFORM_EC_ADC_CHANNELS_RUNTIME_CONFIG=y
# SoC configuration
CONFIG_AP=y
@@ -25,17 +27,73 @@ CONFIG_AP_X86_INTEL_ADL=y
CONFIG_FPU=y
CONFIG_ARM_MPU=y
+# eSPI
CONFIG_ESPI=y
-CONFIG_PLATFORM_EC_ESPI=y
CONFIG_PLATFORM_EC_ESPI_VW_SLP_S4=y
+CONFIG_PLATFORM_EC_ESPI_VW_SLP_S5=y
+
+# Power Sequencing
+CONFIG_PLATFORM_EC_POWERSEQ=y
+CONFIG_PLATFORM_EC_POWERSEQ_RTC_RESET=y
+CONFIG_PLATFORM_EC_POWERSEQ_S0IX=y
+CONFIG_PLATFORM_EC_POWERSEQ_S4=y
+CONFIG_PLATFORM_EC_POWER_SLEEP_FAILURE_DETECTION=y
+CONFIG_PLATFORM_EC_THROTTLE_AP=y
# Host command
CONFIG_PLATFORM_EC_HOSTCMD=y
+# Console command
+CONFIG_PLATFORM_EC_CONSOLE_CMD_ACCELS=y
+CONFIG_PLATFORM_EC_CONSOLE_CMD_ACCEL_INFO=y
+
+# Sensors
+CONFIG_PLATFORM_EC_MOTIONSENSE=y
+CONFIG_PLATFORM_EC_ACCEL_FIFO=y
+CONFIG_PLATFORM_EC_ACCEL_INTERRUPTS=y
+CONFIG_PLATFORM_EC_ALS=y
+CONFIG_PLATFORM_EC_DYNAMIC_MOTION_SENSOR_COUNT=y
+CONFIG_PLATFORM_EC_GMR_TABLET_MODE=y
+CONFIG_PLATFORM_EC_LID_ANGLE=y
+CONFIG_PLATFORM_EC_LID_ANGLE_UPDATE=y
+CONFIG_PLATFORM_EC_SENSOR_TIGHT_TIMESTAMPS=y
+CONFIG_PLATFORM_EC_TABLET_MODE=y
+CONFIG_PLATFORM_EC_TABLET_MODE_SWITCH=y
+
+# Sensor Drivers
+CONFIG_PLATFORM_EC_ACCELGYRO_BMI_COMM_SPI=y
+CONFIG_PLATFORM_EC_ACCELGYRO_ICM_COMM_SPI=y
+CONFIG_PLATFORM_EC_ACCELGYRO_LSM6DSO=y
+CONFIG_PLATFORM_EC_ACCEL_LIS2DW12=y
+CONFIG_PLATFORM_EC_ACCEL_LIS2DW12_AS_BASE=y
+CONFIG_PLATFORM_EC_ALS_TCS3400=y
+
+# Fan
+CONFIG_PLATFORM_EC_FAN=y
+CONFIG_SENSOR=y
+CONFIG_SENSOR_SHELL=n
+CONFIG_TACH_NPCX=y
+
# Temperature sensors
CONFIG_PLATFORM_EC_TEMP_SENSOR=y
CONFIG_PLATFORM_EC_THERMISTOR=y
+# Miscellaneous configs
+CONFIG_PLATFORM_EC_HIBERNATE_PSL=y
+
+# MKBP event
+CONFIG_PLATFORM_EC_MKBP_EVENT=y
+CONFIG_PLATFORM_EC_MKBP_INPUT_DEVICES=y
+CONFIG_PLATFORM_EC_MKBP_USE_HOST_EVENT=y
+
+# MKBP event mask
+CONFIG_PLATFORM_EC_MKBP_EVENT_WAKEUP_MASK=y
+CONFIG_PLATFORM_EC_MKBP_HOST_EVENT_WAKEUP_MASK=y
+
+# PMIC
+CONFIG_PLATFORM_EC_PMIC=y
+CONFIG_PLATFORM_EC_MP2964=y
+
# Keyboard
CONFIG_PLATFORM_EC_KEYBOARD=y
CONFIG_PLATFORM_EC_KEYBOARD_PROTOCOL_8042=y
@@ -48,9 +106,12 @@ CONFIG_PLATFORM_EC_WORKAROUND_FLASH_DOWNLOAD_API=y
CONFIG_SYSCON=y
+# PWM
+CONFIG_PWM=y
+CONFIG_PWM_SHELL=n
+CONFIG_PLATFORM_EC_PWM=y
+
# TODO(b/188605676): bring these features up
-CONFIG_PLATFORM_EC_BACKLIGHT_LID=n
-CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=n
CONFIG_PLATFORM_EC_BOARD_VERSION_GPIO=n
# Power Sequencing
@@ -62,3 +123,7 @@ CONFIG_PLATFORM_EC_POWERSEQ_S0IX=y
CONFIG_PLATFORM_EC_POWER_SLEEP_FAILURE_DETECTION=y
# Treat 2nd reset from H1 as Power-On
CONFIG_PLATFORM_EC_BOARD_RESET_AFTER_POWER_ON=y
+CONFIG_PLATFORM_EC_THROTTLE_AP=y
+
+# RTC
+CONFIG_PLATFORM_EC_RTC=y
diff --git a/zephyr/projects/brya/brya/pwm.dts b/zephyr/projects/brya/brya/pwm.dts
new file mode 100644
index 0000000000..4b71b235ba
--- /dev/null
+++ b/zephyr/projects/brya/brya/pwm.dts
@@ -0,0 +1,74 @@
+/* Copyright 2022 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.
+ */
+
+/ {
+ named-pwms {
+ compatible = "named-pwms";
+
+ led1: led1 {
+ #pwm-cells = <0>;
+ pwms = <&pwm2 0 PWM_POLARITY_INVERTED>;
+ frequency = <4800>;
+ };
+ led2: led2 {
+ #pwm-cells = <0>;
+ pwms = <&pwm0 0 PWM_POLARITY_INVERTED>;
+ frequency = <4800>;
+ };
+ led3: led3 {
+ #pwm-cells = <0>;
+ pwms = <&pwm1 0 PWM_POLARITY_INVERTED>;
+ frequency = <4800>;
+ };
+ led4: led4 {
+ #pwm-cells = <0>;
+ pwms = <&pwm7 0 PWM_POLARITY_INVERTED>;
+ frequency = <4800>;
+ };
+ kblight: kblight {
+ pwms = <&pwm3 0 0>;
+ frequency = <2400>;
+ };
+ pwm_fan: fan {
+ pwms = <&pwm5 0 0>;
+ frequency = <1000>;
+ };
+ };
+};
+
+/* LED2 */
+&pwm0 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+};
+
+/* LED3 */
+&pwm1 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+};
+
+/* LED1 */
+&pwm2 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+};
+
+/* Keyboard backlight */
+&pwm3 {
+ status = "okay";
+};
+
+/* Fan control */
+&pwm5 {
+ status = "okay";
+ drive-open-drain;
+};
+
+/* LED4 */
+&pwm7 {
+ status = "okay";
+ clock-bus = "NPCX_CLOCK_BUS_LFCLK";
+};