Miquel Raynal
f6c4e66149
mtd: rawnand: fsl_upm: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-17-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
e9f2f5a807
mtd: rawnand: fsl_ifc: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-16-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
128bbbf0ac
mtd: rawnand: fsl_elbc: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-15-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
63a1460768
mtd: rawnand: diskonchip: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-14-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
c5be12e459
mtd: rawnand: diskonchip: Fix the probe error path
...
Not sure nand_cleanup() is the right function to call here but in any
case it is not nand_release(). Indeed, even a comment says that
calling nand_release() is a bit of a hack as there is no MTD device to
unregister. So switch to nand_cleanup() for now and drop this
comment.
There is no Fixes tag applying here as the use of nand_release()
in this driver predates by far the introduction of nand_cleanup() in
commit d44154f969 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources")
which makes this change possible. However, pointing this commit as the
culprit for backporting purposes makes sense even if it did not intruce
any bug.
Fixes: d44154f969 ("mtd: nand: Provide nand_cleanup() function to free NAND related resources")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-13-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
009e2e1d83
mtd: rawnand: denali: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-12-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
6ac64a1755
mtd: rawnand: denali: Delete items from the list in the _remove() path
...
Denali driver keeps track of devices with a list. Delete items of this
list as long as they are not in use anymore.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-11-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
a9575c48e5
mtd: rawnand: davinci: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-10-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
970024f031
mtd: rawnand: cs553x: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-9-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
544bac8999
mtd: rawnand: cafe: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-7-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
8b88f4e0a8
mtd: rawnand: cadence: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-6-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
937d039dfd
mtd: rawnand: brcmnand: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Cc: Brian Norris <computersforpeace@gmail.com >
Cc: Kamal Dasu <kdasu.kdev@gmail.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-5-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
9369043059
mtd: rawnand: bcm47xx: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-4-miquel.raynal@bootlin.com
2020-05-31 10:53:33 +02:00
Miquel Raynal
4a3d21bc25
mtd: rawnand: au1550nd: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-3-miquel.raynal@bootlin.com
2020-05-31 10:53:26 +02:00
Miquel Raynal
08f25cd767
mtd: rawnand: ams-delta: Stop using nand_release()
...
This helper is not very useful and very often people get confused:
they use nand_release() instead of nand_cleanup().
Let's stop using nand_release() by calling mtd_device_unregister() and
nand_cleanup() directly.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-2-miquel.raynal@bootlin.com
2020-05-26 21:37:51 +02:00
Miquel Raynal
88ffef1b65
mtd: rawnand: arasan: Support the hardware BCH ECC engine
...
Add support for the hardware ECC BCH engine.
Please mind that this engine has an important limitation:
BCH implementation does not inform the user when an uncorrectable ECC
error occurs. To workaround this, we avoid using the hardware engine
in the read path and do the computation with the software BCH
implementation, which is faster than mixing hardware (for correction)
and software (for verification).
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-9-miquel.raynal@bootlin.com
2020-05-26 21:37:25 +02:00
Miquel Raynal
197b88fecc
mtd: rawnand: arasan: Add new Arasan NAND controller
...
Add the Arasan NAND controller driver. This brings only NAND
controller support. The ECC engine being a bit subtle, hardware ECC
support will be added in a second time.
This work is based on contributions from Naga Sureshkumar Relli.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-8-miquel.raynal@bootlin.com
2020-05-24 22:34:55 +02:00
Miquel Raynal
8201c579ec
dt-bindings: mtd: Document ARASAN NAND bindings
...
Document the Arasan NAND controller bindings.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Rob Herring <robh@kernel.org >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-7-miquel.raynal@bootlin.com
2020-05-24 22:34:55 +02:00
Miquel Raynal
ce33bd4c8c
MAINTAINERS: Add Arasan NAND controller and bindings
...
Fill a new entry for the Arasan NAND controller.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-6-miquel.raynal@bootlin.com
2020-05-24 22:34:55 +02:00
Miquel Raynal
d7904619ea
mtd: rawnand: Add nand_extract_bits()
...
There are cases where ECC bytes are not byte-aligned. Indeed, BCH
implies using a number of ECC bits, which are not always a multiple of
8. We then need a helper like nand_extract_bits() to extract these
syndromes from a buffer.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-5-miquel.raynal@bootlin.com
2020-05-24 22:34:55 +02:00
Miquel Raynal
0651ed5082
mtd: rawnand: Ensure the number of bitflips is consistent
...
The main NAND read page function can loop over "page reads" many times
in if the reading reports uncorrectable error(s) and if the chip
supports the read_retry feature.
In this case, the number of bitflips is summarized between
attempts. Fix this by re-initializing the entire mtd_ecc_stats object
each time we retry.
Suggested-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-4-miquel.raynal@bootlin.com
2020-05-24 20:48:11 +02:00
Miquel Raynal
1759279ad1
lib/bch: Allow easy bit swapping
...
It seems that several hardware ECC engine use a swapped representation
of bytes compared to software. This might having to do with how the
ECC engine is wired to the NAND controller or the order the bits are
passed to the hardware BCH logic.
This means that when the software BCH engine is working in conjunction
with data generated with hardware, sometimes we might need to swap the
bits inside bytes, eg:
0x0A = b0000_1010 -> b0101_0000 = 0x50
Make it possible by adding a boolean to the BCH initialization routine.
Regarding the implementation itself, this is a rather simple approach
that can probably be enhanced in the future by preparing the
->a_{mod,pow}_tab tables with the swapping in mind.
Suggested-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-3-miquel.raynal@bootlin.com
2020-05-24 20:48:11 +02:00
Miquel Raynal
c8ae3f744d
lib/bch: Rework a little bit the exported function names
...
There are four exported functions, all suffixed by _bch, which is
clearly not the norm. Let's rename them by prefixing them with bch_
instead.
This is a mechanical change:
init_bch -> bch_init
free_bch -> bch_free
encode_bch -> bch_encode
decode_bch -> bch_decode
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519074549.23673-2-miquel.raynal@bootlin.com
2020-05-24 20:48:11 +02:00
Miquel Raynal
f068980285
mtd: rawnand: micron: Adapt the PAGE READ flow to constraint controllers
...
There are controllers not able to just read data cycles on the
bus. There are controllers not able to do a change column.
If we want to support both, we need to check which operation is
supported first. This is the exact same mechanism that is in use for
parameter page reads (ONFI/JEDEC) as the same problem occurs.
Speed testing does not show any throughput penalty so we do not
optimize more than that. However it is likely that, in the future, a
more robust and exhaustive test will run at boot time to avoid
re-checking what is supported and what is not at every call.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200519130834.2918-1-miquel.raynal@bootlin.com
2020-05-24 20:48:11 +02:00
Boris Brezillon
767727b927
mtd: rawnand: Remove the cmx270 NAND controller driver
...
The CM-X270 board has been removed, we can remove the custom NAND
driver as well.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200518163300.304732-1-boris.brezillon@collabora.com
2020-05-24 20:39:53 +02:00
Boris Brezillon
e45a4b652d
mtd: rawnand: Fix nand_gpio_waitrdy()
...
Mimic what's done in nand_soft_waitrdy() and add one to the jiffies
timeout so we don't end up waiting less than actually required.
Reported-by: Tudor Ambarus <tudor.ambarus@microchip.com >
Fixes: b0e137ad24 ("mtd: rawnand: Provide helper for polling GPIO R/B pin")
Cc: <stable@vger.kernel.org >
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200518155237.297549-1-boris.brezillon@collabora.com
2020-05-24 20:39:50 +02:00
Boris Brezillon
dbf15080ff
mtd: rawnand: davinci: Get rid of the legacy interface implementation
...
Now that exec_op() is implemented we can get rid of the legacy interface
implementation.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Tested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200513172248.141402-4-boris.brezillon@collabora.com
2020-05-24 20:39:48 +02:00
Boris Brezillon
547aa7c262
mtd: rawnand: davinci: Implement exec_op()
...
Implement exec_op() so we can later get rid of the legacy interface
implementation.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Tested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200513172248.141402-3-boris.brezillon@collabora.com
2020-05-24 20:39:46 +02:00
Boris Brezillon
4f426e6e07
mtd: rawnand: davinci: Stop using nand_chip.legacy.IO_ADDR_{R, W}
...
We can use info->current_cs directly instead of doing this weird
IO_ADDR_{R,W} re-assignment dance.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Tested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200513172248.141402-2-boris.brezillon@collabora.com
2020-05-24 20:39:43 +02:00
Boris Brezillon
3626fdcf09
mtd: rawnand: davinci: Inherit from nand_controller
...
Let's not rely on the dummy_controller embedded in nand_chip.legacy
and explicitly inherit from nand_controller instead.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Tested-by: Bartosz Golaszewski <bgolaszewski@baylibre.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200513172248.141402-1-boris.brezillon@collabora.com
2020-05-24 20:39:41 +02:00
Álvaro Fernández Rojas
dcb351c03f
mtd: rawnand: brcmnand: correctly verify erased pages
...
The current code checks that the whole OOB area is erased.
This is a problem when JFFS2 cleanmarkers are added to the OOB, since it will
fail due to the usable OOB bytes not being 0xff.
Correct this by only checking that data and ECC bytes aren't 0xff.
Fixes: 02b88eea9f ("mtd: brcmnand: Add check for erased page bitflips")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200512082451.771212-1-noltari@gmail.com
2020-05-24 20:39:39 +02:00
Álvaro Fernández Rojas
d00358d7a1
mtd: rawnand: brcmnand: improve hamming oob layout
...
The current code generates 8 oob sections:
S1 1-5
ECC 6-8
S2 9-15
S3 16-21
ECC 22-24
S4 25-31
S5 32-37
ECC 38-40
S6 41-47
S7 48-53
ECC 54-56
S8 57-63
Change it by merging continuous sections:
S1 1-5
ECC 6-8
S2 9-21
ECC 22-24
S3 25-37
ECC 38-40
S4 41-53
ECC 54-56
S5 57-63
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200512075733.745374-3-noltari@gmail.com
2020-05-24 20:39:37 +02:00
Álvaro Fernández Rojas
130bbde480
mtd: rawnand: brcmnand: fix hamming oob layout
...
First 2 bytes are used in large-page nand.
Fixes: ef5eeea6e9 ("mtd: nand: brcm: switch to mtd_ooblayout_ops")
Cc: stable@vger.kernel.org
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200512075733.745374-2-noltari@gmail.com
2020-05-24 20:39:34 +02:00
Miquel Raynal
2d1b77281f
MAINTAINERS: Remove Xiaolei Li and mark MTK NFC as orphaned
...
Xiaolei's address is bouncing, remove him from MAINTAINERS and mark
the driver he was maintaining, Mediatek's, as orphaned.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200510211809.15610-2-miquel.raynal@bootlin.com
2020-05-24 20:39:32 +02:00
Miquel Raynal
0584d02582
MAINTAINERS: Remove Piotr Sroka and mark Cadence NFC as orphaned
...
Piotr's address is bouncing, remove him from MAINTAINERS and mark the
driver he was maintaining, Cadence's, as orphaned.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200510211809.15610-1-miquel.raynal@bootlin.com
2020-05-24 20:39:30 +02:00
Boris Brezillon
1f1ec62262
mtd: rawnand: Propage CS selection to sub operations
...
Some controller using the instruction parse infrastructure might need
to know which CS a specific sub-operation is targeting. Let's propagate
this information.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200505101353.1776394-2-boris.brezillon@collabora.com
2020-05-24 20:39:27 +02:00
Christophe Kerello
699d3e6a87
mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
...
This patch removes custom macros and uses FIELD_PREP and FIELD_GET macros.
Signed-off-by: Christophe Kerello <christophe.kerello@st.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/1589284068-4079-3-git-send-email-christophe.kerello@st.com
2020-05-24 20:29:26 +02:00
Christophe Kerello
743f05572e
mtd: rawnand: stm32_fmc2: cosmetic change to use nfc instead of fmc2 where relevant
...
This patch renames functions and local variables.
This cleanup is done to get all functions starting by stm32_fmc2_nfc
in the FMC2 raw NAND driver when all functions will start by
stm32_fmc2_ebi in the FMC2 EBI driver.
Signed-off-by: Christophe Kerello <christophe.kerello@st.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/1589284068-4079-2-git-send-email-christophe.kerello@st.com
2020-05-24 20:29:24 +02:00
Christophe Kerello
0185d50c52
mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
...
This patch removes the constant FMC2_TIMEOUT_US.
FMC2_TIMEOUT_MS will be used each time that we need to wait (except
when the timeout value is set by the framework).
It was seen, during stress tests with the sequencer in an overloaded
system, that we could be close to 1 second, even if we never met this
value. To be safe, FMC2_TIMEOUT_MS is set to 5 seconds.
Signed-off-by: Christophe Kerello <christophe.kerello@st.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/1588756279-17289-4-git-send-email-christophe.kerello@st.com
2020-05-11 21:45:18 +02:00
Christophe Kerello
2d3d54bf12
mtd: rawnand: stm32_fmc2: remove useless inline comments
...
Remove inline comments that are useless since function label are
self explanatory.
Signed-off-by: Christophe Kerello <christophe.kerello@st.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/1588756279-17289-3-git-send-email-christophe.kerello@st.com
2020-05-11 21:45:16 +02:00
Christophe Kerello
71d1f1d595
mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
...
This patch defers its probe when the expected reset control is not
yet ready. This patch also handles properly all errors cases at probe
time.
Signed-off-by: Christophe Kerello <christophe.kerello@st.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/1588756279-17289-2-git-send-email-christophe.kerello@st.com
2020-05-11 21:45:13 +02:00
Boris Brezillon
d8ef2b73a4
mtd: rawnand: diskonchip: Get rid of the legacy interface implementation
...
Now that exec_op() has been implemented we can get rid of the legacy
interface implementation.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200501143917.1388957-6-boris.brezillon@collabora.com
2020-05-11 09:51:44 +02:00
Boris Brezillon
f46eb7affb
mtd: rawnand: diskonchip: Implement exec_op()
...
Implement exec_op() so we can later get rid of the legacy
implementation.
It's worth noting that the new implementation assert/deassert the CE
pin on each operation, which might not be necessary. We also dropped
the extra reset done at chip selection time on DOC2001plus. If it's
needed we really should do something smarter, because having a reset
everytime we access the chip is not that great perf-wise.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200501143917.1388957-5-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
f37b1d3c8f
mtd: rawnand: diskonchip: Inherit from nand_controller
...
Stop relying on the dummy controller object embedded in nand_chip.legacy
and explicitly inherit from nand_controller.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200501143917.1388957-4-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
fddf5cec1c
mtd: rawnand: diskonchip: Get rid of doc2000_readbuf_dword()
...
The logic can easily be merged in doc2000_readbuf().
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200501143917.1388957-3-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
a50b0c20be
mtd: rawnand: diskonchip: Make sure doc2001plus_readbuf() works for single byte reads
...
Single byte accesses normally go through read_byte() but we are about
to use this function in the exec_op() implementation and thus needs to
prepare for single byte reads.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200501143917.1388957-2-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
dace12ccfd
mtd: rawnand: diskonchip: Set the NAND_NO_BBM_QUIRK flag
...
We have a dummy block_bad() implementation returning 0. Let's set the
NAND_NO_BBM_QUIRK flag and let the core take care of that.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200511064917.6255-3-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
8420c68a16
mtd: rawnand: cafe: Set the NAND_NO_BBM_QUIRK flag
...
We have a dummy block_bad() implementation returning 0. Let's set the
NAND_NO_BBM_QUIRK flag and let the core take care of that.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200511064917.6255-2-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Boris Brezillon
ec7cfc3d76
mtd: rawnand: Add a NAND_NO_BBM_QUIRK flag
...
Some controllers with embedded ECC engines override the BBM marker with
data or ECC bytes, thus making bad block detection through bad block
marker impossible. Let's flag those chips so the core knows it shouldn't
check the BBM and consider all blocks good.
This should allow us to get rid of two implementers of the
legacy.block_bad() hook.
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20200511064917.6255-1-boris.brezillon@collabora.com
2020-05-11 09:51:43 +02:00
Miquel Raynal
22dc5f9d49
mtd: rawnand: micron: Allow controllers to overload raw accessors
...
Some controller drivers do not support executing regular
nand_read/write_page_raw() helpers. For that, we created
nand_monolithic_read/write_page_raw() alternatives. Let's now allow
the driver to overload the ECC ->read/write_page_raw() hooks when
these hooks are supported.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com >
Link: https://lore.kernel.org/linux-mtd/20200507105241.14299-14-miquel.raynal@bootlin.com
2020-05-11 09:51:43 +02:00