From 583f6db2d7c22c402c260531c1834c9db39d974a Mon Sep 17 00:00:00 2001 From: Marco Chen Date: Thu, 23 May 2019 09:06:32 +0800 Subject: usb_port_power_smart: data of USB_SYSJUMP_TAG is a struct not uint8_t. BUG=b:130767435 BRANCH=octopus TEST=1. `make buildall -j4` 2. execute `ectool usbchargemode 0 2 1` in EC RO stage. 3. jump to EC RW stage. 4. check whether charge_mode in RW is restored well in usb_charge_init() Change-Id: I57346d3d92fa58a4d07b7509846123fc8f0c93fc Signed-off-by: Marco Chen Reviewed-on: https://chromium-review.googlesource.com/1626890 Commit-Ready: ChromeOS CL Exonerator Bot Legacy-Commit-Queue: Commit Bot Reviewed-by: Diana Z Reviewed-by: Daisuke Nojiri --- common/usb_port_power_smart.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/common/usb_port_power_smart.c b/common/usb_port_power_smart.c index 8da655f331..d37b218709 100644 --- a/common/usb_port_power_smart.c +++ b/common/usb_port_power_smart.c @@ -25,10 +25,12 @@ #define CONFIG_USB_PORT_POWER_SMART_DEFAULT_MODE USB_CHARGE_MODE_SDP2 #endif -static struct { +struct charge_mode_t { uint8_t mode:7; uint8_t inhibit_charging_in_suspend:1; -} charge_mode[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT]; +} __pack; + +static struct charge_mode_t charge_mode[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT]; /* GPIOs to enable/disable USB ports. Board specific. */ extern const int usb_port_enable[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT]; @@ -215,10 +217,10 @@ DECLARE_HOOK(HOOK_SYSJUMP, usb_charge_preserve_state, HOOK_PRIO_DEFAULT); static void usb_charge_init(void) { - const uint8_t *prev; + const struct charge_mode_t *prev; int version, size, i; - prev = (const uint8_t *)system_get_jump_tag(USB_SYSJUMP_TAG, + prev = (const struct charge_mode_t *)system_get_jump_tag(USB_SYSJUMP_TAG, &version, &size); if (!prev || version != USB_HOOK_VERSION || @@ -228,7 +230,8 @@ static void usb_charge_init(void) } for (i = 0; i < CONFIG_USB_PORT_POWER_SMART_PORT_COUNT; i++) - usb_charge_set_mode(i, prev[i], USB_ALLOW_SUSPEND_CHARGE); + usb_charge_set_mode(i, prev[i].mode, + prev[i].inhibit_charging_in_suspend); } DECLARE_HOOK(HOOK_INIT, usb_charge_init, HOOK_PRIO_DEFAULT); -- cgit v1.2.1