Message ID | 20090511182801.GK32684@woodchuck |
---|---|
State | Accepted |
Commit | d6fed9e9fc5eefae5be0ecf222bac7e7496e8e74 |
Headers | show |
On Mon, 2009-05-11 at 19:28 +0100, Alexander Clouter wrote: > This patch adds (write|read)_buf callbacks to plat_nand. > > The NAND on the TS-7800 provisioned by the FPGA allows readw() and > readl() to be used which gives a 2.5x speed up. To be able to use this > from the plat_nand driver a hook for read_buf (and also write_buf whilst > we are in there) need to be made available. This patch adds the hook. > > This is a repost[1] of a feature asked for before[2], plus other helpful > patches to plat_nand[3] would be welcomed if at all possible too. > > [1] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024747.html > [2] http://lists.infradead.org/pipermail/linux-mtd/2007-October/019659.html > [3] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024780.html > > Signed-off-by: Alexander Clouter <alex@digriz.org.uk> I think this should be submitted with the user at the same time. Adding hooks without having a user is not very good. E.g., you may find out later that this does not help, or cancel your project, or end up with different call-backs, etc. You may keep this patch privately, work on your NAND driver, and when you have it ready, you submit it with this at the same time.
Hi, * Artem Bityutskiy <dedekind@infradead.org> [2009-05-15 16:51:00+0300]: > > On Mon, 2009-05-11 at 19:28 +0100, Alexander Clouter wrote: > > This patch adds (write|read)_buf callbacks to plat_nand. > > > > The NAND on the TS-7800 provisioned by the FPGA allows readw() and > > readl() to be used which gives a 2.5x speed up. To be able to use this > > from the plat_nand driver a hook for read_buf (and also write_buf whilst > > we are in there) need to be made available. This patch adds the hook. > > > > This is a repost[1] of a feature asked for before[2], plus other helpful > > patches to plat_nand[3] would be welcomed if at all possible too. > > > > [1] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024747.html > > [2] http://lists.infradead.org/pipermail/linux-mtd/2007-October/019659.html > > [3] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024780.html > > > > Signed-off-by: Alexander Clouter <alex@digriz.org.uk> > > I think this should be submitted with the user at the same > time. Adding hooks without having a user is not very good. > E.g., you may find out later that this does not help, or > cancel your project, or end up with different call-backs, > etc. > In the case of read/write_buf...there is no other way, I'm all ears if you know how I can do (read|write)(w|l) with plat_nand *now*? I just pulled off this type of manoeuvre for a HW RNG driver: http://lkml.indiana.edu/hypermail/linux/kernel/0902.2/02727.html http://git.marvell.com/?p=orion.git;a=commit;h=8be7b57dea0467324ad4545334c5e35c18f0814b I doubt the ARM people would be happy if I push ARM patches through the MTD sub-system :) > You may keep this patch privately, work on your NAND driver, > and when you have it ready, you submit it with this at the > same time. > Erm, it's been ready for a *long* time, about a year[1], and is being used. Recently the bits of my plat_nand impementation[2] is on it's way to going mainline (Orion -> ARM -> Linus): http://git.marvell.com/?p=orion.git;a=commit;h=75bb6b9aab3255f440ef4e72a31978d1681105d6 Cheers [1] http://tech.groups.yahoo.com/group/ts-7000/message/11616 [2] http://lists.infradead.org/pipermail/linux-mtd/2009-February/024555.html
On Fri, 2009-05-15 at 16:05 +0100, Alexander Clouter wrote: > > You may keep this patch privately, work on your NAND driver, > > and when you have it ready, you submit it with this at the > > same time. > > > Erm, it's been ready for a *long* time, about a year[1], and is being > used. Recently the bits of my plat_nand impementation[2] is on it's way > to going mainline (Orion -> ARM -> Linus): Ok, I thought you do not use this so far. I've pushed your patch to l2-mtd-2.6.git. This does not guarantee anything, just means I'll ping David to look at it and send upstream.
diff --git a/drivers/mtd/nand/plat_nand.c b/drivers/mtd/nand/plat_nand.c index 86e1d08..4cdec46 100644 --- a/drivers/mtd/nand/plat_nand.c +++ b/drivers/mtd/nand/plat_nand.c @@ -61,6 +61,8 @@ static int __devinit plat_nand_probe(struct platform_device *pdev) data->chip.cmd_ctrl = pdata->ctrl.cmd_ctrl; data->chip.dev_ready = pdata->ctrl.dev_ready; data->chip.select_chip = pdata->ctrl.select_chip; + data->chip.write_buf = pdata->ctrl.write_buf; + data->chip.read_buf = pdata->ctrl.read_buf; data->chip.chip_delay = pdata->chip.chip_delay; data->chip.options |= pdata->chip.options; diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 7efb9be..0e35375 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -584,6 +584,8 @@ struct platform_nand_chip { * @select_chip: platform specific chip select function * @cmd_ctrl: platform specific function for controlling * ALE/CLE/nCE. Also used to write command and address + * @write_buf: platform specific function for write buffer + * @read_buf: platform specific function for read buffer * @priv: private data to transport driver specific settings * * All fields are optional and depend on the hardware driver requirements @@ -594,6 +596,10 @@ struct platform_nand_ctrl { void (*select_chip)(struct mtd_info *mtd, int chip); void (*cmd_ctrl)(struct mtd_info *mtd, int dat, unsigned int ctrl); + void (*write_buf)(struct mtd_info *mtd, + const uint8_t *buf, int len); + void (*read_buf)(struct mtd_info *mtd, + uint8_t *buf, int len); void *priv; };
This patch adds (write|read)_buf callbacks to plat_nand. The NAND on the TS-7800 provisioned by the FPGA allows readw() and readl() to be used which gives a 2.5x speed up. To be able to use this from the plat_nand driver a hook for read_buf (and also write_buf whilst we are in there) need to be made available. This patch adds the hook. This is a repost[1] of a feature asked for before[2], plus other helpful patches to plat_nand[3] would be welcomed if at all possible too. [1] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024747.html [2] http://lists.infradead.org/pipermail/linux-mtd/2007-October/019659.html [3] http://lists.infradead.org/pipermail/linux-mtd/2009-March/024780.html Signed-off-by: Alexander Clouter <alex@digriz.org.uk> ---