mtd: nand: denali_dt: enable HW_ECC_FIXUP for Altera SOCFPGA variant

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Wed May 10 19:59:12 PDT 2017


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=a56609c4c3f34de76d905e39160511b3c53310ac
Commit:     a56609c4c3f34de76d905e39160511b3c53310ac
Parent:     24715c749b2ff5545f0316e7ad8b65026f9e9612
Author:     Masahiro Yamada <yamada.masahiro at socionext.com>
AuthorDate: Thu Mar 30 15:45:53 2017 +0900
Committer:  Boris Brezillon <boris.brezillon at free-electrons.com>
CommitDate: Tue Apr 25 14:18:34 2017 +0200

    mtd: nand: denali_dt: enable HW_ECC_FIXUP for Altera SOCFPGA variant
    
    There are various customizable parameters, so several variants for
    this IP.  A generic compatible like "denali,denali-nand-dt" is
    useless.  Moreover, there are multiple things wrong with this string.
    (Refer to Rob's comment [1])
    
    The "denali,denali-nand-dt" was added by Altera for the SOCFPGA port.
    Replace it with a more specific string "altr,socfpga-denali-nand".
    There are no users (in upstream) of the old compatible string.
    
    The Denali IP on SOCFPGA incorporates the hardware ECC fixup engine.
    So, this capability should be associated with the compatible.
    
    [1] https://lkml.org/lkml/2016/12/1/450
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
    Acked-by: Rob Herring <robh at kernel.org>
    Signed-off-by: Boris Brezillon <boris.brezillon at free-electrons.com>
---
 Documentation/devicetree/bindings/mtd/denali-nand.txt |  5 +++--
 drivers/mtd/nand/denali_dt.c                          | 14 ++++++++++----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/Documentation/devicetree/bindings/mtd/denali-nand.txt b/Documentation/devicetree/bindings/mtd/denali-nand.txt
index b04d03a..6f4ab4c 100644
--- a/Documentation/devicetree/bindings/mtd/denali-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/denali-nand.txt
@@ -1,7 +1,8 @@
 * Denali NAND controller
 
 Required properties:
-  - compatible : should be "denali,denali-nand-dt"
+  - compatible : should be one of the following:
+      "altr,socfpga-denali-nand"            - for Altera SOCFPGA
   - reg : should contain registers location and length for data and reg.
   - reg-names: Should contain the reg names "nand_data" and "denali_reg"
   - interrupts : The interrupt number.
@@ -15,7 +16,7 @@ Examples:
 nand: nand at ff900000 {
 	#address-cells = <1>;
 	#size-cells = <1>;
-	compatible = "denali,denali-nand-dt";
+	compatible = "altr,socfpga-denali-nand";
 	reg = <0xff900000 0x100000>, <0xffb80000 0x10000>;
 	reg-names = "nand_data", "denali_reg";
 	interrupts = <0 144 4>;
diff --git a/drivers/mtd/nand/denali_dt.c b/drivers/mtd/nand/denali_dt.c
index 293ddb8..9577bfd 100644
--- a/drivers/mtd/nand/denali_dt.c
+++ b/drivers/mtd/nand/denali_dt.c
@@ -33,11 +33,17 @@ struct denali_dt_data {
 	unsigned int caps;
 };
 
-static const struct of_device_id denali_nand_dt_ids[] = {
-		{ .compatible = "denali,denali-nand-dt" },
-		{ /* sentinel */ }
-	};
+static const struct denali_dt_data denali_socfpga_data = {
+	.caps = DENALI_CAP_HW_ECC_FIXUP,
+};
 
+static const struct of_device_id denali_nand_dt_ids[] = {
+	{
+		.compatible = "altr,socfpga-denali-nand",
+		.data = &denali_socfpga_data,
+	},
+	{ /* sentinel */ }
+};
 MODULE_DEVICE_TABLE(of, denali_nand_dt_ids);
 
 static u64 denali_dma_mask;



More information about the linux-mtd-cvs mailing list