From 8c1cfe3a6e6e7fe21ead3e3e380a936d4fbde8a7 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Sat, 11 Aug 2012 14:53:22 +0200 Subject: nolo: Implement nolo_boot_to_update_mode --- src/nolo.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/nolo.c') diff --git a/src/nolo.c b/src/nolo.c index 22c619b..97466c8 100644 --- a/src/nolo.c +++ b/src/nolo.c @@ -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; } -- cgit v1.2.3