Hi Albert, On Sun, Jan 30, 2011 at 10:36:17AM +0100, Albert ARIBAUD wrote: > Hi Simon :) > > Le 29/01/2011 18:00, Simon Guinot a écrit : > > Hi, > > > > I am looking to add U-Boot support for the LaCie Network Space v2 board. > > > > The SoC is a Kirkwood 88F6281_A0 and the boot device is a Macronix SPI > > flash (MX25L4005A). My problem is that the embedded stock U-Boot (1.1.4 > > version patched by Marvell and LaCie) enable write protection for the > > SPI flash. Then, after an U-Boot update, turn off this protection is > > needed to allow saving U-Boot environment. > > > > It is not clear for me how to proceed. Disable the write protection from > > the board setup code could be an idea but a problem is that the SPI flash > > API don't export any helpful method... > > Maybe I should add one ? > > > > An another idea is disabling the write protection anyway while > > initializing the flash (from the low level macronix driver). It is quite > > straightforward but I don't know if a flash driver is allowed to do > > that. After all, a flash could be protected for some good reasons. > > > > My last idea is doing nothing and let an another piece of software > > handle the problem... > > > > Thanks in advance for advices. > > My personal take: let users of the board do their own mistakes and thus, > do not protect the Flash, *except* for U-Boot itself. > > So, if SPI Flash protection is possible on block or sector levels, > protect the blocks/sectors where U-Boot is located, including the > environment.
For a Macronix SPI flash, the status register export 3 bits (or 4 depending the model and size) to configure the block protection. Here is the protect area map for a MX25L4005A 4Mb flash: bit 2 1 0 | protect level ____________|_______________ 0 0 0 | none 0 0 1 | block 7 0 1 0 | block 6-7 0 1 1 | block 4-7 1 * * | all As you can figure, deal with a per block protection in a generic way is not easy.. > > Saveenv should unprotect and re-protect the environment sector/block. If I understand well, macronix_{erase,write}() are called from either "saveenv" or "spi erase/write" commands and the low level macronix functions don't have any flash map knowledge. Then, leave protect or not a flash sector after a write/erase operation is not an easy decision. Maybe the status register protection can be configured during the board initialization ? after all, the required flash informations (as device size, u-boot and environment localization) are available within the board setup code. > > As for the kernel and rootfs... You can either leave them unprotected or > protected. As a side note, the Macronix Linux driver (m25p80) don't deal either with the block protect bits. > > > Simon > > > > PS: some pointers about this project: > > > > git : http://git.lacie-nas.org/u-boot-lacie.git (branch netspace_v2) > > You should keep this branch based on u-boot/master generally, and on > u-boot-arm/master right now because it has the most recent ARM commits. OK, done :) Simon
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot