From 0dbb1ab2f011d6f67ee0df1fb9b54f444c6af0b2 Mon Sep 17 00:00:00 2001
From: joerg_wunsch <joerg_wunsch@81a1dc3b-b13d-400b-aceb-764788c761c2>
Date: Tue, 28 Jan 2014 22:01:47 +0000
Subject: [PATCH] Fix EEPROM size of ATmega256RFR2 et al.

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1274 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 ChangeLog       |  4 +++
 avrdude.conf.in | 72 ++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 75 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index eec962c3..2ac35be7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-01-28  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	* avrdude.conf.in (ATmega256RFR2 et al.): Fix EEPROM size.
+
 2014-01-27  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
 
 	[bug #41357] OS X: Avrdude messes with the usb stack?
diff --git a/avrdude.conf.in b/avrdude.conf.in
index 91c4c914..b247d644 100644
--- a/avrdude.conf.in
+++ b/avrdude.conf.in
@@ -10319,9 +10319,43 @@ part parent "m2561"
     id               = "m256rfr2";
     desc             = "ATmega256RFR2";
     signature        = 0x1e 0xa8 0x02;
-    chip_erase_delay = 55000;
+    chip_erase_delay = 18500;
     bs2              = 0xE2;
 
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 8192;
+        min_write_delay = 13000;
+        max_write_delay = 13000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x a12    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
 
     ocdrev              = 4;
   ;
@@ -10390,6 +10424,42 @@ part parent "m128rfa1"
 	blocksize	= 256;
 	readsize	= 256;
       ;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 13000;
+        max_write_delay = 13000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+
   ;
 
 #------------------------------------------------------------