diff --git a/src/avrdude.conf.in b/src/avrdude.conf.in
index e2a330ff..018850d3 100644
--- a/src/avrdude.conf.in
+++ b/src/avrdude.conf.in
@@ -2337,6 +2337,9 @@ programmer
 part
     desc                   = "ATtiny11";
     id                     = "t11";
+    prog_modes             = PM_HVSP;
+    mcuid                  = 8;
+    n_interrupts           = 5;
     stk500_devcode         = 0x11;
     chip_erase_delay       = 20000;
     signature              = 0x1e 0x90 0x04;
@@ -2397,6 +2400,9 @@ part
 part
     desc                   = "ATtiny12";
     id                     = "t12";
+    prog_modes             = PM_ISP | PM_HVSP;
+    mcuid                  = 9;
+    n_interrupts           = 6;
     stk500_devcode         = 0x12;
     avr910_devcode         = 0x55;
     chip_erase_delay       = 20000;
@@ -2490,6 +2496,9 @@ part
 part
     desc                   = "ATtiny13";
     id                     = "t13";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 10;
+    n_interrupts           = 10;
     stk500_devcode         = 0x14;
     chip_erase_delay       = 4000;
     signature              = 0x1e 0x90 0x07;
@@ -2605,6 +2614,7 @@ part
 part parent "t13"
     desc                   = "ATtiny13A";
     id                     = "t13a";
+    mcuid                  = 11;
 ;
 
 #------------------------------------------------------------
@@ -2614,6 +2624,9 @@ part parent "t13"
 part
     desc                   = "ATtiny15";
     id                     = "t15";
+    prog_modes             = PM_ISP | PM_HVSP;
+    mcuid                  = 12;
+    n_interrupts           = 9;
     stk500_devcode         = 0x13;
     avr910_devcode         = 0x56;
     chip_erase_delay       = 8200;
@@ -2708,6 +2721,9 @@ part
 part
     desc                   = "AT90S1200";
     id                     = "1200";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 183;
+    n_interrupts           = 4;
     stk500_devcode         = 0x33;
     avr910_devcode         = 0x13;
     chip_erase_delay       = 20000;
@@ -2787,6 +2803,9 @@ part
 part
     desc                   = "AT90S4414";
     id                     = "4414";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 190;
+    n_interrupts           = 13;
     stk500_devcode         = 0x50;
     avr910_devcode         = 0x28;
     chip_erase_delay       = 20000;
@@ -2864,6 +2883,9 @@ part
 part
     desc                   = "AT90S2313";
     id                     = "2313";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 186;
+    n_interrupts           = 11;
     stk500_devcode         = 0x40;
     avr910_devcode         = 0x20;
     chip_erase_delay       = 20000;
@@ -2942,6 +2964,9 @@ part
 ##### WARNING: No XML file for device 'AT90S2333'! #####
     desc                   = "AT90S2333";
     id                     = "2333";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 188;
+    n_interrupts           = 14;
     stk500_devcode         = 0x42;
     avr910_devcode         = 0x34;
     chip_erase_delay       = 20000;
@@ -3025,6 +3050,9 @@ part
 part
     desc                   = "AT90S2343";
     id                     = "2343";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP;
+    mcuid                  = 189;
+    n_interrupts           = 3;
     stk500_devcode         = 0x43;
     avr910_devcode         = 0x4c;
     chip_erase_delay       = 18000;
@@ -3112,6 +3140,9 @@ part
 part
     desc                   = "AT90S4433";
     id                     = "4433";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 191;
+    n_interrupts           = 14;
     stk500_devcode         = 0x51;
     avr910_devcode         = 0x30;
     chip_erase_delay       = 20000;
@@ -3196,6 +3227,9 @@ part
 ##### WARNING: No XML file for device 'AT90S4434'! #####
     desc                   = "AT90S4434";
     id                     = "4434";
+    prog_modes             = PM_SPM | PM_ISP;
+    mcuid                  = 192;
+    n_interrupts           = 17;
     stk500_devcode         = 0x52;
     avr910_devcode         = 0x6c;
     chip_erase_delay       = 20000;
@@ -3252,6 +3286,9 @@ part
 part
     desc                   = "AT90S8515";
     id                     = "8515";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 193;
+    n_interrupts           = 13;
     stk500_devcode         = 0x60;
     avr910_devcode         = 0x38;
     chip_erase_delay       = 20000;
@@ -3330,6 +3367,9 @@ part
 part
     desc                   = "AT90S8535";
     id                     = "8535";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 195;
+    n_interrupts           = 17;
     stk500_devcode         = 0x61;
     avr910_devcode         = 0x68;
     chip_erase_delay       = 20000;
@@ -3412,6 +3452,9 @@ part
 part
     desc                   = "ATmega103";
     id                     = "m103";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 84;
+    n_interrupts           = 24;
     stk500_devcode         = 0xb1;
     avr910_devcode         = 0x41;
     chip_erase_delay       = 112000;
@@ -3498,6 +3541,9 @@ part
 part
     desc                   = "ATmega64";
     id                     = "m64";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 72;
+    n_interrupts           = 35;
     stk500_devcode         = 0xa0;
     avr910_devcode         = 0x45;
     chip_erase_delay       = 9000;
@@ -3615,6 +3661,7 @@ part
 part parent "m64"
     desc                   = "ATmega64A";
     id                     = "m64a";
+    mcuid                  = 73;
 ;
 
 #------------------------------------------------------------
@@ -3624,6 +3671,9 @@ part parent "m64"
 part
     desc                   = "ATmega128";
     id                     = "m128";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 85;
+    n_interrupts           = 35;
     stk500_devcode         = 0xb2;
     avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -3742,6 +3792,7 @@ part
 part parent "m128"
     desc                   = "ATmega128A";
     id                     = "m128a";
+    mcuid                  = 86;
 ;
 
 #------------------------------------------------------------
@@ -3751,6 +3802,9 @@ part parent "m128"
 part
     desc                   = "AT90CAN128";
     id                     = "c128";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 176;
+    n_interrupts           = 37;
     stk500_devcode         = 0xb3;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -3872,6 +3926,9 @@ part
 part
     desc                   = "AT90CAN64";
     id                     = "c64";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 172;
+    n_interrupts           = 37;
     stk500_devcode         = 0xb3;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -3993,6 +4050,9 @@ part
 part
     desc                   = "AT90CAN32";
     id                     = "c32";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 171;
+    n_interrupts           = 37;
     stk500_devcode         = 0xb3;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -4114,6 +4174,9 @@ part
 part
     desc                   = "ATmega16";
     id                     = "m16";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 49;
+    n_interrupts           = 21;
     stk500_devcode         = 0x82;
     avr910_devcode         = 0x74;
     chip_erase_delay       = 9000;
@@ -4227,6 +4290,7 @@ part
 part parent "m16"
     desc                   = "ATmega16A";
     id                     = "m16a";
+    mcuid                  = 50;
 ;
 
 #------------------------------------------------------------
@@ -4236,6 +4300,9 @@ part parent "m16"
 part
     desc                   = "ATmega324P";
     id                     = "m324p";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 111;
+    n_interrupts           = 31;
     stk500_devcode         = 0x82; # no STK500v1 support, use the ATmega16 one
     avr910_devcode         = 0x74;
     chip_erase_delay       = 55000;
@@ -4357,6 +4424,7 @@ part
 part parent "m324p"
     desc                   = "ATmega164P";
     id                     = "m164p";
+    mcuid                  = 93;
     signature              = 0x1e 0x94 0x0a;
 
     memory "eeprom"
@@ -4376,6 +4444,7 @@ part parent "m324p"
 part parent "m164p"
     desc                   = "ATmega164PA";
     id                     = "m164pa";
+    mcuid                  = 94;
 ;
 
 #------------------------------------------------------------
@@ -4385,6 +4454,7 @@ part parent "m164p"
 part parent "m164p"
     desc                   = "ATmega164A";
     id                     = "m164a";
+    mcuid                  = 92;
     signature              = 0x1e 0x94 0x0f;
 ;
 
@@ -4395,6 +4465,7 @@ part parent "m164p"
 part parent "m324p"
     desc                   = "ATmega324PB";
     id                     = "m324pb";
+    mcuid                  = 113;
     signature              = 0x1e 0x95 0x17;
 ;
 
@@ -4405,6 +4476,7 @@ part parent "m324p"
 part parent "m324p"
     desc                   = "ATmega324PA";
     id                     = "m324pa";
+    mcuid                  = 112;
     signature              = 0x1e 0x95 0x11;
 ;
 
@@ -4415,6 +4487,7 @@ part parent "m324p"
 part parent "m324p"
     desc                   = "ATmega324A";
     id                     = "m324a";
+    mcuid                  = 110;
     signature              = 0x1e 0x95 0x15;
 ;
 
@@ -4425,6 +4498,9 @@ part parent "m324p"
 part
     desc                   = "ATmega644";
     id                     = "m644";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 127;
+    n_interrupts           = 28;
     stk500_devcode         = 0x82; # no STK500v1 support, use the ATmega16 one
     avr910_devcode         = 0x74;
     chip_erase_delay       = 55000;
@@ -4543,6 +4619,8 @@ part
 part parent "m644"
     desc                   = "ATmega644A";
     id                     = "m644a";
+    mcuid                  = 128;
+    n_interrupts           = 31;
 ;
 
 #------------------------------------------------------------
@@ -4552,6 +4630,8 @@ part parent "m644"
 part parent "m644"
     desc                   = "ATmega644P";
     id                     = "m644p";
+    mcuid                  = 129;
+    n_interrupts           = 31;
     signature              = 0x1e 0x96 0x0a;
 ;
 
@@ -4562,6 +4642,8 @@ part parent "m644"
 part parent "m644"
     desc                   = "ATmega644PA";
     id                     = "m644pa";
+    mcuid                  = 130;
+    n_interrupts           = 31;
     signature              = 0x1e 0x96 0x0a;
 ;
 
@@ -4572,6 +4654,9 @@ part parent "m644"
 part
     desc                   = "ATmega1284";
     id                     = "m1284";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 140;
+    n_interrupts           = 35;
     stk500_devcode         = 0x82; # no STK500v1 support, use the ATmega16 one
     avr910_devcode         = 0x74;
     chip_erase_delay       = 55000;
@@ -4694,6 +4779,7 @@ part
 part parent "m1284"
     desc                   = "ATmega1284P";
     id                     = "m1284p";
+    mcuid                  = 141;
     signature              = 0x1e 0x97 0x05;
 ;
 
@@ -4704,6 +4790,9 @@ part parent "m1284"
 part
     desc                   = "ATmega162";
     id                     = "m162";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 90;
+    n_interrupts           = 28;
     stk500_devcode         = 0x83;
     avr910_devcode         = 0x63;
     chip_erase_delay       = 9000;
@@ -4823,6 +4912,9 @@ part
 part
     desc                   = "ATmega163";
     id                     = "m163";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 91;
+    n_interrupts           = 18;
     stk500_devcode         = 0x81;
     avr910_devcode         = 0x64;
     chip_erase_delay       = 32000;
@@ -4924,6 +5016,9 @@ part
 part
     desc                   = "ATmega169";
     id                     = "m169";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 104;
+    n_interrupts           = 23;
     stk500_devcode         = 0x85;
     avr910_devcode         = 0x78;
     chip_erase_delay       = 9000;
@@ -5043,6 +5138,7 @@ part
 part parent "m169"
     desc                   = "ATmega169A";
     id                     = "m169a";
+    mcuid                  = 105;
     signature              = 0x1e 0x94 0x11;
     reset                  = io;
 ;
@@ -5054,6 +5150,7 @@ part parent "m169"
 part parent "m169"
     desc                   = "ATmega169P";
     id                     = "m169p";
+    mcuid                  = 106;
     reset                  = io;
 ;
 
@@ -5064,6 +5161,7 @@ part parent "m169"
 part parent "m169"
     desc                   = "ATmega169PA";
     id                     = "m169pa";
+    mcuid                  = 107;
     reset                  = io;
 ;
 
@@ -5074,6 +5172,9 @@ part parent "m169"
 part
     desc                   = "ATmega329";
     id                     = "m329";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 121;
+    n_interrupts           = 23;
 #   stk500_devcode         = 0x85; # no STK500 support, only STK500v2
 #   avr910_devcode         = 0x?;  # try the ATmega169 one:
     avr910_devcode         = 0x75;
@@ -5195,6 +5296,7 @@ part
 part parent "m329"
     desc                   = "ATmega329A";
     id                     = "m329a";
+    mcuid                  = 122;
 ;
 
 #------------------------------------------------------------
@@ -5204,6 +5306,7 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega329P";
     id                     = "m329p";
+    mcuid                  = 123;
     signature              = 0x1e 0x95 0x0b;
 ;
 
@@ -5214,6 +5317,7 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega329PA";
     id                     = "m329pa";
+    mcuid                  = 124;
     signature              = 0x1e 0x95 0x0b;
 ;
 
@@ -5224,6 +5328,8 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega3290";
     id                     = "m3290";
+    mcuid                  = 150;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x04;
 ;
 
@@ -5234,6 +5340,8 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega3290A";
     id                     = "m3290a";
+    mcuid                  = 151;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x04;
 ;
 
@@ -5244,6 +5352,8 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega3290P";
     id                     = "m3290p";
+    mcuid                  = 152;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x0c;
 ;
 
@@ -5254,6 +5364,8 @@ part parent "m329"
 part parent "m329"
     desc                   = "ATmega3290PA";
     id                     = "m3290pa";
+    mcuid                  = 153;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x0c;
 ;
 
@@ -5264,6 +5376,9 @@ part parent "m329"
 part
     desc                   = "ATmega649";
     id                     = "m649";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 135;
+    n_interrupts           = 23;
 #   stk500_devcode         = 0x85; # no STK500 support, only STK500v2
 #   avr910_devcode         = 0x?;  # try the ATmega169 one:
     avr910_devcode         = 0x75;
@@ -5385,6 +5500,7 @@ part
 part parent "m649"
     desc                   = "ATmega649A";
     id                     = "m649a";
+    mcuid                  = 136;
 ;
 
 #------------------------------------------------------------
@@ -5394,6 +5510,7 @@ part parent "m649"
 part parent "m649"
     desc                   = "ATmega649P";
     id                     = "m649p";
+    mcuid                  = 137;
     signature              = 0x1e 0x96 0x0b;
 ;
 
@@ -5404,6 +5521,8 @@ part parent "m649"
 part parent "m649"
     desc                   = "ATmega6490";
     id                     = "m6490";
+    mcuid                  = 157;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x04;
 ;
 
@@ -5414,6 +5533,8 @@ part parent "m649"
 part parent "m649"
     desc                   = "ATmega6490A";
     id                     = "m6490a";
+    mcuid                  = 158;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x04;
 ;
 
@@ -5424,6 +5545,8 @@ part parent "m649"
 part parent "m649"
     desc                   = "ATmega6490P";
     id                     = "m6490p";
+    mcuid                  = 159;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x0c;
 ;
 
@@ -5434,6 +5557,9 @@ part parent "m649"
 part
     desc                   = "ATmega32";
     id                     = "m32";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 58;
+    n_interrupts           = 21;
     stk500_devcode         = 0x91;
     avr910_devcode         = 0x72;
     chip_erase_delay       = 9000;
@@ -5545,6 +5671,9 @@ part
 part
     desc                   = "ATmega161";
     id                     = "m161";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 89;
+    n_interrupts           = 21;
     stk500_devcode         = 0x80;
     avr910_devcode         = 0x60;
     chip_erase_delay       = 28000;
@@ -5633,6 +5762,7 @@ part
 part parent "m32"
     desc                   = "ATmega32A";
     id                     = "m32a";
+    mcuid                  = 59;
 ;
 
 #------------------------------------------------------------
@@ -5642,6 +5772,9 @@ part parent "m32"
 part
     desc                   = "ATmega8";
     id                     = "m8";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 45;
+    n_interrupts           = 19;
     stk500_devcode         = 0x70;
     avr910_devcode         = 0x76;
     chip_erase_delay       = 10000;
@@ -5750,6 +5883,7 @@ part
 part parent "m8"
     desc                   = "ATmega8A";
     id                     = "m8a";
+    mcuid                  = 46;
 ;
 
 #------------------------------------------------------------
@@ -5759,6 +5893,9 @@ part parent "m8"
 part
     desc                   = "ATmega8515";
     id                     = "m8515";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 160;
+    n_interrupts           = 17;
     stk500_devcode         = 0x63;
     avr910_devcode         = 0x3a;
     chip_erase_delay       = 9000;
@@ -5859,6 +5996,9 @@ part
 part
     desc                   = "ATmega8535";
     id                     = "m8535";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP;
+    mcuid                  = 161;
+    n_interrupts           = 21;
     stk500_devcode         = 0x64;
     avr910_devcode         = 0x69;
     chip_erase_delay       = 9000;
@@ -5961,6 +6101,9 @@ part
 part
     desc                   = "ATtiny26";
     id                     = "t26";
+    prog_modes             = PM_ISP | PM_HVPP;
+    mcuid                  = 17;
+    n_interrupts           = 12;
     stk500_devcode         = 0x21;
     avr910_devcode         = 0x5e;
     chip_erase_delay       = 9000;
@@ -6066,6 +6209,9 @@ part
 part
     desc                   = "ATtiny261";
     id                     = "t261";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 30;
+    n_interrupts           = 19;
     chip_erase_delay       = 4000;
     pagel                  = 0xb3;
     bs2                    = 0xb2;
@@ -6190,6 +6336,7 @@ part
 part parent "t261"
     desc                   = "ATtiny261A";
     id                     = "t261a";
+    mcuid                  = 31;
 ;
 
 #------------------------------------------------------------
@@ -6199,6 +6346,9 @@ part parent "t261"
 part
     desc                   = "ATtiny461";
     id                     = "t461";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 33;
+    n_interrupts           = 19;
     chip_erase_delay       = 4000;
     pagel                  = 0xb3;
     bs2                    = 0xb2;
@@ -6323,6 +6473,7 @@ part
 part parent "t461"
     desc                   = "ATtiny461A";
     id                     = "t461a";
+    mcuid                  = 34;
 ;
 
 #------------------------------------------------------------
@@ -6332,6 +6483,9 @@ part parent "t461"
 part
     desc                   = "ATtiny861";
     id                     = "t861";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 38;
+    n_interrupts           = 19;
     chip_erase_delay       = 4000;
     pagel                  = 0xb3;
     bs2                    = 0xb2;
@@ -6456,6 +6610,7 @@ part
 part parent "t861"
     desc                   = "ATtiny861A";
     id                     = "t861a";
+    mcuid                  = 39;
 ;
 
 #------------------------------------------------------------
@@ -6467,6 +6622,9 @@ part parent "t861"
 part
     desc                   = "ATtiny28";
     id                     = "t28";
+    prog_modes             = PM_HVPP;
+    mcuid                  = 18;
+    n_interrupts           = 6;
     stk500_devcode         = 0x22;
     avr910_devcode         = 0x5c;
     signature              = 0x1e 0x91 0x07;
@@ -6514,6 +6672,9 @@ part
 part
     desc                   = "ATmega48";
     id                     = "m48";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 67;
+    n_interrupts           = 26;
     stk500_devcode         = 0x59;
     chip_erase_delay       = 45000;
     pagel                  = 0xd7;
@@ -6639,6 +6800,7 @@ part
 part parent "m48"
     desc                   = "ATmega48A";
     id                     = "m48a";
+    mcuid                  = 68;
 ;
 
 #------------------------------------------------------------
@@ -6648,6 +6810,7 @@ part parent "m48"
 part parent "m48"
     desc                   = "ATmega48P";
     id                     = "m48p";
+    mcuid                  = 69;
     signature              = 0x1e 0x92 0x0a;
 ;
 
@@ -6658,6 +6821,7 @@ part parent "m48"
 part parent "m48"
     desc                   = "ATmega48PA";
     id                     = "m48pa";
+    mcuid                  = 70;
     signature              = 0x1e 0x92 0x0a;
 ;
 
@@ -6668,6 +6832,8 @@ part parent "m48"
 part parent "m48"
     desc                   = "ATmega48PB";
     id                     = "m48pb";
+    mcuid                  = 71;
+    n_interrupts           = 27;
     chip_erase_delay       = 10500;
     signature              = 0x1e 0x92 0x10;
 ;
@@ -6679,6 +6845,9 @@ part parent "m48"
 part
     desc                   = "ATmega88";
     id                     = "m88";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 79;
+    n_interrupts           = 26;
     stk500_devcode         = 0x73;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -6805,6 +6974,7 @@ part
 part parent "m88"
     desc                   = "ATmega88A";
     id                     = "m88a";
+    mcuid                  = 80;
 ;
 
 #------------------------------------------------------------
@@ -6814,6 +6984,7 @@ part parent "m88"
 part parent "m88"
     desc                   = "ATmega88P";
     id                     = "m88p";
+    mcuid                  = 81;
     signature              = 0x1e 0x93 0x0f;
 ;
 
@@ -6824,6 +6995,7 @@ part parent "m88"
 part parent "m88"
     desc                   = "ATmega88PA";
     id                     = "m88pa";
+    mcuid                  = 82;
     signature              = 0x1e 0x93 0x0f;
 ;
 
@@ -6834,6 +7006,8 @@ part parent "m88"
 part parent "m88"
     desc                   = "ATmega88PB";
     id                     = "m88pb";
+    mcuid                  = 83;
+    n_interrupts           = 27;
     chip_erase_delay       = 10500;
     signature              = 0x1e 0x93 0x16;
 ;
@@ -6845,6 +7019,9 @@ part parent "m88"
 part
     desc                   = "ATmega168";
     id                     = "m168";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 99;
+    n_interrupts           = 26;
     stk500_devcode         = 0x86;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -6971,6 +7148,7 @@ part
 part parent "m168"
     desc                   = "ATmega168A";
     id                     = "m168a";
+    mcuid                  = 100;
 ;
 
 #------------------------------------------------------------
@@ -6980,6 +7158,7 @@ part parent "m168"
 part parent "m168"
     desc                   = "ATmega168P";
     id                     = "m168p";
+    mcuid                  = 101;
     signature              = 0x1e 0x94 0x0b;
 ;
 
@@ -6990,6 +7169,7 @@ part parent "m168"
 part parent "m168"
     desc                   = "ATmega168PA";
     id                     = "m168pa";
+    mcuid                  = 102;
     signature              = 0x1e 0x94 0x0b;
 ;
 
@@ -7000,6 +7180,8 @@ part parent "m168"
 part parent "m168"
     desc                   = "ATmega168PB";
     id                     = "m168pb";
+    mcuid                  = 103;
+    n_interrupts           = 27;
     chip_erase_delay       = 10500;
     signature              = 0x1e 0x94 0x15;
 ;
@@ -7011,6 +7193,9 @@ part parent "m168"
 part
     desc                   = "ATtiny828";
     id                     = "t828";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 35;
+    n_interrupts           = 26;
     stk500_devcode         = 0x86;
     chip_erase_delay       = 15000;
     pagel                  = 0xd7;
@@ -7136,6 +7321,7 @@ part
 part parent "t828"
     desc                   = "ATtiny828R";
     id                     = "t828r";
+    mcuid                  = 36;
 ;
 
 #------------------------------------------------------------
@@ -7145,6 +7331,9 @@ part parent "t828"
 part
     desc                   = "ATtiny87";
     id                     = "t87";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 27;
+    n_interrupts           = 20;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   Try the AT90S2313 devcode:
@@ -7269,6 +7458,9 @@ part
 part
     desc                   = "ATtiny167";
     id                     = "t167";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 29;
+    n_interrupts           = 20;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = 0x??;
@@ -7394,6 +7586,9 @@ part
 part
     desc                   = "ATtiny48";
     id                     = "t48";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 23;
+    n_interrupts           = 20;
     stk500_devcode         = 0x73;
     chip_erase_delay       = 15000;
     pagel                  = 0xd7;
@@ -7520,6 +7715,9 @@ part
 part
     desc                   = "ATtiny88";
     id                     = "t88";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 28;
+    n_interrupts           = 20;
     stk500_devcode         = 0x73;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -7646,6 +7844,9 @@ part
 part
     desc                   = "ATmega328";
     id                     = "m328";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 118;
+    n_interrupts           = 26;
     stk500_devcode         = 0x86;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
@@ -7772,6 +7973,7 @@ part
 part parent "m328"
     desc                   = "ATmega328P";
     id                     = "m328p";
+    mcuid                  = 119;
     signature              = 0x1e 0x95 0x0f;
 ;
 
@@ -7782,6 +7984,8 @@ part parent "m328"
 part parent "m328"
     desc                   = "ATmega328PB";
     id                     = "m328pb";
+    mcuid                  = 120;
+    n_interrupts           = 45;
     chip_erase_delay       = 10500;
     signature              = 0x1e 0x95 0x16;
 
@@ -7797,6 +8001,8 @@ part parent "m328"
 part parent "m328"
     desc                   = "ATmega32M1";
     id                     = "m32m1";
+    mcuid                  = 63;
+    n_interrupts           = 31;
     bs2                    = 0xe2;
 #   stk500_devcode         = 0x??;
 #   avr910_devcode         = 0x??;
@@ -7814,6 +8020,8 @@ part parent "m328"
 part parent "m328"
     desc                   = "ATmega64M1";
     id                     = "m64m1";
+    mcuid                  = 76;
+    n_interrupts           = 31;
     bs2                    = 0xe2;
 #   stk500_devcode         = 0x??;
 #   avr910_devcode         = 0x??;
@@ -7850,6 +8058,9 @@ part parent "m328"
 part
     desc                   = "ATtiny2313";
     id                     = "t2313";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 42;
+    n_interrupts           = 19;
     stk500_devcode         = 0x23;
 #   Use the ATtiny26 devcode:
     avr910_devcode         = 0x5e;
@@ -7981,6 +8192,8 @@ part
 part parent "t2313"
     desc                   = "ATtiny2313A";
     id                     = "t2313a";
+    mcuid                  = 43;
+    n_interrupts           = 21;
 ;
 
 #------------------------------------------------------------
@@ -7990,6 +8203,9 @@ part parent "t2313"
 part
     desc                   = "ATtiny4313";
     id                     = "t4313";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 44;
+    n_interrupts           = 21;
     stk500_devcode         = 0x23;
 #   Use the ATtiny26 devcode:
     avr910_devcode         = 0x5e;
@@ -8116,6 +8332,9 @@ part
 part
     desc                   = "AT90PWM2";
     id                     = "pwm2";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 167;
+    n_interrupts           = 32;
     stk500_devcode         = 0x65;
     chip_erase_delay       = 9000;
     pagel                  = 0xd8;
@@ -8242,6 +8461,7 @@ part
 part parent "pwm2"
     desc                   = "AT90PWM3";
     id                     = "pwm3";
+    mcuid                  = 169;
 ;
 
 #------------------------------------------------------------
@@ -8252,6 +8472,7 @@ part parent "pwm2"
 part parent "pwm2"
     desc                   = "AT90PWM2B";
     id                     = "pwm2b";
+    mcuid                  = 168;
     signature              = 0x1e 0x93 0x83;
     ocdrev                 = 1;
 ;
@@ -8265,6 +8486,7 @@ part parent "pwm2"
 part parent "pwm2b"
     desc                   = "AT90PWM3B";
     id                     = "pwm3b";
+    mcuid                  = 170;
 ;
 
 #------------------------------------------------------------
@@ -8276,6 +8498,7 @@ part parent "pwm2b"
 part parent "pwm3b"
     desc                   = "AT90PWM316";
     id                     = "pwm316";
+    mcuid                  = 180;
     signature              = 0x1e 0x94 0x83;
 
     memory "flash"
@@ -8299,6 +8522,7 @@ part parent "pwm3b"
 part parent "pwm316"
     desc                   = "AT90PWM216";
     id                     = "pwm216";
+    mcuid                  = 179;
 ;
 
 #------------------------------------------------------------
@@ -8308,6 +8532,9 @@ part parent "pwm316"
 part
     desc                   = "ATtiny25";
     id                     = "t25";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 16;
+    n_interrupts           = 15;
 #  no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
@@ -8436,6 +8663,9 @@ part
 part
     desc                   = "ATtiny45";
     id                     = "t45";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 22;
+    n_interrupts           = 15;
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
 #   Try the AT90S2313 devcode:
@@ -8563,6 +8793,9 @@ part
 part
     desc                   = "ATtiny85";
     id                     = "t85";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 26;
+    n_interrupts           = 15;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
@@ -8692,6 +8925,9 @@ part
 part
     desc                   = "ATmega640";
     id                     = "m640";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 126;
+    n_interrupts           = 57;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -8813,6 +9049,9 @@ part
 part
     desc                   = "ATmega1280";
     id                     = "m1280";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 138;
+    n_interrupts           = 57;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -8935,6 +9174,8 @@ part
 part parent "m1280"
     desc                   = "ATmega1281";
     id                     = "m1281";
+    mcuid                  = 139;
+    n_interrupts           = 51;
     signature              = 0x1e 0x97 0x04;
 ;
 
@@ -8945,6 +9186,9 @@ part parent "m1280"
 part
     desc                   = "ATmega2560";
     id                     = "m2560";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 143;
+    n_interrupts           = 57;
     stk500_devcode         = 0xb2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -9067,6 +9311,8 @@ part
 part parent "m2560"
     desc                   = "ATmega2561";
     id                     = "m2561";
+    mcuid                  = 144;
+    n_interrupts           = 51;
     signature              = 0x1e 0x98 0x02;
 ;
 
@@ -9078,6 +9324,8 @@ part parent "m2560"
 part parent "m2561"
     desc                   = "ATmega128RFA1";
     id                     = "m128rfa1";
+    mcuid                  = 87;
+    n_interrupts           = 72;
     chip_erase_delay       = 55000;
     bs2                    = 0xe2;
     signature              = 0x1e 0xa7 0x01;
@@ -9100,6 +9348,8 @@ part parent "m2561"
 part parent "m2561"
     desc                   = "ATmega256RFR2";
     id                     = "m256rfr2";
+    mcuid                  = 108;
+    n_interrupts           = 77;
     chip_erase_delay       = 18500;
     bs2                    = 0xe2;
     signature              = 0x1e 0xa8 0x02;
@@ -9121,6 +9371,8 @@ part parent "m2561"
 part parent "m128rfa1"
     desc                   = "ATmega128RFR2";
     id                     = "m128rfr2";
+    mcuid                  = 88;
+    n_interrupts           = 77;
     signature              = 0x1e 0xa7 0x02;
 ;
 
@@ -9131,6 +9383,8 @@ part parent "m128rfa1"
 part parent "m128rfa1"
     desc                   = "ATmega64RFR2";
     id                     = "m64rfr2";
+    mcuid                  = 78;
+    n_interrupts           = 77;
     signature              = 0x1e 0xa6 0x02;
 
     memory "eeprom"
@@ -9158,6 +9412,7 @@ part parent "m128rfa1"
 part parent "m256rfr2"
     desc                   = "ATmega2564RFR2";
     id                     = "m2564rfr2";
+    mcuid                  = 145;
     signature              = 0x1e 0xa8 0x03;
 ;
 
@@ -9168,6 +9423,7 @@ part parent "m256rfr2"
 part parent "m128rfr2"
     desc                   = "ATmega1284RFR2";
     id                     = "m1284rfr2";
+    mcuid                  = 142;
     signature              = 0x1e 0xa7 0x03;
 ;
 
@@ -9178,6 +9434,7 @@ part parent "m128rfr2"
 part parent "m64rfr2"
     desc                   = "ATmega644RFR2";
     id                     = "m644rfr2";
+    mcuid                  = 131;
     signature              = 0x1e 0xa6 0x03;
 ;
 
@@ -9188,6 +9445,9 @@ part parent "m64rfr2"
 part
     desc                   = "ATtiny24";
     id                     = "t24";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 14;
+    n_interrupts           = 17;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
@@ -9316,6 +9576,7 @@ part
 part parent "t24"
     desc                   = "ATtiny24A";
     id                     = "t24a";
+    mcuid                  = 15;
 ;
 
 #------------------------------------------------------------
@@ -9325,6 +9586,9 @@ part parent "t24"
 part
     desc                   = "ATtiny44";
     id                     = "t44";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 20;
+    n_interrupts           = 17;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
@@ -9453,6 +9717,7 @@ part
 part parent "t44"
     desc                   = "ATtiny44A";
     id                     = "t44a";
+    mcuid                  = 21;
 ;
 
 #------------------------------------------------------------
@@ -9462,6 +9727,9 @@ part parent "t44"
 part
     desc                   = "ATtiny84";
     id                     = "t84";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVSP | PM_debugWIRE;
+    mcuid                  = 24;
+    n_interrupts           = 17;
 #   no STK500 devcode in XML file, use the ATtiny45 one
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
@@ -9590,6 +9858,7 @@ part
 part parent "t84"
     desc                   = "ATtiny84A";
     id                     = "t84a";
+    mcuid                  = 25;
 ;
 
 #------------------------------------------------------------
@@ -9599,6 +9868,9 @@ part parent "t84"
 part parent "t44"
     desc                   = "ATtiny441";
     id                     = "t441";
+    mcuid                  = 32;
+    n_interrupts           = 30;
+    n_page_erase           = 4;
     signature              = 0x1e 0x92 0x15;
 
     memory "flash"
@@ -9622,6 +9894,9 @@ part parent "t44"
 part parent "t84"
     desc                   = "ATtiny841";
     id                     = "t841";
+    mcuid                  = 37;
+    n_interrupts           = 30;
+    n_page_erase           = 4;
     signature              = 0x1e 0x93 0x15;
 
     memory "flash"
@@ -9645,6 +9920,9 @@ part parent "t84"
 part
     desc                   = "ATtiny43U";
     id                     = "t43u";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 19;
+    n_interrupts           = 16;
     stk500_devcode         = 0x14;
 #   avr910_devcode         = ?;
 #   Try the AT90S2313 devcode:
@@ -9772,6 +10050,9 @@ part
 part
     desc                   = "ATmega16U4";
     id                     = "m16u4";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 57;
+    n_interrupts           = 43;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -9894,6 +10175,9 @@ part
 part
     desc                   = "ATmega32U4";
     id                     = "m32u4";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 65;
+    n_interrupts           = 43;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -10016,6 +10300,9 @@ part
 part
     desc                   = "AT90USB646";
     id                     = "usb646";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 181;
+    n_interrupts           = 38;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -10139,6 +10426,7 @@ part
 part parent "usb646"
     desc                   = "AT90USB647";
     id                     = "usb647";
+    mcuid                  = 182;
 ;
 
 #------------------------------------------------------------
@@ -10148,6 +10436,9 @@ part parent "usb646"
 part
     desc                   = "AT90USB1286";
     id                     = "usb1286";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 184;
+    n_interrupts           = 38;
 #   stk500_devcode         = 0xB2;
 #   avr910_devcode         = 0x43;
     chip_erase_delay       = 9000;
@@ -10271,6 +10562,7 @@ part
 part parent "usb1286"
     desc                   = "AT90USB1287";
     id                     = "usb1287";
+    mcuid                  = 185;
 ;
 
 #------------------------------------------------------------
@@ -10280,6 +10572,9 @@ part parent "usb1286"
 part
     desc                   = "AT90USB162";
     id                     = "usb162";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 178;
+    n_interrupts           = 29;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
     bs2                    = 0xc6;
@@ -10398,6 +10693,9 @@ part
 part
     desc                   = "AT90USB82";
     id                     = "usb82";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 174;
+    n_interrupts           = 58;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
     bs2                    = 0xc6;
@@ -10516,6 +10814,9 @@ part
 part
     desc                   = "ATmega32U2";
     id                     = "m32u2";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 64;
+    n_interrupts           = 29;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
     bs2                    = 0xc6;
@@ -10634,6 +10935,9 @@ part
 part
     desc                   = "ATmega16U2";
     id                     = "m16u2";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 56;
+    n_interrupts           = 29;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
     bs2                    = 0xc6;
@@ -10752,6 +11056,9 @@ part
 part
     desc                   = "ATmega8U2";
     id                     = "m8u2";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 48;
+    n_interrupts           = 58;
     chip_erase_delay       = 9000;
     pagel                  = 0xd7;
     bs2                    = 0xc6;
@@ -10870,6 +11177,9 @@ part
 part
     desc                   = "ATmega165";
     id                     = "m165";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 95;
+    n_interrupts           = 22;
 #   stk500_devcode         = 0x??;
 #   avr910_devcode         = 0x??;
     chip_erase_delay       = 9000;
@@ -10990,6 +11300,7 @@ part
 part parent "m165"
     desc                   = "ATmega165A";
     id                     = "m165a";
+    mcuid                  = 96;
 ;
 
 #------------------------------------------------------------
@@ -10999,6 +11310,7 @@ part parent "m165"
 part parent "m165"
     desc                   = "ATmega165P";
     id                     = "m165p";
+    mcuid                  = 97;
     signature              = 0x1e 0x94 0x07;
 ;
 
@@ -11009,6 +11321,7 @@ part parent "m165"
 part parent "m165"
     desc                   = "ATmega165PA";
     id                     = "m165pa";
+    mcuid                  = 98;
     signature              = 0x1e 0x94 0x07;
 ;
 
@@ -11019,6 +11332,9 @@ part parent "m165"
 part
     desc                   = "ATmega325";
     id                     = "m325";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 114;
+    n_interrupts           = 23;
 #   stk500_devcode         = 0x??; # No STK500v1 support?
 #   avr910_devcode         = 0x??; # Try the ATmega16 one
     avr910_devcode         = 0x74;
@@ -11142,6 +11458,7 @@ part
 part parent "m325"
     desc                   = "ATmega325A";
     id                     = "m325a";
+    mcuid                  = 115;
 ;
 
 #------------------------------------------------------------
@@ -11151,6 +11468,7 @@ part parent "m325"
 part parent "m325"
     desc                   = "ATmega325P";
     id                     = "m325p";
+    mcuid                  = 116;
     signature              = 0x1e 0x95 0x0d;
 ;
 
@@ -11161,6 +11479,8 @@ part parent "m325"
 part parent "m325"
     desc                   = "ATmega325PA";
     id                     = "m325pa";
+    mcuid                  = 117;
+    n_interrupts           = 22;
     signature              = 0x1e 0x95 0x0d;
 ;
 
@@ -11171,6 +11491,9 @@ part parent "m325"
 part
     desc                   = "ATmega645";
     id                     = "m645";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_JTAG;
+    mcuid                  = 132;
+    n_interrupts           = 23;
 #   stk500_devcode         = 0x??; # No STK500v1 support?
 #   avr910_devcode         = 0x??; # Try the ATmega16 one
     avr910_devcode         = 0x74;
@@ -11294,6 +11617,7 @@ part
 part parent "m645"
     desc                   = "ATmega645A";
     id                     = "m645a";
+    mcuid                  = 133;
 ;
 
 #------------------------------------------------------------
@@ -11303,6 +11627,7 @@ part parent "m645"
 part parent "m645"
     desc                   = "ATmega645P";
     id                     = "m645p";
+    mcuid                  = 134;
     signature              = 0x1e 0x96 0x0d;
 ;
 
@@ -11313,6 +11638,8 @@ part parent "m645"
 part parent "m325"
     desc                   = "ATmega3250";
     id                     = "m3250";
+    mcuid                  = 146;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x06;
 ;
 
@@ -11323,6 +11650,8 @@ part parent "m325"
 part parent "m325"
     desc                   = "ATmega3250A";
     id                     = "m3250a";
+    mcuid                  = 147;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x06;
 ;
 
@@ -11333,6 +11662,8 @@ part parent "m325"
 part parent "m325"
     desc                   = "ATmega3250P";
     id                     = "m3250p";
+    mcuid                  = 148;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x0e;
 ;
 
@@ -11343,6 +11674,8 @@ part parent "m325"
 part parent "m325"
     desc                   = "ATmega3250PA";
     id                     = "m3250pa";
+    mcuid                  = 149;
+    n_interrupts           = 25;
     signature              = 0x1e 0x95 0x0e;
 ;
 
@@ -11353,6 +11686,8 @@ part parent "m325"
 part parent "m645"
     desc                   = "ATmega6450";
     id                     = "m6450";
+    mcuid                  = 154;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x06;
 ;
 
@@ -11363,6 +11698,8 @@ part parent "m645"
 part parent "m645"
     desc                   = "ATmega6450A";
     id                     = "m6450a";
+    mcuid                  = 155;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x06;
 ;
 
@@ -11373,6 +11710,8 @@ part parent "m645"
 part parent "m645"
     desc                   = "ATmega6450P";
     id                     = "m6450p";
+    mcuid                  = 156;
+    n_interrupts           = 25;
     signature              = 0x1e 0x96 0x0e;
 ;
 
@@ -11383,6 +11722,7 @@ part parent "m645"
 part
     desc                   = "AVR XMEGA family common values";
     id                     = ".xmega";
+    prog_modes             = PM_SPM | PM_PDI;
     has_pdi                = yes;
     mcu_base               = 0x0090;
     nvm_base               = 0x01c0;
@@ -11437,6 +11777,8 @@ part
 part parent ".xmega"
     desc                   = "ATxmega16A4U";
     id                     = "x16a4u";
+    mcuid                  = 232;
+    n_interrupts           = 127;
     signature              = 0x1e 0x94 0x41;
     usbpid                 = 0x2fe3;
 
@@ -11490,6 +11832,7 @@ part parent ".xmega"
 part parent "x16a4u"
     desc                   = "ATxmega16C4";
     id                     = "x16c4";
+    mcuid                  = 233;
     signature              = 0x1e 0x94 0x43;
 ;
 
@@ -11500,6 +11843,8 @@ part parent "x16a4u"
 part parent "x16a4u"
     desc                   = "ATxmega16D4";
     id                     = "x16d4";
+    mcuid                  = 234;
+    n_interrupts           = 91;
     signature              = 0x1e 0x94 0x42;
 ;
 
@@ -11510,6 +11855,8 @@ part parent "x16a4u"
 part parent "x16a4u"
     desc                   = "ATxmega16A4";
     id                     = "x16a4";
+    mcuid                  = 231;
+    n_interrupts           = 94;
 
     memory "fuse0"
         size               = 1;
@@ -11524,6 +11871,8 @@ part parent "x16a4u"
 part parent ".xmega"
     desc                   = "ATxmega32A4U";
     id                     = "x32a4u";
+    mcuid                  = 239;
+    n_interrupts           = 127;
     signature              = 0x1e 0x95 0x41;
     usbpid                 = 0x2fe4;
 
@@ -11577,6 +11926,7 @@ part parent ".xmega"
 part parent "x32a4u"
     desc                   = "ATxmega32C4";
     id                     = "x32c4";
+    mcuid                  = 240;
     signature              = 0x1e 0x95 0x44;
 ;
 
@@ -11587,6 +11937,8 @@ part parent "x32a4u"
 part parent "x32a4u"
     desc                   = "ATxmega32D4";
     id                     = "x32d4";
+    mcuid                  = 241;
+    n_interrupts           = 91;
     signature              = 0x1e 0x95 0x42;
 ;
 
@@ -11597,6 +11949,8 @@ part parent "x32a4u"
 part parent "x32a4u"
     desc                   = "ATxmega32A4";
     id                     = "x32a4";
+    mcuid                  = 238;
+    n_interrupts           = 94;
 
     memory "fuse0"
         size               = 1;
@@ -11611,6 +11965,8 @@ part parent "x32a4u"
 part parent ".xmega"
     desc                   = "ATxmega64A4U";
     id                     = "x64a4u";
+    mcuid                  = 252;
+    n_interrupts           = 127;
     signature              = 0x1e 0x96 0x46;
     usbpid                 = 0x2fe5;
 
@@ -11664,6 +12020,7 @@ part parent ".xmega"
 part parent "x64a4u"
     desc                   = "ATxmega64C3";
     id                     = "x64c3";
+    mcuid                  = 249;
     signature              = 0x1e 0x96 0x49;
     usbpid                 = 0x2fd6;
 ;
@@ -11675,6 +12032,8 @@ part parent "x64a4u"
 part parent "x64a4u"
     desc                   = "ATxmega64D3";
     id                     = "x64d3";
+    mcuid                  = 250;
+    n_interrupts           = 114;
     signature              = 0x1e 0x96 0x4a;
 ;
 
@@ -11685,6 +12044,8 @@ part parent "x64a4u"
 part parent "x64a4u"
     desc                   = "ATxmega64D4";
     id                     = "x64d4";
+    mcuid                  = 253;
+    n_interrupts           = 91;
     signature              = 0x1e 0x96 0x47;
 ;
 
@@ -11695,6 +12056,9 @@ part parent "x64a4u"
 part parent "x64a4u"
     desc                   = "ATxmega64A1";
     id                     = "x64a1";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 243;
+    n_interrupts           = 125;
     signature              = 0x1e 0x96 0x4e;
     has_jtag               = yes;
 
@@ -11711,6 +12075,8 @@ part parent "x64a4u"
 part parent "x64a1"
     desc                   = "ATxmega64A1U";
     id                     = "x64a1u";
+    mcuid                  = 244;
+    n_interrupts           = 127;
     usbpid                 = 0x2fe8;
 ;
 
@@ -11721,6 +12087,8 @@ part parent "x64a1"
 part parent "x64a1"
     desc                   = "ATxmega64A3";
     id                     = "x64a3";
+    mcuid                  = 246;
+    n_interrupts           = 122;
     signature              = 0x1e 0x96 0x42;
 ;
 
@@ -11731,6 +12099,8 @@ part parent "x64a1"
 part parent "x64a1"
     desc                   = "ATxmega64A3U";
     id                     = "x64a3u";
+    mcuid                  = 247;
+    n_interrupts           = 127;
     signature              = 0x1e 0x96 0x42;
 ;
 
@@ -11741,6 +12111,7 @@ part parent "x64a1"
 part parent "x64a1"
     desc                   = "ATxmega64A4";
     id                     = "x64a4";
+    mcuid                  = 251;
     signature              = 0x1e 0x96 0x46;
 ;
 
@@ -11751,6 +12122,8 @@ part parent "x64a1"
 part parent "x64a1"
     desc                   = "ATxmega64B1";
     id                     = "x64b1";
+    mcuid                  = 245;
+    n_interrupts           = 81;
     signature              = 0x1e 0x96 0x52;
     usbpid                 = 0x2fe1;
 ;
@@ -11762,6 +12135,8 @@ part parent "x64a1"
 part parent "x64a1"
     desc                   = "ATxmega64B3";
     id                     = "x64b3";
+    mcuid                  = 248;
+    n_interrupts           = 54;
     signature              = 0x1e 0x96 0x51;
     usbpid                 = 0x2fdf;
 ;
@@ -11773,6 +12148,8 @@ part parent "x64a1"
 part parent ".xmega"
     desc                   = "ATxmega128C3";
     id                     = "x128c3";
+    mcuid                  = 261;
+    n_interrupts           = 127;
     signature              = 0x1e 0x97 0x52;
     usbpid                 = 0x2fd7;
 
@@ -11826,6 +12203,8 @@ part parent ".xmega"
 part parent "x128c3"
     desc                   = "ATxmega128D3";
     id                     = "x128d3";
+    mcuid                  = 262;
+    n_interrupts           = 114;
     signature              = 0x1e 0x97 0x48;
 ;
 
@@ -11836,6 +12215,8 @@ part parent "x128c3"
 part parent "x128c3"
     desc                   = "ATxmega128D4";
     id                     = "x128d4";
+    mcuid                  = 265;
+    n_interrupts           = 91;
     signature              = 0x1e 0x97 0x47;
 
     memory "flash"
@@ -11850,6 +12231,9 @@ part parent "x128c3"
 part parent "x128c3"
     desc                   = "ATxmega128A1";
     id                     = "x128a1";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 254;
+    n_interrupts           = 125;
     signature              = 0x1e 0x97 0x4c;
     has_jtag               = yes;
 
@@ -11866,6 +12250,7 @@ part parent "x128c3"
 part parent "x128a1"
     desc                   = "ATxmega128A1revD";
     id                     = "x128a1d";
+    mcuid                  = 255;
     signature              = 0x1e 0x97 0x41;
 ;
 
@@ -11876,6 +12261,8 @@ part parent "x128a1"
 part parent "x128a1"
     desc                   = "ATxmega128A1U";
     id                     = "x128a1u";
+    mcuid                  = 256;
+    n_interrupts           = 127;
     usbpid                 = 0x2fed;
 ;
 
@@ -11886,6 +12273,8 @@ part parent "x128a1"
 part parent "x128a1"
     desc                   = "ATxmega128A3";
     id                     = "x128a3";
+    mcuid                  = 258;
+    n_interrupts           = 122;
     signature              = 0x1e 0x97 0x42;
 ;
 
@@ -11896,6 +12285,8 @@ part parent "x128a1"
 part parent "x128a1"
     desc                   = "ATxmega128A3U";
     id                     = "x128a3u";
+    mcuid                  = 259;
+    n_interrupts           = 127;
     signature              = 0x1e 0x97 0x42;
     usbpid                 = 0x2fe6;
 ;
@@ -11907,6 +12298,8 @@ part parent "x128a1"
 part parent ".xmega"
     desc                   = "ATxmega128A4";
     id                     = "x128a4";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 263;
     signature              = 0x1e 0x97 0x46;
     has_jtag               = yes;
 
@@ -11965,6 +12358,8 @@ part parent ".xmega"
 part parent ".xmega"
     desc                   = "ATxmega128A4U";
     id                     = "x128a4u";
+    mcuid                  = 264;
+    n_interrupts           = 127;
     signature              = 0x1e 0x97 0x46;
     usbpid                 = 0x2fde;
 
@@ -12018,6 +12413,9 @@ part parent ".xmega"
 part parent ".xmega"
     desc                   = "ATxmega128B1";
     id                     = "x128b1";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 257;
+    n_interrupts           = 81;
     signature              = 0x1e 0x97 0x4d;
     usbpid                 = 0x2fea;
     has_jtag               = yes;
@@ -12077,6 +12475,8 @@ part parent ".xmega"
 part parent "x128b1"
     desc                   = "ATxmega128B3";
     id                     = "x128b3";
+    mcuid                  = 260;
+    n_interrupts           = 54;
     signature              = 0x1e 0x97 0x4b;
     usbpid                 = 0x2fe0;
 ;
@@ -12088,6 +12488,8 @@ part parent "x128b1"
 part parent ".xmega"
     desc                   = "ATxmega192C3";
     id                     = "x192c3";
+    mcuid                  = 269;
+    n_interrupts           = 127;
     signature              = 0x1e 0x97 0x51;
 #   usbpid                 = 0x2f??;
 
@@ -12141,6 +12543,8 @@ part parent ".xmega"
 part parent "x192c3"
     desc                   = "ATxmega192D3";
     id                     = "x192d3";
+    mcuid                  = 270;
+    n_interrupts           = 114;
     signature              = 0x1e 0x97 0x49;
 ;
 
@@ -12151,6 +12555,8 @@ part parent "x192c3"
 part parent "x192c3"
     desc                   = "ATxmega192A1";
     id                     = "x192a1";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 266;
     signature              = 0x1e 0x97 0x4e;
     has_jtag               = yes;
 
@@ -12167,6 +12573,8 @@ part parent "x192c3"
 part parent "x192a1"
     desc                   = "ATxmega192A3";
     id                     = "x192a3";
+    mcuid                  = 267;
+    n_interrupts           = 122;
     signature              = 0x1e 0x97 0x44;
 ;
 
@@ -12177,6 +12585,7 @@ part parent "x192a1"
 part parent "x192a1"
     desc                   = "ATxmega192A3U";
     id                     = "x192a3u";
+    mcuid                  = 268;
     signature              = 0x1e 0x97 0x44;
     usbpid                 = 0x2fe7;
 ;
@@ -12188,6 +12597,8 @@ part parent "x192a1"
 part parent ".xmega"
     desc                   = "ATxmega256C3";
     id                     = "x256c3";
+    mcuid                  = 276;
+    n_interrupts           = 127;
     signature              = 0x1e 0x98 0x46;
     usbpid                 = 0x2fda;
 
@@ -12241,6 +12652,8 @@ part parent ".xmega"
 part parent "x256c3"
     desc                   = "ATxmega256D3";
     id                     = "x256d3";
+    mcuid                  = 277;
+    n_interrupts           = 114;
     signature              = 0x1e 0x98 0x44;
 ;
 
@@ -12251,6 +12664,8 @@ part parent "x256c3"
 part parent "x256c3"
     desc                   = "ATxmega256A1";
     id                     = "x256a1";
+    prog_modes             = PM_SPM | PM_PDI | PM_JTAG;
+    mcuid                  = 271;
     has_jtag               = yes;
 
     memory "fuse0"
@@ -12266,6 +12681,8 @@ part parent "x256c3"
 part parent "x256a1"
     desc                   = "ATxmega256A3";
     id                     = "x256a3";
+    mcuid                  = 272;
+    n_interrupts           = 122;
     signature              = 0x1e 0x98 0x42;
 ;
 
@@ -12276,6 +12693,7 @@ part parent "x256a1"
 part parent "x256a1"
     desc                   = "ATxmega256A3U";
     id                     = "x256a3u";
+    mcuid                  = 275;
     signature              = 0x1e 0x98 0x42;
     usbpid                 = 0x2fec;
 ;
@@ -12287,6 +12705,8 @@ part parent "x256a1"
 part parent "x256a1"
     desc                   = "ATxmega256A3B";
     id                     = "x256a3b";
+    mcuid                  = 273;
+    n_interrupts           = 122;
     signature              = 0x1e 0x98 0x43;
 ;
 
@@ -12297,6 +12717,7 @@ part parent "x256a1"
 part parent "x256a1"
     desc                   = "ATxmega256A3BU";
     id                     = "x256a3bu";
+    mcuid                  = 274;
     signature              = 0x1e 0x98 0x43;
     usbpid                 = 0x2fe2;
 ;
@@ -12308,6 +12729,8 @@ part parent "x256a1"
 part parent ".xmega"
     desc                   = "ATxmega384C3";
     id                     = "x384c3";
+    mcuid                  = 278;
+    n_interrupts           = 127;
     signature              = 0x1e 0x98 0x45;
     usbpid                 = 0x2fdb;
 
@@ -12361,6 +12784,8 @@ part parent ".xmega"
 part parent "x384c3"
     desc                   = "ATxmega384D3";
     id                     = "x384d3";
+    mcuid                  = 279;
+    n_interrupts           = 114;
     signature              = 0x1e 0x98 0x47;
 ;
 
@@ -12371,6 +12796,8 @@ part parent "x384c3"
 part parent ".xmega"
     desc                   = "ATxmega8E5";
     id                     = "x8e5";
+    mcuid                  = 230;
+    n_interrupts           = 43;
     signature              = 0x1e 0x93 0x41;
 
     memory "eeprom"
@@ -12423,6 +12850,8 @@ part parent ".xmega"
 part parent ".xmega"
     desc                   = "ATxmega16E5";
     id                     = "x16e5";
+    mcuid                  = 235;
+    n_interrupts           = 43;
     signature              = 0x1e 0x94 0x45;
 
     memory "eeprom"
@@ -12475,6 +12904,8 @@ part parent ".xmega"
 part parent ".xmega"
     desc                   = "ATxmega32E5";
     id                     = "x32e5";
+    mcuid                  = 242;
+    n_interrupts           = 43;
     signature              = 0x1e 0x95 0x4c;
 
     memory "eeprom"
@@ -12527,6 +12958,7 @@ part parent ".xmega"
 part
     desc                   = "AT32UC3A0512";
     id                     = "uc3a0512";
+    prog_modes             = PM_JTAG | PM_aWire;
     signature              = 0xed 0xc0 0x3f;
     has_jtag               = yes;
     is_avr32               = yes;
@@ -12557,6 +12989,10 @@ part parent "uc3a0512"
 part
     desc                   = "ATtiny1634";
     id                     = "t1634";
+    prog_modes             = PM_SPM | PM_ISP | PM_HVPP | PM_debugWIRE;
+    mcuid                  = 40;
+    n_interrupts           = 28;
+    n_page_erase           = 4;
     stk500_devcode         = 0x86;
     chip_erase_delay       = 9000;
     pagel                  = 0xb3;
@@ -12681,6 +13117,7 @@ part
 part parent "t1634"
     desc                   = "ATtiny1634R";
     id                     = "t1634r";
+    mcuid                  = 41;
 ;
 
 #------------------------------------------------------------
@@ -12690,6 +13127,7 @@ part parent "t1634"
 part
     desc                   = "Common values for reduced core tinys";
     id                     = ".reduced_core_tiny";
+    prog_modes             = PM_TPI;
     has_tpi                = yes;
 
     memory "fuse"
@@ -12731,6 +13169,7 @@ part
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny4";
     id                     = "t4";
+    n_interrupts           = 10;
     signature              = 0x1e 0x8f 0x0a;
 
     memory "flash"
@@ -12748,6 +13187,8 @@ part parent ".reduced_core_tiny"
 part parent "t4"
     desc                   = "ATtiny5";
     id                     = "t5";
+    mcuid                  = 1;
+    n_interrupts           = 11;
     signature              = 0x1e 0x8f 0x09;
 ;
 
@@ -12758,6 +13199,8 @@ part parent "t4"
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny9";
     id                     = "t9";
+    mcuid                  = 2;
+    n_interrupts           = 10;
     signature              = 0x1e 0x90 0x08;
 
     memory "flash"
@@ -12775,6 +13218,8 @@ part parent ".reduced_core_tiny"
 part parent "t9"
     desc                   = "ATtiny10";
     id                     = "t10";
+    mcuid                  = 3;
+    n_interrupts           = 11;
     signature              = 0x1e 0x90 0x03;
 ;
 
@@ -12785,6 +13230,8 @@ part parent "t9"
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny20";
     id                     = "t20";
+    mcuid                  = 4;
+    n_interrupts           = 17;
     signature              = 0x1e 0x91 0x0f;
 
     memory "flash"
@@ -12802,6 +13249,8 @@ part parent ".reduced_core_tiny"
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny40";
     id                     = "t40";
+    mcuid                  = 5;
+    n_interrupts           = 18;
     signature              = 0x1e 0x92 0x0e;
 
     memory "flash"
@@ -12819,6 +13268,7 @@ part parent ".reduced_core_tiny"
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny102";
     id                     = "t102";
+    mcuid                  = 6;
     signature              = 0x1e 0x90 0x0c;
 
     memory "flash"
@@ -12836,6 +13286,7 @@ part parent ".reduced_core_tiny"
 part parent ".reduced_core_tiny"
     desc                   = "ATtiny104";
     id                     = "t104";
+    mcuid                  = 7;
     signature              = 0x1e 0x90 0x0b;
 
     memory "flash"
@@ -12853,6 +13304,9 @@ part parent ".reduced_core_tiny"
 part
     desc                   = "ATmega406";
     id                     = "m406";
+    prog_modes             = PM_SPM | PM_HVPP | PM_JTAG;
+    mcuid                  = 125;
+    n_interrupts           = 23;
     # STK500 parameters (parallel programming IO lines)
     pagel                  = 0xa7;
     bs2                    = 0xa0;
@@ -12915,6 +13369,7 @@ part
 part
     desc                   = "AVR8X family common values";
     id                     = ".avr8x";
+    prog_modes             = PM_SPM | PM_UPDI;
     has_updi               = yes;
     nvm_base               = 0x1000;
     ocd_base               = 0x0f80;
@@ -13128,6 +13583,8 @@ part parent ".avr8x"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny202";
     id                     = "t202";
+    mcuid                  = 280;
+    n_interrupts           = 26;
     signature              = 0x1e 0x91 0x23;
 
     memory "eeprom"
@@ -13152,6 +13609,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny204";
     id                     = "t204";
+    mcuid                  = 281;
+    n_interrupts           = 26;
     signature              = 0x1e 0x91 0x22;
 
     memory "eeprom"
@@ -13176,6 +13635,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny402";
     id                     = "t402";
+    mcuid                  = 284;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x27;
 
     memory "eeprom"
@@ -13200,6 +13661,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny404";
     id                     = "t404";
+    mcuid                  = 285;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x26;
 
     memory "eeprom"
@@ -13224,6 +13687,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny406";
     id                     = "t406";
+    mcuid                  = 286;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x25;
 
     memory "eeprom"
@@ -13248,6 +13713,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny804";
     id                     = "t804";
+    mcuid                  = 295;
+    n_interrupts           = 31;
     signature              = 0x1e 0x93 0x25;
 
     memory "eeprom"
@@ -13272,6 +13739,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny806";
     id                     = "t806";
+    mcuid                  = 296;
+    n_interrupts           = 31;
     signature              = 0x1e 0x93 0x24;
 
     memory "eeprom"
@@ -13296,6 +13765,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny807";
     id                     = "t807";
+    mcuid                  = 297;
+    n_interrupts           = 31;
     signature              = 0x1e 0x93 0x23;
 
     memory "eeprom"
@@ -13320,6 +13791,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1604";
     id                     = "t1604";
+    mcuid                  = 304;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x25;
 
     memory "eeprom"
@@ -13344,6 +13817,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1606";
     id                     = "t1606";
+    mcuid                  = 305;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x24;
 
     memory "eeprom"
@@ -13368,6 +13843,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1607";
     id                     = "t1607";
+    mcuid                  = 306;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x23;
 
     memory "eeprom"
@@ -13392,6 +13869,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny212";
     id                     = "t212";
+    mcuid                  = 282;
+    n_interrupts           = 26;
     signature              = 0x1e 0x91 0x21;
 
     memory "eeprom"
@@ -13416,6 +13895,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny214";
     id                     = "t214";
+    mcuid                  = 283;
+    n_interrupts           = 26;
     signature              = 0x1e 0x91 0x20;
 
     memory "eeprom"
@@ -13440,6 +13921,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny412";
     id                     = "t412";
+    mcuid                  = 287;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x23;
 
     memory "eeprom"
@@ -13464,6 +13947,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny414";
     id                     = "t414";
+    mcuid                  = 288;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x22;
 
     memory "eeprom"
@@ -13488,6 +13973,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny416";
     id                     = "t416";
+    mcuid                  = 289;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x21;
 
     memory "eeprom"
@@ -13512,6 +13999,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny417";
     id                     = "t417";
+    mcuid                  = 291;
+    n_interrupts           = 26;
     signature              = 0x1e 0x92 0x20;
 
     memory "eeprom"
@@ -13536,6 +14025,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny814";
     id                     = "t814";
+    mcuid                  = 298;
+    n_interrupts           = 26;
     signature              = 0x1e 0x93 0x22;
 
     memory "eeprom"
@@ -13560,6 +14051,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny816";
     id                     = "t816";
+    mcuid                  = 299;
+    n_interrupts           = 26;
     signature              = 0x1e 0x93 0x21;
 
     memory "eeprom"
@@ -13584,6 +14077,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny817";
     id                     = "t817";
+    mcuid                  = 300;
+    n_interrupts           = 26;
     signature              = 0x1e 0x93 0x20;
 
     memory "eeprom"
@@ -13608,6 +14103,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1614";
     id                     = "t1614";
+    mcuid                  = 307;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x22;
 
     memory "eeprom"
@@ -13632,6 +14129,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1616";
     id                     = "t1616";
+    mcuid                  = 308;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x21;
 
     memory "eeprom"
@@ -13656,6 +14155,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1617";
     id                     = "t1617";
+    mcuid                  = 309;
+    n_interrupts           = 31;
     signature              = 0x1e 0x94 0x20;
 
     memory "eeprom"
@@ -13680,6 +14181,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny3216";
     id                     = "t3216";
+    mcuid                  = 314;
+    n_interrupts           = 31;
     signature              = 0x1e 0x95 0x21;
 
     memory "eeprom"
@@ -13704,6 +14207,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny3217";
     id                     = "t3217";
+    mcuid                  = 315;
+    n_interrupts           = 31;
     signature              = 0x1e 0x95 0x22;
 
     memory "eeprom"
@@ -13728,6 +14233,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny424";
     id                     = "t424";
+    mcuid                  = 292;
     signature              = 0x1e 0x92 0x2c;
 
     memory "eeprom"
@@ -13752,6 +14258,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny426";
     id                     = "t426";
+    mcuid                  = 293;
     signature              = 0x1e 0x92 0x2b;
 
     memory "eeprom"
@@ -13776,6 +14283,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny427";
     id                     = "t427";
+    mcuid                  = 294;
     signature              = 0x1e 0x92 0x2a;
 
     memory "eeprom"
@@ -13800,6 +14308,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny824";
     id                     = "t824";
+    mcuid                  = 301;
     signature              = 0x1e 0x93 0x29;
 
     memory "eeprom"
@@ -13824,6 +14333,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny826";
     id                     = "t826";
+    mcuid                  = 302;
     signature              = 0x1e 0x93 0x28;
 
     memory "eeprom"
@@ -13848,6 +14358,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny827";
     id                     = "t827";
+    mcuid                  = 303;
     signature              = 0x1e 0x93 0x27;
 
     memory "eeprom"
@@ -13872,6 +14383,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1624";
     id                     = "t1624";
+    mcuid                  = 310;
     signature              = 0x1e 0x94 0x2a;
 
     memory "eeprom"
@@ -13896,6 +14408,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1626";
     id                     = "t1626";
+    mcuid                  = 311;
     signature              = 0x1e 0x94 0x29;
 
     memory "eeprom"
@@ -13920,6 +14433,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny1627";
     id                     = "t1627";
+    mcuid                  = 312;
     signature              = 0x1e 0x94 0x28;
 
     memory "eeprom"
@@ -13944,6 +14458,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny3224";
     id                     = "t3224";
+    mcuid                  = 316;
     signature              = 0x1e 0x95 0x28;
 
     memory "eeprom"
@@ -13968,6 +14483,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny3226";
     id                     = "t3226";
+    mcuid                  = 317;
     signature              = 0x1e 0x95 0x27;
 
     memory "eeprom"
@@ -13992,6 +14508,7 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATtiny3227";
     id                     = "t3227";
+    mcuid                  = 318;
     signature              = 0x1e 0x95 0x26;
 
     memory "eeprom"
@@ -14016,6 +14533,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATmega808";
     id                     = "m808";
+    mcuid                  = 319;
+    n_interrupts           = 36;
     signature              = 0x1e 0x93 0x26;
 
     memory "eeprom"
@@ -14040,6 +14559,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATmega809";
     id                     = "m809";
+    mcuid                  = 320;
+    n_interrupts           = 40;
     signature              = 0x1e 0x93 0x2a;
 
     memory "eeprom"
@@ -14064,6 +14585,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATmega1608";
     id                     = "m1608";
+    mcuid                  = 321;
+    n_interrupts           = 36;
     signature              = 0x1e 0x94 0x27;
 
     memory "eeprom"
@@ -14088,6 +14611,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_tiny"
     desc                   = "ATmega1609";
     id                     = "m1609";
+    mcuid                  = 322;
+    n_interrupts           = 40;
     signature              = 0x1e 0x94 0x26;
 
     memory "eeprom"
@@ -14112,6 +14637,8 @@ part parent ".avr8x_tiny"
 part parent ".avr8x_mega"
     desc                   = "ATmega3208";
     id                     = "m3208";
+    mcuid                  = 323;
+    n_interrupts           = 36;
     signature              = 0x1e 0x95 0x30;
 
     memory "eeprom"
@@ -14136,6 +14663,8 @@ part parent ".avr8x_mega"
 part parent ".avr8x_mega"
     desc                   = "ATmega3209";
     id                     = "m3209";
+    mcuid                  = 324;
+    n_interrupts           = 40;
     signature              = 0x1e 0x95 0x31;
 
     memory "eeprom"
@@ -14160,6 +14689,8 @@ part parent ".avr8x_mega"
 part parent ".avr8x_mega"
     desc                   = "ATmega4808";
     id                     = "m4808";
+    mcuid                  = 325;
+    n_interrupts           = 36;
     signature              = 0x1e 0x96 0x50;
 
     memory "eeprom"
@@ -14184,6 +14715,8 @@ part parent ".avr8x_mega"
 part parent ".avr8x_mega"
     desc                   = "ATmega4809";
     id                     = "m4809";
+    mcuid                  = 326;
+    n_interrupts           = 40;
     signature              = 0x1e 0x96 0x51;
 
     memory "eeprom"
@@ -14208,6 +14741,7 @@ part parent ".avr8x_mega"
 part
     desc                   = "AVR-Dx family common values";
     id                     = ".avrdx";
+    prog_modes             = PM_SPM | PM_UPDI;
     # Dedicated UPDI pin, no HV
     hvupdi_variant         = 1;
     has_updi               = yes;
@@ -14364,6 +14898,7 @@ part
 part parent ".avrdx"
     desc                   = "AVR32DA28";
     id                     = "avr32da28";
+    mcuid                  = 338;
     signature              = 0x1e 0x95 0x34;
 
     memory "eeprom"
@@ -14387,6 +14922,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DA32";
     id                     = "avr32da32";
+    mcuid                  = 342;
     signature              = 0x1e 0x95 0x33;
 
     memory "eeprom"
@@ -14410,6 +14946,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DA48";
     id                     = "avr32da48";
+    mcuid                  = 346;
     signature              = 0x1e 0x95 0x32;
 
     memory "eeprom"
@@ -14433,6 +14970,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DA28";
     id                     = "avr64da28";
+    mcuid                  = 351;
     signature              = 0x1e 0x96 0x15;
 
     memory "eeprom"
@@ -14456,6 +14994,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DA32";
     id                     = "avr64da32";
+    mcuid                  = 355;
     signature              = 0x1e 0x96 0x14;
 
     memory "eeprom"
@@ -14479,6 +15018,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DA48";
     id                     = "avr64da48";
+    mcuid                  = 359;
     signature              = 0x1e 0x96 0x13;
 
     memory "eeprom"
@@ -14502,6 +15042,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DA64";
     id                     = "avr64da64";
+    mcuid                  = 362;
     signature              = 0x1e 0x96 0x12;
 
     memory "eeprom"
@@ -14525,6 +15066,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DA28";
     id                     = "avr128da28";
+    mcuid                  = 364;
     signature              = 0x1e 0x97 0x0a;
 
     memory "eeprom"
@@ -14548,6 +15090,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DA32";
     id                     = "avr128da32";
+    mcuid                  = 366;
     signature              = 0x1e 0x97 0x09;
 
     memory "eeprom"
@@ -14571,6 +15114,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DA48";
     id                     = "avr128da48";
+    mcuid                  = 368;
     signature              = 0x1e 0x97 0x08;
 
     memory "eeprom"
@@ -14594,6 +15138,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DA64";
     id                     = "avr128da64";
+    mcuid                  = 370;
     signature              = 0x1e 0x97 0x07;
 
     memory "eeprom"
@@ -14617,6 +15162,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DB28";
     id                     = "avr32db28";
+    mcuid                  = 339;
     signature              = 0x1e 0x95 0x37;
 
     memory "eeprom"
@@ -14640,6 +15186,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DB32";
     id                     = "avr32db32";
+    mcuid                  = 343;
     signature              = 0x1e 0x95 0x36;
 
     memory "eeprom"
@@ -14663,6 +15210,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DB48";
     id                     = "avr32db48";
+    mcuid                  = 347;
     signature              = 0x1e 0x95 0x35;
 
     memory "eeprom"
@@ -14686,6 +15234,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DB28";
     id                     = "avr64db28";
+    mcuid                  = 352;
     signature              = 0x1e 0x96 0x19;
 
     memory "eeprom"
@@ -14709,6 +15258,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DB32";
     id                     = "avr64db32";
+    mcuid                  = 356;
     signature              = 0x1e 0x96 0x18;
 
     memory "eeprom"
@@ -14732,6 +15282,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DB48";
     id                     = "avr64db48";
+    mcuid                  = 360;
     signature              = 0x1e 0x96 0x17;
 
     memory "eeprom"
@@ -14755,6 +15306,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DB64";
     id                     = "avr64db64";
+    mcuid                  = 363;
     signature              = 0x1e 0x96 0x16;
 
     memory "eeprom"
@@ -14778,6 +15330,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DB28";
     id                     = "avr128db28";
+    mcuid                  = 365;
     signature              = 0x1e 0x97 0x0e;
 
     memory "eeprom"
@@ -14801,6 +15354,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DB32";
     id                     = "avr128db32";
+    mcuid                  = 367;
     signature              = 0x1e 0x97 0x0d;
 
     memory "eeprom"
@@ -14824,6 +15378,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DB48";
     id                     = "avr128db48";
+    mcuid                  = 369;
     signature              = 0x1e 0x97 0x0c;
 
     memory "eeprom"
@@ -14847,6 +15402,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR128DB64";
     id                     = "avr128db64";
+    mcuid                  = 371;
     signature              = 0x1e 0x97 0x0b;
 
     memory "eeprom"
@@ -14870,6 +15426,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR16DD14";
     id                     = "avr16dd14";
+    mcuid                  = 329;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x94 0x34;
 
@@ -14894,6 +15451,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR16DD20";
     id                     = "avr16dd20";
+    mcuid                  = 330;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x94 0x33;
 
@@ -14918,6 +15476,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR16DD28";
     id                     = "avr16dd28";
+    mcuid                  = 331;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x94 0x32;
 
@@ -14942,6 +15501,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR16DD32";
     id                     = "avr16dd32";
+    mcuid                  = 333;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x94 0x31;
 
@@ -14966,6 +15526,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DD14";
     id                     = "avr32dd14";
+    mcuid                  = 336;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x95 0x3b;
 
@@ -14990,6 +15551,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DD20";
     id                     = "avr32dd20";
+    mcuid                  = 337;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x95 0x3a;
 
@@ -15014,6 +15576,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DD28";
     id                     = "avr32dd28";
+    mcuid                  = 340;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x95 0x39;
 
@@ -15038,6 +15601,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR32DD32";
     id                     = "avr32dd32";
+    mcuid                  = 344;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x95 0x38;
 
@@ -15062,6 +15626,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DD14";
     id                     = "avr64dd14";
+    mcuid                  = 349;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x96 0x1d;
 
@@ -15086,6 +15651,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DD20";
     id                     = "avr64dd20";
+    mcuid                  = 350;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x96 0x1c;
 
@@ -15110,6 +15676,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DD28";
     id                     = "avr64dd28";
+    mcuid                  = 353;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x96 0x1b;
 
@@ -15134,6 +15701,7 @@ part parent ".avrdx"
 part parent ".avrdx"
     desc                   = "AVR64DD32";
     id                     = "avr64dd32";
+    mcuid                  = 357;
     hvupdi_variant         = 2;
     signature              = 0x1e 0x96 0x1a;
 
@@ -15179,6 +15747,7 @@ part parent ".avrdx"
 part parent ".avrex"
     desc                   = "AVR8EA28";
     id                     = "avr8ea28";
+    mcuid                  = 327;
     signature              = 0x1e 0x93 0x2c;
 
     memory "eeprom"
@@ -15203,6 +15772,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR8EA32";
     id                     = "avr8ea32";
+    mcuid                  = 328;
     signature              = 0x1e 0x93 0x2b;
 
     memory "eeprom"
@@ -15227,6 +15797,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR16EA28";
     id                     = "avr16ea28";
+    mcuid                  = 332;
     signature              = 0x1e 0x94 0x37;
 
     memory "eeprom"
@@ -15251,6 +15822,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR16EA32";
     id                     = "avr16ea32";
+    mcuid                  = 334;
     signature              = 0x1e 0x94 0x36;
 
     memory "eeprom"
@@ -15275,6 +15847,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR16EA48";
     id                     = "avr16ea48";
+    mcuid                  = 335;
     signature              = 0x1e 0x94 0x35;
 
     memory "eeprom"
@@ -15299,6 +15872,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR32EA28";
     id                     = "avr32ea28";
+    mcuid                  = 341;
     signature              = 0x1e 0x95 0x3e;
 
     memory "eeprom"
@@ -15323,6 +15897,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR32EA32";
     id                     = "avr32ea32";
+    mcuid                  = 345;
     signature              = 0x1e 0x95 0x3d;
 
     memory "eeprom"
@@ -15347,6 +15922,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR32EA48";
     id                     = "avr32ea48";
+    mcuid                  = 348;
     signature              = 0x1e 0x95 0x3c;
 
     memory "eeprom"
@@ -15371,6 +15947,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR64EA28";
     id                     = "avr64ea28";
+    mcuid                  = 354;
     signature              = 0x1e 0x96 0x20;
 
     memory "eeprom"
@@ -15395,6 +15972,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR64EA32";
     id                     = "avr64ea32";
+    mcuid                  = 358;
     signature              = 0x1e 0x96 0x1f;
 
     memory "eeprom"
@@ -15419,6 +15997,7 @@ part parent ".avrex"
 part parent ".avrex"
     desc                   = "AVR64EA48";
     id                     = "avr64ea48";
+    mcuid                  = 361;
     signature              = 0x1e 0x96 0x1e;
 
     memory "eeprom"
@@ -15443,6 +16022,7 @@ part parent ".avrex"
 part parent "m88"
     desc                   = "LGT8F88P";
     id                     = "lgt8f88p";
+    mcuid                  = 227;
     signature              = 0x1e 0x93 0x0f;
 ;
 
@@ -15453,6 +16033,7 @@ part parent "m88"
 part parent "m168"
     desc                   = "LGT8F168P";
     id                     = "lgt8f168p";
+    mcuid                  = 228;
     signature              = 0x1e 0x94 0x0b;
 ;
 
@@ -15463,5 +16044,6 @@ part parent "m168"
 part parent "m328"
     desc                   = "LGT8F328P";
     id                     = "lgt8f328p";
+    mcuid                  = 229;
     signature              = 0x1e 0x95 0x0f;
 ;