mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 20:23:57 +08:00
mtd: nand: Use the new generic ECC object
Embed a generic NAND ECC high-level object in the nand_device structure to carry all the ECC engine configuration/data. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20200827085208.16276-16-miquel.raynal@bootlin.com
This commit is contained in:
parent
53576c7bfc
commit
93ef92f6f4
@ -301,7 +301,7 @@ struct nand_ecc {
|
||||
* struct nand_device - NAND device
|
||||
* @mtd: MTD instance attached to the NAND device
|
||||
* @memorg: memory layout
|
||||
* @eccreq: ECC requirements
|
||||
* @ecc: NAND ECC object attached to the NAND device
|
||||
* @rowconv: position to row address converter
|
||||
* @bbt: bad block table info
|
||||
* @ops: NAND operations attached to the NAND device
|
||||
@ -309,8 +309,8 @@ struct nand_ecc {
|
||||
* Generic NAND object. Specialized NAND layers (raw NAND, SPI NAND, OneNAND)
|
||||
* should declare their own NAND object embedding a nand_device struct (that's
|
||||
* how inheritance is done).
|
||||
* struct_nand_device->memorg and struct_nand_device->eccreq should be filled
|
||||
* at device detection time to reflect the NAND device
|
||||
* struct_nand_device->memorg and struct_nand_device->ecc.requirements should
|
||||
* be filled at device detection time to reflect the NAND device
|
||||
* capabilities/requirements. Once this is done nanddev_init() can be called.
|
||||
* It will take care of converting NAND information into MTD ones, which means
|
||||
* the specialized NAND layers should never manually tweak
|
||||
@ -319,7 +319,7 @@ struct nand_ecc {
|
||||
struct nand_device {
|
||||
struct mtd_info mtd;
|
||||
struct nand_memory_organization memorg;
|
||||
struct nand_ecc_props eccreq;
|
||||
struct nand_ecc ecc;
|
||||
struct nand_row_converter rowconv;
|
||||
struct nand_bbt bbt;
|
||||
const struct nand_ops *ops;
|
||||
@ -530,7 +530,7 @@ nanddev_get_memorg(struct nand_device *nand)
|
||||
static inline const struct nand_ecc_props *
|
||||
nanddev_get_ecc_conf(struct nand_device *nand)
|
||||
{
|
||||
return &nand->eccreq;
|
||||
return &nand->ecc.ctx.conf;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -541,7 +541,7 @@ nanddev_get_ecc_conf(struct nand_device *nand)
|
||||
static inline const struct nand_ecc_props *
|
||||
nanddev_get_ecc_requirements(struct nand_device *nand)
|
||||
{
|
||||
return &nand->eccreq;
|
||||
return &nand->ecc.requirements;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -554,7 +554,7 @@ static inline void
|
||||
nanddev_set_ecc_requirements(struct nand_device *nand,
|
||||
const struct nand_ecc_props *reqs)
|
||||
{
|
||||
nand->eccreq = *reqs;
|
||||
nand->ecc.requirements = *reqs;
|
||||
}
|
||||
|
||||
int nanddev_init(struct nand_device *nand, const struct nand_ops *ops,
|
||||
|
Loading…
Reference in New Issue
Block a user