drivers/vpd: add VPD region VPD_RW_THEN_RO
This change is based on the concept that system user's (overwrite) settings are held in VPD_RW region, while system owner's (default) settings are held in VPD_RO region. Add VPD_RW_THEN_RO region type, so that VPD_RW region is searched first to get overwrite setting, otherwise VPD_RO region is searched to get default setting. Signed-off-by: Jonathan Zhang <jonzhang@fb.com> Change-Id: Icd7cbd9c3fb2a6b02fc417ad45d7d22ca6795457 Reviewed-on: https://review.coreboot.org/c/coreboot/+/41732 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
This commit is contained in:
parent
a9117ed496
commit
9b110bf97a
|
@ -209,10 +209,14 @@ const void *vpd_find(const char *key, int *size, enum vpd_region region)
|
|||
|
||||
init_vpd_rdevs();
|
||||
|
||||
if (region != VPD_RW)
|
||||
if (region == VPD_RW_THEN_RO)
|
||||
vpd_find_in(&rw_vpd, &arg);
|
||||
|
||||
if (!arg.matched && (region == VPD_RO || region == VPD_RO_THEN_RW ||
|
||||
region == VPD_RW_THEN_RO))
|
||||
vpd_find_in(&ro_vpd, &arg);
|
||||
|
||||
if (!arg.matched && region != VPD_RO)
|
||||
if (!arg.matched && (region == VPD_RW || region == VPD_RO_THEN_RW))
|
||||
vpd_find_in(&rw_vpd, &arg);
|
||||
|
||||
if (!arg.matched)
|
||||
|
|
|
@ -8,9 +8,10 @@
|
|||
#define GOOGLE_VPD_2_0_OFFSET 0x600
|
||||
|
||||
enum vpd_region {
|
||||
VPD_RO_THEN_RW = 0,
|
||||
VPD_RO = 1,
|
||||
VPD_RW = 2
|
||||
VPD_RO,
|
||||
VPD_RW,
|
||||
VPD_RO_THEN_RW,
|
||||
VPD_RW_THEN_RO
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue