Elyes HAOUAS | 42eda83 | 2020-05-07 11:18:05 +0200 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 2 | |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 3 | # Memory chip: Hynix H5TQ4G63MFR-PBC with ECC |
Elyes HAOUAS | ef90609 | 2020-02-20 19:41:17 +0100 | [diff] [blame] | 4 | # BAP ODE E20XX has 2GB RAM soldered down on the Q7 |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 5 | # Memory setting for DDR-1066 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 6 | |
| 7 | # 0 Number of SPD Bytes used / Total SPD Size / CRC Coverage |
| 8 | # bits[3:0]: 1 = 128 SPD Bytes Used |
| 9 | # bits[6:4]: 1 = 256 SPD Bytes Total |
| 10 | # bit7 : 0 = CRC covers bytes 0 ~ 125 |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 11 | 11 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 12 | |
| 13 | # 1 SPD Revision - |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 14 | # 0x12 = Revision 1.2 |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 15 | 12 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 16 | |
| 17 | # 2 Key Byte / DRAM Device Type |
| 18 | # bits[7:0]: 0x0b = DDR3 SDRAM |
| 19 | 0B |
| 20 | |
| 21 | # 3 Key Byte / Module Type |
| 22 | # bits[3:0]: 3 = SO-DIMM |
| 23 | # bits[7:4]: reserved |
| 24 | 03 |
| 25 | |
| 26 | # 4 SDRAM CHIP Density and Banks |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 27 | # bits[3:0]: 4 = 4 Gigabits Total SDRAM capacity per chip |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 28 | # bits[6:4]: 0 = 3 (8 banks) |
| 29 | # bit7 : reserved |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 30 | 04 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 31 | |
| 32 | # 5 SDRAM Addressing |
| 33 | # bits[2:0]: 1 = 10 Column Address Bits |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 34 | # bits[5:3]: 3 = 15 Row Address Bits |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 35 | # bits[7:6]: reserved |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 36 | 19 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 37 | |
| 38 | # 6 Module Nominal Voltage, VDD |
| 39 | # bit0 : 0 = 1.5 V operable |
| 40 | # bit1 : 0 = NOT 1.35 V operable |
| 41 | # bit2 : 0 = NOT 1.25 V operable |
| 42 | # bits[7:3]: reserved |
| 43 | 00 |
| 44 | |
| 45 | # 7 Module Organization |
| 46 | # bits[2:0]: 2 = 16 bits |
| 47 | # bits[5:3]: 0 = 1 Rank |
| 48 | # bits[7:6]: reserved |
| 49 | 02 |
| 50 | |
| 51 | # 8 Module Memory Bus Width |
| 52 | # bits[2:0]: 3 = Primary bus width is 64 bits |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 53 | # bits[4:3]: 1 = 1 bit (bus width extension ECC) |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 54 | # bits[7:5]: reserved |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 55 | 0B |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 56 | |
| 57 | # 9 Fine Timebase (FTB) Dividend / Divisor |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 58 | # bits[3:0]: 0x01 divisor |
| 59 | # bits[7:4]: 0x01 dividend |
| 60 | # 1/1 = 1ps |
| 61 | 11 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 62 | |
| 63 | # 10 Medium Timebase (MTB) Dividend |
| 64 | # 11 Medium Timebase (MTB) Divisor |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 65 | # 1 / 8 = .125 ns - used for DDR3 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 66 | 01 08 |
| 67 | |
| 68 | # 12 SDRAM Minimum Cycle Time (tCKmin) |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 69 | # 0x0F = tCKmin of 1.875 ns = DDR3-1066 (533 MHz clock) |
| 70 | 0F |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 71 | |
| 72 | # 13 Reserved |
| 73 | 00 |
| 74 | |
| 75 | # 14 CAS Latencies Supported, Least Significant Byte |
| 76 | # 15 CAS Latencies Supported, Most Significant Byte |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 77 | # Cas Latencies of 8 - 5 are supported |
| 78 | 1E 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 79 | |
| 80 | # 16 Minimum CAS Latency Time (tAAmin) |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 81 | # 0x69 = 13.125ns - DDR3-1066F |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 82 | 69 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 83 | |
| 84 | # 17 Minimum Write Recovery Time (tWRmin) |
| 85 | # 0x78 = tWR of 15ns - All DDR3 speed grades |
| 86 | 78 |
| 87 | |
| 88 | # 18 Minimum RAS# to CAS# Delay Time (tRCDmin) |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 89 | # 0x69 = 13.125ns - DDR3-1066F |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 90 | 69 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 91 | |
| 92 | # 19 Minimum Row Active to Row Active Delay Time (tRRDmin) |
| 93 | # 0x3C = 7.5ns |
| 94 | 3C |
| 95 | |
| 96 | # 20 Minimum Row Precharge Delay Time (tRPmin) |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 97 | # 0x69 = 13.125ns - DDR3-1066F |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 98 | 69 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 99 | |
| 100 | # 21 Upper Nibbles for tRAS and tRC |
| 101 | # bits[3:0]: tRAS most significant nibble = 1 (see byte 22) |
| 102 | # bits[7:4]: tRC most significant nibble = 1 (see byte 23) |
| 103 | 11 |
| 104 | |
| 105 | # 22 Minimum Active to Precharge Delay Time (tRASmin), LSB |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 106 | # 0x12C = 37.5ns - DDR3-1066 (see byte 21) |
| 107 | 2C |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 108 | |
| 109 | # 23 Minimum Active to Active/Refresh Delay Time (tRCmin), LSB |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 110 | # 0x195 = 50.625ns - DDR3-1066F (see byte 21) |
| 111 | 95 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 112 | |
| 113 | # 24 Minimum Refresh Recovery Delay Time (tRFCmin), LSB |
| 114 | # 25 Minimum Refresh Recovery Delay Time (tRFCmin), MSB |
| 115 | # 0x500 = 160ns - for 2 Gigabit chips |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 116 | 80 07 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 117 | |
| 118 | # 26 Minimum Internal Write to Read Command Delay Time (tWTRmin) |
| 119 | # 0x3c = 7.5 ns - All DDR3 SDRAM speed bins |
| 120 | 3C |
| 121 | |
| 122 | # 27 Minimum Internal Read to Precharge Command Delay Time (tRTPmin) |
| 123 | # 0x3c = 7.5ns - All DDR3 SDRAM speed bins |
| 124 | 3C |
| 125 | |
| 126 | # 28 Upper Nibble for tFAWmin |
| 127 | # 29 Minimum Four Activate Window Delay Time (tFAWmin) |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 128 | # 0x0190 = 50ns - DDR3-1066, 2 KB page size |
| 129 | 01 90 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 130 | |
| 131 | # 30 SDRAM Optional Feature |
| 132 | # bit0 : 1= RZQ/6 supported |
| 133 | # bit1 : 1 = RZQ/7 supported |
| 134 | # bits[6:2]: reserved |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 135 | # bit7 : 0 = DLL Off mode supported |
| 136 | 03 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 137 | |
| 138 | # 31 SDRAM Thermal and Refresh Options |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 139 | # bit0 : 0 = Temp up to 95c supported |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 140 | # bit1 : 0 = 85-95c uses 2x refresh rate |
| 141 | # bit2 : 1 = Auto Self Refresh supported |
| 142 | # bit3 : 0 = no on die thermal sensor |
| 143 | # bits[6:4]: reserved |
| 144 | # bit7 : 0 = partial self refresh supported |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 145 | 04 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 146 | |
| 147 | # 32 Module Thermal Sensor |
| 148 | # 0 = Thermal sensor not incorporated onto this assembly |
| 149 | 00 |
| 150 | |
| 151 | # 33 SDRAM Device Type |
| 152 | # bits[1:0]: 0 = Signal Loading not specified |
| 153 | # bits[3:2]: reserved |
| 154 | # bits[6:4]: 0 = Die count not specified |
| 155 | # bit7 : 0 = Standard Monolithic DRAM Device |
| 156 | 00 |
| 157 | |
| 158 | # 34 Fine Offset for SDRAM Minimum Cycle Time (tCKmin) |
| 159 | # 35 Fine Offset for Minimum CAS Latency Time (tAAmin) |
| 160 | # 36 Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin) |
| 161 | # 37 Fine Offset for Minimum Row Precharge Delay Time (tRPmin) |
| 162 | # 38 Fine Offset for Minimum Active to Active/Refresh Delay (tRCmin) |
| 163 | 00 00 00 00 00 |
| 164 | |
| 165 | # 39 - 59 (reserved) |
| 166 | 00 00 00 00 00 00 00 00 |
| 167 | 00 00 00 00 00 00 00 00 |
| 168 | 00 00 00 00 00 |
| 169 | |
| 170 | # 60 Raw Card Extension, Module Nominal Height |
| 171 | # bits[4:0]: 0 = <= 15mm tall |
| 172 | # bits[7:5]: 0 = raw card revision 0-3 |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 173 | 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 174 | |
| 175 | # 61 Module Maximum Thickness |
| 176 | # bits[3:0]: 0 = thickness front <= 1mm |
| 177 | # bits[7:4]: 0 = thinkness back <= 1mm |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 178 | 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 179 | |
| 180 | # 62 Reference Raw Card Used |
| 181 | # bits[4:0]: 0 = Reference Raw card A used |
| 182 | # bits[6:5]: 0 = revision 0 |
| 183 | # bit7 : 0 = Reference raw cards A through AL |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 184 | 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 185 | |
| 186 | # 63 Address Mapping from Edge Connector to DRAM |
| 187 | # bit0 : 0 = standard mapping (not mirrored) |
| 188 | # bits[7:1]: reserved |
| 189 | 00 |
| 190 | |
| 191 | # 64 - 116 (reserved) |
| 192 | 00 00 00 00 00 00 00 00 |
| 193 | 00 00 00 00 00 00 00 00 |
| 194 | 00 00 00 00 00 00 00 00 |
| 195 | 00 00 00 00 00 00 00 00 |
| 196 | 00 00 00 00 00 00 00 00 |
| 197 | 00 00 00 00 00 00 00 00 |
| 198 | 00 00 00 00 00 |
| 199 | |
| 200 | # 117 - 118 Module ID: Module Manufacturers JEDEC ID Code |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 201 | # 0x80AD = Hynix |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 202 | 80 AD |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 203 | |
| 204 | # 119 Module ID: Module Manufacturing Location - oem specified |
| 205 | # 120 Module ID: Module Manufacture Year in BCD |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 206 | # 0x00 = 2000 |
| 207 | 00 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 208 | |
| 209 | # 121 Module ID: Module Manufacture week |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 210 | # 0x00 = 0th week |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 211 | 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 212 | |
| 213 | # 122 - 125: Module Serial Number |
Fabian Kunkel | 7558dba | 2015-05-25 17:08:17 +0200 | [diff] [blame] | 214 | 00 00 00 00 |
Kyösti Mälkki | 595ef3d | 2015-05-27 12:44:16 +0300 | [diff] [blame] | 215 | |
| 216 | # 126 - 127: Cyclical Redundancy Code |
Fabian Kunkel | 8cab72e | 2016-07-26 22:46:23 +0200 | [diff] [blame] | 217 | E9 40 |