summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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);