diff --git a/bootloader/soc/fuse.c b/bootloader/soc/fuse.c index 04d3612..8b30a74 100644 --- a/bootloader/soc/fuse.c +++ b/bootloader/soc/fuse.c @@ -60,6 +60,14 @@ u32 fuse_read_odm(u32 idx) return FUSE(FUSE_RESERVED_ODMX(idx)); } +u32 fuse_read_odm_keygen_rev() +{ + if ((fuse_read_odm(4) & 0x800) && fuse_read_odm(0) == 0x8E61ECAE && fuse_read_odm(1) == 0xF2BA3BB2) + return (fuse_read_odm(2) & 0x1F); + + return 0; +} + void fuse_wait_idle() { u32 ctrl; diff --git a/bootloader/soc/fuse.h b/bootloader/soc/fuse.h index 00ee63c..5e59609 100644 --- a/bootloader/soc/fuse.h +++ b/bootloader/soc/fuse.h @@ -77,6 +77,7 @@ void fuse_disable_program(); u32 fuse_read_odm(u32 idx); +u32 fuse_read_odm_keygen_rev(); void fuse_wait_idle(); int fuse_read_ipatch(void (*ipatch)(u32 offset, u32 value)); int fuse_read_evp_thunk(u32 *iram_evp_thunks, u32 *iram_evp_thunks_len); diff --git a/nyx/nyx_gui/soc/fuse.c b/nyx/nyx_gui/soc/fuse.c index 04d3612..8b30a74 100644 --- a/nyx/nyx_gui/soc/fuse.c +++ b/nyx/nyx_gui/soc/fuse.c @@ -60,6 +60,14 @@ u32 fuse_read_odm(u32 idx) return FUSE(FUSE_RESERVED_ODMX(idx)); } +u32 fuse_read_odm_keygen_rev() +{ + if ((fuse_read_odm(4) & 0x800) && fuse_read_odm(0) == 0x8E61ECAE && fuse_read_odm(1) == 0xF2BA3BB2) + return (fuse_read_odm(2) & 0x1F); + + return 0; +} + void fuse_wait_idle() { u32 ctrl; diff --git a/nyx/nyx_gui/soc/fuse.h b/nyx/nyx_gui/soc/fuse.h index 00ee63c..5e59609 100644 --- a/nyx/nyx_gui/soc/fuse.h +++ b/nyx/nyx_gui/soc/fuse.h @@ -77,6 +77,7 @@ void fuse_disable_program(); u32 fuse_read_odm(u32 idx); +u32 fuse_read_odm_keygen_rev(); void fuse_wait_idle(); int fuse_read_ipatch(void (*ipatch)(u32 offset, u32 value)); int fuse_read_evp_thunk(u32 *iram_evp_thunks, u32 *iram_evp_thunks_len);