[flashrom] Voltage & form-factor spreadsheet

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Wed Oct 13 02:51:41 CEST 2010


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/





More information about the flashrom mailing list