diff options
author | Dawid Niedzwiecki <dn@semihalf.com> | 2022-01-21 14:49:40 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-02-15 07:14:31 +0000 |
commit | 31ae529b9b5f3923c430c0a3f128621915931f59 (patch) | |
tree | 70252a404c9ee09c80e068d3b63ca83b683bf1e0 | |
parent | ebef42fe02e4773f33b71bda50023d700f00559d (diff) | |
download | chrome-ec-31ae529b9b5f3923c430c0a3f128621915931f59.tar.gz |
zephyr: eeprom: use Zephry EEPROM driver
Start using the Zephyr EEPROM driver. ECs use M24C02 EEPROM that can be
handled with AT24 driver.
Remove wp-gpios property from EEPROM nodes because it points to GPIO
that is used to set WP, not read. The WP status is set by other
board components.
The change increases usage of flash by 712 bytes and RAM by 32 bytes.
BUG=b:211779766
TEST=verify CBI can be read and set with 'cbi' console commands e.g.
'cbi' to read all CBI and 'cbi set 2 10 4' to set SKU to 10
BRANCH=main
Signed-off-by: Dawid Niedzwiecki <dn@semihalf.com>
Change-Id: Iddaf28fbcfb4c0e047c82b10e819b2ca2702b68a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3405040
Reviewed-by: Keith Short <keithshort@chromium.org>
Commit-Queue: Dawid Niedzwiecki <dawidn@google.com>
-rw-r--r-- | zephyr/CMakeLists.txt | 3 | ||||
-rw-r--r-- | zephyr/projects/brya/brya/cbi_eeprom.dts | 2 | ||||
-rw-r--r-- | zephyr/projects/brya/brya/prj.conf | 8 | ||||
-rw-r--r-- | zephyr/projects/corsola/prj_kingler.conf | 5 | ||||
-rw-r--r-- | zephyr/projects/corsola/prj_krabby.conf | 3 | ||||
-rw-r--r-- | zephyr/projects/nissa/nereid_overlay.dts | 2 | ||||
-rw-r--r-- | zephyr/projects/nissa/nivviks_overlay.dts | 2 | ||||
-rw-r--r-- | zephyr/projects/nissa/prj.conf | 4 | ||||
-rw-r--r-- | zephyr/projects/skyrim/prj.conf | 3 | ||||
-rw-r--r-- | zephyr/projects/volteer/volteer/cbi_eeprom.dts | 2 | ||||
-rw-r--r-- | zephyr/projects/volteer/volteer/prj.conf | 7 | ||||
-rw-r--r-- | zephyr/shim/src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/shim/src/cbi_eeprom.c | 51 | ||||
-rw-r--r-- | zephyr/test/drivers/overlay.dts | 2 | ||||
-rw-r--r-- | zephyr/test/drivers/prj.conf | 2 |
15 files changed, 82 insertions, 15 deletions
diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index 712875234a..a2513a611a 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -208,8 +208,7 @@ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_OCPC "${PLATFORM_EC}/common/ocpc.c") zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_EEPROM - "${PLATFORM_EC}/common/cbi.c" - "${PLATFORM_EC}/common/cbi_eeprom.c") + "${PLATFORM_EC}/common/cbi.c") zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_GPIO "${PLATFORM_EC}/common/cbi.c" "${PLATFORM_EC}/common/cbi_gpio.c") diff --git a/zephyr/projects/brya/brya/cbi_eeprom.dts b/zephyr/projects/brya/brya/cbi_eeprom.dts index c0a30aa47e..95a6806f31 100644 --- a/zephyr/projects/brya/brya/cbi_eeprom.dts +++ b/zephyr/projects/brya/brya/cbi_eeprom.dts @@ -12,7 +12,5 @@ pagesize = <16>; address-width = <8>; timeout = <5>; - /* gpio_ec_wp_l */ - wp-gpios = <&gpioa 1 GPIO_INPUT>; }; }; diff --git a/zephyr/projects/brya/brya/prj.conf b/zephyr/projects/brya/brya/prj.conf index ca01c5ffb3..34369161f8 100644 --- a/zephyr/projects/brya/brya/prj.conf +++ b/zephyr/projects/brya/brya/prj.conf @@ -6,7 +6,6 @@ CONFIG_CROS_EC=y CONFIG_PLATFORM_EC=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 @@ -26,6 +25,13 @@ CONFIG_AP_X86_INTEL_ADL=y CONFIG_FPU=y CONFIG_ARM_MPU=y +# CBI +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n +CONFIG_PLATFORM_EC_CBI_EEPROM=y +CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=y + # eSPI CONFIG_ESPI=y CONFIG_PLATFORM_EC_ESPI_VW_SLP_S4=y diff --git a/zephyr/projects/corsola/prj_kingler.conf b/zephyr/projects/corsola/prj_kingler.conf index f230a21893..71eff9b317 100644 --- a/zephyr/projects/corsola/prj_kingler.conf +++ b/zephyr/projects/corsola/prj_kingler.conf @@ -40,8 +40,11 @@ CONFIG_PLATFORM_EC_I2C_PASSTHRU_RESTRICTED=y CONFIG_PLATFORM_EC_I2C_VIRTUAL_BATTERY=y # CBI -CONFIG_PLATFORM_EC_CBI_EEPROM=y +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=y +CONFIG_PLATFORM_EC_CBI_EEPROM=y # Charger CONFIG_PLATFORM_EC_CHARGER=y diff --git a/zephyr/projects/corsola/prj_krabby.conf b/zephyr/projects/corsola/prj_krabby.conf index 52a84710c4..1fe4d4f330 100644 --- a/zephyr/projects/corsola/prj_krabby.conf +++ b/zephyr/projects/corsola/prj_krabby.conf @@ -19,6 +19,9 @@ CONFIG_PLATFORM_EC_SYSTEM_UNLOCKED=y CONFIG_PLATFORM_EC_BRINGUP=y # CBI +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=y CONFIG_PLATFORM_EC_CBI_EEPROM=y diff --git a/zephyr/projects/nissa/nereid_overlay.dts b/zephyr/projects/nissa/nereid_overlay.dts index 5d309ce241..abe01434fd 100644 --- a/zephyr/projects/nissa/nereid_overlay.dts +++ b/zephyr/projects/nissa/nereid_overlay.dts @@ -209,8 +209,6 @@ pagesize = <16>; address-width = <8>; timeout = <5>; - /* gpio_ec_wp_odl */ - wp-gpios = <&gpioa 6 GPIO_INPUT>; }; }; diff --git a/zephyr/projects/nissa/nivviks_overlay.dts b/zephyr/projects/nissa/nivviks_overlay.dts index 3bd70c0ea7..9d4db52327 100644 --- a/zephyr/projects/nissa/nivviks_overlay.dts +++ b/zephyr/projects/nissa/nivviks_overlay.dts @@ -198,8 +198,6 @@ pagesize = <16>; address-width = <8>; timeout = <5>; - /* gpio_ec_wp_odl */ - wp-gpios = <&gpioa 1 GPIO_INPUT>; }; }; diff --git a/zephyr/projects/nissa/prj.conf b/zephyr/projects/nissa/prj.conf index 2adebc307c..a764b86d75 100644 --- a/zephyr/projects/nissa/prj.conf +++ b/zephyr/projects/nissa/prj.conf @@ -53,9 +53,13 @@ CONFIG_PLATFORM_EC_TEMP_SENSOR=y CONFIG_PLATFORM_EC_THERMISTOR=y # CBI EEPROM support +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n CONFIG_PLATFORM_EC_CBI_EEPROM=y CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=y + # PWM support CONFIG_PWM=y CONFIG_PWM_SHELL=y diff --git a/zephyr/projects/skyrim/prj.conf b/zephyr/projects/skyrim/prj.conf index 05c43a56ba..713ffa327a 100644 --- a/zephyr/projects/skyrim/prj.conf +++ b/zephyr/projects/skyrim/prj.conf @@ -28,6 +28,9 @@ CONFIG_PLATFORM_EC_POWER_BUTTON=y CONFIG_PLATFORM_EC_ADC=y # CBI +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n CONFIG_PLATFORM_EC_BOARD_VERSION_CBI=y CONFIG_PLATFORM_EC_CBI_EEPROM=y diff --git a/zephyr/projects/volteer/volteer/cbi_eeprom.dts b/zephyr/projects/volteer/volteer/cbi_eeprom.dts index 7e409ad05b..fc44a421d5 100644 --- a/zephyr/projects/volteer/volteer/cbi_eeprom.dts +++ b/zephyr/projects/volteer/volteer/cbi_eeprom.dts @@ -12,8 +12,6 @@ pagesize = <16>; address-width = <8>; timeout = <5>; - /* gpio_ec_wp_l */ - wp-gpios = <&gpioa 1 GPIO_INPUT>; }; }; diff --git a/zephyr/projects/volteer/volteer/prj.conf b/zephyr/projects/volteer/volteer/prj.conf index fbade0cc90..2d3b8a4c61 100644 --- a/zephyr/projects/volteer/volteer/prj.conf +++ b/zephyr/projects/volteer/volteer/prj.conf @@ -17,13 +17,18 @@ CONFIG_ESPI=y CONFIG_PLATFORM_EC_ESPI_VW_SLP_S4=y CONFIG_PLATFORM_EC_ESPI_VW_SLP_S5=y +# CBI +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_SHELL=n +CONFIG_PLATFORM_EC_CBI_EEPROM=y + CONFIG_PLATFORM_EC=y CONFIG_SHIMMED_TASKS=y CONFIG_I2C=y CONFIG_PLATFORM_EC_EXTPOWER_GPIO=y CONFIG_PLATFORM_EC_LID_SWITCH=y CONFIG_PLATFORM_EC_POWER_BUTTON=y -CONFIG_PLATFORM_EC_CBI_EEPROM=y CONFIG_PLATFORM_EC_CONSOLE_CMD_HCDEBUG=n CONFIG_PLATFORM_EC_CONSOLE_CMD_CHGRAMP=n diff --git a/zephyr/shim/src/CMakeLists.txt b/zephyr/shim/src/CMakeLists.txt index c4fe7f3dab..ff7a8b5220 100644 --- a/zephyr/shim/src/CMakeLists.txt +++ b/zephyr/shim/src/CMakeLists.txt @@ -21,6 +21,7 @@ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_ADC adc.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_BATTERY battery.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_EEPROM cbi.c) +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_EEPROM cbi_eeprom.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_CBI_GPIO cbi.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_HOST_INTERFACE_ESPI espi.c) diff --git a/zephyr/shim/src/cbi_eeprom.c b/zephyr/shim/src/cbi_eeprom.c new file mode 100644 index 0000000000..ddf249dfde --- /dev/null +++ b/zephyr/shim/src/cbi_eeprom.c @@ -0,0 +1,51 @@ +/* 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. + */ + +#include "cros_board_info.h" +#include <drivers/eeprom.h> +#include "gpio.h" +#include "write_protect.h" + +#if DT_NODE_EXISTS(DT_NODELABEL(cbi_eeprom)) +#define CBI_EEPROM_DEV DEVICE_DT_GET(DT_NODELABEL(cbi_eeprom)) + +#ifdef CONFIG_PLATFORM_EC_EEPROM_CBI_WP +void cbi_latch_eeprom_wp(void) +{ + cprints(CC_SYSTEM, "CBI WP latched"); + gpio_set_level(GPIO_EC_CBI_WP, 1); +} +#endif /* CONFIG_PLATFORM_EC_EEPROM_CBI_WP */ + +static int eeprom_load(uint8_t offset, uint8_t *data, int len) +{ + return eeprom_read(CBI_EEPROM_DEV, offset, data, len); +} + +static int eeprom_is_write_protected(void) +{ + if (IS_ENABLED(CONFIG_PLATFORM_EC_BYPASS_CBI_EEPROM_WP_CHECK)) + return 0; + + return write_protect_is_asserted(); +} + +static int eeprom_store(uint8_t *cbi) +{ + return eeprom_write(CBI_EEPROM_DEV, 0, cbi, + ((struct cbi_header *)cbi)->total_size); +} + +static const struct cbi_storage_driver eeprom_drv = { + .store = eeprom_store, + .load = eeprom_load, + .is_protected = eeprom_is_write_protected, +}; + +const struct cbi_storage_config_t cbi_config = { + .storage_type = CBI_STORAGE_TYPE_EEPROM, + .drv = &eeprom_drv, +}; +#endif diff --git a/zephyr/test/drivers/overlay.dts b/zephyr/test/drivers/overlay.dts index ca63fc6b0f..6b4d422759 100644 --- a/zephyr/test/drivers/overlay.dts +++ b/zephyr/test/drivers/overlay.dts @@ -692,8 +692,6 @@ pagesize = <8>; address-width = <8>; timeout = <5>; - /* gpio_wp_l */ - wp-gpios = <&gpio0 3 (GPIO_INPUT | GPIO_OUTPUT)>; }; battery: sb@b { diff --git a/zephyr/test/drivers/prj.conf b/zephyr/test/drivers/prj.conf index f4686c651e..f52d31e49b 100644 --- a/zephyr/test/drivers/prj.conf +++ b/zephyr/test/drivers/prj.conf @@ -42,6 +42,8 @@ CONFIG_I2C=y CONFIG_I2C_EMUL=y CONFIG_GPIO=y CONFIG_GPIO_EMUL=y +CONFIG_EEPROM=y +CONFIG_EEPROM_AT24=y CONFIG_EMUL_EEPROM_AT2X=y CONFIG_EMUL_SMART_BATTERY=y CONFIG_EMUL_BC12_DETECT_PI3USB9201=y |