> -----Original Message----- > From: Linus Walleij <linus.wall...@linaro.org> > Sent: Monday, September 16, 2024 2:59 AM > To: u-boot@lists.denx.de; Dario Binacchi > <dario.binac...@amarulasolutions.com>; Michael Trimarchi > <mich...@amarulasolutions.com>; Anand Gore > <anand.g...@broadcom.com>; William Zhang > <william.zh...@broadcom.com>; Kursad Oney > <kursad.o...@broadcom.com>; Philippe Reynes > <philippe.rey...@softathome.com> > Cc: Linus Walleij <linus.wall...@linaro.org> > Subject: [PATCH v2 5/7] mtd: rawnand: brcmnand: Add read data bus > interface > > This is a port of the read data bus interface from the Linux > brcmnand driver, commit > 546e425991205f59281e160a0d0daed47b7ca9b3 > "mtd: rawnand: brcmnand: Add BCMBCA read data bus interface" > > This is needed for the BCMBCA RAW NAND driver. > > Signed-off-by: William Zhang <william.zh...@broadcom.com> > Signed-off-by: Linus Walleij <linus.wall...@linaro.org> > --- > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 20 +++++++++++++++++- > -- > drivers/mtd/nand/raw/brcmnand/brcmnand.h | 2 ++ > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > index 552b239b95ae..2f786584a1ae 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > @@ -769,6 +769,20 @@ static inline void brcmnand_write_fc(struct > brcmnand_controller *ctrl, > __raw_writel(val, ctrl->nand_fc + word * 4); > } > > +static inline void brcmnand_read_data_bus(struct brcmnand_controller > *ctrl, > + void __iomem *flash_cache, u32 > *buffer, int fc_words) > +{ > + struct brcmnand_soc *soc = ctrl->soc; > + int i; > + > + if (soc && soc->read_data_bus) { > + soc->read_data_bus(soc, flash_cache, buffer, fc_words); > + } else { > + for (i = 0; i < fc_words; i++) > + buffer[i] = brcmnand_read_fc(ctrl, i); > + } > +} > + > static void brcmnand_clear_ecc_addr(struct brcmnand_controller *ctrl) > { > > @@ -1812,7 +1826,7 @@ static int brcmnand_read_by_pio(struct > mtd_info *mtd, struct nand_chip *chip, > { > struct brcmnand_host *host = nand_get_controller_data(chip); > struct brcmnand_controller *ctrl = host->ctrl; > - int i, j, ret = 0; > + int i, ret = 0; > > brcmnand_clear_ecc_addr(ctrl); > > @@ -1825,8 +1839,8 @@ static int brcmnand_read_by_pio(struct > mtd_info *mtd, struct nand_chip *chip, > if (likely(buf)) { > brcmnand_soc_data_bus_prepare(ctrl->soc, false); > > - for (j = 0; j < FC_WORDS; j++, buf++) > - *buf = brcmnand_read_fc(ctrl, j); > + brcmnand_read_data_bus(ctrl, ctrl->nand_fc, buf, > FC_WORDS); > + buf += FC_WORDS; > > brcmnand_soc_data_bus_unprepare(ctrl->soc, false); > } > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.h > b/drivers/mtd/nand/raw/brcmnand/brcmnand.h > index 6946a62b0679..3a1d60471361 100644 > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.h > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.h > @@ -11,6 +11,8 @@ struct brcmnand_soc { > void (*ctlrdy_set_enabled)(struct brcmnand_soc *soc, bool en); > void (*prepare_data_bus)(struct brcmnand_soc *soc, bool prepare, > bool is_param); > + void (*read_data_bus)(struct brcmnand_soc *soc, void __iomem > *flash_cache, > + u32 *buffer, int fc_words); > void *ctrl; > }; > > > -- > 2.46.0
Reviewed-by: William Zhang <william.zh...@broadcom.com>
smime.p7s
Description: S/MIME Cryptographic Signature