Because it is not 7 bits?
This is from linux kernel.
#define MC_SEQ_MISC_TIMING_LP__TRP_WRA_MASK 0x3f
#define MC_SEQ_MISC_TIMING_LP__TRP_WRA__SHIFT 0x0
#define MC_SEQ_MISC_TIMING_LP__TRP_RDA_MASK 0x3f00
#define MC_SEQ_MISC_TIMING_LP__TRP_RDA__SHIFT 0x8
#define MC_SEQ_MISC_TIMING_LP__TRP_MASK 0xf8000
#define MC_SEQ_MISC_TIMING_LP__TRP__SHIFT 0xf
#define MC_SEQ_MISC_TIMING_LP__TRFC_MASK 0x1ff00000
#define MC_SEQ_MISC_TIMING_LP__TRFC__SHIFT 0x14
Surely 0x1ff00000 gives 9 bits?
The way i see it, it should be decoded as (highter to lower bits):
Bits("unused3", 3), #Unused
Bits("TRFC", 9), #Auto-refresh command period - 1
Bits("TRP", 5), #Precharge command period - 1
Bits("unused2", 1), #Unused but defined as 1
Bits("TRP_RDA", 6), #From read with auto-precharge to active - 1
Bits("unused1", 2), #Unused
Bits("TRP_WRA", 6), #From write with auto-precharge to active - 1
If so then MISC_TIMING decodes from 1500 hynix strap as
unused3 = 0
TRFC = 148
TRP = 9
unused2 = 1
TRP_RDA = 11
unused1 = 0
TRP_WRA = 48
I am more interested why unused2 contains data. Did i miss something?