From e685d367bc2c5457dcb10d2877c2f6faa35dd210 Mon Sep 17 00:00:00 2001 From: Bjorn Andersson Date: Fri, 22 Jan 2021 17:26:17 -0600 Subject: [PATCH] alpaca: Add configuration for keeping USB always connected USB on the Primus acts up when we toggle USB in Alpaca, so add a configuration option to force it on at all times. Signed-off-by: Bjorn Andersson --- alpaca.c | 10 ++++++++-- device.h | 1 + device_parser.c | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/alpaca.c b/alpaca.c index a6bd133..b292621 100644 --- a/alpaca.c +++ b/alpaca.c @@ -73,7 +73,11 @@ void *alpaca_open(struct device *dev) err(1, "failed to open %s", dev->alpaca_dev); alpaca_device_power(alpaca, 0); - alpaca_usb_device_power(alpaca, 0); + + if (dev->usb_always_on) + alpaca_usb_device_power(alpaca, 1); + else + alpaca_usb_device_power(alpaca, 0); usleep(500000); @@ -156,7 +160,9 @@ int alpaca_power_on(struct device *dev) int alpaca_power_off(struct device *dev) { alpaca_device_power(dev->cdb, 0); - alpaca_usb_device_power(dev->cdb, 0); + + if (!dev->usb_always_on) + alpaca_usb_device_power(dev->cdb, 0); return 0; } diff --git a/device.h b/device.h index 5dce18a..0e94b1c 100644 --- a/device.h +++ b/device.h @@ -19,6 +19,7 @@ struct device { unsigned voltage; bool tickle_mmc; bool pshold_shutdown; + bool usb_always_on; struct fastboot *fastboot; unsigned int fastboot_key_timeout; diff --git a/device_parser.c b/device_parser.c index 0ebe151..3e71a95 100644 --- a/device_parser.c +++ b/device_parser.c @@ -138,6 +138,8 @@ static void parse_board(struct device_parser *dp) dev->description = strdup(value); } else if (!strcmp(key, "fastboot_key_timeout")) { dev->fastboot_key_timeout = strtoul(value, NULL, 10); + } else if (!strcmp(key, "usb_always_on")) { + dev->usb_always_on = !strcmp(value, "true"); } else { fprintf(stderr, "device parser: unknown key \"%s\"\n", key); exit(1);