Carl asked me to double check as many as i could. Sorry for the somewhat funny 
notation, but it helped me keep track of where i was. There are only a few not 
mentioned.. i worked that out with Sean on IRC.

Also, major sorry for the delay.. this was a little tougher than i expected.

The features quoted are the features i have checked. Comments are above.
Legend:
(C) = Checks out
(W) = Warning, sheet says otherwise.
(U) = Unsure, please double check and comment.
(N) = No datasheet available.
(S) = Skipped in this review because $REASON


[AMD Section]
(W)(U) I can't find evidence of  anything other than write_jedec_1 in the 
sheet. Please verify.
                .name           = "Am29F010A/B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_EITHER_RESET,
                .write          = write_jedec,

(W)(U) Uhm, the N versions do not support reset at all, but I don't think we 
can tell them apart with out a runtime test. Also they are ADDR_2AA I think.
                .name           = "Am29F002(N)BB" / "Am29F002(N)BT"
                .feature_bits = FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

(C) No comments.
                .name           = "Am29F016D",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "Am29F040B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "Am29F080B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "Am29LV040B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

(C) Strictly speaking it doesn't need ADDR_2AA as it has "Don't care" for all 
addresses (except the last in ID detection) [weird freakin' chip!, red]
                .name           = "Am29LV081B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,


[ASD Section]
(N) Also has strange comments in flashchips.h
                .name           = "AE49F2008",


[Atmel Section]
(C) No comments.
                .name           = "AT29C512",
                .feature_bits = FEATURE_LONG_RESET,
                .write          = write_jedec,

                .name           = "AT29C010A",
                .feature_bits = FEATURE_LONG_RESET,
                .write          = write_jedec,

                .name           = "AT29C020",
                .feature_bits = FEATURE_LONG_RESET,
                .write          = write_jedec,

                .name           = "AT29C040A",
                .feature_bits = FEATURE_LONG_RESET,
                .write          = write_jedec,

                .name           = "AT49BV512",
                .feature_bits = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

(W) N-version does not support reset.
                .name           = "AT49F002(N)" / "AT49F002(N)T"
                .feature_bits = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,


[AMIC Section]
(C) No remarks.
                .name           = "A29002B" / "A29002T"
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "A29040B",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

(C)(U) This one should do write_jedec_1 if that function understands 
registermap.
                .name           = "A49LF040A",
                .feature_bits   = FEATURE_REGISTERMAP|FEATURE_EITHER_RESET,
                .write          = write_49fl00x,


[EMST Section]
(C) No comments.
                .name           = "F49B002UA",
                .feature_bits = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,


[EON Section]
(W)  Oops,  ADDR_555 only.
                .name           = "EN29F002(A)(N)B" / "EN29F002(A)(N)T"
                .feature_bits = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,


[Fujitsu Section]
(C)(U)  *Looks like* it supports write_jedec_1.
                .name           = "MBM29F004BC" / "MBM29F004TC"
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_EITHER_RESET,
                .write          = NULL,

(U) I have no idea...
                /* FIXME: this has WORD/BYTE sequences; 2AA for word, 555 for 
byte */
                .name           = "MBM29F400BC" / "MBM29F400TC"
                .feature_bits = FEATURE_ADDR_SHIFTED|FEATURE_EITHER_RESET,
                .write          = write_coreboot_m29f400bt,


[Intel Section]
(S) These datasheets are scary.
                .name           = "28F001BX-B" / "28F001BX-T" / "82802AB"


[Macronix Section]
(C) These check out:
                .name           = "MX29F001B" / "MX29F001T"
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "MX29F002B" / "MX29F002T"
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,

                .name           = "MX29LV040",
                .feature_bits = FEATURE_ADDR_2AA|FEATURE_SHORT_RESET,
                .write          = write_jedec_1,


[PMC Section]
(W)(U) Looks like write_jedec_1 only.
                .name           = "Pm29F002T" / "Pm29F002B",
                .feature_bits   = FEATURE_ADDR_2AA|FEATURE_EITHER_RESET,
                .write          = write_jedec,

(W) Is ADDR_2AA
                .name           = "Pm39LV010",
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

(W)(U) This looks like plain write_jedec_1 to me
                .name           = "Pm49FL002" / "Pm49FL004"
                .feature_bits   = FEATURE_REGISTERMAP|FEATURE_EITHER_RESET,
                .write               = write_49fl00x


[Sharp Section]
(S) Can't read that sheet. Silly people...
                .name           = "LHF00L04",


[SST Section]
(W)(U) Can only find short reset in sheet.
                .name           = "SST28SF040A",
                .feature_bits   = FEATURE_EITHER_RESET,

(C) No comment.
                .name           = "SST29EE010" / "SST29LE010",
                .feature_bits   = FEATURE_LONG_RESET,
                .write               = write_jedec

                .name           = "SST29EE020A" / "SST29LE020",
                .feature_bits   = FEATURE_LONG_RESET,
                .write              = write_jedec

                .name           = "SST39SF512" / "SST39SF010A" / "SST39SF020A" 
/ "SST39SF040"
                                           "SST39VF512" / "SST39VF010"   / 
"SST39VF020"   / "SST39VF040"
                                           "SST39VF080" /
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

                .name           = "SST49LF002A/B" / "SST49LF003A/B" / 
"SST49LF004A/B"
                                           "SST49LF008A"
                .feature_bits   = FEATURE_REGISTERMAP|FEATURE_EITHER_RESET

(W) This one is REGISTERMAP (ds page 22) and SHORT_RESET (ds page 14)
                .name           = "SST49LF004C" / "SST49LF008C"
                .feature_bits   = 0,

(W) This one is REGISTERMAP (ds page 19) and SHORT_RESET (ds page 17)
                .name           = "SST49LF016C",
                .feature_bits   = 0,

(W) REGISTERMAP and (ds page 23) and SHORT_RESET (ds page 16)
                .name           = "SST49LF160C",
                .feature_bits   = 0,

(C) No comments.
                .name           = "SST49LF020" / "SST49LF040"
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

                .name           = "SST49LF020A" / "SST49LF080A"
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

                .name           = "SST49LF040B",
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

[ST Section]
(U) Generally i have a hard time with ST and write_jedec vs write_jedec_1,
      so someone else should look over this...
(C) Checks out.
                .name           = "M29F002B",
                .feature_bits   = FEATURE_ADDR_AAA|FEATURE_EITHER_RESET,
                .write          = write_jedec,

(W) And once again the N version does not support reset.
                .name           = "M29F002T/NT",
                .feature_bits   = FEATURE_ADDR_AAA|FEATURE_EITHER_RESET,
                .write          = write_jedec,

                .name           = "M29F040B",
                .feature_bits   = FEATURE_ADDR_2AA|FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

(C) No comment
                /* FIXME: this has WORD/BYTE sequences; 2AA for word, 555 for 
byte */
                .name           = "M29F400BT",
                .feature_bits   = FEATURE_ADDR_SHIFTED|FEATURE_EITHER_RESET,

(W) Is ADDR_2AA
                .name           = "M29W010B" / "M29W040B"
                .feature_bits   = FEATURE_EITHER_RESET,
                .write               = write_jedec,


[SyncMOS Section]
(C) Home run baby.
                .name           = "S29C31004T" / "S29C51001T" / "S29C51002T" / 
"S29C51004T"
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,


[TI Section]
(W) Looks ADDR_2AA to me.
                .name           = "TMS29F002RB" / "TMS29F002RT"
                .feature_bits   = FEATURE_EITHER_RESET,


[Winbond Section]
(C) No remarks.
                .name           = "W29C011" / "W29C020C" / "W29C040P" / 
"W29EE011"
                .feature_bits   = FEATURE_LONG_RESET,
                .write               = write_jedec,

                .name           = "W39V040A" / "W39V040B" / "W39V040C" / 
"W39V040FA"
                                           "W39V080A" / "W49F002U" / "W49V002A" 
/ "W49V002FA"
                .feature_bits   = FEATURE_EITHER_RESET,
                .write          = write_jedec_1,

(W) Is EITHER_RESET (ds page 11)
                .name           = "W39V080FA" / "W39V080FA (dual mode)"
                .feature_bits   = FEATURE_REGISTERMAP|FEATURE_LONG_RESET,


Have a nice day!
/Anders

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

Reply via email to