From 819423778947e01613bfe8f8664639f34e5750b6 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Tue, 20 Nov 2012 16:29:42 +0000
Subject: [PATCH] ar71xx: make ar934x_nfc driver compatible with 3.7

Also add compatibility patches for the currently
supported kernels.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 34278
---
 .../files/drivers/mtd/nand/ar934x_nfc.c       | 13 ---------
 .../a02-ar934x_nfc-add-NO_AUTOINCR-flag.patch |  2 +-
 ...5-ar934x_nfc-add-buffer-verification.patch | 29 +++++++++++++++++++
 ...5-ar934x_nfc-add-buffer-verification.patch | 29 +++++++++++++++++++
 4 files changed, 59 insertions(+), 14 deletions(-)
 create mode 100644 target/linux/ar71xx/patches-3.3/a05-ar934x_nfc-add-buffer-verification.patch
 create mode 100644 target/linux/ar71xx/patches-3.6/a05-ar934x_nfc-add-buffer-verification.patch

diff --git a/target/linux/ar71xx/files/drivers/mtd/nand/ar934x_nfc.c b/target/linux/ar71xx/files/drivers/mtd/nand/ar934x_nfc.c
index 9434d0fe06..7fd04ca621 100644
--- a/target/linux/ar71xx/files/drivers/mtd/nand/ar934x_nfc.c
+++ b/target/linux/ar71xx/files/drivers/mtd/nand/ar934x_nfc.c
@@ -762,18 +762,6 @@ ar934x_nfc_read_buf(struct mtd_info *mtd, u8 *buf, int len)
 	nfc->buf_index = buf_index;
 }
 
-static int
-ar934x_nfc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-	int i;
-
-	for (i = 0; i < len; i++)
-		if (buf[i] != ar934x_nfc_read_byte(mtd))
-			return -EFAULT;
-
-	return 0;
-}
-
 static void
 ar934x_nfc_hw_init(struct ar934x_nfc *nfc)
 {
@@ -1059,7 +1047,6 @@ ar934x_nfc_probe(struct platform_device *pdev)
 	nand->read_byte = ar934x_nfc_read_byte;
 	nand->write_buf = ar934x_nfc_write_buf;
 	nand->read_buf = ar934x_nfc_read_buf;
-	nand->verify_buf = ar934x_nfc_verify_buf;
 	nand->select_chip = ar934x_nfc_select_chip;
 
 	ret = ar934x_nfc_alloc_buf(nfc, AR934X_NFC_ID_BUF_SIZE);
diff --git a/target/linux/ar71xx/patches-3.3/a02-ar934x_nfc-add-NO_AUTOINCR-flag.patch b/target/linux/ar71xx/patches-3.3/a02-ar934x_nfc-add-NO_AUTOINCR-flag.patch
index fad9eacb3b..8f7c972fd3 100644
--- a/target/linux/ar71xx/patches-3.3/a02-ar934x_nfc-add-NO_AUTOINCR-flag.patch
+++ b/target/linux/ar71xx/patches-3.3/a02-ar934x_nfc-add-NO_AUTOINCR-flag.patch
@@ -1,7 +1,7 @@
 reverted:
 --- a/drivers/mtd/nand/ar934x_nfc.c
 +++ b/drivers/mtd/nand/ar934x_nfc.c
-@@ -1051,6 +1051,7 @@ ar934x_nfc_probe(struct platform_device
+@@ -1039,6 +1039,7 @@ ar934x_nfc_probe(struct platform_device
  	else
  		mtd->name = dev_name(&pdev->dev);
  
diff --git a/target/linux/ar71xx/patches-3.3/a05-ar934x_nfc-add-buffer-verification.patch b/target/linux/ar71xx/patches-3.3/a05-ar934x_nfc-add-buffer-verification.patch
new file mode 100644
index 0000000000..c4c462804e
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.3/a05-ar934x_nfc-add-buffer-verification.patch
@@ -0,0 +1,29 @@
+--- a/drivers/mtd/nand/ar934x_nfc.c
++++ b/drivers/mtd/nand/ar934x_nfc.c
+@@ -762,6 +762,18 @@ ar934x_nfc_read_buf(struct mtd_info *mtd
+ 	nfc->buf_index = buf_index;
+ }
+ 
++static int
++ar934x_nfc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++	int i;
++
++	for (i = 0; i < len; i++)
++		if (buf[i] != ar934x_nfc_read_byte(mtd))
++			return -EFAULT;
++
++	return 0;
++}
++
+ static void
+ ar934x_nfc_hw_init(struct ar934x_nfc *nfc)
+ {
+@@ -1048,6 +1060,7 @@ ar934x_nfc_probe(struct platform_device
+ 	nand->read_byte = ar934x_nfc_read_byte;
+ 	nand->write_buf = ar934x_nfc_write_buf;
+ 	nand->read_buf = ar934x_nfc_read_buf;
++	nand->verify_buf = ar934x_nfc_verify_buf;
+ 	nand->select_chip = ar934x_nfc_select_chip;
+ 
+ 	ret = ar934x_nfc_alloc_buf(nfc, AR934X_NFC_ID_BUF_SIZE);
diff --git a/target/linux/ar71xx/patches-3.6/a05-ar934x_nfc-add-buffer-verification.patch b/target/linux/ar71xx/patches-3.6/a05-ar934x_nfc-add-buffer-verification.patch
new file mode 100644
index 0000000000..c4c462804e
--- /dev/null
+++ b/target/linux/ar71xx/patches-3.6/a05-ar934x_nfc-add-buffer-verification.patch
@@ -0,0 +1,29 @@
+--- a/drivers/mtd/nand/ar934x_nfc.c
++++ b/drivers/mtd/nand/ar934x_nfc.c
+@@ -762,6 +762,18 @@ ar934x_nfc_read_buf(struct mtd_info *mtd
+ 	nfc->buf_index = buf_index;
+ }
+ 
++static int
++ar934x_nfc_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
++{
++	int i;
++
++	for (i = 0; i < len; i++)
++		if (buf[i] != ar934x_nfc_read_byte(mtd))
++			return -EFAULT;
++
++	return 0;
++}
++
+ static void
+ ar934x_nfc_hw_init(struct ar934x_nfc *nfc)
+ {
+@@ -1048,6 +1060,7 @@ ar934x_nfc_probe(struct platform_device
+ 	nand->read_byte = ar934x_nfc_read_byte;
+ 	nand->write_buf = ar934x_nfc_write_buf;
+ 	nand->read_buf = ar934x_nfc_read_buf;
++	nand->verify_buf = ar934x_nfc_verify_buf;
+ 	nand->select_chip = ar934x_nfc_select_chip;
+ 
+ 	ret = ar934x_nfc_alloc_buf(nfc, AR934X_NFC_ID_BUF_SIZE);
-- 
2.30.2