Fix doc path
[opentx.git] / companion / targets / windows / avrdude.conf
blob31113b30bf43395d159de5d8cdcc0525a1ebc8d2
1 # $Id: avrdude.conf.in 991 2011-08-26 20:50:32Z joerg_wunsch $ -*- text -*-
3 # AVRDUDE Configuration File
5 # This file contains configuration data used by AVRDUDE which describes
6 # the programming hardware pinouts and also provides part definitions.
7 # AVRDUDE's "-C" command line option specifies the location of the
8 # configuration file.  The "-c" option names the programmer configuration
9 # which must match one of the entry's "id" parameter.  The "-p" option
10 # identifies which part AVRDUDE is going to be programming and must match
11 # one of the parts' "id" parameter.
13 # Possible entry formats are:
15 #   programmer
16 #       id       = <id1> [, <id2> [, <id3>] ...] ;  # <idN> are quoted strings
17 #       desc     = <description> ;                  # quoted string
18 #       type     = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
19 #                  stk600 | stk600pp | stk600hvsp |
20 #                  avr910 | butterfly | usbasp |
21 #                  jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
22 #                  jtagmkII_avr32 | jtagmkii_pdi |
23 #                  dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
24 #                  dragon_hvsp | dragon_pdi | arduino | wiring; # programmer type
25 #       baudrate = <num> ;                          # baudrate for avr910-programmer
26 #       vcc      = <num1> [, <num2> ... ] ;         # pin number(s)
27 #       reset    = <num> ;                          # pin number
28 #       sck      = <num> ;                          # pin number
29 #       mosi     = <num> ;                          # pin number
30 #       miso     = <num> ;                          # pin number
31 #       errled   = <num> ;                          # pin number
32 #       rdyled   = <num> ;                          # pin number
33 #       pgmled   = <num> ;                          # pin number
34 #       vfyled   = <num> ;                          # pin number
35 #                       usbvid   = <hexnum>;                                                                                            # USB VID (Vendor ID)
36 #       usbpid   = <hexnum>;                                                                                            #       USB PID (Product ID)
37 #       usbdev   = <interface>;                                                                                 # USB interface or other device info 
38 #       usbvendor = <vendorname>;                                                                               #       USB Vendor Name
39 #       usbproduct = <productname>;                                                                     # USB Product Name
40 #       usbsn    = <serialno>;                      # USB Serial Number
42 #        To invert a bit, use = ~ <num>, the spaces are important.
43 #     ;
45 #   part
46 #       id               = <id> ;                 # quoted string
47 #       desc             = <description> ;        # quoted string
48 #       has_jtag         = <yes/no> ;             # part has JTAG i/f
49 #       has_debugwire    = <yes/no> ;             # part has debugWire i/f
50 #       has_pdi          = <yes/no> ;             # part has PDI i/f
51 #       has_tpi          = <yes/no> ;             # part has TPI i/f
52 #       devicecode       = <num> ;            # deprecated, use stk500_devcode
53 #       stk500_devcode   = <num> ;                # numeric
54 #       avr910_devcode   = <num> ;                # numeric
55 #       signature        = <num> <num> <num> ;    # signature bytes
56 #       chip_erase_delay = <num> ;                # micro-seconds
57 #       reset            = dedicated | io;
58 #       retry_pulse      = reset | sck;
59 #       pgm_enable       = <instruction format> ;
60 #       chip_erase       = <instruction format> ;
61 #       chip_erase_delay = <num> ;                # chip erase delay (us)
62 #       # STK500 parameters (parallel programming IO lines)
63 #       pagel            = <num> ;                # pin name in hex, i.e., 0xD7
64 #       bs2              = <num> ;                # pin name in hex, i.e., 0xA0
65 #       serial           = <yes/no> ;             # can use serial downloading
66 #       parallel         = <yes/no/pseudo>;       # can use par. programming
67 #       # STK500v2 parameters, to be taken from Atmel's XML files
68 #       timeout          = <num> ;
69 #       stabdelay        = <num> ;
70 #       cmdexedelay      = <num> ;
71 #       synchloops       = <num> ;
72 #       bytedelay        = <num> ;
73 #       pollvalue        = <num> ;
74 #       pollindex        = <num> ;
75 #       predelay         = <num> ;
76 #       postdelay        = <num> ;
77 #       pollmethod       = <num> ;
78 #       mode             = <num> ;
79 #       delay            = <num> ;
80 #       blocksize        = <num> ;
81 #       readsize         = <num> ;
82 #       hvspcmdexedelay  = <num> ;
83 #       # STK500v2 HV programming parameters, from XML
84 #       pp_controlstack  = <num>, <num>, ...;   # PP only
85 #       hvsp_controlstack = <num>, <num>, ...;  # HVSP only
86 #       hventerstabdelay = <num>;
87 #       progmodedelay    = <num>;               # PP only
88 #       latchcycles      = <num>;
89 #       togglevtg        = <num>;
90 #       poweroffdelay    = <num>;
91 #       resetdelayms     = <num>;
92 #       resetdelayus     = <num>;
93 #       hvleavestabdelay = <num>;
94 #       resetdelay       = <num>;
95 #       synchcycles      = <num>;               # HVSP only
96 #       chiperasepulsewidth = <num>;            # PP only
97 #       chiperasepolltimeout = <num>;
98 #       chiperasetime    = <num>;               # HVSP only
99 #       programfusepulsewidth = <num>;          # PP only
100 #       programfusepolltimeout = <num>;
101 #       programlockpulsewidth = <num>;          # PP only
102 #       programlockpolltimeout = <num>;
103 #       # JTAG ICE mkII parameters, also from XML files
104 #       allowfullpagebitstream = <yes/no> ;
105 #       enablepageprogramming = <yes/no> ;
106 #       idr              = <num> ;                # IO addr of IDR (OCD) reg.
107 #       rampz            = <num> ;                # IO addr of RAMPZ reg.
108 #       spmcr            = <num> ;                # mem addr of SPMC[S]R reg.
109 #       eecr             = <num> ;                # mem addr of EECR reg.
110 #                                                 # (only when != 0x3c)
111 #       is_avr32         = <yes/no> ;             # AVR32 part
113 #       memory <memtype>
114 #           paged           = <yes/no> ;          # yes / no
115 #           size            = <num> ;             # bytes
116 #           page_size       = <num> ;             # bytes
117 #           num_pages       = <num> ;             # numeric
118 #           min_write_delay = <num> ;             # micro-seconds
119 #           max_write_delay = <num> ;             # micro-seconds
120 #           readback_p1     = <num> ;             # byte value
121 #           readback_p2     = <num> ;             # byte value
122 #           pwroff_after_write = <yes/no> ;       # yes / no
123 #           read            = <instruction format> ;
124 #           write           = <instruction format> ;
125 #           read_lo         = <instruction format> ;
126 #           read_hi         = <instruction format> ;
127 #           write_lo        = <instruction format> ;
128 #           write_hi        = <instruction format> ;
129 #           loadpage_lo     = <instruction format> ;
130 #           loadpage_hi     = <instruction format> ;
131 #           writepage       = <instruction format> ;
132 #         ;
133 #     ;
135 # If any of the above parameters are not specified, the default value
136 # of 0 is used for numerics or the empty string ("") for string
137 # values.  If a required parameter is left empty, AVRDUDE will
138 # complain.
140 # NOTES:
141 #   * 'devicecode' is the device code used by the STK500 (see codes 
142 #       listed below)
143 #   * Not all memory types will implement all instructions.
144 #   * AVR Fuse bits and Lock bits are implemented as a type of memory.
145 #   * Example memory types are:
146 #       "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
147 #       fuse), "signature", "calibration", "lock"
148 #   * The memory type specified on the avrdude command line must match
149 #     one of the memory types defined for the specified chip.
150 #   * The pwroff_after_write flag causes avrdude to attempt to
151 #     power the device off and back on after an unsuccessful write to
152 #     the affected memory area if VCC programmer pins are defined.  If
153 #     VCC pins are not defined for the programmer, a message
154 #     indicating that the device needs a power-cycle is printed out.
155 #     This flag was added to work around a problem with the
156 #     at90s4433/2333's; see the at90s4433 errata at:
158 #         http://www.atmel.com/atmel/acrobat/doc1280.pdf
160 # INSTRUCTION FORMATS
162 #    Instruction formats are specified as a comma seperated list of
163 #    string values containing information (bit specifiers) about each
164 #    of the 32 bits of the instruction.  Bit specifiers may be one of
165 #    the following formats:
167 #       '1'  = the bit is always set on input as well as output
169 #       '0'  = the bit is always clear on input as well as output
171 #       'x'  = the bit is ignored on input and output
173 #       'a'  = the bit is an address bit, the bit-number matches this bit
174 #              specifier's position within the current instruction byte
176 #       'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
177 #              is address bit 12 on input, a0 is address bit 0.
179 #       'i'  = the bit is an input data bit
181 #       'o'  = the bit is an output data bit
183 #    Each instruction must be composed of 32 bit specifiers.  The
184 #    instruction specification closely follows the instruction data
185 #    provided in Atmel's data sheets for their parts.
187 # See below for some examples.
190 # The following are STK500 part device codes to use for the
191 # "devicecode" field of the part.  These came from Atmel's software
192 # section avr061.zip which accompanies the application note
193 # AVR061 available from:
195 #      http://www.atmel.com/atmel/acrobat/doc2525.pdf
198 #define ATTINY10    0x10  /* the _old_ one that never existed! */
199 #define ATTINY11    0x11
200 #define ATTINY12    0x12
201 #define ATTINY15    0x13
202 #define ATTINY13    0x14
204 #define ATTINY22    0x20
205 #define ATTINY26    0x21
206 #define ATTINY28    0x22
207 #define ATTINY2313  0x23
209 #define AT90S1200   0x33
211 #define AT90S2313   0x40
212 #define AT90S2323   0x41
213 #define AT90S2333   0x42
214 #define AT90S2343   0x43
216 #define AT90S4414   0x50
217 #define AT90S4433   0x51
218 #define AT90S4434   0x52
219 #define ATMEGA48    0x59
221 #define AT90S8515   0x60
222 #define AT90S8535   0x61
223 #define AT90C8534   0x62
224 #define ATMEGA8515  0x63
225 #define ATMEGA8535  0x64
227 #define ATMEGA8     0x70
228 #define ATMEGA88    0x73
229 #define ATMEGA168   0x86
231 #define ATMEGA161   0x80
232 #define ATMEGA163   0x81
233 #define ATMEGA16    0x82
234 #define ATMEGA162   0x83
235 #define ATMEGA169   0x84
237 #define ATMEGA323   0x90
238 #define ATMEGA32    0x91
240 #define ATMEGA64    0xA0
242 #define ATMEGA103   0xB1
243 #define ATMEGA128   0xB2
244 #define AT90CAN128  0xB3
245 #define AT90CAN64   0xB3
246 #define AT90CAN32   0xB3
248 #define AT86RF401   0xD0
250 #define AT89START   0xE0
251 #define AT89S51     0xE0
252 #define AT89S52     0xE1
254 # The following table lists the devices in the original AVR910
255 # appnote:
256 # |Device |Signature | Code |
257 # +-------+----------+------+
258 # |tiny12 | 1E 90 05 | 0x55 |
259 # |tiny15 | 1E 90 06 | 0x56 |
260 # |       |          |      |
261 # | S1200 | 1E 90 01 | 0x13 |
262 # |       |          |      |
263 # | S2313 | 1E 91 01 | 0x20 |
264 # | S2323 | 1E 91 02 | 0x48 |
265 # | S2333 | 1E 91 05 | 0x34 |
266 # | S2343 | 1E 91 03 | 0x4C |
267 # |       |          |      |
268 # | S4414 | 1E 92 01 | 0x28 |
269 # | S4433 | 1E 92 03 | 0x30 |
270 # | S4434 | 1E 92 02 | 0x6C |
271 # |       |          |      |
272 # | S8515 | 1E 93 01 | 0x38 |
273 # | S8535 | 1E 93 03 | 0x68 |
274 # |       |          |      |
275 # |mega32 | 1E 95 01 | 0x72 |
276 # |mega83 | 1E 93 05 | 0x65 |
277 # |mega103| 1E 97 01 | 0x41 |
278 # |mega161| 1E 94 01 | 0x60 |
279 # |mega163| 1E 94 02 | 0x64 |
281 # Appnote AVR109 also has a table of AVR910 device codes, which
282 # lists:
283 # dev         avr910   signature
284 # ATmega8     0x77     0x1E 0x93 0x07
285 # ATmega8515  0x3B     0x1E 0x93 0x06
286 # ATmega8535  0x6A     0x1E 0x93 0x08
287 # ATmega16    0x75     0x1E 0x94 0x03
288 # ATmega162   0x63     0x1E 0x94 0x04
289 # ATmega163   0x66     0x1E 0x94 0x02
290 # ATmega169   0x79     0x1E 0x94 0x05
291 # ATmega32    0x7F     0x1E 0x95 0x02
292 # ATmega323   0x73     0x1E 0x95 0x01
293 # ATmega64    0x46     0x1E 0x96 0x02
294 # ATmega128   0x44     0x1E 0x97 0x02
296 # These codes refer to "BOOT" device codes which are apparently
297 # different than standard device codes, for whatever reasons
298 # (often one above the standard code).
300 # There are several extended versions of AVR910 implementations around
301 # in the Internet.  These add the following codes (only devices that
302 # actually exist are listed):
304 # ATmega8515    0x3A
305 # ATmega128     0x43
306 # ATmega64      0x45
307 # ATtiny26      0x5E
308 # ATmega8535    0x69
309 # ATmega32      0x72
310 # ATmega16      0x74
311 # ATmega8       0x76
312 # ATmega169     0x78
315 # Overall avrdude defaults
317 default_parallel   = "lpt1";
318 default_serial     = "com1";
319 # default_bitclock = 2.5
323 # PROGRAMMER DEFINITIONS
326 # http://wiring.org.co/
327 # Basically STK500v2 protocol, with some glue to trigger the
328 # bootloader.
329 programmer
330   id    = "wiring";
331   desc  = "Wiring";
332   type  = wiring;
335 programmer
336   id    = "arduino";
337   desc  = "Arduino";
338   type  = arduino;
340 # The avrftdi driver type will interface with the chips on these programmers:
342 # http://real.kiev.ua/old/avreal/en/adapters
343 # http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml
344 # http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html
345 # http://www.ethernut.de/en/hardware/turtelizer/index.html
346 # http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html
347 # http://dangerousprototypes.com/docs/FT2232_breakout_board
348 # http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H
349 # http://flashrom.org/FT2232SPI_Programmer
350 # http://www.glynstore.com/products/FTDI-UM232H-High%252dSpeed-USB-to-UART-Development-Module.html
352 # The drivers will look for a specific device and use the first one found.
353 # If you have mulitple devices, then look for unique information (like SN)
354 # And fill that in here.
356 programmer
357   id    = "avrftdi";
358   desc  = "FT2232D based generic programmer";
359   type  = avrftdi;
360   usbvid     = 0x0403;
361   usbpid     = 0x6010;
362   usbvendor  = "";
363   usbproduct = "";
364   usbdev     = "A";
365   usbsn      = "";
366 #ISP-signals - lower ACBUS-Nibble (default)
367   reset  = 4;
368   sck    = 1;
369   mosi   = 2;
370   miso   = 3;
371 #LED SIGNALs - higher ACBUS-Nibble
372 #  errled = 5;
373 #  rdyled = 6;
374 #  pgmled = 7;
375 #  vfyled = 8;
376 #Buffer Signal - ADBUS - Nibble
377 #  buff   = 9;
379 # This is an implementation of the above with a buffer IC (74AC244) and
380 # 4 LEDs directly attached, active low. The buff and reset pins are
381 # understood (by avrdude) to be active low, so there's no
382 # need to invert the bits.
383 programmer
384   id    = "2232HIO";
385   desc  = "FT2232H based generic programmer";
386   type  = avrftdi;
387   usbvid     = 0x0403;
388 # Note: This PID is reserved for generic H devices and 
389 # should be programmed into the EEPROM
390 #  usbpid     = 0x8A48;
391    usbpid    = 0x6010;
392   usbdev = "A";
393   usbvendor  = "";
394   usbproduct = "";
395   usbsn      = "";
396 #ISP-signals 
397   reset  = 4;
398   sck    = 1;
399   mosi   = 2;
400   miso   = 3;
401   buff   = 5;
402 #LED SIGNALs 
403   errled = ~ 12;
404   rdyled = ~ 15;
405   pgmled = ~ 14;
406   vfyled = ~ 13;
409 # UM232H module from FTDI and Glyn.com.au
410 # J1: Connect pin 2 and 3 for USB power.
411 # J2: Connect pin 2 and 3 for USB power.
412 # J2: Pin 7 is SCK
413 #   : Pin 8 is MOSI
414 #   : Pin 9 is MISO
415 #       : Pin 11 is RST
416 #   : Pin 6 in ground
417 # Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get
418 # a 16MHz Atmega1280 to program reliably.  The 232H is conveniently 5V tolerant.
419 programmer
420   id    = "UM232H";
421   desc  = "FT232H based module from FTDI and Glyn.com.au";
422   type  = avrftdi;
423   usbvid     = 0x0403;
424 # Note: This PID is reserved for generic 232H devices and 
425 # should be programmed into the EEPROM
426    usbpid    = 0x6014;
427   usbdev = "A";
428   usbvendor  = "";
429   usbproduct = "";
430   usbsn      = "";
431 #ISP-signals 
432   sck    = 1;
433   mosi   = 2;
434   miso   = 3;
435   reset  = 5;
438 programmer
439   id    = "jtagkey";
440   desc  = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2";
441   type  = avrftdi;
442   usbvid     = 0x0403;
443 # Note: This PID is used in all JTAGKey variants
444   usbpid    = 0xCFF8;
445   usbdev = "A";
446   usbvendor  = "";
447   usbproduct = "";
448   usbsn      = "";
449 #ISP-signals => 20 - Pin connector on JTAGKey
450   reset  = 4; # TMS 7 violet
451   sck    = 1; # TCK 9 white
452   mosi   = 2; # TDI 5 green
453   miso   = 3; # TDO 13 orange
454   buff   = 5;
455 # VTG           VREF 1 brown with red tip
456 # GND           GND 20 black
457 # The colors are on the 20 pin breakout cable
458 # from Amontec
461 programmer
462   id    = "avrisp";
463   desc  = "Atmel AVR ISP";
464   type  = stk500;
467 programmer
468   id    = "avrispv2";
469   desc  = "Atmel AVR ISP V2";
470   type  =  stk500v2;
473 programmer
474   id    = "avrispmkII";
475   desc  = "Atmel AVR ISP mkII";
476   type  =  stk500v2;
479 programmer
480   id    = "avrisp2";
481   desc  = "Atmel AVR ISP mkII";
482   type  =  stk500v2;
485 programmer
486   id    = "buspirate";
487   desc  = "The Bus Pirate";
488   type  = buspirate;
491 # This is supposed to be the "default" STK500 entry.
492 # Attempts to select the correct firmware version
493 # by probing for it.  Better use one of the entries
494 # below instead.
495 programmer
496   id    = "stk500";
497   desc  = "Atmel STK500";
498   type  = stk500generic;
501 programmer
502   id    = "stk500v1";
503   desc  = "Atmel STK500 Version 1.x firmware";
504   type  = stk500;
507 programmer
508   id    = "mib510";
509   desc  = "Crossbow MIB510 programming board";
510   type  = stk500;
513 programmer
514   id    = "stk500v2";
515   desc  = "Atmel STK500 Version 2.x firmware";
516   type  = stk500v2;
519 programmer
520   id    = "stk500pp";
521   desc  = "Atmel STK500 V2 in parallel programming mode";
522   type  = stk500pp;
525 programmer
526   id    = "stk500hvsp";
527   desc  = "Atmel STK500 V2 in high-voltage serial programming mode";
528   type  = stk500hvsp;
531 programmer
532   id    = "stk600";
533   desc  = "Atmel STK600";
534   type  = stk600;
537 programmer
538   id    = "stk600pp";
539   desc  = "Atmel STK600 in parallel programming mode";
540   type  = stk600pp;
543 programmer
544   id    = "stk600hvsp";
545   desc  = "Atmel STK600 in high-voltage serial programming mode";
546   type  = stk600hvsp;
549 programmer
550   id    = "avr910";
551   desc  = "Atmel Low Cost Serial Programmer";
552   type  = avr910;
555 programmer
556   id    = "usbasp";
557   desc  = "USBasp, http://www.fischl.de/usbasp/";
558   type  = usbasp;
561 programmer
562   id    = "usbtiny";
563   desc  = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/";
564   type  = usbtiny;
567 programmer
568   id    = "butterfly";
569   desc  = "Atmel Butterfly Development Board";
570   type  = butterfly;
573 programmer
574   id    = "avr109";
575   desc  = "Atmel AppNote AVR109 Boot Loader";
576   type  = butterfly;
579 programmer
580   id    = "avr911";
581   desc  = "Atmel AppNote AVR911 AVROSP";
582   type  = butterfly;
585 # suggested in http://forum.mikrokopter.de/topic-post48317.html
586 programmer
587   id    = "mkbutterfly";
588   desc  = "Mikrokopter.de Butterfly";
589   type  = butterfly_mk;
592 programmer
593   id    = "butterfly_mk";
594   desc  = "Mikrokopter.de Butterfly";
595   type  = butterfly_mk;
598 programmer
599   id    = "jtagmkI";
600   desc  = "Atmel JTAG ICE (mkI)";
601   baudrate = 115200;    # default is 115200
602   type  = jtagmki;
605 # easier to type
606 programmer
607   id    = "jtag1";
608   desc  = "Atmel JTAG ICE (mkI)";
609   baudrate = 115200;    # default is 115200
610   type  = jtagmki;
613 # easier to type
614 programmer
615   id    = "jtag1slow";
616   desc  = "Atmel JTAG ICE (mkI)";
617   baudrate = 19200;
618   type  = jtagmki;
621 programmer
622   id    = "jtagmkII";
623   desc  = "Atmel JTAG ICE mkII";
624   baudrate = 19200;    # default is 19200
625   type  = jtagmkii;
628 # easier to type
629 programmer
630   id    = "jtag2slow";
631   desc  = "Atmel JTAG ICE mkII";
632   baudrate = 19200;    # default is 19200
633   type  = jtagmkii;
636 # JTAG ICE mkII @ 115200 Bd
637 programmer
638   id    = "jtag2fast";
639   desc  = "Atmel JTAG ICE mkII";
640   baudrate = 115200;
641   type  = jtagmkii;
644 # make the fast one the default, people will love that
645 programmer
646   id    = "jtag2";
647   desc  = "Atmel JTAG ICE mkII";
648   baudrate = 115200;
649   type  = jtagmkii;
652 # JTAG ICE mkII in ISP mode
653 programmer
654   id    = "jtag2isp";
655   desc  = "Atmel JTAG ICE mkII in ISP mode";
656   baudrate = 115200;
657   type  = jtagmkii_isp;
660 # JTAG ICE mkII in debugWire mode
661 programmer
662   id    = "jtag2dw";
663   desc  = "Atmel JTAG ICE mkII in debugWire mode";
664   baudrate = 115200;
665   type  = jtagmkii_dw;
668 # JTAG ICE mkII in AVR32 mode
669 programmer
670   id    = "jtagmkII_avr32";
671   desc  = "Atmel JTAG ICE mkII im AVR32 mode";
672   baudrate = 115200;
673   type  = jtagmkii_avr32;
676 # JTAG ICE mkII in AVR32 mode
677 programmer
678   id    = "jtag2avr32";
679   desc  = "Atmel JTAG ICE mkII im AVR32 mode";
680   baudrate = 115200;
681   type  = jtagmkii_avr32;
684 # JTAG ICE mkII in PDI mode
685 programmer
686   id    = "jtag2pdi";
687   desc  = "Atmel JTAG ICE mkII PDI mode";
688   baudrate = 115200;
689   type  = jtagmkii_pdi;
692 # AVR Dragon in JTAG mode
693 programmer
694   id    = "dragon_jtag";
695   desc  = "Atmel AVR Dragon in JTAG mode";
696   baudrate = 115200;
697   type  = dragon_jtag;
700 # AVR Dragon in ISP mode
701 programmer
702   id    = "dragon_isp";
703   desc  = "Atmel AVR Dragon in ISP mode";
704   baudrate = 115200;
705   type  = dragon_isp;
708 # AVR Dragon in PP mode
709 programmer
710   id    = "dragon_pp";
711   desc  = "Atmel AVR Dragon in PP mode";
712   baudrate = 115200;
713   type  = dragon_pp;
716 # AVR Dragon in HVSP mode
717 programmer
718   id    = "dragon_hvsp";
719   desc  = "Atmel AVR Dragon in HVSP mode";
720   baudrate = 115200;
721   type  = dragon_hvsp;
724 # AVR Dragon in debugWire mode
725 programmer
726   id    = "dragon_dw";
727   desc  = "Atmel AVR Dragon in debugWire mode";
728   baudrate = 115200;
729   type  = dragon_dw;
732 # AVR Dragon in PDI mode
733 programmer
734   id    = "dragon_pdi";
735   desc  = "Atmel AVR Dragon in PDI mode";
736   baudrate = 115200;
737   type  = dragon_pdi;
740 programmer
741   id    = "pavr";
742   desc  = "Jason Kyle's pAVR Serial Programmer";
743   type  = avr910;
746 # Parallel port programmers.
748 programmer
749   id    = "bsd";
750   desc  = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/";
751   type  = par;
752   vcc   = 2, 3, 4, 5;
753   reset = 7;
754   sck   = 8;
755   mosi  = 9;
756   miso  = 10;
759 programmer
760   id    = "stk200";
761   desc  = "STK200";
762   type  = par;
763   buff  = 4, 5;
764   sck   = 6;
765   mosi  = 7;
766   reset = 9;
767   miso  = 10;
770 # The programming dongle used by the popular Ponyprog
771 # utility.  It is almost similar to the STK200 one,
772 # except that there is a LED indicating that the
773 # programming is currently in progress.
775 programmer
776   id    = "pony-stk200";
777   desc  = "Pony Prog STK200";
778   type  = par;
779   buff  = 4, 5;
780   sck   = 6;
781   mosi  = 7;
782   reset = 9;
783   miso  = 10;
784   pgmled = 8; 
787 programmer
788   id    = "dt006";
789   desc  = "Dontronics DT006";
790   type  = par;
791   reset = 4;
792   sck   = 5;
793   mosi  = 2;
794   miso  = 11;
797 programmer
798   id    = "bascom";
799   desc  = "Bascom SAMPLE programming cable";
800   type  = par;
801   reset = 4;
802   sck   = 5;
803   mosi  = 2;
804   miso  = 11;
807 programmer
808   id     = "alf";
809   desc   = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/";
810   type   = par;
811   vcc    = 2, 3, 4, 5;
812   buff   = 6;
813   reset  = 7;
814   sck    = 8;
815   mosi   = 9;
816   miso   = 10;
817   errled = 1;
818   rdyled = 14;
819   pgmled = 16;
820   vfyled = 17;
823 programmer
824   id    = "sp12";
825   desc  = "Steve Bolt's Programmer";
826   type  = par;
827   vcc   = 4,5,6,7,8;
828   reset = 3;
829   sck   = 2;
830   mosi  = 9;
831   miso  = 11;
834 programmer
835   id     = "picoweb";
836   desc   = "Picoweb Programming Cable, http://www.picoweb.net/";
837   type   = par;
838   reset  = 2;
839   sck    = 3;
840   mosi   = 4;
841   miso   = 13;
844 programmer
845   id    = "abcmini";
846   desc  = "ABCmini Board, aka Dick Smith HOTCHIP";
847   type  = par;
848   reset = 4;
849   sck   = 3;
850   mosi  = 2;
851   miso  = 10;
854 programmer
855   id    = "futurlec";
856   desc  = "Futurlec.com programming cable.";
857   type  = par;
858   reset = 3;
859   sck   = 2;
860   mosi  = 1;
861   miso  = 10;
865 # From the contributor of the "xil" jtag cable:
866 # The "vcc" definition isn't really vcc (the cable gets its power from
867 # the programming circuit) but is necessary to switch one of the
868 # buffer lines (trying to add it to the "buff" lines doesn't work in 
869 # avrdude versions before 5.5j).
870 # With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK
871 # to SCK (plus vcc/gnd of course)
872 programmer
873   id    = "xil";
874   desc  = "Xilinx JTAG cable";
875   type  = par;
876   mosi  = 2;
877   sck   = 3;
878   reset = 4;
879   buff  = 5;
880   miso  = 13;
881   vcc   = 6;
885 programmer
886   id = "dapa";
887   desc = "Direct AVR Parallel Access cable";
888   type = par;
889   vcc   = 3;
890   reset = 16;
891   sck = 1;
892   mosi = 2;
893   miso = 11;
896 programmer
897   id    = "atisp";
898   desc  = "AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> micro-research.co.th";
899   type  = par;
900   reset = ~6;
901   sck   = ~8;
902   mosi  = ~7;
903   miso  = ~10;
906 programmer
907   id    = "ere-isp-avr";
908   desc  = "ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>";
909   type  = par;
910   reset = ~4;
911   sck   = 3;
912   mosi  = 2;
913   miso  = 10;
916 programmer
917   id    = "blaster";
918   desc  = "Altera ByteBlaster";
919   type  = par;
920   sck   = 2;
921   miso  = 11;
922   reset = 3;
923   mosi  = 8;
924   buff  = 14;
927 # It is almost same as pony-stk200, except vcc on pin 5 to auto
928 # disconnect port (download on http://electropol.free.fr)
929 programmer
930   id    = "frank-stk200";
931   desc  = "Frank STK200";
932   type  = par;
933   vcc   = 5;
934   sck   = 6;
935   mosi  = 7;
936   reset = 9;
937   miso  = 10;
938   pgmled = 8;
941 # The AT98ISP Cable is a simple parallel dongle for AT89 family.
942 # http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877
943 programmer
944 id = "89isp";
945 desc = "Atmel at89isp cable";
946 type = par;
947 reset = 17;
948 sck = 1;
949 mosi = 2;
950 miso = 10;
955 # some ultra cheap programmers use bitbanging on the 
956 # serialport.
958 # PC - DB9 - Pins for RS232:
960 # GND   5   -- |O
961 #              |   O| <-   9   RI
962 # DTR   4   <- |O   |
963 #              |   O| <-   8   CTS
964 # TXD   3   <- |O   |
965 #              |   O| ->   7   RTS
966 # RXD   2   -> |O   |
967 #              |   O| <-   6   DSR
968 # DCD   1   -> |O
970 # Using RXD is currently not supported.
971 # Using RI is not supported under Win32 but is supported under Posix.
973 # serial ponyprog design (dasa2 in uisp)
974 # reset=!txd sck=rts mosi=dtr miso=cts
976 programmer
977   id    = "ponyser";
978   desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
979   type  = serbb;
980   reset = ~3;
981   sck   = 7;
982   mosi  = 4;
983   miso  = 8;
986 # Same as above, different name
987 # reset=!txd sck=rts mosi=dtr miso=cts
989 programmer
990   id    = "siprog";
991   desc  = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>";
992   type  = serbb;
993   reset = ~3;
994   sck   = 7;
995   mosi  = 4;
996   miso  = 8;
999 # unknown (dasa in uisp)
1000 # reset=rts sck=dtr mosi=txd miso=cts
1002 programmer
1003   id    = "dasa";
1004   desc  = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
1005   type  = serbb;
1006   reset = 7;
1007   sck   = 4;
1008   mosi  = 3;
1009   miso  = 8;
1012 # unknown (dasa3 in uisp)
1013 # reset=!dtr sck=rts mosi=txd miso=cts
1015 programmer
1016   id    = "dasa3";
1017   desc  = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
1018   type  = serbb;
1019   reset = ~4;
1020   sck   = 7;
1021   mosi  = 3;
1022   miso  = 8;
1025 # C2N232i (jumper configuration "auto")
1026 # reset=dtr sck=!rts mosi=!txd miso=!cts
1028 programmer
1029   id    = "c2n232i";
1030   desc  = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts";
1031   type  = serbb;
1032   reset = 4;
1033   sck   = ~7;
1034   mosi  = ~3;
1035   miso  = ~8;
1039 # PART DEFINITIONS
1042 #------------------------------------------------------------
1043 # ATtiny11
1044 #------------------------------------------------------------
1046 # This is an HVSP-only device.
1048 part
1049     id                  = "t11";
1050     desc                = "ATtiny11";
1051     stk500_devcode      = 0x11;
1052     signature           = 0x1e 0x90 0x04;
1053     chip_erase_delay    = 20000;
1055     timeout             = 200;
1056     hvsp_controlstack     =
1057         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
1058         0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
1059         0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
1060         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
1061     hventerstabdelay    = 100;
1062     progmodedelay       = 0;
1063     hvspcmdexedelay     = 0;
1064     synchcycles         = 6;
1065     latchcycles         = 1;
1066     togglevtg           = 1;
1067     poweroffdelay       = 25;
1068     resetdelayms        = 0;
1069     resetdelayus        = 50;
1070     hvleavestabdelay    = 100;
1071     resetdelay          = 25;
1072     chiperasepolltimeout = 40;
1073     chiperasetime       = 0;
1074     programfusepolltimeout = 25;
1075     programlockpolltimeout = 25;
1077     memory "eeprom"
1078         size            = 64;
1079         blocksize       = 64;
1080         readsize        = 256;
1081         delay           = 5;
1082     ;
1084     memory "flash"
1085         size            = 1024;
1086         blocksize       = 128;
1087         readsize        = 256;
1088         delay           = 3;
1089     ;
1091     memory "signature"
1092         size            = 3;
1093     ;
1095     memory "lock"
1096         size            = 1;
1097     ;
1099     memory "calibration"
1100         size            = 1;
1101     ;
1103     memory "fuse"
1104         size            = 1;
1105     ;
1108 #------------------------------------------------------------
1109 # ATtiny12
1110 #------------------------------------------------------------
1112 part
1113     id                  = "t12";
1114     desc                = "ATtiny12";
1115     stk500_devcode      = 0x12;
1116     avr910_devcode      = 0x55;
1117     signature           = 0x1e 0x90 0x05;
1118     chip_erase_delay    = 20000;
1119     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
1120                           "x x x x  x x x x   x x x x  x x x x";
1122     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
1123                           "x x x x  x x x x   x x x x  x x x x";
1125     timeout             = 200;
1126     stabdelay           = 100;
1127     cmdexedelay         = 25;
1128     synchloops          = 32;
1129     bytedelay           = 0;
1130     pollindex           = 3;
1131     pollvalue           = 0x53;
1132     predelay            = 1;
1133     postdelay           = 1;
1134     pollmethod          = 0;
1136     hvsp_controlstack   =
1137         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
1138         0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
1139         0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
1140         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
1141     hventerstabdelay    = 100;
1142     hvspcmdexedelay     = 0;
1143     synchcycles         = 6;
1144     latchcycles         = 1;
1145     togglevtg           = 1;
1146     poweroffdelay       = 25;
1147     resetdelayms        = 0;
1148     resetdelayus        = 50;
1149     hvleavestabdelay    = 100;
1150     resetdelay          = 25;
1151     chiperasepolltimeout = 40;
1152     chiperasetime       = 0;
1153     programfusepolltimeout = 25;
1154     programlockpolltimeout = 25;
1156     memory "eeprom"
1157         size            = 64;
1158         min_write_delay = 9000;
1159         max_write_delay = 20000;
1160         readback_p1     = 0xff;
1161         readback_p2     = 0xff;
1162         read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
1163                           "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
1165         write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
1166                           "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
1168         mode            = 0x04;
1169         delay           = 8;
1170         blocksize       = 64;
1171         readsize        = 256;
1172     ;
1174     memory "flash"
1175         size            = 1024;
1176         min_write_delay = 4500;
1177         max_write_delay = 20000;
1178         readback_p1     = 0xff;
1179         readback_p2     = 0xff;
1180         read_lo         = "  0  0  1  0   0  0  0  0",
1181                           "  x  x  x  x   x  x  x a8",
1182                           " a7 a6 a5 a4  a3 a2 a1 a0",
1183                           "  o  o  o  o   o  o  o  o";
1185         read_hi         = "  0  0  1  0   1  0  0  0",
1186                           "  x  x  x  x   x  x  x a8",
1187                           " a7 a6 a5 a4  a3 a2 a1 a0",
1188                           "  o  o  o  o   o  o  o  o";
1190         write_lo        = "  0  1  0  0   0  0  0  0",
1191                           "  x  x  x  x   x  x  x a8",
1192                           " a7 a6 a5 a4  a3 a2 a1 a0",
1193                           "  i  i  i  i   i  i  i  i";
1195         write_hi        = "  0  1  0  0   1  0  0  0",
1196                           "  x  x  x  x   x  x  x a8",
1197                           " a7 a6 a5 a4  a3 a2 a1 a0",
1198                           "  i  i  i  i   i  i  i  i";
1200         mode            = 0x04;
1201         delay           = 5;
1202         blocksize       = 128;
1203         readsize        = 256;
1204     ;
1206     memory "signature"
1207         size            = 3;
1208         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
1209                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
1210     ;
1212     memory "lock"
1213         size            = 1;
1214         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
1215                           "x  x  x  x   x  x  x  x    x x x x  x o o x";
1217         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
1218                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
1219         min_write_delay = 9000;
1220         max_write_delay = 9000;
1221     ;
1223     memory "calibration"
1224         size            = 1;
1225         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
1226                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
1227     ;
1229     memory "fuse"
1230         size            = 1;
1231         read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
1232                           "x  x  x  x   x  x  x  x    o o o o  o o o o";
1234         write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
1235                           "x  x  x  x   x  x  x  x    i i i i  i i i i";
1236         min_write_delay = 9000;
1237         max_write_delay = 9000;
1238     ;
1241 #------------------------------------------------------------
1242 # ATtiny13
1243 #------------------------------------------------------------
1245 part
1246     id                  = "t13";
1247     desc                = "ATtiny13";
1248      has_debugwire = yes;
1249      flash_instr   = 0xB4, 0x0E, 0x1E;
1250      eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
1251                      0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
1252                      0x99, 0xE1, 0xBB, 0xAC;
1253     stk500_devcode      = 0x14;
1254     signature           = 0x1e 0x90 0x07;
1255     chip_erase_delay    = 4000;
1256     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
1257                           "x x x x  x x x x   x x x x  x x x x";
1259     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
1260                           "x x x x  x x x x   x x x x  x x x x";
1262     timeout             = 200;
1263     stabdelay           = 100;
1264     cmdexedelay         = 25;
1265     synchloops          = 32;
1266     bytedelay           = 0;
1267     pollindex           = 3;
1268     pollvalue           = 0x53;
1269     predelay            = 1;
1270     postdelay           = 1;
1271     pollmethod          = 1;
1273     hvsp_controlstack     =
1274         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
1275         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
1276         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
1277         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
1278     hventerstabdelay    = 100;
1279     progmodedelay       = 0;
1280     hvspcmdexedelay     = 0;
1281     synchcycles         = 6;
1282     latchcycles         = 1;
1283     togglevtg           = 1;
1284     poweroffdelay       = 25;
1285     resetdelayms        = 0;
1286     resetdelayus        = 90;
1287     hvleavestabdelay    = 100;
1288     resetdelay          = 25;
1289     chiperasepolltimeout = 40;
1290     chiperasetime       = 0;
1291     programfusepolltimeout = 25;
1292     programlockpolltimeout = 25;
1294     memory "eeprom"
1295         size            = 64;
1296         page_size       = 4;
1297         min_write_delay = 4000;
1298         max_write_delay = 4000;
1299         readback_p1     = 0xff;
1300         readback_p2     = 0xff;
1301         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
1302                           "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
1304         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
1305                           "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
1307         loadpage_lo     = "  1   1   0   0      0   0   0   1",
1308                           "  0   0   0   0      0   0   0   0",
1309                           "  0   0   0   0      0   0  a1  a0",
1310                           "  i   i   i   i      i   i   i   i";
1312         writepage       = "  1   1   0   0      0   0   1   0",
1313                           "  0   0   x   x      x   x   x   x",
1314                           "  x   x  a5  a4     a3  a2   0   0",
1315                           "  x   x   x   x      x   x   x   x";
1317         mode            = 0x41;
1318         delay           = 5;
1319         blocksize       = 4;
1320         readsize        = 256;
1321     ;
1323     memory "flash"
1324         paged           = yes;
1325         size            = 1024;
1326         page_size       = 32;
1327         num_pages       = 32;
1328         min_write_delay = 4500;
1329         max_write_delay = 4500;
1330         readback_p1     = 0xff;
1331         readback_p2     = 0xff;
1332         read_lo         = "  0  0  1  0   0  0  0  0",
1333                           "  0  0  0  0   0  0  0 a8",
1334                           " a7 a6 a5 a4  a3 a2 a1 a0",
1335                           "  o  o  o  o   o  o  o  o";
1337         read_hi         = "  0  0  1  0   1  0  0  0",
1338                           "  0  0  0  0   0  0  0 a8",
1339                           " a7 a6 a5 a4  a3 a2 a1 a0",
1340                           "  o  o  o  o   o  o  o  o";
1342         loadpage_lo     = "  0  1  0  0   0  0  0  0",
1343                           "  0  0  0  x   x  x  x  x",
1344                           "  x  x  x  x  a3 a2 a1 a0",
1345                           "  i  i  i  i   i  i  i  i";
1347         loadpage_hi     = "  0  1  0  0   1  0  0  0",
1348                           "  0  0  0  x   x  x  x  x",
1349                           "  x  x  x  x  a3 a2 a1 a0",
1350                           "  i  i  i  i   i  i  i  i";
1352         writepage       = "  0  1  0  0   1  1  0  0",
1353                           "  0  0  0  0   0  0  0 a8",
1354                           " a7 a6 a5 a4   x  x  x  x",
1355                           "  x  x  x  x   x  x  x  x";
1357         mode            = 0x41;
1358         delay           = 6;
1359         blocksize       = 32;
1360         readsize        = 256;
1361     ;
1363     memory "signature"
1364         size            = 3;
1365         read            = "0  0  1  1   0  0  0  0    0 0 0 x  x x x x",
1366                           "x  x  x  x   x  x a1 a0    o o o o  o o o o";
1367     ;
1369     memory "lock"
1370         size            = 1;
1371         min_write_delay = 4500;
1372         max_write_delay = 4500;
1374         read            = "0  1  0  1   1  0  0  0    0 0 0 0  0 0 0 0",
1375                           "x  x  x  x   x  x  x  x    x x o o  o o o o";
1377         write           = "1  0  1  0   1  1  0  0    1 1 1 x  x x x x",
1378                           "x  x  x  x   x  x  x  x    1 1 i i  i i i i";
1379     ;
1381     memory "calibration"
1382         size            = 2;
1383         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
1384                           "0  0  0  0   0  0  0 a0    o o o o  o o o o";
1385     ;
1387     memory "lfuse"
1388         size            = 1;
1389         min_write_delay = 4500;
1390         max_write_delay = 4500;
1392         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
1393                           "x x x x  x x x x  i i i i  i i i i";
1395         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
1396                           "x x x x  x x x x  o o o o  o o o o";
1397       ;
1399     memory "hfuse"
1400         size            = 1;
1401         min_write_delay = 4500;
1402         max_write_delay = 4500;
1404         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
1405                           "x x x x  x x x x  i i i i  i i i i";
1407         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
1408                           "x x x x  x x x x  o o o o  o o o o";
1409       ;
1414 #------------------------------------------------------------
1415 # ATtiny15
1416 #------------------------------------------------------------
1418 part
1419     id                  = "t15";
1420     desc                = "ATtiny15";
1421     stk500_devcode      = 0x13;
1422     avr910_devcode      = 0x56;
1423     signature           = 0x1e 0x90 0x06;
1424     chip_erase_delay    = 8200;
1425     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
1426                           "x x x x  x x x x   x x x x  x x x x";
1428     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
1429                           "x x x x  x x x x   x x x x  x x x x";
1431     timeout             = 200;
1432     stabdelay           = 100;
1433     cmdexedelay         = 25;
1434     synchloops          = 32;
1435     bytedelay           = 0;
1436     pollindex           = 3;
1437     pollvalue           = 0x53;
1438     predelay            = 1;
1439     postdelay           = 1;
1440     pollmethod          = 0;
1442     hvsp_controlstack   =
1443         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
1444         0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
1445         0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
1446         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
1447     hventerstabdelay    = 100;
1448     hvspcmdexedelay     = 5;
1449     synchcycles         = 6;
1450     latchcycles         = 16;
1451     togglevtg           = 1;
1452     poweroffdelay       = 25;
1453     resetdelayms        = 0;
1454     resetdelayus        = 50;
1455     hvleavestabdelay    = 100;
1456     resetdelay          = 25;
1457     chiperasepolltimeout = 40;
1458     chiperasetime       = 0;
1459     programfusepolltimeout = 25;
1460     programlockpolltimeout = 25;
1462     memory "eeprom"
1463         size            = 64;
1464         min_write_delay = 8200;
1465         max_write_delay = 8200;
1466         readback_p1     = 0xff;
1467         readback_p2     = 0xff;
1468         read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
1469                           "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
1471         write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
1472                           "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
1474         mode            = 0x04;
1475         delay           = 10;
1476         blocksize       = 64;
1477         readsize        = 256;
1478     ;
1480     memory "flash"
1481         size            = 1024;
1482         min_write_delay = 4100;
1483         max_write_delay = 4100;
1484         readback_p1     = 0xff;
1485         readback_p2     = 0xff;
1486         read_lo         = "  0  0  1  0   0  0  0  0",
1487                           "  x  x  x  x   x  x  x a8",
1488                           " a7 a6 a5 a4  a3 a2 a1 a0",
1489                           "  o  o  o  o   o  o  o  o";
1491         read_hi         = "  0  0  1  0   1  0  0  0",
1492                           "  x  x  x  x   x  x  x a8",
1493                           " a7 a6 a5 a4  a3 a2 a1 a0",
1494                           "  o  o  o  o   o  o  o  o";
1496         write_lo        = "  0  1  0  0   0  0  0  0",
1497                           "  x  x  x  x   x  x  x a8",
1498                           " a7 a6 a5 a4  a3 a2 a1 a0",
1499                           "  i  i  i  i   i  i  i  i";
1501         write_hi        = "  0  1  0  0   1  0  0  0",
1502                           "  x  x  x  x   x  x  x a8",
1503                           " a7 a6 a5 a4  a3 a2 a1 a0",
1504                           "  i  i  i  i   i  i  i  i";
1506         mode            = 0x04;
1507         delay           = 5;
1508         blocksize       = 128;
1509         readsize        = 256;
1510     ;
1512     memory "signature"
1513         size            = 3;
1514         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
1515                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
1516     ;
1518     memory "lock"
1519         size            = 1;
1520         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
1521                           "x  x  x  x   x  x  x  x    x x x x  x o o x";
1523         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
1524                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
1525         min_write_delay = 9000;
1526         max_write_delay = 9000;
1527     ;
1529     memory "calibration"
1530         size            = 1;
1531         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
1532                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
1533     ;
1535     memory "fuse"
1536         size            = 1;
1537         read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
1538                           "x  x  x  x   x  x  x  x    o o o o  x x o o";
1540         write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
1541                           "x  x  x  x   x  x  x  x    i i i i  1 1 i i";
1542         min_write_delay = 9000;
1543         max_write_delay = 9000;
1544     ;
1547 #------------------------------------------------------------
1548 # AT90s1200
1549 #------------------------------------------------------------
1551 part
1552     id               = "1200";
1553     desc             = "AT90S1200";
1554     stk500_devcode   = 0x33;
1555     avr910_devcode   = 0x13;
1556     signature        = 0x1e 0x90 0x01;
1557     pagel            = 0xd7;
1558     bs2              = 0xa0;
1559     chip_erase_delay = 20000;
1560     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
1561                        "x x x x  x x x x    x x x x  x x x x";
1563     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
1564                        "x x x x  x x x x    x x x x  x x x x";
1566     timeout             = 200;
1567     stabdelay           = 100;
1568     cmdexedelay         = 25;
1569     synchloops          = 1;
1570     bytedelay           = 0;
1571     pollindex           = 0;
1572     pollvalue           = 0xFF;
1573     predelay            = 1;
1574     postdelay           = 1;
1575     pollmethod          = 0;
1577     pp_controlstack     =
1578         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
1579         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
1580         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
1581         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
1582     hventerstabdelay    = 100;
1583     progmodedelay       = 0;
1584     latchcycles         = 0;
1585     togglevtg           = 0;
1586     poweroffdelay       = 0;
1587     resetdelayms        = 0;
1588     resetdelayus        = 0;
1589     hvleavestabdelay    = 15;
1590     chiperasepulsewidth = 15;
1591     chiperasepolltimeout = 0;
1592     programfusepulsewidth = 2;
1593     programfusepolltimeout = 0;
1594     programlockpulsewidth = 0;
1595     programlockpolltimeout = 1;
1597     memory "eeprom"
1598         size            = 64;
1599         min_write_delay = 4000;
1600         max_write_delay = 9000;
1601         readback_p1     = 0x00;
1602         readback_p2     = 0xff;
1603         read            = "1 0  1  0   0  0  0  0   x x x x  x x x x", 
1604                           "x x a5 a4  a3 a2 a1 a0   o o o o  o o o o";
1606         write           = "1 1  0  0   0  0  0  0   x x x x  x x x x",
1607                           "x x a5 a4  a3 a2 a1 a0   i i i i  i i i i";
1609         mode            = 0x04;
1610         delay           = 20;
1611         blocksize       = 32;
1612         readsize        = 256;
1613       ;
1614     memory "flash"
1615         size            = 1024;
1616         min_write_delay = 4000;
1617         max_write_delay = 9000;
1618         readback_p1     = 0xff;
1619         readback_p2     = 0xff;
1620         read_lo         = "  0   0   1   0    0   0   0   0",
1621                           "  x   x   x   x    x   x   x  a8",
1622                           " a7  a6  a5  a4   a3  a2  a1  a0",
1623                           "  o   o   o   o    o   o   o   o";
1625         read_hi         = "  0   0   1   0    1   0   0   0",
1626                           "  x   x   x   x    x   x   x  a8",
1627                           " a7  a6  a5  a4   a3  a2  a1  a0",
1628                           "  o   o   o   o    o   o   o   o";
1630         write_lo        = "  0   1   0   0    0   0   0   0",
1631                           "  x   x   x   x    x   x   x  a8",
1632                           " a7  a6  a5  a4   a3  a2  a1  a0",
1633                           "  i   i   i   i    i   i   i   i";
1635         write_hi        = "  0   1   0   0    1   0   0   0",
1636                           "  x   x   x   x    x   x   x  a8",
1637                           " a7  a6  a5  a4   a3  a2  a1  a0",
1638                           "  i   i   i   i    i   i   i   i";
1640         mode            = 0x02;
1641         delay           = 15;
1642         blocksize       = 128;
1643         readsize        = 256;
1644       ;
1645     memory "signature"
1646         size            = 3;
1647         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
1648                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
1649       ;
1650     memory "fuse"
1651         size            = 1;
1652       ;
1653     memory "lock"
1654         size            = 1;
1655         min_write_delay = 9000;
1656         max_write_delay = 20000;
1657         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
1658                           "x x x x  x x x x   x x x x  x x x x";
1659       ;
1660   ;
1662 #------------------------------------------------------------
1663 # AT90s4414
1664 #------------------------------------------------------------
1666 part
1667     id               = "4414";
1668     desc             = "AT90S4414";
1669     stk500_devcode   = 0x50;
1670     avr910_devcode   = 0x28;
1671     signature        = 0x1e 0x92 0x01;
1672     chip_erase_delay = 20000;
1673     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
1674                        "x x x x  x x x x    x x x x  x x x x";
1676     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
1677                        "x x x x  x x x x    x x x x  x x x x";
1679     timeout             = 200;
1680     stabdelay           = 100;
1681     cmdexedelay         = 25;
1682     synchloops          = 32;
1683     bytedelay           = 0;
1684     pollindex           = 3;
1685     pollvalue           = 0x53;
1686     predelay            = 1;
1687     postdelay           = 1;
1688     pollmethod          = 0;
1690     pp_controlstack     =
1691         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
1692         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
1693         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
1694         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
1695     hventerstabdelay    = 100;
1696     progmodedelay       = 0;
1697     latchcycles         = 0;
1698     togglevtg           = 0;
1699     poweroffdelay       = 0;
1700     resetdelayms        = 0;
1701     resetdelayus        = 0;
1702     hvleavestabdelay    = 15;
1703     chiperasepulsewidth = 15;
1704     chiperasepolltimeout = 0;
1705     programfusepulsewidth = 2;
1706     programfusepolltimeout = 0;
1707     programlockpulsewidth = 0;
1708     programlockpolltimeout = 1;
1710     memory "eeprom"
1711         size            = 256;
1712         min_write_delay = 9000;
1713         max_write_delay = 20000;
1714         readback_p1     = 0x80;
1715         readback_p2     = 0x7f;
1716         read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8", 
1717                           "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
1719         write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
1720                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
1722         mode            = 0x04;
1723         delay           = 12;
1724         blocksize       = 64;
1725         readsize        = 256;
1726       ;
1727     memory "flash"
1728         size            = 4096;
1729         min_write_delay = 9000;
1730         max_write_delay = 20000;
1731         readback_p1     = 0x7f;
1732         readback_p2     = 0x7f;
1733         read_lo         = "  0   0   1   0    0   0   0   0",
1734                           "  x   x   x   x  a11 a10  a9  a8",
1735                           " a7  a6  a5  a4   a3  a2  a1  a0",
1736                           "  o   o   o   o    o   o   o   o";
1738         read_hi         = "  0   0   1   0    1   0   0   0",
1739                           "  x   x   x   x  a11 a10  a9  a8",
1740                           " a7  a6  a5  a4   a3  a2  a1  a0",
1741                           "  o   o   o   o    o   o   o   o";
1743         write_lo        = "  0   1   0   0    0   0   0   0",
1744                           "  x   x   x   x  a11 a10  a9  a8",
1745                           " a7  a6  a5  a4   a3  a2  a1  a0",
1746                           "  i   i   i   i    i   i   i   i";
1748         write_hi        = "  0   1   0   0    1   0   0   0",
1749                           "  x   x   x   x  a11 a10  a9  a8",
1750                           " a7  a6  a5  a4   a3  a2  a1  a0",
1751                           "  i   i   i   i    i   i   i   i";
1753         mode            = 0x04;
1754         delay           = 12;
1755         blocksize       = 64;
1756         readsize        = 256;
1757       ;
1758     memory "signature"
1759         size            = 3;
1760         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
1761                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
1762       ;
1763     memory "fuse"
1764         size            = 1;
1765       ;
1766     memory "lock"
1767         size            = 1;
1768         write           = "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
1769                           "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
1770         min_write_delay = 9000;
1771         max_write_delay = 9000;
1772       ;
1773   ;
1775 #------------------------------------------------------------
1776 # AT90s2313
1777 #------------------------------------------------------------
1779 part
1780     id               = "2313";
1781     desc             = "AT90S2313";
1782     stk500_devcode   = 0x40;
1783     avr910_devcode   = 0x20;
1784     signature        = 0x1e 0x91 0x01;
1785     chip_erase_delay = 20000;
1786     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
1787                        "x x x x  x x x x    x x x x  x x x x";
1789     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
1790                        "x x x x  x x x x    x x x x  x x x x";
1792     timeout             = 200;
1793     stabdelay           = 100;
1794     cmdexedelay         = 25;
1795     synchloops          = 32;
1796     bytedelay           = 0;
1797     pollindex           = 3;
1798     pollvalue           = 0x53;
1799     predelay            = 1;
1800     postdelay           = 1;
1801     pollmethod          = 0;
1803     pp_controlstack     =
1804         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
1805         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
1806         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
1807         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
1808     hventerstabdelay    = 100;
1809     progmodedelay       = 0;
1810     latchcycles         = 0;
1811     togglevtg           = 0;
1812     poweroffdelay       = 0;
1813     resetdelayms        = 0;
1814     resetdelayus        = 0;
1815     hvleavestabdelay    = 15;
1816     chiperasepulsewidth = 15;
1817     chiperasepolltimeout = 0;
1818     programfusepulsewidth = 2;
1819     programfusepolltimeout = 0;
1820     programlockpulsewidth = 0;
1821     programlockpolltimeout = 1;
1823     memory "eeprom"
1824         size            = 128;
1825         min_write_delay = 4000;
1826         max_write_delay = 9000;
1827         readback_p1     = 0x80;
1828         readback_p2     = 0x7f;
1829         read            = "1  0  1  0   0  0  0  0   x x x x  x x x x", 
1830                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
1832         write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
1833                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
1835         mode            = 0x04;
1836         delay           = 12;
1837         blocksize       = 64;
1838         readsize        = 256;
1839       ;
1840     memory "flash"
1841         size            = 2048;
1842         min_write_delay = 4000;
1843         max_write_delay = 9000;
1844         readback_p1     = 0x7f;
1845         readback_p2     = 0x7f;
1846         read_lo         = "  0   0   1   0    0   0   0   0",
1847                           "  x   x   x   x    x   x  a9  a8",
1848                           " a7  a6  a5  a4   a3  a2  a1  a0",
1849                           "  o   o   o   o    o   o   o   o";
1851         read_hi         = "  0   0   1   0    1   0   0   0",
1852                           "  x   x   x   x    x   x  a9  a8",
1853                           " a7  a6  a5  a4   a3  a2  a1  a0",
1854                           "  o   o   o   o    o   o   o   o";
1856         write_lo        = "  0   1   0   0    0   0   0   0",
1857                           "  x   x   x   x    x   x  a9  a8",
1858                           " a7  a6  a5  a4   a3  a2  a1  a0",
1859                           "  i   i   i   i    i   i   i   i";
1861         write_hi        = "  0   1   0   0    1   0   0   0",
1862                           "  x   x   x   x    x   x  a9  a8",
1863                           " a7  a6  a5  a4   a3  a2  a1  a0",
1864                           "  i   i   i   i    i   i   i   i";
1866         mode            = 0x04;
1867         delay           = 12;
1868         blocksize       = 128;
1869         readsize        = 256;
1870       ;
1871     memory "signature"
1872         size            = 3;
1873         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
1874                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
1875       ;
1876     memory "fuse"
1877         size            = 1;
1878       ;
1879     memory "lock"
1880         size            = 1;
1881         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x i i x",
1882                           "x x x x  x x x x  x x x x  x x x x";
1883         min_write_delay = 9000;
1884         max_write_delay = 9000;
1885       ;
1886   ;
1888 #------------------------------------------------------------
1889 # AT90s2333
1890 #------------------------------------------------------------
1892 part
1893     id               = "2333";
1894 ##### WARNING: No XML file for device 'AT90S2333'! #####
1895     desc             = "AT90S2333";
1896     stk500_devcode   = 0x42;
1897     avr910_devcode   = 0x34;
1898     signature        = 0x1e 0x91 0x05;
1899     chip_erase_delay = 20000;
1900     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
1901                        "x x x x  x x x x    x x x x  x x x x";
1903     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
1904                        "x x x x  x x x x    x x x x  x x x x";
1906     timeout             = 200;
1907     stabdelay           = 100;
1908     cmdexedelay         = 25;
1909     synchloops          = 32;
1910     bytedelay           = 0;
1911     pollindex           = 3;
1912     pollvalue           = 0x53;
1913     predelay            = 1;
1914     postdelay           = 1;
1915     pollmethod          = 0;
1917     pp_controlstack     =
1918         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
1919         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
1920         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
1921         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
1922     hventerstabdelay    = 100;
1923     progmodedelay       = 0;
1924     latchcycles         = 0;
1925     togglevtg           = 0;
1926     poweroffdelay       = 0;
1927     resetdelayms        = 0;
1928     resetdelayus        = 0;
1929     hvleavestabdelay    = 15;
1930     chiperasepulsewidth = 15;
1931     chiperasepolltimeout = 0;
1932     programfusepulsewidth = 2;
1933     programfusepolltimeout = 0;
1934     programlockpulsewidth = 0;
1935     programlockpolltimeout = 1;
1937     memory "eeprom"
1938         size            = 128;
1939         min_write_delay = 9000;
1940         max_write_delay = 20000;
1941         readback_p1     = 0x00;
1942         readback_p2     = 0xff;
1943         read            = "1  0  1  0   0  0  0  0   x x x x  x x x x", 
1944                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
1946         write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
1947                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
1949         mode            = 0x04;
1950         delay           = 12;
1951         blocksize       = 128;
1952         readsize        = 256;
1953       ;
1955     memory "flash"
1956         size            = 2048;
1957         min_write_delay = 9000;
1958         max_write_delay = 20000;
1959         readback_p1     = 0xff;
1960         readback_p2     = 0xff;
1961         read_lo         = "  0   0   1   0    0   0   0   0",
1962                           "  x   x   x   x    x   x  a9  a8",
1963                           " a7  a6  a5  a4   a3  a2  a1  a0",
1964                           "  o   o   o   o    o   o   o   o";
1966         read_hi         = "  0   0   1   0    1   0   0   0",
1967                           "  x   x   x   x    x   x  a9  a8",
1968                           " a7  a6  a5  a4   a3  a2  a1  a0",
1969                           "  o   o   o   o    o   o   o   o";
1971         write_lo        = "  0   1   0   0    0   0   0   0",
1972                           "  x   x   x   x    x   x  a9  a8",
1973                           " a7  a6  a5  a4   a3  a2  a1  a0",
1974                           "  i   i   i   i    i   i   i   i";
1976         write_hi        = "  0   1   0   0    1   0   0   0",
1977                           "  x   x   x   x    x   x  a9  a8",
1978                           " a7  a6  a5  a4   a3  a2  a1  a0",
1979                           "  i   i   i   i    i   i   i   i";
1981         mode            = 0x04;
1982         delay           = 12;
1983         blocksize       = 128;
1984         readsize        = 256;
1985       ;
1987     memory "signature"
1988         size            = 3;
1989         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
1990                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
1991       ;
1992     memory "fuse"
1993         size            = 1;
1994         min_write_delay = 9000;
1995         max_write_delay = 20000;
1996         pwroff_after_write = yes;
1997         read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
1998                           "x x x x  x x x x   x x o o  o o o o";
2000         write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
2001                           "x x x x  x x x x   x x x x  x x x x";
2002       ;
2003     memory "lock"
2004         size            = 1;
2005         min_write_delay = 9000;
2006         max_write_delay = 20000;
2007         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2008                           "x x x x  x x x x   x x x x  x o o x";
2010         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
2011                           "x x x x  x x x x   x x x x  x x x x";
2012       ;
2013   ;
2016 #------------------------------------------------------------
2017 # AT90s2343 (also AT90s2323 and ATtiny22)
2018 #------------------------------------------------------------
2020 part
2021     id               = "2343";
2022     desc             = "AT90S2343";
2023     stk500_devcode   = 0x43;
2024     avr910_devcode   = 0x4c;
2025     signature        = 0x1e 0x91 0x03;
2026     chip_erase_delay = 18000;
2027     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2028                        "x x x x  x x x x    x x x x  x x x x";
2030     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
2031                        "x x x x  x x x x    x x x x  x x x x";
2033     timeout             = 200;
2034     stabdelay           = 100;
2035     cmdexedelay         = 25;
2036     synchloops          = 32;
2037     bytedelay           = 0;
2038     pollindex           = 3;
2039     pollvalue           = 0x53;
2040     predelay            = 1;
2041     postdelay           = 1;
2042     pollmethod          = 0;
2044     hvsp_controlstack   =
2045         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
2046         0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
2047         0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
2048         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
2049     hventerstabdelay    = 100;
2050     hvspcmdexedelay     = 0;
2051     synchcycles         = 6;
2052     latchcycles         = 1;
2053     togglevtg           = 0;
2054     poweroffdelay       = 25;
2055     resetdelayms        = 0;
2056     resetdelayus        = 50;
2057     hvleavestabdelay    = 100;
2058     resetdelay          = 25;
2059     chiperasepolltimeout = 40;
2060     chiperasetime       = 0;
2061     programfusepolltimeout = 25;
2062     programlockpolltimeout = 25;
2064     memory "eeprom"
2065         size            = 128;
2066         min_write_delay = 9000;
2067         max_write_delay = 20000;
2068         readback_p1     = 0x00;
2069         readback_p2     = 0xff;
2070         read            = "1  0  1  0   0  0  0  0   0 0 0 0  0 0 0 0", 
2071                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
2073         write           = "1  1  0  0   0  0  0  0   0 0 0 0  0 0 0 0",
2074                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
2076         mode            = 0x04;
2077         delay           = 12;
2078         blocksize       = 64;
2079         readsize        = 256;
2080       ;
2081     memory "flash"
2082         size            = 2048;
2083         min_write_delay = 9000;
2084         max_write_delay = 20000;
2085         readback_p1     = 0xff;
2086         readback_p2     = 0xff;
2087         read_lo         = "  0   0   1   0    0   0   0   0",
2088                           "  x   x   x   x    x   x  a9  a8",
2089                           " a7  a6  a5  a4   a3  a2  a1  a0",
2090                           "  o   o   o   o    o   o   o   o";
2092         read_hi         = "  0   0   1   0    1   0   0   0",
2093                           "  x   x   x   x    x   x  a9  a8",
2094                           " a7  a6  a5  a4   a3  a2  a1  a0",
2095                           "  o   o   o   o    o   o   o   o";
2097         write_lo        = "  0   1   0   0    0   0   0   0",
2098                           "  x   x   x   x    x   x  a9  a8",
2099                           " a7  a6  a5  a4   a3  a2  a1  a0",
2100                           "  i   i   i   i    i   i   i   i";
2102         write_hi        = "  0   1   0   0    1   0   0   0",
2103                           "  x   x   x   x    x   x  a9  a8",
2104                           " a7  a6  a5  a4   a3  a2  a1  a0",
2105                           "  i   i   i   i    i   i   i   i";
2107         mode            = 0x04;
2108         delay           = 12;
2109         blocksize       = 128;
2110         readsize        = 128;
2111       ;
2112     memory "signature"
2113         size            = 3;
2114         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2115                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2116       ;
2117     memory "fuse"
2118         size            = 1;
2119         min_write_delay = 9000;
2120         max_write_delay = 20000;
2121         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2122                           "x x x x  x x x x   o o o x  x x x o";
2124         write           = "1 0 1 0  1 1 0 0   1 0 1 1  1 1 1 i",
2125                           "x x x x  x x x x   x x x x  x x x x";
2126       ;
2127     memory "lock"
2128         size            = 1;
2129         min_write_delay = 9000;
2130         max_write_delay = 20000;
2131         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2132                           "x x x x  x x x x   o o o x  x x x o";
2134         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
2135                           "x x x x  x x x x   x x x x  x x x x";
2136       ;
2137   ;
2140 #------------------------------------------------------------
2141 # AT90s4433
2142 #------------------------------------------------------------
2144 part
2145     id               = "4433";
2146     desc             = "AT90S4433";
2147     stk500_devcode   = 0x51;
2148     avr910_devcode   = 0x30;
2149     signature        = 0x1e 0x92 0x03;
2150     chip_erase_delay = 20000;
2151     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2152                        "x x x x  x x x x    x x x x  x x x x";
2154     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2155                        "x x x x  x x x x    x x x x  x x x x";
2157     timeout             = 200;
2158     stabdelay           = 100;
2159     cmdexedelay         = 25;
2160     synchloops          = 32;
2161     bytedelay           = 0;
2162     pollindex           = 3;
2163     pollvalue           = 0x53;
2164     predelay            = 1;
2165     postdelay           = 1;
2166     pollmethod          = 0;
2168     pp_controlstack     =
2169         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
2170         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
2171         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
2172         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2173     hventerstabdelay    = 100;
2174     progmodedelay       = 0;
2175     latchcycles         = 0;
2176     togglevtg           = 0;
2177     poweroffdelay       = 0;
2178     resetdelayms        = 0;
2179     resetdelayus        = 0;
2180     hvleavestabdelay    = 15;
2181     chiperasepulsewidth = 15;
2182     chiperasepolltimeout = 0;
2183     programfusepulsewidth = 2;
2184     programfusepolltimeout = 0;
2185     programlockpulsewidth = 0;
2186     programlockpolltimeout = 1;
2188     memory "eeprom"
2189         size            = 256;
2190         min_write_delay = 9000;
2191         max_write_delay = 20000;
2192         readback_p1     = 0x00;
2193         readback_p2     = 0xff;
2194         read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x", 
2195                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
2197         write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
2198                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
2200         mode            = 0x04;
2201         delay           = 12;
2202         blocksize       = 128;
2203         readsize        = 256;
2204       ;
2205     memory "flash"
2206         size            = 4096;
2207         min_write_delay = 9000;
2208         max_write_delay = 20000;
2209         readback_p1     = 0xff;
2210         readback_p2     = 0xff;
2211         read_lo         = "  0   0   1   0    0   0   0   0",
2212                           "  x   x   x   x    x a10  a9  a8",
2213                           " a7  a6  a5  a4   a3  a2  a1  a0",
2214                           "  o   o   o   o    o   o   o   o";
2216         read_hi         = "  0   0   1   0    1   0   0   0",
2217                           "  x   x   x   x    x a10  a9  a8",
2218                           " a7  a6  a5  a4   a3  a2  a1  a0",
2219                           "  o   o   o   o    o   o   o   o";
2221         write_lo        = "  0   1   0   0    0   0   0   0",
2222                           "  x   x   x   x    x a10  a9  a8",
2223                           " a7  a6  a5  a4   a3  a2  a1  a0",
2224                           "  i   i   i   i    i   i   i   i";
2226         write_hi        = "  0   1   0   0    1   0   0   0",
2227                           "  x   x   x   x    x a10  a9  a8",
2228                           " a7  a6  a5  a4   a3  a2  a1  a0",
2229                           "  i   i   i   i    i   i   i   i";
2231         mode            = 0x04;
2232         delay           = 12;
2233         blocksize       = 128;
2234         readsize        = 256;
2235       ;
2236     memory "signature"
2237         size            = 3;
2238         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2239                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2240       ;
2241     memory "fuse"
2242         size            = 1;
2243         min_write_delay = 9000;
2244         max_write_delay = 20000;
2245         pwroff_after_write = yes;
2246         read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
2247                           "x x x x  x x x x   x x o o  o o o o";
2249         write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
2250                           "x x x x  x x x x   x x x x  x x x x";
2251       ;
2252     memory "lock"
2253         size            = 1;
2254         min_write_delay = 9000;
2255         max_write_delay = 20000;
2256         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2257                           "x x x x  x x x x   x x x x  x o o x";
2259         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
2260                           "x x x x  x x x x   x x x x  x x x x";
2261       ;
2262   ;
2264 #------------------------------------------------------------
2265 # AT90s4434
2266 #------------------------------------------------------------
2268 part
2269     id               = "4434";
2270 ##### WARNING: No XML file for device 'AT90S4434'! #####
2271     desc             = "AT90S4434";
2272     stk500_devcode   = 0x52;
2273     avr910_devcode   = 0x6c;
2274     signature        = 0x1e 0x92 0x02;
2275     chip_erase_delay = 20000;
2276     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2277                        "x x x x  x x x x    x x x x  x x x x";
2279     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2280                        "x x x x  x x x x    x x x x  x x x x";
2282     memory "eeprom"
2283         size            = 256;
2284         min_write_delay = 9000;
2285         max_write_delay = 20000;
2286         readback_p1     = 0x00;
2287         readback_p2     = 0xff;
2288         read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x", 
2289                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
2291         write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
2292                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
2293       ;
2294     memory "flash"
2295         size            = 4096;
2296         min_write_delay = 9000;
2297         max_write_delay = 20000;
2298         readback_p1     = 0xff;
2299         readback_p2     = 0xff;
2300         read_lo         = "  0   0   1   0    0   0   0   0",
2301                           "  x   x   x   x    x a10  a9  a8",
2302                           " a7  a6  a5  a4   a3  a2  a1  a0",
2303                           "  o   o   o   o    o   o   o   o";
2305         read_hi         = "  0   0   1   0    1   0   0   0",
2306                           "  x   x   x   x    x a10  a9  a8",
2307                           " a7  a6  a5  a4   a3  a2  a1  a0",
2308                           "  o   o   o   o    o   o   o   o";
2310         write_lo        = "  0   1   0   0    0   0   0   0",
2311                           "  x   x   x   x    x a10  a9  a8",
2312                           " a7  a6  a5  a4   a3  a2  a1  a0",
2313                           "  i   i   i   i    i   i   i   i";
2315         write_hi        = "  0   1   0   0    1   0   0   0",
2316                           "  x   x   x   x    x a10  a9  a8",
2317                           " a7  a6  a5  a4   a3  a2  a1  a0",
2318                           "  i   i   i   i    i   i   i   i";
2319       ;
2320     memory "signature"
2321         size            = 3;
2322         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2323                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2324       ;
2325     memory "fuse"
2326         size            = 1;
2327         min_write_delay = 9000;
2328         max_write_delay = 20000;
2329         read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
2330                           "x x x x  x x x x   x x o o  o o o o";
2332         write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
2333                           "x x x x  x x x x   x x x x  x x x x";
2334       ;
2335     memory "lock"
2336         size            = 1;
2337         min_write_delay = 9000;
2338         max_write_delay = 20000;
2339         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2340                           "x x x x  x x x x   x x x x  x o o x";
2342         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
2343                           "x x x x  x x x x   x x x x  x x x x";
2344       ;
2345   ;
2347 #------------------------------------------------------------
2348 # AT90s8515
2349 #------------------------------------------------------------
2351 part
2352     id               = "8515";
2353     desc             = "AT90S8515";
2354     stk500_devcode   = 0x60;
2355     avr910_devcode   = 0x38;
2356     signature        = 0x1e 0x93 0x01;
2357     chip_erase_delay = 20000;
2358     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2359                        "x x x x  x x x x    x x x x  x x x x";
2361     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
2362                        "x x x x  x x x x    x x x x  x x x x";
2364     timeout             = 200;
2365     stabdelay           = 100;
2366     cmdexedelay         = 25;
2367     synchloops          = 32;
2368     bytedelay           = 0;
2369     pollindex           = 3;
2370     pollvalue           = 0x53;
2371     predelay            = 1;
2372     postdelay           = 1;
2373     pollmethod          = 0;
2375     pp_controlstack     =
2376         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
2377         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
2378         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
2379         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2380     hventerstabdelay    = 100;
2381     progmodedelay       = 0;
2382     latchcycles         = 0;
2383     togglevtg           = 0;
2384     poweroffdelay       = 0;
2385     resetdelayms        = 0;
2386     resetdelayus        = 0;
2387     hvleavestabdelay    = 15;
2388     resetdelay          = 15;
2389     chiperasepulsewidth = 15;
2390     chiperasepolltimeout = 0;
2391     programfusepulsewidth = 2;
2392     programfusepolltimeout = 0;
2393     programlockpulsewidth = 0;
2394     programlockpolltimeout = 1;
2396     memory "eeprom"
2397         size            = 512;
2398         min_write_delay = 4000;
2399         max_write_delay = 9000;
2400         readback_p1     = 0x80;
2401         readback_p2     = 0x7f;
2402         read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8", 
2403                           "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
2405         write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
2406                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
2408         mode            = 0x04;
2409         delay           = 12;
2410         blocksize       = 128;
2411         readsize        = 256;
2412       ;
2413     memory "flash"
2414         size            = 8192;
2415         min_write_delay = 4000;
2416         max_write_delay = 9000;
2417         readback_p1     = 0x7f;
2418         readback_p2     = 0x7f;
2419         read_lo         = "  0   0   1   0    0   0   0   0",
2420                           "  x   x   x   x  a11 a10  a9  a8",
2421                           " a7  a6  a5  a4   a3  a2  a1  a0",
2422                           "  o   o   o   o    o   o   o   o";
2424         read_hi         = "  0   0   1   0    1   0   0   0",
2425                           "  x   x   x   x  a11 a10  a9  a8",
2426                           " a7  a6  a5  a4   a3  a2  a1  a0",
2427                           "  o   o   o   o    o   o   o   o";
2429         write_lo        = "  0   1   0   0    0   0   0   0",
2430                           "  x   x   x   x  a11 a10  a9  a8",
2431                           " a7  a6  a5  a4   a3  a2  a1  a0",
2432                           "  i   i   i   i    i   i   i   i";
2434         write_hi        = "  0   1   0   0    1   0   0   0",
2435                           "  x   x   x   x  a11 a10  a9  a8",
2436                           " a7  a6  a5  a4   a3  a2  a1  a0",
2437                           "  i   i   i   i    i   i   i   i";
2439         mode            = 0x04;
2440         delay           = 12;
2441         blocksize       = 128;
2442         readsize        = 256;
2443       ;
2444     memory "signature"
2445         size            = 3;
2446         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2447                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2448       ;
2449     memory "fuse"
2450         size            = 1;
2451       ;
2452     memory "lock"
2453         size            = 1;
2454         write           = "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
2455                           "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
2456         min_write_delay = 9000;
2457         max_write_delay = 9000;
2458       ;
2459   ;
2461 #------------------------------------------------------------
2462 # AT90s8535
2463 #------------------------------------------------------------
2465 part
2466     id               = "8535";
2467     desc             = "AT90S8535";
2468     stk500_devcode   = 0x61;
2469     avr910_devcode   = 0x68;
2470     signature        = 0x1e 0x93 0x03;
2471     chip_erase_delay = 20000;
2472     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2473                        "x x x x  x x x x    x x x x  x x x x";
2475     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2476                        "x x x x  x x x x    x x x x  x x x x";
2478     timeout             = 200;
2479     stabdelay           = 100;
2480     cmdexedelay         = 25;
2481     synchloops          = 32;
2482     bytedelay           = 0;
2483     pollindex           = 3;
2484     pollvalue           = 0x53;
2485     predelay            = 1;
2486     postdelay           = 1;
2487     pollmethod          = 0;
2489     pp_controlstack     =
2490         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
2491         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
2492         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
2493         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2494     hventerstabdelay    = 100;
2495     progmodedelay       = 0;
2496     latchcycles         = 0;
2497     togglevtg           = 0;
2498     poweroffdelay       = 0;
2499     resetdelayms        = 0;
2500     resetdelayus        = 0;
2501     hvleavestabdelay    = 15;
2502     chiperasepulsewidth = 15;
2503     chiperasepolltimeout = 0;
2504     programfusepulsewidth = 2;
2505     programfusepolltimeout = 0;
2506     programlockpulsewidth = 0;
2507     programlockpolltimeout = 1;
2509     memory "eeprom"
2510         size            = 512;
2511         min_write_delay = 9000;
2512         max_write_delay = 20000;
2513         readback_p1     = 0x00;
2514         readback_p2     = 0xff;
2515         read            = " 1  0  1  0   0  0  0  0   x x x x  x x x a8", 
2516                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
2518         write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
2519                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
2521         mode            = 0x04;
2522         delay           = 12;
2523         blocksize       = 128;
2524         readsize        = 256;
2525       ;
2526     memory "flash"
2527         size            = 8192;
2528         min_write_delay = 9000;
2529         max_write_delay = 20000;
2530         readback_p1     = 0xff;
2531         readback_p2     = 0xff;
2532         read_lo         = "  0   0   1   0    0   0   0   0",
2533                           "  x   x   x   x  a11 a10  a9  a8",
2534                           " a7  a6  a5  a4   a3  a2  a1  a0",
2535                           "  o   o   o   o    o   o   o   o";
2537         read_hi         = "  0   0   1   0    1   0   0   0",
2538                           "  x   x   x   x  a11 a10  a9  a8",
2539                           " a7  a6  a5  a4   a3  a2  a1  a0",
2540                           "  o   o   o   o    o   o   o   o";
2542         write_lo        = "  0   1   0   0    0   0   0   0",
2543                           "  x   x   x   x  a11 a10  a9  a8",
2544                           " a7  a6  a5  a4   a3  a2  a1  a0",
2545                           "  i   i   i   i    i   i   i   i";
2547         write_hi        = "  0   1   0   0    1   0   0   0",
2548                           "  x   x   x   x  a11 a10  a9  a8",
2549                           " a7  a6  a5  a4   a3  a2  a1  a0",
2550                           "  i   i   i   i    i   i   i   i";
2552         mode            = 0x04;
2553         delay           = 12;
2554         blocksize       = 128;
2555         readsize        = 256;
2556       ;
2557     memory "signature"
2558         size            = 3;
2559         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2560                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2561       ;
2562     memory "fuse"
2563         size            = 1;
2564         read            = "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
2565                           "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  o";
2566         write           = "1  0  1  0   1  1  0  0   1  0  1  1   1  1  1  i",
2567                           "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
2568         min_write_delay = 9000;
2569         max_write_delay = 9000;
2570       ;
2571     memory "lock"
2572         size            = 1;
2573         read            = "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
2574                           "x  x  x  x   x  x  x  x   o  o  x  x   x  x  x  x";
2575         write           = "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
2576                           "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
2577         min_write_delay = 9000;
2578         max_write_delay = 9000;
2579       ;
2580   ;
2582 #------------------------------------------------------------
2583 # ATmega103
2584 #------------------------------------------------------------
2586 part
2587     id               = "m103";
2588     desc             = "ATMEGA103";
2589     stk500_devcode   = 0xB1;
2590     avr910_devcode   = 0x41;
2591     signature        = 0x1e 0x97 0x01;
2592     chip_erase_delay = 112000;
2593     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2594                        "x x x x  x x x x    x x x x  x x x x";
2596     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2597                        "x x x x  x x x x    x x x x  x x x x";
2599     timeout             = 200;
2600     stabdelay           = 100;
2601     cmdexedelay         = 25;
2602     synchloops          = 32;
2603     bytedelay           = 0;
2604     pollindex           = 3;
2605     pollvalue           = 0x53;
2606     predelay            = 1;
2607     postdelay           = 1;
2608     pollmethod          = 0;
2610     pp_controlstack     =
2611         0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE,
2612         0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE,
2613         0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A,
2614         0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2615     hventerstabdelay    = 100;
2616     progmodedelay       = 0;
2617     latchcycles         = 0;
2618     togglevtg           = 0;
2619     poweroffdelay       = 0;
2620     resetdelayms        = 0;
2621     resetdelayus        = 0;
2622     hvleavestabdelay    = 15;
2623     chiperasepulsewidth = 15;
2624     chiperasepolltimeout = 0;
2625     programfusepulsewidth = 2;
2626     programfusepolltimeout = 0;
2627     programlockpulsewidth = 0;
2628     programlockpolltimeout = 10;
2630     memory "eeprom"
2631         size            = 4096;
2632         min_write_delay = 4000;
2633         max_write_delay = 9000;
2634         readback_p1     = 0x80;
2635         readback_p2     = 0x7f;
2636         read            = "  1   0   1   0      0   0   0   0",
2637                           "  x   x   x   x    a11 a10  a9  a8",
2638                           " a7  a6  a5  a4     a3  a2  a1  a0",
2639                           "  o   o   o   o      o   o   o   o";
2641         write           = "  1   1   0   0      0   0   0   0",
2642                           "  x   x   x   x    a11 a10  a9  a8",
2643                           " a7  a6  a5  a4     a3  a2  a1  a0", 
2644                           "  i   i   i   i      i   i   i   i";
2646         mode            = 0x04;
2647         delay           = 12;
2648         blocksize       = 64;
2649         readsize        = 256;
2650       ;
2652     memory "flash"
2653         paged           = yes;
2654         size            = 131072;
2655         page_size       = 256;
2656         num_pages       = 512;
2657         min_write_delay = 22000;
2658         max_write_delay = 56000;
2659         readback_p1     = 0xff;
2660         readback_p2     = 0xff;
2661         read_lo         = "  0   0   1   0      0   0   0   0",
2662                           "a15 a14 a13 a12    a11 a10  a9  a8",
2663                           " a7  a6  a5  a4     a3  a2  a1  a0",
2664                           "  o   o   o   o      o   o   o   o";
2666         read_hi         = "  0   0   1   0      1   0   0   0",
2667                           "a15 a14 a13 a12    a11 a10  a9  a8",
2668                           " a7  a6  a5  a4     a3  a2  a1  a0",
2669                           "  o   o   o   o      o   o   o   o";
2671         loadpage_lo     = "  0   1   0   0      0   0   0   0",
2672                           "  x   x   x   x      x   x   x   x",
2673                           "  x  a6  a5  a4     a3  a2  a1  a0",
2674                           "  i   i   i   i      i   i   i   i";
2676         loadpage_hi     = "  0   1   0   0      1   0   0   0",
2677                           "  x   x   x   x      x   x   x   x",
2678                           "  x  a6  a5  a4     a3  a2  a1  a0",
2679                           "  i   i   i   i      i   i   i   i";
2681         writepage       = "  0   1   0   0      1   1   0   0",
2682                           "a15 a14 a13 a12    a11 a10  a9  a8",
2683                           " a7   x   x   x      x   x   x   x",
2684                           "  x   x   x   x      x   x   x   x";
2686         mode            = 0x11;
2687         delay           = 70;
2688         blocksize       = 256;
2689         readsize        = 256;
2690       ;
2692     memory "fuse"
2693         size            = 1;
2694         read            = "0 1 0 1  0 0 0 0  x x x x  x x x x",
2695                           "x x x x  x x x x  x x o x  o 1 o o";
2697         write           = "1 0 1 0  1 1 0 0  1 0 1 1  i 1 i i",
2698                           "x x x x  x x x x  x x x x  x x x x";
2699         min_write_delay = 9000;
2700         max_write_delay = 9000;
2701       ;
2703     memory "lock"
2704         size            = 1;
2705         read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
2706                           "x x x x  x x x x   x x x x  x o o x";
2708         write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
2709                           "x x x x  x x x x   x x x x  x x x x";
2710         min_write_delay = 9000;
2711         max_write_delay = 9000;
2712       ;
2714     memory "signature"
2715         size            = 3;
2716         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2717                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2718       ;
2719   ;
2722 #------------------------------------------------------------
2723 # ATmega64
2724 #------------------------------------------------------------
2726 part
2727     id               = "m64";
2728     desc             = "ATMEGA64";
2729     has_jtag         = yes;
2730     stk500_devcode   = 0xA0;
2731     avr910_devcode   = 0x45;
2732     signature        = 0x1e 0x96 0x02;
2733     chip_erase_delay = 9000;
2734     pagel            = 0xD7;
2735     bs2              = 0xA0;
2736     reset            = dedicated;
2737     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2738                        "x x x x  x x x x    x x x x  x x x x";
2740     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2741                        "x x x x  x x x x    x x x x  x x x x";
2743     timeout             = 200;
2744     stabdelay           = 100;
2745     cmdexedelay         = 25;
2746     synchloops          = 32;
2747     bytedelay           = 0;
2748     pollindex           = 3;
2749     pollvalue           = 0x53;
2750     predelay            = 1;
2751     postdelay           = 1;
2752     pollmethod          = 0;
2754     pp_controlstack     =
2755         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
2756         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
2757         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
2758         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2759     hventerstabdelay    = 100;
2760     progmodedelay       = 0;
2761     latchcycles         = 6;
2762     togglevtg           = 0;
2763     poweroffdelay       = 0;
2764     resetdelayms        = 0;
2765     resetdelayus        = 0;
2766     hvleavestabdelay    = 15;
2767     chiperasepulsewidth = 0;
2768     chiperasepolltimeout = 10;
2769     programfusepulsewidth = 0;
2770     programfusepolltimeout = 5;
2771     programlockpulsewidth = 0;
2772     programlockpolltimeout = 5;
2774     idr                 = 0x22;
2775     spmcr               = 0x68;
2776     allowfullpagebitstream = yes;
2778     memory "eeprom"
2779         paged           = no; /* leave this "no" */
2780         page_size       = 8;  /* for parallel programming */
2781         size            = 2048;
2782         min_write_delay = 9000;
2783         max_write_delay = 9000;
2784         readback_p1     = 0xff;
2785         readback_p2     = 0xff;
2786         read            = "  1   0   1   0      0   0   0   0",
2787                           "  x   x   x   x    a11 a10  a9  a8",
2788                           " a7  a6  a5  a4     a3  a2  a1  a0",
2789                           "  o   o   o   o      o   o   o   o";
2791         write           = "  1   1   0   0      0   0   0   0",
2792                           "  x   x   x   x    a11 a10  a9  a8",
2793                           " a7  a6  a5  a4     a3  a2  a1  a0", 
2794                           "  i   i   i   i      i   i   i   i";
2796         mode            = 0x04;
2797         delay           = 20;
2798         blocksize       = 64;
2799         readsize        = 256;
2800       ;
2802     memory "flash"
2803         paged           = yes;
2804         size            = 65536;
2805         page_size       = 256;
2806         num_pages       = 256;
2807         min_write_delay = 4500;
2808         max_write_delay = 4500;
2809         readback_p1     = 0xff;
2810         readback_p2     = 0xff;
2811         read_lo         = "  0   0   1   0      0   0   0   0",
2812                           "  x a14 a13 a12    a11 a10  a9  a8",
2813                           " a7  a6  a5  a4     a3  a2  a1  a0",
2814                           "  o   o   o   o      o   o   o   o";
2816         read_hi         = "  0   0   1   0      1   0   0   0",
2817                           "  x a14 a13 a12    a11 a10  a9  a8",
2818                           " a7  a6  a5  a4     a3  a2  a1  a0",
2819                           "  o   o   o   o      o   o   o   o";
2822         loadpage_lo     = "  0   1   0   0      0   0   0   0",
2823                           "  x   x   x   x      x   x   x   x",
2824                           "  x  a6  a5  a4     a3  a2  a1  a0",
2825                           "  i   i   i   i      i   i   i   i";
2827         loadpage_hi     = "  0   1   0   0      1   0   0   0",
2828                           "  x   x   x   x      x   x   x   x",
2829                           "  x  a6  a5  a4     a3  a2  a1  a0",
2830                           "  i   i   i   i      i   i   i   i";
2832         writepage       = "  0   1   0   0      1   1   0   0",
2833                           "  x a14 a13 a12    a11 a10  a9  a8",
2834                           " a7   x   x   x      x   x   x   x",
2835                           "  x   x   x   x      x   x   x   x";
2837         mode            = 0x21;
2838         delay           = 6;
2839         blocksize       = 128;
2840         readsize        = 256;
2841       ;
2843     memory "lfuse"
2844         size            = 1;
2845         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
2846                           "x x x x  x x x x  i i i i  i i i i";
2848         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
2849                           "x x x x  x x x x  o o o o  o o o o";
2850         min_write_delay = 9000;
2851         max_write_delay = 9000;
2852       ;
2854     memory "hfuse"
2855         size            = 1;
2856         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
2857                           "x x x x  x x x x  i i i i  i i i i";
2859         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
2860                           "x x x x  x x x x  o o o o  o o o o";
2861         min_write_delay = 9000;
2862         max_write_delay = 9000;
2863       ;
2865     memory "efuse"
2866         size            = 1;
2867         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
2868                           "x x x x  x x x x  x x x x  x x i i";
2870         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
2871                           "x x x x  x x x x  o o o o  o o o o";
2872         min_write_delay = 9000;
2873         max_write_delay = 9000;
2874       ;
2876     memory "lock"
2877         size            = 1;
2878         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
2879                           "x x x x  x x x x   x x o o  o o o o";
2881         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
2882                           "x x x x  x x x x   1 1 i i  i i i i";
2883         min_write_delay = 9000;
2884         max_write_delay = 9000;
2885       ;
2887     memory "calibration"
2888         size            = 4;
2889         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
2890                           "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
2891       ;
2893     memory "signature"
2894         size            = 3;
2895         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
2896                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
2897       ;
2898   ;
2903 #------------------------------------------------------------
2904 # ATmega128
2905 #------------------------------------------------------------
2907 part
2908     id               = "m128";
2909     desc             = "ATMEGA128";
2910     has_jtag         = yes;
2911     stk500_devcode   = 0xB2;
2912     avr910_devcode   = 0x43;
2913     signature        = 0x1e 0x97 0x02;
2914     chip_erase_delay = 9000;
2915     pagel            = 0xD7;
2916     bs2              = 0xA0;
2917     reset            = dedicated;
2918     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
2919                        "x x x x  x x x x    x x x x  x x x x";
2921     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
2922                        "x x x x  x x x x    x x x x  x x x x";
2924     timeout             = 200;
2925     stabdelay           = 100;
2926     cmdexedelay         = 25;
2927     synchloops          = 32;
2928     bytedelay           = 0;
2929     pollindex           = 3;
2930     pollvalue           = 0x53;
2931     predelay            = 1;
2932     postdelay           = 1;
2933     pollmethod          = 0;
2935     pp_controlstack     =
2936         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
2937         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
2938         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
2939         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
2940     hventerstabdelay    = 100;
2941     progmodedelay       = 0;
2942     latchcycles         = 6;
2943     togglevtg           = 0;
2944     poweroffdelay       = 0;
2945     resetdelayms        = 0;
2946     resetdelayus        = 0;
2947     hvleavestabdelay    = 15;
2948     chiperasepulsewidth = 0;
2949     chiperasepolltimeout = 10;
2950     programfusepulsewidth = 0;
2951     programfusepolltimeout = 5;
2952     programlockpulsewidth = 0;
2953     programlockpolltimeout = 5;
2955     idr                 = 0x22;
2956     spmcr               = 0x68;
2957     rampz               = 0x3b;
2958     allowfullpagebitstream = yes;
2960     memory "eeprom"
2961         paged           = no; /* leave this "no" */
2962         page_size       = 8;  /* for parallel programming */
2963         size            = 4096;
2964         min_write_delay = 9000;
2965         max_write_delay = 9000;
2966         readback_p1     = 0xff;
2967         readback_p2     = 0xff;
2968         read            = "  1   0   1   0      0   0   0   0",
2969                           "  x   x   x   x    a11 a10  a9  a8",
2970                           " a7  a6  a5  a4     a3  a2  a1  a0",
2971                           "  o   o   o   o      o   o   o   o";
2973         write           = "  1   1   0   0      0   0   0   0",
2974                           "  x   x   x   x    a11 a10  a9  a8",
2975                           " a7  a6  a5  a4     a3  a2  a1  a0", 
2976                           "  i   i   i   i      i   i   i   i";
2978         mode            = 0x04;
2979         delay           = 12;
2980         blocksize       = 64;
2981         readsize        = 256;
2982       ;
2984     memory "flash"
2985         paged           = yes;
2986         size            = 131072;
2987         page_size       = 256;
2988         num_pages       = 512;
2989         min_write_delay = 4500;
2990         max_write_delay = 4500;
2991         readback_p1     = 0xff;
2992         readback_p2     = 0xff;
2993         read_lo         = "  0   0   1   0      0   0   0   0",
2994                           "a15 a14 a13 a12    a11 a10  a9  a8",
2995                           " a7  a6  a5  a4     a3  a2  a1  a0",
2996                           "  o   o   o   o      o   o   o   o";
2998         read_hi         = "  0   0   1   0      1   0   0   0",
2999                           "a15 a14 a13 a12    a11 a10  a9  a8",
3000                           " a7  a6  a5  a4     a3  a2  a1  a0",
3001                           "  o   o   o   o      o   o   o   o";
3003         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3004                           "  x   x   x   x      x   x   x   x",
3005                           "  x  a6  a5  a4     a3  a2  a1  a0",
3006                           "  i   i   i   i      i   i   i   i";
3008         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3009                           "  x   x   x   x      x   x   x   x",
3010                           "  x  a6  a5  a4     a3  a2  a1  a0",
3011                           "  i   i   i   i      i   i   i   i";
3013         writepage       = "  0   1   0   0      1   1   0   0",
3014                           "a15 a14 a13 a12    a11 a10  a9  a8",
3015                           " a7   x   x   x      x   x   x   x",
3016                           "  x   x   x   x      x   x   x   x";
3018         mode            = 0x21;
3019         delay           = 6;
3020         blocksize       = 128;
3021         readsize        = 256;
3022       ;
3024     memory "lfuse"
3025         size            = 1;
3026         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
3027                           "x x x x  x x x x  i i i i  i i i i";
3029         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
3030                           "x x x x  x x x x  o o o o  o o o o";
3031         min_write_delay = 9000;
3032         max_write_delay = 9000;
3033       ;
3035     memory "hfuse"
3036         size            = 1;
3037         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
3038                           "x x x x  x x x x  i i i i  i i i i";
3040         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
3041                           "x x x x  x x x x  o o o o  o o o o";
3042         min_write_delay = 9000;
3043         max_write_delay = 9000;
3044       ;
3046     memory "efuse"
3047         size            = 1;
3048         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
3049                           "x x x x  x x x x  x x x x  x x i i";
3051         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
3052                           "x x x x  x x x x  o o o o  o o o o";
3053         min_write_delay = 9000;
3054         max_write_delay = 9000;
3055       ;
3057     memory "lock"
3058         size            = 1;
3059         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3060                           "x x x x  x x x x   x x o o  o o o o";
3062         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3063                           "x x x x  x x x x   1 1 i i  i i i i";
3064         min_write_delay = 9000;
3065         max_write_delay = 9000;
3066       ;
3068     memory "calibration"
3069         size            = 4;
3070         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
3071                           "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
3072       ;
3074     memory "signature"
3075         size            = 3;
3076         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
3077                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
3078       ;
3079   ;
3081 #------------------------------------------------------------
3082 # AT90CAN128
3083 #------------------------------------------------------------
3085 part
3086     id               = "c128";
3087     desc             = "AT90CAN128";
3088     has_jtag         = yes;
3089     stk500_devcode   = 0xB3;
3090 #    avr910_devcode   = 0x43;
3091     signature        = 0x1e 0x97 0x81;
3092     chip_erase_delay = 9000;
3093     pagel            = 0xD7;
3094     bs2              = 0xA0;
3095     reset            = dedicated;
3096     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
3097                        "x x x x  x x x x    x x x x  x x x x";
3099     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
3100                        "x x x x  x x x x    x x x x  x x x x";
3102     timeout             = 200;
3103     stabdelay           = 100;
3104     cmdexedelay         = 25;
3105     synchloops          = 32;
3106     bytedelay           = 0;
3107     pollindex           = 3;
3108     pollvalue           = 0x53;
3109     predelay            = 1;
3110     postdelay           = 1;
3111     pollmethod          = 1;
3113     pp_controlstack     =
3114         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
3115         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
3116         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
3117         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
3118     hventerstabdelay    = 100;
3119     progmodedelay       = 0;
3120     latchcycles         = 6;
3121     togglevtg           = 0;
3122     poweroffdelay       = 0;
3123     resetdelayms        = 0;
3124     resetdelayus        = 0;
3125     hvleavestabdelay    = 15;
3126     chiperasepulsewidth = 0;
3127     chiperasepolltimeout = 10;
3128     programfusepulsewidth = 0;
3129     programfusepolltimeout = 5;
3130     programlockpulsewidth = 0;
3131     programlockpolltimeout = 5;
3133     idr                 = 0x31;
3134     spmcr               = 0x57;
3135     rampz               = 0x3b;
3136     eecr                = 0x3f;
3137     allowfullpagebitstream = no;
3139     memory "eeprom"
3140         paged           = no; /* leave this "no" */
3141         page_size       = 8;  /* for parallel programming */
3142         size            = 4096;
3143         min_write_delay = 9000;
3144         max_write_delay = 9000;
3145         readback_p1     = 0xff;
3146         readback_p2     = 0xff;
3147         read            = "  1   0   1   0      0   0   0   0",
3148                           "  0   0   0   x    a11 a10  a9  a8",
3149                           " a7  a6  a5  a4     a3  a2  a1  a0",
3150                           "  o   o   o   o      o   o   o   o";
3152         write           = "  1   1   0   0      0   0   0   0",
3153                           "  0   0   0   x    a11 a10  a9  a8",
3154                           " a7  a6  a5  a4     a3  a2  a1  a0", 
3155                           "  i   i   i   i      i   i   i   i";
3157         loadpage_lo     = "  1   1   0   0      0   0   0   1",
3158                           "  0   0   0   0      0   0   0   0",
3159                           "  0   0   0   0      0  a2  a1  a0",
3160                           "  i   i   i   i      i   i   i   i";
3162         writepage       = "  1   1   0   0      0   0   1   0",
3163                           "  0   0   x   x    a11 a10  a9  a8",
3164                           " a7  a6  a5  a4     a3   0   0   0",
3165                           "  x   x   x   x      x   x   x   x";
3168         mode            = 0x41;
3169         delay           = 20;
3170         blocksize       = 8;
3171         readsize        = 256;
3172       ;
3174     memory "flash"
3175         paged           = yes;
3176         size            = 131072;
3177         page_size       = 256;
3178         num_pages       = 512;
3179         min_write_delay = 4500;
3180         max_write_delay = 4500;
3181         readback_p1     = 0xff;
3182         readback_p2     = 0xff;
3183         read_lo         = "  0   0   1   0      0   0   0   0",
3184                           "a15 a14 a13 a12    a11 a10  a9  a8",
3185                           " a7  a6  a5  a4     a3  a2  a1  a0",
3186                           "  o   o   o   o      o   o   o   o";
3188         read_hi         = "  0   0   1   0      1   0   0   0",
3189                           "a15 a14 a13 a12    a11 a10  a9  a8",
3190                           " a7  a6  a5  a4     a3  a2  a1  a0",
3191                           "  o   o   o   o      o   o   o   o";
3193         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3194                           "  0   0   0   x      x   x   x   x",
3195                           "  x  a6  a5  a4     a3  a2  a1  a0",
3196                           "  i   i   i   i      i   i   i   i";
3198         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3199                           "  0   0   0   x      x   x   x   x",
3200                           "  x  a6  a5  a4     a3  a2  a1  a0",
3201                           "  i   i   i   i      i   i   i   i";
3203         writepage       = "  0   1   0   0      1   1   0   0",
3204                           "a15 a14 a13 a12    a11 a10  a9  a8",
3205                           " a7   x   x   x      x   x   x   x",
3206                           "  x   x   x   x      x   x   x   x";
3208         mode            = 0x41;
3209         delay           = 6;
3210         blocksize       = 256;
3211         readsize        = 256;
3212       ;
3214     memory "lfuse"
3215         size            = 1;
3216         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
3217                           "x x x x  x x x x  i i i i  i i i i";
3219         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
3220                           "x x x x  x x x x  o o o o  o o o o";
3221         min_write_delay = 9000;
3222         max_write_delay = 9000;
3223       ;
3225     memory "hfuse"
3226         size            = 1;
3227         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
3228                           "x x x x  x x x x  i i i i  i i i i";
3230         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
3231                           "x x x x  x x x x  o o o o  o o o o";
3232         min_write_delay = 9000;
3233         max_write_delay = 9000;
3234       ;
3236     memory "efuse"
3237         size            = 1;
3238         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
3239                           "x x x x  x x x x  x x x x  i i i i";
3241         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
3242                           "x x x x  x x x x  o o o o  o o o o";
3243         min_write_delay = 9000;
3244         max_write_delay = 9000;
3245       ;
3247     memory "lock"
3248         size            = 1;
3249         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3250                           "x x x x  x x x x   x x o o  o o o o";
3252         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3253                           "x x x x  x x x x   1 1 i i  i i i i";
3254         min_write_delay = 9000;
3255         max_write_delay = 9000;
3256       ;
3258     memory "calibration"
3259         size            = 1;
3260         read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
3261                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
3262       ;
3264     memory "signature"
3265         size            = 3;
3266         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
3267                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
3268       ;
3269   ;
3271 #------------------------------------------------------------
3272 # AT90CAN64
3273 #------------------------------------------------------------
3275 part
3276     id               = "c64";
3277     desc             = "AT90CAN64";
3278     has_jtag         = yes;
3279     stk500_devcode   = 0xB3;
3280 #    avr910_devcode   = 0x43;
3281     signature        = 0x1e 0x96 0x81;
3282     chip_erase_delay = 9000;
3283     pagel            = 0xD7;
3284     bs2              = 0xA0;
3285     reset            = dedicated;
3286     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
3287                        "x x x x  x x x x    x x x x  x x x x";
3289     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
3290                        "x x x x  x x x x    x x x x  x x x x";
3292     timeout             = 200;
3293     stabdelay           = 100;
3294     cmdexedelay         = 25;
3295     synchloops          = 32;
3296     bytedelay           = 0;
3297     pollindex           = 3;
3298     pollvalue           = 0x53;
3299     predelay            = 1;
3300     postdelay           = 1;
3301     pollmethod          = 1;
3303     pp_controlstack     =
3304         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
3305         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
3306         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
3307         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
3308     hventerstabdelay    = 100;
3309     progmodedelay       = 0;
3310     latchcycles         = 6;
3311     togglevtg           = 0;
3312     poweroffdelay       = 0;
3313     resetdelayms        = 0;
3314     resetdelayus        = 0;
3315     hvleavestabdelay    = 15;
3316     chiperasepulsewidth = 0;
3317     chiperasepolltimeout = 10;
3318     programfusepulsewidth = 0;
3319     programfusepolltimeout = 5;
3320     programlockpulsewidth = 0;
3321     programlockpolltimeout = 5;
3323     idr                 = 0x31;
3324     spmcr               = 0x57;
3325     rampz               = 0x3b;
3326     eecr                = 0x3f;
3327     allowfullpagebitstream = no;
3329     memory "eeprom"
3330         paged           = no; /* leave this "no" */
3331         page_size       = 8;  /* for parallel programming */
3332         size            = 2048;
3333         min_write_delay = 9000;
3334         max_write_delay = 9000;
3335         readback_p1     = 0xff;
3336         readback_p2     = 0xff;
3337         read            = "  1   0   1   0      0   0   0   0",
3338                           "  0   0   0   x      x a10  a9  a8",
3339                           " a7  a6  a5  a4     a3  a2  a1  a0",
3340                           "  o   o   o   o      o   o   o   o";
3342         write           = "  1   1   0   0      0   0   0   0",
3343                           "  0   0   0   x      x a10  a9  a8",
3344                           " a7  a6  a5  a4     a3  a2  a1  a0",
3345                           "  i   i   i   i      i   i   i   i";
3347         loadpage_lo     = "  1   1   0   0      0   0   0   1",
3348                           "  0   0   0   0      0   0   0   0",
3349                           "  0   0   0   0      0  a2  a1  a0",
3350                           "  i   i   i   i      i   i   i   i";
3352         writepage       = "  1   1   0   0      0   0   1   0",
3353                           "  0   0   x   x      x a10  a9  a8",
3354                           " a7  a6  a5  a4     a3   0   0   0",
3355                           "  x   x   x   x      x   x   x   x";
3358         mode            = 0x41;
3359         delay           = 20;
3360         blocksize       = 8;
3361         readsize        = 256;
3362       ;
3364     memory "flash"
3365         paged           = yes;
3366         size            = 65536;
3367         page_size       = 256;
3368         num_pages       = 256;
3369         min_write_delay = 4500;
3370         max_write_delay = 4500;
3371         readback_p1     = 0xff;
3372         readback_p2     = 0xff;
3373         read_lo         = "  0   0   1   0      0   0   0   0",
3374                           "a15 a14 a13 a12    a11 a10  a9  a8",
3375                           " a7  a6  a5  a4     a3  a2  a1  a0",
3376                           "  o   o   o   o      o   o   o   o";
3378         read_hi         = "  0   0   1   0      1   0   0   0",
3379                           "a15 a14 a13 a12    a11 a10  a9  a8",
3380                           " a7  a6  a5  a4     a3  a2  a1  a0",
3381                           "  o   o   o   o      o   o   o   o";
3383         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3384                           "  0   0   0   x      x   x   x   x",
3385                           "  x  a6  a5  a4     a3  a2  a1  a0",
3386                           "  i   i   i   i      i   i   i   i";
3388         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3389                           "  0   0   0   x      x   x   x   x",
3390                           "  x  a6  a5  a4     a3  a2  a1  a0",
3391                           "  i   i   i   i      i   i   i   i";
3393         writepage       = "  0   1   0   0      1   1   0   0",
3394                           "a15 a14 a13 a12    a11 a10  a9  a8",
3395                           " a7   x   x   x      x   x   x   x",
3396                           "  x   x   x   x      x   x   x   x";
3398         mode            = 0x41;
3399         delay           = 6;
3400         blocksize       = 256;
3401         readsize        = 256;
3402       ;
3404     memory "lfuse"
3405         size            = 1;
3406         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
3407                           "x x x x  x x x x  i i i i  i i i i";
3409         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
3410                           "x x x x  x x x x  o o o o  o o o o";
3411         min_write_delay = 9000;
3412         max_write_delay = 9000;
3413       ;
3415     memory "hfuse"
3416         size            = 1;
3417         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
3418                           "x x x x  x x x x  i i i i  i i i i";
3420         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
3421                           "x x x x  x x x x  o o o o  o o o o";
3422         min_write_delay = 9000;
3423         max_write_delay = 9000;
3424       ;
3426     memory "efuse"
3427         size            = 1;
3428         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
3429                           "x x x x  x x x x  x x x x  i i i i";
3431         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
3432                           "x x x x  x x x x  o o o o  o o o o";
3433         min_write_delay = 9000;
3434         max_write_delay = 9000;
3435       ;
3437     memory "lock"
3438         size            = 1;
3439         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3440                           "x x x x  x x x x   x x o o  o o o o";
3442         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3443                           "x x x x  x x x x   1 1 i i  i i i i";
3444         min_write_delay = 9000;
3445         max_write_delay = 9000;
3446       ;
3448     memory "calibration"
3449         size            = 1;
3450         read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
3451                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
3452       ;
3454     memory "signature"
3455         size            = 3;
3456         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
3457                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
3458       ;
3459   ;
3461 #------------------------------------------------------------
3462 # AT90CAN32
3463 #------------------------------------------------------------
3465 part
3466     id               = "c32";
3467     desc             = "AT90CAN32";
3468     has_jtag         = yes;
3469     stk500_devcode   = 0xB3;
3470 #    avr910_devcode   = 0x43;
3471     signature        = 0x1e 0x95 0x81;
3472     chip_erase_delay = 9000;
3473     pagel            = 0xD7;
3474     bs2              = 0xA0;
3475     reset            = dedicated;
3476     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
3477                        "x x x x  x x x x    x x x x  x x x x";
3479     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
3480                        "x x x x  x x x x    x x x x  x x x x";
3482     timeout             = 200;
3483     stabdelay           = 100;
3484     cmdexedelay         = 25;
3485     synchloops          = 32;
3486     bytedelay           = 0;
3487     pollindex           = 3;
3488     pollvalue           = 0x53;
3489     predelay            = 1;
3490     postdelay           = 1;
3491     pollmethod          = 1;
3493     pp_controlstack     =
3494         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
3495         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
3496         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
3497         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
3498     hventerstabdelay    = 100;
3499     progmodedelay       = 0;
3500     latchcycles         = 6;
3501     togglevtg           = 0;
3502     poweroffdelay       = 0;
3503     resetdelayms        = 0;
3504     resetdelayus        = 0;
3505     hvleavestabdelay    = 15;
3506     chiperasepulsewidth = 0;
3507     chiperasepolltimeout = 10;
3508     programfusepulsewidth = 0;
3509     programfusepolltimeout = 5;
3510     programlockpulsewidth = 0;
3511     programlockpolltimeout = 5;
3513     idr                 = 0x31;
3514     spmcr               = 0x57;
3515     rampz               = 0x3b;
3516     eecr                = 0x3f;
3517     allowfullpagebitstream = no;
3519     memory "eeprom"
3520         paged           = no; /* leave this "no" */
3521         page_size       = 8;  /* for parallel programming */
3522         size            = 1024;
3523         min_write_delay = 9000;
3524         max_write_delay = 9000;
3525         readback_p1     = 0xff;
3526         readback_p2     = 0xff;
3527         read            = "  1   0   1   0      0   0   0   0",
3528                           "  0   0   0   x      x   x  a9  a8",
3529                           " a7  a6  a5  a4     a3  a2  a1  a0",
3530                           "  o   o   o   o      o   o   o   o";
3532         write           = "  1   1   0   0      0   0   0   0",
3533                           "  0   0   0   x      x   x  a9  a8",
3534                           " a7  a6  a5  a4     a3  a2  a1  a0",
3535                           "  i   i   i   i      i   i   i   i";
3537         loadpage_lo     = "  1   1   0   0      0   0   0   1",
3538                           "  0   0   0   0      0   0   0   0",
3539                           "  0   0   0   0      0  a2  a1  a0",
3540                           "  i   i   i   i      i   i   i   i";
3542         writepage       = "  1   1   0   0      0   0   1   0",
3543                           "  0   0   x   x      x   x  a9  a8",
3544                           " a7  a6  a5  a4     a3   0   0   0",
3545                           "  x   x   x   x      x   x   x   x";
3548         mode            = 0x41;
3549         delay           = 20;
3550         blocksize       = 8;
3551         readsize        = 256;
3552       ;
3554     memory "flash"
3555         paged           = yes;
3556         size            = 32768;
3557         page_size       = 256;
3558         num_pages       = 128;
3559         min_write_delay = 4500;
3560         max_write_delay = 4500;
3561         readback_p1     = 0xff;
3562         readback_p2     = 0xff;
3563         read_lo         = "  0   0   1   0      0   0   0   0",
3564                           "a15 a14 a13 a12    a11 a10  a9  a8",
3565                           " a7  a6  a5  a4     a3  a2  a1  a0",
3566                           "  o   o   o   o      o   o   o   o";
3568         read_hi         = "  0   0   1   0      1   0   0   0",
3569                           "a15 a14 a13 a12    a11 a10  a9  a8",
3570                           " a7  a6  a5  a4     a3  a2  a1  a0",
3571                           "  o   o   o   o      o   o   o   o";
3573         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3574                           "  0   0   0   x      x   x   x   x",
3575                           "  x  a6  a5  a4     a3  a2  a1  a0",
3576                           "  i   i   i   i      i   i   i   i";
3578         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3579                           "  0   0   0   x      x   x   x   x",
3580                           "  x  a6  a5  a4     a3  a2  a1  a0",
3581                           "  i   i   i   i      i   i   i   i";
3583         writepage       = "  0   1   0   0      1   1   0   0",
3584                           "a15 a14 a13 a12    a11 a10  a9  a8",
3585                           " a7   x   x   x      x   x   x   x",
3586                           "  x   x   x   x      x   x   x   x";
3588         mode            = 0x41;
3589         delay           = 6;
3590         blocksize       = 256;
3591         readsize        = 256;
3592       ;
3594     memory "lfuse"
3595         size            = 1;
3596         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
3597                           "x x x x  x x x x  i i i i  i i i i";
3599         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
3600                           "x x x x  x x x x  o o o o  o o o o";
3601         min_write_delay = 9000;
3602         max_write_delay = 9000;
3603       ;
3605     memory "hfuse"
3606         size            = 1;
3607         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
3608                           "x x x x  x x x x  i i i i  i i i i";
3610         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
3611                           "x x x x  x x x x  o o o o  o o o o";
3612         min_write_delay = 9000;
3613         max_write_delay = 9000;
3614       ;
3616     memory "efuse"
3617         size            = 1;
3618         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
3619                           "x x x x  x x x x  x x x x  i i i i";
3621         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
3622                           "x x x x  x x x x  o o o o  o o o o";
3623         min_write_delay = 9000;
3624         max_write_delay = 9000;
3625       ;
3627     memory "lock"
3628         size            = 1;
3629         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3630                           "x x x x  x x x x   x x o o  o o o o";
3632         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3633                           "x x x x  x x x x   1 1 i i  i i i i";
3634         min_write_delay = 9000;
3635         max_write_delay = 9000;
3636       ;
3638     memory "calibration"
3639         size            = 1;
3640         read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
3641                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
3642       ;
3644     memory "signature"
3645         size            = 3;
3646         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
3647                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
3648       ;
3649   ;
3652 #------------------------------------------------------------
3653 # ATmega16
3654 #------------------------------------------------------------
3656 part
3657     id               = "m16";
3658     desc             = "ATMEGA16";
3659     has_jtag         = yes;
3660     stk500_devcode   = 0x82;
3661     avr910_devcode   = 0x74;
3662     signature        = 0x1e 0x94 0x03;
3663     pagel            = 0xd7;
3664     bs2              = 0xa0;
3665     chip_erase_delay = 9000;
3666     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
3667                        "x x x x  x x x x    x x x x  x x x x";
3669     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
3670                        "x x x x  x x x x    x x x x  x x x x";
3672     timeout             = 200;
3673     stabdelay           = 100;
3674     cmdexedelay         = 25;
3675     synchloops          = 32;
3676     bytedelay           = 0;
3677     pollindex           = 3;
3678     pollvalue           = 0x53;
3679     predelay            = 1;
3680     postdelay           = 1;
3681     pollmethod          = 0;
3683     pp_controlstack     =
3684         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
3685         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
3686         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
3687         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
3688     hventerstabdelay    = 100;
3689     progmodedelay       = 100;
3690     latchcycles         = 6;
3691     togglevtg           = 0;
3692     poweroffdelay       = 0;
3693     resetdelayms        = 0;
3694     resetdelayus        = 0;
3695     hvleavestabdelay    = 15;
3696     resetdelay          = 15;
3697     chiperasepulsewidth = 0;
3698     chiperasepolltimeout = 10;
3699     programfusepulsewidth = 0;
3700     programfusepolltimeout = 5;
3701     programlockpulsewidth = 0;
3702     programlockpolltimeout = 5;
3704     idr                 = 0x31;
3705     spmcr               = 0x57;
3706     allowfullpagebitstream = yes;
3708     memory "eeprom"
3709         paged           = no; /* leave this "no" */
3710         page_size       = 4;  /* for parallel programming */
3711         size            = 512;
3712         min_write_delay = 9000;
3713         max_write_delay = 9000;
3714         readback_p1     = 0xff;
3715         readback_p2     = 0xff;
3716         read            = "  1   0   1   0      0   0   0   0",
3717                           "  0   0   x   x      x   x  a9  a8",
3718                           " a7  a6  a5  a4     a3  a2  a1  a0",
3719                           "  o   o   o   o      o   o   o   o";
3721         write           = "  1   1   0   0      0   0   0   0",
3722                           "  0   0   x   x      x   x  a9  a8",
3723                           " a7  a6  a5  a4     a3  a2  a1  a0", 
3724                           "  i   i   i   i      i   i   i   i";
3726         loadpage_lo     = "  1   1   0   0      0   0   0   1",
3727                           "  0   0   0   0      0   0   0   0",
3728                           "  0   0   0   0      0   0  a1  a0",
3729                           "  i   i   i   i      i   i   i   i";
3731         writepage       = "  1   1   0   0      0   0   1   0",
3732                           "  0   0   x   x      x   x  a9  a8",
3733                           " a7  a6  a5  a4     a3  a2   0   0",
3734                           "  x   x   x   x      x   x   x   x";
3736         mode            = 0x04;
3737         delay           = 10;
3738         blocksize       = 128;
3739         readsize        = 256;
3740       ;
3742     memory "flash"
3743         paged           = yes;
3744         size            = 16384;
3745         page_size       = 128;
3746         num_pages       = 128;
3747         min_write_delay = 4500;
3748         max_write_delay = 4500;
3749         readback_p1     = 0xff;
3750         readback_p2     = 0xff;
3751         read_lo         = "  0   0   1   0      0   0   0   0",
3752                           "  0   0 a13 a12    a11 a10  a9  a8",
3753                           " a7  a6  a5  a4     a3  a2  a1  a0",
3754                           "  o   o   o   o      o   o   o   o";
3756         read_hi         = "  0   0   1   0      1   0   0   0",
3757                           "  0   0 a13 a12    a11 a10  a9  a8",
3758                           " a7  a6  a5  a4     a3  a2  a1  a0",
3759                           "  o   o   o   o      o   o   o   o";
3761         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3762                           "  0   0   x   x      x   x   x   x",
3763                           "  x   x  a5  a4     a3  a2  a1  a0",
3764                           "  i   i   i   i      i   i   i   i";
3766         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3767                           "  0   0   x   x      x   x   x   x",
3768                           "  x   x  a5  a4     a3  a2  a1  a0",
3769                           "  i   i   i   i      i   i   i   i";
3771         writepage       = "  0   1   0   0      1   1   0   0",
3772                           "  0   0 a13 a12    a11 a10  a9  a8",
3773                           " a7  a6   x   x      x   x   x   x",
3774                           "  x   x   x   x      x   x   x   x";
3776         mode            = 0x21;
3777         delay           = 6;
3778         blocksize       = 128;
3779         readsize        = 256;
3780       ;
3782     memory "lock"
3783         size            = 1;
3784         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3785                           "x x x x  x x x x   x x o o  o o o o";
3787         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3788                           "x x x x  x x x x   1 1 i i  i i i i";
3789         min_write_delay = 9000;
3790         max_write_delay = 9000;
3791       ;
3793     memory "lfuse"
3794         size            = 1;
3795         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
3796                           "x x x x  x x x x   o o o o  o o o o";
3798         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
3799                           "x x x x  x x x x   i i i i  i i i i";
3800         min_write_delay = 9000;
3801         max_write_delay = 9000;
3802       ;
3804     memory "hfuse"
3805         size            = 1;
3806         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
3807                           "x x x x  x x x x   o o o o  o o o o";
3809         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
3810                           "x x x x  x x x x   i i i i  i i i i";
3811         min_write_delay = 9000;
3812         max_write_delay = 9000;
3813       ;
3814     memory "signature"
3815         size            = 3;
3816         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
3817                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
3818       ;
3819     memory "calibration"
3820         size            = 4;
3822         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
3823                           "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
3824         ;
3825   ;
3828 #------------------------------------------------------------
3829 # ATmega164P
3830 #------------------------------------------------------------
3832 # close to ATmega16
3834 part
3835     id               = "m164p";
3836     desc             = "ATMEGA164P";
3837     has_jtag         = yes;
3838     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
3839     avr910_devcode   = 0x74;
3840     signature        = 0x1e 0x94 0x0a;
3841     pagel            = 0xd7;
3842     bs2              = 0xa0;
3843     chip_erase_delay = 9000;
3844     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
3845                        "x x x x  x x x x    x x x x  x x x x";
3847     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
3848                        "x x x x  x x x x    x x x x  x x x x";
3850     timeout             = 200;
3851     stabdelay           = 100;
3852     cmdexedelay         = 25;
3853     synchloops          = 32;
3854     bytedelay           = 0;
3855     pollindex           = 3;
3856     pollvalue           = 0x53;
3857     predelay            = 1;
3858     postdelay           = 1;
3859     pollmethod          = 0;
3861     pp_controlstack     =
3862         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
3863         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
3864         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
3865         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
3866     hventerstabdelay    = 100;
3867     progmodedelay       = 0;
3868     latchcycles         = 5;
3869     togglevtg           = 1;
3870     poweroffdelay       = 15;
3871     resetdelayms        = 1;
3872     resetdelayus        = 0;
3873     hvleavestabdelay    = 15;
3874     chiperasepulsewidth = 0;
3875     chiperasepolltimeout = 10;
3876     programfusepulsewidth = 0;
3877     programfusepolltimeout = 5;
3878     programlockpulsewidth = 0;
3879     programlockpolltimeout = 5;
3881     idr                 = 0x31;
3882     spmcr               = 0x57;
3883     allowfullpagebitstream = no;
3885     memory "eeprom"
3886         paged           = no; /* leave this "no" */
3887         page_size       = 4;  /* for parallel programming */
3888         size            = 512;
3889         min_write_delay = 9000;
3890         max_write_delay = 9000;
3891         readback_p1     = 0xff;
3892         readback_p2     = 0xff;
3893         read            = "  1   0   1   0      0   0   0   0",
3894                           "  0   0   x   x      x   x  a9  a8",
3895                           " a7  a6  a5  a4     a3  a2  a1  a0",
3896                           "  o   o   o   o      o   o   o   o";
3898         write           = "  1   1   0   0      0   0   0   0",
3899                           "  0   0   x   x      x   x  a9  a8",
3900                           " a7  a6  a5  a4     a3  a2  a1  a0", 
3901                           "  i   i   i   i      i   i   i   i";
3903         loadpage_lo     = "  1   1   0   0      0   0   0   1",
3904                           "  0   0   0   0      0   0   0   0",
3905                           "  0   0   0   0      0   0  a1  a0",
3906                           "  i   i   i   i      i   i   i   i";
3908         writepage       = "  1   1   0   0      0   0   1   0",
3909                           "  0   0   x   x      x   x  a9  a8",
3910                           " a7  a6  a5  a4     a3  a2   0   0",
3911                           "  x   x   x   x      x   x   x   x";
3913         mode            = 0x41;
3914         delay           = 10;
3915         blocksize       = 128;
3916         readsize        = 256;
3917       ;
3919     memory "flash"
3920         paged           = yes;
3921         size            = 16384;
3922         page_size       = 128;
3923         num_pages       = 128;
3924         min_write_delay = 4500;
3925         max_write_delay = 4500;
3926         readback_p1     = 0xff;
3927         readback_p2     = 0xff;
3928         read_lo         = "  0   0   1   0      0   0   0   0",
3929                           "  0   0 a13 a12    a11 a10  a9  a8",
3930                           " a7  a6  a5  a4     a3  a2  a1  a0",
3931                           "  o   o   o   o      o   o   o   o";
3933         read_hi         = "  0   0   1   0      1   0   0   0",
3934                           "  0   0 a13 a12    a11 a10  a9  a8",
3935                           " a7  a6  a5  a4     a3  a2  a1  a0",
3936                           "  o   o   o   o      o   o   o   o";
3938         loadpage_lo     = "  0   1   0   0      0   0   0   0",
3939                           "  0   0   x   x      x   x   x   x",
3940                           "  x   x  a5  a4     a3  a2  a1  a0",
3941                           "  i   i   i   i      i   i   i   i";
3943         loadpage_hi     = "  0   1   0   0      1   0   0   0",
3944                           "  0   0   x   x      x   x   x   x",
3945                           "  x   x  a5  a4     a3  a2  a1  a0",
3946                           "  i   i   i   i      i   i   i   i";
3948         writepage       = "  0   1   0   0      1   1   0   0",
3949                           "  0   0 a13 a12    a11 a10  a9  a8",
3950                           " a7  a6   x   x      x   x   x   x",
3951                           "  x   x   x   x      x   x   x   x";
3953         mode            = 0x21;
3954         delay           = 6;
3955         blocksize       = 128;
3956         readsize        = 256;
3957       ;
3959     memory "lock"
3960         size            = 1;
3961         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
3962                           "x x x x  x x x x   x x o o  o o o o";
3964         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
3965                           "x x x x  x x x x   1 1 i i  i i i i";
3966         min_write_delay = 9000;
3967         max_write_delay = 9000;
3968       ;
3970     memory "lfuse"
3971         size            = 1;
3972         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
3973                           "x x x x  x x x x   o o o o  o o o o";
3975         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
3976                           "x x x x  x x x x   i i i i  i i i i";
3977         min_write_delay = 9000;
3978         max_write_delay = 9000;
3979       ;
3981     memory "hfuse"
3982         size            = 1;
3983         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
3984                           "x x x x  x x x x   o o o o  o o o o";
3986         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
3987                           "x x x x  x x x x   i i i i  i i i i";
3988         min_write_delay = 9000;
3989         max_write_delay = 9000;
3990       ;
3992     memory "efuse"
3993         size            = 1;
3995         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
3996                           "x x x x  x x x x  o o o o  o o o o";
3998         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
3999                           "x x x x  x x x x  1 1 1 1  1 i i i";
4000         min_write_delay = 9000;
4001         max_write_delay = 9000;
4002       ;
4004     memory "signature"
4005         size            = 3;
4006         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4007                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4008       ;
4010     memory "calibration"
4011         size            = 1;
4013         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4014                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4015         ;
4016   ;
4019 #------------------------------------------------------------
4020 # ATmega324P
4021 #------------------------------------------------------------
4023 # similar to ATmega164P
4025 part
4026     id               = "m324p";
4027     desc             = "ATMEGA324P";
4028     has_jtag         = yes;
4029     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
4030     avr910_devcode   = 0x74;
4031     signature        = 0x1e 0x95 0x08;
4032     pagel            = 0xd7;
4033     bs2              = 0xa0;
4034     chip_erase_delay = 9000;
4035     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4036                        "x x x x  x x x x    x x x x  x x x x";
4038     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4039                        "x x x x  x x x x    x x x x  x x x x";
4041     timeout             = 200;
4042     stabdelay           = 100;
4043     cmdexedelay         = 25;
4044     synchloops          = 32;
4045     bytedelay           = 0;
4046     pollindex           = 3;
4047     pollvalue           = 0x53;
4048     predelay            = 1;
4049     postdelay           = 1;
4050     pollmethod          = 0;
4052     pp_controlstack     =
4053         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
4054         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
4055         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
4056         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
4057     hventerstabdelay    = 100;
4058     progmodedelay       = 0;
4059     latchcycles         = 5;
4060     togglevtg           = 1;
4061     poweroffdelay       = 15;
4062     resetdelayms        = 1;
4063     resetdelayus        = 0;
4064     hvleavestabdelay    = 15;
4065     chiperasepulsewidth = 0;
4066     chiperasepolltimeout = 10;
4067     programfusepulsewidth = 0;
4068     programfusepolltimeout = 5;
4069     programlockpulsewidth = 0;
4070     programlockpolltimeout = 5;
4072     idr                 = 0x31;
4073     spmcr               = 0x57;
4074     allowfullpagebitstream = no;
4076     memory "eeprom"
4077         paged           = no; /* leave this "no" */
4078         page_size       = 4;  /* for parallel programming */
4079         size            = 1024;
4080         min_write_delay = 9000;
4081         max_write_delay = 9000;
4082         readback_p1     = 0xff;
4083         readback_p2     = 0xff;
4084         read            = "  1   0   1   0      0   0   0   0",
4085                           "  0   0   x   x      x a10  a9  a8",
4086                           " a7  a6  a5  a4     a3  a2  a1  a0",
4087                           "  o   o   o   o      o   o   o   o";
4089         write           = "  1   1   0   0      0   0   0   0",
4090                           "  0   0   x   x      x a10  a9  a8",
4091                           " a7  a6  a5  a4     a3  a2  a1  a0", 
4092                           "  i   i   i   i      i   i   i   i";
4094         loadpage_lo     = "  1   1   0   0      0   0   0   1",
4095                           "  0   0   0   0      0   0   0   0",
4096                           "  0   0   0   0      0   0  a1  a0",
4097                           "  i   i   i   i      i   i   i   i";
4099         writepage       = "  1   1   0   0      0   0   1   0",
4100                           "  0   0   x   x      x a10  a9  a8",
4101                           " a7  a6  a5  a4     a3  a2   0   0",
4102                           "  x   x   x   x      x   x   x   x";
4104         mode            = 0x41;
4105         delay           = 10;
4106         blocksize       = 128;
4107         readsize        = 256;
4108       ;
4110     memory "flash"
4111         paged           = yes;
4112         size            = 32768;
4113         page_size       = 128;
4114         num_pages       = 256;
4115         min_write_delay = 4500;
4116         max_write_delay = 4500;
4117         readback_p1     = 0xff;
4118         readback_p2     = 0xff;
4119         read_lo         = "  0   0   1   0      0   0   0   0",
4120                           "  0 a14 a13 a12    a11 a10  a9  a8",
4121                           " a7  a6  a5  a4     a3  a2  a1  a0",
4122                           "  o   o   o   o      o   o   o   o";
4124         read_hi         = "  0   0   1   0      1   0   0   0",
4125                           "  0 a14 a13 a12    a11 a10  a9  a8",
4126                           " a7  a6  a5  a4     a3  a2  a1  a0",
4127                           "  o   o   o   o      o   o   o   o";
4129         loadpage_lo     = "  0   1   0   0      0   0   0   0",
4130                           "  0   0   x   x      x   x   x   x",
4131                           "  x   x  a5  a4     a3  a2  a1  a0",
4132                           "  i   i   i   i      i   i   i   i";
4134         loadpage_hi     = "  0   1   0   0      1   0   0   0",
4135                           "  0   0   x   x      x   x   x   x",
4136                           "  x   x  a5  a4     a3  a2  a1  a0",
4137                           "  i   i   i   i      i   i   i   i";
4139         writepage       = "  0   1   0   0      1   1   0   0",
4140                           "  0 a14 a13 a12    a11 a10  a9  a8",
4141                           " a7  a6   x   x      x   x   x   x",
4142                           "  x   x   x   x      x   x   x   x";
4144         mode            = 0x21;
4145         delay           = 6;
4146         blocksize       = 256;
4147         readsize        = 256;
4148       ;
4150     memory "lock"
4151         size            = 1;
4152         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
4153                           "x x x x  x x x x   x x o o  o o o o";
4155         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
4156                           "x x x x  x x x x   1 1 i i  i i i i";
4157         min_write_delay = 9000;
4158         max_write_delay = 9000;
4159       ;
4161     memory "lfuse"
4162         size            = 1;
4163         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
4164                           "x x x x  x x x x   o o o o  o o o o";
4166         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
4167                           "x x x x  x x x x   i i i i  i i i i";
4168         min_write_delay = 9000;
4169         max_write_delay = 9000;
4170       ;
4172     memory "hfuse"
4173         size            = 1;
4174         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
4175                           "x x x x  x x x x   o o o o  o o o o";
4177         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
4178                           "x x x x  x x x x   i i i i  i i i i";
4179         min_write_delay = 9000;
4180         max_write_delay = 9000;
4181       ;
4183     memory "efuse"
4184         size            = 1;
4186         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
4187                           "x x x x  x x x x  o o o o  o o o o";
4189         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
4190                           "x x x x  x x x x  1 1 1 1  1 i i i";
4191         min_write_delay = 9000;
4192         max_write_delay = 9000;
4193       ;
4195     memory "signature"
4196         size            = 3;
4197         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4198                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4199       ;
4201     memory "calibration"
4202         size            = 1;
4204         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4205                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4206         ;
4207   ;
4210 #------------------------------------------------------------
4211 # ATmega324PA
4212 #------------------------------------------------------------
4214 # similar to ATmega324P
4216 part
4217     id               = "m324pa";
4218     desc             = "ATmega324PA";
4219     has_jtag         = yes;
4220     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
4221     avr910_devcode   = 0x74;
4222     signature        = 0x1e 0x95 0x11;
4223     pagel            = 0xd7;
4224     bs2              = 0xa0;
4225     chip_erase_delay = 9000;
4226     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4227                        "x x x x  x x x x    x x x x  x x x x";
4229     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4230                        "x x x x  x x x x    x x x x  x x x x";
4232     timeout             = 200;
4233     stabdelay           = 100;
4234     cmdexedelay         = 25;
4235     synchloops          = 32;
4236     bytedelay           = 0;
4237     pollindex           = 3;
4238     pollvalue           = 0x53;
4239     predelay            = 1;
4240     postdelay           = 1;
4241     pollmethod          = 0;
4243     pp_controlstack     =
4244         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
4245         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
4246         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
4247         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
4248     hventerstabdelay    = 100;
4249     progmodedelay       = 0;
4250     latchcycles         = 5;
4251     togglevtg           = 1;
4252     poweroffdelay       = 15;
4253     resetdelayms        = 1;
4254     resetdelayus        = 0;
4255     hvleavestabdelay    = 15;
4256     chiperasepulsewidth = 0;
4257     chiperasepolltimeout = 10;
4258     programfusepulsewidth = 0;
4259     programfusepolltimeout = 5;
4260     programlockpulsewidth = 0;
4261     programlockpolltimeout = 5;
4263     idr                 = 0x31;
4264     spmcr               = 0x57;
4265     allowfullpagebitstream = no;
4267     memory "eeprom"
4268         paged           = no; /* leave this "no" */
4269         page_size       = 4;  /* for parallel programming */
4270         size            = 1024;
4271         min_write_delay = 9000;
4272         max_write_delay = 9000;
4273         readback_p1     = 0xff;
4274         readback_p2     = 0xff;
4275         read            = "  1   0   1   0      0   0   0   0",
4276                           "  0   0   x   x      x a10  a9  a8",
4277                           " a7  a6  a5  a4     a3  a2  a1  a0",
4278                           "  o   o   o   o      o   o   o   o";
4280         write           = "  1   1   0   0      0   0   0   0",
4281                           "  0   0   x   x      x a10  a9  a8",
4282                           " a7  a6  a5  a4     a3  a2  a1  a0", 
4283                           "  i   i   i   i      i   i   i   i";
4285         loadpage_lo     = "  1   1   0   0      0   0   0   1",
4286                           "  0   0   0   0      0   0   0   0",
4287                           "  0   0   0   0      0   0  a1  a0",
4288                           "  i   i   i   i      i   i   i   i";
4290         writepage       = "  1   1   0   0      0   0   1   0",
4291                           "  0   0   x   x      x a10  a9  a8",
4292                           " a7  a6  a5  a4     a3  a2   0   0",
4293                           "  x   x   x   x      x   x   x   x";
4295         mode            = 0x41;
4296         delay           = 10;
4297         blocksize       = 128;
4298         readsize        = 256;
4299       ;
4301     memory "flash"
4302         paged           = yes;
4303         size            = 32768;
4304         page_size       = 128;
4305         num_pages       = 256;
4306         min_write_delay = 4500;
4307         max_write_delay = 4500;
4308         readback_p1     = 0xff;
4309         readback_p2     = 0xff;
4310         read_lo         = "  0   0   1   0      0   0   0   0",
4311                           "  0 a14 a13 a12    a11 a10  a9  a8",
4312                           " a7  a6  a5  a4     a3  a2  a1  a0",
4313                           "  o   o   o   o      o   o   o   o";
4315         read_hi         = "  0   0   1   0      1   0   0   0",
4316                           "  0 a14 a13 a12    a11 a10  a9  a8",
4317                           " a7  a6  a5  a4     a3  a2  a1  a0",
4318                           "  o   o   o   o      o   o   o   o";
4320         loadpage_lo     = "  0   1   0   0      0   0   0   0",
4321                           "  0   0   x   x      x   x   x   x",
4322                           "  x   x  a5  a4     a3  a2  a1  a0",
4323                           "  i   i   i   i      i   i   i   i";
4325         loadpage_hi     = "  0   1   0   0      1   0   0   0",
4326                           "  0   0   x   x      x   x   x   x",
4327                           "  x   x  a5  a4     a3  a2  a1  a0",
4328                           "  i   i   i   i      i   i   i   i";
4330         writepage       = "  0   1   0   0      1   1   0   0",
4331                           "  0 a14 a13 a12    a11 a10  a9  a8",
4332                           " a7  a6   x   x      x   x   x   x",
4333                           "  x   x   x   x      x   x   x   x";
4335         mode            = 0x21;
4336         delay           = 6;
4337         blocksize       = 256;
4338         readsize        = 256;
4339       ;
4341     memory "lock"
4342         size            = 1;
4343         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
4344                           "x x x x  x x x x   x x o o  o o o o";
4346         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
4347                           "x x x x  x x x x   1 1 i i  i i i i";
4348         min_write_delay = 9000;
4349         max_write_delay = 9000;
4350       ;
4352     memory "lfuse"
4353         size            = 1;
4354         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
4355                           "x x x x  x x x x   o o o o  o o o o";
4357         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
4358                           "x x x x  x x x x   i i i i  i i i i";
4359         min_write_delay = 9000;
4360         max_write_delay = 9000;
4361       ;
4363     memory "hfuse"
4364         size            = 1;
4365         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
4366                           "x x x x  x x x x   o o o o  o o o o";
4368         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
4369                           "x x x x  x x x x   i i i i  i i i i";
4370         min_write_delay = 9000;
4371         max_write_delay = 9000;
4372       ;
4374     memory "efuse"
4375         size            = 1;
4377         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
4378                           "x x x x  x x x x  o o o o  o o o o";
4380         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
4381                           "x x x x  x x x x  1 1 1 1  1 i i i";
4382         min_write_delay = 9000;
4383         max_write_delay = 9000;
4384       ;
4386     memory "signature"
4387         size            = 3;
4388         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4389                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4390       ;
4392     memory "calibration"
4393         size            = 1;
4395         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4396                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4397         ;
4398   ;
4401 #------------------------------------------------------------
4402 # ATmega644
4403 #------------------------------------------------------------
4405 # similar to ATmega164
4407 part
4408     id               = "m644";
4409     desc             = "ATMEGA644";
4410     has_jtag         = yes;
4411     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
4412     avr910_devcode   = 0x74;
4413     signature        = 0x1e 0x96 0x09;
4414     pagel            = 0xd7;
4415     bs2              = 0xa0;
4416     chip_erase_delay = 9000;
4417     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4418                        "x x x x  x x x x    x x x x  x x x x";
4420     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4421                        "x x x x  x x x x    x x x x  x x x x";
4423     timeout             = 200;
4424     stabdelay           = 100;
4425     cmdexedelay         = 25;
4426     synchloops          = 32;
4427     bytedelay           = 0;
4428     pollindex           = 3;
4429     pollvalue           = 0x53;
4430     predelay            = 1;
4431     postdelay           = 1;
4432     pollmethod          = 0;
4434     pp_controlstack     =
4435         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
4436         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
4437         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
4438         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
4439     hventerstabdelay    = 100;
4440     progmodedelay       = 0;
4441     latchcycles         = 6;
4442     togglevtg           = 0;
4443     poweroffdelay       = 0;
4444     resetdelayms        = 0;
4445     resetdelayus        = 0;
4446     hvleavestabdelay    = 15;
4447     chiperasepulsewidth = 0;
4448     chiperasepolltimeout = 10;
4449     programfusepulsewidth = 0;
4450     programfusepolltimeout = 5;
4451     programlockpulsewidth = 0;
4452     programlockpolltimeout = 5;
4454     idr                 = 0x31;
4455     spmcr               = 0x57;
4456     allowfullpagebitstream = no;
4458     memory "eeprom"
4459         paged           = no; /* leave this "no" */
4460         page_size       = 8;  /* for parallel programming */
4461         size            = 2048;
4462         min_write_delay = 9000;
4463         max_write_delay = 9000;
4464         readback_p1     = 0xff;
4465         readback_p2     = 0xff;
4466         read            = "  1   0   1   0      0   0   0   0",
4467                           "  0   0   x   x    a11 a10  a9  a8",
4468                           " a7  a6  a5  a4     a3  a2  a1  a0",
4469                           "  o   o   o   o      o   o   o   o";
4471         write           = "  1   1   0   0      0   0   0   0",
4472                           "  0   0   x   x    a11 a10  a9  a8",
4473                           " a7  a6  a5  a4     a3  a2  a1  a0", 
4474                           "  i   i   i   i      i   i   i   i";
4476         loadpage_lo     = "  1   1   0   0      0   0   0   1",
4477                           "  0   0   0   0      0   0   0   0",
4478                           "  0   0   0   0      0  a2  a1  a0",
4479                           "  i   i   i   i      i   i   i   i";
4481         writepage       = "  1   1   0   0      0   0   1   0",
4482                           "  0   0   x   x    a11 a10  a9  a8",
4483                           " a7  a6  a5  a4     a3   0   0   0",
4484                           "  x   x   x   x      x   x   x   x";
4486         mode            = 0x41;
4487         delay           = 10;
4488         blocksize       = 128;
4489         readsize        = 256;
4490       ;
4492     memory "flash"
4493         paged           = yes;
4494         size            = 65536;
4495         page_size       = 256;
4496         num_pages       = 256;
4497         min_write_delay = 4500;
4498         max_write_delay = 4500;
4499         readback_p1     = 0xff;
4500         readback_p2     = 0xff;
4501         read_lo         = "  0   0   1   0      0   0   0   0",
4502                           "a15 a14 a13 a12    a11 a10  a9  a8",
4503                           " a7  a6  a5  a4     a3  a2  a1  a0",
4504                           "  o   o   o   o      o   o   o   o";
4506         read_hi         = "  0   0   1   0      1   0   0   0",
4507                           "a15 a14 a13 a12    a11 a10  a9  a8",
4508                           " a7  a6  a5  a4     a3  a2  a1  a0",
4509                           "  o   o   o   o      o   o   o   o";
4511         loadpage_lo     = "  0   1   0   0      0   0   0   0",
4512                           "  0   0   x   x      x   x   x   x",
4513                           "  x  a6  a5  a4     a3  a2  a1  a0",
4514                           "  i   i   i   i      i   i   i   i";
4516         loadpage_hi     = "  0   1   0   0      1   0   0   0",
4517                           "  0   0   x   x      x   x   x   x",
4518                           "  x  a6  a5  a4     a3  a2  a1  a0",
4519                           "  i   i   i   i      i   i   i   i";
4521         writepage       = "  0   1   0   0      1   1   0   0",
4522                           "a15 a14 a13 a12    a11 a10  a9  a8",
4523                           " a7   x   x   x      x   x   x   x",
4524                           "  x   x   x   x      x   x   x   x";
4526         mode            = 0x21;
4527         delay           = 6;
4528         blocksize       = 256;
4529         readsize        = 256;
4530       ;
4532     memory "lock"
4533         size            = 1;
4534         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
4535                           "x x x x  x x x x   x x o o  o o o o";
4537         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
4538                           "x x x x  x x x x   1 1 i i  i i i i";
4539         min_write_delay = 9000;
4540         max_write_delay = 9000;
4541       ;
4543     memory "lfuse"
4544         size            = 1;
4545         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
4546                           "x x x x  x x x x   o o o o  o o o o";
4548         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
4549                           "x x x x  x x x x   i i i i  i i i i";
4550         min_write_delay = 9000;
4551         max_write_delay = 9000;
4552       ;
4554     memory "hfuse"
4555         size            = 1;
4556         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
4557                           "x x x x  x x x x   o o o o  o o o o";
4559         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
4560                           "x x x x  x x x x   i i i i  i i i i";
4561         min_write_delay = 9000;
4562         max_write_delay = 9000;
4563       ;
4565     memory "efuse"
4566         size            = 1;
4568         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
4569                           "x x x x  x x x x  o o o o  o o o o";
4571         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
4572                           "x x x x  x x x x  1 1 1 1  1 i i i";
4573         min_write_delay = 9000;
4574         max_write_delay = 9000;
4575       ;
4577     memory "signature"
4578         size            = 3;
4579         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4580                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4581       ;
4583     memory "calibration"
4584         size            = 1;
4586         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4587                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4588         ;
4589   ;
4591 #------------------------------------------------------------
4592 # ATmega644P
4593 #------------------------------------------------------------
4595 # similar to ATmega164p
4597 part
4598     id               = "m644p";
4599     desc             = "ATMEGA644P";
4600     has_jtag         = yes;
4601     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
4602     avr910_devcode   = 0x74;
4603     signature        = 0x1e 0x96 0x0a;
4604     pagel            = 0xd7;
4605     bs2              = 0xa0;
4606     chip_erase_delay = 9000;
4607     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4608                        "x x x x  x x x x    x x x x  x x x x";
4610     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4611                        "x x x x  x x x x    x x x x  x x x x";
4613     timeout             = 200;
4614     stabdelay           = 100;
4615     cmdexedelay         = 25;
4616     synchloops          = 32;
4617     bytedelay           = 0;
4618     pollindex           = 3;
4619     pollvalue           = 0x53;
4620     predelay            = 1;
4621     postdelay           = 1;
4622     pollmethod          = 0;
4624     pp_controlstack     =
4625         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
4626         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
4627         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
4628         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
4629     hventerstabdelay    = 100;
4630     progmodedelay       = 0;
4631     latchcycles         = 6;
4632     togglevtg           = 0;
4633     poweroffdelay       = 0;
4634     resetdelayms        = 0;
4635     resetdelayus        = 0;
4636     hvleavestabdelay    = 15;
4637     chiperasepulsewidth = 0;
4638     chiperasepolltimeout = 10;
4639     programfusepulsewidth = 0;
4640     programfusepolltimeout = 5;
4641     programlockpulsewidth = 0;
4642     programlockpolltimeout = 5;
4644     idr                 = 0x31;
4645     spmcr               = 0x57;
4646     allowfullpagebitstream = no;
4648     memory "eeprom"
4649         paged           = no; /* leave this "no" */
4650         page_size       = 8;  /* for parallel programming */
4651         size            = 2048;
4652         min_write_delay = 9000;
4653         max_write_delay = 9000;
4654         readback_p1     = 0xff;
4655         readback_p2     = 0xff;
4656         read            = "  1   0   1   0      0   0   0   0",
4657                           "  0   0   x   x    a11 a10  a9  a8",
4658                           " a7  a6  a5  a4     a3  a2  a1  a0",
4659                           "  o   o   o   o      o   o   o   o";
4661         write           = "  1   1   0   0      0   0   0   0",
4662                           "  0   0   x   x    a11 a10  a9  a8",
4663                           " a7  a6  a5  a4     a3  a2  a1  a0", 
4664                           "  i   i   i   i      i   i   i   i";
4666         loadpage_lo     = "  1   1   0   0      0   0   0   1",
4667                           "  0   0   0   0      0   0   0   0",
4668                           "  0   0   0   0      0  a2  a1  a0",
4669                           "  i   i   i   i      i   i   i   i";
4671         writepage       = "  1   1   0   0      0   0   1   0",
4672                           "  0   0   x   x    a11 a10  a9  a8",
4673                           " a7  a6  a5  a4     a3   0   0   0",
4674                           "  x   x   x   x      x   x   x   x";
4676         mode            = 0x41;
4677         delay           = 10;
4678         blocksize       = 128;
4679         readsize        = 256;
4680       ;
4682     memory "flash"
4683         paged           = yes;
4684         size            = 65536;
4685         page_size       = 256;
4686         num_pages       = 256;
4687         min_write_delay = 4500;
4688         max_write_delay = 4500;
4689         readback_p1     = 0xff;
4690         readback_p2     = 0xff;
4691         read_lo         = "  0   0   1   0      0   0   0   0",
4692                           "a15 a14 a13 a12    a11 a10  a9  a8",
4693                           " a7  a6  a5  a4     a3  a2  a1  a0",
4694                           "  o   o   o   o      o   o   o   o";
4696         read_hi         = "  0   0   1   0      1   0   0   0",
4697                           "a15 a14 a13 a12    a11 a10  a9  a8",
4698                           " a7  a6  a5  a4     a3  a2  a1  a0",
4699                           "  o   o   o   o      o   o   o   o";
4701         loadpage_lo     = "  0   1   0   0      0   0   0   0",
4702                           "  0   0   x   x      x   x   x   x",
4703                           "  x  a6  a5  a4     a3  a2  a1  a0",
4704                           "  i   i   i   i      i   i   i   i";
4706         loadpage_hi     = "  0   1   0   0      1   0   0   0",
4707                           "  0   0   x   x      x   x   x   x",
4708                           "  x  a6  a5  a4     a3  a2  a1  a0",
4709                           "  i   i   i   i      i   i   i   i";
4711         writepage       = "  0   1   0   0      1   1   0   0",
4712                           "a15 a14 a13 a12    a11 a10  a9  a8",
4713                           " a7   x   x   x      x   x   x   x",
4714                           "  x   x   x   x      x   x   x   x";
4716         mode            = 0x21;
4717         delay           = 6;
4718         blocksize       = 256;
4719         readsize        = 256;
4720       ;
4722     memory "lock"
4723         size            = 1;
4724         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
4725                           "x x x x  x x x x   x x o o  o o o o";
4727         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
4728                           "x x x x  x x x x   1 1 i i  i i i i";
4729         min_write_delay = 9000;
4730         max_write_delay = 9000;
4731       ;
4733     memory "lfuse"
4734         size            = 1;
4735         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
4736                           "x x x x  x x x x   o o o o  o o o o";
4738         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
4739                           "x x x x  x x x x   i i i i  i i i i";
4740         min_write_delay = 9000;
4741         max_write_delay = 9000;
4742       ;
4744     memory "hfuse"
4745         size            = 1;
4746         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
4747                           "x x x x  x x x x   o o o o  o o o o";
4749         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
4750                           "x x x x  x x x x   i i i i  i i i i";
4751         min_write_delay = 9000;
4752         max_write_delay = 9000;
4753       ;
4755     memory "efuse"
4756         size            = 1;
4758         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
4759                           "x x x x  x x x x  o o o o  o o o o";
4761         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
4762                           "x x x x  x x x x  1 1 1 1  1 i i i";
4763         min_write_delay = 9000;
4764         max_write_delay = 9000;
4765       ;
4767     memory "signature"
4768         size            = 3;
4769         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4770                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4771       ;
4773     memory "calibration"
4774         size            = 1;
4776         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4777                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4778         ;
4779   ;
4783 #------------------------------------------------------------
4784 # ATmega1284P
4785 #------------------------------------------------------------
4787 # similar to ATmega164p
4789 part
4790     id               = "m1284p";
4791     desc             = "ATMEGA1284P";
4792     has_jtag         = yes;
4793     stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
4794     avr910_devcode   = 0x74;
4795     signature        = 0x1e 0x97 0x05;
4796     pagel            = 0xd7;
4797     bs2              = 0xa0;
4798     chip_erase_delay = 9000;
4799     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4800                        "x x x x  x x x x    x x x x  x x x x";
4802     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4803                        "x x x x  x x x x    x x x x  x x x x";
4805     timeout             = 200;
4806     stabdelay           = 100;
4807     cmdexedelay         = 25;
4808     synchloops          = 32;
4809     bytedelay           = 0;
4810     pollindex           = 3;
4811     pollvalue           = 0x53;
4812     predelay            = 1;
4813     postdelay           = 1;
4814     pollmethod          = 1;
4816     pp_controlstack     =
4817         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
4818         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
4819         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
4820         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
4821     hventerstabdelay    = 100;
4822     progmodedelay       = 0;
4823     latchcycles         = 6;
4824     togglevtg           = 1;
4825     poweroffdelay       = 15;
4826     resetdelayms        = 1;
4827     resetdelayus        = 0;
4828     hvleavestabdelay    = 15;
4829     chiperasepulsewidth = 0;
4830     chiperasepolltimeout = 10;
4831     programfusepulsewidth = 0;
4832     programfusepolltimeout = 5;
4833     programlockpulsewidth = 0;
4834     programlockpolltimeout = 5;
4836     idr                 = 0x31;
4837     spmcr               = 0x57;
4838     allowfullpagebitstream = no;
4840     memory "eeprom"
4841         paged           = no; /* leave this "no" */
4842         page_size       = 8;  /* for parallel programming */
4843         size            = 4096;
4844         min_write_delay = 9000;
4845         max_write_delay = 9000;
4846         readback_p1     = 0xff;
4847         readback_p2     = 0xff;
4848         read            = "  1   0   1   0      0   0   0   0",
4849                           "  0   0   x   x    a11 a10  a9  a8",
4850                           " a7  a6  a5  a4     a3  a2  a1  a0",
4851                           "  o   o   o   o      o   o   o   o";
4853         write           = "  1   1   0   0      0   0   0   0",
4854                           "  0   0   x   x    a11 a10  a9  a8",
4855                           " a7  a6  a5  a4     a3  a2  a1  a0", 
4856                           "  i   i   i   i      i   i   i   i";
4858         loadpage_lo     = "  1   1   0   0      0   0   0   1",
4859                           "  0   0   0   0      0   0   0   0",
4860                           "  0   0   0   0      0  a2  a1  a0",
4861                           "  i   i   i   i      i   i   i   i";
4863         writepage       = "  1   1   0   0      0   0   1   0",
4864                           "  0   0   x   x    a11 a10  a9  a8",
4865                           " a7  a6  a5  a4     a3   0   0   0",
4866                           "  x   x   x   x      x   x   x   x";
4868         mode            = 0x41;
4869         delay           = 10;
4870         blocksize       = 128;
4871         readsize        = 256;
4872       ;
4874     memory "flash"
4875         paged           = yes;
4876         size            = 131072;
4877         page_size       = 256;
4878         num_pages       = 512;
4879         min_write_delay = 4500;
4880         max_write_delay = 4500;
4881         readback_p1     = 0xff;
4882         readback_p2     = 0xff;
4883         read_lo         = "  0   0   1   0      0   0   0   0",
4884                           "a15 a14 a13 a12    a11 a10  a9  a8",
4885                           " a7  a6  a5  a4     a3  a2  a1  a0",
4886                           "  o   o   o   o      o   o   o   o";
4888         read_hi         = "  0   0   1   0      1   0   0   0",
4889                           "a15 a14 a13 a12    a11 a10  a9  a8",
4890                           " a7  a6  a5  a4     a3  a2  a1  a0",
4891                           "  o   o   o   o      o   o   o   o";
4893         loadpage_lo     = "  0   1   0   0      0   0   0   0",
4894                           "  0   0   x   x      x   x   x   x",
4895                           "  x  a6  a5  a4     a3  a2  a1  a0",
4896                           "  i   i   i   i      i   i   i   i";
4898         loadpage_hi     = "  0   1   0   0      1   0   0   0",
4899                           "  0   0   x   x      x   x   x   x",
4900                           "  x  a6  a5  a4     a3  a2  a1  a0",
4901                           "  i   i   i   i      i   i   i   i";
4903         writepage       = "  0   1   0   0      1   1   0   0",
4904                           "a15 a14 a13 a12    a11 a10  a9  a8",
4905                           " a7   x   x   x      x   x   x   x",
4906                           "  x   x   x   x      x   x   x   x";
4908         mode            = 0x41;
4909         delay           = 10;
4910         blocksize       = 256;
4911         readsize        = 256;
4912       ;
4914     memory "lock"
4915         size            = 1;
4916         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
4917                           "x x x x  x x x x   x x o o  o o o o";
4919         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
4920                           "x x x x  x x x x   1 1 i i  i i i i";
4921         min_write_delay = 9000;
4922         max_write_delay = 9000;
4923       ;
4925     memory "lfuse"
4926         size            = 1;
4927         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
4928                           "x x x x  x x x x   o o o o  o o o o";
4930         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
4931                           "x x x x  x x x x   i i i i  i i i i";
4932         min_write_delay = 9000;
4933         max_write_delay = 9000;
4934       ;
4936     memory "hfuse"
4937         size            = 1;
4938         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
4939                           "x x x x  x x x x   o o o o  o o o o";
4941         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
4942                           "x x x x  x x x x   i i i i  i i i i";
4943         min_write_delay = 9000;
4944         max_write_delay = 9000;
4945       ;
4947     memory "efuse"
4948         size            = 1;
4950         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
4951                           "x x x x  x x x x  o o o o  o o o o";
4953         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
4954                           "x x x x  x x x x  1 1 1 1  1 i i i";
4955         min_write_delay = 9000;
4956         max_write_delay = 9000;
4957       ;
4959     memory "signature"
4960         size            = 3;
4961         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
4962                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
4963       ;
4965     memory "calibration"
4966         size            = 1;
4968         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
4969                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
4970         ;
4971   ;
4975 #------------------------------------------------------------
4976 # ATmega162
4977 #------------------------------------------------------------
4979 part
4980     id               = "m162";
4981     desc             = "ATMEGA162";
4982     has_jtag         = yes;
4983     stk500_devcode   = 0x83;
4984     avr910_devcode   = 0x63;
4985     signature        = 0x1e 0x94 0x04;
4986     chip_erase_delay = 9000;
4987     pagel            = 0xd7;
4988     bs2              = 0xa0;
4990     idr              = 0x04;
4991     spmcr            = 0x57;
4992     allowfullpagebitstream = yes;
4994     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
4995                        "x x x x  x x x x    x x x x  x x x x";
4997     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
4998                        "x x x x  x x x x    x x x x  x x x x";
5000     memory "flash"
5001         paged           = yes;
5002         size            = 16384;
5003         page_size       = 128;
5004         num_pages       = 128;
5005         min_write_delay = 4500;
5006         max_write_delay = 4500;
5007         readback_p1     = 0xff;
5008         readback_p2     = 0xff;
5010         read_lo         = "  0   0   1   0      0   0   0   0",
5011                           "  0   0 a13 a12    a11 a10  a9  a8",
5012                           " a7  a6  a5  a4     a3  a2  a1  a0",
5013                           "  o   o   o   o      o   o   o   o";
5015         read_hi         = "  0   0   1   0      1   0   0   0",
5016                           "  0   0 a13 a12    a11 a10  a9  a8",
5017                           " a7  a6  a5  a4     a3  a2  a1  a0",
5018                           "  o   o   o   o      o   o   o   o";
5020         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5021                           "  0   0   x   x      x   x   x   x",
5022                           "  x   x  a5  a4     a3  a2  a1  a0",
5023                           "  i   i   i   i      i   i   i   i";
5025         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5026                           "  0   0   x   x      x   x   x   x",
5027                           "  x   x  a5  a4     a3  a2  a1  a0",
5028                           "  i   i   i   i      i   i   i   i";
5030         writepage       = "  0   1   0   0      1   1   0   0",
5031                           "  0   0 a13 a12    a11 a10  a9  a8",
5032                           " a7  a6   x   x      x   x   x   x",
5033                           "  x   x   x   x      x   x   x   x";
5034        mode        = 0x41;
5035     delay       = 10;
5036     blocksize   = 128;
5037     readsize    = 256;  
5039         ;
5041     timeout             = 200;
5042     stabdelay           = 100;
5043     cmdexedelay         = 25;
5044     synchloops          = 32;
5045     bytedelay           = 0;
5046     pollindex           = 3;
5047     pollvalue           = 0x53;
5048     predelay            = 1;
5049     postdelay           = 1;
5050     pollmethod          = 0;
5052     pp_controlstack     =
5053         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5054         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5055         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5056         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5057     hventerstabdelay    = 100;
5058     progmodedelay       = 0;
5059     latchcycles         = 6;
5060     togglevtg           = 0;
5061     poweroffdelay       = 0;
5062     resetdelayms        = 0;
5063     resetdelayus        = 0;
5064     hvleavestabdelay    = 15;
5065     chiperasepulsewidth = 0;
5066     chiperasepolltimeout = 10;
5067     programfusepulsewidth = 0;
5068     programfusepolltimeout = 5;
5069     programlockpulsewidth = 0;
5070     programlockpolltimeout = 5;
5072     memory "eeprom"
5073         paged           = no; /* leave this "no" */
5074         page_size       = 4;  /* for parallel programming */
5075         size            = 512;
5076         min_write_delay = 9000;
5077         max_write_delay = 9000;
5078         readback_p1     = 0xff;
5079         readback_p2     = 0xff;
5081                 read            = "  1   0   1   0      0   0   0   0",
5082                           "  0   0   x   x      x   x  a9  a8",
5083                           " a7  a6  a5  a4     a3  a2  a1  a0",
5084                           "  o   o   o   o      o   o   o   o";
5086                 write           = "  1   1   0   0      0   0   0   0",
5087                           "  0   0   x   x      x   x  a9  a8",
5088                           " a7  a6  a5  a4     a3  a2  a1  a0",
5089                           "  i   i   i   i      i   i   i   i";
5091         loadpage_lo     = "  1   1   0   0      0   0   0   1",
5092                           "  0   0   0   0      0   0   0   0",
5093                           "  0   0   0   0      0   0  a1  a0",
5094                           "  i   i   i   i      i   i   i   i";
5096         writepage       = "  1   1   0   0      0   0   1   0",
5097                           "  0   0   x   x      x   x  a9  a8",
5098                           " a7  a6  a5  a4     a3  a2   0   0",
5099                           "  x   x   x   x      x   x   x   x";
5101         mode            = 0x41;
5102         delay           = 20;
5103         blocksize       = 4;
5104         readsize        = 256;
5105         ;
5107     memory "lfuse"
5108         size            = 1;
5109         min_write_delay = 16000;
5110         max_write_delay = 16000;
5111         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
5112                           "x x x x  x x x x   o o o o  o o o o";
5114         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
5115                           "x x x x  x x x x   i i i i  i i i i";
5116         ;
5118     memory "hfuse"
5119         size            = 1;
5120         min_write_delay = 16000;
5121         max_write_delay = 16000;
5123         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
5124                           "x x x x  x x x x   o o o o  o o o o";
5126         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
5127                           "x x x x  x x x x   i i i i  i i i i";
5128         ;
5130     memory "efuse"
5131         size            = 1;
5132         min_write_delay = 16000;
5133         max_write_delay = 16000;
5135         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
5136                           "x x x x  x x x x  o o o o  o o o o";
5138         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
5139                           "x x x x  x x x x  1 1 1 1  1 i i i";
5140       ;
5142     memory "lock"
5143         size            = 1;
5144         min_write_delay = 16000;
5145         max_write_delay = 16000;
5147         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
5148                           "x x x x  x x x x   x x o o  o o o o";
5150         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
5151                           "x x x x  x x x x   1 1 i i  i i i i";
5152         ;
5154     memory "signature"
5155         size            = 3;
5157         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
5158                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
5159         ;
5161     memory "calibration"
5162         size            = 1;
5164         read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
5165                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
5166         ;
5171 #------------------------------------------------------------
5172 # ATmega163
5173 #------------------------------------------------------------
5175 part
5176     id               = "m163";
5177     desc             = "ATMEGA163";
5178     stk500_devcode   = 0x81;
5179     avr910_devcode   = 0x64;
5180     signature        = 0x1e 0x94 0x02;
5181     chip_erase_delay = 32000;
5182     pagel            = 0xd7;
5183     bs2              = 0xa0;
5184     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
5185                        "x x x x  x x x x    x x x x  x x x x";
5187     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
5188                        "x x x x  x x x x    x x x x  x x x x";
5190     timeout             = 200;
5191     stabdelay           = 100;
5192     cmdexedelay         = 25;
5193     synchloops          = 32;
5194     bytedelay           = 0;
5195     pollindex           = 3;
5196     pollvalue           = 0x53;
5197     predelay            = 1;
5198     postdelay           = 1;
5199     pollmethod          = 0;
5201     pp_controlstack     =
5202         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5203         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5204         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5205         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5206     hventerstabdelay    = 100;
5207     progmodedelay       = 0;
5208     latchcycles         = 0;
5209     togglevtg           = 0;
5210     poweroffdelay       = 0;
5211     resetdelayms        = 0;
5212     resetdelayus        = 0;
5213     hvleavestabdelay    = 15;
5214     chiperasepulsewidth = 0;
5215     chiperasepolltimeout = 30;
5216     programfusepulsewidth = 0;
5217     programfusepolltimeout = 2;
5218     programlockpulsewidth = 0;
5219     programlockpolltimeout = 2;
5222    memory "eeprom"
5223         size            = 512;
5224         min_write_delay = 4000;
5225         max_write_delay = 4000;
5226         readback_p1     = 0xff;
5227         readback_p2     = 0xff;
5228         read            = "  1   0   1   0      0   0   0   0",
5229                           "  x   x   x   x      x   x   x  a8",
5230                           " a7  a6  a5  a4     a3  a2  a1  a0",
5231                           "  o   o   o   o      o   o   o   o";
5233         write           = "  1   1   0   0      0   0   0   0",
5234                           "  x   x   x   x      x   x   x  a8",
5235                           " a7  a6  a5  a4     a3  a2  a1  a0",
5236                           "  i   i   i   i      i   i   i   i";
5237         mode            = 0x41;
5238         delay           = 20;
5239         blocksize       = 4;
5240         readsize        = 256;
5241       ;
5243     memory "flash"
5244         paged           = yes;
5245         size            = 16384;
5246         page_size       = 128;
5247         num_pages       = 128;
5248         min_write_delay = 16000;
5249         max_write_delay = 16000;
5250         readback_p1     = 0xff;
5251         readback_p2     = 0xff;
5252         read_lo         = "  0   0   1   0      0   0   0   0",
5253                           "  x   x   x a12    a11 a10  a9  a8",
5254                           " a7  a6  a5  a4     a3  a2  a1  a0",
5255                           "  o   o   o   o      o   o   o   o";
5257         read_hi         = "  0   0   1   0      1   0   0   0",
5258                           "  x   x   x a12    a11 a10  a9  a8",
5259                           " a7  a6  a5  a4     a3  a2  a1  a0",
5260                           "  o   o   o   o      o   o   o   o";
5262         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5263                           "  x   x   x   x      x   x   x   x",
5264                           "  x   x  a5  a4     a3  a2  a1  a0",
5265                           "  i   i   i   i      i   i   i   i";
5267         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5268                           "  x   x   x   x      x   x   x   x",
5269                           "  x   x  a5  a4     a3  a2  a1  a0",
5270                           "  i   i   i   i      i   i   i   i";
5272         writepage       = "  0   1   0   0      1   1   0   0",
5273                           "  x   x   x a12    a11 a10  a9  a8",
5274                           " a7  a6   x   x      x   x   x   x",
5275                           "  x   x   x   x      x   x   x   x";
5277         mode            = 0x11;
5278         delay           = 20;
5279         blocksize       = 128;
5280         readsize        = 256;
5281       ;
5283     memory "lfuse"
5284         size            = 1;
5285         min_write_delay = 2000;
5286         max_write_delay = 2000;
5287         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
5288                           "x x x x  x x x x   o o x x  o o o o";
5290         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
5291                           "x x x x  x x x x   i i 1 1  i i i i";
5292       ;
5294     memory "hfuse"
5295         size            = 1;
5296         min_write_delay = 2000;
5297         max_write_delay = 2000;
5298         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
5299                           "x x x x  x x x x   x x x x  1 o o o";
5301         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
5302                           "x x x x  x x x x   1 1 1 1  1 i i i";
5303       ;
5305     memory "lock"
5306         size            = 1;
5307         min_write_delay = 2000;
5308         max_write_delay = 2000;
5309         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
5310                           "x x x x  0 x x x   x x o o  o o o o";
5312         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
5313                           "x x x x  x x x x   1 1 i i  i i i i";
5314       ;
5316     memory "signature"
5317         size            = 3;
5318         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
5319                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
5320       ;
5322     memory "calibration"
5323         size            = 1;
5324         read            = "0 0 1 1  1 0 0 0   x x x x  x x x x",
5325                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
5326       ;
5327   ;
5329 #------------------------------------------------------------
5330 # ATmega169
5331 #------------------------------------------------------------
5333 part
5334     id               = "m169";
5335     desc             = "ATMEGA169";
5336     has_jtag         = yes;
5337     stk500_devcode   = 0x85;
5338     avr910_devcode   = 0x78;
5339     signature        = 0x1e 0x94 0x05;
5340     chip_erase_delay = 9000;
5341     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
5342                        "x x x x  x x x x    x x x x  x x x x";
5344     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
5345                        "x x x x  x x x x    x x x x  x x x x";
5346     timeout             = 200;
5347     stabdelay           = 100;
5348     cmdexedelay         = 25;
5349     synchloops          = 32;
5350     bytedelay           = 0;
5351     pollindex           = 3;
5352     pollvalue           = 0x53;
5353     predelay            = 1;
5354     postdelay           = 1;
5355     pollmethod          = 1;
5357     pp_controlstack     =
5358         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5359         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5360         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5361         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5362     hventerstabdelay    = 100;
5363     progmodedelay       = 0;
5364     latchcycles         = 5;
5365     togglevtg           = 1;
5366     poweroffdelay       = 15;
5367     resetdelayms        = 1;
5368     resetdelayus        = 0;
5369     hvleavestabdelay    = 15;
5370     chiperasepulsewidth = 0;
5371     chiperasepolltimeout = 10;
5372     programfusepulsewidth = 0;
5373     programfusepolltimeout = 5;
5374     programlockpulsewidth = 0;
5375     programlockpolltimeout = 5;
5377     idr                 = 0x31;
5378     spmcr               = 0x57;
5380    memory "eeprom"
5381         paged           = no; /* leave this "no" */
5382         page_size       = 4;  /* for parallel programming */
5383         size            = 512;
5384         min_write_delay = 9000;
5385         max_write_delay = 9000;
5386         readback_p1     = 0xff;
5387         readback_p2     = 0xff;
5388         read            = "  1   0   1   0      0   0   0   0",
5389                           "  x   x   x   x      x   x   x  a8",
5390                           " a7  a6  a5  a4     a3  a2  a1  a0",
5391                           "  o   o   o   o      o   o   o   o";
5393         write           = "  1   1   0   0      0   0   0   0",
5394                           "  x   x   x   x      x   x   x  a8",
5395                           " a7  a6  a5  a4     a3  a2  a1  a0", 
5396                           "  i   i   i   i      i   i   i   i";
5398         loadpage_lo     = "  1   1   0   0      0   0   0   1",
5399                           "  0   0   0   0      0   0   0   0",
5400                           "  0   0   0   0      0   0  a1  a0",
5401                           "  i   i   i   i      i   i   i   i";
5403         writepage       = "  1   1   0   0      0   0   1   0",
5404                           "  0   0   x   x      x   x   x  a8",
5405                           " a7  a6  a5  a4     a3  a2   0   0",
5406                           "  x   x   x   x      x   x   x   x";
5408         mode            = 0x41;
5409         delay           = 20;
5410         blocksize       = 4;
5411         readsize        = 256;
5412       ;
5414     memory "flash"
5415         paged           = yes;
5416         size            = 16384;
5417         page_size       = 128;
5418         num_pages       = 128;
5419         min_write_delay = 4500;
5420         max_write_delay = 4500;
5421         readback_p1     = 0xff;
5422         readback_p2     = 0xff;
5423         read_lo         = "  0   0   1   0      0   0   0   0",
5424                           "  x   x   x a12    a11 a10  a9  a8",
5425                           " a7  a6  a5  a4     a3  a2  a1  a0",
5426                           "  o   o   o   o      o   o   o   o";
5428         read_hi         = "  0   0   1   0      1   0   0   0",
5429                           "  x   x   x a12    a11 a10  a9  a8",
5430                           " a7  a6  a5  a4     a3  a2  a1  a0",
5431                           "  o   o   o   o      o   o   o   o";
5433         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5434                           "  x   x   x   x      x   x   x   x",
5435                           "  x   x  a5  a4     a3  a2  a1  a0",
5436                           "  i   i   i   i      i   i   i   i";
5438         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5439                           "  x   x   x   x      x   x   x   x",
5440                           "  x   x  a5  a4     a3  a2  a1  a0",
5441                           "  i   i   i   i      i   i   i   i";
5443         writepage       = "  0   1   0   0      1   1   0   0",
5444                           "  x   x   x a12    a11 a10  a9  a8",
5445                           " a7  a6   x   x      x   x   x   x",
5446                           "  x   x   x   x      x   x   x   x";
5448         mode            = 0x41;
5449         delay           = 6;
5450         blocksize       = 128;
5451         readsize        = 256;
5452       ;
5454     memory "lfuse"
5455         size            = 1;
5456         min_write_delay = 2000;
5457         max_write_delay = 2000;
5458         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
5459                           "x x x x  x x x x   o o o o  o o o o";
5461         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
5462                           "x x x x  x x x x   i i i i  i i i i";
5463       ;
5465     memory "hfuse"
5466         size            = 1;
5467         min_write_delay = 2000;
5468         max_write_delay = 2000;
5469         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
5470                           "x x x x  x x x x   o o o o  o o o o";
5472         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
5473                           "x x x x  x x x x   i i i i  i i i i";
5474       ;
5476     memory "efuse"
5477         size            = 1;
5478         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
5479                           "x x x x  x x x x  x x x x  i i i i";
5481         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
5482                           "x x x x  x x x x  o o o o  o o o o";
5483       ;
5485     memory "lock"
5486         size            = 1;
5487         min_write_delay = 2000;
5488         max_write_delay = 2000;
5489         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
5490                           "x x x x  x x x x   x x o o  o o o o";
5492         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
5493                           "x x x x  x x x x   1 1 i i  i i i i";
5494       ;
5496     memory "signature"
5497         size            = 3;
5498         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
5499                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
5500       ;
5502     memory "calibration"
5503         size            = 1;
5504         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
5505                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
5506       ;
5507   ;
5509 #------------------------------------------------------------
5510 # ATmega329
5511 #------------------------------------------------------------
5513 part
5514     id               = "m329";
5515     desc             = "ATMEGA329";
5516     has_jtag         = yes;
5517 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
5518 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
5519     avr910_devcode   = 0x75;
5520     signature        = 0x1e 0x95 0x03;
5521     chip_erase_delay = 9000;
5522     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
5523                        "x x x x  x x x x    x x x x  x x x x";
5525     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
5526                        "x x x x  x x x x    x x x x  x x x x";
5527     timeout             = 200;
5528     stabdelay           = 100;
5529     cmdexedelay         = 25;
5530     synchloops          = 32;
5531     bytedelay           = 0;
5532     pollindex           = 3;
5533     pollvalue           = 0x53;
5534     predelay            = 1;
5535     postdelay           = 1;
5536     pollmethod          = 1;
5538     pp_controlstack     =
5539         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5540         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5541         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5542         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5543     hventerstabdelay    = 100;
5544     progmodedelay       = 0;
5545     latchcycles         = 5;
5546     togglevtg           = 1;
5547     poweroffdelay       = 15;
5548     resetdelayms        = 1;
5549     resetdelayus        = 0;
5550     hvleavestabdelay    = 15;
5551     chiperasepulsewidth = 0;
5552     chiperasepolltimeout = 10;
5553     programfusepulsewidth = 0;
5554     programfusepolltimeout = 5;
5555     programlockpulsewidth = 0;
5556     programlockpolltimeout = 5;
5558     idr                 = 0x31;
5559     spmcr               = 0x57;
5561    memory "eeprom"
5562         paged           = no; /* leave this "no" */
5563         page_size       = 4;  /* for parallel programming */
5564         size            = 1024;
5565         min_write_delay = 9000;
5566         max_write_delay = 9000;
5567         readback_p1     = 0xff;
5568         readback_p2     = 0xff;
5569         read            = "  1   0   1   0      0   0   0   0",
5570                           "  x   x   x   x      x   x  a9  a8",
5571                           " a7  a6  a5  a4     a3  a2  a1  a0",
5572                           "  o   o   o   o      o   o   o   o";
5574         write           = "  1   1   0   0      0   0   0   0",
5575                           "  x   x   x   x      x   x  a9  a8",
5576                           " a7  a6  a5  a4     a3  a2  a1  a0",
5577                           "  i   i   i   i      i   i   i   i";
5579         loadpage_lo     = "  1   1   0   0      0   0   0   1",
5580                           "  0   0   0   0      0   0   0   0",
5581                           "  0   0   0   0      0   0  a1  a0",
5582                           "  i   i   i   i      i   i   i   i";
5584         writepage       = "  1   1   0   0      0   0   1   0",
5585                           "  0   0   x   x      x   x  a9  a8",
5586                           " a7  a6  a5  a4     a3  a2   0   0",
5587                           "  x   x   x   x      x   x   x   x";
5589         mode            = 0x41;
5590         delay           = 20;
5591         blocksize       = 8;
5592         readsize        = 256;
5593       ;
5595     memory "flash"
5596         paged           = yes;
5597         size            = 32768;
5598         page_size       = 128;
5599         num_pages       = 256;
5600         min_write_delay = 4500;
5601         max_write_delay = 4500;
5602         readback_p1     = 0xff;
5603         readback_p2     = 0xff;
5604         read_lo         = "  0   0   1   0      0   0   0   0",
5605                           "  x a14 a13 a12    a11 a10  a9  a8",
5606                           " a7  a6  a5  a4     a3  a2  a1  a0",
5607                           "  o   o   o   o      o   o   o   o";
5609         read_hi         = "  0   0   1   0      1   0   0   0",
5610                           "  x a14 a13 a12    a11 a10  a9  a8",
5611                           " a7  a6  a5  a4     a3  a2  a1  a0",
5612                           "  o   o   o   o      o   o   o   o";
5614         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5615                           "  x   x   x   x      x   x   x   x",
5616                           "  x   x  a5  a4     a3  a2  a1  a0",
5617                           "  i   i   i   i      i   i   i   i";
5619         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5620                           "  x   x   x   x      x   x   x   x",
5621                           "  x   x  a5  a4     a3  a2  a1  a0",
5622                           "  i   i   i   i      i   i   i   i";
5624         writepage       = "  0   1   0   0      1   1   0   0",
5625                           "  x   x   x a12    a11 a10  a9  a8",
5626                           " a7  a6   x   x      x   x   x   x",
5627                           "  x   x   x   x      x   x   x   x";
5629         mode            = 0x41;
5630         delay           = 6;
5631         blocksize       = 256;
5632         readsize        = 256;
5633       ;
5635     memory "lfuse"
5636         size            = 1;
5637         min_write_delay = 4500;
5638         max_write_delay = 4500;
5639         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
5640                           "x x x x  x x x x   o o o o  o o o o";
5642         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
5643                           "x x x x  x x x x   i i i i  i i i i";
5644       ;
5646     memory "hfuse"
5647         size            = 1;
5648         min_write_delay = 4500;
5649         max_write_delay = 4500;
5650         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
5651                           "x x x x  x x x x   o o o o  o o o o";
5653         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
5654                           "x x x x  x x x x   i i i i  i i i i";
5655       ;
5657     memory "efuse"
5658         size            = 1;
5659         min_write_delay = 4500;
5660         max_write_delay = 4500;
5661         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
5662                           "x x x x  x x x x   o o o o  o o o o";
5664         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
5665                           "x x x x  x x x x   x x x x  x i i i";
5666       ;
5668     memory "lock"
5669         size            = 1;
5670         min_write_delay = 4500;
5671         max_write_delay = 4500;
5672         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
5673                           "x x x x  x x x x   x x o o  o o o o";
5675         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
5676                           "x x x x  x x x x   1 1 i i  i i i i";
5677       ;
5679     memory "signature"
5680         size            = 3;
5681         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
5682                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
5683       ;
5685     memory "calibration"
5686         size            = 1;
5687         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
5688                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
5689       ;
5690   ;
5692 #------------------------------------------------------------
5693 # ATmega329P
5694 #------------------------------------------------------------
5695 # Identical to ATmega329 except of the signature
5697 part
5698     id               = "m329p";
5699     desc             = "ATMEGA329P";
5700     has_jtag         = yes;
5701 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
5702 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
5703     avr910_devcode   = 0x75;
5704     signature        = 0x1e 0x95 0x0b;
5705     chip_erase_delay = 9000;
5706     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
5707                        "x x x x  x x x x    x x x x  x x x x";
5709     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
5710                        "x x x x  x x x x    x x x x  x x x x";
5711     timeout             = 200;
5712     stabdelay           = 100;
5713     cmdexedelay         = 25;
5714     synchloops          = 32;
5715     bytedelay           = 0;
5716     pollindex           = 3;
5717     pollvalue           = 0x53;
5718     predelay            = 1;
5719     postdelay           = 1;
5720     pollmethod          = 1;
5722     pp_controlstack     =
5723         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5724         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5725         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5726         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5727     hventerstabdelay    = 100;
5728     progmodedelay       = 0;
5729     latchcycles         = 5;
5730     togglevtg           = 1;
5731     poweroffdelay       = 15;
5732     resetdelayms        = 1;
5733     resetdelayus        = 0;
5734     hvleavestabdelay    = 15;
5735     chiperasepulsewidth = 0;
5736     chiperasepolltimeout = 10;
5737     programfusepulsewidth = 0;
5738     programfusepolltimeout = 5;
5739     programlockpulsewidth = 0;
5740     programlockpolltimeout = 5;
5742     idr                 = 0x31;
5743     spmcr               = 0x57;
5745    memory "eeprom"
5746         paged           = no; /* leave this "no" */
5747         page_size       = 4;  /* for parallel programming */
5748         size            = 1024;
5749         min_write_delay = 9000;
5750         max_write_delay = 9000;
5751         readback_p1     = 0xff;
5752         readback_p2     = 0xff;
5753         read            = "  1   0   1   0      0   0   0   0",
5754                           "  x   x   x   x      x   x  a9  a8",
5755                           " a7  a6  a5  a4     a3  a2  a1  a0",
5756                           "  o   o   o   o      o   o   o   o";
5758         write           = "  1   1   0   0      0   0   0   0",
5759                           "  x   x   x   x      x   x  a9  a8",
5760                           " a7  a6  a5  a4     a3  a2  a1  a0",
5761                           "  i   i   i   i      i   i   i   i";
5763         loadpage_lo     = "  1   1   0   0      0   0   0   1",
5764                           "  0   0   0   0      0   0   0   0",
5765                           "  0   0   0   0      0   0  a1  a0",
5766                           "  i   i   i   i      i   i   i   i";
5768         writepage       = "  1   1   0   0      0   0   1   0",
5769                           "  0   0   x   x      x   x  a9  a8",
5770                           " a7  a6  a5  a4     a3  a2   0   0",
5771                           "  x   x   x   x      x   x   x   x";
5773         mode            = 0x41;
5774         delay           = 20;
5775         blocksize       = 8;
5776         readsize        = 256;
5777       ;
5779     memory "flash"
5780         paged           = yes;
5781         size            = 32768;
5782         page_size       = 128;
5783         num_pages       = 256;
5784         min_write_delay = 4500;
5785         max_write_delay = 4500;
5786         readback_p1     = 0xff;
5787         readback_p2     = 0xff;
5788         read_lo         = "  0   0   1   0      0   0   0   0",
5789                           "  x a14 a13 a12    a11 a10  a9  a8",
5790                           " a7  a6  a5  a4     a3  a2  a1  a0",
5791                           "  o   o   o   o      o   o   o   o";
5793         read_hi         = "  0   0   1   0      1   0   0   0",
5794                           "  x a14 a13 a12    a11 a10  a9  a8",
5795                           " a7  a6  a5  a4     a3  a2  a1  a0",
5796                           "  o   o   o   o      o   o   o   o";
5798         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5799                           "  x   x   x   x      x   x   x   x",
5800                           "  x   x  a5  a4     a3  a2  a1  a0",
5801                           "  i   i   i   i      i   i   i   i";
5803         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5804                           "  x   x   x   x      x   x   x   x",
5805                           "  x   x  a5  a4     a3  a2  a1  a0",
5806                           "  i   i   i   i      i   i   i   i";
5808         writepage       = "  0   1   0   0      1   1   0   0",
5809                           "  x   x   x a12    a11 a10  a9  a8",
5810                           " a7  a6   x   x      x   x   x   x",
5811                           "  x   x   x   x      x   x   x   x";
5813         mode            = 0x41;
5814         delay           = 6;
5815         blocksize       = 256;
5816         readsize        = 256;
5817       ;
5819     memory "lfuse"
5820         size            = 1;
5821         min_write_delay = 4500;
5822         max_write_delay = 4500;
5823         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
5824                           "x x x x  x x x x   o o o o  o o o o";
5826         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
5827                           "x x x x  x x x x   i i i i  i i i i";
5828       ;
5830     memory "hfuse"
5831         size            = 1;
5832         min_write_delay = 4500;
5833         max_write_delay = 4500;
5834         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
5835                           "x x x x  x x x x   o o o o  o o o o";
5837         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
5838                           "x x x x  x x x x   i i i i  i i i i";
5839       ;
5841     memory "efuse"
5842         size            = 1;
5843         min_write_delay = 4500;
5844         max_write_delay = 4500;
5845         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
5846                           "x x x x  x x x x   o o o o  o o o o";
5848         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
5849                           "x x x x  x x x x   x x x x  x i i i";
5850       ;
5852     memory "lock"
5853         size            = 1;
5854         min_write_delay = 4500;
5855         max_write_delay = 4500;
5856         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
5857                           "x x x x  x x x x   x x o o  o o o o";
5859         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
5860                           "x x x x  x x x x   1 1 i i  i i i i";
5861       ;
5863     memory "signature"
5864         size            = 3;
5865         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
5866                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
5867       ;
5869     memory "calibration"
5870         size            = 1;
5871         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
5872                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
5873       ;
5874   ;
5876 #------------------------------------------------------------
5877 # ATmega3290
5878 #------------------------------------------------------------
5880 # identical to ATmega329
5882 part
5883     id               = "m3290";
5884     desc             = "ATMEGA3290";
5885     has_jtag         = yes;
5886 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
5887 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
5888     avr910_devcode   = 0x75;
5889     signature        = 0x1e 0x95 0x04;
5890     chip_erase_delay = 9000;
5891     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
5892                        "x x x x  x x x x    x x x x  x x x x";
5894     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
5895                        "x x x x  x x x x    x x x x  x x x x";
5896     timeout             = 200;
5897     stabdelay           = 100;
5898     cmdexedelay         = 25;
5899     synchloops          = 32;
5900     bytedelay           = 0;
5901     pollindex           = 3;
5902     pollvalue           = 0x53;
5903     predelay            = 1;
5904     postdelay           = 1;
5905     pollmethod          = 1;
5907     pp_controlstack     =
5908         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
5909         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
5910         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
5911         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
5912     hventerstabdelay    = 100;
5913     progmodedelay       = 0;
5914     latchcycles         = 5;
5915     togglevtg           = 1;
5916     poweroffdelay       = 15;
5917     resetdelayms        = 1;
5918     resetdelayus        = 0;
5919     hvleavestabdelay    = 15;
5920     chiperasepulsewidth = 0;
5921     chiperasepolltimeout = 10;
5922     programfusepulsewidth = 0;
5923     programfusepolltimeout = 5;
5924     programlockpulsewidth = 0;
5925     programlockpolltimeout = 5;
5927     idr                 = 0x31;
5928     spmcr               = 0x57;
5930    memory "eeprom"
5931         paged           = no; /* leave this "no" */
5932         page_size       = 4;  /* for parallel programming */
5933         size            = 1024;
5934         min_write_delay = 9000;
5935         max_write_delay = 9000;
5936         readback_p1     = 0xff;
5937         readback_p2     = 0xff;
5938         read            = "  1   0   1   0      0   0   0   0",
5939                           "  x   x   x   x      x   x  a9  a8",
5940                           " a7  a6  a5  a4     a3  a2  a1  a0",
5941                           "  o   o   o   o      o   o   o   o";
5943         write           = "  1   1   0   0      0   0   0   0",
5944                           "  x   x   x   x      x   x  a9  a8",
5945                           " a7  a6  a5  a4     a3  a2  a1  a0",
5946                           "  i   i   i   i      i   i   i   i";
5948         loadpage_lo     = "  1   1   0   0      0   0   0   1",
5949                           "  0   0   0   0      0   0   0   0",
5950                           "  0   0   0   0      0   0  a1  a0",
5951                           "  i   i   i   i      i   i   i   i";
5953         writepage       = "  1   1   0   0      0   0   1   0",
5954                           "  0   0   x   x      x   x  a9  a8",
5955                           " a7  a6  a5  a4     a3  a3   0   0",
5956                           "  x   x   x   x      x   x   x   x";
5958         mode            = 0x41;
5959         delay           = 20;
5960         blocksize       = 8;
5961         readsize        = 256;
5962       ;
5964     memory "flash"
5965         paged           = yes;
5966         size            = 32768;
5967         page_size       = 128;
5968         num_pages       = 256;
5969         min_write_delay = 4500;
5970         max_write_delay = 4500;
5971         readback_p1     = 0xff;
5972         readback_p2     = 0xff;
5973         read_lo         = "  0   0   1   0      0   0   0   0",
5974                           "  x a14 a13 a12    a11 a10  a9  a8",
5975                           " a7  a6  a5  a4     a3  a2  a1  a0",
5976                           "  o   o   o   o      o   o   o   o";
5978         read_hi         = "  0   0   1   0      1   0   0   0",
5979                           "  x a14 a13 a12    a11 a10  a9  a8",
5980                           " a7  a6  a5  a4     a3  a2  a1  a0",
5981                           "  o   o   o   o      o   o   o   o";
5983         loadpage_lo     = "  0   1   0   0      0   0   0   0",
5984                           "  x   x   x   x      x   x   x   x",
5985                           "  x   x  a5  a4     a3  a2  a1  a0",
5986                           "  i   i   i   i      i   i   i   i";
5988         loadpage_hi     = "  0   1   0   0      1   0   0   0",
5989                           "  x   x   x   x      x   x   x   x",
5990                           "  x   x  a5  a4     a3  a2  a1  a0",
5991                           "  i   i   i   i      i   i   i   i";
5993         writepage       = "  0   1   0   0      1   1   0   0",
5994                           "  x   x   x a12    a11 a10  a9  a8",
5995                           " a7  a6   x   x      x   x   x   x",
5996                           "  x   x   x   x      x   x   x   x";
5998         mode            = 0x41;
5999         delay           = 6;
6000         blocksize       = 256;
6001         readsize        = 256;
6002       ;
6004     memory "lfuse"
6005         size            = 1;
6006         min_write_delay = 4500;
6007         max_write_delay = 4500;
6008         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
6009                           "x x x x  x x x x   o o o o  o o o o";
6011         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
6012                           "x x x x  x x x x   i i i i  i i i i";
6013       ;
6015     memory "hfuse"
6016         size            = 1;
6017         min_write_delay = 4500;
6018         max_write_delay = 4500;
6019         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
6020                           "x x x x  x x x x   o o o o  o o o o";
6022         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
6023                           "x x x x  x x x x   i i i i  i i i i";
6024       ;
6026     memory "efuse"
6027         size            = 1;
6028         min_write_delay = 4500;
6029         max_write_delay = 4500;
6030         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
6031                           "x x x x  x x x x   o o o o  o o o o";
6033         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
6034                           "x x x x  x x x x   x x x x  x i i i";
6035       ;
6037     memory "lock"
6038         size            = 1;
6039         min_write_delay = 4500;
6040         max_write_delay = 4500;
6041         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6042                           "x x x x  x x x x   x x o o  o o o o";
6044         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6045                           "x x x x  x x x x   1 1 i i  i i i i";
6046       ;
6048     memory "signature"
6049         size            = 3;
6050         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
6051                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
6052       ;
6054     memory "calibration"
6055         size            = 1;
6056         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
6057                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
6058       ;
6059   ;
6061 #------------------------------------------------------------
6062 # ATmega3290P
6063 #------------------------------------------------------------
6065 # identical to ATmega3290 except of the signature
6067 part
6068     id               = "m3290p";
6069     desc             = "ATMEGA3290P";
6070     has_jtag         = yes;
6071 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
6072 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
6073     avr910_devcode   = 0x75;
6074     signature        = 0x1e 0x95 0x0c;
6075     chip_erase_delay = 9000;
6076     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6077                        "x x x x  x x x x    x x x x  x x x x";
6079     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
6080                        "x x x x  x x x x    x x x x  x x x x";
6081     timeout             = 200;
6082     stabdelay           = 100;
6083     cmdexedelay         = 25;
6084     synchloops          = 32;
6085     bytedelay           = 0;
6086     pollindex           = 3;
6087     pollvalue           = 0x53;
6088     predelay            = 1;
6089     postdelay           = 1;
6090     pollmethod          = 1;
6092     pp_controlstack     =
6093         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6094         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6095         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6096         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6097     hventerstabdelay    = 100;
6098     progmodedelay       = 0;
6099     latchcycles         = 5;
6100     togglevtg           = 1;
6101     poweroffdelay       = 15;
6102     resetdelayms        = 1;
6103     resetdelayus        = 0;
6104     hvleavestabdelay    = 15;
6105     chiperasepulsewidth = 0;
6106     chiperasepolltimeout = 10;
6107     programfusepulsewidth = 0;
6108     programfusepolltimeout = 5;
6109     programlockpulsewidth = 0;
6110     programlockpolltimeout = 5;
6112     idr                 = 0x31;
6113     spmcr               = 0x57;
6115    memory "eeprom"
6116         paged           = no; /* leave this "no" */
6117         page_size       = 4;  /* for parallel programming */
6118         size            = 1024;
6119         min_write_delay = 9000;
6120         max_write_delay = 9000;
6121         readback_p1     = 0xff;
6122         readback_p2     = 0xff;
6123         read            = "  1   0   1   0      0   0   0   0",
6124                           "  x   x   x   x      x   x  a9  a8",
6125                           " a7  a6  a5  a4     a3  a2  a1  a0",
6126                           "  o   o   o   o      o   o   o   o";
6128         write           = "  1   1   0   0      0   0   0   0",
6129                           "  x   x   x   x      x   x  a9  a8",
6130                           " a7  a6  a5  a4     a3  a2  a1  a0",
6131                           "  i   i   i   i      i   i   i   i";
6133         loadpage_lo     = "  1   1   0   0      0   0   0   1",
6134                           "  0   0   0   0      0   0   0   0",
6135                           "  0   0   0   0      0   0  a1  a0",
6136                           "  i   i   i   i      i   i   i   i";
6138         writepage       = "  1   1   0   0      0   0   1   0",
6139                           "  0   0   x   x      x   x  a9  a8",
6140                           " a7  a6  a5  a4     a3  a3   0   0",
6141                           "  x   x   x   x      x   x   x   x";
6143         mode            = 0x41;
6144         delay           = 20;
6145         blocksize       = 8;
6146         readsize        = 256;
6147       ;
6149     memory "flash"
6150         paged           = yes;
6151         size            = 32768;
6152         page_size       = 128;
6153         num_pages       = 256;
6154         min_write_delay = 4500;
6155         max_write_delay = 4500;
6156         readback_p1     = 0xff;
6157         readback_p2     = 0xff;
6158         read_lo         = "  0   0   1   0      0   0   0   0",
6159                           "  x a14 a13 a12    a11 a10  a9  a8",
6160                           " a7  a6  a5  a4     a3  a2  a1  a0",
6161                           "  o   o   o   o      o   o   o   o";
6163         read_hi         = "  0   0   1   0      1   0   0   0",
6164                           "  x a14 a13 a12    a11 a10  a9  a8",
6165                           " a7  a6  a5  a4     a3  a2  a1  a0",
6166                           "  o   o   o   o      o   o   o   o";
6168         loadpage_lo     = "  0   1   0   0      0   0   0   0",
6169                           "  x   x   x   x      x   x   x   x",
6170                           "  x   x  a5  a4     a3  a2  a1  a0",
6171                           "  i   i   i   i      i   i   i   i";
6173         loadpage_hi     = "  0   1   0   0      1   0   0   0",
6174                           "  x   x   x   x      x   x   x   x",
6175                           "  x   x  a5  a4     a3  a2  a1  a0",
6176                           "  i   i   i   i      i   i   i   i";
6178         writepage       = "  0   1   0   0      1   1   0   0",
6179                           "  x   x   x a12    a11 a10  a9  a8",
6180                           " a7  a6   x   x      x   x   x   x",
6181                           "  x   x   x   x      x   x   x   x";
6183         mode            = 0x41;
6184         delay           = 6;
6185         blocksize       = 256;
6186         readsize        = 256;
6187       ;
6189     memory "lfuse"
6190         size            = 1;
6191         min_write_delay = 4500;
6192         max_write_delay = 4500;
6193         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
6194                           "x x x x  x x x x   o o o o  o o o o";
6196         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
6197                           "x x x x  x x x x   i i i i  i i i i";
6198       ;
6200     memory "hfuse"
6201         size            = 1;
6202         min_write_delay = 4500;
6203         max_write_delay = 4500;
6204         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
6205                           "x x x x  x x x x   o o o o  o o o o";
6207         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
6208                           "x x x x  x x x x   i i i i  i i i i";
6209       ;
6211     memory "efuse"
6212         size            = 1;
6213         min_write_delay = 4500;
6214         max_write_delay = 4500;
6215         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
6216                           "x x x x  x x x x   o o o o  o o o o";
6218         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
6219                           "x x x x  x x x x   x x x x  x i i i";
6220       ;
6222     memory "lock"
6223         size            = 1;
6224         min_write_delay = 4500;
6225         max_write_delay = 4500;
6226         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6227                           "x x x x  x x x x   x x o o  o o o o";
6229         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6230                           "x x x x  x x x x   1 1 i i  i i i i";
6231       ;
6233     memory "signature"
6234         size            = 3;
6235         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
6236                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
6237       ;
6239     memory "calibration"
6240         size            = 1;
6241         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
6242                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
6243       ;
6244   ;
6246 #------------------------------------------------------------
6247 # ATmega649
6248 #------------------------------------------------------------
6250 part
6251     id               = "m649";
6252     desc             = "ATMEGA649";
6253     has_jtag         = yes;
6254 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
6255 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
6256     avr910_devcode   = 0x75;
6257     signature        = 0x1e 0x96 0x03;
6258     chip_erase_delay = 9000;
6259     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6260                        "x x x x  x x x x    x x x x  x x x x";
6262     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
6263                        "x x x x  x x x x    x x x x  x x x x";
6264     timeout             = 200;
6265     stabdelay           = 100;
6266     cmdexedelay         = 25;
6267     synchloops          = 32;
6268     bytedelay           = 0;
6269     pollindex           = 3;
6270     pollvalue           = 0x53;
6271     predelay            = 1;
6272     postdelay           = 1;
6273     pollmethod          = 1;
6275     pp_controlstack     =
6276         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6277         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6278         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6279         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6280     hventerstabdelay    = 100;
6281     progmodedelay       = 0;
6282     latchcycles         = 5;
6283     togglevtg           = 1;
6284     poweroffdelay       = 15;
6285     resetdelayms        = 1;
6286     resetdelayus        = 0;
6287     hvleavestabdelay    = 15;
6288     chiperasepulsewidth = 0;
6289     chiperasepolltimeout = 10;
6290     programfusepulsewidth = 0;
6291     programfusepolltimeout = 5;
6292     programlockpulsewidth = 0;
6293     programlockpolltimeout = 5;
6295     idr                 = 0x31;
6296     spmcr               = 0x57;
6298    memory "eeprom"
6299         paged           = no; /* leave this "no" */
6300         page_size       = 8;  /* for parallel programming */
6301         size            = 2048;
6302         min_write_delay = 9000;
6303         max_write_delay = 9000;
6304         readback_p1     = 0xff;
6305         readback_p2     = 0xff;
6306         read            = "  1   0   1   0      0   0   0   0",
6307                           "  x   x   x   x      x a10  a9  a8",
6308                           " a7  a6  a5  a4     a3  a2  a1  a0",
6309                           "  o   o   o   o      o   o   o   o";
6311         write           = "  1   1   0   0      0   0   0   0",
6312                           "  x   x   x   x      x a10  a9  a8",
6313                           " a7  a6  a5  a4     a3  a2  a1  a0",
6314                           "  i   i   i   i      i   i   i   i";
6316         loadpage_lo     = "  1   1   0   0      0   0   0   1",
6317                           "  0   0   0   0      0   0   0   0",
6318                           "  0   0   0   0      0  a2  a1  a0",
6319                           "  i   i   i   i      i   i   i   i";
6321         writepage       = "  1   1   0   0      0   0   1   0",
6322                           "  0   0   x   x      x a10  a9  a8",
6323                           " a7  a6  a5  a4     a3   0   0   0",
6324                           "  x   x   x   x      x   x   x   x";
6326         mode            = 0x41;
6327         delay           = 20;
6328         blocksize       = 8;
6329         readsize        = 256;
6330       ;
6332     memory "flash"
6333         paged           = yes;
6334         size            = 65536;
6335         page_size       = 256;
6336         num_pages       = 256;
6337         min_write_delay = 4500;
6338         max_write_delay = 4500;
6339         readback_p1     = 0xff;
6340         readback_p2     = 0xff;
6341         read_lo         = "  0   0   1   0      0   0   0   0",
6342                           "a15 a14 a13 a12    a11 a10  a9  a8",
6343                           " a7  a6  a5  a4     a3  a2  a1  a0",
6344                           "  o   o   o   o      o   o   o   o";
6346         read_hi         = "  0   0   1   0      1   0   0   0",
6347                           "a15 a14 a13 a12    a11 a10  a9  a8",
6348                           " a7  a6  a5  a4     a3  a2  a1  a0",
6349                           "  o   o   o   o      o   o   o   o";
6351         loadpage_lo     = "  0   1   0   0      0   0   0   0",
6352                           "  x   x   x   x      x   x   x   x",
6353                           "  x  a6  a5  a4     a3  a2  a1  a0",
6354                           "  i   i   i   i      i   i   i   i";
6356         loadpage_hi     = "  0   1   0   0      1   0   0   0",
6357                           "  x   x   x   x      x   x   x   x",
6358                           "  x  a6  a5  a4     a3  a2  a1  a0",
6359                           "  i   i   i   i      i   i   i   i";
6361         writepage       = "  0   1   0   0      1   1   0   0",
6362                           "  x   x   x a12    a11 a10  a9  a8",
6363                           " a7   x   x   x      x   x   x   x",
6364                           "  x   x   x   x      x   x   x   x";
6366         mode            = 0x41;
6367         delay           = 6;
6368         blocksize       = 256;
6369         readsize        = 256;
6370       ;
6372     memory "lfuse"
6373         size            = 1;
6374         min_write_delay = 4500;
6375         max_write_delay = 4500;
6376         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
6377                           "x x x x  x x x x   o o o o  o o o o";
6379         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
6380                           "x x x x  x x x x   i i i i  i i i i";
6381       ;
6383     memory "hfuse"
6384         size            = 1;
6385         min_write_delay = 4500;
6386         max_write_delay = 4500;
6387         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
6388                           "x x x x  x x x x   o o o o  o o o o";
6390         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
6391                           "x x x x  x x x x   i i i i  i i i i";
6392       ;
6394     memory "efuse"
6395         size            = 1;
6396         min_write_delay = 4500;
6397         max_write_delay = 4500;
6398         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
6399                           "x x x x  x x x x   o o o o  o o o o";
6401         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
6402                           "x x x x  x x x x   x x x x  x i i i";
6403       ;
6405     memory "lock"
6406         size            = 1;
6407         min_write_delay = 4500;
6408         max_write_delay = 4500;
6409         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6410                           "x x x x  x x x x   x x o o  o o o o";
6412         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6413                           "x x x x  x x x x   1 1 i i  i i i i";
6414       ;
6416     memory "signature"
6417         size            = 3;
6418         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
6419                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
6420       ;
6422     memory "calibration"
6423         size            = 1;
6424         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
6425                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
6426       ;
6427   ;
6429 #------------------------------------------------------------
6430 # ATmega6490
6431 #------------------------------------------------------------
6433 # identical to ATmega649
6435 part
6436     id               = "m6490";
6437     desc             = "ATMEGA6490";
6438     has_jtag         = yes;
6439 #    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
6440 #    avr910_devcode   = 0x?;  # try the ATmega169 one:
6441     avr910_devcode   = 0x75;
6442     signature        = 0x1e 0x96 0x04;
6443     chip_erase_delay = 9000;
6444     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6445                        "x x x x  x x x x    x x x x  x x x x";
6447     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
6448                        "x x x x  x x x x    x x x x  x x x x";
6449     timeout             = 200;
6450     stabdelay           = 100;
6451     cmdexedelay         = 25;
6452     synchloops          = 32;
6453     bytedelay           = 0;
6454     pollindex           = 3;
6455     pollvalue           = 0x53;
6456     predelay            = 1;
6457     postdelay           = 1;
6458     pollmethod          = 1;
6460     pp_controlstack     =
6461         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6462         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6463         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6464         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6465     hventerstabdelay    = 100;
6466     progmodedelay       = 0;
6467     latchcycles         = 5;
6468     togglevtg           = 1;
6469     poweroffdelay       = 15;
6470     resetdelayms        = 1;
6471     resetdelayus        = 0;
6472     hvleavestabdelay    = 15;
6473     chiperasepulsewidth = 0;
6474     chiperasepolltimeout = 10;
6475     programfusepulsewidth = 0;
6476     programfusepolltimeout = 5;
6477     programlockpulsewidth = 0;
6478     programlockpolltimeout = 5;
6480     idr                 = 0x31;
6481     spmcr               = 0x57;
6483    memory "eeprom"
6484         paged           = no; /* leave this "no" */
6485         page_size       = 8;  /* for parallel programming */
6486         size            = 2048;
6487         min_write_delay = 9000;
6488         max_write_delay = 9000;
6489         readback_p1     = 0xff;
6490         readback_p2     = 0xff;
6491         read            = "  1   0   1   0      0   0   0   0",
6492                           "  x   x   x   x      x a10  a9  a8",
6493                           " a7  a6  a5  a4     a3  a2  a1  a0",
6494                           "  o   o   o   o      o   o   o   o";
6496         write           = "  1   1   0   0      0   0   0   0",
6497                           "  x   x   x   x      x a10  a9  a8",
6498                           " a7  a6  a5  a4     a3  a2  a1  a0",
6499                           "  i   i   i   i      i   i   i   i";
6501         loadpage_lo     = "  1   1   0   0      0   0   0   1",
6502                           "  0   0   0   0      0   0   0   0",
6503                           "  0   0   0   0      0  a2  a1  a0",
6504                           "  i   i   i   i      i   i   i   i";
6506         writepage       = "  1   1   0   0      0   0   1   0",
6507                           "  0   0   x   x      x   x   x  a8",
6508                           " a7  a6  a5  a4     a3   0   0   0",
6509                           "  x   x   x   x      x   x   x   x";
6511         loadpage_lo     = "  1   1   0   0      0   0   0   1",
6512                           "  0   0   0   0      0   0   0   0",
6513                           "  0   0   0   0      0  a2  a1  a0",
6514                           "  i   i   i   i      i   i   i   i";
6516         writepage       = "  1   1   0   0      0   0   1   0",
6517                           "  0   0   x   x      x a10  a9  a8",
6518                           " a7  a6  a5  a4     a3   0   0   0",
6519                           "  x   x   x   x      x   x   x   x";
6521         mode            = 0x41;
6522         delay           = 20;
6523         blocksize       = 8;
6524         readsize        = 256;
6525       ;
6527     memory "flash"
6528         paged           = yes;
6529         size            = 65536;
6530         page_size       = 256;
6531         num_pages       = 256;
6532         min_write_delay = 4500;
6533         max_write_delay = 4500;
6534         readback_p1     = 0xff;
6535         readback_p2     = 0xff;
6536         read_lo         = "  0   0   1   0      0   0   0   0",
6537                           "a15 a14 a13 a12    a11 a10  a9  a8",
6538                           " a7  a6  a5  a4     a3  a2  a1  a0",
6539                           "  o   o   o   o      o   o   o   o";
6541         read_hi         = "  0   0   1   0      1   0   0   0",
6542                           "a15 a14 a13 a12    a11 a10  a9  a8",
6543                           " a7  a6  a5  a4     a3  a2  a1  a0",
6544                           "  o   o   o   o      o   o   o   o";
6546         loadpage_lo     = "  0   1   0   0      0   0   0   0",
6547                           "  x   x   x   x      x   x   x   x",
6548                           "  x  a6  a5  a4     a3  a2  a1  a0",
6549                           "  i   i   i   i      i   i   i   i";
6551         loadpage_hi     = "  0   1   0   0      1   0   0   0",
6552                           "  x   x   x   x      x   x   x   x",
6553                           "  x  a6  a5  a4     a3  a2  a1  a0",
6554                           "  i   i   i   i      i   i   i   i";
6556         writepage       = "  0   1   0   0      1   1   0   0",
6557                           "  x   x   x a12    a11 a10  a9  a8",
6558                           " a7   x   x   x      x   x   x   x",
6559                           "  x   x   x   x      x   x   x   x";
6561         mode            = 0x41;
6562         delay           = 6;
6563         blocksize       = 256;
6564         readsize        = 256;
6565       ;
6567     memory "lfuse"
6568         size            = 1;
6569         min_write_delay = 4500;
6570         max_write_delay = 4500;
6571         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
6572                           "x x x x  x x x x   o o o o  o o o o";
6574         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
6575                           "x x x x  x x x x   i i i i  i i i i";
6576       ;
6578     memory "hfuse"
6579         size            = 1;
6580         min_write_delay = 4500;
6581         max_write_delay = 4500;
6582         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
6583                           "x x x x  x x x x   o o o o  o o o o";
6585         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
6586                           "x x x x  x x x x   i i i i  i i i i";
6587       ;
6589     memory "efuse"
6590         size            = 1;
6591         min_write_delay = 4500;
6592         max_write_delay = 4500;
6593         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
6594                           "x x x x  x x x x   o o o o  o o o o";
6596         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
6597                           "x x x x  x x x x   x x x x  x i i i";
6598       ;
6600     memory "lock"
6601         size            = 1;
6602         min_write_delay = 4500;
6603         max_write_delay = 4500;
6604         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6605                           "x x x x  x x x x   x x o o  o o o o";
6607         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6608                           "x x x x  x x x x   1 1 i i  i i i i";
6609       ;
6611     memory "signature"
6612         size            = 3;
6613         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
6614                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
6615       ;
6617     memory "calibration"
6618         size            = 1;
6619         read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
6620                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
6621       ;
6622   ;
6624 #------------------------------------------------------------
6625 # ATmega32
6626 #------------------------------------------------------------
6628 part
6629     id               = "m32";
6630     desc             = "ATMEGA32";
6631     has_jtag         = yes;
6632     stk500_devcode   = 0x91;
6633     avr910_devcode   = 0x72;
6634     signature        = 0x1e 0x95 0x02;
6635     chip_erase_delay = 9000;
6636     pagel            = 0xd7;
6637     bs2              = 0xa0;
6638     reset            = dedicated;
6639     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6640                        "x x x x  x x x x    x x x x  x x x x";
6642     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
6643                        "x x x x  x x x x    x x x x  x x x x";
6644     timeout             = 200;
6645     stabdelay           = 100;
6646     cmdexedelay         = 25;
6647     synchloops          = 32;
6648     bytedelay           = 0;
6649     pollindex           = 3;
6650     pollvalue           = 0x53;
6651     predelay            = 1;
6652     postdelay           = 1;
6653     pollmethod          = 0;
6655     pp_controlstack     =
6656         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6657         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6658         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6659         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6660     hventerstabdelay    = 100;
6661     progmodedelay       = 0;
6662     latchcycles         = 6;
6663     togglevtg           = 0;
6664     poweroffdelay       = 0;
6665     resetdelayms        = 0;
6666     resetdelayus        = 0;
6667     hvleavestabdelay    = 15;
6668     chiperasepulsewidth = 0;
6669     chiperasepolltimeout = 10;
6670     programfusepulsewidth = 0;
6671     programfusepolltimeout = 5;
6672     programlockpulsewidth = 0;
6673     programlockpolltimeout = 5;
6675     idr                 = 0x31;
6676     spmcr               = 0x57;
6677     allowfullpagebitstream = yes;
6679    memory "eeprom"
6680         paged           = no;   /* leave this "no" */
6681         page_size       = 4;    /* for parallel programming */
6682         size            = 1024;
6683         min_write_delay = 9000;
6684         max_write_delay = 9000;
6685         readback_p1     = 0xff;
6686         readback_p2     = 0xff;
6687         read            = "  1   0   1   0      0   0   0   0",
6688                           "  0   0   x   x      x   x  a9  a8",
6689                           " a7  a6  a5  a4     a3  a2  a1  a0",
6690                           "  o   o   o   o      o   o   o   o";
6692         write           = "  1   1   0   0      0   0   0   0",
6693                           "  0   0   x   x      x   x  a9  a8",
6694                           " a7  a6  a5  a4     a3  a2  a1  a0",
6695                           "  i   i   i   i      i   i   i   i";
6697         loadpage_lo     = "  1   1   0   0      0   0   0   1",
6698                           "  0   0   0   0      0   0   0   0",
6699                           "  0   0   0   0      0   0  a1  a0",
6700                           "  i   i   i   i      i   i   i   i";
6702         writepage       = "  1   1   0   0      0   0   1   0",
6703                           "  0   0   x   x      x   x  a9  a8",
6704                           " a7  a6  a5  a4     a3  a2   0   0",
6705                           "  x   x   x   x      x   x   x   x";
6707         mode            = 0x04;
6708         delay           = 10;
6709         blocksize       = 64;
6710         readsize        = 256;
6711       ;
6713     memory "flash"
6714         paged           = yes;
6715         size            = 32768;
6716         page_size       = 128;
6717         num_pages       = 256;
6718         min_write_delay = 4500;
6719         max_write_delay = 4500;
6720         readback_p1     = 0xff;
6721         readback_p2     = 0xff;
6722         read_lo         = "  0   0   1   0      0   0   0   0",
6723                           "  0   0 a13 a12    a11 a10  a9  a8",
6724                           " a7  a6  a5  a4     a3  a2  a1  a0",
6725                           "  o   o   o   o      o   o   o   o";
6727         read_hi         = "  0   0   1   0      1   0   0   0",
6728                           "  0   0 a13 a12    a11 a10  a9  a8",
6729                           " a7  a6  a5  a4     a3  a2  a1  a0",
6730                           "  o   o   o   o      o   o   o   o";
6732         loadpage_lo     = "  0   1   0   0      0   0   0   0",
6733                           "  0   0   x   x      x   x   x   x",
6734                           "  x   x  a5  a4     a3  a2  a1  a0",
6735                           "  i   i   i   i      i   i   i   i";
6737         loadpage_hi     = "  0   1   0   0      1   0   0   0",
6738                           "  0   0   x   x      x   x   x   x",
6739                           "  x   x  a5  a4     a3  a2  a1  a0",
6740                           "  i   i   i   i      i   i   i   i";
6742         writepage       = "  0   1   0   0      1   1   0   0",
6743                           "  0   0 a13 a12    a11 a10  a9  a8",
6744                           " a7  a6   x   x      x   x   x   x",
6745                           "  x   x   x   x      x   x   x   x";
6747         mode            = 0x21;
6748         delay           = 6;
6749         blocksize       = 64;
6750         readsize        = 256;
6751       ;
6753     memory "lfuse"
6754         size            = 1;
6755         min_write_delay = 2000;
6756         max_write_delay = 2000;
6757         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
6758                           "x x x x  x x x x   o o o o  o o o o";
6760         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
6761                           "x x x x  x x x x   i i i i  i i i i";
6762       ;
6764     memory "hfuse"
6765         size            = 1;
6766         min_write_delay = 2000;
6767         max_write_delay = 2000;
6768         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
6769                           "x x x x  x x x x   o o o o  o o o o";
6771         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
6772                           "x x x x  x x x x   i i i i  i i i i";
6773       ;
6775     memory "lock"
6776         size            = 1;
6777         min_write_delay = 2000;
6778         max_write_delay = 2000;
6779         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6780                           "x x x x  x x x x   x x o o  o o o o";
6782         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6783                           "x x x x  x x x x   1 1 i i  i i i i";
6784       ;
6786     memory "signature"
6787         size            = 3;
6788         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x x",
6789                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o o";
6790       ;
6792     memory "calibration"
6793         size            = 4;
6794         read            = "0 0 1 1  1 0 0 0    0 0 x x  x x x x",
6795                           "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
6796       ;
6797   ;
6799 #------------------------------------------------------------
6800 # ATmega161
6801 #------------------------------------------------------------
6803 part
6804     id               = "m161";
6805     desc             = "ATMEGA161";
6806     stk500_devcode   = 0x80;
6807     avr910_devcode   = 0x60;
6808     signature        = 0x1e 0x94 0x01;
6809     chip_erase_delay = 28000;
6810     pagel            = 0xd7;
6811     bs2              = 0xa0;
6812     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6813                        "x x x x  x x x x    x x x x  x x x x";
6815     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
6816                        "x x x x  x x x x    x x x x  x x x x";
6817     timeout             = 200;
6818     stabdelay           = 100;
6819     cmdexedelay         = 25;
6820     synchloops          = 32;
6821     bytedelay           = 0;
6822     pollindex           = 3;
6823     pollvalue           = 0x53;
6824     predelay            = 1;
6825     postdelay           = 1;
6826     pollmethod          = 0;
6828     pp_controlstack     =
6829         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6830         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6831         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6832         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6833     hventerstabdelay    = 100;
6834     progmodedelay       = 0;
6835     latchcycles         = 0;
6836     togglevtg           = 0;
6837     poweroffdelay       = 0;
6838     resetdelayms        = 0;
6839     resetdelayus        = 0;
6840     hvleavestabdelay    = 15;
6841     chiperasepulsewidth = 0;
6842     chiperasepolltimeout = 30;
6843     programfusepulsewidth = 0;
6844     programfusepolltimeout = 2;
6845     programlockpulsewidth = 0;
6846     programlockpolltimeout = 2;
6848    memory "eeprom"
6849         size            = 512;
6850         min_write_delay = 3400;
6851         max_write_delay = 3400;
6852         readback_p1     = 0xff;
6853         readback_p2     = 0xff;
6854         read            = "  1   0   1   0      0   0   0   0",
6855                           "  x   x   x   x      x   x   x  a8",
6856                           " a7  a6  a5  a4     a3  a2  a1  a0",
6857                           "  o   o   o   o      o   o   o   o";
6859         write           = "  1   1   0   0      0   0   0   0",
6860                           "  x   x   x   x      x   x   x  a8",
6861                           " a7  a6  a5  a4     a3  a2  a1  a0",
6862                           "  i   i   i   i      i   i   i   i";
6864         mode            = 0x04;
6865         delay           = 5;
6866         blocksize       = 128;
6867         readsize        = 256;
6868       ;
6870     memory "flash"
6871         paged           = yes;
6872         size            = 16384;
6873         page_size       = 128;
6874         num_pages       = 128;
6875         min_write_delay = 14000;
6876         max_write_delay = 14000;
6877         readback_p1     = 0xff;
6878         readback_p2     = 0xff;
6879         read_lo         = "  0   0   1   0      0   0   0   0",
6880                           "  x   x   x a12    a11 a10  a9  a8",
6881                           " a7  a6  a5  a4     a3  a2  a1  a0",
6882                           "  o   o   o   o      o   o   o   o";
6884         read_hi         = "  0   0   1   0      1   0   0   0",
6885                           "  x   x   x a12    a11 a10  a9  a8",
6886                           " a7  a6  a5  a4     a3  a2  a1  a0",
6887                           "  o   o   o   o      o   o   o   o";
6889         loadpage_lo     = "  0   1   0   0      0   0   0   0",
6890                           "  x   x   x   x      x   x   x   x",
6891                           "  x   x  a5  a4     a3  a2  a1  a0",
6892                           "  i   i   i   i      i   i   i   i";
6894         loadpage_hi     = "  0   1   0   0      1   0   0   0",
6895                           "  x   x   x   x      x   x   x   x",
6896                           "  x   x  a5  a4     a3  a2  a1  a0",
6897                           "  i   i   i   i      i   i   i   i";
6899         writepage       = "  0   1   0   0      1   1   0   0",
6900                           "  x   x   x a12    a11 a10  a9  a8",
6901                           " a7  a6   x   x      x   x   x   x",
6902                           "  x   x   x   x      x   x   x   x";
6904         mode            = 0x21;
6905         delay           = 16;
6906         blocksize       = 128;
6907         readsize        = 256;
6908       ;
6910     memory "fuse"
6911         size            = 1;
6912         min_write_delay = 2000;
6913         max_write_delay = 2000;
6914         read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
6915                           "x x x x  x x x x   x o x o  o o o o";
6917         write           = "1 0 1 0  1 1 0 0   1 0 1 x  x x x x",
6918                           "x x x x  x x x x   1 i 1 i  i i i i";
6919       ;
6921     memory "lock"
6922         size            = 1;
6923         min_write_delay = 2000;
6924         max_write_delay = 2000;
6925         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
6926                           "x x x x  x x x x   x x o o  o o o o";
6928         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
6929                           "x x x x  x x x x   1 1 i i  i i i i";
6930       ;
6931     memory "signature"
6932         size            = 3;
6933         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
6934                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
6935       ;
6936   ;
6939 #------------------------------------------------------------
6940 # ATmega8
6941 #------------------------------------------------------------
6943 part
6944     id               = "m8";
6945     desc             = "ATMEGA8";
6946     stk500_devcode   = 0x70;
6947     avr910_devcode   = 0x76;
6948     signature        = 0x1e 0x93 0x07;
6949     pagel            = 0xd7;
6950     bs2              = 0xc2;
6951     chip_erase_delay = 10000;
6952     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
6953                        "x x x x  x x x x    x x x x  x x x x";
6955     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
6956                        "x x x x  x x x x    x x x x  x x x x";
6958     timeout             = 200;
6959     stabdelay           = 100;
6960     cmdexedelay         = 25;
6961     synchloops          = 32;
6962     bytedelay           = 0;
6963     pollindex           = 3;
6964     pollvalue           = 0x53;
6965     predelay            = 1;
6966     postdelay           = 1;
6967     pollmethod          = 0;
6969     pp_controlstack     =
6970         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
6971         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
6972         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
6973         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
6974     hventerstabdelay    = 100;
6975     progmodedelay       = 0;
6976     latchcycles         = 5;
6977     togglevtg           = 1;
6978     poweroffdelay       = 15;
6979     resetdelayms        = 2;
6980     resetdelayus        = 0;
6981     hvleavestabdelay    = 15;
6982     resetdelay          = 15;
6983     chiperasepulsewidth = 0;
6984     chiperasepolltimeout = 10;
6985     programfusepulsewidth = 0;
6986     programfusepolltimeout = 5;
6987     programlockpulsewidth = 0;
6988     programlockpolltimeout = 5;
6990     memory "eeprom"
6991         size            = 512;
6992         page_size       = 4;
6993         min_write_delay = 9000;
6994         max_write_delay = 9000;
6995         readback_p1     = 0xff;
6996         readback_p2     = 0xff;
6997         read            = "  1   0   1   0      0   0   0   0",
6998                           "  0   0   x   x      x   x   x  a8",
6999                           " a7  a6  a5  a4     a3  a2  a1  a0",
7000                           "  o   o   o   o      o   o   o   o";
7002         write           = "  1   1   0   0      0   0   0   0",
7003                           "  0   0   x   x      x   x   x  a8",
7004                           " a7  a6  a5  a4     a3  a2  a1  a0", 
7005                           "  i   i   i   i      i   i   i   i";
7007         mode            = 0x04;
7008         delay           = 20;
7009         blocksize       = 128;
7010         readsize        = 256;
7011       ;
7012     memory "flash"
7013         paged           = yes;
7014         size            = 8192;
7015         page_size       = 64;
7016         num_pages       = 128;
7017         min_write_delay = 4500;
7018         max_write_delay = 4500;
7019         readback_p1     = 0xff;
7020         readback_p2     = 0x00;
7021         read_lo         = "  0   0   1   0    0   0   0   0",
7022                           "  0   0   0   0  a11 a10  a9  a8",
7023                           " a7  a6  a5  a4   a3  a2  a1  a0",
7024                           "  o   o   o   o    o   o   o   o";
7026         read_hi         = "  0   0   1   0    1   0   0   0",
7027                           "  0   0   0   0  a11 a10  a9  a8",
7028                           " a7  a6  a5  a4   a3  a2  a1  a0",
7029                           "  o   o   o   o    o   o   o   o";
7031         loadpage_lo     = "  0   1   0   0      0   0   0   0",
7032                           "  0   0   0   0      x   x   x   x",
7033                           "  x   x   x  a4     a3  a2  a1  a0",
7034                           "  i   i   i   i      i   i   i   i";
7036         loadpage_hi     = "  0   1   0   0      1   0   0   0",
7037                           "  0   0   0   0      x   x   x   x",
7038                           "  x   x   x  a4     a3  a2  a1  a0",
7039                           "  i   i   i   i      i   i   i   i";
7041         writepage       = "  0   1   0   0      1   1   0   0",
7042                           "  0   0   0   0    a11 a10  a9  a8",
7043                           " a7  a6  a5   x      x   x   x   x",
7044                           "  x   x   x   x      x   x   x   x";
7046         mode            = 0x21;
7047         delay           = 10;
7048         blocksize       = 64;
7049         readsize        = 256;
7050       ;
7052     memory "lfuse"
7053         size            = 1;
7054         min_write_delay = 2000;
7055         max_write_delay = 2000;
7056         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
7057                           "x x x x  x x x x   o o o o  o o o o";
7059         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
7060                           "x x x x  x x x x   i i i i  i i i i";
7061       ;
7063     memory "hfuse"
7064         size            = 1;
7065         min_write_delay = 2000;
7066         max_write_delay = 2000;
7067         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
7068                           "x x x x  x x x x   o o o o  o o o o";
7070         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
7071                           "x x x x  x x x x   i i i i  i i i i";
7072       ;
7074     memory "lock"
7075         size            = 1;
7076         min_write_delay = 2000;
7077         max_write_delay = 2000;
7078         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
7079                           "x x x x  x x x x   x x o o  o o o o";
7081         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
7082                           "x x x x  x x x x   1 1 i i  i i i i";
7083       ;
7085     memory "calibration"
7086         size            = 4;
7087         read            = "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x",
7088                           "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
7089       ;
7091     memory "signature"
7092         size            = 3;
7093         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
7094                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
7095       ;
7096   ;
7100 #------------------------------------------------------------
7101 # ATmega8515
7102 #------------------------------------------------------------
7104 part
7105     id               = "m8515";
7106     desc             = "ATMEGA8515";
7107     stk500_devcode   = 0x63;
7108     avr910_devcode   = 0x3A;
7109     signature        = 0x1e 0x93 0x06;
7110     chip_erase_delay = 9000;
7111     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
7112                        "x x x x  x x x x    x x x x  x x x x";
7114     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
7115                        "x x x x  x x x x    x x x x  x x x x";
7117     timeout             = 200;
7118     stabdelay           = 100;
7119     cmdexedelay         = 25;
7120     synchloops          = 32;
7121     bytedelay           = 0;
7122     pollindex           = 3;
7123     pollvalue           = 0x53;
7124     predelay            = 1;
7125     postdelay           = 1;
7126     pollmethod          = 0;
7128     pp_controlstack     =
7129         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
7130         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
7131         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
7132         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
7133     hventerstabdelay    = 100;
7134     progmodedelay       = 0;
7135     latchcycles         = 6;
7136     togglevtg           = 0;
7137     poweroffdelay       = 0;
7138     resetdelayms        = 0;
7139     resetdelayus        = 0;
7140     hvleavestabdelay    = 15;
7141     chiperasepulsewidth = 0;
7142     chiperasepolltimeout = 10;
7143     programfusepulsewidth = 0;
7144     programfusepolltimeout = 5;
7145     programlockpulsewidth = 0;
7146     programlockpolltimeout = 5;
7148     memory "eeprom"
7149         size            = 512;
7150         min_write_delay = 9000;
7151         max_write_delay = 9000;
7152         readback_p1     = 0xff;
7153         readback_p2     = 0xff;
7154  read            = "  1   0   1   0      0   0   0   0",
7155                           "  0   0   x   x      x   x   x  a8",
7156                           " a7  a6  a5  a4     a3  a2  a1  a0",
7157                           "  o   o   o   o      o   o   o   o";
7159  write           = "  1   1   0   0      0   0   0   0",
7160                           "  0   0   x   x      x   x   x  a8",
7161                           " a7  a6  a5  a4     a3  a2  a1  a0",
7162                           "  i   i   i   i      i   i   i   i";
7164         mode            = 0x04;
7165         delay           = 20;
7166         blocksize       = 128;
7167         readsize        = 256;
7168       ;
7169     memory "flash"
7170         paged           = yes;
7171         size            = 8192;
7172         page_size       = 64;
7173         num_pages       = 128;
7174         min_write_delay = 4500;
7175         max_write_delay = 4500;
7176         readback_p1     = 0xff;
7177         readback_p2     = 0xff;
7178         read_lo         = "  0   0   1   0    0   0   0   0",
7179                           "  0   0   0   0  a11 a10  a9  a8",
7180                           " a7  a6  a5  a4   a3  a2  a1  a0",
7181                           "  o   o   o   o    o   o   o   o";
7183         read_hi         = "  0   0   1   0    1   0   0   0",
7184                           "  0   0   0   0  a11 a10  a9  a8",
7185                           " a7  a6  a5  a4   a3  a2  a1  a0",
7186                           "  o   o   o   o    o   o   o   o";
7188         loadpage_lo     = "  0   1   0   0      0   0   0   0",
7189                           "  0   0   0   0      x   x   x   x",
7190                           "  x   x   x  a4     a3  a2  a1  a0",
7191                           "  i   i   i   i      i   i   i   i";
7193         loadpage_hi     = "  0   1   0   0      1   0   0   0",
7194                           "  0   0   0   0      x   x   x   x",
7195                           "  x   x   x  a4     a3  a2  a1  a0",
7196                           "  i   i   i   i      i   i   i   i";
7198         writepage       = "  0   1   0   0      1   1   0   0",
7199                           "  0   0   0   0    a11 a10  a9  a8",
7200                           " a7  a6  a5   x      x   x   x   x",
7201                           "  x   x   x   x      x   x   x   x";
7203         mode            = 0x21;
7204         delay           = 6;
7205         blocksize       = 64;
7206         readsize        = 256;
7207       ;
7209     memory "lfuse"
7210         size            = 1;
7211         min_write_delay = 4500;
7212         max_write_delay = 4500;
7213         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
7214                           "x x x x  x x x x   o o o o  o o o o";
7216         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
7217                           "x x x x  x x x x   i i i i  i i i i";
7218       ;
7220     memory "hfuse"
7221         size            = 1;
7222         min_write_delay = 4500;
7223         max_write_delay = 4500;
7224         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
7225                           "x x x x  x x x x   o o o o  o o o o";
7227         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
7228                           "x x x x  x x x x   i i i i  i i i i";
7229       ;
7231     memory "lock"
7232         size            = 1;
7233         min_write_delay = 4500;
7234         max_write_delay = 4500;
7235         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
7236                           "x x x x  x x x x   x x o o  o o o o";
7238         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
7239                           "x x x x  x x x x   1 1 i i  i i i i";
7240       ;
7242     memory "calibration"
7243         size            = 4;
7244         read            = "0 0 1 1  1 0 0 0     0 0 x x  x x x x",
7245                           "0 0 0 0  0 0 a1 a0   o o o o  o o o o";
7246       ;
7248     memory "signature"
7249         size            = 3;
7250         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
7251                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
7252       ;
7253   ;
7258 #------------------------------------------------------------
7259 # ATmega8535
7260 #------------------------------------------------------------
7262 part
7263     id               = "m8535";
7264     desc             = "ATMEGA8535";
7265     stk500_devcode   = 0x64;
7266     avr910_devcode   = 0x69;
7267     signature        = 0x1e 0x93 0x08;
7268     pagel            = 0xd7;
7269     bs2              = 0xa0;
7270     chip_erase_delay = 9000;
7271     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
7272                        "x x x x  x x x x    x x x x  x x x x";
7274     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
7275                        "x x x x  x x x x    x x x x  x x x x";
7277     timeout             = 200;
7278     stabdelay           = 100;
7279     cmdexedelay         = 25;
7280     synchloops          = 32;
7281     bytedelay           = 0;
7282     pollindex           = 3;
7283     pollvalue           = 0x53;
7284     predelay            = 1;
7285     postdelay           = 1;
7286     pollmethod          = 0;
7288     pp_controlstack     =
7289         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
7290         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
7291         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
7292         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
7293     hventerstabdelay    = 100;
7294     progmodedelay       = 0;
7295     latchcycles         = 6;
7296     togglevtg           = 0;
7297     poweroffdelay       = 0;
7298     resetdelayms        = 0;
7299     resetdelayus        = 0;
7300     hvleavestabdelay    = 15;
7301     chiperasepulsewidth = 0;
7302     chiperasepolltimeout = 10;
7303     programfusepulsewidth = 0;
7304     programfusepolltimeout = 5;
7305     programlockpulsewidth = 0;
7306     programlockpolltimeout = 5;
7308     memory "eeprom"
7309         size            = 512;
7310         min_write_delay = 9000;
7311         max_write_delay = 9000;
7312         readback_p1     = 0xff;
7313         readback_p2     = 0xff;
7314         read            = "  1   0   1   0      0   0   0   0",
7315                           "  0   0   x   x      x   x   x  a8",
7316                           " a7  a6  a5  a4     a3  a2  a1  a0",
7317                           "  o   o   o   o      o   o   o   o";
7319         write           = "  1   1   0   0      0   0   0   0",
7320                           "  0   0   x   x      x   x   x  a8",
7321                           " a7  a6  a5  a4     a3  a2  a1  a0",
7322                           "  i   i   i   i      i   i   i   i";
7324         mode            = 0x04;
7325         delay           = 20;
7326         blocksize       = 128;
7327         readsize        = 256;
7328       ;
7329     memory "flash"
7330         paged           = yes;
7331         size            = 8192;
7332         page_size       = 64;
7333         num_pages       = 128;
7334         min_write_delay = 4500;
7335         max_write_delay = 4500;
7336         readback_p1     = 0xff;
7337         readback_p2     = 0xff;
7338         read_lo         = "  0   0   1   0    0   0   0   0",
7339                           "  0   0   0   0  a11 a10  a9  a8",
7340                           " a7  a6  a5  a4   a3  a2  a1  a0",
7341                           "  o   o   o   o    o   o   o   o";
7343         read_hi         = "  0   0   1   0    1   0   0   0",
7344                           "  0   0   0   0  a11 a10  a9  a8",
7345                           " a7  a6  a5  a4   a3  a2  a1  a0",
7346                           "  o   o   o   o    o   o   o   o";
7348         loadpage_lo     = "  0   1   0   0      0   0   0   0",
7349                           "  0   0   0   0      x   x   x   x",
7350                           "  x   x   x  a4     a3  a2  a1  a0",
7351                           "  i   i   i   i      i   i   i   i";
7353         loadpage_hi     = "  0   1   0   0      1   0   0   0",
7354                           "  0   0   0   0      x   x   x   x",
7355                           "  x   x   x  a4     a3  a2  a1  a0",
7356                           "  i   i   i   i      i   i   i   i";
7358         writepage       = "  0   1   0   0      1   1   0   0",
7359                           "  0   0   0   0    a11 a10  a9  a8",
7360                           " a7  a6  a5   x      x   x   x   x",
7361                           "  x   x   x   x      x   x   x   x";
7363         mode            = 0x21;
7364         delay           = 6;
7365         blocksize       = 64;
7366         readsize        = 256;
7367       ;
7369     memory "lfuse"
7370         size            = 1;
7371         min_write_delay = 2000;
7372         max_write_delay = 2000;
7373         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
7374                           "x x x x  x x x x   o o o o  o o o o";
7376         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
7377                           "x x x x  x x x x   i i i i  i i i i";
7378       ;
7380     memory "hfuse"
7381         size            = 1;
7382         min_write_delay = 2000;
7383         max_write_delay = 2000;
7384         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
7385                           "x x x x  x x x x   o o o o  o o o o";
7387         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
7388                           "x x x x  x x x x   i i i i  i i i i";
7389       ;
7391     memory "lock"
7392         size            = 1;
7393         min_write_delay = 2000;
7394         max_write_delay = 2000;
7395         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
7396                           "x x x x  x x x x   x x o o  o o o o";
7398         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
7399                           "x x x x  x x x x   1 1 i i  i i i i";
7400       ;
7402     memory "calibration"
7403         size            = 4;
7404         read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
7405                           "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
7406       ;
7408     memory "signature"
7409         size            = 3;
7410         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
7411                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
7412       ;
7413   ;
7416 #------------------------------------------------------------
7417 # ATtiny26
7418 #------------------------------------------------------------
7420 part
7421     id                  = "t26";
7422     desc                = "ATTINY26";
7423     stk500_devcode      = 0x21;
7424     avr910_devcode      = 0x5e;
7425     signature           = 0x1e 0x91 0x09;
7426     pagel               = 0xb3;
7427     bs2                 = 0xb2;
7428     chip_erase_delay    = 9000;
7429     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
7430                           "x x x x  x x x x   x x x x  x x x x";
7432     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
7433                           "x x x x  x x x x   x x x x  x x x x";
7435     timeout             = 200;
7436     stabdelay           = 100;
7437     cmdexedelay         = 25;
7438     synchloops          = 32;
7439     bytedelay           = 0;
7440     pollindex           = 3;
7441     pollvalue           = 0x53;
7442     predelay            = 1;
7443     postdelay           = 1;
7444     pollmethod          = 0;
7446     pp_controlstack     =
7447         0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
7448         0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
7449         0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
7450         0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
7451     hventerstabdelay    = 100;
7452     progmodedelay       = 0;
7453     latchcycles         = 5;
7454     togglevtg           = 1;
7455     poweroffdelay       = 15;
7456     resetdelayms        = 2;
7457     resetdelayus        = 0;
7458     hvleavestabdelay    = 15;
7459     chiperasepulsewidth = 0;
7460     chiperasepolltimeout = 10;
7461     programfusepulsewidth = 0;
7462     programfusepolltimeout = 5;
7463     programlockpulsewidth = 0;
7464     programlockpolltimeout = 5;
7466     memory "eeprom"
7467         size            = 128;
7468         min_write_delay = 9000;
7469         max_write_delay = 9000;
7470         readback_p1     = 0xff;
7471         readback_p2     = 0xff;
7472         read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
7473                           "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
7475         write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
7476                           "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
7478         mode            = 0x04;
7479         delay           = 10;
7480         blocksize       = 64;
7481         readsize        = 256;
7482     ;
7484     memory "flash"
7485         paged           = yes;
7486         size            = 2048;
7487         page_size       = 32;
7488         num_pages       = 64;
7489         min_write_delay = 4500;
7490         max_write_delay = 4500;
7491         readback_p1     = 0xff;
7492         readback_p2     = 0xff;
7493         read_lo         = "  0  0  1  0   0  0  0  0",
7494                           "  x  x  x  x   x  x a9 a8",
7495                           " a7 a6 a5 a4  a3 a2 a1 a0",
7496                           "  o  o  o  o   o  o  o  o";
7498         read_hi         = "  0  0  1  0   1  0  0  0",
7499                           "  x  x  x  x   x  x a9 a8",
7500                           " a7 a6 a5 a4  a3 a2 a1 a0",
7501                           "  o  o  o  o   o  o  o  o";
7503         loadpage_lo     = "  0  1  0  0   0  0  0  0",
7504                           "  x  x  x  x   x  x  x  x",
7505                           "  x  x  x  x  a3 a2 a1 a0",
7506                           "  i  i  i  i   i  i  i  i";
7508         loadpage_hi     = "  0  1  0  0   1  0  0  0",
7509                           "  x  x  x  x   x  x  x  x",
7510                           "  x  x  x  x  a3 a2 a1 a0",
7511                           "  i  i  i  i   i  i  i  i";
7513         writepage       = "  0  1  0  0   1  1  0  0",
7514                           "  x  x  x  x   x  x a9 a8",
7515                           " a7 a6 a5 a4   x  x  x  x",
7516                           "  x  x  x  x   x  x  x  x";
7518         mode            = 0x21;
7519         delay           = 6;
7520         blocksize       = 16;
7521         readsize        = 256;
7522     ;
7524     memory "signature"
7525         size            = 3;
7526         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
7527                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
7528     ;
7530     memory "lock"
7531         size            = 1;
7532         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
7533                           "x  x  x  x   x  x  x  x    x x x x  x x o o";
7535         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
7536                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
7537         min_write_delay = 9000;
7538         max_write_delay = 9000;
7539     ;
7541     memory "lfuse"
7542         size            = 1;
7543         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
7544                           "x x x x  x x x x  i i i i  i i i i";
7546         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
7547                           "x x x x  x x x x  o o o o  o o o o";
7548         min_write_delay = 9000;
7549         max_write_delay = 9000;
7550       ;
7552     memory "hfuse"
7553         size            = 1;
7554         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
7555                           "x x x x  x x x x  x x x i  i i i i";
7557         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
7558                           "x x x x  x x x x  x x x o  o o o o";
7559         min_write_delay = 9000;
7560         max_write_delay = 9000;
7561       ;
7563     memory "calibration"
7564         size            = 4;
7565         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
7566                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
7567     ;
7572 #------------------------------------------------------------
7573 # ATtiny261
7574 #------------------------------------------------------------
7575 # Close to ATtiny26
7577 part
7578     id                  = "t261";
7579     desc                = "ATTINY261";
7580      has_debugwire = yes;
7581      flash_instr   = 0xB4, 0x00, 0x10;
7582      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
7583                      0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
7584                      0x99, 0xE1, 0xBB, 0xAC;
7585 #    stk500_devcode      = 0x21;
7586 #    avr910_devcode      = 0x5e;
7587     signature           = 0x1e 0x91 0x0c;
7588     pagel               = 0xb3;
7589     bs2                 = 0xb2;
7590     chip_erase_delay    = 4000;
7592     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
7593                           "x x x x  x x x x   x x x x  x x x x";
7595     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
7596                           "x x x x  x x x x   x x x x  x x x x";
7598     timeout             = 200;
7599     stabdelay           = 100;
7600     cmdexedelay         = 25;
7601     synchloops          = 32;
7602     bytedelay           = 0;
7603     pollindex           = 3;
7604     pollvalue           = 0x53;
7605     predelay            = 1;
7606     postdelay           = 1;
7607     pollmethod          = 0;
7609     pp_controlstack     =
7610         0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
7611         0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
7612         0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
7613         0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
7614     hventerstabdelay    = 100;
7615     progmodedelay       = 0;
7616     latchcycles         = 5;
7617     togglevtg           = 1;
7618     poweroffdelay       = 15;
7619     resetdelayms        = 2;
7620     resetdelayus        = 0;
7621     hvleavestabdelay    = 15;
7622     chiperasepulsewidth = 0;
7623     chiperasepolltimeout = 10;
7624     programfusepulsewidth = 0;
7625     programfusepolltimeout = 5;
7626     programlockpulsewidth = 0;
7627     programlockpolltimeout = 5;
7629     memory "eeprom"
7630         paged           = no;
7631         size            = 128;
7632         page_size       = 4;
7633         num_pages       = 32;
7634         min_write_delay = 4000;
7635         max_write_delay = 4000;
7636         readback_p1     = 0xff;
7637         readback_p2     = 0xff;
7639         read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
7640                           "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
7642         write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
7643                           "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
7645         loadpage_lo     = "  1   1   0   0      0   0   0   1",
7646                           "  0   0   0   0      0   0   0   0",
7647                           "  0   0   0   0      0   0  a1  a0",
7648                           "  i   i   i   i      i   i   i   i";
7650         writepage       = "  1   1   0   0      0   0   1   0",
7651                           "  0   0   x   x      x   x   x   x",
7652                           "  x  a6  a5  a4     a3  a2   0   0",
7653                           "  x   x   x   x      x   x   x   x";
7655         mode            = 0x41;
7656         delay           = 10;
7657         blocksize       = 4;
7658         readsize        = 256;
7659     ;
7661     memory "flash"
7662         paged           = yes;
7663         size            = 2048;
7664         page_size       = 32;
7665         num_pages       = 64;
7666         min_write_delay = 4500;
7667         max_write_delay = 4500;
7668         readback_p1     = 0xff;
7669         readback_p2     = 0xff;
7671         read_lo         = "  0  0  1  0   0  0  0  0",
7672                           "  x  x  x  x   x  x a9 a8",
7673                           " a7 a6 a5 a4  a3 a2 a1 a0",
7674                           "  o  o  o  o   o  o  o  o";
7676         read_hi         = "  0  0  1  0   1  0  0  0",
7677                           "  x  x  x  x   x  x a9 a8",
7678                           " a7 a6 a5 a4  a3 a2 a1 a0",
7679                           "  o  o  o  o   o  o  o  o";
7681         loadpage_lo     = "  0  1  0  0   0  0  0  0",
7682                           "  x  x  x  x   x  x  x  x",
7683                           "  x  x  x  x  a3 a2 a1 a0",
7684                           "  i  i  i  i   i  i  i  i";
7686         loadpage_hi     = "  0  1  0  0   1  0  0  0",
7687                           "  x  x  x  x   x  x  x  x",
7688                           "  x  x  x  x  a3 a2 a1 a0",
7689                           "  i  i  i  i   i  i  i  i";
7691         writepage       = "  0  1  0  0   1  1  0  0",
7692                           "  x  x  x  x   x  x a9 a8",
7693                           " a7 a6 a5 a4   x  x  x  x",
7694                           "  x  x  x  x   x  x  x  x";
7696         mode            = 0x41;
7697         delay           = 6;
7698         blocksize       = 32;
7699         readsize        = 256;
7700     ;
7702     memory "signature"
7703         size            = 3;
7704         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
7705                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
7706     ;
7708     memory "lock"
7709         size            = 1;
7710         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
7711                           "x  x  x  x   x  x  x  x    x x x x  x x o o";
7713         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
7714                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
7715         min_write_delay = 4500;
7716         max_write_delay = 4500;
7717     ;
7719     memory "lfuse"
7720         size            = 1;
7721         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
7722                           "x x x x  x x x x  i i i i  i i i i";
7724         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
7725                           "x x x x  x x x x  o o o o  o o o o";
7726         min_write_delay = 4500;
7727         max_write_delay = 4500;
7728       ;
7730     memory "hfuse"
7731         size            = 1;
7732         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
7733                           "x x x x  x x x x  i i i i  i i i i";
7735         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
7736                           "x x x x  x x x x  o o o o  o o o o";
7737         min_write_delay = 4500;
7738         max_write_delay = 4500;
7739       ;
7741     memory "efuse"
7742         size            = 1;
7743         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
7744                           "x x x x  x x x x   x x x x  x x x i";
7746         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
7747                           "x x x x  x x x x   x x x x  x x x o";
7748         min_write_delay = 4500;
7749         max_write_delay = 4500;
7750       ;
7752     memory "calibration"
7753         size            = 1;
7754         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
7755                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
7756     ;
7761 #------------------------------------------------------------
7762 # ATtiny461
7763 #------------------------------------------------------------
7764 # Close to ATtiny261
7766 part
7767     id                  = "t461";
7768     desc                = "ATTINY461";
7769      has_debugwire = yes;
7770      flash_instr   = 0xB4, 0x00, 0x10;
7771      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
7772                      0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
7773                      0x99, 0xE1, 0xBB, 0xAC;
7774 #    stk500_devcode      = 0x21;
7775 #    avr910_devcode      = 0x5e;
7776     signature           = 0x1e 0x92 0x08;
7777     pagel               = 0xb3;
7778     bs2                 = 0xb2;
7779     chip_erase_delay    = 4000;
7781     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
7782                           "x x x x  x x x x   x x x x  x x x x";
7784     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
7785                           "x x x x  x x x x   x x x x  x x x x";
7787     timeout             = 200;
7788     stabdelay           = 100;
7789     cmdexedelay         = 25;
7790     synchloops          = 32;
7791     bytedelay           = 0;
7792     pollindex           = 3;
7793     pollvalue           = 0x53;
7794     predelay            = 1;
7795     postdelay           = 1;
7796     pollmethod          = 0;
7798     pp_controlstack     =
7799         0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
7800         0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
7801         0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
7802         0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
7803     hventerstabdelay    = 100;
7804     progmodedelay       = 0;
7805     latchcycles         = 5;
7806     togglevtg           = 1;
7807     poweroffdelay       = 15;
7808     resetdelayms        = 2;
7809     resetdelayus        = 0;
7810     hvleavestabdelay    = 15;
7811     chiperasepulsewidth = 0;
7812     chiperasepolltimeout = 10;
7813     programfusepulsewidth = 0;
7814     programfusepolltimeout = 5;
7815     programlockpulsewidth = 0;
7816     programlockpolltimeout = 5;
7818     memory "eeprom"
7819         paged           = no;
7820         size            = 256;
7821         page_size       = 4;
7822         num_pages       = 64;
7823         min_write_delay = 4000;
7824         max_write_delay = 4000;
7825         readback_p1     = 0xff;
7826         readback_p2     = 0xff;
7828         read            = " 1  0  1  0   0  0  0  0    x x x x  x x x x",
7829                           "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
7831         write           = " 1  1  0  0   0  0  0  0    x x x x  x x x x",
7832                           "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
7834         loadpage_lo     = "  1   1   0   0      0   0   0   1",
7835                           "  0   0   0   0      0   0   0   0",
7836                           "  0   0   0   0      0   0  a1  a0",
7837                           "  i   i   i   i      i   i   i   i";
7839         writepage       = "  1   1   0   0      0   0   1   0",
7840                           "  0   0   x   x      x   x   x   x",
7841                           " a7  a6  a5  a4     a3  a2   0   0",
7842                           "  x   x   x   x      x   x   x   x";
7844         mode            = 0x41;
7845         delay           = 10;
7846         blocksize       = 4;
7847         readsize        = 256;
7848     ;
7850     memory "flash"
7851         paged           = yes;
7852         size            = 4096;
7853         page_size       = 64;
7854         num_pages       = 64;
7855         min_write_delay = 4500;
7856         max_write_delay = 4500;
7857         readback_p1     = 0xff;
7858         readback_p2     = 0xff;
7860         read_lo         = "  0  0  1  0   0   0  0  0",
7861                           "  x  x  x  x   x a10 a9 a8",
7862                           " a7 a6 a5 a4  a3  a2 a1 a0",
7863                           "  o  o  o  o   o   o  o  o";
7865         read_hi         = "  0  0  1  0   1   0  0  0",
7866                           "  x  x  x  x   x a10 a9 a8",
7867                           " a7 a6 a5 a4  a3  a2 a1 a0",
7868                           "  o  o  o  o   o   o  o  o";
7870         loadpage_lo     = "  0  1  0  0   0  0  0  0",
7871                           "  x  x  x  x   x  x  x  x",
7872                           "  x  x  x a4  a3 a2 a1 a0",
7873                           "  i  i  i  i   i  i  i  i";
7875         loadpage_hi     = "  0  1  0  0   1  0  0  0",
7876                           "  x  x  x  x   x  x  x  x",
7877                           "  x  x  x a4  a3 a2 a1 a0",
7878                           "  i  i  i  i   i  i  i  i";
7880         writepage       = "  0  1  0  0   1   1  0  0",
7881                           "  x  x  x  x   x a10 a9 a8",
7882                           " a7 a6 a5  x   x   x  x  x",
7883                           "  x  x  x  x   x   x  x  x";
7885         mode            = 0x41;
7886         delay           = 6;
7887         blocksize       = 64;
7888         readsize        = 256;
7889     ;
7891     memory "signature"
7892         size            = 3;
7893         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
7894                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
7895     ;
7897     memory "lock"
7898         size            = 1;
7899         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
7900                           "x  x  x  x   x  x  x  x    x x x x  x x o o";
7902         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
7903                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
7904         min_write_delay = 4500;
7905         max_write_delay = 4500;
7906     ;
7908     memory "lfuse"
7909         size            = 1;
7910         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
7911                           "x x x x  x x x x  i i i i  i i i i";
7913         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
7914                           "x x x x  x x x x  o o o o  o o o o";
7915         min_write_delay = 4500;
7916         max_write_delay = 4500;
7917       ;
7919     memory "hfuse"
7920         size            = 1;
7921         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
7922                           "x x x x  x x x x  i i i i  i i i i";
7924         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
7925                           "x x x x  x x x x  o o o o  o o o o";
7926         min_write_delay = 4500;
7927         max_write_delay = 4500;
7928       ;
7930     memory "efuse"
7931         size            = 1;
7932         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
7933                           "x x x x  x x x x   x x x x  x x x i";
7935         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
7936                           "x x x x  x x x x   x x x x  x x x o";
7937         min_write_delay = 4500;
7938         max_write_delay = 4500;
7939       ;
7941     memory "calibration"
7942         size            = 1;
7943         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
7944                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
7945     ;
7950 #------------------------------------------------------------
7951 # ATtiny861
7952 #------------------------------------------------------------
7953 # Close to ATtiny461
7955 part
7956     id                  = "t861";
7957     desc                = "ATTINY861";
7958      has_debugwire = yes;
7959      flash_instr   = 0xB4, 0x00, 0x10;
7960      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
7961                      0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
7962                      0x99, 0xE1, 0xBB, 0xAC;
7963 #    stk500_devcode      = 0x21;
7964 #    avr910_devcode      = 0x5e;
7965     signature           = 0x1e 0x93 0x0d;
7966     pagel               = 0xb3;
7967     bs2                 = 0xb2;
7968     chip_erase_delay    = 4000;
7970     pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
7971                           "x x x x  x x x x   x x x x  x x x x";
7973     chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
7974                           "x x x x  x x x x   x x x x  x x x x";
7976     timeout             = 200;
7977     stabdelay           = 100;
7978     cmdexedelay         = 25;
7979     synchloops          = 32;
7980     bytedelay           = 0;
7981     pollindex           = 3;
7982     pollvalue           = 0x53;
7983     predelay            = 1;
7984     postdelay           = 1;
7985     pollmethod          = 0;
7987     pp_controlstack     =
7988         0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
7989         0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
7990         0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
7991         0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
7992     hventerstabdelay    = 100;
7993     progmodedelay       = 0;
7994     latchcycles         = 5;
7995     togglevtg           = 1;
7996     poweroffdelay       = 15;
7997     resetdelayms        = 2;
7998     resetdelayus        = 0;
7999     hvleavestabdelay    = 15;
8000     chiperasepulsewidth = 0;
8001     chiperasepolltimeout = 10;
8002     programfusepulsewidth = 0;
8003     programfusepolltimeout = 5;
8004     programlockpulsewidth = 0;
8005     programlockpolltimeout = 5;
8007     memory "eeprom"
8008         paged           = no;
8009         size            = 512;
8010         num_pages       = 128;
8011         page_size       = 4;
8012         min_write_delay = 4000;
8013         max_write_delay = 4000;
8014         readback_p1     = 0xff;
8015         readback_p2     = 0xff;
8017         read            = " 1  0  1  0   0  0  0  0    x x x x  x x x a8",
8018                           "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o  o";
8020         write           = " 1  1  0  0   0  0  0  0    x x x x  x x x a8",
8021                           "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i  i";
8023         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8024                           "  0   0   0   0      0   0   0   0",
8025                           "  0   0   0   0      0   0  a1  a0",
8026                           "  i   i   i   i      i   i   i   i";
8028         writepage       = "  1   1   0   0      0   0   1   0",
8029                           "  0   0   x   x      x   x   x  a8",
8030                           " a7  a6  a5  a4     a3  a2   0   0",
8031                           "  x   x   x   x      x   x   x   x";
8033         mode            = 0x41;
8034         delay           = 10;
8035         blocksize       = 4;
8036         readsize        = 256;
8037     ;
8039     memory "flash"
8040         paged           = yes;
8041         size            = 8192;
8042         page_size       = 64;
8043         num_pages       = 128;
8044         min_write_delay = 4500;
8045         max_write_delay = 4500;
8046         readback_p1     = 0xff;
8047         readback_p2     = 0xff;
8049         read_lo         = "  0  0  1  0   0   0  0  0",
8050                           "  x  x  x  x a11 a10 a9 a8",
8051                           " a7 a6 a5 a4  a3  a2 a1 a0",
8052                           "  o  o  o  o   o   o  o  o";
8054         read_hi         = "  0  0  1  0   1   0  0  0",
8055                           "  x  x  x  x a11 a10 a9 a8",
8056                           " a7 a6 a5 a4  a3  a2 a1 a0",
8057                           "  o  o  o  o   o   o  o  o";
8059         loadpage_lo     = "  0  1  0  0   0  0  0  0",
8060                           "  x  x  x  x   x  x  x  x",
8061                           "  x  x  x a4  a3 a2 a1 a0",
8062                           "  i  i  i  i   i  i  i  i";
8064         loadpage_hi     = "  0  1  0  0   1  0  0  0",
8065                           "  x  x  x  x   x  x  x  x",
8066                           "  x  x  x a4  a3 a2 a1 a0",
8067                           "  i  i  i  i   i  i  i  i";
8069         writepage       = "  0  1  0  0   1   1  0  0",
8070                           "  x  x  x  x a11 a10 a9 a8",
8071                           " a7 a6 a5  x   x   x  x  x",
8072                           "  x  x  x  x   x   x  x  x";
8074         mode            = 0x41;
8075         delay           = 6;
8076         blocksize       = 64;
8077         readsize        = 256;
8078     ;
8080     memory "signature"
8081         size            = 3;
8082         read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
8083                           "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
8084     ;
8086     memory "lock"
8087         size            = 1;
8088         read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
8089                           "x  x  x  x   x  x  x  x    x x x x  x x o o";
8091         write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
8092                           "x  x  x  x   x  x  x  x    x x x x  x x x x";
8093         min_write_delay = 4500;
8094         max_write_delay = 4500;
8095     ;
8097     memory "lfuse"
8098         size            = 1;
8099         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
8100                           "x x x x  x x x x  i i i i  i i i i";
8102         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
8103                           "x x x x  x x x x  o o o o  o o o o";
8104         min_write_delay = 4500;
8105         max_write_delay = 4500;
8106       ;
8108     memory "hfuse"
8109         size            = 1;
8110         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
8111                           "x x x x  x x x x  i i i i  i i i i";
8113         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
8114                           "x x x x  x x x x  o o o o  o o o o";
8115         min_write_delay = 4500;
8116         max_write_delay = 4500;
8117       ;
8119     memory "efuse"
8120         size            = 1;
8121         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
8122                           "x x x x  x x x x   x x x x  x x x i";
8124         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
8125                           "x x x x  x x x x   x x x x  x x x o";
8126         min_write_delay = 4500;
8127         max_write_delay = 4500;
8128       ;
8130     memory "calibration"
8131         size            = 1;
8132         read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
8133                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
8134     ;
8139 #------------------------------------------------------------
8140 # ATmega48
8141 #------------------------------------------------------------
8143 part
8144     id               = "m48";
8145     desc             = "ATMEGA48";
8146      has_debugwire = yes;
8147      flash_instr   = 0xB6, 0x01, 0x11;
8148      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
8149                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
8150                      0x99, 0xF9, 0xBB, 0xAF;
8151     stk500_devcode   = 0x59;
8152 #    avr910_devcode   = 0x;
8153     signature        = 0x1e 0x92 0x05;
8154     pagel            = 0xd7;
8155     bs2              = 0xc2;
8156     chip_erase_delay = 45000;
8157     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
8158                        "x x x x  x x x x    x x x x  x x x x";
8160     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
8161                        "x x x x  x x x x    x x x x  x x x x";
8163     timeout             = 200;
8164     stabdelay           = 100;
8165     cmdexedelay         = 25;
8166     synchloops          = 32;
8167     bytedelay           = 0;
8168     pollindex           = 3;
8169     pollvalue           = 0x53;
8170     predelay            = 1;
8171     postdelay           = 1;
8172     pollmethod          = 1;
8174     pp_controlstack     =
8175         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
8176         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
8177         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
8178         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
8179     hventerstabdelay    = 100;
8180     progmodedelay       = 0;
8181     latchcycles         = 5;
8182     togglevtg           = 1;
8183     poweroffdelay       = 15;
8184     resetdelayms        = 1;
8185     resetdelayus        = 0;
8186     hvleavestabdelay    = 15;
8187     resetdelay          = 15;
8188     chiperasepulsewidth = 0;
8189     chiperasepolltimeout = 10;
8190     programfusepulsewidth = 0;
8191     programfusepolltimeout = 5;
8192     programlockpulsewidth = 0;
8193     programlockpolltimeout = 5;
8195     memory "eeprom"
8196         paged           = no;
8197         page_size       = 4;
8198         size            = 256;
8199         min_write_delay = 3600;
8200         max_write_delay = 3600;
8201         readback_p1     = 0xff;
8202         readback_p2     = 0xff;
8203         read            = "  1   0   1   0      0   0   0   0",
8204                           "  0   0   0   x      x   x   x   x",
8205                           " a7  a6  a5  a4     a3  a2  a1  a0",
8206                           "  o   o   o   o      o   o   o   o";
8208         write           = "  1   1   0   0      0   0   0   0",
8209                           "  0   0   0   x      x   x   x   x",
8210                           " a7  a6  a5  a4     a3  a2  a1  a0", 
8211                           "  i   i   i   i      i   i   i   i";
8213         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8214                           "  0   0   0   0      0   0   0   0",
8215                           "  0   0   0   0      0   0  a1  a0",
8216                           "  i   i   i   i      i   i   i   i";
8218         writepage       = "  1   1   0   0      0   0   1   0",
8219                           "  0   0   x   x      x   x   x   x",
8220                           " a7  a6  a5  a4     a3  a2   0   0",
8221                           "  x   x   x   x      x   x   x   x";
8223         mode            = 0x41;
8224         delay           = 20;
8225         blocksize       = 4;
8226         readsize        = 256;
8227       ;
8228     memory "flash"
8229         paged           = yes;
8230         size            = 4096;
8231         page_size       = 64;
8232         num_pages       = 64;
8233         min_write_delay = 4500;
8234         max_write_delay = 4500;
8235         readback_p1     = 0x00;
8236         readback_p2     = 0x00;
8237         read_lo         = "  0   0   1   0    0   0   0   0",
8238                           "  0   0   0   0    0 a10  a9  a8",
8239                           " a7  a6  a5  a4   a3  a2  a1  a0",
8240                           "  o   o   o   o    o   o   o   o";
8242         read_hi         = "  0   0   1   0    1   0   0   0",
8243                           "  0   0   0   0    0 a10  a9  a8",
8244                           " a7  a6  a5  a4   a3  a2  a1  a0",
8245                           "  o   o   o   o    o   o   o   o";
8247         loadpage_lo     = "  0   1   0   0      0   0   0   0",
8248                           "  0   0   0   x      x   x   x   x",
8249                           "  x   x   x  a4     a3  a2  a1  a0",
8250                           "  i   i   i   i      i   i   i   i";
8252         loadpage_hi     = "  0   1   0   0      1   0   0   0",
8253                           "  0   0   0   x      x   x   x   x",
8254                           "  x   x   x  a4     a3  a2  a1  a0",
8255                           "  i   i   i   i      i   i   i   i";
8257         writepage       = "  0   1   0   0      1   1   0   0",
8258                           "  0   0   0   0      0 a10  a9  a8",
8259                           " a7  a6  a5   x      x   x   x   x",
8260                           "  x   x   x   x      x   x   x   x";
8262         mode            = 0x41;
8263         delay           = 6;
8264         blocksize       = 64;
8265         readsize        = 256;
8266       ;
8268     memory "lfuse"
8269         size            = 1;
8270         min_write_delay = 4500;
8271         max_write_delay = 4500;
8272         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
8273                           "x x x x  x x x x   o o o o  o o o o";
8275         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
8276                           "x x x x  x x x x   i i i i  i i i i";
8277       ;
8279     memory "hfuse"
8280         size            = 1;
8281         min_write_delay = 4500;
8282         max_write_delay = 4500;
8283         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
8284                           "x x x x  x x x x   o o o o  o o o o";
8286         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
8287                           "x x x x  x x x x   i i i i  i i i i";
8288       ;
8290     memory "efuse"
8291         size            = 1;
8292         min_write_delay = 4500;
8293         max_write_delay = 4500;
8294         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
8295                           "x x x x  x x x x   x x x x  x x x o";
8297         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
8298                           "x x x x  x x x x   x x x x  x x x i";
8299       ;
8301     memory "lock"
8302         size            = 1;
8303         min_write_delay = 4500;
8304         max_write_delay = 4500;
8305         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
8306                           "x x x x  x x x x   x x o o  o o o o";
8308         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
8309                           "x x x x  x x x x   1 1 i i  i i i i";
8310       ;
8312     memory "calibration"
8313         size            = 1;
8314         read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
8315                           "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
8316       ;
8318     memory "signature"
8319         size            = 3;
8320         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
8321                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
8322       ;
8323   ;
8326 #------------------------------------------------------------
8327 # ATmega88
8328 #------------------------------------------------------------
8330 part
8331     id               = "m88";
8332     desc             = "ATMEGA88";
8333      has_debugwire = yes;
8334      flash_instr   = 0xB6, 0x01, 0x11;
8335      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
8336                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
8337                      0x99, 0xF9, 0xBB, 0xAF;
8338     stk500_devcode   = 0x73;
8339 #    avr910_devcode   = 0x;
8340     signature        = 0x1e 0x93 0x0a;
8341     pagel            = 0xd7;
8342     bs2              = 0xc2;
8343     chip_erase_delay = 9000;
8344     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
8345                        "x x x x  x x x x    x x x x  x x x x";
8347     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
8348                        "x x x x  x x x x    x x x x  x x x x";
8350     timeout             = 200;
8351     stabdelay           = 100;
8352     cmdexedelay         = 25;
8353     synchloops          = 32;
8354     bytedelay           = 0;
8355     pollindex           = 3;
8356     pollvalue           = 0x53;
8357     predelay            = 1;
8358     postdelay           = 1;
8359     pollmethod          = 1;
8361     pp_controlstack     =
8362         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
8363         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
8364         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
8365         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
8366     hventerstabdelay    = 100;
8367     progmodedelay       = 0;
8368     latchcycles         = 5;
8369     togglevtg           = 1;
8370     poweroffdelay       = 15;
8371     resetdelayms        = 1;
8372     resetdelayus        = 0;
8373     hvleavestabdelay    = 15;
8374     resetdelay          = 15;
8375     chiperasepulsewidth = 0;
8376     chiperasepolltimeout = 10;
8377     programfusepulsewidth = 0;
8378     programfusepolltimeout = 5;
8379     programlockpulsewidth = 0;
8380     programlockpolltimeout = 5;
8382     memory "eeprom"
8383         paged           = no;
8384         page_size       = 4;
8385         size            = 512;
8386         min_write_delay = 3600;
8387         max_write_delay = 3600;
8388         readback_p1     = 0xff;
8389         readback_p2     = 0xff;
8390         read            = "  1   0   1   0      0   0   0   0",
8391                           "  0   0   0   x      x   x   x  a8",
8392                           " a7  a6  a5  a4     a3  a2  a1  a0",
8393                           "  o   o   o   o      o   o   o   o";
8395         write           = "  1   1   0   0      0   0   0   0",
8396                           "  0   0   0   x      x   x   x  a8",
8397                           " a7  a6  a5  a4     a3  a2  a1  a0", 
8398                           "  i   i   i   i      i   i   i   i";
8400         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8401                           "  0   0   0   0      0   0   0   0",
8402                           "  0   0   0   0      0   0  a1  a0",
8403                           "  i   i   i   i      i   i   i   i";
8405         writepage       = "  1   1   0   0      0   0   1   0",
8406                           "  0   0   x   x      x   x   x  a8",
8407                           " a7  a6  a5  a4     a3  a2   0   0",
8408                           "  x   x   x   x      x   x   x   x";
8410         mode            = 0x41;
8411         delay           = 20;
8412         blocksize       = 4;
8413         readsize        = 256;
8414       ;
8415     memory "flash"
8416         paged           = yes;
8417         size            = 8192;
8418         page_size       = 64;
8419         num_pages       = 128;
8420         min_write_delay = 4500;
8421         max_write_delay = 4500;
8422         readback_p1     = 0xff;
8423         readback_p2     = 0xff;
8424         read_lo         = "  0   0   1   0    0   0   0   0",
8425                           "  0   0   0   0  a11 a10  a9  a8",
8426                           " a7  a6  a5  a4   a3  a2  a1  a0",
8427                           "  o   o   o   o    o   o   o   o";
8429         read_hi         = "  0   0   1   0    1   0   0   0",
8430                           "  0   0   0   0  a11 a10  a9  a8",
8431                           " a7  a6  a5  a4   a3  a2  a1  a0",
8432                           "  o   o   o   o    o   o   o   o";
8434         loadpage_lo     = "  0   1   0   0      0   0   0   0",
8435                           "  0   0   0   x      x   x   x   x",
8436                           "  x   x   x  a4     a3  a2  a1  a0",
8437                           "  i   i   i   i      i   i   i   i";
8439         loadpage_hi     = "  0   1   0   0      1   0   0   0",
8440                           "  0   0   0   x      x   x   x   x",
8441                           "  x   x   x  a4     a3  a2  a1  a0",
8442                           "  i   i   i   i      i   i   i   i";
8444         writepage       = "  0   1   0   0      1   1   0   0",
8445                           "  0   0   0   0    a11 a10  a9  a8",
8446                           " a7  a6  a5   x      x   x   x   x",
8447                           "  x   x   x   x      x   x   x   x";
8449         mode            = 0x41;
8450         delay           = 6;
8451         blocksize       = 64;
8452         readsize        = 256;
8453       ;
8455     memory "lfuse"
8456         size            = 1;
8457         min_write_delay = 4500;
8458         max_write_delay = 4500;
8459         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
8460                           "x x x x  x x x x   o o o o  o o o o";
8462         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
8463                           "x x x x  x x x x   i i i i  i i i i";
8464       ;
8466     memory "hfuse"
8467         size            = 1;
8468         min_write_delay = 4500;
8469         max_write_delay = 4500;
8470         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
8471                           "x x x x  x x x x   o o o o  o o o o";
8473         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
8474                           "x x x x  x x x x   i i i i  i i i i";
8475       ;
8477     memory "efuse"
8478         size            = 1;
8479         min_write_delay = 4500;
8480         max_write_delay = 4500;
8481         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
8482                           "x x x x  x x x x   x x x x  x o o o";
8484         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
8485                           "x x x x  x x x x   x x x x  x i i i";
8486       ;
8488     memory "lock"
8489         size            = 1;
8490         min_write_delay = 4500;
8491         max_write_delay = 4500;
8492         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
8493                           "x x x x  x x x x   x x o o  o o o o";
8495         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
8496                           "x x x x  x x x x   1 1 i i  i i i i";
8497       ;
8499     memory "calibration"
8500         size            = 1;
8501         read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
8502                           "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
8503       ;
8505     memory "signature"
8506         size            = 3;
8507         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
8508                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
8509       ;
8510   ;
8512 #------------------------------------------------------------
8513 # ATmega88P
8514 #------------------------------------------------------------
8516 part
8517     id               = "m88p";
8518     desc             = "ATMEGA88P";
8519      has_debugwire = yes;
8520      flash_instr   = 0xB6, 0x01, 0x11;
8521      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
8522                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
8523                      0x99, 0xF9, 0xBB, 0xAF;
8524     stk500_devcode   = 0x73;
8525 #    avr910_devcode   = 0x;
8526     signature        = 0x1e 0x93 0x0f;
8527     pagel            = 0xd7;
8528     bs2              = 0xc2;
8529     chip_erase_delay = 9000;
8530     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
8531                        "x x x x  x x x x    x x x x  x x x x";
8533     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
8534                        "x x x x  x x x x    x x x x  x x x x";
8536     timeout             = 200;
8537     stabdelay           = 100;
8538     cmdexedelay         = 25;
8539     synchloops          = 32;
8540     bytedelay           = 0;
8541     pollindex           = 3;
8542     pollvalue           = 0x53;
8543     predelay            = 1;
8544     postdelay           = 1;
8545     pollmethod          = 1;
8547     pp_controlstack     =
8548         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
8549         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
8550         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
8551         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
8552     hventerstabdelay    = 100;
8553     progmodedelay       = 0;
8554     latchcycles         = 5;
8555     togglevtg           = 1;
8556     poweroffdelay       = 15;
8557     resetdelayms        = 1;
8558     resetdelayus        = 0;
8559     hvleavestabdelay    = 15;
8560     resetdelay          = 15;
8561     chiperasepulsewidth = 0;
8562     chiperasepolltimeout = 10;
8563     programfusepulsewidth = 0;
8564     programfusepolltimeout = 5;
8565     programlockpulsewidth = 0;
8566     programlockpolltimeout = 5;
8568     memory "eeprom"
8569         paged           = no;
8570         page_size       = 4;
8571         size            = 512;
8572         min_write_delay = 3600;
8573         max_write_delay = 3600;
8574         readback_p1     = 0xff;
8575         readback_p2     = 0xff;
8576         read            = "  1   0   1   0      0   0   0   0",
8577                           "  0   0   0   x      x   x   x  a8",
8578                           " a7  a6  a5  a4     a3  a2  a1  a0",
8579                           "  o   o   o   o      o   o   o   o";
8581         write           = "  1   1   0   0      0   0   0   0",
8582                           "  0   0   0   x      x   x   x  a8",
8583                           " a7  a6  a5  a4     a3  a2  a1  a0", 
8584                           "  i   i   i   i      i   i   i   i";
8586         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8587                           "  0   0   0   0      0   0   0   0",
8588                           "  0   0   0   0      0   0  a1  a0",
8589                           "  i   i   i   i      i   i   i   i";
8591         writepage       = "  1   1   0   0      0   0   1   0",
8592                           "  0   0   x   x      x   x   x  a8",
8593                           " a7  a6  a5  a4     a3  a2   0   0",
8594                           "  x   x   x   x      x   x   x   x";
8596         mode            = 0x41;
8597         delay           = 20;
8598         blocksize       = 4;
8599         readsize        = 256;
8600       ;
8601     memory "flash"
8602         paged           = yes;
8603         size            = 8192;
8604         page_size       = 64;
8605         num_pages       = 128;
8606         min_write_delay = 4500;
8607         max_write_delay = 4500;
8608         readback_p1     = 0xff;
8609         readback_p2     = 0xff;
8610         read_lo         = "  0   0   1   0    0   0   0   0",
8611                           "  0   0   0   0  a11 a10  a9  a8",
8612                           " a7  a6  a5  a4   a3  a2  a1  a0",
8613                           "  o   o   o   o    o   o   o   o";
8615         read_hi         = "  0   0   1   0    1   0   0   0",
8616                           "  0   0   0   0  a11 a10  a9  a8",
8617                           " a7  a6  a5  a4   a3  a2  a1  a0",
8618                           "  o   o   o   o    o   o   o   o";
8620         loadpage_lo     = "  0   1   0   0      0   0   0   0",
8621                           "  0   0   0   x      x   x   x   x",
8622                           "  x   x   x  a4     a3  a2  a1  a0",
8623                           "  i   i   i   i      i   i   i   i";
8625         loadpage_hi     = "  0   1   0   0      1   0   0   0",
8626                           "  0   0   0   x      x   x   x   x",
8627                           "  x   x   x  a4     a3  a2  a1  a0",
8628                           "  i   i   i   i      i   i   i   i";
8630         writepage       = "  0   1   0   0      1   1   0   0",
8631                           "  0   0   0   0    a11 a10  a9  a8",
8632                           " a7  a6  a5   x      x   x   x   x",
8633                           "  x   x   x   x      x   x   x   x";
8635         mode            = 0x41;
8636         delay           = 6;
8637         blocksize       = 64;
8638         readsize        = 256;
8639       ;
8641     memory "lfuse"
8642         size            = 1;
8643         min_write_delay = 4500;
8644         max_write_delay = 4500;
8645         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
8646                           "x x x x  x x x x   o o o o  o o o o";
8648         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
8649                           "x x x x  x x x x   i i i i  i i i i";
8650       ;
8652     memory "hfuse"
8653         size            = 1;
8654         min_write_delay = 4500;
8655         max_write_delay = 4500;
8656         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
8657                           "x x x x  x x x x   o o o o  o o o o";
8659         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
8660                           "x x x x  x x x x   i i i i  i i i i";
8661       ;
8663     memory "efuse"
8664         size            = 1;
8665         min_write_delay = 4500;
8666         max_write_delay = 4500;
8667         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
8668                           "x x x x  x x x x   x x x x  x o o o";
8670         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
8671                           "x x x x  x x x x   x x x x  x i i i";
8672       ;
8674     memory "lock"
8675         size            = 1;
8676         min_write_delay = 4500;
8677         max_write_delay = 4500;
8678         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
8679                           "x x x x  x x x x   x x o o  o o o o";
8681         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
8682                           "x x x x  x x x x   1 1 i i  i i i i";
8683       ;
8685     memory "calibration"
8686         size            = 1;
8687         read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
8688                           "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
8689       ;
8691     memory "signature"
8692         size            = 3;
8693         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
8694                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
8695       ;
8696   ;
8699 #------------------------------------------------------------
8700 # ATmega168
8701 #------------------------------------------------------------
8703 part
8704     id              = "m168";
8705     desc            = "ATMEGA168";
8706      has_debugwire = yes;
8707      flash_instr   = 0xB6, 0x01, 0x11;
8708      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
8709                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
8710                      0x99, 0xF9, 0xBB, 0xAF;
8711     stk500_devcode  = 0x86;
8712     # avr910_devcode = 0x;
8713     signature       = 0x1e 0x94 0x06;
8714     pagel           = 0xd7;
8715     bs2             = 0xc2;
8716     chip_erase_delay = 9000;
8717     pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
8718                        "x x x x x x x x x x x x x x x x";
8720     chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
8721                        "x x x x x x x x x x x x x x x x";
8723     timeout         = 200;
8724     stabdelay       = 100;
8725     cmdexedelay     = 25;
8726     synchloops      = 32;
8727     bytedelay       = 0;
8728     pollindex       = 3;
8729     pollvalue       = 0x53;
8730     predelay        = 1;
8731     postdelay       = 1;
8732     pollmethod      = 1;
8734     pp_controlstack     =
8735         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
8736         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
8737         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
8738         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
8739     hventerstabdelay    = 100;
8740     progmodedelay       = 0;
8741     latchcycles         = 5;
8742     togglevtg           = 1;
8743     poweroffdelay       = 15;
8744     resetdelayms        = 1;
8745     resetdelayus        = 0;
8746     hvleavestabdelay    = 15;
8747     resetdelay          = 15;
8748     chiperasepulsewidth = 0;
8749     chiperasepolltimeout = 10;
8750     programfusepulsewidth = 0;
8751     programfusepolltimeout = 5;
8752     programlockpulsewidth = 0;
8753     programlockpolltimeout = 5;
8755     memory "eeprom"
8756         paged           = no;
8757         page_size       = 4;
8758         size            = 512;
8759         min_write_delay = 3600;
8760         max_write_delay = 3600;
8761         readback_p1     = 0xff;
8762         readback_p2     = 0xff;
8763         read            = " 1 0 1 0 0 0 0 0",
8764                           " 0 0 0 x x x x a8",
8765                           " a7 a6 a5 a4 a3 a2 a1 a0",
8766                           " o o o o o o o o";
8767     
8768         write           = " 1 1 0 0 0 0 0 0",
8769                           " 0 0 0 x x x x a8",
8770                           " a7 a6 a5 a4 a3 a2 a1 a0",
8771                           " i i i i i i i i";
8773         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8774                           "  0   0   0   0      0   0   0   0",
8775                           "  0   0   0   0      0   0  a1  a0",
8776                           "  i   i   i   i      i   i   i   i";
8778         writepage       = "  1   1   0   0      0   0   1   0",
8779                           "  0   0   x   x      x   x   x  a8",
8780                           " a7  a6  a5  a4     a3  a2   0   0",
8781                           "  x   x   x   x      x   x   x   x";
8783         mode            = 0x41;
8784         delay           = 20;
8785         blocksize       = 4;
8786         readsize        = 256;
8787         ;
8789     memory "flash"
8790         paged           = yes;
8791         size            = 16384;
8792         page_size       = 128;
8793         num_pages       = 128;
8794         min_write_delay = 4500;
8795         max_write_delay = 4500;
8796         readback_p1     = 0xff;
8797         readback_p2     = 0xff;
8798         read_lo         = " 0 0 1 0 0 0 0 0",
8799                           " 0 0 0 a12 a11 a10 a9 a8",
8800                           " a7 a6 a5 a4 a3 a2 a1 a0",
8801                           " o o o o o o o o";
8802         
8803         read_hi          = " 0 0 1 0 1 0 0 0",
8804                            " 0 0 0 a12 a11 a10 a9 a8",
8805                            " a7 a6 a5 a4 a3 a2 a1 a0",
8806                            " o o o o o o o o";
8807         
8808         loadpage_lo     = " 0 1 0 0 0 0 0 0",
8809                           " 0 0 0 x x x x x",
8810                           " x x a5 a4 a3 a2 a1 a0",
8811                           " i i i i i i i i";
8812         
8813         loadpage_hi     = " 0 1 0 0 1 0 0 0",
8814                           " 0 0 0 x x x x x",
8815                           " x x a5 a4 a3 a2 a1 a0",
8816                           " i i i i i i i i";
8817         
8818         writepage       = " 0 1 0 0 1 1 0 0",
8819                           " 0 0 0 a12 a11 a10 a9 a8",
8820                           " a7 a6 x x x x x x",
8821                           " x x x x x x x x";
8823         mode        = 0x41;
8824         delay       = 6;
8825         blocksize   = 128;
8826         readsize    = 256;
8828         ;
8829         
8830     memory "lfuse"
8831         size            = 1;
8832         min_write_delay = 4500;
8833         max_write_delay = 4500;
8834         read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
8835                           "x x x x x x x x o o o o o o o o";
8836         
8837         write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
8838                           "x x x x x x x x i i i i i i i i";
8839         ;
8840     
8841     memory "hfuse"
8842         size            = 1;
8843         min_write_delay = 4500;
8844         max_write_delay = 4500;
8845         read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
8846                           "x x x x x x x x o o o o o o o o";
8847         
8848         write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
8849                           "x x x x x x x x i i i i i i i i";
8850         ;
8851     
8852     memory "efuse"
8853         size            = 1;
8854         min_write_delay = 4500;
8855         max_write_delay = 4500;
8856         read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
8857                           "x x x x x x x x x x x x x o o o";
8858         
8859         write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
8860                           "x x x x x x x x x x x x x i i i";
8861         ;
8862     
8863     memory "lock"
8864         size            = 1;
8865         min_write_delay = 4500;
8866         max_write_delay = 4500;
8867         read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
8868                           "x x x x x x x x x x o o o o o o";
8869         
8870         write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
8871                           "x x x x x x x x 1 1 i i i i i i";
8872         ;
8873     
8874     memory "calibration"
8875         size            = 1;
8876         read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
8877                           "0 0 0 0 0 0 0 0 o o o o o o o o";
8878         ;
8879     
8880     memory "signature"
8881         size            = 3;
8882         read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
8883                           "x x x x x x a1 a0 o o o o o o o o";
8884         ;
8887 #------------------------------------------------------------
8888 # ATmega168P
8889 #------------------------------------------------------------
8891 part
8892     id              = "m168p";
8893     desc            = "ATMEGA168P";
8894      has_debugwire = yes;
8895      flash_instr   = 0xB6, 0x01, 0x11;
8896      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
8897                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
8898                      0x99, 0xF9, 0xBB, 0xAF;
8899     stk500_devcode  = 0x86;
8900     # avr910_devcode = 0x;
8901     signature       = 0x1e 0x94 0x0b;
8902     pagel           = 0xd7;
8903     bs2             = 0xc2;
8904     chip_erase_delay = 9000;
8905     pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
8906                        "x x x x x x x x x x x x x x x x";
8908     chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
8909                        "x x x x x x x x x x x x x x x x";
8911     timeout         = 200;
8912     stabdelay       = 100;
8913     cmdexedelay     = 25;
8914     synchloops      = 32;
8915     bytedelay       = 0;
8916     pollindex       = 3;
8917     pollvalue       = 0x53;
8918     predelay        = 1;
8919     postdelay       = 1;
8920     pollmethod      = 1;
8922     pp_controlstack     =
8923         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
8924         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
8925         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
8926         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
8927     hventerstabdelay    = 100;
8928     progmodedelay       = 0;
8929     latchcycles         = 5;
8930     togglevtg           = 1;
8931     poweroffdelay       = 15;
8932     resetdelayms        = 1;
8933     resetdelayus        = 0;
8934     hvleavestabdelay    = 15;
8935     resetdelay          = 15;
8936     chiperasepulsewidth = 0;
8937     chiperasepolltimeout = 10;
8938     programfusepulsewidth = 0;
8939     programfusepolltimeout = 5;
8940     programlockpulsewidth = 0;
8941     programlockpolltimeout = 5;
8943     memory "eeprom"
8944         paged           = no;
8945         page_size       = 4;
8946         size            = 512;
8947         min_write_delay = 3600;
8948         max_write_delay = 3600;
8949         readback_p1     = 0xff;
8950         readback_p2     = 0xff;
8951         read            = " 1 0 1 0 0 0 0 0",
8952                           " 0 0 0 x x x x a8",
8953                           " a7 a6 a5 a4 a3 a2 a1 a0",
8954                           " o o o o o o o o";
8955     
8956         write           = " 1 1 0 0 0 0 0 0",
8957                           " 0 0 0 x x x x a8",
8958                           " a7 a6 a5 a4 a3 a2 a1 a0",
8959                           " i i i i i i i i";
8961         loadpage_lo     = "  1   1   0   0      0   0   0   1",
8962                           "  0   0   0   0      0   0   0   0",
8963                           "  0   0   0   0      0   0  a1  a0",
8964                           "  i   i   i   i      i   i   i   i";
8966         writepage       = "  1   1   0   0      0   0   1   0",
8967                           "  0   0   x   x      x   x   x  a8",
8968                           " a7  a6  a5  a4     a3  a2   0   0",
8969                           "  x   x   x   x      x   x   x   x";
8971         mode            = 0x41;
8972         delay           = 20;
8973         blocksize       = 4;
8974         readsize        = 256;
8975         ;
8977     memory "flash"
8978         paged           = yes;
8979         size            = 16384;
8980         page_size       = 128;
8981         num_pages       = 128;
8982         min_write_delay = 4500;
8983         max_write_delay = 4500;
8984         readback_p1     = 0xff;
8985         readback_p2     = 0xff;
8986         read_lo         = " 0 0 1 0 0 0 0 0",
8987                           " 0 0 0 a12 a11 a10 a9 a8",
8988                           " a7 a6 a5 a4 a3 a2 a1 a0",
8989                           " o o o o o o o o";
8990         
8991         read_hi          = " 0 0 1 0 1 0 0 0",
8992                            " 0 0 0 a12 a11 a10 a9 a8",
8993                            " a7 a6 a5 a4 a3 a2 a1 a0",
8994                            " o o o o o o o o";
8995         
8996         loadpage_lo     = " 0 1 0 0 0 0 0 0",
8997                           " 0 0 0 x x x x x",
8998                           " x x a5 a4 a3 a2 a1 a0",
8999                           " i i i i i i i i";
9000         
9001         loadpage_hi     = " 0 1 0 0 1 0 0 0",
9002                           " 0 0 0 x x x x x",
9003                           " x x a5 a4 a3 a2 a1 a0",
9004                           " i i i i i i i i";
9005         
9006         writepage       = " 0 1 0 0 1 1 0 0",
9007                           " 0 0 0 a12 a11 a10 a9 a8",
9008                           " a7 a6 x x x x x x",
9009                           " x x x x x x x x";
9011         mode        = 0x41;
9012         delay       = 6;
9013         blocksize   = 128;
9014         readsize    = 256;
9016         ;
9017         
9018     memory "lfuse"
9019         size            = 1;
9020         min_write_delay = 4500;
9021         max_write_delay = 4500;
9022         read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
9023                           "x x x x x x x x o o o o o o o o";
9024         
9025         write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
9026                           "x x x x x x x x i i i i i i i i";
9027         ;
9028     
9029     memory "hfuse"
9030         size            = 1;
9031         min_write_delay = 4500;
9032         max_write_delay = 4500;
9033         read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
9034                           "x x x x x x x x o o o o o o o o";
9035         
9036         write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
9037                           "x x x x x x x x i i i i i i i i";
9038         ;
9039     
9040     memory "efuse"
9041         size            = 1;
9042         min_write_delay = 4500;
9043         max_write_delay = 4500;
9044         read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
9045                           "x x x x x x x x x x x x x o o o";
9046         
9047         write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
9048                           "x x x x x x x x x x x x x i i i";
9049         ;
9050     
9051     memory "lock"
9052         size            = 1;
9053         min_write_delay = 4500;
9054         max_write_delay = 4500;
9055         read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
9056                           "x x x x x x x x x x o o o o o o";
9057         
9058         write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
9059                           "x x x x x x x x 1 1 i i i i i i";
9060         ;
9061     
9062     memory "calibration"
9063         size            = 1;
9064         read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
9065                           "0 0 0 0 0 0 0 0 o o o o o o o o";
9066         ;
9067     
9068     memory "signature"
9069         size            = 3;
9070         read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
9071                           "x x x x x x a1 a0 o o o o o o o o";
9072         ;
9075 #------------------------------------------------------------
9076 # ATtiny88
9077 #------------------------------------------------------------
9079 part
9080     id               = "t88";
9081     desc             = "attiny88";
9082      has_debugwire = yes;
9083      flash_instr   = 0xB6, 0x01, 0x11;
9084      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
9085                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
9086                      0x99, 0xF9, 0xBB, 0xAF;
9087     stk500_devcode   = 0x73;
9088 #    avr910_devcode   = 0x;
9089     signature        = 0x1e 0x93 0x11;
9090     pagel            = 0xd7;
9091     bs2              = 0xc2;
9092     chip_erase_delay = 9000;
9093     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
9094                        "x x x x  x x x x    x x x x  x x x x";
9096     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
9097                        "x x x x  x x x x    x x x x  x x x x";
9099     timeout             = 200;
9100     stabdelay           = 100;
9101     cmdexedelay         = 25;
9102     synchloops          = 32;
9103     bytedelay           = 0;
9104     pollindex           = 3;
9105     pollvalue           = 0x53;
9106     predelay            = 1;
9107     postdelay           = 1;
9108     pollmethod          = 1;
9110     pp_controlstack     =
9111         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
9112         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
9113         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
9114         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
9115     hventerstabdelay    = 100;
9116     progmodedelay       = 0;
9117     latchcycles         = 5;
9118     togglevtg           = 1;
9119     poweroffdelay       = 15;
9120     resetdelayms        = 1;
9121     resetdelayus        = 0;
9122     hvleavestabdelay    = 15;
9123     resetdelay          = 15;
9124     chiperasepulsewidth = 0;
9125     chiperasepolltimeout = 10;
9126     programfusepulsewidth = 0;
9127     programfusepolltimeout = 5;
9128     programlockpulsewidth = 0;
9129     programlockpolltimeout = 5;
9131     memory "eeprom"
9132         paged           = no;
9133         page_size       = 4;
9134         size            = 64;
9135         min_write_delay = 3600;
9136         max_write_delay = 3600;
9137         readback_p1     = 0xff;
9138         readback_p2     = 0xff;
9139         read            = "  1   0   1   0      0   0   0   0",
9140                           "  0   0   0   x      x   x   x   x",
9141                           "  x  a6  a5  a4     a3  a2  a1  a0",
9142                           "  o   o   o   o      o   o   o   o";
9144         write           = "  1   1   0   0      0   0   0   0",
9145                           "  0   0   0   x      x   x   x   x",
9146                           "  x  a6  a5  a4     a3  a2  a1  a0",
9147                           "  i   i   i   i      i   i   i   i";
9149         loadpage_lo     = "  1   1   0   0      0   0   0   1",
9150                           "  0   0   0   0      0   0   0   0",
9151                           "  0   0   0   0      0   0  a1  a0",
9152                           "  i   i   i   i      i   i   i   i";
9154         writepage       = "  1   1   0   0      0   0   1   0",
9155                           "  0   0   x   x      x   x   x   x",
9156                           "  x  a6  a5  a4     a3  a2   0   0",
9157                           "  x   x   x   x      x   x   x   x";
9159         mode            = 0x41;
9160         delay           = 20;
9161         blocksize       = 4;
9162         readsize        = 64;
9163       ;
9164     memory "flash"
9165         paged           = yes;
9166         size            = 8192;
9167         page_size       = 64;
9168         num_pages       = 128;
9169         min_write_delay = 4500;
9170         max_write_delay = 4500;
9171         readback_p1     = 0xff;
9172         readback_p2     = 0xff;
9173         read_lo         = "  0   0   1   0    0   0   0   0",
9174                           "  0   0   0   0  a11 a10  a9  a8",
9175                           " a7  a6  a5  a4   a3  a2  a1  a0",
9176                           "  o   o   o   o    o   o   o   o";
9178         read_hi         = "  0   0   1   0    1   0   0   0",
9179                           "  0   0   0   0  a11 a10  a9  a8",
9180                           " a7  a6  a5  a4   a3  a2  a1  a0",
9181                           "  o   o   o   o    o   o   o   o";
9183         loadpage_lo     = "  0   1   0   0      0   0   0   0",
9184                           "  0   0   0   x      x   x   x   x",
9185                           "  x   x   x  a4     a3  a2  a1  a0",
9186                           "  i   i   i   i      i   i   i   i";
9188         loadpage_hi     = "  0   1   0   0      1   0   0   0",
9189                           "  0   0   0   x      x   x   x   x",
9190                           "  x   x   x  a4     a3  a2  a1  a0",
9191                           "  i   i   i   i      i   i   i   i";
9193         writepage       = "  0   1   0   0      1   1   0   0",
9194                           "  0   0   0   0    a11 a10  a9  a8",
9195                           " a7  a6  a5   x      x   x   x   x",
9196                           "  x   x   x   x      x   x   x   x";
9198         mode            = 0x41;
9199         delay           = 6;
9200         blocksize       = 64;
9201         readsize        = 256;
9202       ;
9204     memory "lfuse"
9205         size            = 1;
9206         min_write_delay = 4500;
9207         max_write_delay = 4500;
9208         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
9209                           "x x x x  x x x x   o o o o  o o o o";
9211         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
9212                           "x x x x  x x x x   i i i i  i i i i";
9213       ;
9215     memory "hfuse"
9216         size            = 1;
9217         min_write_delay = 4500;
9218         max_write_delay = 4500;
9219         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
9220                           "x x x x  x x x x   o o o o  o o o o";
9222         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
9223                           "x x x x  x x x x   i i i i  i i i i";
9224       ;
9226     memory "efuse"
9227         size            = 1;
9228         min_write_delay = 4500;
9229         max_write_delay = 4500;
9230         read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
9231                           "x x x x  x x x x   x x x x  x o o o";
9233         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
9234                           "x x x x  x x x x   x x x x  x x x i";
9235       ;
9237     memory "lock"
9238         size            = 1;
9239         min_write_delay = 4500;
9240         max_write_delay = 4500;
9241         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
9242                           "x x x x  x x x x   x x o o  o o o o";
9244         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
9245                           "x x x x  x x x x   1 1 i i  i i i i";
9246       ;
9248     memory "calibration"
9249         size            = 1;
9250         read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
9251                           "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
9252       ;
9254     memory "signature"
9255         size            = 3;
9256         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
9257                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
9258       ;
9259   ;
9261 #------------------------------------------------------------
9262 # ATmega328P
9263 #------------------------------------------------------------
9265 part
9266     id                  = "m328p";
9267     desc                = "ATMEGA328P";
9268     has_debugwire       = yes;
9269     flash_instr         = 0xB6, 0x01, 0x11;
9270     eeprom_instr        = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
9271                           0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
9272                           0x99, 0xF9, 0xBB, 0xAF;
9273     stk500_devcode      = 0x86;
9274     # avr910_devcode    = 0x;
9275     signature           = 0x1e 0x95 0x0F;
9276     pagel               = 0xd7;
9277     bs2                 = 0xc2;
9278     chip_erase_delay    = 9000;
9279     pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
9280                  "x x x x x x x x x x x x x x x x";
9282     chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
9283                  "x x x x x x x x x x x x x x x x";
9285     timeout     = 200;
9286     stabdelay   = 100;
9287     cmdexedelay = 25;
9288     synchloops  = 32;
9289     bytedelay   = 0;
9290     pollindex   = 3;
9291     pollvalue   = 0x53;
9292     predelay    = 1;
9293     postdelay   = 1;
9294     pollmethod  = 1;
9296     pp_controlstack =
9297         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
9298         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
9299         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
9300         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
9301     hventerstabdelay    = 100;
9302     progmodedelay       = 0;
9303     latchcycles         = 5;
9304     togglevtg           = 1;
9305     poweroffdelay       = 15;
9306     resetdelayms        = 1;
9307     resetdelayus        = 0;
9308     hvleavestabdelay    = 15;
9309     resetdelay          = 15;
9310     chiperasepulsewidth = 0;
9311     chiperasepolltimeout = 10;
9312     programfusepulsewidth = 0;
9313     programfusepolltimeout = 5;
9314     programlockpulsewidth = 0;
9315     programlockpolltimeout = 5;
9317     memory "eeprom"
9318         paged           = no;
9319         page_size       = 4;
9320         size            = 1024;
9321         min_write_delay = 3600;
9322         max_write_delay = 3600;
9323         readback_p1     = 0xff;
9324         readback_p2     = 0xff;
9325         read = " 1 0 1 0 0 0 0 0",
9326                " 0 0 0 x x x a9 a8",
9327                " a7 a6 a5 a4 a3 a2 a1 a0",
9328                " o o o o o o o o";
9330         write = " 1 1 0 0 0 0 0 0",
9331                 " 0 0 0 x x x a9 a8",
9332                 " a7 a6 a5 a4 a3 a2 a1 a0",
9333                 " i i i i i i i i";
9335         loadpage_lo = " 1 1 0 0 0 0 0 1",
9336                       " 0 0 0 0 0 0 0 0",
9337                       " 0 0 0 0 0 0 a1 a0",
9338                       " i i i i i i i i";
9340         writepage = " 1 1 0 0 0 0 1 0",
9341                     " 0 0 x x x x a9 a8",
9342                     " a7 a6 a5 a4 a3 a2 0 0",
9343                     " x x x x x x x x";
9345         mode            = 0x41;
9346         delay           = 20;
9347         blocksize       = 4;
9348         readsize        = 256;
9349     ;
9351     memory "flash"
9352         paged           = yes;
9353         size            = 32768;
9354         page_size       = 128;
9355         num_pages       = 256;
9356         min_write_delay = 4500;
9357         max_write_delay = 4500;
9358         readback_p1     = 0xff;
9359         readback_p2     = 0xff;
9360         read_lo = " 0 0 1 0 0 0 0 0",
9361                   " 0 0 a13 a12 a11 a10 a9 a8",
9362                   " a7 a6 a5 a4 a3 a2 a1 a0",
9363                   " o o o o o o o o";
9365         read_hi = " 0 0 1 0 1 0 0 0",
9366                   " 0 0 a13 a12 a11 a10 a9 a8",
9367                   " a7 a6 a5 a4 a3 a2 a1 a0",
9368                   " o o o o o o o o";
9370         loadpage_lo = " 0 1 0 0 0 0 0 0",
9371                       " 0 0 0 x x x x x",
9372                       " x x a5 a4 a3 a2 a1 a0",
9373                       " i i i i i i i i";
9375         loadpage_hi = " 0 1 0 0 1 0 0 0",
9376                       " 0 0 0 x x x x x",
9377                       " x x a5 a4 a3 a2 a1 a0",
9378                       " i i i i i i i i";
9380         writepage = " 0 1 0 0 1 1 0 0",
9381                     " 0 0 a13 a12 a11 a10 a9 a8",
9382                     " a7 a6 x x x x x x",
9383                     " x x x x x x x x";
9385         mode            = 0x41;
9386         delay           = 6;
9387         blocksize       = 128;
9388         readsize        = 256;
9390     ;
9392     memory "lfuse"
9393         size = 1;
9394         min_write_delay = 4500;
9395         max_write_delay = 4500;
9396         read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
9397                "x x x x x x x x o o o o o o o o";
9399         write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
9400                 "x x x x x x x x i i i i i i i i";
9401     ;
9403     memory "hfuse"
9404         size = 1;
9405         min_write_delay = 4500;
9406         max_write_delay = 4500;
9407         read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
9408                "x x x x x x x x o o o o o o o o";
9410         write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
9411                 "x x x x x x x x i i i i i i i i";
9412     ;
9414     memory "efuse"
9415         size = 1;
9416         min_write_delay = 4500;
9417         max_write_delay = 4500;
9418         read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
9419                "x x x x x x x x x x x x x o o o";
9421         write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
9422                 "x x x x x x x x x x x x x i i i";
9423     ;
9425     memory "lock"
9426         size = 1;
9427         min_write_delay = 4500;
9428         max_write_delay = 4500;
9429         read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
9430                "x x x x x x x x x x o o o o o o";
9432         write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
9433                 "x x x x x x x x 1 1 i i i i i i";
9434     ;
9436     memory "calibration"
9437         size = 1;
9438         read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
9439                "0 0 0 0 0 0 0 0 o o o o o o o o";
9440     ;
9442     memory "signature"
9443         size = 3;
9444         read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
9445                "x x x x x x a1 a0 o o o o o o o o";
9446     ;
9449 #------------------------------------------------------------
9450 # ATtiny2313
9451 #------------------------------------------------------------
9453 part
9454      id            = "t2313";
9455      desc          = "ATtiny2313";
9456      has_debugwire = yes;
9457      flash_instr   = 0xB2, 0x0F, 0x1F;
9458      eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
9459                      0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
9460                      0x99, 0xE1, 0xBB, 0xAC;
9461      stk500_devcode   = 0x23;
9462 ##   Use the ATtiny26 devcode:
9463      avr910_devcode   = 0x5e;
9464      signature        = 0x1e 0x91 0x0a;
9465      pagel            = 0xD4;
9466      bs2              = 0xD6;
9467      reset            = io;
9468      chip_erase_delay = 9000;
9470      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
9471                         "x x x x  x x x x    x x x x  x x x x";
9473      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
9474                         "x x x x  x x x x    x x x x  x x x x";
9476     timeout             = 200;
9477     stabdelay           = 100;
9478     cmdexedelay         = 25;
9479     synchloops          = 32;
9480     bytedelay           = 0;
9481     pollindex           = 3;
9482     pollvalue           = 0x53;
9483     predelay            = 1;
9484     postdelay           = 1;
9485     pollmethod          = 1;
9487     pp_controlstack     =
9488         0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
9489         0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
9490         0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
9491         0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
9492     hventerstabdelay    = 100;
9493     progmodedelay       = 0;
9494     latchcycles         = 5;
9495     togglevtg           = 1;
9496     poweroffdelay       = 15;
9497     resetdelayms        = 1;
9498     resetdelayus        = 0;
9499     hvleavestabdelay    = 15;
9500     chiperasepulsewidth = 0;
9501     chiperasepolltimeout = 10;
9502     programfusepulsewidth = 0;
9503     programfusepolltimeout = 5;
9504     programlockpulsewidth = 0;
9505     programlockpolltimeout = 5;
9507      memory "eeprom"
9508          size            = 128;
9509         paged           = no;
9510         page_size       = 4;
9511          min_write_delay = 4000;
9512          max_write_delay = 4500;
9513          readback_p1     = 0xff;
9514          readback_p2     = 0xff;
9515          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
9516                            "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
9518          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
9519                            "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
9521         loadpage_lo     = "  1   1   0   0      0   0   0   1",
9522                           "  0   0   0   0      0   0   0   0",
9523                           "  0   0   0   0      0   0  a1  a0",
9524                           "  i   i   i   i      i   i   i   i";
9526         writepage       = "  1   1   0   0      0   0   1   0",
9527                           "  0   0   x   x      x   x   x   x",
9528                           "  x  a6  a5  a4     a3  a2   0   0",
9529                           "  x   x   x   x      x   x   x   x";
9531         mode            = 0x41;
9532         delay           = 6;
9533         blocksize       = 4;
9534         readsize        = 256;
9535        ;
9536      memory "flash"
9537          paged           = yes;
9538          size            = 2048;
9539          page_size       = 32;
9540          num_pages       = 64;
9541          min_write_delay = 4500;
9542          max_write_delay = 4500;
9543          readback_p1     = 0xff;
9544          readback_p2     = 0xff;
9545          read_lo         = "  0   0   1   0    0   0   0   0",
9546                            "  0   0   0   0    0   0  a9  a8",
9547                            " a7  a6  a5  a4   a3  a2  a1  a0",
9548                            "  o   o   o   o    o   o   o   o";
9550          read_hi         = "  0   0   1   0    1   0   0   0",
9551                            "  0   0   0   0    0   0  a9  a8",
9552                            " a7  a6  a5  a4   a3  a2  a1  a0",
9553                            "  o   o   o   o    o   o   o   o";
9555 # The information in the data sheet of April/2004 is wrong, this works:
9556          loadpage_lo     = "  0   1   0   0    0   0   0   0",
9557                            "  0   0   0   x    x   x   x   x",
9558                            "  x   x   x   x   a3  a2  a1  a0",
9559                            "  i   i   i   i    i   i   i   i";
9561 # The information in the data sheet of April/2004 is wrong, this works:
9562          loadpage_hi     = "  0   1   0   0    1   0   0   0",
9563                            "  0   0   0   x    x   x   x   x",
9564                            "  x   x   x   x   a3  a2  a1  a0",
9565                            "  i   i   i   i    i   i   i   i";
9567 # The information in the data sheet of April/2004 is wrong, this works:
9568          writepage       = "  0  1  0  0   1  1  0  0",
9569                            "  0  0  0  0   0  0 a9 a8",
9570                            " a7 a6 a5 a4   x  x  x  x",
9571                            "  x  x  x  x   x  x  x  x";
9573         mode            = 0x41;
9574         delay           = 6;
9575         blocksize       = 32;
9576         readsize        = 256;
9577        ;
9578 #   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
9579      memory "signature"
9580          size            = 3;
9581          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
9582                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
9583        ;
9584      memory "lock"
9585          size            = 1;
9586          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
9587                            "x x x x  x x x x  1 1 i i  i i i i";
9588          read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
9589                           "x x x x  x x x x  x x o o  o o o o";
9590         min_write_delay = 9000;
9591         max_write_delay = 9000;
9592        ;
9594      memory "lfuse"
9595          size            = 1;
9596          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
9597                            "x x x x  x x x x  i i i i  i i i i";
9599          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
9600                            "x x x x  x x x x  o o o o  o o o o";
9601         min_write_delay = 9000;
9602         max_write_delay = 9000;
9603        ;
9605      memory "hfuse"
9606          size            = 1;
9607          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
9608                            "x x x x  x x x x  i i i i  i i i i";
9610          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
9611                            "x x x x  x x x x  o o o o  o o o o";
9612         min_write_delay = 9000;
9613         max_write_delay = 9000;
9614        ;
9616      memory "efuse"
9617          size            = 1;
9618          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
9619                            "x x x x  x x x x  x x x x  x x x i";
9621          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
9622                            "x x x x  x x x x  o o o o  o o o o";
9623         min_write_delay = 9000;
9624         max_write_delay = 9000;
9625      ;
9626 # The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
9627 # The information in the data sheet of April/2004 is wrong, this works:
9629      memory "calibration"
9630          size            = 2;
9631          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
9632                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
9633      ;
9634   ;
9636 #------------------------------------------------------------
9637 # ATtiny4313
9638 #------------------------------------------------------------
9640 part
9641      id            = "t4313";
9642      desc          = "ATtiny4313";
9643      has_debugwire = yes;
9644      flash_instr   = 0xB2, 0x0F, 0x1F;
9645      eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
9646                      0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
9647                      0x99, 0xE1, 0xBB, 0xAC;
9648      stk500_devcode   = 0x23;
9649 ##   Use the ATtiny26 devcode:
9650      avr910_devcode   = 0x5e;
9651      signature        = 0x1e 0x92 0x0d;
9652      pagel            = 0xD4;
9653      bs2              = 0xD6;
9654      reset            = io;
9655      chip_erase_delay = 9000;
9657      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
9658                         "x x x x  x x x x    x x x x  x x x x";
9660      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
9661                         "x x x x  x x x x    x x x x  x x x x";
9663     timeout             = 200;
9664     stabdelay           = 100;
9665     cmdexedelay         = 25;
9666     synchloops          = 32;
9667     bytedelay           = 0;
9668     pollindex           = 3;
9669     pollvalue           = 0x53;
9670     predelay            = 1;
9671     postdelay           = 1;
9672     pollmethod          = 1;
9674     pp_controlstack     =
9675         0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
9676         0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
9677         0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
9678         0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
9679     hventerstabdelay    = 100;
9680     progmodedelay       = 0;
9681     latchcycles         = 5;
9682     togglevtg           = 1;
9683     poweroffdelay       = 15;
9684     resetdelayms        = 1;
9685     resetdelayus        = 0;
9686     hvleavestabdelay    = 15;
9687     chiperasepulsewidth = 0;
9688     chiperasepolltimeout = 10;
9689     programfusepulsewidth = 0;
9690     programfusepolltimeout = 5;
9691     programlockpulsewidth = 0;
9692     programlockpolltimeout = 5;
9694      memory "eeprom"
9695          size            = 256;
9696         paged           = no;
9697         page_size       = 4;
9698          min_write_delay = 4000;
9699          max_write_delay = 4500;
9700          readback_p1     = 0xff;
9701          readback_p2     = 0xff;
9702          read            = "1   0  1  0   0  0  0  0   0 0 0 x  x x x x",
9703                            "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
9705          write           = "1   1  0  0   0  0  0  0   0 0 0 x  x x x x",
9706                            "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
9708         loadpage_lo     = "  1   1   0   0      0   0   0   1",
9709                           "  0   0   0   0      0   0   0   0",
9710                           "  0   0   0   0      0   0  a1  a0",
9711                           "  i   i   i   i      i   i   i   i";
9713         writepage       = "  1   1   0   0      0   0   1   0",
9714                           "  0   0   x   x      x   x   x   x",
9715                           " a7  a6  a5  a4     a3  a2   0   0",
9716                           "  x   x   x   x      x   x   x   x";
9718         mode            = 0x41;
9719         delay           = 6;
9720         blocksize       = 4;
9721         readsize        = 256;
9722        ;
9723      memory "flash"
9724          paged           = yes;
9725          size            = 4096;
9726          page_size       = 64;
9727          num_pages       = 64;
9728          min_write_delay = 4500;
9729          max_write_delay = 4500;
9730          readback_p1     = 0xff;
9731          readback_p2     = 0xff;
9732          read_lo         = "  0   0   1   0    0   0   0   0",
9733                            "  0   0   0   0    0 a10  a9  a8",
9734                            " a7  a6  a5  a4   a3  a2  a1  a0",
9735                            "  o   o   o   o    o   o   o   o";
9737          read_hi         = "  0   0   1   0    1   0   0   0",
9738                            "  0   0   0   0    0 a10  a9  a8",
9739                            " a7  a6  a5  a4   a3  a2  a1  a0",
9740                            "  o   o   o   o    o   o   o   o";
9742          loadpage_lo     = "  0   1   0   0    0   0   0   0",
9743                            "  0   0   0   x    x   x   x   x",
9744                            "  x   x   x  a4   a3  a2  a1  a0",
9745                            "  i   i   i   i    i   i   i   i";
9747          loadpage_hi     = "  0   1   0   0    1   0   0   0",
9748                            "  0   0   0   x    x   x   x   x",
9749                            "  x   x   x  a4   a3  a2  a1  a0",
9750                            "  i   i   i   i    i   i   i   i";
9752          writepage       = "  0  1  0  0   1   1  0  0",
9753                            "  0  0  0  0   0 a10 a9 a8",
9754                            " a7 a6 a5  x   x   x  x  x",
9755                            "  x  x  x  x   x   x  x  x";
9757         mode            = 0x41;
9758         delay           = 6;
9759         blocksize       = 32;
9760         readsize        = 256;
9761        ;
9762 #   ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D.
9763      memory "signature"
9764          size            = 3;
9765          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
9766                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
9767        ;
9768      memory "lock"
9769          size            = 1;
9770          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
9771                            "x x x x  x x x x  1 1 i i  i i i i";
9772          read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
9773                           "x x x x  x x x x  x x o o  o o o o";
9774         min_write_delay = 9000;
9775         max_write_delay = 9000;
9776        ;
9778      memory "lfuse"
9779          size            = 1;
9780          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
9781                            "x x x x  x x x x  i i i i  i i i i";
9783          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
9784                            "x x x x  x x x x  o o o o  o o o o";
9785         min_write_delay = 9000;
9786         max_write_delay = 9000;
9787        ;
9789      memory "hfuse"
9790          size            = 1;
9791          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
9792                            "x x x x  x x x x  i i i i  i i i i";
9794          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
9795                            "x x x x  x x x x  o o o o  o o o o";
9796         min_write_delay = 9000;
9797         max_write_delay = 9000;
9798        ;
9800      memory "efuse"
9801          size            = 1;
9802          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
9803                            "x x x x  x x x x  x x x x  x x x i";
9805          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
9806                            "x x x x  x x x x  o o o o  o o o o";
9807         min_write_delay = 9000;
9808         max_write_delay = 9000;
9809      ;
9811      memory "calibration"
9812          size            = 2;
9813          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
9814                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
9815      ;
9816   ;
9818 #------------------------------------------------------------
9819 # AT90PWM2
9820 #------------------------------------------------------------
9822 part
9823      id            = "pwm2";
9824      desc          = "AT90PWM2";
9825      has_debugwire = yes;
9826      flash_instr   = 0xB6, 0x01, 0x11;
9827      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
9828                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
9829                      0x99, 0xF9, 0xBB, 0xAF;
9830      stk500_devcode   = 0x65;
9831 ##  avr910_devcode   = ?;
9832      signature        = 0x1e 0x93 0x81;
9833      pagel            = 0xD8;
9834      bs2              = 0xE2;
9835      reset            = io;
9836      chip_erase_delay = 9000;
9838      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
9839                         "x x x x  x x x x    x x x x  x x x x";
9841      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
9842                         "x x x x  x x x x    x x x x  x x x x";
9844     timeout             = 200;
9845     stabdelay           = 100;
9846     cmdexedelay         = 25;
9847     synchloops          = 32;
9848     bytedelay           = 0;
9849     pollindex           = 3;
9850     pollvalue           = 0x53;
9851     predelay            = 1;
9852     postdelay           = 1;
9853     pollmethod          = 1;
9855     pp_controlstack     =
9856         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
9857         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
9858         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
9859         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
9860     hventerstabdelay    = 100;
9861     progmodedelay       = 0;
9862     latchcycles         = 5;
9863     togglevtg           = 1;
9864     poweroffdelay       = 15;
9865     resetdelayms        = 1;
9866     resetdelayus        = 0;
9867     hvleavestabdelay    = 15;
9868     chiperasepulsewidth = 0;
9869     chiperasepolltimeout = 10;
9870     programfusepulsewidth = 0;
9871     programfusepolltimeout = 5;
9872     programlockpulsewidth = 0;
9873     programlockpolltimeout = 5;
9875      memory "eeprom"
9876          size            = 512;
9877         paged           = no;
9878         page_size       = 4;
9879          min_write_delay = 4000;
9880          max_write_delay = 4500;
9881          readback_p1     = 0xff;
9882          readback_p2     = 0xff;
9883          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
9884                            "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
9886          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
9887                            "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
9889         loadpage_lo     = "  1   1   0   0      0   0   0   1",
9890                           "  0   0   0   0      0   0   0   0",
9891                           "  0   0   0   0      0   0  a1  a0",
9892                           "  i   i   i   i      i   i   i   i";
9894         writepage       = "  1   1   0   0      0   0   1   0",
9895                           "  0   0   x   x      x   x   x   x",
9896                           " a7  a6  a5  a4     a3  a2   0   0",
9897                           "  x   x   x   x      x   x   x   x";
9899         mode            = 0x41;
9900         delay           = 6;
9901         blocksize       = 4;
9902         readsize        = 256;
9903        ;
9904      memory "flash"
9905          paged           = yes;
9906          size            = 8192;
9907          page_size       = 64;
9908          num_pages       = 128;
9909          min_write_delay = 4500;
9910          max_write_delay = 4500;
9911          readback_p1     = 0xff;
9912          readback_p2     = 0xff;
9913          read_lo         = "  0   0   1   0    0   0   0   0",
9914                            "  0   0   0   0   a11 a10 a9  a8",
9915                            " a7  a6  a5  a4   a3  a2  a1  a0",
9916                            "  o   o   o   o    o   o   o   o";
9918          read_hi         = "  0   0   1   0    1   0   0   0",
9919                            "  0   0   0   0   a11 a10 a9  a8",
9920                            " a7  a6  a5  a4   a3  a2  a1  a0",
9921                            "  o   o   o   o    o   o   o   o";
9923          loadpage_lo     = "  0   1   0   0    0   0   0   0",
9924                            "  0   0   0   x    x   x   x   x",
9925                            "  x   x   x  a4   a3  a2  a1  a0",
9926                            "  i   i   i   i    i   i   i   i";
9928          loadpage_hi     = "  0   1   0   0    1   0   0   0",
9929                            "  0   0   0   x    x   x   x   x",
9930                            "  x   x   x  a4   a3  a2  a1  a0",
9931                            "  i   i   i   i    i   i   i   i";
9933          writepage       = "  0  1  0  0   1   1   0   0",
9934                            "  0  0  0  0   a11 a10 a9  a8",
9935                            " a7 a6 a5  x   x   x   x   x",
9936                            "  x  x  x  x   x   x   x   x";
9938         mode            = 0x41;
9939         delay           = 6;
9940         blocksize       = 64;
9941         readsize        = 256;
9942        ;
9943 #   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
9944      memory "signature"
9945          size            = 3;
9946          read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
9947                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
9948        ;
9949      memory "lock"
9950          size            = 1;
9951          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
9952                            "x x x x  x x x x  1 1 i i  i i i i";
9954          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
9955                            "x x x x  x x x x  x x o o  o o o o";
9956         min_write_delay = 9000;
9957         max_write_delay = 9000;
9958        ;
9960      memory "lfuse"
9961          size            = 1;
9962          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
9963                            "x x x x  x x x x  i i i i  i i i i";
9965          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
9966                            "x x x x  x x x x  o o o o  o o o o";
9967         min_write_delay = 9000;
9968         max_write_delay = 9000;
9969        ;
9971      memory "hfuse"
9972          size            = 1;
9973          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
9974                            "x x x x  x x x x  i i i i  i i i i";
9976          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
9977                            "x x x x  x x x x  o o o o  o o o o";
9978         min_write_delay = 9000;
9979         max_write_delay = 9000;
9980        ;
9982      memory "efuse"
9983          size            = 1;
9984          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
9985                            "x x x x  x x x x  x x x x  x x x i";
9987          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
9988                            "x x x x  x x x x  o o o o  o o o o";
9989         min_write_delay = 9000;
9990         max_write_delay = 9000;
9991      ;
9993      memory "calibration"
9994          size            = 1;
9995          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
9996                            "0  0  0  0   0  0  0  0    o o o o  o o o o";
9997      ;
9998   ;
10000 #------------------------------------------------------------
10001 # AT90PWM3
10002 #------------------------------------------------------------
10004 # Completely identical to AT90PWM2 (including the signature!)
10006 part
10007      id            = "pwm3";
10008      desc          = "AT90PWM3";
10009      has_debugwire = yes;
10010      flash_instr   = 0xB6, 0x01, 0x11;
10011      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
10012                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
10013                      0x99, 0xF9, 0xBB, 0xAF;
10014      stk500_devcode   = 0x65;
10015 ##  avr910_devcode   = ?;
10016      signature        = 0x1e 0x93 0x81;
10017      pagel            = 0xD8;
10018      bs2              = 0xE2;
10019      reset            = io;
10020      chip_erase_delay = 9000;
10022      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10023                         "x x x x  x x x x    x x x x  x x x x";
10025      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10026                         "x x x x  x x x x    x x x x  x x x x";
10028     timeout             = 200;
10029     stabdelay           = 100;
10030     cmdexedelay         = 25;
10031     synchloops          = 32;
10032     bytedelay           = 0;
10033     pollindex           = 3;
10034     pollvalue           = 0x53;
10035     predelay            = 1;
10036     postdelay           = 1;
10037     pollmethod          = 1;
10039     pp_controlstack     =
10040         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
10041         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
10042         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
10043         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
10044     hventerstabdelay    = 100;
10045     progmodedelay       = 0;
10046     latchcycles         = 5;
10047     togglevtg           = 1;
10048     poweroffdelay       = 15;
10049     resetdelayms        = 1;
10050     resetdelayus        = 0;
10051     hvleavestabdelay    = 15;
10052     chiperasepulsewidth = 0;
10053     chiperasepolltimeout = 10;
10054     programfusepulsewidth = 0;
10055     programfusepolltimeout = 5;
10056     programlockpulsewidth = 0;
10057     programlockpolltimeout = 5;
10059      memory "eeprom"
10060          size            = 512;
10061         paged           = no;
10062         page_size       = 4;
10063          min_write_delay = 4000;
10064          max_write_delay = 4500;
10065          readback_p1     = 0xff;
10066          readback_p2     = 0xff;
10067          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
10068                            "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
10070          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
10071                            "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
10073         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10074                           "  0   0   0   0      0   0   0   0",
10075                           "  0   0   0   0      0   0  a1  a0",
10076                           "  i   i   i   i      i   i   i   i";
10078         writepage       = "  1   1   0   0      0   0   1   0",
10079                           "  0   0   x   x      x   x   x   x",
10080                           " a7  a6  a5  a4     a3  a2   0   0",
10081                           "  x   x   x   x      x   x   x   x";
10083         mode            = 0x41;
10084         delay           = 6;
10085         blocksize       = 4;
10086         readsize        = 256;
10087        ;
10088      memory "flash"
10089          paged           = yes;
10090          size            = 8192;
10091          page_size       = 64;
10092          num_pages       = 128;
10093          min_write_delay = 4500;
10094          max_write_delay = 4500;
10095          readback_p1     = 0xff;
10096          readback_p2     = 0xff;
10097          read_lo         = "  0   0   1   0    0   0   0   0",
10098                            "  0   0   0   0   a11 a10 a9  a8",
10099                            " a7  a6  a5  a4   a3  a2  a1  a0",
10100                            "  o   o   o   o    o   o   o   o";
10102          read_hi         = "  0   0   1   0    1   0   0   0",
10103                            "  0   0   0   0   a11 a10 a9  a8",
10104                            " a7  a6  a5  a4   a3  a2  a1  a0",
10105                            "  o   o   o   o    o   o   o   o";
10107          loadpage_lo     = "  0   1   0   0    0   0   0   0",
10108                            "  0   0   0   x    x   x   x   x",
10109                            "  x   x   x  a4   a3  a2  a1  a0",
10110                            "  i   i   i   i    i   i   i   i";
10112          loadpage_hi     = "  0   1   0   0    1   0   0   0",
10113                            "  0   0   0   x    x   x   x   x",
10114                            "  x   x   x  a4   a3  a2  a1  a0",
10115                            "  i   i   i   i    i   i   i   i";
10117          writepage       = "  0  1  0  0   1   1   0   0",
10118                            "  0  0  0  0   a11 a10 a9  a8",
10119                            " a7 a6 a5  x   x   x   x   x",
10120                            "  x  x  x  x   x   x   x   x";
10122         mode            = 0x41;
10123         delay           = 6;
10124         blocksize       = 64;
10125         readsize        = 256;
10126        ;
10127 #   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
10128      memory "signature"
10129          size            = 3;
10130          read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
10131                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
10132        ;
10133      memory "lock"
10134          size            = 1;
10135          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
10136                            "x x x x  x x x x  1 1 i i  i i i i";
10138          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
10139                            "x x x x  x x x x  x x o o  o o o o";
10140         min_write_delay = 9000;
10141         max_write_delay = 9000;
10142        ;
10144      memory "lfuse"
10145          size            = 1;
10146          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
10147                            "x x x x  x x x x  i i i i  i i i i";
10149          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
10150                            "x x x x  x x x x  o o o o  o o o o";
10151         min_write_delay = 9000;
10152         max_write_delay = 9000;
10153        ;
10155      memory "hfuse"
10156          size            = 1;
10157          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
10158                            "x x x x  x x x x  i i i i  i i i i";
10160          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
10161                            "x x x x  x x x x  o o o o  o o o o";
10162         min_write_delay = 9000;
10163         max_write_delay = 9000;
10164        ;
10166      memory "efuse"
10167          size            = 1;
10168          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
10169                            "x x x x  x x x x  x x x x  x x x i";
10171          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
10172                            "x x x x  x x x x  o o o o  o o o o";
10173         min_write_delay = 9000;
10174         max_write_delay = 9000;
10175      ;
10177      memory "calibration"
10178          size            = 1;
10179          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
10180                            "0  0  0  0   0  0  0  0    o o o o  o o o o";
10181      ;
10182   ;
10184 #------------------------------------------------------------
10185 # AT90PWM2B
10186 #------------------------------------------------------------
10187 # Same as AT90PWM2 but different signature.
10189 part
10190      id            = "pwm2b";
10191      desc          = "AT90PWM2B";
10192      has_debugwire = yes;
10193      flash_instr   = 0xB6, 0x01, 0x11;
10194      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
10195                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
10196                      0x99, 0xF9, 0xBB, 0xAF;
10197      stk500_devcode   = 0x65;
10198 ##  avr910_devcode   = ?;
10199      signature        = 0x1e 0x93 0x83;
10200      pagel            = 0xD8;
10201      bs2              = 0xE2;
10202      reset            = io;
10203      chip_erase_delay = 9000;
10205      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10206                         "x x x x  x x x x    x x x x  x x x x";
10208      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10209                         "x x x x  x x x x    x x x x  x x x x";
10211     timeout             = 200;
10212     stabdelay           = 100;
10213     cmdexedelay         = 25;
10214     synchloops          = 32;
10215     bytedelay           = 0;
10216     pollindex           = 3;
10217     pollvalue           = 0x53;
10218     predelay            = 1;
10219     postdelay           = 1;
10220     pollmethod          = 1;
10222     pp_controlstack     =
10223         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
10224         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
10225         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
10226         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
10227     hventerstabdelay    = 100;
10228     progmodedelay       = 0;
10229     latchcycles         = 5;
10230     togglevtg           = 1;
10231     poweroffdelay       = 15;
10232     resetdelayms        = 1;
10233     resetdelayus        = 0;
10234     hvleavestabdelay    = 15;
10235     chiperasepulsewidth = 0;
10236     chiperasepolltimeout = 10;
10237     programfusepulsewidth = 0;
10238     programfusepolltimeout = 5;
10239     programlockpulsewidth = 0;
10240     programlockpolltimeout = 5;
10242      memory "eeprom"
10243          size            = 512;
10244         paged           = no;
10245         page_size       = 4;
10246          min_write_delay = 4000;
10247          max_write_delay = 4500;
10248          readback_p1     = 0xff;
10249          readback_p2     = 0xff;
10250          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
10251                            "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
10253          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
10254                            "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
10256         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10257                           "  0   0   0   0      0   0   0   0",
10258                           "  0   0   0   0      0   0  a1  a0",
10259                           "  i   i   i   i      i   i   i   i";
10261         writepage       = "  1   1   0   0      0   0   1   0",
10262                           "  0   0   x   x      x   x   x   x",
10263                           " a7  a6  a5  a4     a3  a2   0   0",
10264                           "  x   x   x   x      x   x   x   x";
10266         mode            = 0x41;
10267         delay           = 6;
10268         blocksize       = 4;
10269         readsize        = 256;
10270        ;
10271      memory "flash"
10272          paged           = yes;
10273          size            = 8192;
10274          page_size       = 64;
10275          num_pages       = 128;
10276          min_write_delay = 4500;
10277          max_write_delay = 4500;
10278          readback_p1     = 0xff;
10279          readback_p2     = 0xff;
10280          read_lo         = "  0   0   1   0    0   0   0   0",
10281                            "  0   0   0   0   a11 a10 a9  a8",
10282                            " a7  a6  a5  a4   a3  a2  a1  a0",
10283                            "  o   o   o   o    o   o   o   o";
10285          read_hi         = "  0   0   1   0    1   0   0   0",
10286                            "  0   0   0   0   a11 a10 a9  a8",
10287                            " a7  a6  a5  a4   a3  a2  a1  a0",
10288                            "  o   o   o   o    o   o   o   o";
10290          loadpage_lo     = "  0   1   0   0    0   0   0   0",
10291                            "  0   0   0   x    x   x   x   x",
10292                            "  x   x   x  a4   a3  a2  a1  a0",
10293                            "  i   i   i   i    i   i   i   i";
10295          loadpage_hi     = "  0   1   0   0    1   0   0   0",
10296                            "  0   0   0   x    x   x   x   x",
10297                            "  x   x   x  a4   a3  a2  a1  a0",
10298                            "  i   i   i   i    i   i   i   i";
10300          writepage       = "  0  1  0  0   1   1   0   0",
10301                            "  0  0  0  0   a11 a10 a9  a8",
10302                            " a7 a6 a5  x   x   x   x   x",
10303                            "  x  x  x  x   x   x   x   x";
10305         mode            = 0x41;
10306         delay           = 6;
10307         blocksize       = 64;
10308         readsize        = 256;
10309        ;
10310      memory "signature"
10311          size            = 3;
10312          read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
10313                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
10314        ;
10315      memory "lock"
10316          size            = 1;
10317          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
10318                            "x x x x  x x x x  1 1 i i  i i i i";
10320          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
10321                            "x x x x  x x x x  x x o o  o o o o";
10322         min_write_delay = 9000;
10323         max_write_delay = 9000;
10324        ;
10326      memory "lfuse"
10327          size            = 1;
10328          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
10329                            "x x x x  x x x x  i i i i  i i i i";
10331          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
10332                            "x x x x  x x x x  o o o o  o o o o";
10333         min_write_delay = 9000;
10334         max_write_delay = 9000;
10335        ;
10337      memory "hfuse"
10338          size            = 1;
10339          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
10340                            "x x x x  x x x x  i i i i  i i i i";
10342          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
10343                            "x x x x  x x x x  o o o o  o o o o";
10344         min_write_delay = 9000;
10345         max_write_delay = 9000;
10346        ;
10348      memory "efuse"
10349          size            = 1;
10350          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
10351                            "x x x x  x x x x  x x x x  x x x i";
10353          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
10354                            "x x x x  x x x x  o o o o  o o o o";
10355         min_write_delay = 9000;
10356         max_write_delay = 9000;
10357      ;
10359      memory "calibration"
10360          size            = 1;
10361          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
10362                            "0  0  0  0   0  0  0  0    o o o o  o o o o";
10363      ;
10364   ;
10366 #------------------------------------------------------------
10367 # AT90PWM3B
10368 #------------------------------------------------------------
10370 # Completely identical to AT90PWM2B (including the signature!)
10372 part
10373      id            = "pwm3b";
10374      desc          = "AT90PWM3B";
10375      has_debugwire = yes;
10376      flash_instr   = 0xB6, 0x01, 0x11;
10377      eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
10378                      0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
10379                      0x99, 0xF9, 0xBB, 0xAF;
10380      stk500_devcode   = 0x65;
10381 ##  avr910_devcode   = ?;
10382      signature        = 0x1e 0x93 0x83;
10383      pagel            = 0xD8;
10384      bs2              = 0xE2;
10385      reset            = io;
10386      chip_erase_delay = 9000;
10388      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10389                         "x x x x  x x x x    x x x x  x x x x";
10391      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10392                         "x x x x  x x x x    x x x x  x x x x";
10394     timeout             = 200;
10395     stabdelay           = 100;
10396     cmdexedelay         = 25;
10397     synchloops          = 32;
10398     bytedelay           = 0;
10399     pollindex           = 3;
10400     pollvalue           = 0x53;
10401     predelay            = 1;
10402     postdelay           = 1;
10403     pollmethod          = 1;
10405     pp_controlstack     =
10406         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
10407         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
10408         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
10409         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
10410     hventerstabdelay    = 100;
10411     progmodedelay       = 0;
10412     latchcycles         = 5;
10413     togglevtg           = 1;
10414     poweroffdelay       = 15;
10415     resetdelayms        = 1;
10416     resetdelayus        = 0;
10417     hvleavestabdelay    = 15;
10418     chiperasepulsewidth = 0;
10419     chiperasepolltimeout = 10;
10420     programfusepulsewidth = 0;
10421     programfusepolltimeout = 5;
10422     programlockpulsewidth = 0;
10423     programlockpolltimeout = 5;
10425      memory "eeprom"
10426          size            = 512;
10427         paged           = no;
10428         page_size       = 4;
10429          min_write_delay = 4000;
10430          max_write_delay = 4500;
10431          readback_p1     = 0xff;
10432          readback_p2     = 0xff;
10433          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
10434                            "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
10436          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
10437                            "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
10439         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10440                           "  0   0   0   0      0   0   0   0",
10441                           "  0   0   0   0      0   0  a1  a0",
10442                           "  i   i   i   i      i   i   i   i";
10444         writepage       = "  1   1   0   0      0   0   1   0",
10445                           "  0   0   x   x      x   x   x   x",
10446                           " a7  a6  a5  a4     a3  a2   0   0",
10447                           "  x   x   x   x      x   x   x   x";
10449         mode            = 0x41;
10450         delay           = 6;
10451         blocksize       = 4;
10452         readsize        = 256;
10453        ;
10454      memory "flash"
10455          paged           = yes;
10456          size            = 8192;
10457          page_size       = 64;
10458          num_pages       = 128;
10459          min_write_delay = 4500;
10460          max_write_delay = 4500;
10461          readback_p1     = 0xff;
10462          readback_p2     = 0xff;
10463          read_lo         = "  0   0   1   0    0   0   0   0",
10464                            "  0   0   0   0   a11 a10 a9  a8",
10465                            " a7  a6  a5  a4   a3  a2  a1  a0",
10466                            "  o   o   o   o    o   o   o   o";
10468          read_hi         = "  0   0   1   0    1   0   0   0",
10469                            "  0   0   0   0   a11 a10 a9  a8",
10470                            " a7  a6  a5  a4   a3  a2  a1  a0",
10471                            "  o   o   o   o    o   o   o   o";
10473          loadpage_lo     = "  0   1   0   0    0   0   0   0",
10474                            "  0   0   0   x    x   x   x   x",
10475                            "  x   x   x  a4   a3  a2  a1  a0",
10476                            "  i   i   i   i    i   i   i   i";
10478          loadpage_hi     = "  0   1   0   0    1   0   0   0",
10479                            "  0   0   0   x    x   x   x   x",
10480                            "  x   x   x  a4   a3  a2  a1  a0",
10481                            "  i   i   i   i    i   i   i   i";
10483          writepage       = "  0  1  0  0   1   1   0   0",
10484                            "  0  0  0  0   a11 a10 a9  a8",
10485                            " a7 a6 a5  x   x   x   x   x",
10486                            "  x  x  x  x   x   x   x   x";
10488         mode            = 0x41;
10489         delay           = 6;
10490         blocksize       = 64;
10491         readsize        = 256;
10492        ;
10493      memory "signature"
10494          size            = 3;
10495          read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
10496                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
10497        ;
10498      memory "lock"
10499          size            = 1;
10500          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
10501                            "x x x x  x x x x  1 1 i i  i i i i";
10503          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
10504                            "x x x x  x x x x  x x o o  o o o o";
10505         min_write_delay = 9000;
10506         max_write_delay = 9000;
10507        ;
10509      memory "lfuse"
10510          size            = 1;
10511          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
10512                            "x x x x  x x x x  i i i i  i i i i";
10514          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
10515                            "x x x x  x x x x  o o o o  o o o o";
10516         min_write_delay = 9000;
10517         max_write_delay = 9000;
10518        ;
10520      memory "hfuse"
10521          size            = 1;
10522          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
10523                            "x x x x  x x x x  i i i i  i i i i";
10525          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
10526                            "x x x x  x x x x  o o o o  o o o o";
10527         min_write_delay = 9000;
10528         max_write_delay = 9000;
10529        ;
10531      memory "efuse"
10532          size            = 1;
10533          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
10534                            "x x x x  x x x x  x x x x  x x x i";
10536          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
10537                            "x x x x  x x x x  o o o o  o o o o";
10538         min_write_delay = 9000;
10539         max_write_delay = 9000;
10540      ;
10542      memory "calibration"
10543          size            = 1;
10544          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
10545                            "0  0  0  0   0  0  0  0    o o o o  o o o o";
10546      ;
10547   ;
10549 #------------------------------------------------------------
10550 # ATtiny25
10551 #------------------------------------------------------------
10553 part
10554      id            = "t25";
10555      desc          = "ATtiny25";
10556      has_debugwire = yes;
10557      flash_instr   = 0xB4, 0x02, 0x12;
10558      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
10559                      0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
10560                      0x99, 0xE1, 0xBB, 0xAC;
10561 ## no STK500 devcode in XML file, use the ATtiny45 one
10562      stk500_devcode   = 0x14;
10563 ##  avr910_devcode   = ?;
10564 ##  Try the AT90S2313 devcode:
10565      avr910_devcode   = 0x20;
10566      signature        = 0x1e 0x91 0x08;
10567      reset            = io;
10568      chip_erase_delay = 4500;
10570      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10571                         "x x x x  x x x x    x x x x  x x x x";
10573      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10574                         "x x x x  x x x x    x x x x  x x x x";
10576     timeout             = 200;
10577     stabdelay           = 100;
10578     cmdexedelay         = 25;
10579     synchloops          = 32;
10580     bytedelay           = 0;
10581     pollindex           = 3;
10582     pollvalue           = 0x53;
10583     predelay            = 1;
10584     postdelay           = 1;
10585     pollmethod          = 1;
10587     hvsp_controlstack   =
10588         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
10589         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
10590         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
10591         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
10592     hventerstabdelay    = 100;
10593     hvspcmdexedelay     = 0;
10594     synchcycles         = 6;
10595     latchcycles         = 1;
10596     togglevtg           = 1;
10597     poweroffdelay       = 25;
10598     resetdelayms        = 1;
10599     resetdelayus        = 0;
10600     hvleavestabdelay    = 100;
10601     resetdelay          = 25;
10602     chiperasepolltimeout = 40;
10603     chiperasetime       = 0;
10604     programfusepolltimeout = 25;
10605     programlockpolltimeout = 25;
10607      memory "eeprom"
10608          size            = 128;
10609         paged           = no;
10610         page_size       = 4;
10611          min_write_delay = 4000;
10612          max_write_delay = 4500;
10613          readback_p1     = 0xff;
10614          readback_p2     = 0xff;
10615          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
10616                            "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
10618          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
10619                            "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
10621         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10622                           "  0   0   0   0      0   0   0   0",
10623                           "  0   0   0   0      0   0  a1  a0",
10624                           "  i   i   i   i      i   i   i   i";
10626         writepage       = "  1   1   0   0      0   0   1   0",
10627                           "  0   0   x   x      x   x   x   x",
10628                           "  x  a6  a5  a4     a3  a2   0   0",
10629                           "  x   x   x   x      x   x   x   x";
10631         mode            = 0x41;
10632         delay           = 6;
10633         blocksize       = 4;
10634         readsize        = 256;
10635        ;
10636      memory "flash"
10637          paged           = yes;
10638          size            = 2048;
10639          page_size       = 32;
10640          num_pages       = 64;
10641          min_write_delay = 4500;
10642          max_write_delay = 4500;
10643          readback_p1     = 0xff;
10644          readback_p2     = 0xff;
10645          read_lo         = "  0   0   1   0    0   0   0   0",
10646                            "  0   0   0   0    0   0  a9  a8",
10647                            " a7  a6  a5  a4   a3  a2  a1  a0",
10648                            "  o   o   o   o    o   o   o   o";
10650          read_hi         = "  0   0   1   0    1   0   0   0",
10651                            "  0   0   0   0    0   0  a9  a8",
10652                            " a7  a6  a5  a4   a3  a2  a1  a0",
10653                            "  o   o   o   o    o   o   o   o";
10655          loadpage_lo     = "  0   1   0   0    0   0   0   0",
10656                            "  0   0   0   x    x   x   x   x",
10657                            "  x   x   x   x   a3  a2  a1  a0",
10658                            "  i   i   i   i    i   i   i   i";
10660          loadpage_hi     = "  0   1   0   0    1   0   0   0",
10661                            "  0   0   0   x    x   x   x   x",
10662                            "  x   x   x   x   a3  a2  a1  a0",
10663                            "  i   i   i   i    i   i   i   i";
10665          writepage       = "  0  1  0  0   1  1  0  0",
10666                            "  0  0  0  0   0  0 a9 a8",
10667                            " a7 a6 a5 a4   x  x  x  x",
10668                            "  x  x  x  x   x  x  x  x";
10670         mode            = 0x41;
10671         delay           = 6;
10672         blocksize       = 32;
10673         readsize        = 256;
10674        ;
10675 #   ATtiny25 has Signature Bytes: 0x1E 0x91 0x08.
10676      memory "signature"
10677          size            = 3;
10678          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
10679                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
10680        ;
10681      memory "lock"
10682          size            = 1;
10683          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
10684                            "x x x x  x x x x  1 1 i i  i i i i";
10685         min_write_delay = 9000;
10686         max_write_delay = 9000;
10687        ;
10689      memory "lfuse"
10690          size            = 1;
10691          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
10692                            "x x x x  x x x x  i i i i  i i i i";
10694          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
10695                            "x x x x  x x x x  o o o o  o o o o";
10696         min_write_delay = 9000;
10697         max_write_delay = 9000;
10698        ;
10700      memory "hfuse"
10701          size            = 1;
10702          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
10703                            "x x x x  x x x x  i i i i  i i i i";
10705          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
10706                            "x x x x  x x x x  o o o o  o o o o";
10707         min_write_delay = 9000;
10708         max_write_delay = 9000;
10709        ;
10711      memory "efuse"
10712          size            = 1;
10713          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
10714                            "x x x x  x x x x  x x x x  x x x i";
10716          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
10717                            "x x x x  x x x x  o o o o  o o o o";
10718         min_write_delay = 9000;
10719         max_write_delay = 9000;
10720      ;
10722      memory "calibration"
10723          size            = 2;
10724          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
10725                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
10726      ;
10727   ;
10729 #------------------------------------------------------------
10730 # ATtiny45
10731 #------------------------------------------------------------
10733 part
10734      id            = "t45";
10735      desc          = "ATtiny45";
10736      has_debugwire = yes;
10737      flash_instr   = 0xB4, 0x02, 0x12;
10738      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
10739                      0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
10740                      0x99, 0xE1, 0xBB, 0xAC;
10741      stk500_devcode   = 0x14;
10742 ##  avr910_devcode   = ?;
10743 ##  Try the AT90S2313 devcode:
10744      avr910_devcode   = 0x20;
10745      signature        = 0x1e 0x92 0x06;
10746      reset            = io;
10747      chip_erase_delay = 4500;
10749      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10750                         "x x x x  x x x x    x x x x  x x x x";
10752      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10753                         "x x x x  x x x x    x x x x  x x x x";
10755     timeout             = 200;
10756     stabdelay           = 100;
10757     cmdexedelay         = 25;
10758     synchloops          = 32;
10759     bytedelay           = 0;
10760     pollindex           = 3;
10761     pollvalue           = 0x53;
10762     predelay            = 1;
10763     postdelay           = 1;
10764     pollmethod          = 1;
10766     hvsp_controlstack     =
10767         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
10768         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
10769         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
10770         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
10771     hventerstabdelay    = 100;
10772     progmodedelay       = 0;
10773     hvspcmdexedelay     = 0;
10774     synchcycles         = 6;
10775     latchcycles         = 1;
10776     togglevtg           = 1;
10777     poweroffdelay       = 25;
10778     resetdelayms        = 1;
10779     resetdelayus        = 0;
10780     hvleavestabdelay    = 100;
10781     resetdelay          = 25;
10782     chiperasepolltimeout = 40;
10783     chiperasetime       = 0;
10784     programfusepolltimeout = 25;
10785     programlockpolltimeout = 25;
10787      memory "eeprom"
10788          size            = 256;
10789          page_size       = 4;
10790          min_write_delay = 4000;
10791          max_write_delay = 4500;
10792          readback_p1     = 0xff;
10793          readback_p2     = 0xff;
10794          read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
10795                            "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
10797          write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
10798                            "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
10800         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10801                           "  0   0   0   0      0   0   0   0",
10802                           "  0   0   0   0      0   0  a1  a0",
10803                           "  i   i   i   i      i   i   i   i";
10805         writepage       = "  1   1   0   0      0   0   1   0",
10806                           "  0   0   x   x      x   x   x   x",
10807                           " a7  a6  a5  a4     a3  a2   0   0",
10808                           "  x   x   x   x      x   x   x   x";
10810         mode            = 0x41;
10811         delay           = 6;
10812         blocksize       = 4;
10813         readsize        = 256;
10814        ;
10815      memory "flash"
10816          paged           = yes;
10817          size            = 4096;
10818          page_size       = 64;
10819          num_pages       = 64;
10820          min_write_delay = 4500;
10821          max_write_delay = 4500;
10822          readback_p1     = 0xff;
10823          readback_p2     = 0xff;
10824          read_lo         = "  0   0   1   0    0   0   0   0",
10825                            "  0   0   0   0    0  a10 a9  a8",
10826                            " a7  a6  a5  a4   a3  a2  a1  a0",
10827                            "  o   o   o   o    o   o   o   o";
10829          read_hi         = "  0   0   1   0    1   0   0   0",
10830                            "  0   0   0   0    0  a10 a9  a8",
10831                            " a7  a6  a5  a4   a3  a2  a1  a0",
10832                            "  o   o   o   o    o   o   o   o";
10834          loadpage_lo     = "  0   1   0   0    0   0   0   0",
10835                            "  0   0   0   x    x   x   x   x",
10836                            "  x   x   x  a4   a3  a2  a1  a0",
10837                            "  i   i   i   i    i   i   i   i";
10839          loadpage_hi     = "  0   1   0   0    1   0   0   0",
10840                            "  0   0   0   x    x   x   x   x",
10841                            "  x   x   x  a4   a3  a2  a1  a0",
10842                            "  i   i   i   i    i   i   i   i";
10844          writepage       = "  0  1  0  0   1  1  0  0",
10845                            "  0  0  0  0   0 a10 a9 a8",
10846                            " a7 a6 a5  x   x  x  x  x",
10847                            "  x  x  x  x   x  x  x  x";
10849         mode            = 0x41;
10850         delay           = 6;
10851         blocksize       = 32;
10852         readsize        = 256;
10853        ;
10854 #   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
10855      memory "signature"
10856          size            = 3;
10857          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
10858                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
10859        ;
10860      memory "lock"
10861          size            = 1;
10862          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
10863                            "x x x x  x x x x  1 1 i i  i i i i";
10864         min_write_delay = 9000;
10865         max_write_delay = 9000;
10866        ;
10868      memory "lfuse"
10869          size            = 1;
10870          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
10871                            "x x x x  x x x x  i i i i  i i i i";
10873          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
10874                            "x x x x  x x x x  o o o o  o o o o";
10875         min_write_delay = 9000;
10876         max_write_delay = 9000;
10877        ;
10879      memory "hfuse"
10880          size            = 1;
10881          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
10882                            "x x x x  x x x x  i i i i  i i i i";
10884          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
10885                            "x x x x  x x x x  o o o o  o o o o";
10886         min_write_delay = 9000;
10887         max_write_delay = 9000;
10888        ;
10890      memory "efuse"
10891          size            = 1;
10892          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
10893                            "x x x x  x x x x  x x x x  x x x i";
10895          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
10896                            "x x x x  x x x x  o o o o  o o o o";
10897         min_write_delay = 9000;
10898         max_write_delay = 9000;
10899      ;
10901      memory "calibration"
10902          size            = 2;
10903          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
10904                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
10905      ;
10906   ;
10908 #------------------------------------------------------------
10909 # ATtiny85
10910 #------------------------------------------------------------
10912 part
10913      id            = "t85";
10914      desc          = "ATtiny85";
10915      has_debugwire = yes;
10916      flash_instr   = 0xB4, 0x02, 0x12;
10917      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
10918                      0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
10919                      0x99, 0xE1, 0xBB, 0xAC;
10920 ## no STK500 devcode in XML file, use the ATtiny45 one
10921      stk500_devcode   = 0x14;
10922 ##  avr910_devcode   = ?;
10923 ##  Try the AT90S2313 devcode:
10924      avr910_devcode   = 0x20;
10925      signature        = 0x1e 0x93 0x0b;
10926      reset            = io;
10927      chip_erase_delay = 4500;
10929      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
10930                         "x x x x  x x x x    x x x x  x x x x";
10932      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
10933                         "x x x x  x x x x    x x x x  x x x x";
10935     timeout             = 200;
10936     stabdelay           = 100;
10937     cmdexedelay         = 25;
10938     synchloops          = 32;
10939     bytedelay           = 0;
10940     pollindex           = 3;
10941     pollvalue           = 0x53;
10942     predelay            = 1;
10943     postdelay           = 1;
10944     pollmethod          = 1;
10946     hvsp_controlstack   =
10947         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
10948         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
10949         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
10950         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
10951     hventerstabdelay    = 100;
10952     hvspcmdexedelay     = 0;
10953     synchcycles         = 6;
10954     latchcycles         = 1;
10955     togglevtg           = 1;
10956     poweroffdelay       = 25;
10957     resetdelayms        = 1;
10958     resetdelayus        = 0;
10959     hvleavestabdelay    = 100;
10960     resetdelay          = 25;
10961     chiperasepolltimeout = 40;
10962     chiperasetime       = 0;
10963     programfusepolltimeout = 25;
10964     programlockpolltimeout = 25;
10966      memory "eeprom"
10967          size            = 512;
10968         paged           = no;
10969         page_size       = 4;
10970          min_write_delay = 4000;
10971          max_write_delay = 4500;
10972          readback_p1     = 0xff;
10973          readback_p2     = 0xff;
10974          read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
10975                            "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
10977          write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
10978                            "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
10980         loadpage_lo     = "  1   1   0   0      0   0   0   1",
10981                           "  0   0   0   0      0   0   0   0",
10982                           "  0   0   0   0      0   0  a1  a0",
10983                           "  i   i   i   i      i   i   i   i";
10985         writepage       = "  1   1   0   0      0   0   1   0",
10986                           "  0   0   x   x      x   x   x  a8",
10987                           " a7  a6  a5  a4     a3  a2   0   0",
10988                           "  x   x   x   x      x   x   x   x";
10990         mode            = 0x41;
10991         delay           = 6;
10992         blocksize       = 4;
10993         readsize        = 256;
10994        ;
10995      memory "flash"
10996          paged           = yes;
10997          size            = 8192;
10998          page_size       = 64;
10999          num_pages       = 128;
11000          min_write_delay = 4500;
11001          max_write_delay = 4500;
11002          readback_p1     = 0xff;
11003          readback_p2     = 0xff;
11004          read_lo         = "  0   0   1   0    0   0   0   0",
11005                            "  0   0   0   0  a11 a10  a9  a8",
11006                            " a7  a6  a5  a4   a3  a2  a1  a0",
11007                            "  o   o   o   o    o   o   o   o";
11009          read_hi         = "  0   0   1   0    1   0   0   0",
11010                            "  0   0   0   0  a11 a10  a9  a8",
11011                            " a7  a6  a5  a4   a3  a2  a1  a0",
11012                            "  o   o   o   o    o   o   o   o";
11014          loadpage_lo     = "  0   1   0   0    0   0   0   0",
11015                            "  0   0   0   x    x   x   x   x",
11016                            "  x   x   x  a4   a3  a2  a1  a0",
11017                            "  i   i   i   i    i   i   i   i";
11019          loadpage_hi     = "  0   1   0   0    1   0   0   0",
11020                            "  0   0   0   x    x   x   x   x",
11021                            "  x   x   x  a4   a3  a2  a1  a0",
11022                            "  i   i   i   i    i   i   i   i";
11024          writepage       = "  0  1  0  0   1   1   0  0",
11025                            "  0  0  0  0  a11 a10 a9 a8",
11026                            " a7 a6 a5  x   x  x  x  x",
11027                            "  x  x  x  x   x  x  x  x";
11029         mode            = 0x41;
11030         delay           = 6;
11031         blocksize       = 32;
11032         readsize        = 256;
11033        ;
11034 #   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
11035      memory "signature"
11036          size            = 3;
11037          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
11038                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
11039        ;
11040      memory "lock"
11041          size            = 1;
11042          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
11043                            "x x x x  x x x x  1 1 i i  i i i i";
11044         min_write_delay = 9000;
11045         max_write_delay = 9000;
11046        ;
11048      memory "lfuse"
11049          size            = 1;
11050          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11051                            "x x x x  x x x x  i i i i  i i i i";
11053          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11054                            "x x x x  x x x x  o o o o  o o o o";
11055         min_write_delay = 9000;
11056         max_write_delay = 9000;
11057        ;
11059      memory "hfuse"
11060          size            = 1;
11061          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11062                            "x x x x  x x x x  i i i i  i i i i";
11064          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
11065                            "x x x x  x x x x  o o o o  o o o o";
11066         min_write_delay = 9000;
11067         max_write_delay = 9000;
11068        ;
11070      memory "efuse"
11071          size            = 1;
11072          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
11073                            "x x x x  x x x x  x x x x  x x x i";
11075          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
11076                            "x x x x  x x x x  o o o o  o o o o";
11077         min_write_delay = 9000;
11078         max_write_delay = 9000;
11079      ;
11081      memory "calibration"
11082          size            = 2;
11083          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
11084                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
11085      ;
11086   ;
11088 #------------------------------------------------------------
11089 # ATmega640
11090 #------------------------------------------------------------
11091 # Almost same as ATmega1280, except for different memory sizes
11093 part
11094     id               = "m640";
11095     desc             = "ATMEGA640";
11096     signature        = 0x1e 0x96 0x08;
11097     has_jtag         = yes;
11098 #    stk500_devcode   = 0xB2;
11099 #    avr910_devcode   = 0x43;
11100     chip_erase_delay = 9000;
11101     pagel            = 0xD7;
11102     bs2              = 0xA0;
11103     reset            = dedicated;
11104     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
11105                        "x x x x  x x x x    x x x x  x x x x";
11107     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
11108                        "x x x x  x x x x    x x x x  x x x x";
11110     timeout             = 200;
11111     stabdelay           = 100;
11112     cmdexedelay         = 25;
11113     synchloops          = 32;
11114     bytedelay           = 0;
11115     pollindex           = 3;
11116     pollvalue           = 0x53;
11117     predelay            = 1;
11118     postdelay           = 1;
11119     pollmethod          = 1;
11121     pp_controlstack     =
11122         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
11123         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
11124         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
11125         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
11126     hventerstabdelay    = 100;
11127     progmodedelay       = 0;
11128     latchcycles         = 5;
11129     togglevtg           = 1;
11130     poweroffdelay       = 15;
11131     resetdelayms        = 1;
11132     resetdelayus        = 0;
11133     hvleavestabdelay    = 15;
11134     chiperasepulsewidth = 0;
11135     chiperasepolltimeout = 10;
11136     programfusepulsewidth = 0;
11137     programfusepolltimeout = 5;
11138     programlockpulsewidth = 0;
11139     programlockpolltimeout = 5;
11141     idr                 = 0x31;
11142     spmcr               = 0x57;
11143     rampz               = 0x3b;
11144     allowfullpagebitstream = no;
11146     memory "eeprom"
11147         paged           = no; /* leave this "no" */
11148         page_size       = 8;  /* for parallel programming */
11149         size            = 4096;
11150         min_write_delay = 9000;
11151         max_write_delay = 9000;
11152         readback_p1     = 0x00;
11153         readback_p2     = 0x00;
11154         read            = "  1   0   1   0      0   0   0   0",
11155                           "  x   x   x   x    a11 a10  a9  a8",
11156                           " a7  a6  a5  a4     a3  a2  a1  a0",
11157                           "  o   o   o   o      o   o   o   o";
11159         write           = "  1   1   0   0      0   0   0   0",
11160                           "  x   x   x   x    a11 a10  a9  a8",
11161                           " a7  a6  a5  a4     a3  a2  a1  a0", 
11162                           "  i   i   i   i      i   i   i   i";
11164         loadpage_lo     = "  1   1   0   0      0   0   0   1",
11165                           "  0   0   0   0      0   0   0   0",
11166                           "  0   0   0   0      0  a2  a1  a0",
11167                           "  i   i   i   i      i   i   i   i";
11169         writepage       = "  1   1   0   0      0   0   1   0",
11170                           "  0   0   x   x    a11 a10  a9  a8",
11171                           " a7  a6  a5  a4     a3   0   0   0",
11172                           "  x   x   x   x      x   x   x   x";
11174         mode            = 0x41;
11175         delay           = 10;
11176         blocksize       = 8;
11177         readsize        = 256;
11178       ;
11180     memory "flash"
11181         paged           = yes;
11182         size            = 65536;
11183         page_size       = 256;
11184         num_pages       = 256;
11185         min_write_delay = 4500;
11186         max_write_delay = 4500;
11187         readback_p1     = 0x00;
11188         readback_p2     = 0x00;
11189         read_lo         = "  0   0   1   0      0   0   0   0",
11190                           "  0 a14 a13 a12    a11 a10  a9  a8",
11191                           " a7  a6  a5  a4     a3  a2  a1  a0",
11192                           "  o   o   o   o      o   o   o   o";
11194         read_hi         = "  0   0   1   0      1   0   0   0",
11195                           "  0 a14 a13 a12    a11 a10  a9  a8",
11196                           " a7  a6  a5  a4     a3  a2  a1  a0",
11197                           "  o   o   o   o      o   o   o   o";
11199         loadpage_lo     = "  0   1   0   0      0   0   0   0",
11200                           "  x   x   x   x      x   x   x   x",
11201                           "  x  a6  a5  a4     a3  a2  a1  a0",
11202                           "  i   i   i   i      i   i   i   i";
11204         loadpage_hi     = "  0   1   0   0      1   0   0   0",
11205                           "  x   x   x   x      x   x   x   x",
11206                           "  x  a6  a5  a4     a3  a2  a1  a0",
11207                           "  i   i   i   i      i   i   i   i";
11209         writepage       = "  0   1   0   0      1   1   0   0",
11210                           "  0 a14 a13 a12    a11 a10  a9  a8",
11211                           " a7   x   x   x      x   x   x   x",
11212                           "  x   x   x   x      x   x   x   x";
11214         mode            = 0x41;
11215         delay           = 10;
11216         blocksize       = 256;
11217         readsize        = 256;
11218       ;
11220     memory "lfuse"
11221         size            = 1;
11222         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11223                           "x x x x  x x x x  i i i i  i i i i";
11225         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11226                           "x x x x  x x x x  o o o o  o o o o";
11227         min_write_delay = 9000;
11228         max_write_delay = 9000;
11229       ;
11231     memory "hfuse"
11232         size            = 1;
11233         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11234                           "x x x x  x x x x  i i i i  i i i i";
11236         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
11237                           "x x x x  x x x x  o o o o  o o o o";
11238         min_write_delay = 9000;
11239         max_write_delay = 9000;
11240       ;
11242     memory "efuse"
11243         size            = 1;
11244         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
11245                           "x x x x  x x x x  x x x x  x i i i";
11247         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
11248                           "x x x x  x x x x  o o o o  o o o o";
11249         min_write_delay = 9000;
11250         max_write_delay = 9000;
11251       ;
11253     memory "lock"
11254         size            = 1;
11255         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
11256                           "x x x x  x x x x   x x o o  o o o o";
11258         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
11259                           "x x x x  x x x x   1 1 i i  i i i i";
11260         min_write_delay = 9000;
11261         max_write_delay = 9000;
11262       ;
11264     memory "calibration"
11265         size            = 1;
11266         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
11267                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
11268       ;
11270     memory "signature"
11271         size            = 3;
11272         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
11273                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
11274       ;
11275   ;
11277 #------------------------------------------------------------
11278 # ATmega1280
11279 #------------------------------------------------------------
11281 part
11282     id               = "m1280";
11283     desc             = "ATMEGA1280";
11284     signature        = 0x1e 0x97 0x03;
11285     has_jtag         = yes;
11286 #    stk500_devcode   = 0xB2;
11287 #    avr910_devcode   = 0x43;
11288     chip_erase_delay = 9000;
11289     pagel            = 0xD7;
11290     bs2              = 0xA0;
11291     reset            = dedicated;
11292     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
11293                        "x x x x  x x x x    x x x x  x x x x";
11295     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
11296                        "x x x x  x x x x    x x x x  x x x x";
11298     timeout             = 200;
11299     stabdelay           = 100;
11300     cmdexedelay         = 25;
11301     synchloops          = 32;
11302     bytedelay           = 0;
11303     pollindex           = 3;
11304     pollvalue           = 0x53;
11305     predelay            = 1;
11306     postdelay           = 1;
11307     pollmethod          = 1;
11309     pp_controlstack     =
11310         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
11311         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
11312         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
11313         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
11314     hventerstabdelay    = 100;
11315     progmodedelay       = 0;
11316     latchcycles         = 5;
11317     togglevtg           = 1;
11318     poweroffdelay       = 15;
11319     resetdelayms        = 1;
11320     resetdelayus        = 0;
11321     hvleavestabdelay    = 15;
11322     chiperasepulsewidth = 0;
11323     chiperasepolltimeout = 10;
11324     programfusepulsewidth = 0;
11325     programfusepolltimeout = 5;
11326     programlockpulsewidth = 0;
11327     programlockpolltimeout = 5;
11329     idr                 = 0x31;
11330     spmcr               = 0x57;
11331     rampz               = 0x3b;
11332     allowfullpagebitstream = no;
11334     memory "eeprom"
11335         paged           = no; /* leave this "no" */
11336         page_size       = 8;  /* for parallel programming */
11337         size            = 4096;
11338         min_write_delay = 9000;
11339         max_write_delay = 9000;
11340         readback_p1     = 0x00;
11341         readback_p2     = 0x00;
11342         read            = "  1   0   1   0      0   0   0   0",
11343                           "  x   x   x   x    a11 a10  a9  a8",
11344                           " a7  a6  a5  a4     a3  a2  a1  a0",
11345                           "  o   o   o   o      o   o   o   o";
11347         write           = "  1   1   0   0      0   0   0   0",
11348                           "  x   x   x   x    a11 a10  a9  a8",
11349                           " a7  a6  a5  a4     a3  a2  a1  a0", 
11350                           "  i   i   i   i      i   i   i   i";
11352         loadpage_lo     = "  1   1   0   0      0   0   0   1",
11353                           "  0   0   0   0      0   0   0   0",
11354                           "  0   0   0   0      0  a2  a1  a0",
11355                           "  i   i   i   i      i   i   i   i";
11357         writepage       = "  1   1   0   0      0   0   1   0",
11358                           "  0   0   x   x    a11 a10  a9  a8",
11359                           " a7  a6  a5  a4     a3   0   0   0",
11360                           "  x   x   x   x      x   x   x   x";
11362         mode            = 0x41;
11363         delay           = 10;
11364         blocksize       = 8;
11365         readsize        = 256;
11366       ;
11368     memory "flash"
11369         paged           = yes;
11370         size            = 131072;
11371         page_size       = 256;
11372         num_pages       = 512;
11373         min_write_delay = 4500;
11374         max_write_delay = 4500;
11375         readback_p1     = 0x00;
11376         readback_p2     = 0x00;
11377         read_lo         = "  0   0   1   0      0   0   0   0",
11378                           "a15 a14 a13 a12    a11 a10  a9  a8",
11379                           " a7  a6  a5  a4     a3  a2  a1  a0",
11380                           "  o   o   o   o      o   o   o   o";
11382         read_hi         = "  0   0   1   0      1   0   0   0",
11383                           "a15 a14 a13 a12    a11 a10  a9  a8",
11384                           " a7  a6  a5  a4     a3  a2  a1  a0",
11385                           "  o   o   o   o      o   o   o   o";
11387         loadpage_lo     = "  0   1   0   0      0   0   0   0",
11388                           "  x   x   x   x      x   x   x   x",
11389                           "  x  a6  a5  a4     a3  a2  a1  a0",
11390                           "  i   i   i   i      i   i   i   i";
11392         loadpage_hi     = "  0   1   0   0      1   0   0   0",
11393                           "  x   x   x   x      x   x   x   x",
11394                           "  x  a6  a5  a4     a3  a2  a1  a0",
11395                           "  i   i   i   i      i   i   i   i";
11397         writepage       = "  0   1   0   0      1   1   0   0",
11398                           "a15 a14 a13 a12    a11 a10  a9  a8",
11399                           " a7   x   x   x      x   x   x   x",
11400                           "  x   x   x   x      x   x   x   x";
11402         mode            = 0x41;
11403         delay           = 10;
11404         blocksize       = 256;
11405         readsize        = 256;
11406       ;
11408     memory "lfuse"
11409         size            = 1;
11410         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11411                           "x x x x  x x x x  i i i i  i i i i";
11413         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11414                           "x x x x  x x x x  o o o o  o o o o";
11415         min_write_delay = 9000;
11416         max_write_delay = 9000;
11417       ;
11419     memory "hfuse"
11420         size            = 1;
11421         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11422                           "x x x x  x x x x  i i i i  i i i i";
11424         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
11425                           "x x x x  x x x x  o o o o  o o o o";
11426         min_write_delay = 9000;
11427         max_write_delay = 9000;
11428       ;
11430     memory "efuse"
11431         size            = 1;
11432         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
11433                           "x x x x  x x x x  x x x x  x i i i";
11435         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
11436                           "x x x x  x x x x  o o o o  o o o o";
11437         min_write_delay = 9000;
11438         max_write_delay = 9000;
11439       ;
11441     memory "lock"
11442         size            = 1;
11443         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
11444                           "x x x x  x x x x   x x o o  o o o o";
11446         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
11447                           "x x x x  x x x x   1 1 i i  i i i i";
11448         min_write_delay = 9000;
11449         max_write_delay = 9000;
11450       ;
11452     memory "calibration"
11453         size            = 1;
11454         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
11455                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
11456       ;
11458     memory "signature"
11459         size            = 3;
11460         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
11461                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
11462       ;
11463   ;
11465 #------------------------------------------------------------
11466 # ATmega1281
11467 #------------------------------------------------------------
11468 # Identical to ATmega1280
11470 part
11471     id               = "m1281";
11472     desc             = "ATMEGA1281";
11473     signature        = 0x1e 0x97 0x04;
11474     has_jtag         = yes;
11475 #    stk500_devcode   = 0xB2;
11476 #    avr910_devcode   = 0x43;
11477     chip_erase_delay = 9000;
11478     pagel            = 0xD7;
11479     bs2              = 0xA0;
11480     reset            = dedicated;
11481     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
11482                        "x x x x  x x x x    x x x x  x x x x";
11484     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
11485                        "x x x x  x x x x    x x x x  x x x x";
11487     timeout             = 200;
11488     stabdelay           = 100;
11489     cmdexedelay         = 25;
11490     synchloops          = 32;
11491     bytedelay           = 0;
11492     pollindex           = 3;
11493     pollvalue           = 0x53;
11494     predelay            = 1;
11495     postdelay           = 1;
11496     pollmethod          = 1;
11498     pp_controlstack     =
11499         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
11500         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
11501         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
11502         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
11503     hventerstabdelay    = 100;
11504     progmodedelay       = 0;
11505     latchcycles         = 5;
11506     togglevtg           = 1;
11507     poweroffdelay       = 15;
11508     resetdelayms        = 1;
11509     resetdelayus        = 0;
11510     hvleavestabdelay    = 15;
11511     chiperasepulsewidth = 0;
11512     chiperasepolltimeout = 10;
11513     programfusepulsewidth = 0;
11514     programfusepolltimeout = 5;
11515     programlockpulsewidth = 0;
11516     programlockpolltimeout = 5;
11518     idr                 = 0x31;
11519     spmcr               = 0x57;
11520     rampz               = 0x3b;
11521     allowfullpagebitstream = no;
11523     memory "eeprom"
11524         paged           = no; /* leave this "no" */
11525         page_size       = 8;  /* for parallel programming */
11526         size            = 4096;
11527         min_write_delay = 9000;
11528         max_write_delay = 9000;
11529         readback_p1     = 0x00;
11530         readback_p2     = 0x00;
11531         read            = "  1   0   1   0      0   0   0   0",
11532                           "  x   x   x   x    a11 a10  a9  a8",
11533                           " a7  a6  a5  a4     a3  a2  a1  a0",
11534                           "  o   o   o   o      o   o   o   o";
11536         write           = "  1   1   0   0      0   0   0   0",
11537                           "  x   x   x   x    a11 a10  a9  a8",
11538                           " a7  a6  a5  a4     a3  a2  a1  a0", 
11539                           "  i   i   i   i      i   i   i   i";
11541         loadpage_lo     = "  1   1   0   0      0   0   0   1",
11542                           "  0   0   0   0      0   0   0   0",
11543                           "  0   0   0   0      0  a2  a1  a0",
11544                           "  i   i   i   i      i   i   i   i";
11546         writepage       = "  1   1   0   0      0   0   1   0",
11547                           "  0   0   x   x    a11 a10  a9  a8",
11548                           " a7  a6  a5  a4     a3   0   0   0",
11549                           "  x   x   x   x      x   x   x   x";
11551         mode            = 0x41;
11552         delay           = 10;
11553         blocksize       = 8;
11554         readsize        = 256;
11555       ;
11557     memory "flash"
11558         paged           = yes;
11559         size            = 131072;
11560         page_size       = 256;
11561         num_pages       = 512;
11562         min_write_delay = 4500;
11563         max_write_delay = 4500;
11564         readback_p1     = 0x00;
11565         readback_p2     = 0x00;
11566         read_lo         = "  0   0   1   0      0   0   0   0",
11567                           "a15 a14 a13 a12    a11 a10  a9  a8",
11568                           " a7  a6  a5  a4     a3  a2  a1  a0",
11569                           "  o   o   o   o      o   o   o   o";
11571         read_hi         = "  0   0   1   0      1   0   0   0",
11572                           "a15 a14 a13 a12    a11 a10  a9  a8",
11573                           " a7  a6  a5  a4     a3  a2  a1  a0",
11574                           "  o   o   o   o      o   o   o   o";
11576         loadpage_lo     = "  0   1   0   0      0   0   0   0",
11577                           "  x   x   x   x      x   x   x   x",
11578                           "  x  a6  a5  a4     a3  a2  a1  a0",
11579                           "  i   i   i   i      i   i   i   i";
11581         loadpage_hi     = "  0   1   0   0      1   0   0   0",
11582                           "  x   x   x   x      x   x   x   x",
11583                           "  x  a6  a5  a4     a3  a2  a1  a0",
11584                           "  i   i   i   i      i   i   i   i";
11586         writepage       = "  0   1   0   0      1   1   0   0",
11587                           "a15 a14 a13 a12    a11 a10  a9  a8",
11588                           " a7   x   x   x      x   x   x   x",
11589                           "  x   x   x   x      x   x   x   x";
11591         mode            = 0x41;
11592         delay           = 10;
11593         blocksize       = 256;
11594         readsize        = 256;
11595       ;
11597     memory "lfuse"
11598         size            = 1;
11599         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11600                           "x x x x  x x x x  i i i i  i i i i";
11602         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11603                           "x x x x  x x x x  o o o o  o o o o";
11604         min_write_delay = 9000;
11605         max_write_delay = 9000;
11606       ;
11608     memory "hfuse"
11609         size            = 1;
11610         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11611                           "x x x x  x x x x  i i i i  i i i i";
11613         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
11614                           "x x x x  x x x x  o o o o  o o o o";
11615         min_write_delay = 9000;
11616         max_write_delay = 9000;
11617       ;
11619     memory "efuse"
11620         size            = 1;
11621         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
11622                           "x x x x  x x x x  x x x x  x i i i";
11624         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
11625                           "x x x x  x x x x  o o o o  o o o o";
11626         min_write_delay = 9000;
11627         max_write_delay = 9000;
11628       ;
11630     memory "lock"
11631         size            = 1;
11632         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
11633                           "x x x x  x x x x   x x o o  o o o o";
11635         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
11636                           "x x x x  x x x x   1 1 i i  i i i i";
11637         min_write_delay = 9000;
11638         max_write_delay = 9000;
11639       ;
11641     memory "calibration"
11642         size            = 1;
11643         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
11644                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
11645       ;
11647     memory "signature"
11648         size            = 3;
11649         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
11650                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
11651       ;
11652   ;
11654 #------------------------------------------------------------
11655 # ATmega2560
11656 #------------------------------------------------------------
11658 part
11659     id               = "m2560";
11660     desc             = "ATMEGA2560";
11661     signature        = 0x1e 0x98 0x01;
11662     has_jtag         = yes;
11663 #    stk500_devcode   = 0xB2;
11664 #    avr910_devcode   = 0x43;
11665     chip_erase_delay = 9000;
11666     pagel            = 0xD7;
11667     bs2              = 0xA0;
11668     reset            = dedicated;
11669     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
11670                        "x x x x  x x x x    x x x x  x x x x";
11672     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
11673                        "x x x x  x x x x    x x x x  x x x x";
11675     timeout             = 200;
11676     stabdelay           = 100;
11677     cmdexedelay         = 25;
11678     synchloops          = 32;
11679     bytedelay           = 0;
11680     pollindex           = 3;
11681     pollvalue           = 0x53;
11682     predelay            = 1;
11683     postdelay           = 1;
11684     pollmethod          = 1;
11686     pp_controlstack     =
11687         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
11688         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
11689         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
11690         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
11691     hventerstabdelay    = 100;
11692     progmodedelay       = 0;
11693     latchcycles         = 5;
11694     togglevtg           = 1;
11695     poweroffdelay       = 15;
11696     resetdelayms        = 1;
11697     resetdelayus        = 0;
11698     hvleavestabdelay    = 15;
11699     chiperasepulsewidth = 0;
11700     chiperasepolltimeout = 10;
11701     programfusepulsewidth = 0;
11702     programfusepolltimeout = 5;
11703     programlockpulsewidth = 0;
11704     programlockpolltimeout = 5;
11706     idr                 = 0x31;
11707     spmcr               = 0x57;
11708     rampz               = 0x3b;
11709     allowfullpagebitstream = no;
11711     memory "eeprom"
11712         paged           = no; /* leave this "no" */
11713         page_size       = 8;  /* for parallel programming */
11714         size            = 4096;
11715         min_write_delay = 9000;
11716         max_write_delay = 9000;
11717         readback_p1     = 0x00;
11718         readback_p2     = 0x00;
11719         read            = "  1   0   1   0      0   0   0   0",
11720                           "  x   x   x   x    a11 a10  a9  a8",
11721                           " a7  a6  a5  a4     a3  a2  a1  a0",
11722                           "  o   o   o   o      o   o   o   o";
11724         write           = "  1   1   0   0      0   0   0   0",
11725                           "  x   x   x   x    a11 a10  a9  a8",
11726                           " a7  a6  a5  a4     a3  a2  a1  a0", 
11727                           "  i   i   i   i      i   i   i   i";
11729         loadpage_lo     = "  1   1   0   0      0   0   0   1",
11730                           "  0   0   0   0      0   0   0   0",
11731                           "  0   0   0   0      0  a2  a1  a0",
11732                           "  i   i   i   i      i   i   i   i";
11734         writepage       = "  1   1   0   0      0   0   1   0",
11735                           "  0   0   x   x    a11 a10  a9  a8",
11736                           " a7  a6  a5  a4     a3   0   0   0",
11737                           "  x   x   x   x      x   x   x   x";
11739         mode            = 0x41;
11740         delay           = 10;
11741         blocksize       = 8;
11742         readsize        = 256;
11743       ;
11745     memory "flash"
11746         paged           = yes;
11747         size            = 262144;
11748         page_size       = 256;
11749         num_pages       = 1024;
11750         min_write_delay = 4500;
11751         max_write_delay = 4500;
11752         readback_p1     = 0x00;
11753         readback_p2     = 0x00;
11754         read_lo         = "  0   0   1   0      0   0   0   0",
11755                           "a15 a14 a13 a12    a11 a10  a9  a8",
11756                           " a7  a6  a5  a4     a3  a2  a1  a0",
11757                           "  o   o   o   o      o   o   o   o";
11759         read_hi         = "  0   0   1   0      1   0   0   0",
11760                           "a15 a14 a13 a12    a11 a10  a9  a8",
11761                           " a7  a6  a5  a4     a3  a2  a1  a0",
11762                           "  o   o   o   o      o   o   o   o";
11764         loadpage_lo     = "  0   1   0   0      0   0   0   0",
11765                           "  x   x   x   x      x   x   x   x",
11766                           "  x  a6  a5  a4     a3  a2  a1  a0",
11767                           "  i   i   i   i      i   i   i   i";
11769         loadpage_hi     = "  0   1   0   0      1   0   0   0",
11770                           "  x   x   x   x      x   x   x   x",
11771                           "  x  a6  a5  a4     a3  a2  a1  a0",
11772                           "  i   i   i   i      i   i   i   i";
11774         writepage       = "  0   1   0   0      1   1   0   0",
11775                           "a15 a14 a13 a12    a11 a10  a9  a8",
11776                           " a7   x   x   x      x   x   x   x",
11777                           "  x   x   x   x      x   x   x   x";
11779         load_ext_addr   = "  0   1   0   0      1   1   0   1",
11780                           "  0   0   0   0      0   0   0   0",
11781                           "  0   0   0   0      0   0   0 a16",
11782                           "  0   0   0   0      0   0   0   0";
11784         mode            = 0x41;
11785         delay           = 10;
11786         blocksize       = 256;
11787         readsize        = 256;
11788       ;
11790     memory "lfuse"
11791         size            = 1;
11792         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11793                           "x x x x  x x x x  i i i i  i i i i";
11795         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11796                           "x x x x  x x x x  o o o o  o o o o";
11797         min_write_delay = 9000;
11798         max_write_delay = 9000;
11799       ;
11801     memory "hfuse"
11802         size            = 1;
11803         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11804                           "x x x x  x x x x  i i i i  i i i i";
11806         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
11807                           "x x x x  x x x x  o o o o  o o o o";
11808         min_write_delay = 9000;
11809         max_write_delay = 9000;
11810       ;
11812     memory "efuse"
11813         size            = 1;
11814         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
11815                           "x x x x  x x x x  x x x x  x i i i";
11817         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
11818                           "x x x x  x x x x  o o o o  o o o o";
11819         min_write_delay = 9000;
11820         max_write_delay = 9000;
11821       ;
11823     memory "lock"
11824         size            = 1;
11825         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
11826                           "x x x x  x x x x   x x o o  o o o o";
11828         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
11829                           "x x x x  x x x x   1 1 i i  i i i i";
11830         min_write_delay = 9000;
11831         max_write_delay = 9000;
11832       ;
11834     memory "calibration"
11835         size            = 1;
11836         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
11837                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
11838       ;
11840     memory "signature"
11841         size            = 3;
11842         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
11843                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
11844       ;
11845   ;
11847 #------------------------------------------------------------
11848 # ATmega2561
11849 #------------------------------------------------------------
11851 part
11852     id               = "m2561";
11853     desc             = "ATMEGA2561";
11854     signature        = 0x1e 0x98 0x02;
11855     has_jtag         = yes;
11856 #    stk500_devcode   = 0xB2;
11857 #    avr910_devcode   = 0x43;
11858     chip_erase_delay = 9000;
11859     pagel            = 0xD7;
11860     bs2              = 0xA0;
11861     reset            = dedicated;
11862     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
11863                        "x x x x  x x x x    x x x x  x x x x";
11865     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
11866                        "x x x x  x x x x    x x x x  x x x x";
11868     timeout             = 200;
11869     stabdelay           = 100;
11870     cmdexedelay         = 25;
11871     synchloops          = 32;
11872     bytedelay           = 0;
11873     pollindex           = 3;
11874     pollvalue           = 0x53;
11875     predelay            = 1;
11876     postdelay           = 1;
11877     pollmethod          = 1;
11879     pp_controlstack     =
11880         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
11881         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
11882         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
11883         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
11884     hventerstabdelay    = 100;
11885     progmodedelay       = 0;
11886     latchcycles         = 5;
11887     togglevtg           = 1;
11888     poweroffdelay       = 15;
11889     resetdelayms        = 1;
11890     resetdelayus        = 0;
11891     hvleavestabdelay    = 15;
11892     chiperasepulsewidth = 0;
11893     chiperasepolltimeout = 10;
11894     programfusepulsewidth = 0;
11895     programfusepolltimeout = 5;
11896     programlockpulsewidth = 0;
11897     programlockpolltimeout = 5;
11899     idr                 = 0x31;
11900     spmcr               = 0x57;
11901     rampz               = 0x3b;
11902     allowfullpagebitstream = no;
11904     memory "eeprom"
11905         paged           = no; /* leave this "no" */
11906         page_size       = 8;  /* for parallel programming */
11907         size            = 4096;
11908         min_write_delay = 9000;
11909         max_write_delay = 9000;
11910         readback_p1     = 0x00;
11911         readback_p2     = 0x00;
11912         read            = "  1   0   1   0      0   0   0   0",
11913                           "  x   x   x   x    a11 a10  a9  a8",
11914                           " a7  a6  a5  a4     a3  a2  a1  a0",
11915                           "  o   o   o   o      o   o   o   o";
11917         write           = "  1   1   0   0      0   0   0   0",
11918                           "  x   x   x   x    a11 a10  a9  a8",
11919                           " a7  a6  a5  a4     a3  a2  a1  a0", 
11920                           "  i   i   i   i      i   i   i   i";
11922         loadpage_lo     = "  1   1   0   0      0   0   0   1",
11923                           "  0   0   0   0      0   0   0   0",
11924                           "  0   0   0   0      0  a2  a1  a0",
11925                           "  i   i   i   i      i   i   i   i";
11927         writepage       = "  1   1   0   0      0   0   1   0",
11928                           "  0   0   x   x    a11 a10  a9  a8",
11929                           " a7  a6  a5  a4     a3   0   0   0",
11930                           "  x   x   x   x      x   x   x   x";
11932         mode            = 0x41;
11933         delay           = 10;
11934         blocksize       = 8;
11935         readsize        = 256;
11936       ;
11938     memory "flash"
11939         paged           = yes;
11940         size            = 262144;
11941         page_size       = 256;
11942         num_pages       = 1024;
11943         min_write_delay = 4500;
11944         max_write_delay = 4500;
11945         readback_p1     = 0x00;
11946         readback_p2     = 0x00;
11947         read_lo         = "  0   0   1   0      0   0   0   0",
11948                           "a15 a14 a13 a12    a11 a10  a9  a8",
11949                           " a7  a6  a5  a4     a3  a2  a1  a0",
11950                           "  o   o   o   o      o   o   o   o";
11952         read_hi         = "  0   0   1   0      1   0   0   0",
11953                           "a15 a14 a13 a12    a11 a10  a9  a8",
11954                           " a7  a6  a5  a4     a3  a2  a1  a0",
11955                           "  o   o   o   o      o   o   o   o";
11957         loadpage_lo     = "  0   1   0   0      0   0   0   0",
11958                           "  x   x   x   x      x   x   x   x",
11959                           "  x  a6  a5  a4     a3  a2  a1  a0",
11960                           "  i   i   i   i      i   i   i   i";
11962         loadpage_hi     = "  0   1   0   0      1   0   0   0",
11963                           "  x   x   x   x      x   x   x   x",
11964                           "  x  a6  a5  a4     a3  a2  a1  a0",
11965                           "  i   i   i   i      i   i   i   i";
11967         writepage       = "  0   1   0   0      1   1   0   0",
11968                           "a15 a14 a13 a12    a11 a10  a9  a8",
11969                           " a7   x   x   x      x   x   x   x",
11970                           "  x   x   x   x      x   x   x   x";
11972         load_ext_addr   = "  0   1   0   0      1   1   0   1",
11973                           "  0   0   0   0      0   0   0   0",
11974                           "  0   0   0   0      0   0   0 a16",
11975                           "  0   0   0   0      0   0   0   0";
11977         mode            = 0x41;
11978         delay           = 10;
11979         blocksize       = 256;
11980         readsize        = 256;
11981       ;
11983     memory "lfuse"
11984         size            = 1;
11985         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
11986                           "x x x x  x x x x  i i i i  i i i i";
11988         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
11989                           "x x x x  x x x x  o o o o  o o o o";
11990         min_write_delay = 9000;
11991         max_write_delay = 9000;
11992       ;
11994     memory "hfuse"
11995         size            = 1;
11996         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
11997                           "x x x x  x x x x  i i i i  i i i i";
11999         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12000                           "x x x x  x x x x  o o o o  o o o o";
12001         min_write_delay = 9000;
12002         max_write_delay = 9000;
12003       ;
12005     memory "efuse"
12006         size            = 1;
12007         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12008                           "x x x x  x x x x  x x x x  x i i i";
12010         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12011                           "x x x x  x x x x  o o o o  o o o o";
12012         min_write_delay = 9000;
12013         max_write_delay = 9000;
12014       ;
12016     memory "lock"
12017         size            = 1;
12018         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
12019                           "x x x x  x x x x   x x o o  o o o o";
12021         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
12022                           "x x x x  x x x x   1 1 i i  i i i i";
12023         min_write_delay = 9000;
12024         max_write_delay = 9000;
12025       ;
12027     memory "calibration"
12028         size            = 1;
12029         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
12030                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
12031       ;
12033     memory "signature"
12034         size            = 3;
12035         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
12036                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12037       ;
12038   ;
12040 #------------------------------------------------------------
12041 # ATmega128RFA1
12042 #------------------------------------------------------------
12043 # Identical to ATmega2561 but half the ROM
12045 part
12046     id               = "m128rfa1";
12047     desc             = "ATMEGA128RFA1";
12048     signature        = 0x1e 0xa7 0x01;
12049     has_jtag         = yes;
12050 #    stk500_devcode   = 0xB2;
12051 #    avr910_devcode   = 0x43;
12052     chip_erase_delay = 55000;
12053     pagel            = 0xD7;
12054     bs2              = 0xE2;
12055     reset            = dedicated;
12056     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12057                        "x x x x  x x x x    x x x x  x x x x";
12059     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
12060                        "x x x x  x x x x    x x x x  x x x x";
12062     timeout             = 200;
12063     stabdelay           = 100;
12064     cmdexedelay         = 25;
12065     synchloops          = 32;
12066     bytedelay           = 0;
12067     pollindex           = 3;
12068     pollvalue           = 0x53;
12069     predelay            = 1;
12070     postdelay           = 1;
12071     pollmethod          = 1;
12073     pp_controlstack     =
12074         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
12075         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
12076         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
12077         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
12078     hventerstabdelay    = 100;
12079     progmodedelay       = 0;
12080     latchcycles         = 5;
12081     togglevtg           = 1;
12082     poweroffdelay       = 15;
12083     resetdelayms        = 1;
12084     resetdelayus        = 0;
12085     hvleavestabdelay    = 15;
12086     chiperasepulsewidth = 0;
12087     chiperasepolltimeout = 10;
12088     programfusepulsewidth = 0;
12089     programfusepolltimeout = 5;
12090     programlockpulsewidth = 0;
12091     programlockpolltimeout = 5;
12093     idr                 = 0x31;
12094     spmcr               = 0x57;
12095     rampz               = 0x3b;
12096     allowfullpagebitstream = no;
12098     memory "eeprom"
12099         paged           = no; /* leave this "no" */
12100         page_size       = 8;  /* for parallel programming */
12101         size            = 4096;
12102         min_write_delay = 50000;
12103         max_write_delay = 50000;
12104         readback_p1     = 0x00;
12105         readback_p2     = 0x00;
12106         read            = "  1   0   1   0      0   0   0   0",
12107                           "  x   x   x   x    a11 a10  a9  a8",
12108                           " a7  a6  a5  a4     a3  a2  a1  a0",
12109                           "  o   o   o   o      o   o   o   o";
12111         write           = "  1   1   0   0      0   0   0   0",
12112                           "  x   x   x   x    a11 a10  a9  a8",
12113                           " a7  a6  a5  a4     a3  a2  a1  a0", 
12114                           "  i   i   i   i      i   i   i   i";
12116         loadpage_lo     = "  1   1   0   0      0   0   0   1",
12117                           "  0   0   0   0      0   0   0   0",
12118                           "  0   0   0   0      0  a2  a1  a0",
12119                           "  i   i   i   i      i   i   i   i";
12121         writepage       = "  1   1   0   0      0   0   1   0",
12122                           "  0   0   x   x    a11 a10  a9  a8",
12123                           " a7  a6  a5  a4     a3   0   0   0",
12124                           "  x   x   x   x      x   x   x   x";
12126         mode            = 0x41;
12127         delay           = 10;
12128         blocksize       = 8;
12129         readsize        = 256;
12130       ;
12132     memory "flash"
12133         paged           = yes;
12134         size            = 131072;
12135         page_size       = 256;
12136         num_pages       = 512;
12137         min_write_delay = 50000;
12138         max_write_delay = 50000;
12139         readback_p1     = 0x00;
12140         readback_p2     = 0x00;
12141         read_lo         = "  0   0   1   0      0   0   0   0",
12142                           "a15 a14 a13 a12    a11 a10  a9  a8",
12143                           " a7  a6  a5  a4     a3  a2  a1  a0",
12144                           "  o   o   o   o      o   o   o   o";
12146         read_hi         = "  0   0   1   0      1   0   0   0",
12147                           "a15 a14 a13 a12    a11 a10  a9  a8",
12148                           " a7  a6  a5  a4     a3  a2  a1  a0",
12149                           "  o   o   o   o      o   o   o   o";
12151         loadpage_lo     = "  0   1   0   0      0   0   0   0",
12152                           "  x   x   x   x      x   x   x   x",
12153                           "  x  a6  a5  a4     a3  a2  a1  a0",
12154                           "  i   i   i   i      i   i   i   i";
12156         loadpage_hi     = "  0   1   0   0      1   0   0   0",
12157                           "  x   x   x   x      x   x   x   x",
12158                           "  x  a6  a5  a4     a3  a2  a1  a0",
12159                           "  i   i   i   i      i   i   i   i";
12161         writepage       = "  0   1   0   0      1   1   0   0",
12162                           "a15 a14 a13 a12    a11 a10  a9  a8",
12163                           " a7   x   x   x      x   x   x   x",
12164                           "  x   x   x   x      x   x   x   x";
12166         mode            = 0x41;
12167         delay           = 20;
12168         blocksize       = 256;
12169         readsize        = 256;
12170       ;
12172     memory "lfuse"
12173         size            = 1;
12174         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
12175                           "x x x x  x x x x  i i i i  i i i i";
12177         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
12178                           "x x x x  x x x x  o o o o  o o o o";
12179         min_write_delay = 9000;
12180         max_write_delay = 9000;
12181       ;
12183     memory "hfuse"
12184         size            = 1;
12185         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
12186                           "x x x x  x x x x  i i i i  i i i i";
12188         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12189                           "x x x x  x x x x  o o o o  o o o o";
12190         min_write_delay = 9000;
12191         max_write_delay = 9000;
12192       ;
12194     memory "efuse"
12195         size            = 1;
12196         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12197                           "x x x x  x x x x  x x x x  x i i i";
12199         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12200                           "x x x x  x x x x  o o o o  o o o o";
12201         min_write_delay = 9000;
12202         max_write_delay = 9000;
12203       ;
12205     memory "lock"
12206         size            = 1;
12207         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
12208                           "x x x x  x x x x   x x o o  o o o o";
12210         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
12211                           "x x x x  x x x x   1 1 i i  i i i i";
12212         min_write_delay = 9000;
12213         max_write_delay = 9000;
12214       ;
12216     memory "calibration"
12217         size            = 1;
12218         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
12219                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
12220       ;
12222     memory "signature"
12223         size            = 3;
12224         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
12225                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12226       ;
12227   ;
12229 #------------------------------------------------------------
12230 # ATtiny24
12231 #------------------------------------------------------------
12233 part
12234      id            = "t24";
12235      desc          = "ATtiny24";
12236      has_debugwire = yes;
12237      flash_instr   = 0xB4, 0x07, 0x17;
12238      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
12239                      0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
12240                      0x99, 0xE1, 0xBB, 0xAC;
12241 ## no STK500 devcode in XML file, use the ATtiny45 one
12242      stk500_devcode   = 0x14;
12243 ##  avr910_devcode   = ?;
12244 ##  Try the AT90S2313 devcode:
12245      avr910_devcode   = 0x20;
12246      signature        = 0x1e 0x91 0x0b;
12247      reset            = io;
12248      chip_erase_delay = 4500;
12250      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12251                         "x x x x  x x x x    x x x x  x x x x";
12253      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
12254                         "x x x x  x x x x    x x x x  x x x x";
12256     timeout             = 200;
12257     stabdelay           = 100;
12258     cmdexedelay         = 25;
12259     synchloops          = 32;
12260     bytedelay           = 0;
12261     pollindex           = 3;
12262     pollvalue           = 0x53;
12263     predelay            = 1;
12264     postdelay           = 1;
12265     pollmethod          = 1;
12267     hvsp_controlstack   =
12268         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
12269         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
12270         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
12271         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
12272     hventerstabdelay    = 100;
12273     hvspcmdexedelay     = 0;
12274     synchcycles         = 6;
12275     latchcycles         = 1;
12276     togglevtg           = 1;
12277     poweroffdelay       = 25;
12278     resetdelayms        = 0;
12279     resetdelayus        = 70;
12280     hvleavestabdelay    = 100;
12281     resetdelay          = 25;
12282     chiperasepolltimeout = 40;
12283     chiperasetime       = 0;
12284     programfusepolltimeout = 25;
12285     programlockpolltimeout = 25;
12287      memory "eeprom"
12288          size            = 128;
12289         paged           = no;
12290         page_size       = 4;
12291          min_write_delay = 4000;
12292          max_write_delay = 4500;
12293          readback_p1     = 0xff;
12294          readback_p2     = 0xff;
12295          read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
12296                            "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
12298          write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
12299                            "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
12301         loadpage_lo     = "  1   1   0   0      0   0   0   1",
12302                           "  0   0   0   0      0   0   0   0",
12303                           "  0   0   0   0      0   0  a1  a0",
12304                           "  i   i   i   i      i   i   i   i";
12306         writepage       = "  1   1   0   0      0   0   1   0",
12307                           "  0   0   x   x      x   x   x   x",
12308                           "  x  a6  a5  a4     a3  a2   0   0",
12309                           "  x   x   x   x      x   x   x   x";
12311         mode            = 0x41;
12312         delay           = 6;
12313         blocksize       = 4;
12314         readsize        = 256;
12315        ;
12316      memory "flash"
12317          paged           = yes;
12318          size            = 2048;
12319          page_size       = 32;
12320          num_pages       = 64;
12321          min_write_delay = 4500;
12322          max_write_delay = 4500;
12323          readback_p1     = 0xff;
12324          readback_p2     = 0xff;
12325          read_lo         = "  0   0   1   0    0   0   0   0",
12326                            "  0   0   0   0    0   0  a9  a8",
12327                            " a7  a6  a5  a4   a3  a2  a1  a0",
12328                            "  o   o   o   o    o   o   o   o";
12330          read_hi         = "  0   0   1   0    1   0   0   0",
12331                            "  0   0   0   0    0   0  a9  a8",
12332                            " a7  a6  a5  a4   a3  a2  a1  a0",
12333                            "  o   o   o   o    o   o   o   o";
12335          loadpage_lo     = "  0   1   0   0    0   0   0   0",
12336                            "  0   0   0   x    x   x   x   x",
12337                            "  x   x   x   x   a3  a2  a1  a0",
12338                            "  i   i   i   i    i   i   i   i";
12340          loadpage_hi     = "  0   1   0   0    1   0   0   0",
12341                            "  0   0   0   x    x   x   x   x",
12342                            "  x   x   x   x   a3  a2  a1  a0",
12343                            "  i   i   i   i    i   i   i   i";
12345          writepage       = "  0  1  0  0   1  1  0  0",
12346                            "  0  0  0  0   0  0 a9 a8",
12347                            " a7 a6 a5 a4   x  x  x  x",
12348                            "  x  x  x  x   x  x  x  x";
12350         mode            = 0x41;
12351         delay           = 6;
12352         blocksize       = 32;
12353         readsize        = 256;
12354        ;
12355 #   ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B.
12356      memory "signature"
12357          size            = 3;
12358          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
12359                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12360        ;
12361      memory "lock"
12362          size            = 1;
12363          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
12364                            "x x x x  x x x x  x x x x  x x i i";
12365          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
12366                            "0 0 0 0  0 0 0 0  o o o o  o o o o";
12367         min_write_delay = 9000;
12368         max_write_delay = 9000;
12369        ;
12371      memory "lfuse"
12372          size            = 1;
12373          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
12374                            "x x x x  x x x x  i i i i  i i i i";
12376          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
12377                            "x x x x  x x x x  o o o o  o o o o";
12378         min_write_delay = 9000;
12379         max_write_delay = 9000;
12380        ;
12382      memory "hfuse"
12383          size            = 1;
12384          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
12385                            "x x x x  x x x x  i i i i  i i i i";
12387          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12388                            "x x x x  x x x x  o o o o  o o o o";
12389         min_write_delay = 9000;
12390         max_write_delay = 9000;
12391        ;
12393      memory "efuse"
12394          size            = 1;
12395          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12396                            "x x x x  x x x x  x x x x  x x x i";
12398          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12399                            "x x x x  x x x x  o o o o  o o o o";
12400         min_write_delay = 9000;
12401         max_write_delay = 9000;
12402      ;
12404      memory "calibration"
12405          size            = 1;
12406          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
12407                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
12408      ;
12409   ;
12411 #------------------------------------------------------------
12412 # ATtiny44
12413 #------------------------------------------------------------
12415 part
12416      id            = "t44";
12417      desc          = "ATtiny44";
12418      has_debugwire = yes;
12419      flash_instr   = 0xB4, 0x07, 0x17;
12420      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
12421                      0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
12422                      0x99, 0xE1, 0xBB, 0xAC;
12423 ## no STK500 devcode in XML file, use the ATtiny45 one
12424      stk500_devcode   = 0x14;
12425 ##  avr910_devcode   = ?;
12426 ##  Try the AT90S2313 devcode:
12427      avr910_devcode   = 0x20;
12428      signature        = 0x1e 0x92 0x07;
12429      reset            = io;
12430      chip_erase_delay = 4500;
12432      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12433                         "x x x x  x x x x    x x x x  x x x x";
12435      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
12436                         "x x x x  x x x x    x x x x  x x x x";
12438     timeout             = 200;
12439     stabdelay           = 100;
12440     cmdexedelay         = 25;
12441     synchloops          = 32;
12442     bytedelay           = 0;
12443     pollindex           = 3;
12444     pollvalue           = 0x53;
12445     predelay            = 1;
12446     postdelay           = 1;
12447     pollmethod          = 1;
12449     hvsp_controlstack   =
12450         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
12451         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
12452         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
12453         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
12454     hventerstabdelay    = 100;
12455     hvspcmdexedelay     = 0;
12456     synchcycles         = 6;
12457     latchcycles         = 1;
12458     togglevtg           = 1;
12459     poweroffdelay       = 25;
12460     resetdelayms        = 0;
12461     resetdelayus        = 70;
12462     hvleavestabdelay    = 100;
12463     resetdelay          = 25;
12464     chiperasepolltimeout = 40;
12465     chiperasetime       = 0;
12466     programfusepolltimeout = 25;
12467     programlockpolltimeout = 25;
12469      memory "eeprom"
12470          size            = 256;
12471         paged           = no;
12472         page_size       = 4;
12473          min_write_delay = 4000;
12474          max_write_delay = 4500;
12475          readback_p1     = 0xff;
12476          readback_p2     = 0xff;
12477          read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
12478                            "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
12480          write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
12481                            "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
12483         loadpage_lo     = "  1   1   0   0      0   0   0   1",
12484                           "  0   0   0   0      0   0   0   0",
12485                           "  0   0   0   0      0   0  a1  a0",
12486                           "  i   i   i   i      i   i   i   i";
12488         writepage       = "  1   1   0   0      0   0   1   0",
12489                           "  0   0   x   x      x   x   x   x",
12490                           "  x  a6  a5  a4     a3  a2   0   0",
12491                           "  x   x   x   x      x   x   x   x";
12493         mode            = 0x41;
12494         delay           = 6;
12495         blocksize       = 4;
12496         readsize        = 256;
12497        ;
12498      memory "flash"
12499          paged           = yes;
12500          size            = 4096;
12501          page_size       = 64;
12502          num_pages       = 64;
12503          min_write_delay = 4500;
12504          max_write_delay = 4500;
12505          readback_p1     = 0xff;
12506          readback_p2     = 0xff;
12507          read_lo         = "  0   0   1   0    0   0   0   0",
12508                            "  0   0   0   0    0  a10 a9  a8",
12509                            " a7  a6  a5  a4   a3  a2  a1  a0",
12510                            "  o   o   o   o    o   o   o   o";
12512          read_hi         = "  0   0   1   0    1   0   0   0",
12513                            "  0   0   0   0    0  a10 a9  a8",
12514                            " a7  a6  a5  a4   a3  a2  a1  a0",
12515                            "  o   o   o   o    o   o   o   o";
12517          loadpage_lo     = "  0   1   0   0    0   0   0   0",
12518                            "  0   0   0   x    x   x   x   x",
12519                            "  x   x   x  a4   a3  a2  a1  a0",
12520                            "  i   i   i   i    i   i   i   i";
12522          loadpage_hi     = "  0   1   0   0    1   0   0   0",
12523                            "  0   0   0   x    x   x   x   x",
12524                            "  x   x   x  a4   a3  a2  a1  a0",
12525                            "  i   i   i   i    i   i   i   i";
12527          writepage       = "  0  1  0  0   1  1  0  0",
12528                            "  0  0  0  0   0 a10 a9 a8",
12529                            " a7 a6 a5  x   x  x  x  x",
12530                            "  x  x  x  x   x  x  x  x";
12532         mode            = 0x41;
12533         delay           = 6;
12534         blocksize       = 32;
12535         readsize        = 256;
12536        ;
12537 #   ATtiny44 has Signature Bytes: 0x1E 0x92 0x07.
12538      memory "signature"
12539          size            = 3;
12540          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
12541                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12542        ;
12543      memory "lock"
12544          size            = 1;
12545          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
12546                            "x x x x  x x x x  x x x x  x x i i";
12547          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
12548                            "0 0 0 0  0 0 0 0  o o o o  o o o o";
12549         min_write_delay = 9000;
12550         max_write_delay = 9000;
12551        ;
12553      memory "lfuse"
12554          size            = 1;
12555          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
12556                            "x x x x  x x x x  i i i i  i i i i";
12558          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
12559                            "x x x x  x x x x  o o o o  o o o o";
12560         min_write_delay = 9000;
12561         max_write_delay = 9000;
12562        ;
12564      memory "hfuse"
12565          size            = 1;
12566          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
12567                            "x x x x  x x x x  i i i i  i i i i";
12569          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12570                            "x x x x  x x x x  o o o o  o o o o";
12571         min_write_delay = 9000;
12572         max_write_delay = 9000;
12573        ;
12575      memory "efuse"
12576          size            = 1;
12577          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12578                            "x x x x  x x x x  x x x x  x x x i";
12580          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12581                            "x x x x  x x x x  o o o o  o o o o";
12582         min_write_delay = 9000;
12583         max_write_delay = 9000;
12584      ;
12586      memory "calibration"
12587          size            = 1;
12588          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
12589                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
12590      ;
12591   ;
12593 #------------------------------------------------------------
12594 # ATtiny84
12595 #------------------------------------------------------------
12597 part
12598      id            = "t84";
12599      desc          = "ATtiny84";
12600      has_debugwire = yes;
12601      flash_instr   = 0xB4, 0x07, 0x17;
12602      eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
12603                      0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
12604                      0x99, 0xE1, 0xBB, 0xAC;
12605 ## no STK500 devcode in XML file, use the ATtiny45 one
12606      stk500_devcode   = 0x14;
12607 ##  avr910_devcode   = ?;
12608 ##  Try the AT90S2313 devcode:
12609      avr910_devcode   = 0x20;
12610      signature        = 0x1e 0x93 0x0c;
12611      reset            = io;
12612      chip_erase_delay = 4500;
12614      pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12615                         "x x x x  x x x x    x x x x  x x x x";
12617      chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
12618                         "x x x x  x x x x    x x x x  x x x x";
12620     timeout             = 200;
12621     stabdelay           = 100;
12622     cmdexedelay         = 25;
12623     synchloops          = 32;
12624     bytedelay           = 0;
12625     pollindex           = 3;
12626     pollvalue           = 0x53;
12627     predelay            = 1;
12628     postdelay           = 1;
12629     pollmethod          = 1;
12631     hvsp_controlstack   =
12632         0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
12633         0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
12634         0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
12635         0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
12636     hventerstabdelay    = 100;
12637     hvspcmdexedelay     = 0;
12638     synchcycles         = 6;
12639     latchcycles         = 1;
12640     togglevtg           = 1;
12641     poweroffdelay       = 25;
12642     resetdelayms        = 0;
12643     resetdelayus        = 70;
12644     hvleavestabdelay    = 100;
12645     resetdelay          = 25;
12646     chiperasepolltimeout = 40;
12647     chiperasetime       = 0;
12648     programfusepolltimeout = 25;
12649     programlockpolltimeout = 25;
12651      memory "eeprom"
12652          size            = 512;
12653         paged           = no;
12654         page_size       = 4;
12655          min_write_delay = 4000;
12656          max_write_delay = 4500;
12657          readback_p1     = 0xff;
12658          readback_p2     = 0xff;
12659          read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
12660                            "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
12662          write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
12663                            "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
12665         loadpage_lo     = "  1   1   0   0      0   0   0   1",
12666                           "  0   0   0   0      0   0   0   0",
12667                           "  0   0   0   0      0   0  a1  a0",
12668                           "  i   i   i   i      i   i   i   i";
12670         writepage       = "  1   1   0   0      0   0   1   0",
12671                           "  0   0   x   x      x   x   x   x",
12672                           "  x  a6  a5  a4     a3  a2   0   0",
12673                           "  x   x   x   x      x   x   x   x";
12675         mode            = 0x41;
12676         delay           = 6;
12677         blocksize       = 4;
12678         readsize        = 256;
12679        ;
12680      memory "flash"
12681          paged           = yes;
12682          size            = 8192;
12683          page_size       = 64;
12684          num_pages       = 128;
12685          min_write_delay = 4500;
12686          max_write_delay = 4500;
12687          readback_p1     = 0xff;
12688          readback_p2     = 0xff;
12689          read_lo         = "  0   0   1   0    0   0   0   0",
12690                            "  0   0   0   0  a11 a10  a9  a8",
12691                            " a7  a6  a5  a4   a3  a2  a1  a0",
12692                            "  o   o   o   o    o   o   o   o";
12694          read_hi         = "  0   0   1   0    1   0   0   0",
12695                            "  0   0   0   0  a11 a10  a9  a8",
12696                            " a7  a6  a5  a4   a3  a2  a1  a0",
12697                            "  o   o   o   o    o   o   o   o";
12699          loadpage_lo     = "  0   1   0   0    0   0   0   0",
12700                            "  0   0   0   x    x   x   x   x",
12701                            "  x   x   x  a4   a3  a2  a1  a0",
12702                            "  i   i   i   i    i   i   i   i";
12704          loadpage_hi     = "  0   1   0   0    1   0   0   0",
12705                            "  0   0   0   x    x   x   x   x",
12706                            "  x   x   x  a4   a3  a2  a1  a0",
12707                            "  i   i   i   i    i   i   i   i";
12709          writepage       = "  0  1  0  0   1   1   0  0",
12710                            "  0  0  0  0  a11 a10 a9 a8",
12711                            " a7 a6 a5  x   x  x  x  x",
12712                            "  x  x  x  x   x  x  x  x";
12714         mode            = 0x41;
12715         delay           = 6;
12716         blocksize       = 32;
12717         readsize        = 256;
12718        ;
12719 #   ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C.
12720      memory "signature"
12721          size            = 3;
12722          read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
12723                            "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12724        ;
12726      memory "lock"
12727          size            = 1;
12728          write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
12729                            "x x x x  x x x x  x x x x  x x i i";
12730          read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
12731                            "0 0 0 0  0 0 0 0  o o o o  o o o o";
12732         min_write_delay = 9000;
12733         max_write_delay = 9000;
12734        ;
12736      memory "lfuse"
12737          size            = 1;
12738          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
12739                            "x x x x  x x x x  i i i i  i i i i";
12741          read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
12742                            "x x x x  x x x x  o o o o  o o o o";
12743         min_write_delay = 9000;
12744         max_write_delay = 9000;
12745        ;
12747      memory "hfuse"
12748          size            = 1;
12749          write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
12750                            "x x x x  x x x x  i i i i  i i i i";
12752          read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12753                            "x x x x  x x x x  o o o o  o o o o";
12754         min_write_delay = 9000;
12755         max_write_delay = 9000;
12756        ;
12758      memory "efuse"
12759          size            = 1;
12760          write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12761                            "x x x x  x x x x  x x x x  x x x i";
12763          read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12764                            "x x x x  x x x x  o o o o  o o o o";
12765         min_write_delay = 9000;
12766         max_write_delay = 9000;
12767      ;
12769      memory "calibration"
12770          size            = 1;
12771          read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
12772                            "0  0  0  0   0  0  0  a0   o o o o  o o o o";
12773      ;
12774   ;
12776 #------------------------------------------------------------
12777 # ATmega32u4
12778 #------------------------------------------------------------
12780 part
12781     id               = "m32u4";
12782     desc             = "ATmega32U4";
12783     signature        = 0x1e 0x95 0x87;
12784     has_jtag         = yes;
12785 #    stk500_devcode   = 0xB2;
12786 #    avr910_devcode   = 0x43;
12787     chip_erase_delay = 9000;
12788     pagel            = 0xD7;
12789     bs2              = 0xA0;
12790     reset            = dedicated;
12791     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12792                        "x x x x  x x x x    x x x x  x x x x";
12794     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
12795                        "x x x x  x x x x    x x x x  x x x x";
12797     timeout             = 200;
12798     stabdelay           = 100;
12799     cmdexedelay         = 25;
12800     synchloops          = 32;
12801     bytedelay           = 0;
12802     pollindex           = 3;
12803     pollvalue           = 0x53;
12804     predelay            = 1;
12805     postdelay           = 1;
12806     pollmethod          = 1;
12808     pp_controlstack     =
12809         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
12810         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
12811         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
12812         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
12813     hventerstabdelay    = 100;
12814     progmodedelay       = 0;
12815     latchcycles         = 5;
12816     togglevtg           = 1;
12817     poweroffdelay       = 15;
12818     resetdelayms        = 1;
12819     resetdelayus        = 0;
12820     hvleavestabdelay    = 15;
12821     chiperasepulsewidth = 0;
12822     chiperasepolltimeout = 10;
12823     programfusepulsewidth = 0;
12824     programfusepolltimeout = 5;
12825     programlockpulsewidth = 0;
12826     programlockpolltimeout = 5;
12828     idr                 = 0x31;
12829     spmcr               = 0x57;
12830     rampz               = 0x3b;
12831     allowfullpagebitstream = no;
12833     memory "eeprom"
12834         paged           = no; /* leave this "no" */
12835         page_size       = 8;  /* for parallel programming */
12836         size            = 1024;
12837         min_write_delay = 9000;
12838         max_write_delay = 9000;
12839         readback_p1     = 0x00;
12840         readback_p2     = 0x00;
12841         read            = "  1   0   1   0      0   0   0   0",
12842                           "  x   x   x   x      x a10  a9  a8",
12843                           " a7  a6  a5  a4     a3  a2  a1  a0",
12844                           "  o   o   o   o      o   o   o   o";
12846         write           = "  1   1   0   0      0   0   0   0",
12847                           "  x   x   x   x      x a10  a9  a8",
12848                           " a7  a6  a5  a4     a3  a2  a1  a0", 
12849                           "  i   i   i   i      i   i   i   i";
12851         loadpage_lo     = "  1   1   0   0      0   0   0   1",
12852                           "  0   0   0   0      0   0   0   0",
12853                           "  0   0   0   0      0  a2  a1  a0",
12854                           "  i   i   i   i      i   i   i   i";
12856         writepage       = "  1   1   0   0      0   0   1   0",
12857                           "  0   0   x   x      x a10  a9  a8",
12858                           " a7  a6  a5  a4     a3   0   0   0",
12859                           "  x   x   x   x      x   x   x   x";
12861         mode            = 0x41;
12862         delay           = 10;
12863         blocksize       = 8;
12864         readsize        = 256;
12865       ;
12867     memory "flash"
12868         paged           = yes;
12869         size            = 32768;
12870         page_size       = 128;
12871         num_pages       = 256;
12872         min_write_delay = 4500;
12873         max_write_delay = 4500;
12874         readback_p1     = 0x00;
12875         readback_p2     = 0x00;
12876         read_lo         = "  0   0   1   0      0   0   0   0",
12877                           "  0 a14 a13 a12    a11 a10  a9  a8",
12878                           " a7  a6  a5  a4     a3  a2  a1  a0",
12879                           "  o   o   o   o      o   o   o   o";
12881         read_hi         = "  0   0   1   0      1   0   0   0",
12882                           "  0 a14 a13 a12    a11 a10  a9  a8",
12883                           " a7  a6  a5  a4     a3  a2  a1  a0",
12884                           "  o   o   o   o      o   o   o   o";
12886         loadpage_lo     = "  0   1   0   0      0   0   0   0",
12887                           "  x   x   x   x      x   x   x   x",
12888                           "  x   x  a5  a4     a3  a2  a1  a0",
12889                           "  i   i   i   i      i   i   i   i";
12891         loadpage_hi     = "  0   1   0   0      1   0   0   0",
12892                           "  x   x   x   x      x   x   x   x",
12893                           "  x   x  a5  a4     a3  a2  a1  a0",
12894                           "  i   i   i   i      i   i   i   i";
12896         writepage       = "  0   1   0   0      1   1   0   0",
12897                           " a15 a14 a13 a12    a11 a10  a9  a8",
12898                           " a7  a6   x   x      x   x   x   x",
12899                           "  x   x   x   x      x   x   x   x";
12901         mode            = 0x41;
12902         delay           = 6;
12903         blocksize       = 128;
12904         readsize        = 256;
12905       ;
12907     memory "lfuse"
12908         size            = 1;
12909         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
12910                           "x x x x  x x x x  i i i i  i i i i";
12912         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
12913                           "x x x x  x x x x  o o o o  o o o o";
12914         min_write_delay = 9000;
12915         max_write_delay = 9000;
12916       ;
12918     memory "hfuse"
12919         size            = 1;
12920         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
12921                           "x x x x  x x x x  i i i i  i i i i";
12923         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
12924                           "x x x x  x x x x  o o o o  o o o o";
12925         min_write_delay = 9000;
12926         max_write_delay = 9000;
12927       ;
12929     memory "efuse"
12930         size            = 1;
12931         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
12932                           "x x x x  x x x x  x x x x  i i i i";
12934         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
12935                           "x x x x  x x x x  o o o o  o o o o";
12936         min_write_delay = 9000;
12937         max_write_delay = 9000;
12938       ;
12940     memory "lock"
12941         size            = 1;
12942         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
12943                           "x x x x  x x x x   x x o o  o o o o";
12945         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
12946                           "x x x x  x x x x   1 1 i i  i i i i";
12947         min_write_delay = 9000;
12948         max_write_delay = 9000;
12949       ;
12951     memory "calibration"
12952         size            = 1;
12953         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
12954                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
12955       ;
12957     memory "signature"
12958         size            = 3;
12959         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
12960                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
12961       ;
12962   ;
12964 #------------------------------------------------------------
12965 # AT90USB646
12966 #------------------------------------------------------------
12968 part
12969     id               = "usb646";
12970     desc             = "AT90USB646";
12971     signature        = 0x1e 0x96 0x82;
12972     has_jtag         = yes;
12973 #    stk500_devcode   = 0xB2;
12974 #    avr910_devcode   = 0x43;
12975     chip_erase_delay = 9000;
12976     pagel            = 0xD7;
12977     bs2              = 0xA0;
12978     reset            = dedicated;
12979     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
12980                        "x x x x  x x x x    x x x x  x x x x";
12982     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
12983                        "x x x x  x x x x    x x x x  x x x x";
12985     timeout             = 200;
12986     stabdelay           = 100;
12987     cmdexedelay         = 25;
12988     synchloops          = 32;
12989     bytedelay           = 0;
12990     pollindex           = 3;
12991     pollvalue           = 0x53;
12992     predelay            = 1;
12993     postdelay           = 1;
12994     pollmethod          = 1;
12996     pp_controlstack     =
12997         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
12998         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
12999         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13000         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13001     hventerstabdelay    = 100;
13002     progmodedelay       = 0;
13003     latchcycles         = 5;
13004     togglevtg           = 1;
13005     poweroffdelay       = 15;
13006     resetdelayms        = 1;
13007     resetdelayus        = 0;
13008     hvleavestabdelay    = 15;
13009     chiperasepulsewidth = 0;
13010     chiperasepolltimeout = 10;
13011     programfusepulsewidth = 0;
13012     programfusepolltimeout = 5;
13013     programlockpulsewidth = 0;
13014     programlockpolltimeout = 5;
13016     idr                 = 0x31;
13017     spmcr               = 0x57;
13018     rampz               = 0x3b;
13019     allowfullpagebitstream = no;
13021     memory "eeprom"
13022         paged           = no; /* leave this "no" */
13023         page_size       = 8;  /* for parallel programming */
13024         size            = 2048;
13025         min_write_delay = 9000;
13026         max_write_delay = 9000;
13027         readback_p1     = 0x00;
13028         readback_p2     = 0x00;
13029         read            = "  1   0   1   0      0   0   0   0",
13030                           "  x   x   x   x      x a10  a9  a8",
13031                           " a7  a6  a5  a4     a3  a2  a1  a0",
13032                           "  o   o   o   o      o   o   o   o";
13034         write           = "  1   1   0   0      0   0   0   0",
13035                           "  x   x   x   x      x a10  a9  a8",
13036                           " a7  a6  a5  a4     a3  a2  a1  a0", 
13037                           "  i   i   i   i      i   i   i   i";
13039         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13040                           "  0   0   0   0      0   0   0   0",
13041                           "  0   0   0   0      0  a2  a1  a0",
13042                           "  i   i   i   i      i   i   i   i";
13044         writepage       = "  1   1   0   0      0   0   1   0",
13045                           "  0   0   x   x      x a10  a9  a8",
13046                           " a7  a6  a5  a4     a3   0   0   0",
13047                           "  x   x   x   x      x   x   x   x";
13049         mode            = 0x41;
13050         delay           = 10;
13051         blocksize       = 8;
13052         readsize        = 256;
13053       ;
13055     memory "flash"
13056         paged           = yes;
13057         size            = 65536;
13058         page_size       = 256;
13059         num_pages       = 256;
13060         min_write_delay = 4500;
13061         max_write_delay = 4500;
13062         readback_p1     = 0x00;
13063         readback_p2     = 0x00;
13064         read_lo         = "  0   0   1   0      0   0   0   0",
13065                           "  0 a14 a13 a12    a11 a10  a9  a8",
13066                           " a7  a6  a5  a4     a3  a2  a1  a0",
13067                           "  o   o   o   o      o   o   o   o";
13069         read_hi         = "  0   0   1   0      1   0   0   0",
13070                           "  0 a14 a13 a12    a11 a10  a9  a8",
13071                           " a7  a6  a5  a4     a3  a2  a1  a0",
13072                           "  o   o   o   o      o   o   o   o";
13074         loadpage_lo     = "  0   1   0   0      0   0   0   0",
13075                           "  x   x   x   x      x   x   x   x",
13076                           "  x  a6  a5  a4     a3  a2  a1  a0",
13077                           "  i   i   i   i      i   i   i   i";
13079         loadpage_hi     = "  0   1   0   0      1   0   0   0",
13080                           "  x   x   x   x      x   x   x   x",
13081                           "  x  a6  a5  a4     a3  a2  a1  a0",
13082                           "  i   i   i   i      i   i   i   i";
13084         writepage       = "  0   1   0   0      1   1   0   0",
13085                           "  0 a14 a13 a12    a11 a10  a9  a8",
13086                           " a7   x   x   x      x   x   x   x",
13087                           "  x   x   x   x      x   x   x   x";
13089         mode            = 0x41;
13090         delay           = 6;
13091         blocksize       = 256;
13092         readsize        = 256;
13093       ;
13095     memory "lfuse"
13096         size            = 1;
13097         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
13098                           "x x x x  x x x x  i i i i  i i i i";
13100         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
13101                           "x x x x  x x x x  o o o o  o o o o";
13102         min_write_delay = 9000;
13103         max_write_delay = 9000;
13104       ;
13106     memory "hfuse"
13107         size            = 1;
13108         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
13109                           "x x x x  x x x x  i i i i  i i i i";
13111         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
13112                           "x x x x  x x x x  o o o o  o o o o";
13113         min_write_delay = 9000;
13114         max_write_delay = 9000;
13115       ;
13117     memory "efuse"
13118         size            = 1;
13119         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
13120                           "x x x x  x x x x  x x x x  i i i i";
13122         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
13123                           "x x x x  x x x x  o o o o  o o o o";
13124         min_write_delay = 9000;
13125         max_write_delay = 9000;
13126       ;
13128     memory "lock"
13129         size            = 1;
13130         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
13131                           "x x x x  x x x x   x x o o  o o o o";
13133         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
13134                           "x x x x  x x x x   1 1 i i  i i i i";
13135         min_write_delay = 9000;
13136         max_write_delay = 9000;
13137       ;
13139     memory "calibration"
13140         size            = 1;
13141         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
13142                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
13143       ;
13145     memory "signature"
13146         size            = 3;
13147         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
13148                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
13149       ;
13150   ;
13152 #------------------------------------------------------------
13153 # AT90USB647
13154 #------------------------------------------------------------
13155 # identical to AT90USB646
13157 part
13158     id               = "usb647";
13159     desc             = "AT90USB647";
13160     signature        = 0x1e 0x96 0x82;
13161     has_jtag         = yes;
13162 #    stk500_devcode   = 0xB2;
13163 #    avr910_devcode   = 0x43;
13164     chip_erase_delay = 9000;
13165     pagel            = 0xD7;
13166     bs2              = 0xA0;
13167     reset            = dedicated;
13168     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
13169                        "x x x x  x x x x    x x x x  x x x x";
13171     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
13172                        "x x x x  x x x x    x x x x  x x x x";
13174     timeout             = 200;
13175     stabdelay           = 100;
13176     cmdexedelay         = 25;
13177     synchloops          = 32;
13178     bytedelay           = 0;
13179     pollindex           = 3;
13180     pollvalue           = 0x53;
13181     predelay            = 1;
13182     postdelay           = 1;
13183     pollmethod          = 1;
13185     pp_controlstack     =
13186         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
13187         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
13188         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13189         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13190     hventerstabdelay    = 100;
13191     progmodedelay       = 0;
13192     latchcycles         = 5;
13193     togglevtg           = 1;
13194     poweroffdelay       = 15;
13195     resetdelayms        = 1;
13196     resetdelayus        = 0;
13197     hvleavestabdelay    = 15;
13198     chiperasepulsewidth = 0;
13199     chiperasepolltimeout = 10;
13200     programfusepulsewidth = 0;
13201     programfusepolltimeout = 5;
13202     programlockpulsewidth = 0;
13203     programlockpolltimeout = 5;
13205     idr                 = 0x31;
13206     spmcr               = 0x57;
13207     rampz               = 0x3b;
13208     allowfullpagebitstream = no;
13210     memory "eeprom"
13211         paged           = no; /* leave this "no" */
13212         page_size       = 8;  /* for parallel programming */
13213         size            = 2048;
13214         min_write_delay = 9000;
13215         max_write_delay = 9000;
13216         readback_p1     = 0x00;
13217         readback_p2     = 0x00;
13218         read            = "  1   0   1   0      0   0   0   0",
13219                           "  x   x   x   x      x a10  a9  a8",
13220                           " a7  a6  a5  a4     a3  a2  a1  a0",
13221                           "  o   o   o   o      o   o   o   o";
13223         write           = "  1   1   0   0      0   0   0   0",
13224                           "  x   x   x   x      x a10  a9  a8",
13225                           " a7  a6  a5  a4     a3  a2  a1  a0", 
13226                           "  i   i   i   i      i   i   i   i";
13228         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13229                           "  0   0   0   0      0   0   0   0",
13230                           "  0   0   0   0      0  a2  a1  a0",
13231                           "  i   i   i   i      i   i   i   i";
13233         writepage       = "  1   1   0   0      0   0   1   0",
13234                           "  0   0   x   x      x a10  a9  a8",
13235                           " a7  a6  a5  a4     a3   0   0   0",
13236                           "  x   x   x   x      x   x   x   x";
13238         mode            = 0x41;
13239         delay           = 10;
13240         blocksize       = 8;
13241         readsize        = 256;
13242       ;
13244     memory "flash"
13245         paged           = yes;
13246         size            = 65536;
13247         page_size       = 256;
13248         num_pages       = 256;
13249         min_write_delay = 4500;
13250         max_write_delay = 4500;
13251         readback_p1     = 0x00;
13252         readback_p2     = 0x00;
13253         read_lo         = "  0   0   1   0      0   0   0   0",
13254                           "  0 a14 a13 a12    a11 a10  a9  a8",
13255                           " a7  a6  a5  a4     a3  a2  a1  a0",
13256                           "  o   o   o   o      o   o   o   o";
13258         read_hi         = "  0   0   1   0      1   0   0   0",
13259                           "  0 a14 a13 a12    a11 a10  a9  a8",
13260                           " a7  a6  a5  a4     a3  a2  a1  a0",
13261                           "  o   o   o   o      o   o   o   o";
13263         loadpage_lo     = "  0   1   0   0      0   0   0   0",
13264                           "  x   x   x   x      x   x   x   x",
13265                           "  x  a6  a5  a4     a3  a2  a1  a0",
13266                           "  i   i   i   i      i   i   i   i";
13268         loadpage_hi     = "  0   1   0   0      1   0   0   0",
13269                           "  x   x   x   x      x   x   x   x",
13270                           "  x  a6  a5  a4     a3  a2  a1  a0",
13271                           "  i   i   i   i      i   i   i   i";
13273         writepage       = "  0   1   0   0      1   1   0   0",
13274                           "  0 a14 a13 a12    a11 a10  a9  a8",
13275                           " a7   x   x   x      x   x   x   x",
13276                           "  x   x   x   x      x   x   x   x";
13278         mode            = 0x41;
13279         delay           = 6;
13280         blocksize       = 256;
13281         readsize        = 256;
13282       ;
13284     memory "lfuse"
13285         size            = 1;
13286         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
13287                           "x x x x  x x x x  i i i i  i i i i";
13289         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
13290                           "x x x x  x x x x  o o o o  o o o o";
13291         min_write_delay = 9000;
13292         max_write_delay = 9000;
13293       ;
13295     memory "hfuse"
13296         size            = 1;
13297         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
13298                           "x x x x  x x x x  i i i i  i i i i";
13300         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
13301                           "x x x x  x x x x  o o o o  o o o o";
13302         min_write_delay = 9000;
13303         max_write_delay = 9000;
13304       ;
13306     memory "efuse"
13307         size            = 1;
13308         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
13309                           "x x x x  x x x x  x x x x  i i i i";
13311         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
13312                           "x x x x  x x x x  o o o o  o o o o";
13313         min_write_delay = 9000;
13314         max_write_delay = 9000;
13315       ;
13317     memory "lock"
13318         size            = 1;
13319         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
13320                           "x x x x  x x x x   x x o o  o o o o";
13322         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
13323                           "x x x x  x x x x   1 1 i i  i i i i";
13324         min_write_delay = 9000;
13325         max_write_delay = 9000;
13326       ;
13328     memory "calibration"
13329         size            = 1;
13330         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
13331                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
13332       ;
13334     memory "signature"
13335         size            = 3;
13336         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
13337                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
13338       ;
13339   ;
13341 #------------------------------------------------------------
13342 # AT90USB1286
13343 #------------------------------------------------------------
13345 part
13346     id               = "usb1286";
13347     desc             = "AT90USB1286";
13348     signature        = 0x1e 0x97 0x82;
13349     has_jtag         = yes;
13350 #    stk500_devcode   = 0xB2;
13351 #    avr910_devcode   = 0x43;
13352     chip_erase_delay = 9000;
13353     pagel            = 0xD7;
13354     bs2              = 0xA0;
13355     reset            = dedicated;
13356     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
13357                        "x x x x  x x x x    x x x x  x x x x";
13359     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
13360                        "x x x x  x x x x    x x x x  x x x x";
13362     timeout             = 200;
13363     stabdelay           = 100;
13364     cmdexedelay         = 25;
13365     synchloops          = 32;
13366     bytedelay           = 0;
13367     pollindex           = 3;
13368     pollvalue           = 0x53;
13369     predelay            = 1;
13370     postdelay           = 1;
13371     pollmethod          = 1;
13373     pp_controlstack     =
13374         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
13375         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
13376         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13377         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13378     hventerstabdelay    = 100;
13379     progmodedelay       = 0;
13380     latchcycles         = 5;
13381     togglevtg           = 1;
13382     poweroffdelay       = 15;
13383     resetdelayms        = 1;
13384     resetdelayus        = 0;
13385     hvleavestabdelay    = 15;
13386     chiperasepulsewidth = 0;
13387     chiperasepolltimeout = 10;
13388     programfusepulsewidth = 0;
13389     programfusepolltimeout = 5;
13390     programlockpulsewidth = 0;
13391     programlockpolltimeout = 5;
13393     idr                 = 0x31;
13394     spmcr               = 0x57;
13395     rampz               = 0x3b;
13396     allowfullpagebitstream = no;
13398     memory "eeprom"
13399         paged           = no; /* leave this "no" */
13400         page_size       = 8;  /* for parallel programming */
13401         size            = 4096;
13402         min_write_delay = 9000;
13403         max_write_delay = 9000;
13404         readback_p1     = 0x00;
13405         readback_p2     = 0x00;
13406         read            = "  1   0   1   0      0   0   0   0",
13407                           "  x   x   x   x    a11 a10  a9  a8",
13408                           " a7  a6  a5  a4     a3  a2  a1  a0",
13409                           "  o   o   o   o      o   o   o   o";
13411         write           = "  1   1   0   0      0   0   0   0",
13412                           "  x   x   x   x    a11 a10  a9  a8",
13413                           " a7  a6  a5  a4     a3  a2  a1  a0", 
13414                           "  i   i   i   i      i   i   i   i";
13416         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13417                           "  0   0   0   0      0   0   0   0",
13418                           "  0   0   0   0      0  a2  a1  a0",
13419                           "  i   i   i   i      i   i   i   i";
13421         writepage       = "  1   1   0   0      0   0   1   0",
13422                           "  0   0   x   x      x a10  a9  a8",
13423                           " a7  a6  a5  a4     a3   0   0   0",
13424                           "  x   x   x   x      x   x   x   x";
13426         mode            = 0x41;
13427         delay           = 10;
13428         blocksize       = 8;
13429         readsize        = 256;
13430       ;
13432     memory "flash"
13433         paged           = yes;
13434         size            = 131072;
13435         page_size       = 256;
13436         num_pages       = 512;
13437         min_write_delay = 4500;
13438         max_write_delay = 4500;
13439         readback_p1     = 0x00;
13440         readback_p2     = 0x00;
13441         read_lo         = "  0   0   1   0      0   0   0   0",
13442                           "a15 a14 a13 a12    a11 a10  a9  a8",
13443                           " a7  a6  a5  a4     a3  a2  a1  a0",
13444                           "  o   o   o   o      o   o   o   o";
13446         read_hi         = "  0   0   1   0      1   0   0   0",
13447                           "a15 a14 a13 a12    a11 a10  a9  a8",
13448                           " a7  a6  a5  a4     a3  a2  a1  a0",
13449                           "  o   o   o   o      o   o   o   o";
13451         loadpage_lo     = "  0   1   0   0      0   0   0   0",
13452                           "  x   x   x   x      x   x   x   x",
13453                           "  x  a6  a5  a4     a3  a2  a1  a0",
13454                           "  i   i   i   i      i   i   i   i";
13456         loadpage_hi     = "  0   1   0   0      1   0   0   0",
13457                           "  x   x   x   x      x   x   x   x",
13458                           "  x  a6  a5  a4     a3  a2  a1  a0",
13459                           "  i   i   i   i      i   i   i   i";
13461         writepage       = "  0   1   0   0      1   1   0   0",
13462                           "a15 a14 a13 a12    a11 a10  a9  a8",
13463                           " a7   x   x   x      x   x   x   x",
13464                           "  x   x   x   x      x   x   x   x";
13466         mode            = 0x41;
13467         delay           = 6;
13468         blocksize       = 256;
13469         readsize        = 256;
13470       ;
13472     memory "lfuse"
13473         size            = 1;
13474         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
13475                           "x x x x  x x x x  i i i i  i i i i";
13477         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
13478                           "x x x x  x x x x  o o o o  o o o o";
13479         min_write_delay = 9000;
13480         max_write_delay = 9000;
13481       ;
13483     memory "hfuse"
13484         size            = 1;
13485         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
13486                           "x x x x  x x x x  i i i i  i i i i";
13488         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
13489                           "x x x x  x x x x  o o o o  o o o o";
13490         min_write_delay = 9000;
13491         max_write_delay = 9000;
13492       ;
13494     memory "efuse"
13495         size            = 1;
13496         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
13497                           "x x x x  x x x x  x x x x  i i i i";
13499         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
13500                           "x x x x  x x x x  o o o o  o o o o";
13501         min_write_delay = 9000;
13502         max_write_delay = 9000;
13503       ;
13505     memory "lock"
13506         size            = 1;
13507         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
13508                           "x x x x  x x x x   x x o o  o o o o";
13510         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
13511                           "x x x x  x x x x   1 1 i i  i i i i";
13512         min_write_delay = 9000;
13513         max_write_delay = 9000;
13514       ;
13516     memory "calibration"
13517         size            = 1;
13518         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
13519                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
13520       ;
13522     memory "signature"
13523         size            = 3;
13524         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
13525                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
13526       ;
13527   ;
13529 #------------------------------------------------------------
13530 # AT90USB1287
13531 #------------------------------------------------------------
13532 # identical to AT90USB1286
13534 part
13535     id               = "usb1287";
13536     desc             = "AT90USB1287";
13537     signature        = 0x1e 0x97 0x82;
13538     has_jtag         = yes;
13539 #    stk500_devcode   = 0xB2;
13540 #    avr910_devcode   = 0x43;
13541     chip_erase_delay = 9000;
13542     pagel            = 0xD7;
13543     bs2              = 0xA0;
13544     reset            = dedicated;
13545     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
13546                        "x x x x  x x x x    x x x x  x x x x";
13548     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
13549                        "x x x x  x x x x    x x x x  x x x x";
13551     timeout             = 200;
13552     stabdelay           = 100;
13553     cmdexedelay         = 25;
13554     synchloops          = 32;
13555     bytedelay           = 0;
13556     pollindex           = 3;
13557     pollvalue           = 0x53;
13558     predelay            = 1;
13559     postdelay           = 1;
13560     pollmethod          = 1;
13562     pp_controlstack     =
13563         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
13564         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
13565         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13566         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13567     hventerstabdelay    = 100;
13568     progmodedelay       = 0;
13569     latchcycles         = 5;
13570     togglevtg           = 1;
13571     poweroffdelay       = 15;
13572     resetdelayms        = 1;
13573     resetdelayus        = 0;
13574     hvleavestabdelay    = 15;
13575     chiperasepulsewidth = 0;
13576     chiperasepolltimeout = 10;
13577     programfusepulsewidth = 0;
13578     programfusepolltimeout = 5;
13579     programlockpulsewidth = 0;
13580     programlockpolltimeout = 5;
13582     idr                 = 0x31;
13583     spmcr               = 0x57;
13584     rampz               = 0x3b;
13585     allowfullpagebitstream = no;
13587     memory "eeprom"
13588         paged           = no; /* leave this "no" */
13589         page_size       = 8;  /* for parallel programming */
13590         size            = 4096;
13591         min_write_delay = 9000;
13592         max_write_delay = 9000;
13593         readback_p1     = 0x00;
13594         readback_p2     = 0x00;
13595         read            = "  1   0   1   0      0   0   0   0",
13596                           "  x   x   x   x    a11 a10  a9  a8",
13597                           " a7  a6  a5  a4     a3  a2  a1  a0",
13598                           "  o   o   o   o      o   o   o   o";
13600         write           = "  1   1   0   0      0   0   0   0",
13601                           "  x   x   x   x    a11 a10  a9  a8",
13602                           " a7  a6  a5  a4     a3  a2  a1  a0", 
13603                           "  i   i   i   i      i   i   i   i";
13605         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13606                           "  0   0   0   0      0   0   0   0",
13607                           "  0   0   0   0      0  a2  a1  a0",
13608                           "  i   i   i   i      i   i   i   i";
13610         writepage       = "  1   1   0   0      0   0   1   0",
13611                           "  0   0   x   x      x a10  a9  a8",
13612                           " a7  a6  a5  a4     a3   0   0   0",
13613                           "  x   x   x   x      x   x   x   x";
13615         mode            = 0x41;
13616         delay           = 10;
13617         blocksize       = 8;
13618         readsize        = 256;
13619       ;
13621     memory "flash"
13622         paged           = yes;
13623         size            = 131072;
13624         page_size       = 256;
13625         num_pages       = 512;
13626         min_write_delay = 4500;
13627         max_write_delay = 4500;
13628         readback_p1     = 0x00;
13629         readback_p2     = 0x00;
13630         read_lo         = "  0   0   1   0      0   0   0   0",
13631                           "a15 a14 a13 a12    a11 a10  a9  a8",
13632                           " a7  a6  a5  a4     a3  a2  a1  a0",
13633                           "  o   o   o   o      o   o   o   o";
13635         read_hi         = "  0   0   1   0      1   0   0   0",
13636                           "a15 a14 a13 a12    a11 a10  a9  a8",
13637                           " a7  a6  a5  a4     a3  a2  a1  a0",
13638                           "  o   o   o   o      o   o   o   o";
13640         loadpage_lo     = "  0   1   0   0      0   0   0   0",
13641                           "  x   x   x   x      x   x   x   x",
13642                           "  x  a6  a5  a4     a3  a2  a1  a0",
13643                           "  i   i   i   i      i   i   i   i";
13645         loadpage_hi     = "  0   1   0   0      1   0   0   0",
13646                           "  x   x   x   x      x   x   x   x",
13647                           "  x  a6  a5  a4     a3  a2  a1  a0",
13648                           "  i   i   i   i      i   i   i   i";
13650         writepage       = "  0   1   0   0      1   1   0   0",
13651                           "a15 a14 a13 a12    a11 a10  a9  a8",
13652                           " a7   x   x   x      x   x   x   x",
13653                           "  x   x   x   x      x   x   x   x";
13655         mode            = 0x41;
13656         delay           = 6;
13657         blocksize       = 256;
13658         readsize        = 256;
13659       ;
13661     memory "lfuse"
13662         size            = 1;
13663         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
13664                           "x x x x  x x x x  i i i i  i i i i";
13666         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
13667                           "x x x x  x x x x  o o o o  o o o o";
13668         min_write_delay = 9000;
13669         max_write_delay = 9000;
13670       ;
13672     memory "hfuse"
13673         size            = 1;
13674         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
13675                           "x x x x  x x x x  i i i i  i i i i";
13677         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
13678                           "x x x x  x x x x  o o o o  o o o o";
13679         min_write_delay = 9000;
13680         max_write_delay = 9000;
13681       ;
13683     memory "efuse"
13684         size            = 1;
13685         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
13686                           "x x x x  x x x x  x x x x  i i i i";
13688         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
13689                           "x x x x  x x x x  o o o o  o o o o";
13690         min_write_delay = 9000;
13691         max_write_delay = 9000;
13692       ;
13694     memory "lock"
13695         size            = 1;
13696         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
13697                           "x x x x  x x x x   x x o o  o o o o";
13699         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
13700                           "x x x x  x x x x   1 1 i i  i i i i";
13701         min_write_delay = 9000;
13702         max_write_delay = 9000;
13703       ;
13705     memory "calibration"
13706         size            = 1;
13707         read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
13708                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
13709       ;
13711     memory "signature"
13712         size            = 3;
13713         read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
13714                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
13715       ;
13716   ;
13719 #------------------------------------------------------------
13720 # AT90USB162
13721 #------------------------------------------------------------
13723 part
13724     id               = "usb162";
13725     desc             = "AT90USB162";
13726     has_jtag         = no;
13727     has_debugwire    = yes;
13728     signature        = 0x1e 0x94 0x82;
13729     chip_erase_delay = 9000;
13730     reset            = io;
13731     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
13732                        "x x x x  x x x x    x x x x  x x x x";
13733     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
13734                        "x x x x  x x x x    x x x x  x x x x";
13735     pagel            = 0xD7;
13736     bs2              = 0xC6;
13738     timeout             = 200;
13739     stabdelay           = 100;
13740     cmdexedelay         = 25;
13741     synchloops          = 32;
13742     bytedelay           = 0;
13743     pollindex           = 3;
13744     pollvalue           = 0x53;
13745     predelay            = 1;
13746     postdelay           = 1;
13747     pollmethod          = 1;
13748     pp_controlstack     =
13749         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
13750         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
13751         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13752         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13753     hventerstabdelay    = 100;
13754     progmodedelay       = 0;
13755     latchcycles         = 5;
13756     togglevtg           = 1;
13757     poweroffdelay       = 15;
13758     resetdelayms        = 1;
13759     resetdelayus        = 0;
13760     hvleavestabdelay    = 15;
13761     chiperasepulsewidth = 0;
13762     chiperasepolltimeout = 10;
13763     programfusepulsewidth = 0;
13764     programfusepolltimeout = 5;
13765     programlockpulsewidth = 0;
13766     programlockpolltimeout = 5;
13768     memory "eeprom"
13769         paged           = no; /* leave this "no" */
13770         page_size       = 4;  /* for parallel programming */
13771         size            = 512;
13772         num_pages       = 128;
13773         min_write_delay = 9000;
13774         max_write_delay = 9000;
13775         readback_p1     = 0x00;
13776         readback_p2     = 0x00;
13777         read            = "  1   0   1   0      0   0   0   0",
13778                           "  0   0   0   0    a11 a10  a9  a8",
13779                           " a7  a6  a5  a4     a3  a2  a1  a0",
13780                           "  o   o   o   o      o   o   o   o";
13782         write           = "  1   1   0   0      0   0   0   0",
13783                           "  0   0   0   0    a11 a10  a9  a8",
13784                           " a7  a6  a5  a4     a3  a2  a1  a0",
13785                           "  i   i   i   i      i   i   i   i";
13787         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13788                           "  0   0   0   0      0   0   0   0",
13789                           "  0   0   0   0      0   0  a1  a0",
13790                           "  i   i   i   i      i   i   i   i";
13792         writepage       = "  1   1   0   0      0   0   1   0",
13793                           "  0   0   0   0    a11 a10  a9  a8",
13794                           " a7  a6  a5  a4     a3  a2   0   0",
13795                           "  x   x   x   x      x   x   x   x";
13797         mode            = 0x41;
13798         delay           = 20;
13799         blocksize       = 4;
13800         readsize        = 256;
13801       ;
13803     memory "flash"
13804         paged           = yes;
13805         size            = 16384;
13806         page_size       = 128;
13807         num_pages       = 128;
13808         min_write_delay = 4500;
13809         max_write_delay = 4500;
13810         readback_p1     = 0x00;
13811         readback_p2     = 0x00;
13812         read_lo         = "  0   0   1   0      0   0   0   0",
13813                           "a15 a14 a13 a12    a11 a10  a9  a8",
13814                           " a7  a6  a5  a4     a3  a2  a1  a0",
13815                           "  o   o   o   o      o   o   o   o";
13817         read_hi         = "  0   0   1   0      1   0   0   0",
13818                           "a15 a14 a13 a12    a11 a10  a9  a8",
13819                           " a7  a6  a5  a4     a3  a2  a1  a0",
13820                           "  o   o   o   o      o   o   o   o";
13822         loadpage_lo     = "  0   1   0   0      0   0   0   0",
13823                           "  x   x   x   x      x   x   x   x",
13824                           "  x   x  a5  a4     a3  a2  a1  a0",
13825                           "  i   i   i   i      i   i   i   i";
13827         loadpage_hi     = "  0   1   0   0      1   0   0   0",
13828                           "  x   x   x   x      x   x   x   x",
13829                           "  x   x  a5  a4     a3  a2  a1  a0",
13830                           "  i   i   i   i      i   i   i   i";
13832         writepage       = "  0   1   0   0      1   1   0   0",
13833                           "a15 a14 a13 a12    a11 a10  a9  a8",
13834                           " a7  a6   x   x      x   x   x   x",
13835                           "  x   x   x   x      x   x   x   x";
13837         mode            = 0x41;
13838         delay           = 6;
13839         blocksize       = 128;
13840         readsize        = 256;
13841       ;
13843     memory "lfuse"
13844         size            = 1;
13845         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
13846                           "x x x x  x x x x  i i i i  i i i i";
13848         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
13849                           "x x x x  x x x x  o o o o  o o o o";
13850         min_write_delay = 9000;
13851         max_write_delay = 9000;
13852       ;
13854     memory "hfuse"
13855         size            = 1;
13856         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
13857                           "x x x x  x x x x  i i i i  i i i i";
13859         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
13860                           "x x x x  x x x x  o o o o  o o o o";
13861         min_write_delay = 9000;
13862         max_write_delay = 9000;
13863       ;
13865     memory "efuse"
13866         size            = 1;
13867         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
13868                           "x x x x  x x x x  i i i i  i i i i";
13870         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
13871                           "x x x x  x x x x  o o o o  o o o o";
13872         min_write_delay = 9000;
13873         max_write_delay = 9000;
13874       ;
13876     memory "lock"
13877         size            = 1;
13878         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
13879                           "x x x x  x x x x   x x o o  o o o o";
13881         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
13882                           "x x x x  x x x x   1 1 i i  i i i i";
13883         min_write_delay = 9000;
13884         max_write_delay = 9000;
13885       ;
13887     memory "calibration"
13888         size            = 1;
13889         read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
13890                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
13891       ;
13892     memory "signature"
13893         size            = 3;
13894         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
13895                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
13896       ;
13897   ;
13899 #------------------------------------------------------------
13900 # AT90USB82
13901 #------------------------------------------------------------
13902 # Changes against AT90USB162 (beside IDs)
13903 #    memory "flash"
13904 #        size            = 8192;
13905 #        num_pages       = 64;
13907 part
13908     id               = "usb82";
13909     desc             = "AT90USB82";
13910     has_jtag         = no;
13911     has_debugwire    = yes;
13912     signature        = 0x1e 0x93 0x82;
13913     chip_erase_delay = 9000;
13914     reset            = io;
13915     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
13916                        "x x x x  x x x x    x x x x  x x x x";
13917     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
13918                        "x x x x  x x x x    x x x x  x x x x";
13919     pagel            = 0xD7;
13920     bs2              = 0xC6;
13922     timeout             = 200;
13923     stabdelay           = 100;
13924     cmdexedelay         = 25;
13925     synchloops          = 32;
13926     bytedelay           = 0;
13927     pollindex           = 3;
13928     pollvalue           = 0x53;
13929     predelay            = 1;
13930     postdelay           = 1;
13931     pollmethod          = 1;
13932     pp_controlstack     =
13933         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
13934         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
13935         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
13936         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
13937     hventerstabdelay    = 100;
13938     progmodedelay       = 0;
13939     latchcycles         = 5;
13940     togglevtg           = 1;
13941     poweroffdelay       = 15;
13942     resetdelayms        = 1;
13943     resetdelayus        = 0;
13944     hvleavestabdelay    = 15;
13945     chiperasepulsewidth = 0;
13946     chiperasepolltimeout = 10;
13947     programfusepulsewidth = 0;
13948     programfusepolltimeout = 5;
13949     programlockpulsewidth = 0;
13950     programlockpolltimeout = 5;
13952     memory "eeprom"
13953         paged           = no; /* leave this "no" */
13954         page_size       = 4;  /* for parallel programming */
13955         size            = 512;
13956         num_pages       = 128;
13957         min_write_delay = 9000;
13958         max_write_delay = 9000;
13959         readback_p1     = 0x00;
13960         readback_p2     = 0x00;
13961         read            = "  1   0   1   0      0   0   0   0",
13962                           "  0   0   0   0    a11 a10  a9  a8",
13963                           " a7  a6  a5  a4     a3  a2  a1  a0",
13964                           "  o   o   o   o      o   o   o   o";
13966         write           = "  1   1   0   0      0   0   0   0",
13967                           "  0   0   0   0    a11 a10  a9  a8",
13968                           " a7  a6  a5  a4     a3  a2  a1  a0",
13969                           "  i   i   i   i      i   i   i   i";
13971         loadpage_lo     = "  1   1   0   0      0   0   0   1",
13972                           "  0   0   0   0      0   0   0   0",
13973                           "  0   0   0   0      0   0  a1  a0",
13974                           "  i   i   i   i      i   i   i   i";
13976         writepage       = "  1   1   0   0      0   0   1   0",
13977                           "  0   0   0   0    a11 a10  a9  a8",
13978                           " a7  a6  a5  a4     a3  a2   0   0",
13979                           "  x   x   x   x      x   x   x   x";
13981         mode            = 0x41;
13982         delay           = 20;
13983         blocksize       = 4;
13984         readsize        = 256;
13985       ;
13987     memory "flash"
13988         paged           = yes;
13989         size            = 8192;
13990         page_size       = 128;
13991         num_pages       = 64;
13992         min_write_delay = 4500;
13993         max_write_delay = 4500;
13994         readback_p1     = 0x00;
13995         readback_p2     = 0x00;
13996         read_lo         = "  0   0   1   0      0   0   0   0",
13997                           "a15 a14 a13 a12    a11 a10  a9  a8",
13998                           " a7  a6  a5  a4     a3  a2  a1  a0",
13999                           "  o   o   o   o      o   o   o   o";
14001         read_hi         = "  0   0   1   0      1   0   0   0",
14002                           "a15 a14 a13 a12    a11 a10  a9  a8",
14003                           " a7  a6  a5  a4     a3  a2  a1  a0",
14004                           "  o   o   o   o      o   o   o   o";
14006         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14007                           "  x   x   x   x      x   x   x   x",
14008                           "  x   x  a5  a4     a3  a2  a1  a0",
14009                           "  i   i   i   i      i   i   i   i";
14011         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14012                           "  x   x   x   x      x   x   x   x",
14013                           "  x   x  a5  a4     a3  a2  a1  a0",
14014                           "  i   i   i   i      i   i   i   i";
14016         writepage       = "  0   1   0   0      1   1   0   0",
14017                           "a15 a14 a13 a12    a11 a10  a9  a8",
14018                           " a7  a6   x   x      x   x   x   x",
14019                           "  x   x   x   x      x   x   x   x";
14021         mode            = 0x41;
14022         delay           = 6;
14023         blocksize       = 128;
14024         readsize        = 256;
14025       ;
14027     memory "lfuse"
14028         size            = 1;
14029         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
14030                           "x x x x  x x x x  i i i i  i i i i";
14032         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
14033                           "x x x x  x x x x  o o o o  o o o o";
14034         min_write_delay = 9000;
14035         max_write_delay = 9000;
14036       ;
14038     memory "hfuse"
14039         size            = 1;
14040         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
14041                           "x x x x  x x x x  i i i i  i i i i";
14043         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
14044                           "x x x x  x x x x  o o o o  o o o o";
14045         min_write_delay = 9000;
14046         max_write_delay = 9000;
14047       ;
14049     memory "efuse"
14050         size            = 1;
14051         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14052                           "x x x x  x x x x  i i i i  i i i i";
14054         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14055                           "x x x x  x x x x  o o o o  o o o o";
14056         min_write_delay = 9000;
14057         max_write_delay = 9000;
14058       ;
14060     memory "lock"
14061         size            = 1;
14062         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14063                           "x x x x  x x x x   x x o o  o o o o";
14065         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
14066                           "x x x x  x x x x   1 1 i i  i i i i";
14067         min_write_delay = 9000;
14068         max_write_delay = 9000;
14069       ;
14071     memory "calibration"
14072         size            = 1;
14073         read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
14074                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
14075       ;
14076     memory "signature"
14077         size            = 3;
14078         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
14079                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
14080       ;
14081   ;
14083 #------------------------------------------------------------
14084 # ATmega32U2
14085 #------------------------------------------------------------
14086 # Changes against AT90USB162 (beside IDs)
14087 #    memory "flash"
14088 #        size            = 32768;
14089 #        num_pages       = 256;
14090 #    memory "eeprom"
14091 #        size            = 1024;
14092 #        num_pages       = 256;
14093 part
14094     id               = "m32u2";
14095     desc             = "ATmega32U2";
14096     has_jtag         = no;
14097     has_debugwire    = yes;
14098     signature        = 0x1e 0x95 0x8a;
14099     chip_erase_delay = 9000;
14100     reset            = io;
14101     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
14102                        "x x x x  x x x x    x x x x  x x x x";
14103     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
14104                        "x x x x  x x x x    x x x x  x x x x";
14105     pagel            = 0xD7;
14106     bs2              = 0xC6;
14108     timeout             = 200;
14109     stabdelay           = 100;
14110     cmdexedelay         = 25;
14111     synchloops          = 32;
14112     bytedelay           = 0;
14113     pollindex           = 3;
14114     pollvalue           = 0x53;
14115     predelay            = 1;
14116     postdelay           = 1;
14117     pollmethod          = 1;
14118     pp_controlstack     =
14119         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
14120         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
14121         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
14122         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
14123     hventerstabdelay    = 100;
14124     progmodedelay       = 0;
14125     latchcycles         = 5;
14126     togglevtg           = 1;
14127     poweroffdelay       = 15;
14128     resetdelayms        = 1;
14129     resetdelayus        = 0;
14130     hvleavestabdelay    = 15;
14131     chiperasepulsewidth = 0;
14132     chiperasepolltimeout = 10;
14133     programfusepulsewidth = 0;
14134     programfusepolltimeout = 5;
14135     programlockpulsewidth = 0;
14136     programlockpolltimeout = 5;
14138     memory "eeprom"
14139         paged           = no; /* leave this "no" */
14140         page_size       = 4;  /* for parallel programming */
14141         size            = 1024;
14142         num_pages       = 256;
14143         min_write_delay = 9000;
14144         max_write_delay = 9000;
14145         readback_p1     = 0x00;
14146         readback_p2     = 0x00;
14147         read            = "  1   0   1   0      0   0   0   0",
14148                           "  0   0   0   0    a11 a10  a9  a8",
14149                           " a7  a6  a5  a4     a3  a2  a1  a0",
14150                           "  o   o   o   o      o   o   o   o";
14152         write           = "  1   1   0   0      0   0   0   0",
14153                           "  0   0   0   0    a11 a10  a9  a8",
14154                           " a7  a6  a5  a4     a3  a2  a1  a0",
14155                           "  i   i   i   i      i   i   i   i";
14157         loadpage_lo     = "  1   1   0   0      0   0   0   1",
14158                           "  0   0   0   0      0   0   0   0",
14159                           "  0   0   0   0      0   0  a1  a0",
14160                           "  i   i   i   i      i   i   i   i";
14162         writepage       = "  1   1   0   0      0   0   1   0",
14163                           "  0   0   0   0    a11 a10  a9  a8",
14164                           " a7  a6  a5  a4     a3  a2   0   0",
14165                           "  x   x   x   x      x   x   x   x";
14167         mode            = 0x41;
14168         delay           = 20;
14169         blocksize       = 4;
14170         readsize        = 256;
14171       ;
14173     memory "flash"
14174         paged           = yes;
14175         size            = 32768;
14176         page_size       = 128;
14177         num_pages       = 256;
14178         min_write_delay = 4500;
14179         max_write_delay = 4500;
14180         readback_p1     = 0x00;
14181         readback_p2     = 0x00;
14182         read_lo         = "  0   0   1   0      0   0   0   0",
14183                           "a15 a14 a13 a12    a11 a10  a9  a8",
14184                           " a7  a6  a5  a4     a3  a2  a1  a0",
14185                           "  o   o   o   o      o   o   o   o";
14187         read_hi         = "  0   0   1   0      1   0   0   0",
14188                           "a15 a14 a13 a12    a11 a10  a9  a8",
14189                           " a7  a6  a5  a4     a3  a2  a1  a0",
14190                           "  o   o   o   o      o   o   o   o";
14192         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14193                           "  x   x   x   x      x   x   x   x",
14194                           "  x   x  a5  a4     a3  a2  a1  a0",
14195                           "  i   i   i   i      i   i   i   i";
14197         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14198                           "  x   x   x   x      x   x   x   x",
14199                           "  x   x  a5  a4     a3  a2  a1  a0",
14200                           "  i   i   i   i      i   i   i   i";
14202         writepage       = "  0   1   0   0      1   1   0   0",
14203                           "a15 a14 a13 a12    a11 a10  a9  a8",
14204                           " a7  a6   x   x      x   x   x   x",
14205                           "  x   x   x   x      x   x   x   x";
14207         mode            = 0x41;
14208         delay           = 6;
14209         blocksize       = 128;
14210         readsize        = 256;
14211       ;
14213     memory "lfuse"
14214         size            = 1;
14215         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
14216                           "x x x x  x x x x  i i i i  i i i i";
14218         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
14219                           "x x x x  x x x x  o o o o  o o o o";
14220         min_write_delay = 9000;
14221         max_write_delay = 9000;
14222       ;
14224     memory "hfuse"
14225         size            = 1;
14226         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
14227                           "x x x x  x x x x  i i i i  i i i i";
14229         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
14230                           "x x x x  x x x x  o o o o  o o o o";
14231         min_write_delay = 9000;
14232         max_write_delay = 9000;
14233       ;
14235     memory "efuse"
14236         size            = 1;
14237         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14238                           "x x x x  x x x x  i i i i  i i i i";
14240         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14241                           "x x x x  x x x x  o o o o  o o o o";
14242         min_write_delay = 9000;
14243         max_write_delay = 9000;
14244       ;
14246     memory "lock"
14247         size            = 1;
14248         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14249                           "x x x x  x x x x   x x o o  o o o o";
14251         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
14252                           "x x x x  x x x x   1 1 i i  i i i i";
14253         min_write_delay = 9000;
14254         max_write_delay = 9000;
14255       ;
14257     memory "calibration"
14258         size            = 1;
14259         read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
14260                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
14261       ;
14262     memory "signature"
14263         size            = 3;
14264         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
14265                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
14266       ;
14267   ;
14268 #------------------------------------------------------------
14269 # ATmega16U2
14270 #------------------------------------------------------------
14271 # Changes against ATmega32U2 (beside IDs)
14272 #    memory "flash"
14273 #        size            = 16384;
14274 #        num_pages       = 128;
14275 #    memory "eeprom"
14276 #        size            = 512;
14277 #        num_pages       = 128;
14278 part
14279     id               = "m16u2";
14280     desc             = "ATmega16U2";
14281     has_jtag         = no;
14282     has_debugwire    = yes;
14283     signature        = 0x1e 0x94 0x89;
14284     chip_erase_delay = 9000;
14285     reset            = io;
14286     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
14287                        "x x x x  x x x x    x x x x  x x x x";
14288     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
14289                        "x x x x  x x x x    x x x x  x x x x";
14290     pagel            = 0xD7;
14291     bs2              = 0xC6;
14293     timeout             = 200;
14294     stabdelay           = 100;
14295     cmdexedelay         = 25;
14296     synchloops          = 32;
14297     bytedelay           = 0;
14298     pollindex           = 3;
14299     pollvalue           = 0x53;
14300     predelay            = 1;
14301     postdelay           = 1;
14302     pollmethod          = 1;
14303     pp_controlstack     =
14304         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
14305         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
14306         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
14307         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
14308     hventerstabdelay    = 100;
14309     progmodedelay       = 0;
14310     latchcycles         = 5;
14311     togglevtg           = 1;
14312     poweroffdelay       = 15;
14313     resetdelayms        = 1;
14314     resetdelayus        = 0;
14315     hvleavestabdelay    = 15;
14316     chiperasepulsewidth = 0;
14317     chiperasepolltimeout = 10;
14318     programfusepulsewidth = 0;
14319     programfusepolltimeout = 5;
14320     programlockpulsewidth = 0;
14321     programlockpolltimeout = 5;
14323     memory "eeprom"
14324         paged           = no; /* leave this "no" */
14325         page_size       = 4;  /* for parallel programming */
14326         size            = 512;
14327         num_pages       = 128;
14328         min_write_delay = 9000;
14329         max_write_delay = 9000;
14330         readback_p1     = 0x00;
14331         readback_p2     = 0x00;
14332         read            = "  1   0   1   0      0   0   0   0",
14333                           "  0   0   0   0    a11 a10  a9  a8",
14334                           " a7  a6  a5  a4     a3  a2  a1  a0",
14335                           "  o   o   o   o      o   o   o   o";
14337         write           = "  1   1   0   0      0   0   0   0",
14338                           "  0   0   0   0    a11 a10  a9  a8",
14339                           " a7  a6  a5  a4     a3  a2  a1  a0",
14340                           "  i   i   i   i      i   i   i   i";
14342         loadpage_lo     = "  1   1   0   0      0   0   0   1",
14343                           "  0   0   0   0      0   0   0   0",
14344                           "  0   0   0   0      0   0  a1  a0",
14345                           "  i   i   i   i      i   i   i   i";
14347         writepage       = "  1   1   0   0      0   0   1   0",
14348                           "  0   0   0   0    a11 a10  a9  a8",
14349                           " a7  a6  a5  a4     a3  a2   0   0",
14350                           "  x   x   x   x      x   x   x   x";
14352         mode            = 0x41;
14353         delay           = 20;
14354         blocksize       = 4;
14355         readsize        = 256;
14356       ;
14358     memory "flash"
14359         paged           = yes;
14360         size            = 16384;
14361         page_size       = 128;
14362         num_pages       = 128;
14363         min_write_delay = 4500;
14364         max_write_delay = 4500;
14365         readback_p1     = 0x00;
14366         readback_p2     = 0x00;
14367         read_lo         = "  0   0   1   0      0   0   0   0",
14368                           "a15 a14 a13 a12    a11 a10  a9  a8",
14369                           " a7  a6  a5  a4     a3  a2  a1  a0",
14370                           "  o   o   o   o      o   o   o   o";
14372         read_hi         = "  0   0   1   0      1   0   0   0",
14373                           "a15 a14 a13 a12    a11 a10  a9  a8",
14374                           " a7  a6  a5  a4     a3  a2  a1  a0",
14375                           "  o   o   o   o      o   o   o   o";
14377         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14378                           "  x   x   x   x      x   x   x   x",
14379                           "  x   x  a5  a4     a3  a2  a1  a0",
14380                           "  i   i   i   i      i   i   i   i";
14382         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14383                           "  x   x   x   x      x   x   x   x",
14384                           "  x   x  a5  a4     a3  a2  a1  a0",
14385                           "  i   i   i   i      i   i   i   i";
14387         writepage       = "  0   1   0   0      1   1   0   0",
14388                           "a15 a14 a13 a12    a11 a10  a9  a8",
14389                           " a7  a6   x   x      x   x   x   x",
14390                           "  x   x   x   x      x   x   x   x";
14392         mode            = 0x41;
14393         delay           = 6;
14394         blocksize       = 128;
14395         readsize        = 256;
14396       ;
14398     memory "lfuse"
14399         size            = 1;
14400         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
14401                           "x x x x  x x x x  i i i i  i i i i";
14403         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
14404                           "x x x x  x x x x  o o o o  o o o o";
14405         min_write_delay = 9000;
14406         max_write_delay = 9000;
14407       ;
14409     memory "hfuse"
14410         size            = 1;
14411         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
14412                           "x x x x  x x x x  i i i i  i i i i";
14414         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
14415                           "x x x x  x x x x  o o o o  o o o o";
14416         min_write_delay = 9000;
14417         max_write_delay = 9000;
14418       ;
14420     memory "efuse"
14421         size            = 1;
14422         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14423                           "x x x x  x x x x  i i i i  i i i i";
14425         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14426                           "x x x x  x x x x  o o o o  o o o o";
14427         min_write_delay = 9000;
14428         max_write_delay = 9000;
14429       ;
14431     memory "lock"
14432         size            = 1;
14433         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14434                           "x x x x  x x x x   x x o o  o o o o";
14436         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
14437                           "x x x x  x x x x   1 1 i i  i i i i";
14438         min_write_delay = 9000;
14439         max_write_delay = 9000;
14440       ;
14442     memory "calibration"
14443         size            = 1;
14444         read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
14445                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
14446       ;
14447     memory "signature"
14448         size            = 3;
14449         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
14450                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
14451       ;
14452   ;
14454 #------------------------------------------------------------
14455 # ATmega8U2
14456 #------------------------------------------------------------
14457 # Changes against ATmega16U2 (beside IDs)
14458 #    memory "flash"
14459 #        size            = 8192;
14460 #        page_size       = 64;
14461 #        blocksize       = 64;
14463 part
14464     id               = "m8u2";
14465     desc             = "ATmega8U2";
14466     has_jtag         = no;
14467     has_debugwire    = yes;
14468     signature        = 0x1e 0x93 0x89;
14469     chip_erase_delay = 9000;
14470     reset            = io;
14471     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
14472                        "x x x x  x x x x    x x x x  x x x x";
14473     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
14474                        "x x x x  x x x x    x x x x  x x x x";
14475     pagel            = 0xD7;
14476     bs2              = 0xC6;
14478     timeout             = 200;
14479     stabdelay           = 100;
14480     cmdexedelay         = 25;
14481     synchloops          = 32;
14482     bytedelay           = 0;
14483     pollindex           = 3;
14484     pollvalue           = 0x53;
14485     predelay            = 1;
14486     postdelay           = 1;
14487     pollmethod          = 1;
14488     pp_controlstack     =
14489         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
14490         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
14491         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
14492         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
14493     hventerstabdelay    = 100;
14494     progmodedelay       = 0;
14495     latchcycles         = 5;
14496     togglevtg           = 1;
14497     poweroffdelay       = 15;
14498     resetdelayms        = 1;
14499     resetdelayus        = 0;
14500     hvleavestabdelay    = 15;
14501     chiperasepulsewidth = 0;
14502     chiperasepolltimeout = 10;
14503     programfusepulsewidth = 0;
14504     programfusepolltimeout = 5;
14505     programlockpulsewidth = 0;
14506     programlockpolltimeout = 5;
14508     memory "eeprom"
14509         paged           = no; /* leave this "no" */
14510         page_size       = 4;  /* for parallel programming */
14511         size            = 512;
14512         num_pages       = 128;
14513         min_write_delay = 9000;
14514         max_write_delay = 9000;
14515         readback_p1     = 0x00;
14516         readback_p2     = 0x00;
14517         read            = "  1   0   1   0      0   0   0   0",
14518                           "  0   0   0   0    a11 a10  a9  a8",
14519                           " a7  a6  a5  a4     a3  a2  a1  a0",
14520                           "  o   o   o   o      o   o   o   o";
14522         write           = "  1   1   0   0      0   0   0   0",
14523                           "  0   0   0   0    a11 a10  a9  a8",
14524                           " a7  a6  a5  a4     a3  a2  a1  a0",
14525                           "  i   i   i   i      i   i   i   i";
14527         loadpage_lo     = "  1   1   0   0      0   0   0   1",
14528                           "  0   0   0   0      0   0   0   0",
14529                           "  0   0   0   0      0   0  a1  a0",
14530                           "  i   i   i   i      i   i   i   i";
14532         writepage       = "  1   1   0   0      0   0   1   0",
14533                           "  0   0   0   0    a11 a10  a9  a8",
14534                           " a7  a6  a5  a4     a3  a2   0   0",
14535                           "  x   x   x   x      x   x   x   x";
14537         mode            = 0x41;
14538         delay           = 20;
14539         blocksize       = 4;
14540         readsize        = 256;
14541       ;
14543     memory "flash"
14544         paged           = yes;
14545         size            = 8192;
14546         page_size       = 64;
14547         num_pages       = 128;
14548         min_write_delay = 4500;
14549         max_write_delay = 4500;
14550         readback_p1     = 0x00;
14551         readback_p2     = 0x00;
14552         read_lo         = "  0   0   1   0      0   0   0   0",
14553                           "a15 a14 a13 a12    a11 a10  a9  a8",
14554                           " a7  a6  a5  a4     a3  a2  a1  a0",
14555                           "  o   o   o   o      o   o   o   o";
14557         read_hi         = "  0   0   1   0      1   0   0   0",
14558                           "a15 a14 a13 a12    a11 a10  a9  a8",
14559                           " a7  a6  a5  a4     a3  a2  a1  a0",
14560                           "  o   o   o   o      o   o   o   o";
14562         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14563                           "  x   x   x   x      x   x   x   x",
14564                           "  x   x  a5  a4     a3  a2  a1  a0",
14565                           "  i   i   i   i      i   i   i   i";
14567         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14568                           "  x   x   x   x      x   x   x   x",
14569                           "  x   x  a5  a4     a3  a2  a1  a0",
14570                           "  i   i   i   i      i   i   i   i";
14572         writepage       = "  0   1   0   0      1   1   0   0",
14573                           "a15 a14 a13 a12    a11 a10  a9  a8",
14574                           " a7  a6   x   x      x   x   x   x",
14575                           "  x   x   x   x      x   x   x   x";
14577         mode            = 0x41;
14578         delay           = 6;
14579         blocksize       = 64;
14580         readsize        = 256;
14581       ;
14583     memory "lfuse"
14584         size            = 1;
14585         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
14586                           "x x x x  x x x x  i i i i  i i i i";
14588         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
14589                           "x x x x  x x x x  o o o o  o o o o";
14590         min_write_delay = 9000;
14591         max_write_delay = 9000;
14592       ;
14594     memory "hfuse"
14595         size            = 1;
14596         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
14597                           "x x x x  x x x x  i i i i  i i i i";
14599         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
14600                           "x x x x  x x x x  o o o o  o o o o";
14601         min_write_delay = 9000;
14602         max_write_delay = 9000;
14603       ;
14605     memory "efuse"
14606         size            = 1;
14607         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14608                           "x x x x  x x x x  i i i i  i i i i";
14610         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14611                           "x x x x  x x x x  o o o o  o o o o";
14612         min_write_delay = 9000;
14613         max_write_delay = 9000;
14614       ;
14616     memory "lock"
14617         size            = 1;
14618         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14619                           "x x x x  x x x x   x x o o  o o o o";
14621         write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
14622                           "x x x x  x x x x   1 1 i i  i i i i";
14623         min_write_delay = 9000;
14624         max_write_delay = 9000;
14625       ;
14627     memory "calibration"
14628         size            = 1;
14629         read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
14630                           "0 0 0 0  0 0 0 0    o o o o  o o o o";
14631       ;
14632     memory "signature"
14633         size            = 3;
14634         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
14635                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
14636       ;
14637   ;
14638 #------------------------------------------------------------
14639 # ATmega325
14640 #------------------------------------------------------------
14642 part
14643     id               = "m325";
14644     desc             = "ATMEGA325";
14645     signature        = 0x1e 0x95 0x05;
14646     has_jtag         = yes;
14647 #   stk500_devcode   = 0x??; # No STK500v1 support?
14648 #   avr910_devcode   = 0x??; # Try the ATmega16 one
14649     avr910_devcode   = 0x74;
14650     pagel            = 0xd7;
14651     bs2              = 0xa0;
14652     chip_erase_delay = 9000;
14653     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
14654                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
14656     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
14657                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
14659     timeout             = 200;
14660     stabdelay           = 100;
14661     cmdexedelay         = 25;
14662     synchloops          = 32;
14663     bytedelay           = 0;
14664     pollindex           = 3;
14665     pollvalue           = 0x53;
14666     predelay            = 1;
14667     postdelay           = 1;
14668     pollmethod          = 1;
14670     pp_controlstack     =
14671         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
14672         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
14673         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
14674         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
14675     hventerstabdelay    = 100;
14676     progmodedelay       = 0;
14677     latchcycles         = 5;
14678     togglevtg           = 1;
14679     poweroffdelay       = 15;
14680     resetdelayms        = 1;
14681     resetdelayus        = 0;
14682     hvleavestabdelay    = 15;
14683     chiperasepulsewidth = 0;
14684     chiperasepolltimeout = 10;
14685     programfusepulsewidth = 0;
14686     programfusepolltimeout = 5;
14687     programlockpulsewidth = 0;
14688     programlockpolltimeout = 5;
14690     idr                 = 0x31;
14691     spmcr               = 0x57;
14692     allowfullpagebitstream = no;
14694     memory "eeprom"
14695         paged           = no; /* leave this "no" */
14696         page_size       = 4;  /* for parallel programming */
14697         size            = 1024;
14698         min_write_delay = 9000;
14699         max_write_delay = 9000;
14700         readback_p1     = 0xff;
14701         readback_p2     = 0xff;
14702         read            = "  1   0   1   0      0   0   0   0",
14703                           "  0   0   0   0      0   0  a9  a8",
14704                           " a7  a6  a5  a4     a3  a2  a1  a0",
14705                           "  o   o   o   o      o   o   o   o";
14707         write           = "  1   1   0   0      0   0   0   0",
14708                           "  0   0   0   0      0   0  a9  a8",
14709                           " a7  a6  a5  a4     a3  a2  a1  a0",
14710                           "  i   i   i   i      i   i   i   i";
14712         loadpage_lo     = "  1   1   0   0      0   0   0   1",
14713                           "  0   0   0   0      0   0   0   0",
14714                           "  0   0   0   0      0   0  a1  a0",
14715                           "  i   i   i   i      i   i   i   i";
14717         writepage       = "  1   1   0   0      0   0   1   0",
14718                           "  0   0   0   0      0   0  a9  a8",
14719                           " a7  a6  a5  a4     a3  a2   0   0",
14720                           "  x   x   x   x      x   x   x   x";
14722         mode            = 0x41;
14723         delay           = 10;
14724         blocksize       = 4;
14725         readsize        = 256;
14726       ;
14728     memory "flash"
14729         paged           = yes;
14730         size            = 32768;
14731         page_size       = 128;
14732         num_pages       = 256;
14733         min_write_delay = 4500;
14734         max_write_delay = 4500;
14735         readback_p1     = 0xff;
14736         readback_p2     = 0xff;
14737         read_lo         = "  0   0   1   0      0   0   0   0",
14738                           "  0 a14 a13 a12    a11 a10  a9  a8",
14739                           " a7  a6  a5  a4     a3  a2  a1  a0",
14740                           "  o   o   o   o      o   o   o   o";
14742         read_hi         = "  0   0   1   0      1   0   0   0",
14743                           "  0 a14 a13 a12    a11 a10  a9  a8",
14744                           " a7  a6  a5  a4     a3  a2  a1  a0",
14745                           "  o   o   o   o      o   o   o   o";
14747         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14748                           "  0   0   0   0      0   0   0   0",
14749                           " a7  a6  a5  a4     a3  a2  a1  a0",
14750                           "  i   i   i   i      i   i   i   i";
14752         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14753                           "  0   0   0   0      0   0   0   0",
14754                           " a7  a6  a5  a4     a3  a2  a1  a0",
14755                           "  i   i   i   i      i   i   i   i";
14757         writepage       = "  0   1   0   0      1   1   0   0",
14758                           "  0 a14 a13 a12    a11 a10  a9  a8",
14759                           " a7  a6  a5  a4     a3  a2  a1  a0",
14760                           "  x   x   x   x      x   x   x   x";
14762         mode            = 0x41;
14763         delay           = 10;
14764         blocksize       = 128;
14765         readsize        = 256;
14766       ;
14768     memory "lock"
14769         size            = 1;
14770         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14771                           "x x x x  x x x x   x x o o  o o o o";
14773         write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
14774                           "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
14775         min_write_delay = 9000;
14776         max_write_delay = 9000;
14777       ;
14779     memory "lfuse"
14780         size            = 1;
14781         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
14782                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
14784         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
14785                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
14786         min_write_delay = 9000;
14787         max_write_delay = 9000;
14788       ;
14790     memory "hfuse"
14791         size            = 1;
14792         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
14793                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
14795         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
14796                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
14797         min_write_delay = 9000;
14798         max_write_delay = 9000;
14799       ;
14801     memory "efuse"
14802         size            = 1;
14804         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14805                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
14807         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14808                           "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
14809         min_write_delay = 9000;
14810         max_write_delay = 9000;
14811       ;
14813     memory "signature"
14814         size            = 3;
14815         read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
14816                           "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
14817       ;
14819     memory "calibration"
14820         size            = 1;
14822         read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
14823                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
14824         ;
14825   ;
14827 #------------------------------------------------------------
14828 # ATmega645
14829 #------------------------------------------------------------
14831 part
14832     id               = "m645";
14833     desc             = "ATMEGA645";
14834     signature        = 0x1E 0x96 0x05;
14835     has_jtag         = yes;
14836 #   stk500_devcode   = 0x??; # No STK500v1 support?
14837 #   avr910_devcode   = 0x??; # Try the ATmega16 one
14838     avr910_devcode   = 0x74;
14839     pagel            = 0xd7;
14840     bs2              = 0xa0;
14841     chip_erase_delay = 9000;
14842     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
14843                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
14845     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
14846                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
14848     timeout             = 200;
14849     stabdelay           = 100;
14850     cmdexedelay         = 25;
14851     synchloops          = 32;
14852     bytedelay           = 0;
14853     pollindex           = 3;
14854     pollvalue           = 0x53;
14855     predelay            = 1;
14856     postdelay           = 1;
14857     pollmethod          = 1;
14859     pp_controlstack     =
14860         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
14861         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
14862         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
14863         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
14864     hventerstabdelay    = 100;
14865     progmodedelay       = 0;
14866     latchcycles         = 5;
14867     togglevtg           = 1;
14868     poweroffdelay       = 15;
14869     resetdelayms        = 1;
14870     resetdelayus        = 0;
14871     hvleavestabdelay    = 15;
14872     chiperasepulsewidth = 0;
14873     chiperasepolltimeout = 10;
14874     programfusepulsewidth = 0;
14875     programfusepolltimeout = 5;
14876     programlockpulsewidth = 0;
14877     programlockpolltimeout = 5;
14879     idr                 = 0x31;
14880     spmcr               = 0x57;
14881     allowfullpagebitstream = no;
14883     memory "eeprom"
14884         paged           = no; /* leave this "no" */
14885         page_size       = 8;  /* for parallel programming */
14886         size            = 2048;
14887         min_write_delay = 9000;
14888         max_write_delay = 9000;
14889         readback_p1     = 0xff;
14890         readback_p2     = 0xff;
14891         read            = "  1   0   1   0      0   0   0   0",
14892                           "  0   0   0   0      0 a10  a9  a8",
14893                           " a7  a6  a5  a4     a3  a2  a1  a0",
14894                           "  o   o   o   o      o   o   o   o";
14896         write           = "  1   1   0   0      0   0   0   0",
14897                           "  0   0   0   0      0 a10  a9  a8",
14898                           " a7  a6  a5  a4     a3  a2  a1  a0",
14899                           "  i   i   i   i      i   i   i   i";
14901         loadpage_lo     = "  1   1   0   0      0   0   0   1",
14902                           "  0   0   0   0      0   0   0   0",
14903                           "  0   0   0   0      0  a2  a1  a0",
14904                           "  i   i   i   i      i   i   i   i";
14906         writepage       = "  1   1   0   0      0   0   1   0",
14907                           "  0   0   0   0      0 a10  a9  a8",
14908                           " a7  a6  a5  a4     a3   0   0   0",
14909                           "  x   x   x   x      x   x   x   x";
14911         mode            = 0x41;
14912         delay           = 10;
14913         blocksize       = 8;
14914         readsize        = 256;
14915       ;
14917     memory "flash"
14918         paged           = yes;
14919         size            = 65536;
14920         page_size       = 256;
14921         num_pages       = 256;
14922         min_write_delay = 4500;
14923         max_write_delay = 4500;
14924         readback_p1     = 0xff;
14925         readback_p2     = 0xff;
14926         read_lo         = "   0   0   1   0      0   0   0   0",
14927                           " a15 a14 a13 a12    a11 a10  a9  a8",
14928                           "  a7  a6  a5  a4     a3  a2  a1  a0",
14929                           "   o   o   o   o      o   o   o   o";
14931         read_hi         = "   0   0   1   0      1   0   0   0",
14932                           " a15 a14 a13 a12    a11 a10  a9  a8",
14933                           "  a7  a6  a5  a4     a3  a2  a1  a0",
14934                           "   o   o   o   o      o   o   o   o";
14936         loadpage_lo     = "  0   1   0   0      0   0   0   0",
14937                           "  0   0   0   0      0   0   0   0",
14938                           "  a7 a6  a5  a4     a3  a2  a1  a0",
14939                           "  i   i   i   i      i   i   i   i";
14941         loadpage_hi     = "  0   1   0   0      1   0   0   0",
14942                           "  0   0   0   0      0   0   0   0",
14943                           "  a7 a6  a5  a4     a3  a2  a1  a0",
14944                           "  i   i   i   i      i   i   i   i";
14946         writepage       = "   0   1   0   0      1   1   0   0",
14947                           " a15 a14 a13 a12    a11 a10  a9  a8",
14948                           "  a7  a6  a5  a4     a3  a2  a1  a0",
14949                           "   0   0   0   0      0   0   0   0";
14951         mode            = 0x41;
14952         delay           = 10;
14953         blocksize       = 128;
14954         readsize        = 256;
14955       ;
14957     memory "lock"
14958         size            = 1;
14959         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
14960                           "x x x x  x x x x   x x o o  o o o o";
14962         write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
14963                           "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
14964         min_write_delay = 9000;
14965         max_write_delay = 9000;
14966       ;
14968     memory "lfuse"
14969         size            = 1;
14970         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
14971                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
14973         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
14974                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
14975         min_write_delay = 9000;
14976         max_write_delay = 9000;
14977       ;
14979     memory "hfuse"
14980         size            = 1;
14981         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
14982                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
14984         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
14985                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
14986         min_write_delay = 9000;
14987         max_write_delay = 9000;
14988       ;
14990     memory "efuse"
14991         size            = 1;
14993         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
14994                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
14996         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
14997                           "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
14998         min_write_delay = 9000;
14999         max_write_delay = 9000;
15000       ;
15002     memory "signature"
15003         size            = 3;
15004         read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
15005                           "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
15006       ;
15008     memory "calibration"
15009         size            = 1;
15011         read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
15012                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15013         ;
15014   ;
15016 #------------------------------------------------------------
15017 # ATmega3250
15018 #------------------------------------------------------------
15020 part
15021     id               = "m3250";
15022     desc             = "ATMEGA3250";
15023     signature        = 0x1E 0x95 0x06;
15024     has_jtag         = yes;
15025 #   stk500_devcode   = 0x??; # No STK500v1 support?
15026 #   avr910_devcode   = 0x??; # Try the ATmega16 one
15027     avr910_devcode   = 0x74;
15028     pagel            = 0xd7;
15029     bs2              = 0xa0;
15030     chip_erase_delay = 9000;
15031     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
15032                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
15034     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
15035                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
15037     timeout             = 200;
15038     stabdelay           = 100;
15039     cmdexedelay         = 25;
15040     synchloops          = 32;
15041     bytedelay           = 0;
15042     pollindex           = 3;
15043     pollvalue           = 0x53;
15044     predelay            = 1;
15045     postdelay           = 1;
15046     pollmethod          = 1;
15048     pp_controlstack     =
15049         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
15050         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
15051         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
15052         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
15053     hventerstabdelay    = 100;
15054     progmodedelay       = 0;
15055     latchcycles         = 5;
15056     togglevtg           = 1;
15057     poweroffdelay       = 15;
15058     resetdelayms        = 1;
15059     resetdelayus        = 0;
15060     hvleavestabdelay    = 15;
15061     chiperasepulsewidth = 0;
15062     chiperasepolltimeout = 10;
15063     programfusepulsewidth = 0;
15064     programfusepolltimeout = 5;
15065     programlockpulsewidth = 0;
15066     programlockpolltimeout = 5;
15068     idr                 = 0x31;
15069     spmcr               = 0x57;
15070     allowfullpagebitstream = no;
15072     memory "eeprom"
15073         paged           = no; /* leave this "no" */
15074         page_size       = 4;  /* for parallel programming */
15075         size            = 1024;
15076         min_write_delay = 9000;
15077         max_write_delay = 9000;
15078         readback_p1     = 0xff;
15079         readback_p2     = 0xff;
15080         read            = "  1   0   1   0      0   0   0   0",
15081                           "  0   0   0   0      0   0  a9  a8",
15082                           " a7  a6  a5  a4     a3  a2  a1  a0",
15083                           "  o   o   o   o      o   o   o   o";
15085         write           = "  1   1   0   0      0   0   0   0",
15086                           "  0   0   0   0      0   0  a9  a8",
15087                           " a7  a6  a5  a4     a3  a2  a1  a0",
15088                           "  i   i   i   i      i   i   i   i";
15090         loadpage_lo     = "  1   1   0   0      0   0   0   1",
15091                           "  0   0   0   0      0   0   0   0",
15092                           "  0   0   0   0      0   0  a1  a0",
15093                           "  i   i   i   i      i   i   i   i";
15095         writepage       = "  1   1   0   0      0   0   1   0",
15096                           "  0   0   0   0      0   0  a9  a8",
15097                           " a7  a6  a5  a4     a3  a2   0   0",
15098                           "  x   x   x   x      x   x   x   x";
15100         mode            = 0x41;
15101         delay           = 10;
15102         blocksize       = 4;
15103         readsize        = 256;
15104       ;
15106     memory "flash"
15107         paged           = yes;
15108         size            = 32768;
15109         page_size       = 128;
15110         num_pages       = 256;
15111         min_write_delay = 4500;
15112         max_write_delay = 4500;
15113         readback_p1     = 0xff;
15114         readback_p2     = 0xff;
15115         read_lo         = "  0   0   1   0      0   0   0   0",
15116                           "  0 a14 a13 a12    a11 a10  a9  a8",
15117                           " a7  a6  a5  a4     a3  a2  a1  a0",
15118                           "  o   o   o   o      o   o   o   o";
15120         read_hi         = "  0   0   1   0      1   0   0   0",
15121                           "  0 a14 a13 a12    a11 a10  a9  a8",
15122                           " a7  a6  a5  a4     a3  a2  a1  a0",
15123                           "  o   o   o   o      o   o   o   o";
15125         loadpage_lo     = "  0   1   0   0      0   0   0   0",
15126                           "  0   0   0   0      0   0   0   0",
15127                           " a7  a6  a5  a4     a3  a2  a1  a0",
15128                           "  i   i   i   i      i   i   i   i";
15130         loadpage_hi     = "  0   1   0   0      1   0   0   0",
15131                           "  0   0   0   0      0   0   0   0",
15132                           " a7  a6  a5  a4     a3  a2  a1  a0",
15133                           "  i   i   i   i      i   i   i   i";
15135         writepage       = "  0   1   0   0      1   1   0   0",
15136                           "  0 a14 a13 a12    a11 a10  a9  a8",
15137                           " a7  a6  a5  a4     a3  a2  a1  a0",
15138                           "  x   x   x   x      x   x   x   x";
15140         mode            = 0x41;
15141         delay           = 10;
15142         blocksize       = 128;
15143         readsize        = 256;
15144       ;
15146     memory "lock"
15147         size            = 1;
15148         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
15149                           "x x x x  x x x x   x x o o  o o o o";
15151         write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
15152                           "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
15153         min_write_delay = 9000;
15154         max_write_delay = 9000;
15155       ;
15157     memory "lfuse"
15158         size            = 1;
15159         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
15160                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15162         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
15163                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
15164         min_write_delay = 9000;
15165         max_write_delay = 9000;
15166       ;
15168     memory "hfuse"
15169         size            = 1;
15170         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
15171                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15173         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
15174                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
15175         min_write_delay = 9000;
15176         max_write_delay = 9000;
15177       ;
15179     memory "efuse"
15180         size            = 1;
15182         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
15183                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
15185         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
15186                           "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
15187         min_write_delay = 9000;
15188         max_write_delay = 9000;
15189       ;
15191     memory "signature"
15192         size            = 3;
15193         read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
15194                           "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
15195       ;
15197     memory "calibration"
15198         size            = 1;
15200         read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
15201                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15202         ;
15203   ;
15205 #------------------------------------------------------------
15206 # ATmega6450
15207 #------------------------------------------------------------
15209 part
15210     id               = "m6450";
15211     desc             = "ATMEGA6450";
15212     signature        = 0x1E 0x96 0x06;
15213     has_jtag         = yes;
15214 #   stk500_devcode   = 0x??; # No STK500v1 support?
15215 #   avr910_devcode   = 0x??; # Try the ATmega16 one
15216     avr910_devcode   = 0x74;
15217     pagel            = 0xd7;
15218     bs2              = 0xa0;
15219     chip_erase_delay = 9000;
15220     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
15221                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
15223     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
15224                        "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
15226     timeout             = 200;
15227     stabdelay           = 100;
15228     cmdexedelay         = 25;
15229     synchloops          = 32;
15230     bytedelay           = 0;
15231     pollindex           = 3;
15232     pollvalue           = 0x53;
15233     predelay            = 1;
15234     postdelay           = 1;
15235     pollmethod          = 1;
15237     pp_controlstack     =
15238         0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
15239         0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
15240         0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
15241         0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
15242     hventerstabdelay    = 100;
15243     progmodedelay       = 0;
15244     latchcycles         = 5;
15245     togglevtg           = 1;
15246     poweroffdelay       = 15;
15247     resetdelayms        = 1;
15248     resetdelayus        = 0;
15249     hvleavestabdelay    = 15;
15250     chiperasepulsewidth = 0;
15251     chiperasepolltimeout = 10;
15252     programfusepulsewidth = 0;
15253     programfusepolltimeout = 5;
15254     programlockpulsewidth = 0;
15255     programlockpolltimeout = 5;
15257     idr                 = 0x31;
15258     spmcr               = 0x57;
15259     allowfullpagebitstream = no;
15261     memory "eeprom"
15262         paged           = no; /* leave this "no" */
15263         page_size       = 8;  /* for parallel programming */
15264         size            = 2048;
15265         min_write_delay = 9000;
15266         max_write_delay = 9000;
15267         readback_p1     = 0xff;
15268         readback_p2     = 0xff;
15269         read            = "  1   0   1   0      0   0   0   0",
15270                           "  0   0   0   0      0 a10  a9  a8",
15271                           " a7  a6  a5  a4     a3  a2  a1  a0",
15272                           "  o   o   o   o      o   o   o   o";
15274         write           = "  1   1   0   0      0   0   0   0",
15275                           "  0   0   0   0      0 a10  a9  a8",
15276                           " a7  a6  a5  a4     a3  a2  a1  a0",
15277                           "  i   i   i   i      i   i   i   i";
15279         loadpage_lo     = "  1   1   0   0      0   0   0   1",
15280                           "  0   0   0   0      0   0   0   0",
15281                           "  0   0   0   0      0  a2  a1  a0",
15282                           "  i   i   i   i      i   i   i   i";
15284         writepage       = "  1   1   0   0      0   0   1   0",
15285                           "  0   0   0   0      0 a10  a9  a8",
15286                           " a7  a6  a5  a4     a3   0   0   0",
15287                           "  x   x   x   x      x   x   x   x";
15289         mode            = 0x41;
15290         delay           = 10;
15291         blocksize       = 4;
15292         readsize        = 256;
15293       ;
15295     memory "flash"
15296         paged           = yes;
15297         size            = 65536;
15298         page_size       = 256;
15299         num_pages       = 256;
15300         min_write_delay = 4500;
15301         max_write_delay = 4500;
15302         readback_p1     = 0xff;
15303         readback_p2     = 0xff;
15304         read_lo         = "   0   0   1   0      0   0   0   0",
15305                           " a15 a14 a13 a12    a11 a10  a9  a8",
15306                           "  a7  a6  a5  a4     a3  a2  a1  a0",
15307                           "   o   o   o   o      o   o   o   o";
15309         read_hi         = "   0   0   1   0      1   0   0   0",
15310                           " a15 a14 a13 a12    a11 a10  a9  a8",
15311                           "  a7  a6  a5  a4     a3  a2  a1  a0",
15312                           "   o   o   o   o      o   o   o   o";
15314         loadpage_lo     = "  0   1   0   0      0   0   0   0",
15315                           "  0   0   0   0      0   0   0   0",
15316                           "  a7 a6  a5  a4     a3  a2  a1  a0",
15317                           "  i   i   i   i      i   i   i   i";
15319         loadpage_hi     = "  0   1   0   0      1   0   0   0",
15320                           "  0   0   0   0      0   0   0   0",
15321                           "  a7 a6  a5  a4     a3  a2  a1  a0",
15322                           "  i   i   i   i      i   i   i   i";
15324         writepage       = "   0   1   0   0      1   1   0   0",
15325                           " a15 a14 a13 a12    a11 a10  a9  a8",
15326                           "  a7  a6  a5  a4     a3  a2  a1  a0",
15327                           "   0   0   0   0      0   0   0   0";
15329         mode            = 0x41;
15330         delay           = 10;
15331         blocksize       = 128;
15332         readsize        = 256;
15333       ;
15335     memory "lock"
15336         size            = 1;
15337         read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
15338                           "x x x x  x x x x   x x o o  o o o o";
15340         write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
15341                           "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
15342         min_write_delay = 9000;
15343         max_write_delay = 9000;
15344       ;
15346     memory "lfuse"
15347         size            = 1;
15348         read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
15349                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15351         write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
15352                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
15353         min_write_delay = 9000;
15354         max_write_delay = 9000;
15355       ;
15357     memory "hfuse"
15358         size            = 1;
15359         read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
15360                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15362         write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
15363                           "0 0 0 0  0 0 0 0   i i i i  i i i i";
15364         min_write_delay = 9000;
15365         max_write_delay = 9000;
15366       ;
15368     memory "efuse"
15369         size            = 1;
15371         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
15372                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
15374         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
15375                           "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
15376         min_write_delay = 9000;
15377         max_write_delay = 9000;
15378       ;
15380     memory "signature"
15381         size            = 3;
15382         read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
15383                           "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
15384       ;
15386     memory "calibration"
15387         size            = 1;
15389         read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
15390                           "0 0 0 0  0 0 0 0   o o o o  o o o o";
15391         ;
15392   ;
15394 #------------------------------------------------------------
15395 # ATXMEGA64A1
15396 #------------------------------------------------------------
15398 part
15399     id          = "x64a1";
15400     desc        = "ATXMEGA64A1";
15401     signature   = 0x1e 0x96 0x4e;
15402     has_jtag    = yes;
15403     has_pdi     = yes;
15404     nvm_base    = 0x01c0;
15406     memory "eeprom"
15407         size            = 0x0800;
15408         offset          = 0x08c0000;
15409         page_size       = 0x20;
15410         readsize        = 0x100;
15411     ;
15413     memory "application"
15414         size            = 0x00010000;
15415         offset          = 0x0800000;
15416         page_size       = 0x100;
15417         readsize        = 0x100;
15418     ;
15420     memory "apptable"
15421         size            = 0x00001000;
15422         offset          = 0x0080f000;
15423         page_size       = 0x100;
15424         readsize        = 0x100;
15425     ;
15427     memory "boot"
15428         size            = 0x00001000;
15429         offset          = 0x00810000;
15430         page_size       = 0x100;
15431         readsize        = 0x100;
15432     ;
15434     memory "flash"
15435         size            = 0x00011000;
15436         offset          = 0x0800000;
15437         page_size       = 0x100;
15438         readsize        = 0x100;
15439     ;
15441     memory "prodsig"
15442         size            = 0x200;
15443         offset          = 0x8e0200;
15444         page_size       = 0x100;
15445         readsize        = 0x100;
15446     ;
15448     memory "usersig"
15449         size            = 0x200;
15450         offset          = 0x8e0400;
15451         page_size       = 0x100;
15452         readsize        = 0x100;
15453     ;
15455     memory "signature"
15456         size            = 3;
15457         offset          = 0x1000090;
15458     ;
15460     memory "fuse0"
15461         size            = 1;
15462         offset          = 0x8f0020;
15463     ;
15465     memory "fuse1"
15466         size            = 1;
15467         offset          = 0x8f0021;
15468     ;
15470     memory "fuse2"
15471         size            = 1;
15472         offset          = 0x8f0022;
15473     ;
15475     memory "fuse4"
15476         size            = 1;
15477         offset          = 0x8f0024;
15478     ;
15480     memory "fuse5"
15481         size            = 1;
15482         offset          = 0x8f0025;
15483     ;
15485     memory "lock"
15486         size            = 1;
15487         offset          = 0x8f0027;
15488     ;
15491 #------------------------------------------------------------
15492 # ATXMEGA128A1
15493 #------------------------------------------------------------
15495 part
15496     id          = "x128a1";
15497     desc        = "ATXMEGA128A1";
15498     signature   = 0x1e 0x97 0x4c;
15499     has_jtag    = yes;
15500     has_pdi     = yes;
15501     nvm_base    = 0x01c0;
15503     memory "eeprom"
15504         size            = 0x0800;
15505         offset          = 0x08c0000;
15506         page_size       = 0x20;
15507         readsize        = 0x100;
15508     ;
15510     memory "application"
15511         size            = 0x00020000;
15512         offset          = 0x0800000;
15513         page_size       = 0x100;
15514         readsize        = 0x100;
15515     ;
15517     memory "apptable"
15518         size            = 0x00002000;
15519         offset          = 0x0081e000;
15520         page_size       = 0x100;
15521         readsize        = 0x100;
15522     ;
15524     memory "boot"
15525         size            = 0x00002000;
15526         offset          = 0x00820000;
15527         page_size       = 0x100;
15528         readsize        = 0x100;
15529     ;
15531     memory "flash"
15532         size            = 0x00022000;
15533         offset          = 0x0800000;
15534         page_size       = 0x100;
15535         readsize        = 0x100;
15536     ;
15538     memory "prodsig"
15539         size            = 0x200;
15540         offset          = 0x8e0200;
15541         page_size       = 0x100;
15542         readsize        = 0x100;
15543     ;
15545     memory "usersig"
15546         size            = 0x200;
15547         offset          = 0x8e0400;
15548         page_size       = 0x100;
15549         readsize        = 0x100;
15550     ;
15552     memory "signature"
15553         size            = 3;
15554         offset          = 0x1000090;
15555     ;
15557     memory "fuse0"
15558         size            = 1;
15559         offset          = 0x8f0020;
15560     ;
15562     memory "fuse1"
15563         size            = 1;
15564         offset          = 0x8f0021;
15565     ;
15567     memory "fuse2"
15568         size            = 1;
15569         offset          = 0x8f0022;
15570     ;
15572     memory "fuse4"
15573         size            = 1;
15574         offset          = 0x8f0024;
15575     ;
15577     memory "fuse5"
15578         size            = 1;
15579         offset          = 0x8f0025;
15580     ;
15582     memory "lock"
15583         size            = 1;
15584         offset          = 0x8f0027;
15585     ;
15588 #------------------------------------------------------------
15589 # ATXMEGA128A1REVD
15590 #------------------------------------------------------------
15592 part
15593     id          = "x128a1d";
15594     desc        = "ATXMEGA128A1REVD";
15595     signature   = 0x1e 0x97 0x41;
15596     has_jtag    = yes;
15597     has_pdi     = yes;
15598     nvm_base    = 0x01c0;
15600     memory "eeprom"
15601         size            = 0x0800;
15602         offset          = 0x08c0000;
15603         page_size       = 0x20;
15604         readsize        = 0x100;
15605     ;
15607     memory "application"
15608         size            = 0x00020000;
15609         offset          = 0x0800000;
15610         page_size       = 0x100;
15611         readsize        = 0x100;
15612     ;
15614     memory "apptable"
15615         size            = 0x00002000;
15616         offset          = 0x0081e000;
15617         page_size       = 0x100;
15618         readsize        = 0x100;
15619     ;
15621     memory "boot"
15622         size            = 0x00002000;
15623         offset          = 0x00820000;
15624         page_size       = 0x100;
15625         readsize        = 0x100;
15626     ;
15628     memory "flash"
15629         size            = 0x00022000;
15630         offset          = 0x0800000;
15631         page_size       = 0x100;
15632         readsize        = 0x100;
15633     ;
15635     memory "prodsig"
15636         size            = 0x200;
15637         offset          = 0x8e0200;
15638         page_size       = 0x100;
15639         readsize        = 0x100;
15640     ;
15642     memory "usersig"
15643         size            = 0x200;
15644         offset          = 0x8e0400;
15645         page_size       = 0x100;
15646         readsize        = 0x100;
15647     ;
15649     memory "signature"
15650         size            = 3;
15651         offset          = 0x1000090;
15652     ;
15654     memory "fuse0"
15655         size            = 1;
15656         offset          = 0x8f0020;
15657     ;
15659     memory "fuse1"
15660         size            = 1;
15661         offset          = 0x8f0021;
15662     ;
15664     memory "fuse2"
15665         size            = 1;
15666         offset          = 0x8f0022;
15667     ;
15669     memory "fuse4"
15670         size            = 1;
15671         offset          = 0x8f0024;
15672     ;
15674     memory "fuse5"
15675         size            = 1;
15676         offset          = 0x8f0025;
15677     ;
15679     memory "lock"
15680         size            = 1;
15681         offset          = 0x8f0027;
15682     ;
15685 #------------------------------------------------------------
15686 # ATXMEGA192A1
15687 #------------------------------------------------------------
15689 part
15690     id          = "x192a1";
15691     desc        = "ATXMEGA192A1";
15692     signature   = 0x1e 0x97 0x4e;
15693     has_jtag    = yes;
15694     has_pdi     = yes;
15695     nvm_base    = 0x01c0;
15697     memory "eeprom"
15698         size            = 0x0800;
15699         offset          = 0x08c0000;
15700         page_size       = 0x20;
15701         readsize        = 0x100;
15702     ;
15704     memory "application"
15705         size            = 0x00030000;
15706         offset          = 0x0800000;
15707         page_size       = 0x100;
15708         readsize        = 0x100;
15709     ;
15711     memory "apptable"
15712         size            = 0x00002000;
15713         offset          = 0x0082e000;
15714         page_size       = 0x100;
15715         readsize        = 0x100;
15716     ;
15718     memory "boot"
15719         size            = 0x00002000;
15720         offset          = 0x00830000;
15721         page_size       = 0x100;
15722         readsize        = 0x100;
15723     ;
15725     memory "flash"
15726         size            = 0x00032000;
15727         offset          = 0x0800000;
15728         page_size       = 0x100;
15729         readsize        = 0x100;
15730     ;
15732     memory "prodsig"
15733         size            = 0x200;
15734         offset          = 0x8e0200;
15735         page_size       = 0x100;
15736         readsize        = 0x100;
15737     ;
15739     memory "usersig"
15740         size            = 0x200;
15741         offset          = 0x8e0400;
15742         page_size       = 0x100;
15743         readsize        = 0x100;
15744     ;
15746     memory "signature"
15747         size            = 3;
15748         offset          = 0x1000090;
15749     ;
15751     memory "fuse0"
15752         size            = 1;
15753         offset          = 0x8f0020;
15754     ;
15756     memory "fuse1"
15757         size            = 1;
15758         offset          = 0x8f0021;
15759     ;
15761     memory "fuse2"
15762         size            = 1;
15763         offset          = 0x8f0022;
15764     ;
15766     memory "fuse4"
15767         size            = 1;
15768         offset          = 0x8f0024;
15769     ;
15771     memory "fuse5"
15772         size            = 1;
15773         offset          = 0x8f0025;
15774     ;
15776     memory "lock"
15777         size            = 1;
15778         offset          = 0x8f0027;
15779     ;
15782 #------------------------------------------------------------
15783 # ATXMEGA256A1
15784 #------------------------------------------------------------
15786 part
15787     id          = "x256a1";
15788     desc        = "ATXMEGA256A1";
15789     signature   = 0x1e 0x98 0x46;
15790     has_jtag    = yes;
15791     has_pdi     = yes;
15792     nvm_base    = 0x01c0;
15794     memory "eeprom"
15795         size            = 0x1000;
15796         offset          = 0x08c0000;
15797         page_size       = 0x20;
15798         readsize        = 0x100;
15799     ;
15801     memory "application"
15802         size            = 0x00040000;
15803         offset          = 0x0800000;
15804         page_size       = 0x100;
15805         readsize        = 0x100;
15806     ;
15808     memory "apptable"
15809         size            = 0x00002000;
15810         offset          = 0x0083e000;
15811         page_size       = 0x100;
15812         readsize        = 0x100;
15813     ;
15815     memory "boot"
15816         size            = 0x00002000;
15817         offset          = 0x00840000;
15818         page_size       = 0x100;
15819         readsize        = 0x100;
15820     ;
15822     memory "flash"
15823         size            = 0x00042000;
15824         offset          = 0x0800000;
15825         page_size       = 0x100;
15826         readsize        = 0x100;
15827     ;
15829     memory "prodsig"
15830         size            = 0x200;
15831         offset          = 0x8e0200;
15832         page_size       = 0x100;
15833         readsize        = 0x100;
15834     ;
15836     memory "usersig"
15837         size            = 0x200;
15838         offset          = 0x8e0400;
15839         page_size       = 0x100;
15840         readsize        = 0x100;
15841     ;
15843     memory "signature"
15844         size            = 3;
15845         offset          = 0x1000090;
15846     ;
15848     memory "fuse0"
15849         size            = 1;
15850         offset          = 0x8f0020;
15851     ;
15853     memory "fuse1"
15854         size            = 1;
15855         offset          = 0x8f0021;
15856     ;
15858     memory "fuse2"
15859         size            = 1;
15860         offset          = 0x8f0022;
15861     ;
15863     memory "fuse4"
15864         size            = 1;
15865         offset          = 0x8f0024;
15866     ;
15868     memory "fuse5"
15869         size            = 1;
15870         offset          = 0x8f0025;
15871     ;
15873     memory "lock"
15874         size            = 1;
15875         offset          = 0x8f0027;
15876     ;
15879 #------------------------------------------------------------
15880 # ATXMEGA64A3
15881 #------------------------------------------------------------
15883 part
15884     id          = "x64a3";
15885     desc        = "ATXMEGA64A3";
15886     signature   = 0x1e 0x96 0x42;
15887     has_jtag    = yes;
15888     has_pdi     = yes;
15889     nvm_base    = 0x01c0;
15891     memory "eeprom"
15892         size            = 0x0800;
15893         offset          = 0x08c0000;
15894         page_size       = 0x20;
15895         readsize        = 0x100;
15896     ;
15898     memory "application"
15899         size            = 0x00010000;
15900         offset          = 0x0800000;
15901         page_size       = 0x100;
15902         readsize        = 0x100;
15903     ;
15905     memory "apptable"
15906         size            = 0x00001000;
15907         offset          = 0x0080f000;
15908         page_size       = 0x100;
15909         readsize        = 0x100;
15910     ;
15912     memory "boot"
15913         size            = 0x00001000;
15914         offset          = 0x00810000;
15915         page_size       = 0x100;
15916         readsize        = 0x100;
15917     ;
15919     memory "flash"
15920         size            = 0x00011000;
15921         offset          = 0x0800000;
15922         page_size       = 0x100;
15923         readsize        = 0x100;
15924     ;
15926     memory "prodsig"
15927         size            = 0x200;
15928         offset          = 0x8e0200;
15929         page_size       = 0x100;
15930         readsize        = 0x100;
15931     ;
15933     memory "usersig"
15934         size            = 0x200;
15935         offset          = 0x8e0400;
15936         page_size       = 0x100;
15937         readsize        = 0x100;
15938     ;
15940     memory "signature"
15941         size            = 3;
15942         offset          = 0x1000090;
15943     ;
15945     memory "fuse0"
15946         size            = 1;
15947         offset          = 0x8f0020;
15948     ;
15950     memory "fuse1"
15951         size            = 1;
15952         offset          = 0x8f0021;
15953     ;
15955     memory "fuse2"
15956         size            = 1;
15957         offset          = 0x8f0022;
15958     ;
15960     memory "fuse4"
15961         size            = 1;
15962         offset          = 0x8f0024;
15963     ;
15965     memory "fuse5"
15966         size            = 1;
15967         offset          = 0x8f0025;
15968     ;
15970     memory "lock"
15971         size            = 1;
15972         offset          = 0x8f0027;
15973     ;
15976 #------------------------------------------------------------
15977 # ATXMEGA128A3
15978 #------------------------------------------------------------
15980 part
15981     id          = "x128a3";
15982     desc        = "ATXMEGA128A3";
15983     signature   = 0x1e 0x97 0x42;
15984     has_jtag    = yes;
15985     has_pdi     = yes;
15986     nvm_base    = 0x01c0;
15988     memory "eeprom"
15989         size            = 0x0800;
15990         offset          = 0x08c0000;
15991         page_size       = 0x20;
15992         readsize        = 0x100;
15993     ;
15995     memory "application"
15996         size            = 0x00020000;
15997         offset          = 0x0800000;
15998         page_size       = 0x100;
15999         readsize        = 0x100;
16000     ;
16002     memory "apptable"
16003         size            = 0x00002000;
16004         offset          = 0x0081e000;
16005         page_size       = 0x100;
16006         readsize        = 0x100;
16007     ;
16009     memory "boot"
16010         size            = 0x00002000;
16011         offset          = 0x00820000;
16012         page_size       = 0x100;
16013         readsize        = 0x100;
16014     ;
16016     memory "flash"
16017         size            = 0x00022000;
16018         offset          = 0x0800000;
16019         page_size       = 0x100;
16020         readsize        = 0x100;
16021     ;
16023     memory "prodsig"
16024         size            = 0x200;
16025         offset          = 0x8e0200;
16026         page_size       = 0x100;
16027         readsize        = 0x100;
16028     ;
16030     memory "usersig"
16031         size            = 0x200;
16032         offset          = 0x8e0400;
16033         page_size       = 0x100;
16034         readsize        = 0x100;
16035     ;
16037     memory "signature"
16038         size            = 3;
16039         offset          = 0x1000090;
16040     ;
16042     memory "fuse0"
16043         size            = 1;
16044         offset          = 0x8f0020;
16045     ;
16047     memory "fuse1"
16048         size            = 1;
16049         offset          = 0x8f0021;
16050     ;
16052     memory "fuse2"
16053         size            = 1;
16054         offset          = 0x8f0022;
16055     ;
16057     memory "fuse4"
16058         size            = 1;
16059         offset          = 0x8f0024;
16060     ;
16062     memory "fuse5"
16063         size            = 1;
16064         offset          = 0x8f0025;
16065     ;
16067     memory "lock"
16068         size            = 1;
16069         offset          = 0x8f0027;
16070     ;
16073 #------------------------------------------------------------
16074 # ATXMEGA192A3
16075 #------------------------------------------------------------
16077 part
16078     id          = "x192a3";
16079     desc        = "ATXMEGA192A3";
16080     signature   = 0x1e 0x97 0x44;
16081     has_jtag    = yes;
16082     has_pdi     = yes;
16083     nvm_base    = 0x01c0;
16085     memory "eeprom"
16086         size            = 0x0800;
16087         offset          = 0x08c0000;
16088         page_size       = 0x20;
16089         readsize        = 0x100;
16090     ;
16092     memory "application"
16093         size            = 0x00030000;
16094         offset          = 0x0800000;
16095         page_size       = 0x100;
16096         readsize        = 0x100;
16097     ;
16099     memory "apptable"
16100         size            = 0x00002000;
16101         offset          = 0x0082e000;
16102         page_size       = 0x100;
16103         readsize        = 0x100;
16104     ;
16106     memory "boot"
16107         size            = 0x00002000;
16108         offset          = 0x00830000;
16109         page_size       = 0x100;
16110         readsize        = 0x100;
16111     ;
16113     memory "flash"
16114         size            = 0x00032000;
16115         offset          = 0x0800000;
16116         page_size       = 0x100;
16117         readsize        = 0x100;
16118     ;
16120     memory "prodsig"
16121         size            = 0x200;
16122         offset          = 0x8e0200;
16123         page_size       = 0x100;
16124         readsize        = 0x100;
16125     ;
16127     memory "usersig"
16128         size            = 0x200;
16129         offset          = 0x8e0400;
16130         page_size       = 0x100;
16131         readsize        = 0x100;
16132     ;
16134     memory "signature"
16135         size            = 3;
16136         offset          = 0x1000090;
16137     ;
16139     memory "fuse0"
16140         size            = 1;
16141         offset          = 0x8f0020;
16142     ;
16144     memory "fuse1"
16145         size            = 1;
16146         offset          = 0x8f0021;
16147     ;
16149     memory "fuse2"
16150         size            = 1;
16151         offset          = 0x8f0022;
16152     ;
16154     memory "fuse4"
16155         size            = 1;
16156         offset          = 0x8f0024;
16157     ;
16159     memory "fuse5"
16160         size            = 1;
16161         offset          = 0x8f0025;
16162     ;
16164     memory "lock"
16165         size            = 1;
16166         offset          = 0x8f0027;
16167     ;
16170 #------------------------------------------------------------
16171 # ATXMEGA256A3
16172 #------------------------------------------------------------
16174 part
16175     id          = "x256a3";
16176     desc        = "ATXMEGA256A3";
16177     signature   = 0x1e 0x98 0x42;
16178     has_jtag    = yes;
16179     has_pdi     = yes;
16180     nvm_base    = 0x01c0;
16182     memory "eeprom"
16183         size            = 0x1000;
16184         offset          = 0x08c0000;
16185         page_size       = 0x20;
16186         readsize        = 0x100;
16187     ;
16189     memory "application"
16190         size            = 0x00040000;
16191         offset          = 0x0800000;
16192         page_size       = 0x100;
16193         readsize        = 0x100;
16194     ;
16196     memory "apptable"
16197         size            = 0x00002000;
16198         offset          = 0x0083e000;
16199         page_size       = 0x100;
16200         readsize        = 0x100;
16201     ;
16203     memory "boot"
16204         size            = 0x00002000;
16205         offset          = 0x00840000;
16206         page_size       = 0x100;
16207         readsize        = 0x100;
16208     ;
16210     memory "flash"
16211         size            = 0x00042000;
16212         offset          = 0x0800000;
16213         page_size       = 0x100;
16214         readsize        = 0x100;
16215     ;
16217     memory "prodsig"
16218         size            = 0x200;
16219         offset          = 0x8e0200;
16220         page_size       = 0x100;
16221         readsize        = 0x100;
16222     ;
16224     memory "usersig"
16225         size            = 0x200;
16226         offset          = 0x8e0400;
16227         page_size       = 0x100;
16228         readsize        = 0x100;
16229     ;
16231     memory "signature"
16232         size            = 3;
16233         offset          = 0x1000090;
16234     ;
16236     memory "fuse0"
16237         size            = 1;
16238         offset          = 0x8f0020;
16239     ;
16241     memory "fuse1"
16242         size            = 1;
16243         offset          = 0x8f0021;
16244     ;
16246     memory "fuse2"
16247         size            = 1;
16248         offset          = 0x8f0022;
16249     ;
16251     memory "fuse4"
16252         size            = 1;
16253         offset          = 0x8f0024;
16254     ;
16256     memory "fuse5"
16257         size            = 1;
16258         offset          = 0x8f0025;
16259     ;
16261     memory "lock"
16262         size            = 1;
16263         offset          = 0x8f0027;
16264     ;
16267 #------------------------------------------------------------
16268 # ATXMEGA256A3B
16269 #------------------------------------------------------------
16271 part
16272     id          = "x256a3b";
16273     desc        = "ATXMEGA256A3B";
16274     signature   = 0x1e 0x98 0x43;
16275     has_jtag    = yes;
16276     has_pdi     = yes;
16277     nvm_base    = 0x01c0;
16279     memory "eeprom"
16280         size            = 0x1000;
16281         offset          = 0x08c0000;
16282         page_size       = 0x20;
16283         readsize        = 0x100;
16284     ;
16286     memory "application"
16287         size            = 0x00040000;
16288         offset          = 0x0800000;
16289         page_size       = 0x100;
16290         readsize        = 0x100;
16291     ;
16293     memory "apptable"
16294         size            = 0x00002000;
16295         offset          = 0x0083e000;
16296         page_size       = 0x100;
16297         readsize        = 0x100;
16298     ;
16300     memory "boot"
16301         size            = 0x00002000;
16302         offset          = 0x00840000;
16303         page_size       = 0x100;
16304         readsize        = 0x100;
16305     ;
16307     memory "flash"
16308         size            = 0x00042000;
16309         offset          = 0x0800000;
16310         page_size       = 0x100;
16311         readsize        = 0x100;
16312     ;
16314     memory "prodsig"
16315         size            = 0x200;
16316         offset          = 0x8e0200;
16317         page_size       = 0x100;
16318         readsize        = 0x100;
16319     ;
16321     memory "usersig"
16322         size            = 0x200;
16323         offset          = 0x8e0400;
16324         page_size       = 0x100;
16325         readsize        = 0x100;
16326     ;
16328     memory "signature"
16329         size            = 3;
16330         offset          = 0x1000090;
16331     ;
16333     memory "fuse0"
16334         size            = 1;
16335         offset          = 0x8f0020;
16336     ;
16338     memory "fuse1"
16339         size            = 1;
16340         offset          = 0x8f0021;
16341     ;
16343     memory "fuse2"
16344         size            = 1;
16345         offset          = 0x8f0022;
16346     ;
16348     memory "fuse4"
16349         size            = 1;
16350         offset          = 0x8f0024;
16351     ;
16353     memory "fuse5"
16354         size            = 1;
16355         offset          = 0x8f0025;
16356     ;
16358     memory "lock"
16359         size            = 1;
16360         offset          = 0x8f0027;
16361     ;
16364 #------------------------------------------------------------
16365 # ATXMEGA16A4
16366 #------------------------------------------------------------
16368 part
16369     id          = "x16a4";
16370     desc        = "ATXMEGA16A4";
16371     signature   = 0x1e 0x94 0x41;
16372     has_jtag    = yes;
16373     has_pdi     = yes;
16374     nvm_base    = 0x01c0;
16376     memory "eeprom"
16377         size            = 0x0400;
16378         offset          = 0x08c0000;
16379         page_size       = 0x20;
16380         readsize        = 0x100;
16381     ;
16383     memory "application"
16384         size            = 0x00004000;
16385         offset          = 0x0800000;
16386         page_size       = 0x100;
16387         readsize        = 0x100;
16388     ;
16390     memory "apptable"
16391         size            = 0x00001000;
16392         offset          = 0x00803000;
16393         page_size       = 0x100;
16394         readsize        = 0x100;
16395     ;
16397     memory "boot"
16398         size            = 0x00001000;
16399         offset          = 0x00804000;
16400         page_size       = 0x100;
16401         readsize        = 0x100;
16402     ;
16404     memory "flash"
16405         size            = 0x00005000;
16406         offset          = 0x0800000;
16407         page_size       = 0x100;
16408         readsize        = 0x100;
16409     ;
16411     memory "prodsig"
16412         size            = 0x200;
16413         offset          = 0x8e0200;
16414         page_size       = 0x100;
16415         readsize        = 0x100;
16416     ;
16418     memory "usersig"
16419         size            = 0x200;
16420         offset          = 0x8e0400;
16421         page_size       = 0x100;
16422         readsize        = 0x100;
16423     ;
16425     memory "signature"
16426         size            = 3;
16427         offset          = 0x1000090;
16428     ;
16430     memory "fuse0"
16431         size            = 1;
16432         offset          = 0x8f0020;
16433     ;
16435     memory "fuse1"
16436         size            = 1;
16437         offset          = 0x8f0021;
16438     ;
16440     memory "fuse2"
16441         size            = 1;
16442         offset          = 0x8f0022;
16443     ;
16445     memory "fuse4"
16446         size            = 1;
16447         offset          = 0x8f0024;
16448     ;
16450     memory "fuse5"
16451         size            = 1;
16452         offset          = 0x8f0025;
16453     ;
16455     memory "lock"
16456         size            = 1;
16457         offset          = 0x8f0027;
16458     ;
16461 #------------------------------------------------------------
16462 # ATXMEGA32A4
16463 #------------------------------------------------------------
16465 part
16466     id          = "x32a4";
16467     desc        = "ATXMEGA32A4";
16468     signature   = 0x1e 0x95 0x41;
16469     has_jtag    = yes;
16470     has_pdi     = yes;
16471     nvm_base    = 0x01c0;
16473     memory "eeprom"
16474         size            = 0x0400;
16475         offset          = 0x08c0000;
16476         page_size       = 0x20;
16477         readsize        = 0x100;
16478     ;
16480     memory "application"
16481         size            = 0x00008000;
16482         offset          = 0x0800000;
16483         page_size       = 0x100;
16484         readsize        = 0x100;
16485     ;
16487     memory "apptable"
16488         size            = 0x00001000;
16489         offset          = 0x00807000;
16490         page_size       = 0x100;
16491         readsize        = 0x100;
16492     ;
16494     memory "boot"
16495         size            = 0x00001000;
16496         offset          = 0x00808000;
16497         page_size       = 0x100;
16498         readsize        = 0x100;
16499     ;
16501     memory "flash"
16502         size            = 0x00009000;
16503         offset          = 0x0800000;
16504         page_size       = 0x100;
16505         readsize        = 0x100;
16506     ;
16508     memory "prodsig"
16509         size            = 0x200;
16510         offset          = 0x8e0200;
16511         page_size       = 0x100;
16512         readsize        = 0x100;
16513     ;
16515     memory "usersig"
16516         size            = 0x200;
16517         offset          = 0x8e0400;
16518         page_size       = 0x100;
16519         readsize        = 0x100;
16520     ;
16522     memory "signature"
16523         size            = 3;
16524         offset          = 0x1000090;
16525     ;
16527     memory "fuse0"
16528         size            = 1;
16529         offset          = 0x8f0020;
16530     ;
16532     memory "fuse1"
16533         size            = 1;
16534         offset          = 0x8f0021;
16535     ;
16537     memory "fuse2"
16538         size            = 1;
16539         offset          = 0x8f0022;
16540     ;
16542     memory "fuse4"
16543         size            = 1;
16544         offset          = 0x8f0024;
16545     ;
16547     memory "fuse5"
16548         size            = 1;
16549         offset          = 0x8f0025;
16550     ;
16552     memory "lock"
16553         size            = 1;
16554         offset          = 0x8f0027;
16555     ;
16558 #------------------------------------------------------------
16559 # ATXMEGA64A4
16560 #------------------------------------------------------------
16562 part
16563     id          = "x64a4";
16564     desc        = "ATXMEGA64A4";
16565     signature   = 0x1e 0x96 0x46;
16566     has_jtag    = yes;
16567     has_pdi     = yes;
16568     nvm_base    = 0x01c0;
16570     memory "eeprom"
16571         size            = 0x0800;
16572         offset          = 0x08c0000;
16573         page_size       = 0x20;
16574         readsize        = 0x100;
16575     ;
16577     memory "application"
16578         size            = 0x00010000;
16579         offset          = 0x0800000;
16580         page_size       = 0x100;
16581         readsize        = 0x100;
16582     ;
16584     memory "apptable"
16585         size            = 0x00001000;
16586         offset          = 0x0080f000;
16587         page_size       = 0x100;
16588         readsize        = 0x100;
16589     ;
16591     memory "boot"
16592         size            = 0x00001000;
16593         offset          = 0x00810000;
16594         page_size       = 0x100;
16595         readsize        = 0x100;
16596     ;
16598     memory "flash"
16599         size            = 0x00011000;
16600         offset          = 0x0800000;
16601         page_size       = 0x100;
16602         readsize        = 0x100;
16603     ;
16605     memory "prodsig"
16606         size            = 0x200;
16607         offset          = 0x8e0200;
16608         page_size       = 0x100;
16609         readsize        = 0x100;
16610     ;
16612     memory "usersig"
16613         size            = 0x200;
16614         offset          = 0x8e0400;
16615         page_size       = 0x100;
16616         readsize        = 0x100;
16617     ;
16619     memory "signature"
16620         size            = 3;
16621         offset          = 0x1000090;
16622     ;
16624     memory "fuse0"
16625         size            = 1;
16626         offset          = 0x8f0020;
16627     ;
16629     memory "fuse1"
16630         size            = 1;
16631         offset          = 0x8f0021;
16632     ;
16634     memory "fuse2"
16635         size            = 1;
16636         offset          = 0x8f0022;
16637     ;
16639     memory "fuse4"
16640         size            = 1;
16641         offset          = 0x8f0024;
16642     ;
16644     memory "fuse5"
16645         size            = 1;
16646         offset          = 0x8f0025;
16647     ;
16649     memory "lock"
16650         size            = 1;
16651         offset          = 0x8f0027;
16652     ;
16655 #------------------------------------------------------------
16656 # ATXMEGA128A4
16657 #------------------------------------------------------------
16659 part
16660     id          = "x128a4";
16661     desc        = "ATXMEGA128A4";
16662     signature   = 0x1e 0x97 0x46;
16663     has_jtag    = yes;
16664     has_pdi     = yes;
16665     nvm_base    = 0x01c0;
16667     memory "eeprom"
16668         size            = 0x0800;
16669         offset          = 0x08c0000;
16670         page_size       = 0x20;
16671         readsize        = 0x100;
16672     ;
16674     memory "application"
16675         size            = 0x00020000;
16676         offset          = 0x0800000;
16677         page_size       = 0x100;
16678         readsize        = 0x100;
16679     ;
16681     memory "apptable"
16682         size            = 0x00002000;
16683         offset          = 0x0081e000;
16684         page_size       = 0x100;
16685         readsize        = 0x100;
16686     ;
16688     memory "boot"
16689         size            = 0x00002000;
16690         offset          = 0x00820000;
16691         page_size       = 0x100;
16692         readsize        = 0x100;
16693     ;
16695     memory "flash"
16696         size            = 0x00022000;
16697         offset          = 0x0800000;
16698         page_size       = 0x100;
16699         readsize        = 0x100;
16700     ;
16702     memory "prodsig"
16703         size            = 0x200;
16704         offset          = 0x8e0200;
16705         page_size       = 0x100;
16706         readsize        = 0x100;
16707     ;
16709     memory "usersig"
16710         size            = 0x200;
16711         offset          = 0x8e0400;
16712         page_size       = 0x100;
16713         readsize        = 0x100;
16714     ;
16716     memory "signature"
16717         size            = 3;
16718         offset          = 0x1000090;
16719     ;
16721     memory "fuse0"
16722         size            = 1;
16723         offset          = 0x8f0020;
16724     ;
16726     memory "fuse1"
16727         size            = 1;
16728         offset          = 0x8f0021;
16729     ;
16731     memory "fuse2"
16732         size            = 1;
16733         offset          = 0x8f0022;
16734     ;
16736     memory "fuse4"
16737         size            = 1;
16738         offset          = 0x8f0024;
16739     ;
16741     memory "fuse5"
16742         size            = 1;
16743         offset          = 0x8f0025;
16744     ;
16746     memory "lock"
16747         size            = 1;
16748         offset          = 0x8f0027;
16749     ;
16753 #------------------------------------------------------------
16754 # AVR32UC3A0512
16755 #------------------------------------------------------------
16757 part
16758     id          = "ucr2";
16759     desc        = "32UC3A0512";
16760     signature   = 0xED 0xC0 0x3F;
16761     has_jtag    = yes;
16762     is_avr32    = yes;
16764     memory "flash"
16765         paged           = yes;
16766         page_size               = 512;               # bytes
16767         readsize                = 512;                           # bytes
16768         num_pages       = 1024;              # could be set dynamicly
16769         size                    = 0x00080000;            # could be set dynamicly
16770         offset                  = 0x80000000;
16771     ;
16774 #------------------------------------------------------------
16775 # ATtiny4
16776 #------------------------------------------------------------
16778 part
16779     id          = "t4";
16780     desc        = "ATtiny4";
16781     signature   = 0x1e 0x8f 0x0a;
16782     has_tpi     = yes;
16784     memory "flash"
16785         size            = 512;
16786         offset          = 0x4000;
16787         page_size       = 16;
16788         blocksize       = 128;
16789     ;
16791     memory "signature"
16792         size            = 3;
16793         offset          = 0x3fc0;
16794         page_size       = 16;
16795     ;
16797     memory "fuse"
16798         size            = 1;
16799         offset          = 0x3f40;
16800         page_size       = 16;
16801         blocksize       = 4;
16802     ;
16804     memory "calibration"
16805         size            = 1;
16806         offset          = 0x3f80;
16807         page_size       = 16;
16808     ;
16810     memory "lockbits"
16811         size            = 1;
16812         offset          = 0x3f00;
16813         page_size       = 16;
16814     ;
16818 #------------------------------------------------------------
16819 # ATtiny5
16820 #------------------------------------------------------------
16822 part
16823     id          = "t5";
16824     desc        = "ATtiny5";
16825     signature   = 0x1e 0x8f 0x09;
16826     has_tpi     = yes;
16828     memory "flash"
16829         size            = 512;
16830         offset          = 0x4000;
16831         page_size       = 16;
16832         blocksize       = 128;
16833     ;
16835     memory "signature"
16836         size            = 3;
16837         offset          = 0x3fc0;
16838         page_size       = 16;
16839     ;
16841     memory "fuse"
16842         size            = 1;
16843         offset          = 0x3f40;
16844         page_size       = 16;
16845         blocksize       = 4;
16846     ;
16848     memory "calibration"
16849         size            = 1;
16850         offset          = 0x3f80;
16851         page_size       = 16;
16852     ;
16854     memory "lockbits"
16855         size            = 1;
16856         offset          = 0x3f00;
16857         page_size       = 16;
16858     ;
16862 #------------------------------------------------------------
16863 # ATtiny9
16864 #------------------------------------------------------------
16866 part
16867     id          = "t9";
16868     desc        = "ATtiny9";
16869     signature   = 0x1e 0x90 0x08;
16870     has_tpi     = yes;
16872     memory "flash"
16873         size            = 1024;
16874         offset          = 0x4000;
16875         page_size       = 16;
16876         blocksize       = 128;
16877     ;
16879     memory "signature"
16880         size            = 3;
16881         offset          = 0x3fc0;
16882         page_size       = 16;
16883     ;
16885     memory "fuse"
16886         size            = 1;
16887         offset          = 0x3f40;
16888         page_size       = 16;
16889         blocksize       = 4;
16890     ;
16892     memory "calibration"
16893         size            = 1;
16894         offset          = 0x3f80;
16895         page_size       = 16;
16896     ;
16898     memory "lockbits"
16899         size            = 1;
16900         offset          = 0x3f00;
16901         page_size       = 16;
16902     ;
16906 #------------------------------------------------------------
16907 # ATtiny10
16908 #------------------------------------------------------------
16910 part
16911     id          = "t10";
16912     desc        = "ATtiny10";
16913     signature   = 0x1e 0x90 0x03;
16914     has_tpi     = yes;
16916     memory "flash"
16917         size            = 1024;
16918         offset          = 0x4000;
16919         page_size       = 16;
16920         blocksize       = 128;
16921     ;
16923     memory "signature"
16924         size            = 3;
16925         offset          = 0x3fc0;
16926         page_size       = 16;
16927     ;
16929     memory "fuse"
16930         size            = 1;
16931         offset          = 0x3f40;
16932         page_size       = 16;
16933         blocksize       = 4;
16934     ;
16936     memory "calibration"
16937         size            = 1;
16938         offset          = 0x3f80;
16939         page_size       = 16;
16940     ;
16942     memory "lockbits"
16943         size            = 1;
16944         offset          = 0x3f00;
16945         page_size       = 16;
16946     ;