From: Frank de Brabander <debrabander@gmail.com>
To: linux-mtd@lists.infradead.org
Cc: Frank de Brabander <debrabander@gmail.com>
Subject: [PATCH v2] mtd: orion_nand: support selecting ECC mode via the device tree
Date: Wed, 18 Nov 2015 13:07:32 +0100 [thread overview]
Message-ID: <1447848452-2972-1-git-send-email-debrabander@gmail.com> (raw)
Currently the Orion NAND ECC mode is hardcoded to NAND_ECC_SOFT, it does not
allow selecting any other ECC mode. This change makes it possible to use the
device tree to select other ECC modes. It still defaults to the original
mode NAND_ECC_SOFT.
This makes the driver more in line with other mtd nand drivers, that already
support similar ways to select the ECC mode.
Signed-off-by: Frank de Brabander <debrabander@gmail.com>
---
Documentation/devicetree/bindings/mtd/orion-nand.txt | 3 +++
drivers/mtd/nand/orion_nand.c | 6 +++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/mtd/orion-nand.txt b/Documentation/devicetree/bindings/mtd/orion-nand.txt
index 2d6ab66..129ce77 100644
--- a/Documentation/devicetree/bindings/mtd/orion-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/orion-nand.txt
@@ -11,6 +11,8 @@ Optional properties:
- bank-width : Width in bytes of the device. Default is 1
- chip-delay : Chip dependent delay for transferring data from array to read
registers in usecs
+- nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default.
+ Supported values are: "none", "soft", and "soft_bch".
The device tree may optionally contain sub-nodes describing partitions of the
address space. See partition.txt for more detail.
@@ -26,6 +28,7 @@ nand@f4000000 {
chip-delay = <25>;
compatible = "marvell,orion-nand";
reg = <0xf4000000 0x400>;
+ nand-ecc-mode = "soft_bch";
partition@0 {
label = "u-boot";
diff --git a/drivers/mtd/nand/orion_nand.c b/drivers/mtd/nand/orion_nand.c
index ee83749..004562a 100644
--- a/drivers/mtd/nand/orion_nand.c
+++ b/drivers/mtd/nand/orion_nand.c
@@ -14,6 +14,7 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>
+#include <linux/of_mtd.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/partitions.h>
@@ -84,6 +85,7 @@ static int __init orion_nand_probe(struct platform_device *pdev)
void __iomem *io_base;
int ret = 0;
u32 val = 0;
+ int ecc_mode = 0;
nc = devm_kzalloc(&pdev->dev,
sizeof(struct nand_chip) + sizeof(struct mtd_info),
@@ -130,7 +132,9 @@ static int __init orion_nand_probe(struct platform_device *pdev)
nc->IO_ADDR_R = nc->IO_ADDR_W = io_base;
nc->cmd_ctrl = orion_nand_cmd_ctrl;
nc->read_buf = orion_nand_read_buf;
- nc->ecc.mode = NAND_ECC_SOFT;
+
+ ecc_mode = of_get_nand_ecc_mode(pdev->dev.of_node);
+ nc->ecc.mode = ecc_mode < 0 ? NAND_ECC_SOFT : ecc_mode;
if (board->chip_delay)
nc->chip_delay = board->chip_delay;
--
1.9.1
next reply other threads:[~2015-11-18 12:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 12:07 Frank de Brabander [this message]
2015-11-18 18:17 ` [PATCH v2] mtd: orion_nand: support selecting ECC mode via the device tree Brian Norris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1447848452-2972-1-git-send-email-debrabander@gmail.com \
--to=debrabander@gmail.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.