Hi Steven,

thanks a lot for this comprehensive list of flash chip voltages and form
factors..

On 13.10.2010 01:49, Steven Zakulec wrote:
> Hello, some weeks ago I asked carldani what I could do to help the
> flashrom project, and he mentioned that they could really use someone
> to go thru all the chips in flashchips.c and get the voltage range and
> form factor(s) for each chip listed there.
>
> This is the result of that project: a spreadsheet with the chip name,
> voltage range, form factors, connector type (pins, leads, etc).  This
> covers all the chips as of v1143.
> If anyone else is interested, I also have a short text file with all
> of the form factor acronyms I came across and what they mean (I
> grabbed the definition from the datasheet).
>
> There's a few missing chips, and some values that I wasn't quite sure
> about.  Comments would be greatly appreciated.
>   

I thought I had seen some SPI chips which were available for disjoint
voltage ranges, e.g. 1.8-2.5V and 2.7-3.6V. Maybe the names were
different for the various versions with different voltages. I hope I'll
stumble over such a datasheet again.

OK, now the next question is how we can store this info in struct
flashchip. Suggestion:

struct voltage {
uint8_t minvoltage_decivolt;
uint8_t maxvoltage_decivolt;
};

Values would be in 1/10 volts. I haven't seen any flash chip datasheets
with greater precision, and with such an encoding even 12V can be expressed.

For the form factor, I'd just use a large bitfield with one bit per
available form factor.
uint32_t formfactors;

#define PLCC32 (1 << 0)
#define TSOP32 (1 << 1)
#define TSOP40 (1 << 2)
...

Example:

        {
                .vendor         = "SST",
                .name           = "SST49LF008A",
                .bustype        = CHIP_BUSTYPE_FWH, /* A/A Mux */
                .manufacture_id = SST_ID,
                .model_id       = SST_SST49LF008A,
                .total_size     = 1024,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
                .tested         = TEST_OK_PRE,
                .probe          = probe_jedec,
                .probe_timing   = 1,        /* 150 ns */
                .block_erasers  =
                {
                        {
                                .eraseblocks = { {4 * 1024, 256} },
                                .block_erase = erase_sector_jedec,
                        }, {
                                .eraseblocks = { {64 * 1024, 16} },
                                .block_erase = erase_block_jedec,
                        }, {
                                .eraseblocks = { {1024 * 1024, 1} },
                                .block_erase = NULL, /* AA 55 80 AA 55 10, only 
in A/A mux mode */
                        }
                },
                .printlock      = printlock_sst_fwhub,
                .unlock         = unlock_sst_fwhub,
                .write          = write_jedec_1,
                .read           = read_memmapped,
                .voltages       = { 30, 36 },
                .formfactors    = TSOP32|TSOP40|PLCC32,
          },

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to