here is the comment from my previous patch, revealing most of my RE work :
/* TODO: This needs to be calculated according to the DRAM tech
* (x8, x16, or x32). Argh, Intel provides no docs on this!
* Currently, it needs to be pulled from the output of
* lspci -xxx Rx92
* here are some common results:
* (c = 128MB dual sided, d = 128MB single sided, f = 256MB dual sided)
* BUFF_SC: tom: drp: DIMM0: DIMM1:
* 0x3356 128MB 0x0c 128MB dual-sided -
* 0xcc56 128MB 0xc0 - 128MB dual-sided
* 0x77da 128MB 0x0d 128MB single-sided -
* 0xddda 128MB 0xd0 - 128MB single-sided
* 0x0001 256MB 0xcc 128MB dual-sided 128MB dual-sided
* 0x55c6 256MB 0xdd 128MB single-sided 128MB single-sided
* 0x4445 256MB 0xcd 128MB single-sided 128MB dual-sided
* 0x1145 256MB 0xdc 128MB dual-sided 128MB single-sided
* 0x3356 256MB 0x0f 256MB dual-sided -
* 0xcc56 256MB 0xf0 - 256MB dual-sided
* 0x0001 384MB 0xcf 256MB dual-sided 128MB dual-sided
* 0x0001 384MB 0xfc 128MB dual-sided 256MB dual-sided
* 0x1145 384MB 0xdf 256MB dual-sided 128MB single-sided
* 0x4445 384MB 0xfd 128MB single-sided 256MB dual-sided
* 0x0001 512MB 0xff 256MB dual-sided 256MB dual-sided
*
* BUFF_SC: BUFF_SC in binary: tom: drp: DIMM0: DIMM1:
* 0x3356 0 0 1 1 00 11 01 01 01 10 128MB 0x0c 128MB dual-sided -
* 0xcc56 1 1 0 0 11 00 01 01 01 10 128MB 0xc0 - 128MB dual-sided
* 0x77da 0 1 1 1 01 11 11 01 10 10 128MB 0x0d 128MB single-sided -
* 0xddda 1 1 0 1 11 01 11 01 10 10 128MB 0xd0 - 128MB single-sided
* 0x0001 0 0 0 0 00 00 00 00 00 01 256MB 0xcc 128MB dual-sided 128MB dual-sided
* 0x55c6 0 1 0 1 01 01 11 00 01 10 256MB 0xdd 128MB single-sided 128MB single-sided
* 0x4445 0 1 0 0 01 00 01 00 01 01 256MB 0xcd 128MB single-sided 128MB dual-sided
* 0x1145 0 0 0 1 00 01 01 00 01 01 256MB 0xdc 128MB dual-sided 128MB single-sided
* 0x3356 0 0 1 1 00 11 01 01 01 10 256MB 0x0f 256MB dual-sided -
* 0xcc56 1 1 0 0 11 00 01 01 01 10 256MB 0xf0 - 256MB dual-sided
* 0x0001 0 0 0 0 00 00 00 00 00 01 384MB 0xcf 256MB dual-sided 128MB dual-sided
* 0x0001 0 0 0 0 00 00 00 00 00 01 384MB 0xfc 128MB dual-sided 256MB dual-sided
* 0x1145 0 0 0 1 00 01 01 00 01 01 384MB 0xdf 256MB dual-sided 128MB single-sided
* 0x4445 0 1 0 0 01 00 01 00 01 01 384MB 0xfd 128MB single-sided 256MB dual-sided
* 0x0001 0 0 0 0 00 00 00 00 00 01 512MB 0xff 256MB dual-sided 256MB dual-sided
0:1 00 = 0 DIMMs
01 = 2 dual
1 dual + 1 single
1 single + 1 dual
10 = 1 DIMM only
2 single
2:3 00 = 2 dual sided
01 = 1 dual sided only
2 single sided
1 dual + 1 single
1 single + 1 dual
10 = 1 single sided only
4:5 00 = 2 DIMMs
01 = 1 DIMM only
6:7 00 = 2 dual
01 = 1 dual only
1 dual + 1 single
1 single + 1 dual
11 = 1 single
2 single
8:9 00 = 2 dual
1 single + 1 dual
1 dual only in slot #1
01 = 1 single only in slot #1
1 dual + 1 single
2 single
11 = no dimm in slot #1
10:11 00 = 1 dual only in slot #0
2 dual
1 dual + 1 single
01 = 1 single only in slot #0
2 single
1 single + 1 dual
11 = no dimm in slot #0
12 0 = 1 dual only in slot #1
2 dual
1 single + 1 dual
1 = no dimm in slot #1
1 single
2 single
1 dual + 1 single
13 0 = any in slot #1
1 = no dimm in slot #1
14 0 = 1 dual only in slot #0
2 dual
1 dual + 1 single
1 = no dimm in slot #0
1 single only in slot #0
2 single
1 single + 1 dual
15 0 = no dimm in slot #1
2 DIMMs
1 = no dimm in slot #0
*/