diff options
author | Pali Rohár <pali.rohar@gmail.com> | 2012-08-11 14:53:22 +0200 |
---|---|---|
committer | Pali Rohár <pali.rohar@gmail.com> | 2012-08-11 14:53:22 +0200 |
commit | 8c1cfe3a6e6e7fe21ead3e3e380a936d4fbde8a7 (patch) | |
tree | bbd5b9fa8642d7e17be706624e7b0af5d64c21aa /src | |
parent | 8e2c83043349e360c77491a89b4c6e688912c39f (diff) | |
download | 0xFFFF-8c1cfe3a6e6e7fe21ead3e3e380a936d4fbde8a7.tar.bz2 |
nolo: Implement nolo_boot_to_update_mode
Diffstat (limited to 'src')
-rw-r--r-- | src/nolo.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -50,7 +50,7 @@ #define NOLO_ADD_RD_FLAGS 3 #define NOLO_DEL_RD_FLAGS 4 -/* R&D flags */ +/* Values - R&D flags */ #define NOLO_RD_FLAG_NO_OMAP_WD 0x002 #define NOLO_RD_FLAG_NO_EXT_WD 0x004 #define NOLO_RD_FLAG_NO_LIFEGUARD 0x008 @@ -60,6 +60,10 @@ #define NOLO_RD_FLAG_NO_CHARGING 0x080 #define NOLO_RD_FLAG_FORCE_POWER_KEY 0x100 +/* Values - Boot mode */ +#define NOLO_BOOT_MODE_NORMAL 0 +#define NOLO_BOOT_MODE_UPDATE 1 + static int nolo_identify_string(struct usb_device_info * dev, const char * str, char * out, size_t size) { char buf[512]; @@ -166,8 +170,8 @@ int nolo_boot(struct usb_device_info * dev, char * cmdline) { cmdline = NULL; } - if ( usb_control_msg(dev->udev, NOLO_WRITE, NOLO_BOOT, 0, 0, cmdline, size, 2000) < 0 ) - ERROR_RETURN("NOLO_BOOT failed", -1); + if ( usb_control_msg(dev->udev, NOLO_WRITE, NOLO_BOOT, NOLO_BOOT_MODE_NORMAL, 0, cmdline, size, 2000) < 0 ) + ERROR_RETURN("Booting failed", -1); return 0; @@ -175,8 +179,10 @@ int nolo_boot(struct usb_device_info * dev, char * cmdline) { int nolo_boot_to_update_mode(struct usb_device_info * dev) { - printf("nolo_boot_to_update_mode is not implemented yet\n"); - return -1; + printf("Booting to update mode...\n"); + if ( usb_control_msg(dev->udev, NOLO_WRITE, NOLO_BOOT, NOLO_BOOT_MODE_UPDATE, 0, NULL, 0, 2000) < 0 ) + ERROR_RETURN("Booting failed", -1); + return 0; } |