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;