diff options
author | Patryk Duda <pdk@semihalf.com> | 2020-05-07 12:15:04 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-11 08:38:37 +0000 |
commit | ad326334e7454e444efc6de0248329abe85aaec0 (patch) | |
tree | 93b8f22a74921a2e10ae29a12204b49423571966 /board/casta | |
parent | 8fc99fe9d0c8ac7aa2e4483a002b84df767bf64f (diff) | |
download | chrome-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')
-rw-r--r-- | board/casta/board.c | 21 |
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; +} |