Skip to content

Commit 54a3f6e

Browse files
committed
Merge tag 'nand/for-6.6' into mtd/next
Raw NAND core changes: * Fix -Wvoid-pointer-to-enum-cast warning * Export 'nand_exit_status_op()' * dt-bindings: Fix nand-controller.yaml license Raw NAND controller driver changes: * Omap, Omap2, Samsung, Atmel, fsl_upm, lpc32xx_slc, lpc32xx_mlc, STM32_FMC2, sh_ftlctl, MXC, Sunxi: - Use devm_platform_get_and_ioremap_resource() * Orion, vf610_nfc, Sunxi, STM32_FMC2, MTK, mpc5121, lpc32xx_slc, Intel, FSMC, Arasan: - Use helper function devm_clk_get_optional_enabled() * Brcmnand: - Use devm_platform_ioremap_resource_byname() - Propagate init error -EPROBE_DEFER up - Propagate error and simplify ternary operators - Fix mtd oobsize - Fix potential out-of-bounds access in oob write - Fix crash during the panic_write - Fix potential false time out warning - Fix ECC level field setting for v7.2 controller * fsmc: Handle clk prepare error in fsmc_nand_resume() * Marvell: Add support for AC5 SoC * Meson: - Support for 512B ECC step size - Fix build error - Use NAND core API to check status - dt-bindings: * Make ECC properties dependent * Support for 512B ECC step size * Drop unneeded quotes * Oxnas: Remove driver and bindings * Qcom: - Conversion to ->exec_op() - Removal of the legacy interface - Two full series of improvements/misc fixes * Use the BIT() macro * Use u8 instead of uint8_t * Fix alignment with open parenthesis * Fix the spacing * Fix wrong indentation * Fix a typo * Early structure initialization * Fix address parsing within ->exec_op() * Remove superfluous initialization of "ret" * Rename variables in qcom_op_cmd_mapping() * Handle unsupported opcode in qcom_op_cmd_mapping() * Fix the opcode check in qcom_check_op() * Use EOPNOTSUPP instead of ENOTSUPP * Wrap qcom_nand_exec_op() to 80 columns * Unmap sg_list and free desc within submic_descs() * Simplify the call to nand_prog_page_end_op() * Do not override the error no of submit_descs() * Sort includes alphabetically * Clear buf_count and buf_start in raw read * Add read/read_start ops in exec_op path * vf610_nfc: Do not check 0 for platform_get_irq() SPI-NAND changes: * gigadevice: Add support for GD5F1GQ{4,5}RExxH * esmt: Add support for F50D2G41KA * toshiba: Add support for T{C,H}58NYG{0,2}S3HBAI4 and TH58NYG3S0HBAI6 Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
2 parents 000412e + b9283ac commit 54a3f6e

36 files changed

+881
-991
lines changed

Documentation/devicetree/bindings/mtd/amlogic,meson-nand.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ patternProperties:
5050
const: hw
5151

5252
nand-ecc-step-size:
53-
const: 1024
53+
enum: [512, 1024]
5454

5555
nand-ecc-strength:
5656
enum: [8, 16, 24, 30, 40, 50, 60]
@@ -66,6 +66,10 @@ patternProperties:
6666

6767
unevaluatedProperties: false
6868

69+
dependencies:
70+
nand-ecc-strength: [nand-ecc-step-size]
71+
nand-ecc-step-size: [nand-ecc-strength]
72+
6973

7074
required:
7175
- compatible

Documentation/devicetree/bindings/mtd/marvell,nand-controller.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ properties:
1616
- const: marvell,armada-8k-nand-controller
1717
- const: marvell,armada370-nand-controller
1818
- enum:
19+
- marvell,ac5-nand-controller
1920
- marvell,armada370-nand-controller
2021
- marvell,pxa3xx-nand-controller
2122
- description: legacy bindings

Documentation/devicetree/bindings/mtd/nand-controller.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-License-Identifier: GPL-2.0
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
22
%YAML 1.2
33
---
44
$id: http://devicetree.org/schemas/mtd/nand-controller.yaml#

Documentation/devicetree/bindings/mtd/oxnas-nand.txt

Lines changed: 0 additions & 41 deletions
This file was deleted.

drivers/mtd/nand/onenand/onenand_omap2.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -467,12 +467,6 @@ static int omap2_onenand_probe(struct platform_device *pdev)
467467
struct device *dev = &pdev->dev;
468468
struct device_node *np = dev->of_node;
469469

470-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
471-
if (!res) {
472-
dev_err(dev, "error getting memory resource\n");
473-
return -EINVAL;
474-
}
475-
476470
r = of_property_read_u32(np, "reg", &val);
477471
if (r) {
478472
dev_err(dev, "reg not found in DT\n");
@@ -486,11 +480,11 @@ static int omap2_onenand_probe(struct platform_device *pdev)
486480
init_completion(&c->irq_done);
487481
init_completion(&c->dma_done);
488482
c->gpmc_cs = val;
489-
c->phys_base = res->start;
490483

491-
c->onenand.base = devm_ioremap_resource(dev, res);
484+
c->onenand.base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
492485
if (IS_ERR(c->onenand.base))
493486
return PTR_ERR(c->onenand.base);
487+
c->phys_base = res->start;
494488

495489
c->int_gpiod = devm_gpiod_get_optional(dev, "int", GPIOD_IN);
496490
if (IS_ERR(c->int_gpiod)) {

drivers/mtd/nand/onenand/onenand_samsung.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -860,8 +860,7 @@ static int s3c_onenand_probe(struct platform_device *pdev)
860860

861861
s3c_onenand_setup(mtd);
862862

863-
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
864-
onenand->base = devm_ioremap_resource(&pdev->dev, r);
863+
onenand->base = devm_platform_get_and_ioremap_resource(pdev, 0, &r);
865864
if (IS_ERR(onenand->base))
866865
return PTR_ERR(onenand->base);
867866

@@ -874,8 +873,7 @@ static int s3c_onenand_probe(struct platform_device *pdev)
874873
this->options |= ONENAND_SKIP_UNLOCK_CHECK;
875874

876875
if (onenand->type != TYPE_S5PC110) {
877-
r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
878-
onenand->ahb_addr = devm_ioremap_resource(&pdev->dev, r);
876+
onenand->ahb_addr = devm_platform_ioremap_resource(pdev, 1);
879877
if (IS_ERR(onenand->ahb_addr))
880878
return PTR_ERR(onenand->ahb_addr);
881879

@@ -895,8 +893,7 @@ static int s3c_onenand_probe(struct platform_device *pdev)
895893
this->subpagesize = mtd->writesize;
896894

897895
} else { /* S5PC110 */
898-
r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
899-
onenand->dma_addr = devm_ioremap_resource(&pdev->dev, r);
896+
onenand->dma_addr = devm_platform_ioremap_resource(pdev, 1);
900897
if (IS_ERR(onenand->dma_addr))
901898
return PTR_ERR(onenand->dma_addr);
902899

drivers/mtd/nand/raw/Kconfig

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ config MTD_NAND_MARVELL
160160
including:
161161
- PXA3xx processors (NFCv1)
162162
- 32-bit Armada platforms (XP, 37x, 38x, 39x) (NFCv2)
163-
- 64-bit Aramda platforms (7k, 8k) (NFCv2)
163+
- 64-bit Aramda platforms (7k, 8k, ac5) (NFCv2)
164164

165165
config MTD_NAND_SLC_LPC32XX
166166
tristate "NXP LPC32xx SLC NAND controller"
@@ -204,13 +204,6 @@ config MTD_NAND_BCM47XXNFLASH
204204
registered by bcma as platform devices. This enables driver for
205205
NAND flash memories. For now only BCM4706 is supported.
206206

207-
config MTD_NAND_OXNAS
208-
tristate "Oxford Semiconductor NAND controller"
209-
depends on ARCH_OXNAS || COMPILE_TEST
210-
depends on HAS_IOMEM
211-
help
212-
This enables the NAND flash controller on Oxford Semiconductor SoCs.
213-
214207
config MTD_NAND_MPC5121_NFC
215208
tristate "MPC5121 NAND controller"
216209
depends on PPC_MPC512x

drivers/mtd/nand/raw/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ obj-$(CONFIG_MTD_NAND_MARVELL) += marvell_nand.o
2626
obj-$(CONFIG_MTD_NAND_PLATFORM) += plat_nand.o
2727
obj-$(CONFIG_MTD_NAND_PASEMI) += pasemi_nand.o
2828
obj-$(CONFIG_MTD_NAND_ORION) += orion_nand.o
29-
obj-$(CONFIG_MTD_NAND_OXNAS) += oxnas_nand.o
3029
obj-$(CONFIG_MTD_NAND_FSL_ELBC) += fsl_elbc_nand.o
3130
obj-$(CONFIG_MTD_NAND_FSL_IFC) += fsl_ifc_nand.o
3231
obj-$(CONFIG_MTD_NAND_FSL_UPM) += fsl_upm.o

drivers/mtd/nand/raw/arasan-nand-controller.c

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,55 +1440,36 @@ static int anfc_probe(struct platform_device *pdev)
14401440

14411441
anfc_reset(nfc);
14421442

1443-
nfc->controller_clk = devm_clk_get(&pdev->dev, "controller");
1443+
nfc->controller_clk = devm_clk_get_enabled(&pdev->dev, "controller");
14441444
if (IS_ERR(nfc->controller_clk))
14451445
return PTR_ERR(nfc->controller_clk);
14461446

1447-
nfc->bus_clk = devm_clk_get(&pdev->dev, "bus");
1447+
nfc->bus_clk = devm_clk_get_enabled(&pdev->dev, "bus");
14481448
if (IS_ERR(nfc->bus_clk))
14491449
return PTR_ERR(nfc->bus_clk);
14501450

1451-
ret = clk_prepare_enable(nfc->controller_clk);
1452-
if (ret)
1453-
return ret;
1454-
1455-
ret = clk_prepare_enable(nfc->bus_clk);
1456-
if (ret)
1457-
goto disable_controller_clk;
1458-
14591451
ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(64));
14601452
if (ret)
1461-
goto disable_bus_clk;
1453+
return ret;
14621454

14631455
ret = anfc_parse_cs(nfc);
14641456
if (ret)
1465-
goto disable_bus_clk;
1457+
return ret;
14661458

14671459
ret = anfc_chips_init(nfc);
14681460
if (ret)
1469-
goto disable_bus_clk;
1461+
return ret;
14701462

14711463
platform_set_drvdata(pdev, nfc);
14721464

14731465
return 0;
1474-
1475-
disable_bus_clk:
1476-
clk_disable_unprepare(nfc->bus_clk);
1477-
1478-
disable_controller_clk:
1479-
clk_disable_unprepare(nfc->controller_clk);
1480-
1481-
return ret;
14821466
}
14831467

14841468
static void anfc_remove(struct platform_device *pdev)
14851469
{
14861470
struct arasan_nfc *nfc = platform_get_drvdata(pdev);
14871471

14881472
anfc_chips_cleanup(nfc);
1489-
1490-
clk_disable_unprepare(nfc->bus_clk);
1491-
clk_disable_unprepare(nfc->controller_clk);
14921473
}
14931474

14941475
static const struct of_device_id anfc_ids[] = {

drivers/mtd/nand/raw/atmel/nand-controller.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,8 +1791,7 @@ atmel_nand_controller_legacy_add_nands(struct atmel_nand_controller *nc)
17911791

17921792
nand->numcs = 1;
17931793

1794-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1795-
nand->cs[0].io.virt = devm_ioremap_resource(dev, res);
1794+
nand->cs[0].io.virt = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
17961795
if (IS_ERR(nand->cs[0].io.virt))
17971796
return PTR_ERR(nand->cs[0].io.virt);
17981797

0 commit comments

Comments
 (0)