ramips: mt7621_nand: initialize ECC_FDMADDR
authorFelix Fietkau <nbd@nbd.name>
Wed, 9 Mar 2022 19:46:21 +0000 (20:46 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 25 Mar 2022 20:11:09 +0000 (21:11 +0100)
This is needed for the ECC controller to access FDM data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/ramips/files/drivers/mtd/nand/raw/mt7621_nand.c

index 04bc6040c6ec15e2d5e55347265a8d3e93c11419..b9c2dfb911b7d71d6123cb792d723f03f631c996 100644 (file)
@@ -214,6 +214,7 @@ struct mt7621_nfc {
        struct clk *nfi_clk;
        struct device *dev;
 
+       u32 nfi_base;
        void __iomem *nfi_regs;
        void __iomem *ecc_regs;
 
@@ -860,6 +861,8 @@ static int mt7621_nfc_ecc_init(struct mt7621_nfc *nfc)
                     (decode_block_size << DEC_CS_S) |
                     (DEC_CON_EL << DEC_CON_S) | DEC_EMPTY_EN;
 
+       ecc_write32(nfc, ECC_FDMADDR, nfc->nfi_base + NFI_FDML(0));
+
        mt7621_ecc_encoder_op(nfc, false);
        ecc_write32(nfc, ECC_ENCCNFG, ecc_enccfg);
 
@@ -1277,6 +1280,7 @@ static int mt7621_nfc_probe(struct platform_device *pdev)
        nfc->dev = dev;
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nfi");
+       nfc->nfi_base = res->start;
        nfc->nfi_regs = devm_ioremap_resource(dev, res);
        if (IS_ERR(nfc->nfi_regs)) {
                ret = PTR_ERR(nfc->nfi_regs);