[flashrom] [PATCH] Convert chips to block erasers: ST
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Tue Jan 19 11:36:18 CET 2010
On 19.01.2010 09:01, Sean Nelson wrote:
> This should be the last-last revision of this patch.
>
> Convert ST to block erasers:
> ST M25P05-A
> ST M25P05.RES
> ST M25P10-A
> ST M25P10.RES
> ST M25P20
> ST M25P40
> ST M25P40-old
> ST M25P80
> ST M25P16
> ST M25P32
> ST M25P64
> ST M25P128
> ST M29F002B
> ST M29F002T/NT
> ST M29F040B
> ST M29F400BT
> ST M29W010B
> ST M29W040B
> ST M50FLW040A
> ST M50FLW040B
> ST M50FLW080A
> ST M50FLW080B
> ST M50FW002
> ST M50FW016
> ST M50FW040
> ST M50FW080
> ST M50LPW116
>
> Add erase_chip_stm50flw0x0x to stm50flw0x0x.c
> Add copyright to stm50flw0x0x.c
> Fix block sizes and counts
> Omit M50FLW0x0x mixed sector/block eraser
> Convert the used 82802ab functions to their stm50flw0x0x equivalents
> Fix incorrect sizes as found by Carl-Daniel.
> Add back M50FLW0x0x mixed sector/block eraser sans function pointer.
>
> Signed-off-by: Sean Nelson <audiohacked at gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
> {
> .vendor = "ST",
> .name = "M50FLW040A",
> .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
> .manufacture_id = ST_ID,
> .model_id = ST_M50FLW040A,
> .total_size = 512,
> .page_size = 64 * 1024,
> .feature_bits = FEATURE_REGISTERMAP,
> .tested = TEST_UNTESTED,
> .probe = probe_jedec,
> .probe_timing = TIMING_FIXME,
> - .erase = erase_stm50flw0x0x,
> + .erase = NULL,
> + .block_erasers =
> + {
> + {
> + .eraseblocks = {
> + {4 * 1024, 16}, /* sector */
> + {64 * 1024, 5}, /* block */
> + {4 * 1024, 16}, /* sector */
> + {4 * 1024, 16}, /* sector */
> + },
> + .block_erase = NULL,
>
Not exactly what I had in mind (I thought about specifying the function
and not the blocks), but flashrom can deal with this as well.
It might be a good idea to change the line
{64 * 1024, 5},
to
{320 * 1024, -1},
once flashrom can deal with negative sizes and interpret them as
"function does not apply to this area". Or we create a special erase
function which does different things based on eraseblock size/location.
Your code is OK right now (please don't follow my suggestion right now),
and I just wanted to discuss further development options.
> + }, {
> + .eraseblocks = { {64 * 1024, 8}, },
> + .block_erase = erase_block_stm50flw0x0x,
> + }, {
> + .eraseblocks = { {512 * 1024, 1} },
> + .block_erase = erase_chip_stm50flw0x0x,
> + }
> + },
> .write = write_stm50flw0x0x,
> .read = read_memmapped,
> },
>
Regards,
Carl-Daniel
--
Developer quote of the year:
"We are juggling too many chainsaws and flaming arrows and tigers."
More information about the flashrom
mailing list