|
@@ -1239,9 +1239,17 @@ static u8 f15_m30h_determine_channel(struct amd64_pvt *pvt, u64 sys_addr,
|
|
|
if (num_dcts_intlv == 2) {
|
|
|
select = (sys_addr >> 8) & 0x3;
|
|
|
channel = select ? 0x3 : 0;
|
|
|
- } else if (num_dcts_intlv == 4)
|
|
|
- channel = (sys_addr >> 8) & 0x7;
|
|
|
-
|
|
|
+ } else if (num_dcts_intlv == 4) {
|
|
|
+ u8 intlv_addr = dct_sel_interleave_addr(pvt);
|
|
|
+ switch (intlv_addr) {
|
|
|
+ case 0x4:
|
|
|
+ channel = (sys_addr >> 8) & 0x3;
|
|
|
+ break;
|
|
|
+ case 0x5:
|
|
|
+ channel = (sys_addr >> 9) & 0x3;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
return channel;
|
|
|
}
|
|
|
|