Lines Matching refs:ecc
45 static void jz4740_ecc_reset(struct ingenic_ecc *ecc, bool calc_ecc)
50 writel(0, ecc->base + JZ_REG_NAND_IRQ_STAT);
53 reg = readl(ecc->base + JZ_REG_NAND_ECC_CTRL);
62 writel(reg, ecc->base + JZ_REG_NAND_ECC_CTRL);
65 static int jz4740_ecc_calculate(struct ingenic_ecc *ecc,
73 jz4740_ecc_reset(ecc, true);
76 status = readl(ecc->base + JZ_REG_NAND_IRQ_STAT);
82 reg = readl(ecc->base + JZ_REG_NAND_ECC_CTRL);
84 writel(reg, ecc->base + JZ_REG_NAND_ECC_CTRL);
87 ecc_code[i] = readb(ecc->base + JZ_REG_NAND_PAR0 + i);
117 static int jz4740_ecc_correct(struct ingenic_ecc *ecc,
125 jz4740_ecc_reset(ecc, false);
128 writeb(ecc_code[i], ecc->base + JZ_REG_NAND_PAR0 + i);
130 reg = readl(ecc->base + JZ_REG_NAND_ECC_CTRL);
132 writel(reg, ecc->base + JZ_REG_NAND_ECC_CTRL);
135 status = readl(ecc->base + JZ_REG_NAND_IRQ_STAT);
141 reg = readl(ecc->base + JZ_REG_NAND_ECC_CTRL);
143 writel(reg, ecc->base + JZ_REG_NAND_ECC_CTRL);
152 error = readl(ecc->base + JZ_REG_NAND_ERR(i));
164 static void jz4740_ecc_disable(struct ingenic_ecc *ecc)
168 writel(0, ecc->base + JZ_REG_NAND_IRQ_STAT);
169 reg = readl(ecc->base + JZ_REG_NAND_ECC_CTRL);
171 writel(reg, ecc->base + JZ_REG_NAND_ECC_CTRL);
181 { .compatible = "ingenic,jz4740-ecc", .data = &jz4740_ecc_ops },
189 .name = "jz4740-ecc",