diff --git a/ChangeLog b/ChangeLog
index b6a05528..88dcdaa5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-09-11  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	bug #28344 chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P
+	* avrdude.conf: Bump the chip_erase_delay for all ATmega*4 devices
+	to 55 ms.  While the datasheet still claims 9 ms, all the XML files
+	tell either 45 or 55 ms, depending on STK600 or not.
+
 2013-09-11  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	* fileio.c (fileio): Don't exit(1) if something goes wrong; return
diff --git a/NEWS b/NEWS
index 7ee78a29..8e9d194f 100644
--- a/NEWS
+++ b/NEWS
@@ -94,6 +94,7 @@ Current:
       - patch #7769: Write flash fails for AVR910 programmers
       - bug #38732: Support for ATtiny1634
       - bug #36901 flashing Atmega32U4 EEPROM produces garbage on chip
+      - bug #28344 chip_erase_delay too short for ATmega324P, 644, 644P, and 1284P
 
   * Keep track of input file contents
 
diff --git a/avrdude.conf.in b/avrdude.conf.in
index 0f4921d7..0b99b077 100644
--- a/avrdude.conf.in
+++ b/avrdude.conf.in
@@ -4104,6 +4104,7 @@ part parent "m16"
     poweroffdelay       = 15;
     resetdelayms        = 1;
     allowfullpagebitstream = no;
+    chip_erase_delay = 55000;
 
     ocdrev              = 3;
   ;
@@ -4124,7 +4125,7 @@ part
     signature        = 0x1e 0x95 0x08;
     pagel            = 0xd7;
     bs2              = 0xa0;
-    chip_erase_delay = 9000;
+    chip_erase_delay = 55000;
     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";
 
@@ -4332,7 +4333,7 @@ part
     signature        = 0x1e 0x96 0x09;
     pagel            = 0xd7;
     bs2              = 0xa0;
-    chip_erase_delay = 9000;
+    chip_erase_delay = 55000;
     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";
 
@@ -4540,7 +4541,7 @@ part
     signature        = 0x1e 0x97 0x05;
     pagel            = 0xd7;
     bs2              = 0xa0;
-    chip_erase_delay = 9000;
+    chip_erase_delay = 55000;
     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";