Message ID | 20180713123213.23596-1-miquel.raynal@bootlin.com |
---|---|
Headers | show |
Series | SPI-NAND support | expand |
On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal <miquel.raynal@bootlin.com> wrote: > During the last months, Boris Brezillon shared his work to support > serial flashes within Linux. First, he delivered (and merged) a new > layer called spi-mem. He also initiated in Linux MTD subsystem the move > of all 'raw' NAND related code to a raw/ subdirectory, adding at the > same time a NAND core that would be shared with all NAND devices. Then, > he contributed a generic SPI-NAND driver, making use of this NAND core, > as well as some vendor code to drive a few chips. > > On top of this work, I added an 'mtd' U-Boot command to handle all sort > of MTD devices. This should become the default command instead of having > one per flash flavor ('sf', 'nand', 'spi-nand' ?). > > The series has been tested on an Ocelot board PCB123 (VSC7514), > featuring a Macronix SPI NAND chip. > > TL;DR: the series contains: > - A few patches from Linux to resynchronize some areas of the MTD layer. > - Various fixes and re-organization of the MTD subsystem. > - The introduction of the SPI-mem interface. > - The addition of the generic SPI-NAND driver (and its bindings). > - Several SPI NAND chip drivers (Macronix, Micron, Winbond). > - A new 'mtd' command. > - Support for spi-nand devices in mtdparts. > > To test your SPI-NAND device with U-Boot simply follow these lines: > >> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) >> setenv mtdids spi-nand0=spi-nand0 >> mtdparts # show the spi-nand device partitions >> ubi part bar # create a static UBI volume in the bar partition > > Thanks, > Miquèl > > Changes since v3: > ----------------- > * Fixed the debug messages in spi-mem to print either Rx or Tx data. > * Fixed a Kconfig error that prevented to build mtdparts with plain > defconfig. > * Fixed a compilation error due to the above error that prevented one > file to be compiled. > * Adapted the mtd command to probe MTD partitions also. > * Declared mtd_probe_devices() in a header so mtdparts or UBI could > use it too (to probe all devices and MTD partitions in a clean way). > * As I worked on mtdparts, I found annoying and completely useless the > fact that we need to prefix the environment variable with > "mtdparts=". Canceled this obligation. > * Added one patch to allow spi-nand devices to be recognized by mtdparts > (this is purely useless but needed to be done in order to use this > command). > * Removed useless definitions of MTD device types in UBI code. > * Wrote a generic mtdparts environment variable parser, used by the mtd > command. > * Used the mtd_probe_devices() function from get_mtd_info() in > cmd/mtdparts.c to be sure the desired partition really does not exist > (otherwise it will be probed and then found). > > Changes since v2: > ----------------- > * Rebased on u-boot master branch. > * Removed extra-parenthesis in > "mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing" > * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" > * Do not describe generic SPI device properties in SPI NAND bindings. > * Changes in the mtd command: > * Printing more information in 'mtd list' (device type, device > characteristics) > * Switch to do_div() instead of '(u32)value64b % value32b' which only > worked because value32b was a power of 2. > * Removed erase.chip option. > * By default, erase/read/write happen on the full MTD device while a > dump will only work on a single page. > > Changes since v1: > ----------------- > * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. > * Added Reviewed-by tags from Jagan. > * Backported and squashed two patches fixing things in the SPI NAND core > received on the Linux ML. > * Backported more changes in mtdcore.c from Linux. > * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c > when mtd->_read/write_oob() is not supported. > * Removed the DT changes, useless as the DTs are not available in > mainline yet. > * Addressed Boris/Stefan comments on the 'mtd' command. > * Added support for multi-pages OOB read/write. > > > Boris Brezillon (7): > mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing > mtd: Add sanity checks in mtd_write/read_oob() > mtd: nand: Add core infrastructure to deal with NAND devices > mtd: nand: Pass mode information to nand_page_io_req > spi: Extend the core to ease integration of SPI memory controllers > mtd: spinand: Add initial support for the MX35LF1GE4AB chip > dt-bindings: Add bindings for SPI NAND devices > > Brian Norris (1): > mtd: add get/set of_node/flash_node helpers > > Ezequiel Garcia (1): > mtd: Uninline mtd_write_oob and move it to mtdcore.c > > Frieder Schrempf (1): > mtd: spinand: Add initial support for Winbond W25M02GV > > Miquel Raynal (15): > mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing > mtd: fix build issue with includes > mtd: move definitions to enlarge their range > mtd: move all flash categories inside MTD submenu > mtd: move NAND files into a raw/ subdirectory > mtd: rename nand into rawnand in Kconfig prompt > mtd: spinand: Add initial support for the MX35LF2GE4AB chip > mtd: declare MTD_PARTITIONS symbol in Kconfig > cmd: ubi: delete useless and misleading definitions > cmd: mtdparts: accept spi-nand devices > cmd: mtdparts: add a generic 'mtdparts' parser > cmd: mtdparts: remove useless 'mtdparts=' prefix > mtd: uclass: add probe function > cmd: mtd: add 'mtd' command > cmd: mtdparts: try to probe the MTD devices as a fallback > > Peter Pan (2): > mtd: nand: Add core infrastructure to support SPI NANDs > mtd: spinand: Add initial support for Micron MT29F2G01ABAGD Acked--by: Jagan Teki <jagan@openedev.com> Can you rebase on master and send the needed patches or whole? Look like some changes been added in drivers/mtd/nand/Kconfig
Hi Jagan, Jagan Teki <jagan@amarulasolutions.com> wrote on Thu, 26 Jul 2018 11:00:56 +0530: > On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal > <miquel.raynal@bootlin.com> wrote: > > During the last months, Boris Brezillon shared his work to support > > serial flashes within Linux. First, he delivered (and merged) a new > > layer called spi-mem. He also initiated in Linux MTD subsystem the move > > of all 'raw' NAND related code to a raw/ subdirectory, adding at the > > same time a NAND core that would be shared with all NAND devices. Then, > > he contributed a generic SPI-NAND driver, making use of this NAND core, > > as well as some vendor code to drive a few chips. > > > > On top of this work, I added an 'mtd' U-Boot command to handle all sort > > of MTD devices. This should become the default command instead of having > > one per flash flavor ('sf', 'nand', 'spi-nand' ?). > > > > The series has been tested on an Ocelot board PCB123 (VSC7514), > > featuring a Macronix SPI NAND chip. > > > > TL;DR: the series contains: > > - A few patches from Linux to resynchronize some areas of the MTD layer. > > - Various fixes and re-organization of the MTD subsystem. > > - The introduction of the SPI-mem interface. > > - The addition of the generic SPI-NAND driver (and its bindings). > > - Several SPI NAND chip drivers (Macronix, Micron, Winbond). > > - A new 'mtd' command. > > - Support for spi-nand devices in mtdparts. > > > > To test your SPI-NAND device with U-Boot simply follow these lines: > > > >> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) > >> setenv mtdids spi-nand0=spi-nand0 > >> mtdparts # show the spi-nand device partitions > >> ubi part bar # create a static UBI volume in the bar partition > > > > Thanks, > > Miquèl > > > > Changes since v3: > > ----------------- > > * Fixed the debug messages in spi-mem to print either Rx or Tx data. > > * Fixed a Kconfig error that prevented to build mtdparts with plain > > defconfig. > > * Fixed a compilation error due to the above error that prevented one > > file to be compiled. > > * Adapted the mtd command to probe MTD partitions also. > > * Declared mtd_probe_devices() in a header so mtdparts or UBI could > > use it too (to probe all devices and MTD partitions in a clean way). > > * As I worked on mtdparts, I found annoying and completely useless the > > fact that we need to prefix the environment variable with > > "mtdparts=". Canceled this obligation. > > * Added one patch to allow spi-nand devices to be recognized by mtdparts > > (this is purely useless but needed to be done in order to use this > > command). > > * Removed useless definitions of MTD device types in UBI code. > > * Wrote a generic mtdparts environment variable parser, used by the mtd > > command. > > * Used the mtd_probe_devices() function from get_mtd_info() in > > cmd/mtdparts.c to be sure the desired partition really does not exist > > (otherwise it will be probed and then found). > > > > Changes since v2: > > ----------------- > > * Rebased on u-boot master branch. > > * Removed extra-parenthesis in > > "mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing" > > * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" > > * Do not describe generic SPI device properties in SPI NAND bindings. > > * Changes in the mtd command: > > * Printing more information in 'mtd list' (device type, device > > characteristics) > > * Switch to do_div() instead of '(u32)value64b % value32b' which only > > worked because value32b was a power of 2. > > * Removed erase.chip option. > > * By default, erase/read/write happen on the full MTD device while a > > dump will only work on a single page. > > > > Changes since v1: > > ----------------- > > * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. > > * Added Reviewed-by tags from Jagan. > > * Backported and squashed two patches fixing things in the SPI NAND core > > received on the Linux ML. > > * Backported more changes in mtdcore.c from Linux. > > * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c > > when mtd->_read/write_oob() is not supported. > > * Removed the DT changes, useless as the DTs are not available in > > mainline yet. > > * Addressed Boris/Stefan comments on the 'mtd' command. > > * Added support for multi-pages OOB read/write. > > > > > > Boris Brezillon (7): > > mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing > > mtd: Add sanity checks in mtd_write/read_oob() > > mtd: nand: Add core infrastructure to deal with NAND devices > > mtd: nand: Pass mode information to nand_page_io_req > > spi: Extend the core to ease integration of SPI memory controllers > > mtd: spinand: Add initial support for the MX35LF1GE4AB chip > > dt-bindings: Add bindings for SPI NAND devices > > > > Brian Norris (1): > > mtd: add get/set of_node/flash_node helpers > > > > Ezequiel Garcia (1): > > mtd: Uninline mtd_write_oob and move it to mtdcore.c > > > > Frieder Schrempf (1): > > mtd: spinand: Add initial support for Winbond W25M02GV > > > > Miquel Raynal (15): > > mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing > > mtd: fix build issue with includes > > mtd: move definitions to enlarge their range > > mtd: move all flash categories inside MTD submenu > > mtd: move NAND files into a raw/ subdirectory > > mtd: rename nand into rawnand in Kconfig prompt > > mtd: spinand: Add initial support for the MX35LF2GE4AB chip > > mtd: declare MTD_PARTITIONS symbol in Kconfig > > cmd: ubi: delete useless and misleading definitions > > cmd: mtdparts: accept spi-nand devices > > cmd: mtdparts: add a generic 'mtdparts' parser > > cmd: mtdparts: remove useless 'mtdparts=' prefix > > mtd: uclass: add probe function > > cmd: mtd: add 'mtd' command > > cmd: mtdparts: try to probe the MTD devices as a fallback > > > > Peter Pan (2): > > mtd: nand: Add core infrastructure to support SPI NANDs > > mtd: spinand: Add initial support for Micron MT29F2G01ABAGD > > Acked--by: Jagan Teki <jagan@openedev.com> > Thanks! > Can you rebase on master and send the needed patches or whole? Look > like some changes been added in drivers/mtd/nand/Kconfig I'll wait a bit for Stefan review also and I think I missed something in mtdparts: old partitions are not freed when creating new ones. Kind regards, Miquèl
Hi Miquel, Hi Jagan, On 26.07.2018 09:29, Miquel Raynal wrote: > Hi Jagan, > > Jagan Teki <jagan@amarulasolutions.com> wrote on Thu, 26 Jul 2018 > 11:00:56 +0530: > >> On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal >> <miquel.raynal@bootlin.com> wrote: >>> During the last months, Boris Brezillon shared his work to support >>> serial flashes within Linux. First, he delivered (and merged) a new >>> layer called spi-mem. He also initiated in Linux MTD subsystem the move >>> of all 'raw' NAND related code to a raw/ subdirectory, adding at the >>> same time a NAND core that would be shared with all NAND devices. Then, >>> he contributed a generic SPI-NAND driver, making use of this NAND core, >>> as well as some vendor code to drive a few chips. >>> >>> On top of this work, I added an 'mtd' U-Boot command to handle all sort >>> of MTD devices. This should become the default command instead of having >>> one per flash flavor ('sf', 'nand', 'spi-nand' ?). >>> >>> The series has been tested on an Ocelot board PCB123 (VSC7514), >>> featuring a Macronix SPI NAND chip. >>> >>> TL;DR: the series contains: >>> - A few patches from Linux to resynchronize some areas of the MTD layer. >>> - Various fixes and re-organization of the MTD subsystem. >>> - The introduction of the SPI-mem interface. >>> - The addition of the generic SPI-NAND driver (and its bindings). >>> - Several SPI NAND chip drivers (Macronix, Micron, Winbond). >>> - A new 'mtd' command. >>> - Support for spi-nand devices in mtdparts. >>> >>> To test your SPI-NAND device with U-Boot simply follow these lines: >>> >>>> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) >>>> setenv mtdids spi-nand0=spi-nand0 >>>> mtdparts # show the spi-nand device partitions >>>> ubi part bar # create a static UBI volume in the bar partition >>> >>> Thanks, >>> Miquèl >>> >>> Changes since v3: >>> ----------------- >>> * Fixed the debug messages in spi-mem to print either Rx or Tx data. >>> * Fixed a Kconfig error that prevented to build mtdparts with plain >>> defconfig. >>> * Fixed a compilation error due to the above error that prevented one >>> file to be compiled. >>> * Adapted the mtd command to probe MTD partitions also. >>> * Declared mtd_probe_devices() in a header so mtdparts or UBI could >>> use it too (to probe all devices and MTD partitions in a clean way). >>> * As I worked on mtdparts, I found annoying and completely useless the >>> fact that we need to prefix the environment variable with >>> "mtdparts=". Canceled this obligation. >>> * Added one patch to allow spi-nand devices to be recognized by mtdparts >>> (this is purely useless but needed to be done in order to use this >>> command). >>> * Removed useless definitions of MTD device types in UBI code. >>> * Wrote a generic mtdparts environment variable parser, used by the mtd >>> command. >>> * Used the mtd_probe_devices() function from get_mtd_info() in >>> cmd/mtdparts.c to be sure the desired partition really does not exist >>> (otherwise it will be probed and then found). >>> >>> Changes since v2: >>> ----------------- >>> * Rebased on u-boot master branch. >>> * Removed extra-parenthesis in >>> "mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing" >>> * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" >>> * Do not describe generic SPI device properties in SPI NAND bindings. >>> * Changes in the mtd command: >>> * Printing more information in 'mtd list' (device type, device >>> characteristics) >>> * Switch to do_div() instead of '(u32)value64b % value32b' which only >>> worked because value32b was a power of 2. >>> * Removed erase.chip option. >>> * By default, erase/read/write happen on the full MTD device while a >>> dump will only work on a single page. >>> >>> Changes since v1: >>> ----------------- >>> * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. >>> * Added Reviewed-by tags from Jagan. >>> * Backported and squashed two patches fixing things in the SPI NAND core >>> received on the Linux ML. >>> * Backported more changes in mtdcore.c from Linux. >>> * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c >>> when mtd->_read/write_oob() is not supported. >>> * Removed the DT changes, useless as the DTs are not available in >>> mainline yet. >>> * Addressed Boris/Stefan comments on the 'mtd' command. >>> * Added support for multi-pages OOB read/write. >>> >>> >>> Boris Brezillon (7): >>> mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing >>> mtd: Add sanity checks in mtd_write/read_oob() >>> mtd: nand: Add core infrastructure to deal with NAND devices >>> mtd: nand: Pass mode information to nand_page_io_req >>> spi: Extend the core to ease integration of SPI memory controllers >>> mtd: spinand: Add initial support for the MX35LF1GE4AB chip >>> dt-bindings: Add bindings for SPI NAND devices >>> >>> Brian Norris (1): >>> mtd: add get/set of_node/flash_node helpers >>> >>> Ezequiel Garcia (1): >>> mtd: Uninline mtd_write_oob and move it to mtdcore.c >>> >>> Frieder Schrempf (1): >>> mtd: spinand: Add initial support for Winbond W25M02GV >>> >>> Miquel Raynal (15): >>> mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing >>> mtd: fix build issue with includes >>> mtd: move definitions to enlarge their range >>> mtd: move all flash categories inside MTD submenu >>> mtd: move NAND files into a raw/ subdirectory >>> mtd: rename nand into rawnand in Kconfig prompt >>> mtd: spinand: Add initial support for the MX35LF2GE4AB chip >>> mtd: declare MTD_PARTITIONS symbol in Kconfig >>> cmd: ubi: delete useless and misleading definitions >>> cmd: mtdparts: accept spi-nand devices >>> cmd: mtdparts: add a generic 'mtdparts' parser >>> cmd: mtdparts: remove useless 'mtdparts=' prefix >>> mtd: uclass: add probe function >>> cmd: mtd: add 'mtd' command >>> cmd: mtdparts: try to probe the MTD devices as a fallback >>> >>> Peter Pan (2): >>> mtd: nand: Add core infrastructure to support SPI NANDs >>> mtd: spinand: Add initial support for Micron MT29F2G01ABAGD >> >> Acked--by: Jagan Teki <jagan@openedev.com> >> > > Thanks! > >> Can you rebase on master and send the needed patches or whole? Look >> like some changes been added in drivers/mtd/nand/Kconfig > > I'll wait a bit for Stefan review also and I think I missed something > in mtdparts: old partitions are not freed when creating new ones. I'm back from vacation and am starting to work on this SPI NAND support again. Right now, I'm facing a problem with 32 Bytes missing when written to NAND and read back. Most likely a problem with my SPI driver which supports a maximum of 32 Bytes per SPI message (I'm using adjust_op_size() to adjust the max xfer size). As for waiting for my review comments, I would suggest to pull this patchset (once updated onto TOT) soon, as the merge window closes just today. We can fix issues later in this release cycle. Otherwise we need to postpone this series to the next release, which is of course also on option. Thanks, Stefan
Hi Stefan, Tom, Stefan Roese <sr@denx.de> wrote on Mon, 30 Jul 2018 17:11:49 +0200: > Hi Miquel, > Hi Jagan, > > On 26.07.2018 09:29, Miquel Raynal wrote: > > Hi Jagan, > > > Jagan Teki <jagan@amarulasolutions.com> wrote on Thu, 26 Jul 2018 > > 11:00:56 +0530: > > >> On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal > >> <miquel.raynal@bootlin.com> wrote: > >>> During the last months, Boris Brezillon shared his work to support > >>> serial flashes within Linux. First, he delivered (and merged) a new > >>> layer called spi-mem. He also initiated in Linux MTD subsystem the move > >>> of all 'raw' NAND related code to a raw/ subdirectory, adding at the > >>> same time a NAND core that would be shared with all NAND devices. Then, > >>> he contributed a generic SPI-NAND driver, making use of this NAND core, > >>> as well as some vendor code to drive a few chips. > >>> > >>> On top of this work, I added an 'mtd' U-Boot command to handle all sort > >>> of MTD devices. This should become the default command instead of having > >>> one per flash flavor ('sf', 'nand', 'spi-nand' ?). > >>> > >>> The series has been tested on an Ocelot board PCB123 (VSC7514), > >>> featuring a Macronix SPI NAND chip. > >>> > >>> TL;DR: the series contains: > >>> - A few patches from Linux to resynchronize some areas of the MTD layer. > >>> - Various fixes and re-organization of the MTD subsystem. > >>> - The introduction of the SPI-mem interface. > >>> - The addition of the generic SPI-NAND driver (and its bindings). > >>> - Several SPI NAND chip drivers (Macronix, Micron, Winbond). > >>> - A new 'mtd' command. > >>> - Support for spi-nand devices in mtdparts. > >>> > >>> To test your SPI-NAND device with U-Boot simply follow these lines: > >>> >>>> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) > >>>> setenv mtdids spi-nand0=spi-nand0 > >>>> mtdparts # show the spi-nand device partitions > >>>> ubi part bar # create a static UBI volume in the bar partition > >>> > >>> Thanks, > >>> Miquèl > >>> > >>> Changes since v3: > >>> ----------------- > >>> * Fixed the debug messages in spi-mem to print either Rx or Tx data. > >>> * Fixed a Kconfig error that prevented to build mtdparts with plain > >>> defconfig. > >>> * Fixed a compilation error due to the above error that prevented one > >>> file to be compiled. > >>> * Adapted the mtd command to probe MTD partitions also. > >>> * Declared mtd_probe_devices() in a header so mtdparts or UBI could > >>> use it too (to probe all devices and MTD partitions in a clean way). > >>> * As I worked on mtdparts, I found annoying and completely useless the > >>> fact that we need to prefix the environment variable with > >>> "mtdparts=". Canceled this obligation. > >>> * Added one patch to allow spi-nand devices to be recognized by mtdparts > >>> (this is purely useless but needed to be done in order to use this > >>> command). > >>> * Removed useless definitions of MTD device types in UBI code. > >>> * Wrote a generic mtdparts environment variable parser, used by the mtd > >>> command. > >>> * Used the mtd_probe_devices() function from get_mtd_info() in > >>> cmd/mtdparts.c to be sure the desired partition really does not exist > >>> (otherwise it will be probed and then found). > >>> > >>> Changes since v2: > >>> ----------------- > >>> * Rebased on u-boot master branch. > >>> * Removed extra-parenthesis in > >>> "mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing" > >>> * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" > >>> * Do not describe generic SPI device properties in SPI NAND bindings. > >>> * Changes in the mtd command: > >>> * Printing more information in 'mtd list' (device type, device > >>> characteristics) > >>> * Switch to do_div() instead of '(u32)value64b % value32b' which only > >>> worked because value32b was a power of 2. > >>> * Removed erase.chip option. > >>> * By default, erase/read/write happen on the full MTD device while a > >>> dump will only work on a single page. > >>> > >>> Changes since v1: > >>> ----------------- > >>> * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. > >>> * Added Reviewed-by tags from Jagan. > >>> * Backported and squashed two patches fixing things in the SPI NAND core > >>> received on the Linux ML. > >>> * Backported more changes in mtdcore.c from Linux. > >>> * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c > >>> when mtd->_read/write_oob() is not supported. > >>> * Removed the DT changes, useless as the DTs are not available in > >>> mainline yet. > >>> * Addressed Boris/Stefan comments on the 'mtd' command. > >>> * Added support for multi-pages OOB read/write. > >>> > >>> > >>> Boris Brezillon (7): > >>> mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing > >>> mtd: Add sanity checks in mtd_write/read_oob() > >>> mtd: nand: Add core infrastructure to deal with NAND devices > >>> mtd: nand: Pass mode information to nand_page_io_req > >>> spi: Extend the core to ease integration of SPI memory controllers > >>> mtd: spinand: Add initial support for the MX35LF1GE4AB chip > >>> dt-bindings: Add bindings for SPI NAND devices > >>> > >>> Brian Norris (1): > >>> mtd: add get/set of_node/flash_node helpers > >>> > >>> Ezequiel Garcia (1): > >>> mtd: Uninline mtd_write_oob and move it to mtdcore.c > >>> > >>> Frieder Schrempf (1): > >>> mtd: spinand: Add initial support for Winbond W25M02GV > >>> > >>> Miquel Raynal (15): > >>> mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing > >>> mtd: fix build issue with includes > >>> mtd: move definitions to enlarge their range > >>> mtd: move all flash categories inside MTD submenu > >>> mtd: move NAND files into a raw/ subdirectory > >>> mtd: rename nand into rawnand in Kconfig prompt > >>> mtd: spinand: Add initial support for the MX35LF2GE4AB chip > >>> mtd: declare MTD_PARTITIONS symbol in Kconfig > >>> cmd: ubi: delete useless and misleading definitions > >>> cmd: mtdparts: accept spi-nand devices > >>> cmd: mtdparts: add a generic 'mtdparts' parser > >>> cmd: mtdparts: remove useless 'mtdparts=' prefix > >>> mtd: uclass: add probe function > >>> cmd: mtd: add 'mtd' command > >>> cmd: mtdparts: try to probe the MTD devices as a fallback > >>> > >>> Peter Pan (2): > >>> mtd: nand: Add core infrastructure to support SPI NANDs > >>> mtd: spinand: Add initial support for Micron MT29F2G01ABAGD > >> > >> Acked--by: Jagan Teki <jagan@openedev.com> > >> > > > Thanks! > > >> Can you rebase on master and send the needed patches or whole? Look > >> like some changes been added in drivers/mtd/nand/Kconfig > > > I'll wait a bit for Stefan review also and I think I missed something > > in mtdparts: old partitions are not freed when creating new ones. > > I'm back from vacation and am starting to work on this SPI NAND > support again. Right now, I'm facing a problem with 32 Bytes > missing when written to NAND and read back. Most likely a problem > with my SPI driver which supports a maximum of 32 Bytes per SPI > message (I'm using adjust_op_size() to adjust the max xfer size). > > As for waiting for my review comments, I would suggest to pull > this patchset (once updated onto TOT) soon, as the merge window > closes just today. We can fix issues later in this release cycle. > Otherwise we need to postpone this series to the next release, which > is of course also on option. You are right, I forgot about that. It would be really nice to have this feature merged for this release indeed. I also agree that, are there are no users yet, it would be interesting to upstream it now and be reactive on the fixes. Tom, if you agree with this (and if it's not too late), I am rebasing this work, if I don't have huge conflicts it could be ready any time soon. Would you agree to merge it? Thanks, Miquèl
On Mon, Jul 30, 2018 at 05:23:18PM +0200, Miquel Raynal wrote: > Hi Stefan, Tom, > > Stefan Roese <sr@denx.de> wrote on Mon, 30 Jul 2018 17:11:49 +0200: > > > Hi Miquel, > > Hi Jagan, > > > > On 26.07.2018 09:29, Miquel Raynal wrote: > > > Hi Jagan, > > > > Jagan Teki <jagan@amarulasolutions.com> wrote on Thu, 26 Jul 2018 > > > 11:00:56 +0530: > > > >> On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal > > >> <miquel.raynal@bootlin.com> wrote: > > >>> During the last months, Boris Brezillon shared his work to support > > >>> serial flashes within Linux. First, he delivered (and merged) a new > > >>> layer called spi-mem. He also initiated in Linux MTD subsystem the move > > >>> of all 'raw' NAND related code to a raw/ subdirectory, adding at the > > >>> same time a NAND core that would be shared with all NAND devices. Then, > > >>> he contributed a generic SPI-NAND driver, making use of this NAND core, > > >>> as well as some vendor code to drive a few chips. > > >>> > > >>> On top of this work, I added an 'mtd' U-Boot command to handle all sort > > >>> of MTD devices. This should become the default command instead of having > > >>> one per flash flavor ('sf', 'nand', 'spi-nand' ?). > > >>> > > >>> The series has been tested on an Ocelot board PCB123 (VSC7514), > > >>> featuring a Macronix SPI NAND chip. > > >>> > > >>> TL;DR: the series contains: > > >>> - A few patches from Linux to resynchronize some areas of the MTD layer. > > >>> - Various fixes and re-organization of the MTD subsystem. > > >>> - The introduction of the SPI-mem interface. > > >>> - The addition of the generic SPI-NAND driver (and its bindings). > > >>> - Several SPI NAND chip drivers (Macronix, Micron, Winbond). > > >>> - A new 'mtd' command. > > >>> - Support for spi-nand devices in mtdparts. > > >>> > > >>> To test your SPI-NAND device with U-Boot simply follow these lines: > > >>> >>>> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) > > >>>> setenv mtdids spi-nand0=spi-nand0 > > >>>> mtdparts # show the spi-nand device partitions > > >>>> ubi part bar # create a static UBI volume in the bar partition > > >>> > > >>> Thanks, > > >>> Miquèl > > >>> > > >>> Changes since v3: > > >>> ----------------- > > >>> * Fixed the debug messages in spi-mem to print either Rx or Tx data. > > >>> * Fixed a Kconfig error that prevented to build mtdparts with plain > > >>> defconfig. > > >>> * Fixed a compilation error due to the above error that prevented one > > >>> file to be compiled. > > >>> * Adapted the mtd command to probe MTD partitions also. > > >>> * Declared mtd_probe_devices() in a header so mtdparts or UBI could > > >>> use it too (to probe all devices and MTD partitions in a clean way). > > >>> * As I worked on mtdparts, I found annoying and completely useless the > > >>> fact that we need to prefix the environment variable with > > >>> "mtdparts=". Canceled this obligation. > > >>> * Added one patch to allow spi-nand devices to be recognized by mtdparts > > >>> (this is purely useless but needed to be done in order to use this > > >>> command). > > >>> * Removed useless definitions of MTD device types in UBI code. > > >>> * Wrote a generic mtdparts environment variable parser, used by the mtd > > >>> command. > > >>> * Used the mtd_probe_devices() function from get_mtd_info() in > > >>> cmd/mtdparts.c to be sure the desired partition really does not exist > > >>> (otherwise it will be probed and then found). > > >>> > > >>> Changes since v2: > > >>> ----------------- > > >>> * Rebased on u-boot master branch. > > >>> * Removed extra-parenthesis in > > >>> "mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing" > > >>> * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" > > >>> * Do not describe generic SPI device properties in SPI NAND bindings. > > >>> * Changes in the mtd command: > > >>> * Printing more information in 'mtd list' (device type, device > > >>> characteristics) > > >>> * Switch to do_div() instead of '(u32)value64b % value32b' which only > > >>> worked because value32b was a power of 2. > > >>> * Removed erase.chip option. > > >>> * By default, erase/read/write happen on the full MTD device while a > > >>> dump will only work on a single page. > > >>> > > >>> Changes since v1: > > >>> ----------------- > > >>> * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. > > >>> * Added Reviewed-by tags from Jagan. > > >>> * Backported and squashed two patches fixing things in the SPI NAND core > > >>> received on the Linux ML. > > >>> * Backported more changes in mtdcore.c from Linux. > > >>> * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c > > >>> when mtd->_read/write_oob() is not supported. > > >>> * Removed the DT changes, useless as the DTs are not available in > > >>> mainline yet. > > >>> * Addressed Boris/Stefan comments on the 'mtd' command. > > >>> * Added support for multi-pages OOB read/write. > > >>> > > >>> > > >>> Boris Brezillon (7): > > >>> mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing > > >>> mtd: Add sanity checks in mtd_write/read_oob() > > >>> mtd: nand: Add core infrastructure to deal with NAND devices > > >>> mtd: nand: Pass mode information to nand_page_io_req > > >>> spi: Extend the core to ease integration of SPI memory controllers > > >>> mtd: spinand: Add initial support for the MX35LF1GE4AB chip > > >>> dt-bindings: Add bindings for SPI NAND devices > > >>> > > >>> Brian Norris (1): > > >>> mtd: add get/set of_node/flash_node helpers > > >>> > > >>> Ezequiel Garcia (1): > > >>> mtd: Uninline mtd_write_oob and move it to mtdcore.c > > >>> > > >>> Frieder Schrempf (1): > > >>> mtd: spinand: Add initial support for Winbond W25M02GV > > >>> > > >>> Miquel Raynal (15): > > >>> mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing > > >>> mtd: fix build issue with includes > > >>> mtd: move definitions to enlarge their range > > >>> mtd: move all flash categories inside MTD submenu > > >>> mtd: move NAND files into a raw/ subdirectory > > >>> mtd: rename nand into rawnand in Kconfig prompt > > >>> mtd: spinand: Add initial support for the MX35LF2GE4AB chip > > >>> mtd: declare MTD_PARTITIONS symbol in Kconfig > > >>> cmd: ubi: delete useless and misleading definitions > > >>> cmd: mtdparts: accept spi-nand devices > > >>> cmd: mtdparts: add a generic 'mtdparts' parser > > >>> cmd: mtdparts: remove useless 'mtdparts=' prefix > > >>> mtd: uclass: add probe function > > >>> cmd: mtd: add 'mtd' command > > >>> cmd: mtdparts: try to probe the MTD devices as a fallback > > >>> > > >>> Peter Pan (2): > > >>> mtd: nand: Add core infrastructure to support SPI NANDs > > >>> mtd: spinand: Add initial support for Micron MT29F2G01ABAGD > > >> > > >> Acked--by: Jagan Teki <jagan@openedev.com> > > >> > > > > Thanks! > > > >> Can you rebase on master and send the needed patches or whole? Look > > >> like some changes been added in drivers/mtd/nand/Kconfig > > > > I'll wait a bit for Stefan review also and I think I missed something > > > in mtdparts: old partitions are not freed when creating new ones. > > > > I'm back from vacation and am starting to work on this SPI NAND > > support again. Right now, I'm facing a problem with 32 Bytes > > missing when written to NAND and read back. Most likely a problem > > with my SPI driver which supports a maximum of 32 Bytes per SPI > > message (I'm using adjust_op_size() to adjust the max xfer size). > > > > As for waiting for my review comments, I would suggest to pull > > this patchset (once updated onto TOT) soon, as the merge window > > closes just today. We can fix issues later in this release cycle. > > Otherwise we need to postpone this series to the next release, which > > is of course also on option. > > You are right, I forgot about that. It would be really nice to have > this feature merged for this release indeed. I also agree that, are > there are no users yet, it would be interesting to upstream it now and > be reactive on the fixes. > > Tom, if you agree with this (and if it's not too late), I am rebasing > this work, if I don't have huge conflicts it could be ready any time > soon. Would you agree to merge it? Yes, I want this in the upcoming release. So Jagan, please apply this and send me a PR if there's no further immediate changes required. Thanks!
On Mon, Jul 30, 2018 at 8:41 PM, Stefan Roese <sr@denx.de> wrote: > Hi Miquel, > Hi Jagan, > > > On 26.07.2018 09:29, Miquel Raynal wrote: >> >> Hi Jagan, >> >> Jagan Teki <jagan@amarulasolutions.com> wrote on Thu, 26 Jul 2018 >> 11:00:56 +0530: >> >>> On Fri, Jul 13, 2018 at 6:01 PM, Miquel Raynal >>> <miquel.raynal@bootlin.com> wrote: >>>> >>>> During the last months, Boris Brezillon shared his work to support >>>> serial flashes within Linux. First, he delivered (and merged) a new >>>> layer called spi-mem. He also initiated in Linux MTD subsystem the move >>>> of all 'raw' NAND related code to a raw/ subdirectory, adding at the >>>> same time a NAND core that would be shared with all NAND devices. Then, >>>> he contributed a generic SPI-NAND driver, making use of this NAND core, >>>> as well as some vendor code to drive a few chips. >>>> >>>> On top of this work, I added an 'mtd' U-Boot command to handle all sort >>>> of MTD devices. This should become the default command instead of having >>>> one per flash flavor ('sf', 'nand', 'spi-nand' ?). >>>> >>>> The series has been tested on an Ocelot board PCB123 (VSC7514), >>>> featuring a Macronix SPI NAND chip. >>>> >>>> TL;DR: the series contains: >>>> - A few patches from Linux to resynchronize some areas of the MTD layer. >>>> - Various fixes and re-organization of the MTD subsystem. >>>> - The introduction of the SPI-mem interface. >>>> - The addition of the generic SPI-NAND driver (and its bindings). >>>> - Several SPI NAND chip drivers (Macronix, Micron, Winbond). >>>> - A new 'mtd' command. >>>> - Support for spi-nand devices in mtdparts. >>>> >>>> To test your SPI-NAND device with U-Boot simply follow these lines: >>>> >>>>> >>>>> setenv mtdparts mtdparts=spi-nand0:1m(foo),-(bar) >>>>> setenv mtdids spi-nand0=spi-nand0 >>>>> mtdparts # show the spi-nand device partitions >>>>> ubi part bar # create a static UBI volume in the bar partition >>>> >>>> >>>> Thanks, >>>> Miquèl >>>> >>>> Changes since v3: >>>> ----------------- >>>> * Fixed the debug messages in spi-mem to print either Rx or Tx data. >>>> * Fixed a Kconfig error that prevented to build mtdparts with plain >>>> defconfig. >>>> * Fixed a compilation error due to the above error that prevented one >>>> file to be compiled. >>>> * Adapted the mtd command to probe MTD partitions also. >>>> * Declared mtd_probe_devices() in a header so mtdparts or UBI could >>>> use it too (to probe all devices and MTD partitions in a clean way). >>>> * As I worked on mtdparts, I found annoying and completely useless the >>>> fact that we need to prefix the environment variable with >>>> "mtdparts=". Canceled this obligation. >>>> * Added one patch to allow spi-nand devices to be recognized by mtdparts >>>> (this is purely useless but needed to be done in order to use this >>>> command). >>>> * Removed useless definitions of MTD device types in UBI code. >>>> * Wrote a generic mtdparts environment variable parser, used by the mtd >>>> command. >>>> * Used the mtd_probe_devices() function from get_mtd_info() in >>>> cmd/mtdparts.c to be sure the desired partition really does not exist >>>> (otherwise it will be probed and then found). >>>> >>>> Changes since v2: >>>> ----------------- >>>> * Rebased on u-boot master branch. >>>> * Removed extra-parenthesis in >>>> "mtd: Fallback to ->_read/write() when ->_read/write_oob() is >>>> missing" >>>> * s/fiels/files/ in "mtd: move NAND fiels into a raw/ subdirectory" >>>> * Do not describe generic SPI device properties in SPI NAND bindings. >>>> * Changes in the mtd command: >>>> * Printing more information in 'mtd list' (device type, device >>>> characteristics) >>>> * Switch to do_div() instead of '(u32)value64b % value32b' which only >>>> worked because value32b was a power of 2. >>>> * Removed erase.chip option. >>>> * By default, erase/read/write happen on the full MTD device while a >>>> dump will only work on a single page. >>>> >>>> Changes since v1: >>>> ----------------- >>>> * Fixed the nand_memorg structure of the MX35LF2GE4AB chip. >>>> * Added Reviewed-by tags from Jagan. >>>> * Backported and squashed two patches fixing things in the SPI NAND core >>>> received on the Linux ML. >>>> * Backported more changes in mtdcore.c from Linux. >>>> * Added a patch to add a fallback on mtd->_read/_write() in mtdcore.c >>>> when mtd->_read/write_oob() is not supported. >>>> * Removed the DT changes, useless as the DTs are not available in >>>> mainline yet. >>>> * Addressed Boris/Stefan comments on the 'mtd' command. >>>> * Added support for multi-pages OOB read/write. >>>> >>>> >>>> Boris Brezillon (7): >>>> mtd: Fallback to ->_read/write_oob() when ->_read/write() is missing >>>> mtd: Add sanity checks in mtd_write/read_oob() >>>> mtd: nand: Add core infrastructure to deal with NAND devices >>>> mtd: nand: Pass mode information to nand_page_io_req >>>> spi: Extend the core to ease integration of SPI memory controllers >>>> mtd: spinand: Add initial support for the MX35LF1GE4AB chip >>>> dt-bindings: Add bindings for SPI NAND devices >>>> >>>> Brian Norris (1): >>>> mtd: add get/set of_node/flash_node helpers >>>> >>>> Ezequiel Garcia (1): >>>> mtd: Uninline mtd_write_oob and move it to mtdcore.c >>>> >>>> Frieder Schrempf (1): >>>> mtd: spinand: Add initial support for Winbond W25M02GV >>>> >>>> Miquel Raynal (15): >>>> mtd: Fallback to ->_read/write() when ->_read/write_oob() is missing >>>> mtd: fix build issue with includes >>>> mtd: move definitions to enlarge their range >>>> mtd: move all flash categories inside MTD submenu >>>> mtd: move NAND files into a raw/ subdirectory >>>> mtd: rename nand into rawnand in Kconfig prompt >>>> mtd: spinand: Add initial support for the MX35LF2GE4AB chip >>>> mtd: declare MTD_PARTITIONS symbol in Kconfig >>>> cmd: ubi: delete useless and misleading definitions >>>> cmd: mtdparts: accept spi-nand devices >>>> cmd: mtdparts: add a generic 'mtdparts' parser >>>> cmd: mtdparts: remove useless 'mtdparts=' prefix >>>> mtd: uclass: add probe function >>>> cmd: mtd: add 'mtd' command >>>> cmd: mtdparts: try to probe the MTD devices as a fallback >>>> >>>> Peter Pan (2): >>>> mtd: nand: Add core infrastructure to support SPI NANDs >>>> mtd: spinand: Add initial support for Micron MT29F2G01ABAGD >>> >>> >>> Acked--by: Jagan Teki <jagan@openedev.com> >>> >> >> Thanks! >> >>> Can you rebase on master and send the needed patches or whole? Look >>> like some changes been added in drivers/mtd/nand/Kconfig >> >> >> I'll wait a bit for Stefan review also and I think I missed something >> in mtdparts: old partitions are not freed when creating new ones. Is this resolved with v5? > > I'm back from vacation and am starting to work on this SPI NAND > support again. Right now, I'm facing a problem with 32 Bytes > missing when written to NAND and read back. Most likely a problem > with my SPI driver which supports a maximum of 32 Bytes per SPI > message (I'm using adjust_op_size() to adjust the max xfer size). Is it with kirkwood? > As for waiting for my review comments, I would suggest to pull > this patchset (once updated onto TOT) soon, as the merge window > closes just today. We can fix issues later in this release cycle. > Otherwise we need to postpone this series to the next release, which > is of course also on option. If the issue is generic and it changed the current behavior on mtd or any other related areas, it's better to hold. Jagan.
Hi Jagan, On 31.07.2018 07:36, Jagan Teki wrote: <snip> >>>> Acked--by: Jagan Teki <jagan@openedev.com> >>>> >>> >>> Thanks! >>> >>>> Can you rebase on master and send the needed patches or whole? Look >>>> like some changes been added in drivers/mtd/nand/Kconfig >>> >>> >>> I'll wait a bit for Stefan review also and I think I missed something >>> in mtdparts: old partitions are not freed when creating new ones. > > Is this resolved with v5? > >> >> I'm back from vacation and am starting to work on this SPI NAND >> support again. Right now, I'm facing a problem with 32 Bytes >> missing when written to NAND and read back. Most likely a problem >> with my SPI driver which supports a maximum of 32 Bytes per SPI >> message (I'm using adjust_op_size() to adjust the max xfer size). > > Is it with kirkwood? No. Its with a new platform I'm currently working on (MediaTek MT7688 MIPS) - custom board. The platform and board port will be posted in a few days / weeks (once its ready). >> As for waiting for my review comments, I would suggest to pull >> this patchset (once updated onto TOT) soon, as the merge window >> closes just today. We can fix issues later in this release cycle. >> Otherwise we need to postpone this series to the next release, which >> is of course also on option. > > If the issue is generic and it changed the current behavior on mtd or > any other related areas, it's better to hold. AFAICT its not generic. The SPI NAND seems to be working for Miquel and its a new infrastructure. So chances for breaking an existing board / platform are pretty low. By pulling this patchset now, we enable the possibility for implementing and testing it on other platforms sooner. Tom also seems to be willing to do so. Thanks, Stefan
Hi Jagan, Stefan Roese <sr@denx.de> wrote on Tue, 31 Jul 2018 07:50:54 +0200: > Hi Jagan, > > On 31.07.2018 07:36, Jagan Teki wrote: > > <snip> > > >>>> Acked--by: Jagan Teki <jagan@openedev.com> > >>>> > >>> > >>> Thanks! > >>> > >>>> Can you rebase on master and send the needed patches or whole? Look > >>>> like some changes been added in drivers/mtd/nand/Kconfig > >>> > >>> > >>> I'll wait a bit for Stefan review also and I think I missed something > >>> in mtdparts: old partitions are not freed when creating new ones. > > > Is this resolved with v5? Absolutely not, but I will fix it in a next series during the stabilization cycle. Maybe I will rework a bit mtdparts too, to trash the thin layer that handles the partitions to use in a much more consistent way the MTD core. > > >> > >> I'm back from vacation and am starting to work on this SPI NAND > >> support again. Right now, I'm facing a problem with 32 Bytes > >> missing when written to NAND and read back. Most likely a problem > >> with my SPI driver which supports a maximum of 32 Bytes per SPI > >> message (I'm using adjust_op_size() to adjust the max xfer size). > > > Is it with kirkwood? > > No. Its with a new platform I'm currently working on (MediaTek > MT7688 MIPS) - custom board. The platform and board port will be > posted in a few days / weeks (once its ready). > > >> As for waiting for my review comments, I would suggest to pull > >> this patchset (once updated onto TOT) soon, as the merge window > >> closes just today. We can fix issues later in this release cycle. > >> Otherwise we need to postpone this series to the next release, which > >> is of course also on option. > > > If the issue is generic and it changed the current behavior on mtd or > > any other related areas, it's better to hold. > > AFAICT its not generic. The SPI NAND seems to be working for Miquel > and its a new infrastructure. So chances for breaking an existing > board / platform are pretty low. I totally agree on this. > By pulling this patchset now, we > enable the possibility for implementing and testing it on other > platforms sooner. Tom also seems to be willing to do so. Jagan, I just saw your answer to the cover letter of the v5, thanks for applying it. Regards, Miquèl