# Every module contains: # [unique name] # id=decimal integer, data type identifier # desc=string, short description of a data; max 10 characters # data.value=[ABC | CAFEBEBA | xyz abc | /path/to/file ] # data.type=[hex.uint[8/16/32/64] | hex.string | utf8.string | file] # ver=decimal integer, version number; if not specified defaults to 0 # WARNING: the platform type data.value MUST match the MRC data.value below [Platform Type] id=1 desc=PlatformID data.type=hex.uint16 # ClantonPeak 2, KipsBay 3, CrossHill 4, ClantonHill 5, KipsBay-fabD 6, GalileoGen2 8 data.value=6 # WARNING: the MRC data.value MUST match the platform type data.value above [Mrc Params] id=6 ver=1 desc=MrcParams data.type=file #data.value=MRC/clantonpeak.v1.bin #data.value=MRC/kipsbay.v1.bin #data.value=MRC/crosshill.v1.bin #data.value=MRC/clantonhill.v1.bin data.value=MRC/kipsbay-fabD.v1.bin #data.value=MRC/GalileoGen2.bin # If you are developing MRC for a new system you can alternatively # inline the value like this: # data.type=hex.string # data.value=00000000000000010101000300000100010101017C9200001027000010270000409C000006 # The unique MAC address(es) owned by each device are typically found # on a sticker. You must find it(them) and change the bogus values # below. [MAC address 0] id=3 desc=1st MAC data.type=hex.string data.value=001320FDF6F0 [MAC address 1] id=4 desc=2nd MAC data.type=hex.string data.value=001320FDF6F1 # # MRC Params data byte explanation. # u32, u16 vales read with least significant byte first, little endian. # # data[00-01] - platform_id u16 - should match value of platform type/id record as sanity check. # data[02-05] - flags u32 - bit[0] ECC_EN, bit[1] SCRAMBLE_EN, others=RESERVED # data[06] - dram_width u8 - 0=x8, 1=x16, others=RESERVED. # data[07] - dram_speed u8 - 0=DDRFREQ_800, 1=DDRFREQ_1066, others=RESERVED. Only 533MHz SKU support 1066 memory. # data[08] - dram_type u8 - 0=DDR3, 1=DDR3L, others=RESERVED. # data[09] - rank_mask u8 - bit[0] RANK0_EN, bit[1] RANK1_EN, others=RESERVED. # data[0A] - chan_mask u8 - bit[0] CHAN0_EN, others=RESERVED.. # data[0B] - chan_width u8 - 1=x16, others=RESERVED. # data[0C] - addr_mode u8 - 0, 1, 2 (mode 2 forced if ecc enabled), others=RESERVED # data[0D] - sr_int u8 - 1=1.95us, 2=3.9us, 3=7.8us, others=RESERVED. REFRESH_RATE. # data[0E] - sr_temp u8 - 0=normal, 1=extended, others=RESERVED. SR_TEMP_RANGE. # data[0F] - dram_ron_val u8 - 0=34ohm, 1=40ohm, others=RESERVED. RON_VALUE Select MRS1.DIC driver impedance control. # data[10] - dram_rtt_nom_val u8 - 0=40ohm, 1=60ohm, 2=120ohm, others=RESERVED. RTT_NOM_VALUE. # data[11] - dram_rtt_wr_val u8 - 0=off, others=RESERVED # data[12] - soc_rd_odt_val u8 - 0=off, 1=60ohm, 2=120ohm, 3=180ohm, others=RESERVED. RD_ODT_VALUE. # data[13] - soc_wr_ron_val u8 - 0=27ohm, 1=32ohm, 2=40ohm, others=RESERVED. (WR_RON_VALUE select Vref code for DQ DRV PU evaluation using external resistor). # data[14] - soc_wr_slew u8 - 0=2.5V/ns, 1=4V/ns, others=RESERVED. (WR_SLEW_RATE). # data[15] - dram_density u8 - 0=512Mb, 1=Gb, 2=2Gb, 3=4Gb, others=RESERVED. # data[16-19] - tRAS u32 - ACT to PRE command period in picoseconds. # data[1A-1D] - tWTR u32 - Delay from start of internal write transaction to internal read command in picoseconds. # data[1E-21] - tRRD u32 - ACT to ACT command period (JESD79 specific to page size 1K/2K) in picoseconds. # data[22-25] - tFAW u32 - Four activate window (JESD79 specific to page size 1K/2K) in picoseconds. # data[26] - tCL u8 - DRAM CAS Latency in clocks. # # Example DDR3-800, Single Rank, 1gbit devices. # byte index FFFF000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324 # byte values FFFF00000000000000010101000300000100020100017C9200001027000010270000409C000006 # # Example DDR3-800, Single Rank, 2gbit devices. # byte index FFFF000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324 # byte values FFFF00000000000000010101000300000100020100027C9200001027000010270000409C000006 # # Example DDR3-800, Single Rank, 4gbit devices. # byte index FFFF000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324 # byte values FFFF00000000000000010101000300000100020100037C9200001027000010270000409C000006 # # Example DDR3-800, Dual Rank, 4gbit devices # byte index FFFF000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324 # byte values FFFF00000000000000030101000300000100020100037C9200001027000010270000409C000006 # # byte idx 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223242526