diff options
Diffstat (limited to 'xpp/utils/fpga_load.c')
-rw-r--r-- | xpp/utils/fpga_load.c | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/xpp/utils/fpga_load.c b/xpp/utils/fpga_load.c index 426e6a6..2c03704 100644 --- a/xpp/utils/fpga_load.c +++ b/xpp/utils/fpga_load.c @@ -10,8 +10,21 @@ static const char rcsid[] = "$Id$"; -#define ERR(fmt, arg...) fprintf(stderr, "%s: ERROR: " fmt, progname, ## arg) -#define INFO(fmt, arg...) fprintf(stderr, "%s: " fmt, progname, ## arg) +#define ERR(fmt, arg...) do { \ + if(verbose >= LOG_ERR) \ + fprintf(stderr, "%s: ERROR: " fmt, \ + progname, ## arg); \ + } while(0); +#define INFO(fmt, arg...) do { \ + if(verbose >= LOG_INFO) \ + fprintf(stderr, "%s: " fmt, \ + progname, ## arg); \ + } while(0); +#define DBG(fmt, arg...) do { \ + if(verbose >= LOG_DEBUG) \ + fprintf(stderr, "%s: DBG: " fmt, \ + progname, ## arg); \ + } while(0); static int verbose = LOG_WARNING; static char *progname; @@ -229,14 +242,13 @@ int eeprom_set(struct my_usb_device *mydev, const struct myeeprom *eeprom) char buf[PACKET_SIZE]; struct fpga_packet_header *phead = (struct fpga_packet_header *)buf; - if(verbose >= LOG_DEBUG) - INFO("%s Start...\n", __FUNCTION__); + DBG("%s Start...\n", __FUNCTION__); assert(mydev != NULL); phead->header.op = EEPROM_SET; memcpy(&phead->d.eeprom_set.data, eeprom, EEPROM_SIZE); len = sizeof(phead->d.eeprom_set) + sizeof(phead->header.op); if(verbose >= LOG_DEBUG) { - INFO("%s write %d bytes\n", __FUNCTION__, len); + DBG("%s write %d bytes\n", __FUNCTION__, len); dump_packet((char *)phead, len); } ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT); @@ -262,7 +274,7 @@ int eeprom_set(struct my_usb_device *mydev, const struct myeeprom *eeprom) return -EINVAL; } if(verbose >= LOG_DEBUG) { - INFO("%s read %d bytes\n", __FUNCTION__, ret); + DBG("%s read %d bytes\n", __FUNCTION__, ret); dump_packet(buf, ret); } return 0; @@ -279,12 +291,11 @@ int eeprom_get(struct my_usb_device *mydev) assert(mydev != NULL); eeprom = &mydev->eeprom; - if(verbose >= LOG_DEBUG) - INFO("%s Start...\n", __FUNCTION__); + DBG("%s Start...\n", __FUNCTION__); phead->header.op = EEPROM_GET; len = sizeof(phead->header.op); /* warning: sending small packet */ if(verbose >= LOG_DEBUG) { - INFO("%s write %d bytes\n", __FUNCTION__, len); + DBG("%s write %d bytes\n", __FUNCTION__, len); dump_packet(buf, len); } ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT); @@ -310,7 +321,7 @@ int eeprom_get(struct my_usb_device *mydev) return -EINVAL; } if(verbose >= LOG_DEBUG) { - INFO("%s read %d bytes\n", __FUNCTION__, ret); + DBG("%s read %d bytes\n", __FUNCTION__, ret); dump_packet(buf, ret); } memcpy(eeprom, &phead->d.eeprom_get.data, EEPROM_SIZE); @@ -339,8 +350,7 @@ int send_hexline(struct my_usb_device *mydev, struct hexline *hexline, int seq) phead->d.data_packet.reserved = 0x00; memcpy(phead->d.data_packet.data, data, len); len += sizeof(hexline->d.content.header); - if(verbose >= LOG_DEBUG) - INFO("%04d+\r", seq); + DBG("%04d+\r", seq); ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, len, TIMEOUT); if(ret < 0) { ERR("bulk_write failed: %s\n", usb_strerror()); @@ -357,8 +367,7 @@ int send_hexline(struct my_usb_device *mydev, struct hexline *hexline, int seq) return ret; } else if(ret == 0) return 0; - if(verbose >= LOG_INFO) - INFO("%04d-\r", seq); + DBG("%04d-\r", seq); phead = (struct fpga_packet_header *)buf; if(phead->header.op != STATUS_REPLY) { ERR("Got unexpected reply op=%d\n", phead->header.op); @@ -372,13 +381,11 @@ int send_hexline(struct my_usb_device *mydev, struct hexline *hexline, int seq) case FW_FAIL_RESET: case FW_FAIL_TRANS: ERR("status reply %s (%d)\n", load_status2str(status), status); - if(verbose >= LOG_INFO) - dump_packet(buf, ret); + dump_packet(buf, ret); return -EPROTO; default: ERR("Unknown status reply %d\n", status); - if(verbose >= LOG_INFO) - dump_packet(buf, ret); + dump_packet(buf, ret); return -EPROTO; } return 0; @@ -468,9 +475,11 @@ int my_usb_device_init(const char devpath[], struct my_usb_device *mydev) config_desc = mydev->dev->config; interface = config_desc->interface; iface_desc = interface->altsetting; - if(verbose >= LOG_INFO) - INFO("Vendor:Product=%04X:%04X Class=%d (endpoints=%d)\n", - dev_desc->idVendor, dev_desc->idProduct, dev_desc->bDeviceClass, iface_desc->bNumEndpoints); + INFO("Vendor:Product=%04X:%04X Class=%d (endpoints=%d)\n", + dev_desc->idVendor, + dev_desc->idProduct, + dev_desc->bDeviceClass, + iface_desc->bNumEndpoints); if(iface_desc->bInterfaceClass != 0xFF) { ERR("Wrong Interface class %d\n", iface_desc->bInterfaceClass); return 0; @@ -518,8 +527,7 @@ int renumerate_device(struct my_usb_device *mydev) int ret; assert(mydev != NULL); - if(verbose >= LOG_INFO) - INFO("Renumerating\n"); + DBG("Renumerating\n"); phead->header.op = RENUMERATE; ret = usb_bulk_write(mydev->handle, MY_EP_OUT, (char *)phead, 1, TIMEOUT); if(ret < 0) { @@ -541,10 +549,11 @@ int fpga_load(struct my_usb_device *mydev, const struct hexdata *hexdata) unsigned int j = 0; int ret; int finished = 0; + const char *v = hexdata->version_info; + v = (v[0]) ? v : "Unknown"; assert(mydev != NULL); - if(verbose >= LOG_INFO) - INFO("Start...\n"); + INFO("FPGA_LOAD (version %s)\n", v); /* * i - is the line number * j - is the sequence number, on USB 2, i=j, but on @@ -561,8 +570,7 @@ int fpga_load(struct my_usb_device *mydev, const struct hexdata *hexdata) return 0; } if(hexline->d.content.header.tt == TT_EOF) { - if(verbose >= LOG_INFO) - INFO("End of data\n"); + DBG("End of data\n"); finished = 1; continue; } @@ -579,8 +587,7 @@ int fpga_load(struct my_usb_device *mydev, const struct hexdata *hexdata) j += ret; } } - if(verbose >= LOG_INFO) - INFO("Finished...\n"); + DBG("Finished...\n"); return 1; } @@ -731,8 +738,7 @@ int main(int argc, char *argv[]) if(vendor || product || release || serial || source ) opt_read_eeprom = opt_write_eeprom = 1; #endif - if(verbose >= LOG_INFO) - INFO("Startup %s\n", devpath); + DBG("Startup %s\n", devpath); if(!my_usb_device_init(devpath, &mydev)) { ERR("Failed to initialize USB device '%s'\n", devpath); @@ -792,8 +798,7 @@ int main(int argc, char *argv[]) show_device_info(&mydev); } #endif - if(verbose >= LOG_INFO) - INFO("Exiting\n"); + DBG("Exiting\n"); dev_err: my_usb_device_cleanup(&mydev); return ret; |