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
2
flash.h
2
flash.h
@ -151,6 +151,8 @@ enum chipbustype {
|
||||
|
||||
#define FEATURE_REGISTERMAP (1 << 0)
|
||||
#define FEATURE_BYTEWRITES (1 << 1)
|
||||
#define FEATURE_ADDR_FULL (0 << 2)
|
||||
#define FEATURE_ADDR_MASK (3 << 2)
|
||||
|
||||
struct flashchip {
|
||||
const char *vendor;
|
||||
|
18
jedec.c
18
jedec.c
@ -373,6 +373,19 @@ retry:
|
||||
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 i, failed = 0;
|
||||
@ -438,7 +451,10 @@ int erase_chip_block_jedec(struct flashchip *flash, unsigned int addr,
|
||||
|
||||
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user