add untested devices

This commit is contained in:
Olaf Rempel 2014-10-16 21:58:36 +02:00
parent ea3cae90ba
commit f13e4f97d5
1 changed files with 72 additions and 64 deletions

134
ispprog.c
View File

@ -131,6 +131,7 @@ static uint8_t spi_speed = SPI_SPEED_PROBE;
#define POLL_7F 0x02 /* value 0x7F can not be polled from flash/eeprom */
#define POLL_80 0x04 /* value 0x80 can not be polled from flash/eeprom */
#define POLL_FF 0x08 /* value 0xFF can not be polled from flash/eeprom */
#define POLL_UNTESTED 0x80 /* device not tested */
struct _device {
uint8_t sig[3]; /* device signature */
@ -143,99 +144,99 @@ static struct _device device;
static const struct _device devices[] PROGMEM = {
{ { 0x1E, 0x90, 0x01 }, 0x13, 0x00, POLL_00 | POLL_FF }, /* at90s1200 */
// { { 0x1E, 0x90, 0x05 }, 0x55, ???, ??? }, /* tiny12 */
// { { 0x1E, 0x90, 0x06 }, 0x56, ???, ??? }, /* tiny15 */
// { { 0x1E, 0x90, 0x07 }, 0xFF, ???, ??? }, /* tiny13 */
{ { 0x1E, 0x90, 0x05 }, 0x55, 0x00, POLL_UNTESTED }, /* tiny12 */
{ { 0x1E, 0x90, 0x06 }, 0x56, 0x00, POLL_UNTESTED }, /* tiny15 */
{ { 0x1E, 0x90, 0x07 }, 0xFF, 0x00, POLL_UNTESTED }, /* tiny13 */
{ { 0x1E, 0x91, 0x01 }, 0x20, 0x00, POLL_7F | POLL_80 | POLL_FF }, /* at90s2313 */
// { { 0x1E, 0x91, 0x02 }, 0x48, ???, ??? }, /* at90s2323 */
// { { 0x1E, 0x91, 0x03 }, 0x4C, ???, ??? }, /* at90s2343 */
// { { 0x1E, 0x91, 0x05 }, 0x34, ???, ??? }, /* at90s2333 */
{ { 0x1E, 0x91, 0x02 }, 0x48, 0x00, POLL_UNTESTED }, /* at90s2323 */
{ { 0x1E, 0x91, 0x03 }, 0x4C, 0x00, POLL_UNTESTED }, /* at90s2343 */
{ { 0x1E, 0x91, 0x05 }, 0x34, 0x00, POLL_UNTESTED }, /* at90s2333 */
{ { 0x1E, 0x91, 0x08 }, 0x20, 0x0F, POLL_FF }, /* tiny25 (at90s2313 devcode) */
{ { 0x1E, 0x91, 0x09 }, 0x5E, 0x0F, POLL_FF }, /* tiny26 */
{ { 0x1E, 0x91, 0x0A }, 0x5E, 0x0F, POLL_FF }, /* tiny2313 (tiny26 devcode) */
{ { 0x1E, 0x91, 0x0B }, 0x20, 0x0F, POLL_FF }, /* tiny24 (at90s2313 devcode) */
// { { 0x1E, 0x91, 0x0C }, 0xFF, 0x0F, POLL_FF }, /* tiny261a */
{ { 0x1E, 0x91, 0x0C }, 0xFF, 0x0F, POLL_FF | POLL_UNTESTED }, /* tiny261a */
// { { 0x1E, 0x92, 0x01 }, 0x28, ???, ??? }, /* at90s4414 */
// { { 0x1E, 0x92, 0x02 }, 0x6C, ???, ??? }, /* at90s4434 */
// { { 0x1E, 0x92, 0x03 }, 0x30, ???, ??? }, /* at90s4433 */
// { { 0x1E, 0x92, 0x05 }, 0xFF, 0x1F, POLL_FF }, /* mega48 */
{ { 0x1E, 0x92, 0x01 }, 0x28, 0x00, POLL_UNTESTED }, /* at90s4414 */
{ { 0x1E, 0x92, 0x02 }, 0x6C, 0x00, POLL_UNTESTED }, /* at90s4434 */
{ { 0x1E, 0x92, 0x03 }, 0x30, 0x00, POLL_UNTESTED }, /* at90s4433 */
{ { 0x1E, 0x92, 0x05 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega48 */
{ { 0x1E, 0x92, 0x06 }, 0x20, 0x1F, POLL_FF }, /* tiny45 (at90s2313 devcode) */
{ { 0x1E, 0x92, 0x07 }, 0x20, 0x1F, POLL_FF }, /* tiny44 (at90s2313 devcode) */
// { { 0x1E, 0x92, 0x08 }, 0xFF, 0x1F, POLL_FF }, /* mega461a */
// { { 0x1E, 0x92, 0x0A }, 0xFF, 0x1F, POLL_FF }, /* mega48pa */
// { { 0x1E, 0x92, 0x0D }, 0x5E, 0x1F, POLL_FF }, /* tiny4313 (tiny26 devcode) */
{ { 0x1E, 0x92, 0x08 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega461a */
{ { 0x1E, 0x92, 0x0A }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega48pa */
{ { 0x1E, 0x92, 0x0D }, 0x5E, 0x1F, POLL_FF | POLL_UNTESTED }, /* tiny4313 (tiny26 devcode) */
{ { 0x1E, 0x93, 0x01 }, 0x38, 0x00, POLL_7F | POLL_80 | POLL_FF }, /* at90s8515 */
// { { 0x1E, 0x93, 0x03 }, 0x68, ???, ??? }, /* at90s8535 */
// { { 0x1E, 0x93, 0x05 }, 0x65, ???, ??? }, /* mega83 */
// { { 0x1E, 0x93, 0x06 }, 0x3A, 0x1F, POLL_FF }, /* mega8515 */
{ { 0x1E, 0x93, 0x03 }, 0x68, 0x00, POLL_UNTESTED }, /* at90s8535 */
{ { 0x1E, 0x93, 0x05 }, 0x65, 0x00, POLL_UNTESTED }, /* mega83 */
{ { 0x1E, 0x93, 0x06 }, 0x3A, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega8515 */
{ { 0x1E, 0x93, 0x07 }, 0x76, 0x1F, POLL_00 | POLL_FF }, /* mega8 */
// { { 0x1E, 0x93, 0x08 }, 0x69, 0x1F, POLL_FF }, /* mega8535 */
{ { 0x1E, 0x93, 0x08 }, 0x69, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega8535 */
{ { 0x1E, 0x93, 0x0A }, 0xFF, 0x1F, POLL_FF }, /* mega88 (no devcode) */
{ { 0x1E, 0x93, 0x0B }, 0x20, 0x1F, POLL_FF }, /* tiny85 (at90s2313 devcode) */
{ { 0x1E, 0x93, 0x0C }, 0x20, 0x1F, POLL_FF }, /* tiny84 (at90s2313 devcode) */
// { { 0x1E, 0x93, 0x0D }, 0xFF, 0x1F, POLL_FF }, /* tiny861a */
// { { 0x1E, 0x93, 0x0F }, 0xFF, 0x1F, POLL_FF }, /* mega88pa */
// { { 0x1E, 0x93, 0x11 }, 0xFF, 0x1F, POLL_FF }, /* tiny88 */
// { { 0x1E, 0x93, 0x81 }, 0xFF, 0x1F, POLL_FF }, /* at90pwm2/3 */
// { { 0x1E, 0x93, 0x82 }, 0xFF, 0x3F, POLL_FF }, /* at90usb82 */
// { { 0x1E, 0x93, 0x83 }, 0xFF, 0x1F, POLL_FF }, /* at90pwm2b/3b */
// { { 0x1E, 0x93, 0x89 }, 0xFF, 0x1F, POLL_FF }, /* mega8u2 */
{ { 0x1E, 0x93, 0x0D }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* tiny861a */
{ { 0x1E, 0x93, 0x0F }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega88pa */
{ { 0x1E, 0x93, 0x11 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* tiny88 */
{ { 0x1E, 0x93, 0x81 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* at90pwm2/3 */
{ { 0x1E, 0x93, 0x82 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* at90usb82 */
{ { 0x1E, 0x93, 0x83 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* at90pwm2b/3b */
{ { 0x1E, 0x93, 0x89 }, 0xFF, 0x1F, POLL_FF | POLL_UNTESTED }, /* mega8u2 */
// { { 0x1E, 0x94, 0x01 }, 0x60, ???, ??? }, /* mega161 */
// { { 0x1E, 0x94, 0x02 }, 0x64, ???, ??? }, /* mega163 */
{ { 0x1E, 0x94, 0x01 }, 0x60, 0x00, POLL_UNTESTED }, /* mega161 */
{ { 0x1E, 0x94, 0x02 }, 0x64, 0x00, POLL_UNTESTED }, /* mega163 */
{ { 0x1E, 0x94, 0x03 }, 0x74, 0x3F, POLL_FF }, /* mega16 */
// { { 0x1E, 0x94, 0x04 }, 0x63, 0x3F, POLL_FF }, /* mega162 */
// { { 0x1E, 0x94, 0x05 }, 0x78, 0x3F, POLL_FF }, /* mega169 */
{ { 0x1E, 0x94, 0x04 }, 0x63, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega162 */
{ { 0x1E, 0x94, 0x05 }, 0x78, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega169 */
{ { 0x1E, 0x94, 0x06 }, 0xFF, 0x3F, POLL_FF }, /* mega168 (no devcode) */
// { { 0x1E, 0x94, 0x0A }, 0x74, 0x3F, POLL_FF }, /* mega164pa (mega16 devcode) */
// { { 0x1E, 0x94, 0x0B }, 0xFF, 0x3F, POLL_FF }, /* mega168pa */
// { { 0x1E, 0x94, 0x0F }, 0xFF, 0x3F, POLL_FF }, /* mega164a */
// { { 0x1E, 0x94, 0x82 }, 0xFF, 0x3F, POLL_FF }, /* at90usb162 */
// { { 0x1E, 0x94, 0x88 }, 0xFF, 0x3F, POLL_FF }, /* mega16u4 */
// { { 0x1E, 0x94, 0x89 }, 0xFF, 0x3F, POLL_FF }, /* mega16u2 */
{ { 0x1E, 0x94, 0x0A }, 0x74, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega164pa (mega16 devcode) */
{ { 0x1E, 0x94, 0x0B }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega168pa */
{ { 0x1E, 0x94, 0x0F }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega164a */
{ { 0x1E, 0x94, 0x82 }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* at90usb162 */
{ { 0x1E, 0x94, 0x88 }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega16u4 */
{ { 0x1E, 0x94, 0x89 }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega16u2 */
{ { 0x1E, 0x95, 0x02 }, 0x72, 0x3F, POLL_FF }, /* mega32 */
// { { 0x1E, 0x95, 0x03 }, 0x75, 0x3F, POLL_FF }, /* mega329 (mega169 devcode) */
// { { 0x1E, 0x95, 0x04 }, 0x75, 0x3F, POLL_FF }, /* mega3290 (mega169 devcode) */
// { { 0x1E, 0x95, 0x05 }, 0x74, 0x3F, POLL_FF }, /* mega325 (mega16 devcode) */
// { { 0x1E, 0x95, 0x06 }, 0x74, 0x3F, POLL_FF }, /* mega3250 (mega16 devcode) */
// { { 0x1E, 0x95, 0x08 }, 0x74, 0x3F, POLL_FF }, /* mega324p (mega16 devcode) */
// { { 0x1E, 0x95, 0x0B }, 0x75, 0x3F, POLL_FF }, /* mega329p (mega169 devcode) */
// { { 0x1E, 0x95, 0x0C }, 0x75, 0x3F, POLL_FF }, /* mega3290p (mega169 devcode) */
{ { 0x1E, 0x95, 0x03 }, 0x75, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega329 (mega169 devcode) */
{ { 0x1E, 0x95, 0x04 }, 0x75, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega3290 (mega169 devcode) */
{ { 0x1E, 0x95, 0x05 }, 0x74, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega325 (mega16 devcode) */
{ { 0x1E, 0x95, 0x06 }, 0x74, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega3250 (mega16 devcode) */
{ { 0x1E, 0x95, 0x08 }, 0x74, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega324p (mega16 devcode) */
{ { 0x1E, 0x95, 0x0B }, 0x75, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega329p (mega169 devcode) */
{ { 0x1E, 0x95, 0x0C }, 0x75, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega3290p (mega169 devcode) */
{ { 0x1E, 0x95, 0x0F }, 0xFF, 0x3F, POLL_FF }, /* mega328p (no devcode) */
// { { 0x1E, 0x95, 0x11 }, 0x74, 0x3F, POLL_FF }, /* mega324pa (mega16 devcode) */
// { { 0x1E, 0x95, 0x15 }, 0xFF, 0x3F, POLL_FF }, /* mega324a */
// { { 0x1E, 0x95, 0x81 }, 0xFF, 0x3F, POLL_FF }, /* at90can32 */
{ { 0x1E, 0x95, 0x11 }, 0x74, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega324pa (mega16 devcode) */
{ { 0x1E, 0x95, 0x15 }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega324a */
{ { 0x1E, 0x95, 0x81 }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* at90can32 */
{ { 0x1E, 0x95, 0x87 }, 0xFF, 0x3F, POLL_FF }, /* mega32u4 (no devcode) */
// { { 0x1E, 0x95, 0x8A }, 0xFF, 0x3F, POLL_FF }, /* mega32u2 */
{ { 0x1E, 0x95, 0x8A }, 0xFF, 0x3F, POLL_FF | POLL_UNTESTED }, /* mega32u2 */
{ { 0x1E, 0x96, 0x02 }, 0x45, 0x7F, POLL_FF }, /* mega64 */
// { { 0x1E, 0x96, 0x03 }, 0x75, 0x7F, POLL_FF }, /* mega649 (mega169 devcode) */
// { { 0x1E, 0x96, 0x04 }, 0x75, 0x7F, POLL_FF }, /* mega6490 (mega169 devcode) */
// { { 0x1E, 0x96, 0x05 }, 0x74, 0x7F, POLL_FF }, /* mega645 (mega16 devcode) */
// { { 0x1E, 0x96, 0x06 }, 0x74, 0x7F, POLL_FF }, /* mega6450 (mega16 devcode) */
// { { 0x1E, 0x96, 0x08 }, 0xFF, 0x7F, POLL_FF }, /* mega640 */
{ { 0x1E, 0x96, 0x03 }, 0x75, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega649 (mega169 devcode) */
{ { 0x1E, 0x96, 0x04 }, 0x75, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega6490 (mega169 devcode) */
{ { 0x1E, 0x96, 0x05 }, 0x74, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega645 (mega16 devcode) */
{ { 0x1E, 0x96, 0x06 }, 0x74, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega6450 (mega16 devcode) */
{ { 0x1E, 0x96, 0x08 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega640 */
{ { 0x1E, 0x96, 0x09 }, 0x74, 0x7F, POLL_FF }, /* mega644a (mega16 devcode) */
{ { 0x1E, 0x96, 0x0A }, 0x74, 0x7F, POLL_FF }, /* mega644pa (mega16 devcode) */
// { { 0x1E, 0x96, 0x81 }, 0xFF, 0x7F, POLL_FF }, /* at90can64 */
// { { 0x1E, 0x96, 0x82 }, 0xFF, 0x7F, POLL_FF }, /* at90usb646/647 */
{ { 0x1E, 0x96, 0x81 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* at90can64 */
{ { 0x1E, 0x96, 0x82 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* at90usb646/647 */
{ { 0x1E, 0x97, 0x01 }, 0x41, 0x7F, POLL_7F | POLL_80 | POLL_FF }, /* mega103 */
{ { 0x1E, 0x97, 0x02 }, 0x43, 0x7F, POLL_FF }, /* mega128 */
// { { 0x1E, 0x97, 0x03 }, 0xFF, 0x7F, POLL_FF }, /* mega1280 */
// { { 0x1E, 0x97, 0x04 }, 0xFF, 0x7F, POLL_FF }, /* mega1281 */
// { { 0x1E, 0x97, 0x05 }, 0x74, 0x7F, POLL_FF }, /* mega1284p (mega16 devcode) */
// { { 0x1E, 0x97, 0x06 }, 0xFF, 0x7F, POLL_FF }, /* mega1284 */
// { { 0x1E, 0x97, 0x81 }, 0xFF, 0x7F, POLL_FF }, /* at90can128 */
// { { 0x1E, 0x97, 0x82 }, 0xFF, 0x7F, POLL_FF }, /* at90usb1286/1287 */
{ { 0x1E, 0x97, 0x03 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega1280 */
{ { 0x1E, 0x97, 0x04 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega1281 */
{ { 0x1E, 0x97, 0x05 }, 0x74, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega1284p (mega16 devcode) */
{ { 0x1E, 0x97, 0x06 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* mega1284 */
{ { 0x1E, 0x97, 0x81 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* at90can128 */
{ { 0x1E, 0x97, 0x82 }, 0xFF, 0x7F, POLL_FF | POLL_UNTESTED }, /* at90usb1286/1287 */
// { { 0x1E, 0x98, 0x01 }, 0xFF, ???, ??? }, /* mega2560 */
// { { 0x1E, 0x98, 0x02 }, 0xFF, ???, ??? }, /* mega2561 */
{ { 0x1E, 0x98, 0x01 }, 0xFF, 0x00, POLL_UNTESTED }, /* mega2560 */
{ { 0x1E, 0x98, 0x02 }, 0xFF, 0x00, POLL_UNTESTED }, /* mega2561 */
// { { 0x1E, 0xA7, 0x01 }, 0xFF, ???, ??? }, /* mega128rfa1 */
{ { 0x1E, 0xA7, 0x01 }, 0xFF, 0x00, POLL_UNTESTED }, /* mega128rfa1 */
};
#define EV_NONE 0x00
@ -438,12 +439,19 @@ static void cmdloop(void)
while (1) {
if (reset_state == STATE_IDLE) {
/* device not supported */
ser_send('!');
break;
} else if (reset_state == STATE_RESET_PROGMODE) {
/* device not supported */
if (device.flags & POLL_UNTESTED) {
reset_statemachine(EV_PROG_LEAVE);
/* untested device */
ser_send('!');
} else {
/* supported device */
ser_send('\r');
}
break;
}
}