summaryrefslogtreecommitdiff
path: root/src/drivers/vpd
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/vpd')
-rw-r--r--src/drivers/vpd/vpd.c8
-rw-r--r--src/drivers/vpd/vpd.h7
2 files changed, 10 insertions, 5 deletions
diff --git a/src/drivers/vpd/vpd.c b/src/drivers/vpd/vpd.c
index f5ac81ebfd..c332a6e94c 100644
--- a/src/drivers/vpd/vpd.c
+++ b/src/drivers/vpd/vpd.c
@@ -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)
diff --git a/src/drivers/vpd/vpd.h b/src/drivers/vpd/vpd.h
index df7711af90..25e0aed4ee 100644
--- a/src/drivers/vpd/vpd.h
+++ b/src/drivers/vpd/vpd.h
@@ -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
};
/*