From 327da0b5b59ebff946267c797a8ea22eed88b98c Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Wed, 20 Sep 2023 17:43:08 +0300 Subject: [PATCH] device: support specifying active slot For different reasons it might be desirable to keep slot 'b' as an active slot. Add support for specifying the active slot in the config file. The default is still slot 'a'. Signed-off-by: Dmitry Baryshkov --- device.c | 2 +- device.h | 2 +- device_parser.c | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/device.c b/device.c index ac939bf..76d9660 100644 --- a/device.c +++ b/device.c @@ -258,7 +258,7 @@ void device_boot(struct device *device, const void *data, size_t len) { warnx("booting the board..."); if (device->set_active) - fastboot_set_active(device->fastboot, "a"); + fastboot_set_active(device->fastboot, device->set_active); fastboot_download(device->fastboot, data, len); device->boot(device); } diff --git a/device.h b/device.h index 4077d4e..2c89f51 100644 --- a/device.h +++ b/device.h @@ -35,7 +35,7 @@ struct device { void (*key)(struct device *device, int key, bool asserted); void (*send_break)(struct device *dev); - bool set_active; + const char *set_active; void *cdb; diff --git a/device_parser.c b/device_parser.c index 362d288..32ff49c 100644 --- a/device_parser.c +++ b/device_parser.c @@ -144,7 +144,10 @@ static void parse_board(struct device_parser *dp) if (!dev->boot) dev->boot = device_fastboot_boot; } else if (!strcmp(key, "fastboot_set_active")) { - dev->set_active = !strcmp(value, "true"); + if (!strcmp(value, "true")) + dev->set_active = "a"; + else + dev->set_active = strdup(value); } else if (!strcmp(key, "broken_fastboot_boot")) { if (!strcmp(value, "true")) dev->boot = device_fastboot_flash_reboot;