summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDawid Niedzwiecki <dn@semihalf.com>2022-01-21 14:49:40 +0100
committerCommit Bot <commit-bot@chromium.org>2022-02-15 07:14:31 +0000
commit31ae529b9b5f3923c430c0a3f128621915931f59 (patch)
tree70252a404c9ee09c80e068d3b63ca83b683bf1e0
parentebef42fe02e4773f33b71bda50023d700f00559d (diff)
downloadchrome-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.txt3
-rw-r--r--zephyr/projects/brya/brya/cbi_eeprom.dts2
-rw-r--r--zephyr/projects/brya/brya/prj.conf8
-rw-r--r--zephyr/projects/corsola/prj_kingler.conf5
-rw-r--r--zephyr/projects/corsola/prj_krabby.conf3
-rw-r--r--zephyr/projects/nissa/nereid_overlay.dts2
-rw-r--r--zephyr/projects/nissa/nivviks_overlay.dts2
-rw-r--r--zephyr/projects/nissa/prj.conf4
-rw-r--r--zephyr/projects/skyrim/prj.conf3
-rw-r--r--zephyr/projects/volteer/volteer/cbi_eeprom.dts2
-rw-r--r--zephyr/projects/volteer/volteer/prj.conf7
-rw-r--r--zephyr/shim/src/CMakeLists.txt1
-rw-r--r--zephyr/shim/src/cbi_eeprom.c51
-rw-r--r--zephyr/test/drivers/overlay.dts2
-rw-r--r--zephyr/test/drivers/prj.conf2
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