summaryrefslogtreecommitdiff
path: root/board/casta/board.c
diff options
context:
space:
mode:
authorPatryk Duda <pdk@semihalf.com>2020-05-07 12:15:04 +0200
committerCommit Bot <commit-bot@chromium.org>2020-05-11 08:38:37 +0000
commitad326334e7454e444efc6de0248329abe85aaec0 (patch)
tree93b8f22a74921a2e10ae29a12204b49423571966 /board/casta/board.c
parent8fc99fe9d0c8ac7aa2e4483a002b84df767bf64f (diff)
downloadchrome-ec-ad326334e7454e444efc6de0248329abe85aaec0.tar.gz
casta: Configure number of PD ports basing on SKU ID
Bluebird board contains only one Type-C port. This patch implements limiting number of available Type-C ports basing on SKU ID. Also obtaining SKU ID was implemented by fetching it from EEPROM, similarly to garg board. BUG=b:154602760 BRANCH=none TEST=Flash on bluebird, open EC console. Issue command 'typec 1 usb'. Command should fail with information that parameter 1 is invalid. Signed-off-by: Patryk Duda <pdk@semihalf.com> Change-Id: I20c8799b2ee687956d5fbfd4029aacfaa768fe07 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2187212 Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'board/casta/board.c')
-rw-r--r--board/casta/board.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/board/casta/board.c b/board/casta/board.c
index 070ba45496..cbf66d00a0 100644
--- a/board/casta/board.c
+++ b/board/casta/board.c
@@ -40,6 +40,8 @@
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
+static uint8_t sku_id;
+
static void ppc_interrupt(enum gpio_signal signal)
{
switch (signal) {
@@ -129,6 +131,18 @@ void i2c_end_xfer_notify(const int port, const uint16_t slave_addr_flags)
battery_last_i2c_time = get_time();
}
+/* Read CBI from i2c eeprom and initialize variables for board variants */
+static void cbi_init(void)
+{
+ uint32_t val;
+
+ if (cbi_get_sku_id(&val) != EC_SUCCESS || val > UINT8_MAX)
+ return;
+ sku_id = val;
+ CPRINTS("SKU: %d", sku_id);
+}
+DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_I2C + 1);
+
/* TODO: Casta: remove this routine after rev0 is not supported */
static void board_init(void)
{
@@ -149,3 +163,10 @@ void board_overcurrent_event(int port, int is_overcurrented)
/* Note that the level is inverted because the pin is active low. */
gpio_set_level(GPIO_USB_C_OC, !is_overcurrented);
}
+
+uint8_t board_get_usb_pd_port_count(void)
+{
+ if (sku_id == 2)
+ return CONFIG_USB_PD_PORT_MAX_COUNT - 1;
+ return CONFIG_USB_PD_PORT_MAX_COUNT;
+}