diff options
author | Marco Chen <marcochen@chromium.org> | 2019-05-23 09:06:32 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-05-24 21:13:59 -0700 |
commit | 583f6db2d7c22c402c260531c1834c9db39d974a (patch) | |
tree | 56fcf810ca612188898b6baf4af9f6697054a3f0 /common | |
parent | 3462b178484efa2e643b89291b3961e6aafca655 (diff) | |
download | chrome-ec-583f6db2d7c22c402c260531c1834c9db39d974a.tar.gz |
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 <marcochen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1626890
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Diana Z <dzigterman@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/usb_port_power_smart.c | 13 |
1 files 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); |