Lad Prabhakar
ecb78b290b
mtd: rawnand: gpmi: Use platform_get_irq_byname() to get the interrupt
...
platform_get_resource_byname(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.
In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq_byname().
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211221212609.31290-3-prabhakar.mahadev-lad.rj@bp.renesas.com
2021-12-22 17:26:03 +01:00
Lad Prabhakar
3b2af5c617
mtd: rawnand: omap_elm: Use platform_get_irq() to get the interrupt
...
platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.
In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq().
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211221212609.31290-2-prabhakar.mahadev-lad.rj@bp.renesas.com
2021-12-22 17:26:01 +01:00
Miquel Raynal
b90c42c747
MAINTAINERS: Add an entry for Renesas NAND controller
...
Point to the driver and the bindings.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211217142033.353599-4-miquel.raynal@bootlin.com
2021-12-21 18:08:10 +01:00
Miquel Raynal
d8701fe890
mtd: rawnand: renesas: Add new NAND controller driver
...
Introduce Renesas NAND controller driver which currently supports the
following features on R-Car Gen3 and RZ/N1 SoCs:
- All ONFI timing modes
- Different configurations of its internal ECC controller
- On-die (not tested) and software ECC support
- Several chips (not tested)
- Subpage accesses
- DMA and PIO
This controller was originally provided by Evatronix before being bought
by Cadence.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Tested-by: Ralph Siemsen <ralph.siemsen@linaro.org >
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com >
Link: https://lore.kernel.org/linux-mtd/20211217142033.353599-3-miquel.raynal@bootlin.com
2021-12-21 18:06:35 +01:00
Miquel Raynal
6b85a71cac
dt-bindings: mtd: renesas: Describe Renesas R-Car Gen3 & RZ/N1 NAND controller
...
Add a Yaml description for this Renesas NAND controller.
As this controller is embedded on different SoC families, provide:
* a family-specific "r-car-gen3" compatible and a more specific
"r8a77951" one
* a family-specific "rzn1" compatible and a more specific "r9a06g032"
one
More compatibles can be added later if new SoCs with this controller
must be supported.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be >
Reviewed-by: Rob Herring <robh@kernel.org >
Acked-by: Wolfram Sang <wsa+renesas@sang-engineering.com >
Link: https://lore.kernel.org/linux-mtd/20211217142033.353599-2-miquel.raynal@bootlin.com
2021-12-21 18:05:53 +01:00
Minghao Chi
35a441eea7
mtd: rawnand: gpmi: remove unneeded variable
...
Return status directly from function called.
Reported-by: Zeal Robot <zealci@zte.com.cn >
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211213112627.436745-1-chi.minghao@zte.com.cn
2021-12-17 11:26:07 +01:00
Roger Quadros
44d73223fe
mtd: rawnand: omap2: drop unused variable
...
devsize is not used anywhere in code. Drop it.
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-7-rogerq@kernel.org
2021-12-17 11:26:05 +01:00
Roger Quadros
4695a3cf00
mtd: rawnand: omap2: fix force_8bit flag behaviour for DMA mode
...
In DMA mode we were not considering the force_8bit flag.
Fix it by using regular non-DMA 8-bit I/O if force_8bit flag is set.
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-6-rogerq@kernel.org
2021-12-17 11:26:03 +01:00
Roger Quadros
0137c74ad8
mtd: rawnand: omap2: Add compatible for AM64 SoC
...
AM64 SoC contains the GPMC NAND controller. Add compatible for it.
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-5-rogerq@kernel.org
2021-12-17 11:26:01 +01:00
Roger Quadros
a9e849efca
mtd: rawnand: omap2: move to exec_op interface
...
Stop using legacy interface and move to the exec_op interface.
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-4-rogerq@kernel.org
2021-12-17 11:25:59 +01:00
Roger Quadros
35da0c4545
mtd: rawnand: omap2: Allow build on K3 platforms
...
K3 platforms come with GPMC. Enable GPMC build for
K3 platforms.
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-3-rogerq@kernel.org
2021-12-17 11:25:58 +01:00
Roger Quadros
14a3ca56c0
dt-bindings: mtd: ti, gpmc-nand: Add compatible for AM64 NAND
...
AM64 SoC contains the GPMC NAND controller. Add compatible for it.
Cc: Rob Herring <robh+dt@kernel.org >
Signed-off-by: Roger Quadros <rogerq@kernel.org >
Acked-by: Rob Herring <robh@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211209090458.24830-2-rogerq@kernel.org
2021-12-17 11:25:56 +01:00
Rob Herring
c14e281a8e
dt-bindings: mtd: ti,gpmc-nand: Add missing 'rb-gpios'
...
With 'unevaluatedProperties' support implemented, the TI GPMC example
has a warning:
Documentation/devicetree/bindings/memory-controllers/ti,gpmc.example.dt.yaml: nand@0,0: Unevaluated properties are not allowed ('rb-gpios' was unexpected)
Add the missing definition for 'rb-gpios'.
Cc: Miquel Raynal <miquel.raynal@bootlin.com >
Cc: Richard Weinberger <richard@nod.at >
Cc: Vignesh Raghavendra <vigneshr@ti.com >
Cc: Tony Lindgren <tony@atomide.com >
Cc: Roger Quadros <rogerq@kernel.org >
Cc: linux-mtd@lists.infradead.org
Signed-off-by: Rob Herring <robh@kernel.org >
Reviewed-by: Thierry Reding <treding@nvidia.com >
Reviewed-by: Roger Quadros <rogerq@kernel.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211206174209.2297565-1-robh@kernel.org
2021-12-09 17:49:29 +01:00
Colin Ian King
df87a1efb8
mtd: onenand: remove redundant variable ooblen
...
Variable ooblen is being initialized with a value that is never read.
The variable is never used after this, so it is redundant and can be
removed.
Signed-off-by: Colin Ian King <colin.i.king@gmail.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211205230729.79337-1-colin.i.king@gmail.com
2021-12-09 17:29:51 +01:00
Geert Uytterhoeven
33a0da68fb
mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip()
...
drivers/mtd/nand/raw/mpc5121_nfc.c: In function ‘ads5121_select_chip’:
drivers/mtd/nand/raw/mpc5121_nfc.c:294:19: warning: unused variable ‘mtd’ [-Wunused-variable]
294 | struct mtd_info *mtd = nand_to_mtd(nand);
| ^~~
Fixes: 758b56f58b ("mtd: rawnand: Pass a nand_chip object to chip->select_chip()")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211122132138.3899138-1-geert@linux-m68k.org
2021-12-03 14:34:43 +01:00
Christian Eggers
f53d4c109a
mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings
...
gpmi_io clock needs to be gated off when changing the parent/dividers of
enfc_clk_root (i.MX6Q/i.MX6UL) respectively qspi2_clk_root (i.MX6SX).
Otherwise this rate change can lead to an unresponsive GPMI core which
results in DMA timeouts and failed driver probe:
[ 4.072318] gpmi-nand 112000.gpmi-nand: DMA timeout, last DMA
...
[ 4.370355] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -110
...
[ 4.375988] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
[ 4.381524] gpmi-nand 112000.gpmi-nand: Error in ECC-based read: -22
[ 4.387988] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
[ 4.393535] gpmi-nand 112000.gpmi-nand: Chip: 0, Error -22
...
Other than stated in i.MX 6 erratum ERR007117, it should be sufficient
to gate only gpmi_io because all other bch/nand clocks are derived from
different clock roots.
The i.MX6 reference manuals state that changing clock muxers can cause
glitches but are silent about changing dividers. But tests showed that
these glitches can definitely happen on i.MX6ULL. For i.MX7D/8MM in turn,
the manual guarantees that no glitches can happen when changing
dividers.
Co-developed-by: Stefan Riedmueller <s.riedmueller@phytec.de >
Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de >
Signed-off-by: Christian Eggers <ceggers@arri.de >
Cc: stable@vger.kernel.org
Acked-by: Han Xu <han.xu@nxp.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211102202022.15551-2-ceggers@arri.de
2021-11-19 19:43:14 +01:00
Stefan Riedmueller
aa1baa0e6c
mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6
...
There is no need to explicitly set the default gpmi clock rate during
boot for the i.MX 6 since this is done during nand_detect anyway.
Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de >
Cc: stable@vger.kernel.org
Acked-by: Han Xu <han.xu@nxp.com >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211102202022.15551-1-ceggers@arri.de
2021-11-19 19:43:14 +01:00
Paul Cercueil
0171480007
mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function
...
The ECC engine on the JZ4740 SoC requires the ECC data to be read before
the page; using the default page reading function does not work. Indeed,
the old JZ4740 NAND driver (removed in 5.4) did use the 'OOB first' flag
that existed back then.
Use the newly created nand_read_page_hwecc_oob_first() to address this
issue.
This issue was not found when the new ingenic-nand driver was developed,
most likely because the Device Tree used had the nand-ecc-mode set to
"hw_oob_first", which seems to not be supported anymore.
Cc: <stable@vger.kernel.org > # v5.2
Fixes: a0ac778eb8 ("mtd: rawnand: ingenic: Add support for the JZ4740")
Signed-off-by: Paul Cercueil <paul@crapouillou.net >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211016132228.40254-5-paul@crapouillou.net
2021-11-19 19:43:11 +01:00
Paul Cercueil
d8466f7301
mtd: rawnand: Export nand_read_page_hwecc_oob_first()
...
Move the function nand_read_page_hwecc_oob_first() (previously
nand_davinci_read_page_hwecc_oob_first()) to nand_base.c, and export it
as a GPL symbol, so that it can be used by more modules.
Cc: <stable@vger.kernel.org > # v5.2
Fixes: a0ac778eb8 ("mtd: rawnand: ingenic: Add support for the JZ4740")
Signed-off-by: Paul Cercueil <paul@crapouillou.net >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211016132228.40254-4-paul@crapouillou.net
2021-11-19 19:43:11 +01:00
Paul Cercueil
0697f8441f
mtd: rawnand: davinci: Rewrite function description
...
The original comment that describes the function
nand_davinci_read_page_hwecc_oob_first() is very obscure and it is hard
to understand what it is for.
Cc: <stable@vger.kernel.org > # v5.2
Fixes: a0ac778eb8 ("mtd: rawnand: ingenic: Add support for the JZ4740")
Signed-off-by: Paul Cercueil <paul@crapouillou.net >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211016132228.40254-3-paul@crapouillou.net
2021-11-19 19:43:07 +01:00
Paul Cercueil
9c9d709965
mtd: rawnand: davinci: Avoid duplicated page read
...
The function nand_davinci_read_page_hwecc_oob_first() first reads the
OOB data, extracts the ECC information, programs the ECC hardware before
reading the actual data in a loop.
Right after the OOB data was read, it called nand_read_page_op() to
reset the read cursor to the beginning of the page. This caused the
first page to be read twice: in that call, and later in the loop.
Address that issue by changing the call to nand_read_page_op() to
nand_change_read_column_op(), which will only reset the read cursor.
Cc: <stable@vger.kernel.org > # v5.2
Fixes: a0ac778eb8 ("mtd: rawnand: ingenic: Add support for the JZ4740")
Signed-off-by: Paul Cercueil <paul@crapouillou.net >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211016132228.40254-2-paul@crapouillou.net
2021-11-19 19:43:04 +01:00
Paul Cercueil
71e8959150
mtd: rawnand: davinci: Don't calculate ECC when reading page
...
The function nand_davinci_read_page_hwecc_oob_first() does read the ECC
data from the OOB area. Therefore it does not need to calculate the ECC
as it is already available.
Cc: <stable@vger.kernel.org > # v5.2
Fixes: a0ac778eb8 ("mtd: rawnand: ingenic: Add support for the JZ4740")
Signed-off-by: Paul Cercueil <paul@crapouillou.net >
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com >
Link: https://lore.kernel.org/linux-mtd/20211016132228.40254-1-paul@crapouillou.net
2021-11-19 19:43:00 +01:00
Linus Torvalds
fa55b7dcdc
Linux 5.16-rc1
2021-11-14 13:56:52 -08:00
Gustavo A. R. Silva
dee2b702bc
kconfig: Add support for -Wimplicit-fallthrough
...
Add Kconfig support for -Wimplicit-fallthrough for both GCC and Clang.
The compiler option is under configuration CC_IMPLICIT_FALLTHROUGH,
which is enabled by default.
Special thanks to Nathan Chancellor who fixed the Clang bug[1][2]. This
bugfix only appears in Clang 14.0.0, so older versions still contain
the bug and -Wimplicit-fallthrough won't be enabled for them, for now.
This concludes a long journey and now we are finally getting rid
of the unintentional fallthrough bug-class in the kernel, entirely. :)
Link: https://github.com/llvm/llvm-project/commit/9ed4a94d6451046a51ef393cd62f00710820a7e8 [1]
Link: https://bugs.llvm.org/show_bug.cgi?id=51094 [2]
Link: https://github.com/KSPP/linux/issues/115
Link: https://github.com/ClangBuiltLinux/linux/issues/236
Co-developed-by: Kees Cook <keescook@chromium.org >
Signed-off-by: Kees Cook <keescook@chromium.org >
Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org >
Reviewed-by: Nathan Chancellor <nathan@kernel.org >
Tested-by: Nathan Chancellor <nathan@kernel.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2021-11-14 13:27:30 -08:00
Linus Torvalds
ce49bfc8d0
Merge tag 'xfs-5.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
...
Pull xfs cleanups from Darrick Wong:
"The most 'exciting' aspect of this branch is that the xfsprogs
maintainer and I have worked through the last of the code
discrepancies between kernel and userspace libxfs such that there are
no code differences between the two except for #includes.
IOWs, diff suffices to demonstrate that the userspace tools behave the
same as the kernel, and kernel-only bits are clearly marked in the
/kernel/ source code instead of just the userspace source.
Summary:
- Clean up open-coded swap() calls.
- A little bit of #ifdef golf to complete the reunification of the
kernel and userspace libxfs source code"
* tag 'xfs-5.16-merge-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
xfs: sync xfs_btree_split macros with userspace libxfs
xfs: #ifdef out perag code for userspace
xfs: use swap() to make dabtree code cleaner
2021-11-14 12:18:22 -08:00