summaryrefslogtreecommitdiff
path: root/drivers/mtd
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-12-08 13:17:27 -0600
committerTom Rini <[email protected]>2025-12-08 13:17:27 -0600
commit59202e5ae76ef3acb34c4236e43248f1cd3fc642 (patch)
tree30004ced6a059b2c25afb0aca8b049908c2212c3 /drivers/mtd
parent8e12d6ccb3cfa84dd275a1b852b2a235de0162b0 (diff)
parent0e0a198a68be71148f5ec27ef86796174f91436f (diff)
Merge tag 'v2026.01-rc4' into next
Prepare v2026.01-rc4
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/nand/raw/Kconfig1
-rw-r--r--drivers/mtd/nand/raw/atmel/pmecc.c11
-rw-r--r--drivers/mtd/nand/raw/atmel/pmecc.h1
3 files changed, 8 insertions, 5 deletions
diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
index 1bd33a200c1..5e4d1c0a937 100644
--- a/drivers/mtd/nand/raw/Kconfig
+++ b/drivers/mtd/nand/raw/Kconfig
@@ -212,6 +212,7 @@ config NAND_CADENCE
config NAND_DENALI
bool
select SYS_NAND_SELF_INIT
+ select SYS_NAND_ONFI_DETECTION if TARGET_SOCFPGA_SOC64
imply CMD_NAND
config NAND_DENALI_DT
diff --git a/drivers/mtd/nand/raw/atmel/pmecc.c b/drivers/mtd/nand/raw/atmel/pmecc.c
index e500a0fe3f8..1acaa5d0e07 100644
--- a/drivers/mtd/nand/raw/atmel/pmecc.c
+++ b/drivers/mtd/nand/raw/atmel/pmecc.c
@@ -142,6 +142,7 @@ struct atmel_pmecc_caps {
int nstrengths;
int el_offset;
bool correct_erased_chunks;
+ bool clk_ctrl;
};
struct atmel_pmecc_user_conf_cache {
@@ -819,8 +820,7 @@ EXPORT_SYMBOL_GPL(atmel_pmecc_wait_rdy);
static struct atmel_pmecc *
atmel_pmecc_create(struct udevice *dev,
const struct atmel_pmecc_caps *caps,
- int pmecc_res_idx, int errloc_res_idx,
- int timing_res_idx)
+ int pmecc_res_idx, int errloc_res_idx)
{
struct atmel_pmecc *pmecc;
struct resource res;
@@ -838,7 +838,9 @@ atmel_pmecc_create(struct udevice *dev,
ofnode_read_resource(dev->node_, 1, &res);
pmecc->regs.errloc = (void *)res.start;
- pmecc->regs.timing = 0;
+ /* pmecc data setup time */
+ if (caps->clk_ctrl)
+ writel(PMECC_CLK_133MHZ, pmecc->regs.base + ATMEL_PMECC_CLK);
/* Disable all interrupts before registering the PMECC handler. */
writel(0xffffffff, pmecc->regs.base + ATMEL_PMECC_IDR);
@@ -884,6 +886,7 @@ static struct atmel_pmecc_caps at91sam9g45_caps = {
.strengths = atmel_pmecc_strengths,
.nstrengths = 5,
.el_offset = 0x8c,
+ .clk_ctrl = true,
};
static struct atmel_pmecc_caps sama5d4_caps = {
@@ -946,7 +949,7 @@ static int atmel_pmecc_probe(struct udevice *dev)
return -EINVAL;
}
- pmecc = atmel_pmecc_create(dev, caps, 0, 1, 2);
+ pmecc = atmel_pmecc_create(dev, caps, 0, 1);
if (IS_ERR(pmecc))
return PTR_ERR(pmecc);
diff --git a/drivers/mtd/nand/raw/atmel/pmecc.h b/drivers/mtd/nand/raw/atmel/pmecc.h
index 43f96b2f168..88b0d18040e 100644
--- a/drivers/mtd/nand/raw/atmel/pmecc.h
+++ b/drivers/mtd/nand/raw/atmel/pmecc.h
@@ -65,7 +65,6 @@ struct atmel_pmecc {
struct {
void __iomem *base;
void __iomem *errloc;
- void __iomem *timing;
} regs;
/* Mutex used for pmecc enable/disable */