forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
of/mtd/nand: add generic bindings and helpers
- nand-ecc-mode : String, operation mode of the NAND ecc mode. Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", "soft_bch". - nand-bus-width : 8 or 16 bus width if not present 8 - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: Stefan Roese <sr@denx.de>
- Loading branch information
Showing
5 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
* MTD generic binding | ||
|
||
- nand-ecc-mode : String, operation mode of the NAND ecc mode. | ||
Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", | ||
"soft_bch". | ||
- nand-bus-width : 8 or 16 bus width if not present 8 | ||
- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* Copyright 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
* | ||
* OF helpers for mtd. | ||
* | ||
* This file is released under the GPLv2 | ||
* | ||
*/ | ||
#include <linux/kernel.h> | ||
#include <linux/of_mtd.h> | ||
#include <linux/mtd/nand.h> | ||
#include <linux/export.h> | ||
|
||
/** | ||
* It maps 'enum nand_ecc_modes_t' found in include/linux/mtd/nand.h | ||
* into the device tree binding of 'nand-ecc', so that MTD | ||
* device driver can get nand ecc from device tree. | ||
*/ | ||
static const char *nand_ecc_modes[] = { | ||
[NAND_ECC_NONE] = "none", | ||
[NAND_ECC_SOFT] = "soft", | ||
[NAND_ECC_HW] = "hw", | ||
[NAND_ECC_HW_SYNDROME] = "hw_syndrome", | ||
[NAND_ECC_HW_OOB_FIRST] = "hw_oob_first", | ||
[NAND_ECC_SOFT_BCH] = "soft_bch", | ||
}; | ||
|
||
/** | ||
* of_get_nand_ecc_mode - Get nand ecc mode for given device_node | ||
* @np: Pointer to the given device_node | ||
* | ||
* The function gets ecc mode string from property 'nand-ecc-mode', | ||
* and return its index in nand_ecc_modes table, or errno in error case. | ||
*/ | ||
const int of_get_nand_ecc_mode(struct device_node *np) | ||
{ | ||
const char *pm; | ||
int err, i; | ||
|
||
err = of_property_read_string(np, "nand-ecc-mode", &pm); | ||
if (err < 0) | ||
return err; | ||
|
||
for (i = 0; i < ARRAY_SIZE(nand_ecc_modes); i++) | ||
if (!strcasecmp(pm, nand_ecc_modes[i])) | ||
return i; | ||
|
||
return -ENODEV; | ||
} | ||
EXPORT_SYMBOL_GPL(of_get_nand_ecc_mode); | ||
|
||
/** | ||
* of_get_nand_bus_width - Get nand bus witdh for given device_node | ||
* @np: Pointer to the given device_node | ||
* | ||
* return bus width option, or errno in error case. | ||
*/ | ||
int of_get_nand_bus_width(struct device_node *np) | ||
{ | ||
u32 val; | ||
|
||
if (of_property_read_u32(np, "nand-bus-width", &val)) | ||
return 8; | ||
|
||
switch(val) { | ||
case 8: | ||
case 16: | ||
return val; | ||
default: | ||
return -EIO; | ||
} | ||
} | ||
EXPORT_SYMBOL_GPL(of_get_nand_bus_width); | ||
|
||
/** | ||
* of_get_nand_on_flash_bbt - Get nand on flash bbt for given device_node | ||
* @np: Pointer to the given device_node | ||
* | ||
* return true if present false other wise | ||
*/ | ||
bool of_get_nand_on_flash_bbt(struct device_node *np) | ||
{ | ||
return of_property_read_bool(np, "nand-on-flash-bbt"); | ||
} | ||
EXPORT_SYMBOL_GPL(of_get_nand_on_flash_bbt); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/* | ||
* Copyright 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
* | ||
* OF helpers for mtd. | ||
* | ||
* This file is released under the GPLv2 | ||
*/ | ||
|
||
#ifndef __LINUX_OF_MTD_H | ||
#define __LINUX_OF_NET_H | ||
|
||
#ifdef CONFIG_OF_MTD | ||
#include <linux/of.h> | ||
extern const int of_get_nand_ecc_mode(struct device_node *np); | ||
int of_get_nand_bus_width(struct device_node *np); | ||
bool of_get_nand_on_flash_bbt(struct device_node *np); | ||
#endif | ||
|
||
#endif /* __LINUX_OF_MTD_H */ |