From: Frederik van Hövell <[email protected]>

The returned value for revision is interpreted as an unix epoch timestamp after 
year 2000 by EDK2 for RPi3/4 boards.
EDK2 firmware uses the revision to show as human-readable 'year.month', and 
asserted to have year between 2000 and 2255 (both inclusive).

See 
[PlatformSmbiosDxe.c](https://github.com/tianocore/edk2-platforms/blob/master/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c#L763).

Signed-off-by: Frederik van Hövell <[email protected]>
---
 hw/misc/bcm2835_property.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c
index a90c7e6c863..a705e44b1fe 100644
--- a/hw/misc/bcm2835_property.c
+++ b/hw/misc/bcm2835_property.c
@@ -52,7 +52,8 @@ static void bcm2835_property_mbox_push(BCM2835PropertyState 
*s, uint32_t value)
         case RPI_FWREQ_PROPERTY_END:
             break;
         case RPI_FWREQ_GET_FIRMWARE_REVISION:
-            stl_le_phys(&s->dma_as, value + 12, 346337);
+            // Use timestamp of first released Raspberry Pi as minimum 
'revision': 2012-02-29T00:00:00.000Z
+            stl_le_phys(&s->dma_as, value + 12, 1330473600);
             resplen = 4;
             break;
         case RPI_FWREQ_GET_BOARD_MODEL:
-- 
2.55.0


Reply via email to