From c6e482d581bd3432df676c69acfb81fc36be1980 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 5 Mar 2017 16:24:29 +0100 Subject: [PATCH] qmod eeprom/i2c: Re-start watchdog while slow bit-banging --- .../usb/device/dfu/dfu_desc.c | 4 ++-- firmware/libboard/common/include/board_common.h | 11 ++++++++--- firmware/libboard/owhw/include/board.h | 8 ++++---- firmware/libboard/qmod/include/board.h | 8 ++++---- firmware/libboard/qmod/source/board_qmod.c | 6 +++++- firmware/libboard/qmod/source/i2c.c | 4 ++++ firmware/libboard/simtrace/include/board.h | 8 ++++---- firmware/libcommon/source/usb.c | 4 ++-- 8 files changed, 33 insertions(+), 20 deletions(-) diff --git a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_desc.c b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_desc.c index 10a95ed3..f6d484c6 100644 --- a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_desc.c +++ b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_desc.c @@ -29,8 +29,8 @@ static const USBDeviceDescriptor fsDevice = { .bDeviceSubClass = 0, .bDeviceProtocol = 0, .bMaxPacketSize0 = BOARD_USB_ENDPOINTS_MAXPACKETSIZE(0), - .idVendor = BOARD_USB_VENDOR, - .idProduct = BOARD_USB_PRODUCT, + .idVendor = BOARD_USB_VENDOR_ID, + .idProduct = BOARD_DFU_USB_PRODUCT_ID, .bcdDevice = BOARD_USB_RELEASE, .iManufacturer = STR_MANUF, .iProduct = STR_PROD, diff --git a/firmware/libboard/common/include/board_common.h b/firmware/libboard/common/include/board_common.h index b689d867..02b9e502 100644 --- a/firmware/libboard/common/include/board_common.h +++ b/firmware/libboard/common/include/board_common.h @@ -102,9 +102,14 @@ #define BOARD_USB_ENDPOINTS_MAXPACKETSIZE(i) (((i == 4) || (i == 5))? 512 : 64) #define BOARD_USB_ENDPOINTS_BANKS(i) (((i == 0) || (i == 3)) ? 1 : 2) -#define BOARD_USB_VENDOR SIMTRACE_VENDOR_ID -#define BOARD_USB_PRODUCT SIMTRACE_PRODUCT_ID -#define BOARD_USB_RELEASE 0 +#define USB_VENDOR_OPENMOKO 0x1d50 +#define USB_PRODUCT_OWHW_SAM3_DFU 0x4000 +#define USB_PRODUCT_OWHW_SAM3 0x4001 +#define USB_PRODUCT_QMOD_HUB 0x4002 +#define USB_PRODUCT_QMOD_SAM3_DFU 0x4003 +#define USB_PRODUCT_QMOD_SAM3 0x4004 +#define USB_PRODUCT_SIMTRACE2_DFU 0x60e2 +#define USB_PRODUCT_SIMTRACE2 0x60e3 #define BOARD_USB_DFU #define BOARD_DFU_BOOT_SIZE (16 * 1024) diff --git a/firmware/libboard/owhw/include/board.h b/firmware/libboard/owhw/include/board.h index eebdb585..c7707490 100644 --- a/firmware/libboard/owhw/include/board.h +++ b/firmware/libboard/owhw/include/board.h @@ -43,10 +43,10 @@ #define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_NORWAKEUP -#define SIMTRACE_VENDOR_ID 0x1d50 -#define SIMTRACE_PRODUCT_ID 0x60e3 /* FIXME */ -#define USB_VENDOR_ID SIMTRACE_VENDOR_ID -#define USB_PRODUCT_ID SIMTRACE_PRODUCT_ID +#define BOARD_USB_VENDOR_ID USB_VENDOR_OPENMOKO +#define BOARD_USB_PRODUCT_ID USB_PRODUCT_OWHW_SAM3 +#define BOARD_DFU_USB_PRODUCT_ID USB_PRODUCT_OWHW_SAM3_DFU +#define BOARD_USB_RELEASE 0x010 #define CARDEMU_SECOND_UART /* Disable VCC/ADC detection, as OWHWv2 has no ADCVREF */ diff --git a/firmware/libboard/qmod/include/board.h b/firmware/libboard/qmod/include/board.h index 106d5d06..0f6343ec 100644 --- a/firmware/libboard/qmod/include/board.h +++ b/firmware/libboard/qmod/include/board.h @@ -57,10 +57,10 @@ #define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_SELFPOWERED_NORWAKEUP -#define SIMTRACE_VENDOR_ID 0x1d50 -#define SIMTRACE_PRODUCT_ID 0x60e3 /* FIXME */ -#define USB_VENDOR_ID SIMTRACE_VENDOR_ID -#define USB_PRODUCT_ID SIMTRACE_PRODUCT_ID +#define BOARD_USB_VENDOR_ID USB_VENDOR_OPENMOKO +#define BOARD_USB_PRODUCT_ID USB_PRODUCT_QMOD_SAM3 +#define BOARD_DFU_USB_PRODUCT_ID USB_PRODUCT_QMOD_SAM3_DFU +#define BOARD_USB_RELEASE 0x010 #define CARDEMU_SECOND_UART #define DETECT_VCC_BY_ADC diff --git a/firmware/libboard/qmod/source/board_qmod.c b/firmware/libboard/qmod/source/board_qmod.c index e05a4542..3e6ec52f 100644 --- a/firmware/libboard/qmod/source/board_qmod.c +++ b/firmware/libboard/qmod/source/board_qmod.c @@ -26,7 +26,11 @@ static int qmod_sam3_is_12(void) } const unsigned char __eeprom_bin[256] = { - 0x23, 0x42, 0x17, 0x25, 0x00, 0x00, 0x9b, 0x20, 0x01, 0x00, 0x00, 0x00, 0x32, 0x32, 0x32, 0x32, /* 0x00 - 0x0f */ + USB_VENDOR_OPENMOKO & 0xff, + USB_VENDOR_OPENMOKO >> 8, + USB_PRODUCT_QMOD_HUB & 0xff, + USB_PRODUCT_QMOD_HUB >> 8, + 0x00, 0x00, 0x9b, 0x20, 0x01, 0x00, 0x00, 0x00, 0x32, 0x32, 0x32, 0x32, /* 0x00 - 0x0f */ 0x32, 0x04, 0x09, 0x18, 0x0d, 0x00, 0x73, 0x00, 0x79, 0x00, 0x73, 0x00, 0x6d, 0x00, 0x6f, 0x00, /* 0x10 - 0x1f */ 0x63, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x2d, 0x00, 0x20, 0x00, 0x73, 0x00, 0x2e, 0x00, /* 0x20 - 0x2f */ 0x66, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x2e, 0x00, 0x63, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x47, 0x00, /* 0x30 - 0x3f */ diff --git a/firmware/libboard/qmod/source/i2c.c b/firmware/libboard/qmod/source/i2c.c index 0549da1c..607f2471 100644 --- a/firmware/libboard/qmod/source/i2c.c +++ b/firmware/libboard/qmod/source/i2c.c @@ -157,6 +157,8 @@ int eeprom_write_byte(uint8_t slave, uint8_t addr, uint8_t byte) { bool nack; + WDT_Restart(WDT); + /* Write slave address */ nack = i2c_write_byte(true, false, slave << 1); if (nack) @@ -180,6 +182,8 @@ int eeprom_read_byte(uint8_t slave, uint8_t addr) { bool nack; + WDT_Restart(WDT); + /* dummy write cycle */ nack = i2c_write_byte(true, false, slave << 1); if (nack) diff --git a/firmware/libboard/simtrace/include/board.h b/firmware/libboard/simtrace/include/board.h index 1774e31e..6ed4cc54 100644 --- a/firmware/libboard/simtrace/include/board.h +++ b/firmware/libboard/simtrace/include/board.h @@ -76,10 +76,10 @@ #define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP -#define SIMTRACE_VENDOR_ID 0x1d50 -#define SIMTRACE_PRODUCT_ID 0x60e3 -#define USB_VENDOR_ID SIMTRACE_VENDOR_ID -#define USB_PRODUCT_ID SIMTRACE_PRODUCT_ID +#define BOARD_USB_VENDOR_ID USB_VENDOR_OPENMOKO +#define BOARD_USB_PRODUCT_ID USB_PRODUCT_SIMTRACE2 +#define BOARD_DFU_USB_PRODUCT_ID USB_PRODUCT_SIMTRACE2_DFU +#define BOARD_USB_RELEASE 0x000 #define HAVE_SNIFFER #define HAVE_CCID diff --git a/firmware/libcommon/source/usb.c b/firmware/libcommon/source/usb.c index c1effec0..d4f44ce3 100644 --- a/firmware/libcommon/source/usb.c +++ b/firmware/libcommon/source/usb.c @@ -563,8 +563,8 @@ const USBDeviceDescriptor deviceDescriptor = { .bDeviceSubClass = 0xff, .bDeviceProtocol = 0xff, .bMaxPacketSize0 = BOARD_USB_ENDPOINTS_MAXPACKETSIZE(0), - .idVendor = SIMTRACE_VENDOR_ID, - .idProduct = SIMTRACE_PRODUCT_ID, + .idVendor = BOARD_USB_VENDOR_ID, + .idProduct = BOARD_USB_PRODUCT_ID, .bcdDevice = 2, /* Release number */ .iManufacturer = MANUF_STR, .iProduct = PRODUCT_STRING,