2010/12/17 Idwer Vollering <vidwer@gmail.com>
2010/12/17 Michael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>:
> Hello Ivan,
>
> this patch should add support for the W39L040 chip to flashrom.

A patched DOS build can be found here:
http://khepri.coresystems.de/~idwer/flashrom/trunk-djgpp-r1247-patchwork-2438/

> Please try it on your hardware.

Ivan: have you tried the patched .exe ? Is this message gone, with that build: "pcilib: Cannot find any working access method." ?
 
If you can't compile flashrom yourself, ask
> on the mailing list or our IRC channel (#flashrom on freenode).
>
> Regards,
>  Michael Karcher
>
> ---
>  chipdrivers.h |    1 +
>  flashchips.c  |   30 ++++++++++++++++++++++++++++++
>  w39.c         |   16 ++++++++++++++++
>  3 files changed, 47 insertions(+), 0 deletions(-)
>
> diff --git a/chipdrivers.h b/chipdrivers.h
> index a65cb99..a6b97cb 100644
> --- a/chipdrivers.h
> +++ b/chipdrivers.h
> @@ -110,6 +110,7 @@ int printlock_sst_fwhub(struct flashchip *flash);
>  int unlock_sst_fwhub(struct flashchip *flash);
>
>  /* w39.c */
> +int printlock_w39l040(struct flashchip * flash);
>  int printlock_w39v040a(struct flashchip *flash);
>  int printlock_w39v040b(struct flashchip *flash);
>  int printlock_w39v040c(struct flashchip *flash);
> diff --git a/flashchips.c b/flashchips.c
> index 8082160..4564d04 100644
> --- a/flashchips.c
> +++ b/flashchips.c
> @@ -7573,6 +7573,36 @@ struct flashchip flashchips[] = {
>
>        {
>                .vendor         = "Winbond",
> +               .name           = "W39L040",
> +               .bustype        = CHIP_BUSTYPE_PARALLEL,
> +               .manufacture_id = WINBOND_ID,
> +               .model_id       = WINBOND_W39L040,
> +               .total_size     = 512,
> +               .page_size      = 64 * 1024,
> +               .feature_bits   = FEATURE_EITHER_RESET,
> +               .tested         = TEST_OK_PR,
> +               .probe          = probe_jedec,
> +               .probe_timing   = 10,
> +               .block_erasers  =
> +               {
> +                       {
> +                               .eraseblocks = { {4 * 1024, 128} },
> +                               .block_erase = erase_block_jedec,
> +                       }, {
> +                               .eraseblocks = { {64 * 1024, 8} },
> +                               .block_erase = erase_sector_jedec,
> +                       }, {
> +                               .eraseblocks = { {512 * 1024, 1} },
> +                               .block_erase = erase_chip_block_jedec,
> +                       }
> +               },
> +               .printlock      = printlock_w39l040,
> +               .write          = write_jedec_1,
> +               .read           = read_memmapped,
> +       },
> +
> +       {
> +               .vendor         = "Winbond",
>                .name           = "W39V040A",
>                .bustype        = CHIP_BUSTYPE_LPC,
>                .manufacture_id = WINBOND_ID,
> diff --git a/w39.c b/w39.c
> index 65cf32f..2ab70fd 100644
> --- a/w39.c
> +++ b/w39.c
> @@ -161,6 +161,22 @@ static int unlock_w39_fwh(struct flashchip *flash)
>        return 0;
>  }
>
> +int printlock_w39l040(struct flashchip * flash)
> +{
> +       uint8_t lock;
> +       int ret;
> +
> +       lock = w39_idmode_readb(flash, 0x00002);
> +       msg_cdbg("Bottom boot block:\n");
> +       ret = printlock_w39_bootblock_64k16k(lock);
> +
> +       lock = w39_idmode_readb(flash, 0x7fff2);
> +       msg_cdbg("Top boot block:\n");
> +       ret |= printlock_w39_bootblock_64k16k(lock);
> +
> +       return ret;
> +}
> +
>  int printlock_w39v040a(struct flashchip *flash)
>  {
>        uint8_t lock;
> --
> 1.7.2.3
>
>
> _______________________________________________
> flashrom mailing list
> flashrom@flashrom.org
> http://www.flashrom.org/mailman/listinfo/flashrom
>