summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Chen <marcochen@chromium.org>2019-05-23 09:06:32 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-05-24 21:13:59 -0700
commit583f6db2d7c22c402c260531c1834c9db39d974a (patch)
tree56fcf810ca612188898b6baf4af9f6697054a3f0
parent3462b178484efa2e643b89291b3961e6aafca655 (diff)
downloadchrome-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>
-rw-r--r--common/usb_port_power_smart.c13
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);