mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
Use address mask in probe_jedec
This allows us to have one common probe_jedec function instead of half a dozen wrappers. The trick here is to have FEATURE_ADDR_FULL==0 and thus default to unmasked addresses. That way, we only have to annotate chips which need small address masks. Corresponding to flashrom svn r840. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Sean Nelson <audiohacked@gmail.com>
This commit is contained in:
parent
e9404668a1
commit
4bf4e79907
6
flash.h
6
flash.h
@ -149,8 +149,10 @@ enum chipbustype {
|
|||||||
*/
|
*/
|
||||||
#define NUM_ERASEFUNCTIONS 5
|
#define NUM_ERASEFUNCTIONS 5
|
||||||
|
|
||||||
#define FEATURE_REGISTERMAP (1 << 0)
|
#define FEATURE_REGISTERMAP (1 << 0)
|
||||||
#define FEATURE_BYTEWRITES (1 << 1)
|
#define FEATURE_BYTEWRITES (1 << 1)
|
||||||
|
#define FEATURE_ADDR_FULL (0 << 2)
|
||||||
|
#define FEATURE_ADDR_MASK (3 << 2)
|
||||||
|
|
||||||
struct flashchip {
|
struct flashchip {
|
||||||
const char *vendor;
|
const char *vendor;
|
||||||
|
18
jedec.c
18
jedec.c
@ -373,6 +373,19 @@ retry:
|
|||||||
return failed;
|
return failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int getaddrmask(struct flashchip *flash)
|
||||||
|
{
|
||||||
|
switch (flash->feature_bits & FEATURE_ADDR_MASK) {
|
||||||
|
case FEATURE_ADDR_FULL:
|
||||||
|
return MASK_FULL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(stderr, "%s called with unknown mask\n", __func__);
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int write_jedec(struct flashchip *flash, uint8_t *buf)
|
int write_jedec(struct flashchip *flash, uint8_t *buf)
|
||||||
{
|
{
|
||||||
int i, failed = 0;
|
int i, failed = 0;
|
||||||
@ -438,7 +451,10 @@ int erase_chip_block_jedec(struct flashchip *flash, unsigned int addr,
|
|||||||
|
|
||||||
int probe_jedec(struct flashchip *flash)
|
int probe_jedec(struct flashchip *flash)
|
||||||
{
|
{
|
||||||
return probe_jedec_common(flash, MASK_FULL, 1);
|
int mask;
|
||||||
|
|
||||||
|
mask = getaddrmask(flash);
|
||||||
|
return probe_jedec_common(flash, mask, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int erase_sector_jedec(struct flashchip *flash, unsigned int page, unsigned int size)
|
int erase_sector_jedec(struct flashchip *flash, unsigned int page, unsigned int size)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user