|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6 |
|
| #
ca8cbbb2 |
| 05-Mar-2025 |
Miquel Raynal <[email protected]> |
mtd: nand: Fix a kdoc comment
The max_bad_eraseblocks_per_lun member of nand_device obviously describes a number of *maximum* number of bad eraseblocks per LUN.
Fix this obvious typo.
Fixes: 377e5
mtd: nand: Fix a kdoc comment
The max_bad_eraseblocks_per_lun member of nand_device obviously describes a number of *maximum* number of bad eraseblocks per LUN.
Fix this obvious typo.
Fixes: 377e517b5fa5 ("mtd: nand: Add max_bad_eraseblocks_per_lun info to memorg") Cc: <[email protected]> # fix kdoc comment Reviewed-by: Tudor Ambarus <[email protected]> Signed-off-by: Miquel Raynal <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2, v6.13-rc1, v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4 |
|
| #
af264e59 |
| 18-Oct-2024 |
Christophe JAILLET <[email protected]> |
mtd: spinand: Constify struct nand_ecc_engine_ops
'struct nand_ecc_engine_ops' are not modified in these drivers.
Constifying this structure moves some data to a read-only section, so increases ove
mtd: spinand: Constify struct nand_ecc_engine_ops
'struct nand_ecc_engine_ops' are not modified in these drivers.
Constifying this structure moves some data to a read-only section, so increases overall security, especially when the structure holds some function pointers.
Update the prototype of mxic_ecc_get_pipelined_ops() accordingly.
On a x86_64, with allmodconfig, as an example: Before: ====== text data bss dec hex filename 16709 1374 16 18099 46b3 drivers/mtd/nand/ecc-mxic.o
After: ===== text data bss dec hex filename 16789 1294 16 18099 46b3 drivers/mtd/nand/ecc-mxic.o
Signed-off-by: Christophe JAILLET <[email protected]> Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/72597e9de2320a4109be2112e696399592edacd4.1729271136.git.christophe.jaillet@wanadoo.fr
show more ...
|
|
Revision tags: v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6 |
|
| #
8adf1ac2 |
| 26-Aug-2024 |
Miquel Raynal <[email protected]> |
mtd: nand: Introduce a block iterator
In order to be able to iterate easily across eraseblocks rather than pages, let's introduce a block iterator inspired from the page iterator.
The main usage of
mtd: nand: Introduce a block iterator
In order to be able to iterate easily across eraseblocks rather than pages, let's introduce a block iterator inspired from the page iterator.
The main usage of this iterator will be for continuous/sequential reads, where it is interesting to use a single request rather than split the requests in smaller chunks (ie. pages) that can be hardly optimized.
So a "continuous" boolean get's added for this purpose.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
3f4c0ad4 |
| 26-Aug-2024 |
Miquel Raynal <[email protected]> |
mtd: nand: Rename the NAND IO iteration helper
Soon a helper for iterating over blocks will be needed (for continuous read purposes). In order to clarify the intend of this helper, let's rename it w
mtd: nand: Rename the NAND IO iteration helper
Soon a helper for iterating over blocks will be needed (for continuous read purposes). In order to clarify the intend of this helper, let's rename it with the "page" wording inside.
While at it, improve the doc and fix a typo.
Signed-off-by: Miquel Raynal <[email protected]> Reviewed-by: Pratyush Yadav <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1, v6.7, v6.7-rc8, v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4, v6.7-rc3, v6.7-rc2, v6.7-rc1, v6.6, v6.6-rc7, v6.6-rc6, v6.6-rc5, v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1, v6.5, v6.5-rc7, v6.5-rc6, v6.5-rc5, v6.5-rc4, v6.5-rc3, v6.5-rc2, v6.5-rc1, v6.4, v6.4-rc7, v6.4-rc6, v6.4-rc5, v6.4-rc4, v6.4-rc3, v6.4-rc2, v6.4-rc1, v6.3, v6.3-rc7, v6.3-rc6, v6.3-rc5, v6.3-rc4, v6.3-rc3, v6.3-rc2, v6.3-rc1, v6.2, v6.2-rc8, v6.2-rc7, v6.2-rc6, v6.2-rc5, v6.2-rc4, v6.2-rc3, v6.2-rc2, v6.2-rc1, v6.1, v6.1-rc8, v6.1-rc7, v6.1-rc6, v6.1-rc5, v6.1-rc4, v6.1-rc3, v6.1-rc2 |
|
| #
a50ae8c9 |
| 18-Oct-2022 |
Dario Binacchi <[email protected]> |
mtd: nand: drop EXPORT_SYMBOL_GPL for nanddev_erase()
This function is only used within this module, so it is no longer necessary to use EXPORT_SYMBOL_GPL().
Signed-off-by: Dario Binacchi <dario.bi
mtd: nand: drop EXPORT_SYMBOL_GPL for nanddev_erase()
This function is only used within this module, so it is no longer necessary to use EXPORT_SYMBOL_GPL().
Signed-off-by: Dario Binacchi <[email protected]> Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v6.1-rc1, v6.0, v6.0-rc7, v6.0-rc6, v6.0-rc5, v6.0-rc4, v6.0-rc3, v6.0-rc2, v6.0-rc1, v5.19, v5.19-rc8, v5.19-rc7, v5.19-rc6, v5.19-rc5, v5.19-rc4, v5.19-rc3, v5.19-rc2, v5.19-rc1, v5.18, v5.18-rc7, v5.18-rc6, v5.18-rc5, v5.18-rc4, v5.18-rc3, v5.18-rc2, v5.18-rc1, v5.17, v5.17-rc8, v5.17-rc7, v5.17-rc6, v5.17-rc5, v5.17-rc4, v5.17-rc3 |
|
| #
00360eba |
| 02-Feb-2022 |
Miquel Raynal <[email protected]> |
spi: mxic: Add support for pipelined ECC operations
Some SPI-NAND chips do not have a proper on-die ECC engine providing error correction/detection. This is particularly an issue on embedded devices
spi: mxic: Add support for pipelined ECC operations
Some SPI-NAND chips do not have a proper on-die ECC engine providing error correction/detection. This is particularly an issue on embedded devices with limited resources because all the computations must happen in software, unless an external hardware engine is provided.
These external engines are new and can be of two categories: external or pipelined. Macronix is providing both, the former being already supported. The second, however, is very SoC implementation dependent and must be instantiated by the SPI host controller directly.
An entire subsystem has been contributed to support these engines which makes the insertion into another subsystem such as SPI quite straightforward without the need for a lot of specific functions.
Signed-off-by: Miquel Raynal <[email protected]> Reviewed-by: Mark Brown <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v5.17-rc2, v5.17-rc1, v5.16, v5.16-rc8, v5.16-rc7, v5.16-rc6 |
|
| #
5145abeb |
| 16-Dec-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: ecc: Provide a helper to retrieve a pilelined engine device
In a pipelined engine situation, we might either have the host which internally has support for error correction, or have it us
mtd: nand: ecc: Provide a helper to retrieve a pilelined engine device
In a pipelined engine situation, we might either have the host which internally has support for error correction, or have it using an external hardware block for this purpose. In the former case, the host is also the ECC engine. In the latter case, it is not. In order to get the right pointers on the right devices (for example: in order to devm_* allocate variables), let's introduce this helper which can safely be called by pipelined ECC engines in order to retrieve the right device structure.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
cda32a61 |
| 16-Dec-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: Add a new helper to retrieve the ECC context
Introduce nand_to_ecc_ctx() which will allow to easily jump to the private pointer of an ECC context given a NAND device. This is very handy,
mtd: nand: Add a new helper to retrieve the ECC context
Introduce nand_to_ecc_ctx() which will allow to easily jump to the private pointer of an ECC context given a NAND device. This is very handy, from the prepare or finish ECC hook, to get the internal context out of the NAND device object.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
96489c1c |
| 16-Dec-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: ecc: Add infrastructure to support hardware engines
Add the necessary helpers to register/unregister hardware ECC engines that will be called from ECC engine drivers.
Also add helpers to
mtd: nand: ecc: Add infrastructure to support hardware engines
Add the necessary helpers to register/unregister hardware ECC engines that will be called from ECC engine drivers.
Also add helpers to get the right engine from the user perspective. Keep a reference of the in use ECC engine in order to prevent modules to be unloaded. Put the reference when the engine gets retired.
A static list of hardware (only) ECC engines is setup to keep track of the registered engines.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v5.16-rc5, v5.16-rc4, v5.16-rc3, v5.16-rc2, v5.16-rc1, v5.15, v5.15-rc7, v5.15-rc6, v5.15-rc5, v5.15-rc4, v5.15-rc3, v5.15-rc2, v5.15-rc1, v5.14, v5.14-rc7, v5.14-rc6, v5.14-rc5, v5.14-rc4, v5.14-rc3, v5.14-rc2, v5.14-rc1, v5.13, v5.13-rc7, v5.13-rc6, v5.13-rc5, v5.13-rc4, v5.13-rc3, v5.13-rc2, v5.13-rc1, v5.12, v5.12-rc8, v5.12-rc7, v5.12-rc6, v5.12-rc5, v5.12-rc4, v5.12-rc3, v5.12-rc2, v5.12-rc1, v5.12-rc1-dontuse, v5.11, v5.11-rc7, v5.11-rc6 |
|
| #
ba4a40a4 |
| 27-Jan-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: Add a helper to retrieve the number of ECC bytes per step
This operation is very common and deserves a helper. It of course only works after the ECC engine initialization.
Signed-off-by:
mtd: nand: Add a helper to retrieve the number of ECC bytes per step
This operation is very common and deserves a helper. It of course only works after the ECC engine initialization.
Signed-off-by: Miquel Raynal <[email protected]> Tested-by: Adam Ford <[email protected]> #logicpd Torpedo Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
e3554b10 |
| 27-Jan-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: Add a helper to retrieve the number of ECC steps
This operation is very common and deserves a helper. It of course only works after the ECC engine initialization.
Signed-off-by: Miquel R
mtd: nand: Add a helper to retrieve the number of ECC steps
This operation is very common and deserves a helper. It of course only works after the ECC engine initialization.
Signed-off-by: Miquel Raynal <[email protected]> Tested-by: Adam Ford <[email protected]> #logicpd Torpedo Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
2bc61184 |
| 27-Jan-2021 |
Miquel Raynal <[email protected]> |
mtd: nand: Let ECC engines advertize the exact number of steps
This is an information that might be useful for specific uses, so export it, which might avoid having to guess the number of steps when
mtd: nand: Let ECC engines advertize the exact number of steps
This is an information that might be useful for specific uses, so export it, which might avoid having to guess the number of steps when necessary.
Signed-off-by: Miquel Raynal <[email protected]> Tested-by: Adam Ford <[email protected]> #logicpd Torpedo Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v5.11-rc5, v5.11-rc4, v5.11-rc3, v5.11-rc2, v5.11-rc1, v5.10, v5.10-rc7, v5.10-rc6, v5.10-rc5, v5.10-rc4, v5.10-rc3, v5.10-rc2, v5.10-rc1, v5.9, v5.9-rc8 |
|
| #
6b0c3b84 |
| 01-Oct-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Add helpers to manage ECC engines and configurations
Add the logic in the NAND core to find the right ECC engine depending on the NAND chip requirements and the user desires. Right now, t
mtd: nand: Add helpers to manage ECC engines and configurations
Add the logic in the NAND core to find the right ECC engine depending on the NAND chip requirements and the user desires. Right now, the choice may be made between (more will come): * software Hamming * software BCH * on-die (SPI-NAND devices only)
Once the ECC engine has been found, the ECC engine must be configured.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
da429b96 |
| 30-Sep-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Let on-die ECC engines be retrieved from the NAND core
Before making use of the ECC engines, we must retrieve them. Add the necessary boilerplate.
Signed-off-by: Miquel Raynal <miquel.ra
mtd: nand: Let on-die ECC engines be retrieved from the NAND core
Before making use of the ECC engines, we must retrieve them. Add the necessary boilerplate.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
53fbdeeb |
| 29-Sep-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Let software ECC engines be retrieved from the NAND core
Before making use of the ECC engines, we must retrieve them. Add the boilerplate for the ones already available: software engines
mtd: nand: Let software ECC engines be retrieved from the NAND core
Before making use of the ECC engines, we must retrieve them. Add the boilerplate for the ones already available: software engines (Hamming and BCH).
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
35fe1b98 |
| 29-Sep-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: ecc-hamming: Create the software Hamming engine
Let's continue introducing the generic ECC engine abstraction in the NAND subsystem by instantiating a second ECC engine: software Hamming.
mtd: nand: ecc-hamming: Create the software Hamming engine
Let's continue introducing the generic ECC engine abstraction in the NAND subsystem by instantiating a second ECC engine: software Hamming.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
9994bb3f |
| 29-Sep-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: ecc-bch: Create the software BCH engine
Let's continue introducing the generic ECC engine abstraction in the NAND subsystem by instantiating a first ECC engine: the software BCH one.
Whi
mtd: nand: ecc-bch: Create the software BCH engine
Let's continue introducing the generic ECC engine abstraction in the NAND subsystem by instantiating a first ECC engine: the software BCH one.
While at it, make a very tidy ecc_sw_bch_init() function and move all the sanity checks and user input management in nand_ecc_sw_bch_init_ctx(). This second helper will be called from the raw RAND core.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
51e7bf45 |
| 29-Sep-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: ecc: Add an I/O request tweaking mechanism
Currently, BCH and Hamming engine are sharing the same tweaking/restoring I/O mechanism: they need the I/O request to fully cover the main/OOB a
mtd: nand: ecc: Add an I/O request tweaking mechanism
Currently, BCH and Hamming engine are sharing the same tweaking/restoring I/O mechanism: they need the I/O request to fully cover the main/OOB area. Let's make this code generic as sharing the code between two drivers is already a win. Maybe other ECC engine drivers will need it too.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v5.9-rc7, v5.9-rc6, v5.9-rc5, v5.9-rc4, v5.9-rc3 |
|
| #
93ef92f6 |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
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 <mique
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 <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
3316c8e3 |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Create helpers to set/extract the ECC requirements
Despite its current name, the eccreq field actually encodes both the NAND requirements and the final ECC configuration. That works fine
mtd: nand: Create helpers to set/extract the ECC requirements
Despite its current name, the eccreq field actually encodes both the NAND requirements and the final ECC configuration. That works fine when using on-die ECC since those 2 concepts match perfectly, but it starts being a problem as soon as we use on-host ECC engines, where we're not guaranteed to have a perfect match.
Let's hide the ECC requirements access behind helpers so we can later split those 2 concepts. As the structures have not been clarified yet, these helpers access the same internal variable as nanddev_get_ecc_conf() for now.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
d193792a |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Create a helper to extract the ECC configuration
Despite its current name, the eccreq field actually encodes both the NAND requirements and the final ECC configuration. That works fine wh
mtd: nand: Create a helper to extract the ECC configuration
Despite its current name, the eccreq field actually encodes both the NAND requirements and the final ECC configuration. That works fine when using on-die ECC since those 2 concepts match perfectly, but it starts being a problem as soon as we use on-host ECC engines, where we're not guaranteed to have a perfect match.
Let's hide the ECC configuration access behind a helper so we can later split those 2 concepts.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
a8c7ffdb |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Introduce the ECC engine framework
Create a generic ECC engine framework. This is a base to instantiate ECC engine objects.
If we really want to be generic, bindings must evolve, so here
mtd: nand: Introduce the ECC engine framework
Create a generic ECC engine framework. This is a base to instantiate ECC engine objects.
If we really want to be generic, bindings must evolve, so here is the new logic. The following three properties are mutually exclusive: - The nand-no-ecc-engine boolean property is set and there is no ECC engine to retrieve. - The nand-use-soft-ecc-engine boolean property is set and the core will force using the use of software correction. - There is a nand-ecc-engine property pointing at a node which will act as ECC engine.
It the later case, the property may reference: - The NAND chip node itself (for the on-die ECC case). - The parent node if the NAND controller embeds an ECC engine. - Any other node being an external ECC controller as well.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
701981ca |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Add a NAND page I/O request type
Use an enum to differentiate the type of I/O (reading or writing a page). Also update the request iterator.
Signed-off-by: Miquel Raynal <miquel.raynal@b
mtd: nand: Add a NAND page I/O request type
Use an enum to differentiate the type of I/O (reading or writing a page). Also update the request iterator.
Signed-off-by: Miquel Raynal <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
| #
f2f64c1e |
| 27-Aug-2020 |
Miquel Raynal <[email protected]> |
mtd: rawnand: Move the nand_ecc_algo enum to the generic NAND layer
This enumeration is generic and will be reused NAND-wide.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://
mtd: rawnand: Move the nand_ecc_algo enum to the generic NAND layer
This enumeration is generic and will be reused NAND-wide.
Signed-off-by: Miquel Raynal <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|
|
Revision tags: v5.9-rc2, v5.9-rc1, v5.8, v5.8-rc7, v5.8-rc6, v5.8-rc5, v5.8-rc4, v5.8-rc3, v5.8-rc2, v5.8-rc1, v5.7 |
|
| #
85f54c55 |
| 29-May-2020 |
Miquel Raynal <[email protected]> |
mtd: nand: Rename a core structure
Prepare the migration to a generic ECC engine by renaming the nand_ecc_req structure into nand_ecc_props. This structure will be the base of a wider 'nand_ecc' str
mtd: nand: Rename a core structure
Prepare the migration to a generic ECC engine by renaming the nand_ecc_req structure into nand_ecc_props. This structure will be the base of a wider 'nand_ecc' structure.
In nand_device, these properties are still named "eccreq" even if "eccprops" might be more descriptive. This is just a transition step, this field is being replaced very soon by a much wider structure. The impact of renaming this field would be huge compared to its interest.
Signed-off-by: Miquel Raynal <[email protected]> Reviewed-by: Boris Brezillon <[email protected]> Link: https://lore.kernel.org/linux-mtd/[email protected]
show more ...
|