add untested devices

This commit is contained in:
Olaf Rempel 2014-10-16 21:58:36 +02:00
parent ea3cae90ba
commit f13e4f97d5

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