summaryrefslogtreecommitdiffstats
path: root/src/operations.c
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2014-11-21 17:16:44 +0100
committerPali Rohár <pali.rohar@gmail.com>2014-11-21 17:16:44 +0100
commitf1095777c6c92f284ba2a8eb8b08a21476e4cb5f (patch)
tree827c0397032edbed29835e95317f01ea0ca4fa3b /src/operations.c
parent6372323ee8d3f60d0668e0ed4f98cf8c8e06b9fa (diff)
download0xFFFF-f1095777c6c92f284ba2a8eb8b08a21476e4cb5f.tar.bz2
operations: Check for supported image types in dev_flash_image
Diffstat (limited to 'src/operations.c')
-rw-r--r--src/operations.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/operations.c b/src/operations.c
index 6696fe1..10ad975 100644
--- a/src/operations.c
+++ b/src/operations.c
@@ -174,10 +174,15 @@ int dev_flash_image(struct device_info * dev, struct image * image) {
enum usb_flash_protocol protocol = dev->usb->flash_device->protocol;
- if ( protocol == FLASH_NOLO )
- return nolo_flash_image(dev->usb, image);
- else if ( protocol == FLASH_MKII )
- return mkii_flash_image(dev->usb, image);
+ if ( protocol == FLASH_NOLO ) {
+ if ( image->type != IMAGE_MMC )
+ return nolo_flash_image(dev->usb, image);
+ usb_switch_to_update(dev->usb);
+ return -EAGAIN;
+ } else if ( protocol == FLASH_MKII ) {
+ if ( dev->usb->data & (1 << image->type) )
+ return mkii_flash_image(dev->usb, image);
+ }
usb_switch_to_nolo(dev->usb);
return -EAGAIN;