@@ -65,10 +65,11 @@ static DEFINE_MUTEX(nb_smu_ind_mutex);
65
65
#define F15H_M60H_HARDWARE_TEMP_CTRL_OFFSET 0xd8200c64
66
66
#define F15H_M60H_REPORTED_TEMP_CTRL_OFFSET 0xd8200ca4
67
67
68
- /* Common for Zen CPU families (Family 17h and 18h) */
69
- #define ZEN_REPORTED_TEMP_CTRL_OFFSET 0x00059800
68
+ /* Common for Zen CPU families (Family 17h and 18h and 19h ) */
69
+ #define ZEN_REPORTED_TEMP_CTRL_BASE 0x00059800
70
70
71
- #define ZEN_CCD_TEMP (x ) (0x00059954 + ((x) * 4))
71
+ #define ZEN_CCD_TEMP (offset , x ) (ZEN_REPORTED_TEMP_CTRL_BASE + \
72
+ (offset) + ((x) * 4))
72
73
#define ZEN_CCD_TEMP_VALID BIT(11)
73
74
#define ZEN_CCD_TEMP_MASK GENMASK(10, 0)
74
75
@@ -103,6 +104,7 @@ struct k10temp_data {
103
104
u32 temp_adjust_mask ;
104
105
u32 show_temp ;
105
106
bool is_zen ;
107
+ u32 ccd_offset ;
106
108
};
107
109
108
110
#define TCTL_BIT 0
@@ -163,7 +165,7 @@ static void read_tempreg_nb_f15(struct pci_dev *pdev, u32 *regval)
163
165
static void read_tempreg_nb_zen (struct pci_dev * pdev , u32 * regval )
164
166
{
165
167
amd_smn_read (amd_pci_dev_to_node_id (pdev ),
166
- ZEN_REPORTED_TEMP_CTRL_OFFSET , regval );
168
+ ZEN_REPORTED_TEMP_CTRL_BASE , regval );
167
169
}
168
170
169
171
static long get_raw_temp (struct k10temp_data * data )
@@ -226,7 +228,8 @@ static int k10temp_read_temp(struct device *dev, u32 attr, int channel,
226
228
break ;
227
229
case 2 ... 9 : /* Tccd{1-8} */
228
230
amd_smn_read (amd_pci_dev_to_node_id (data -> pdev ),
229
- ZEN_CCD_TEMP (channel - 2 ), & regval );
231
+ ZEN_CCD_TEMP (data -> ccd_offset , channel - 2 ),
232
+ & regval );
230
233
* val = (regval & ZEN_CCD_TEMP_MASK ) * 125 - 49000 ;
231
234
break ;
232
235
default :
@@ -387,7 +390,7 @@ static void k10temp_get_ccd_support(struct pci_dev *pdev,
387
390
388
391
for (i = 0 ; i < limit ; i ++ ) {
389
392
amd_smn_read (amd_pci_dev_to_node_id (pdev ),
390
- ZEN_CCD_TEMP (i ), & regval );
393
+ ZEN_CCD_TEMP (data -> ccd_offset , i ), & regval );
391
394
if (regval & ZEN_CCD_TEMP_VALID )
392
395
data -> show_temp |= BIT (TCCD_BIT (i ));
393
396
}
@@ -433,12 +436,14 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
433
436
case 0x8 : /* Zen+ */
434
437
case 0x11 : /* Zen APU */
435
438
case 0x18 : /* Zen+ APU */
439
+ data -> ccd_offset = 0x154 ;
436
440
k10temp_get_ccd_support (pdev , data , 4 );
437
441
break ;
438
442
case 0x31 : /* Zen2 Threadripper */
439
443
case 0x60 : /* Renoir */
440
444
case 0x68 : /* Lucienne */
441
445
case 0x71 : /* Zen2 */
446
+ data -> ccd_offset = 0x154 ;
442
447
k10temp_get_ccd_support (pdev , data , 8 );
443
448
break ;
444
449
}
@@ -451,6 +456,7 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
451
456
case 0x0 ... 0x1 : /* Zen3 SP3/TR */
452
457
case 0x21 : /* Zen3 Ryzen Desktop */
453
458
case 0x50 ... 0x5f : /* Green Sardine */
459
+ data -> ccd_offset = 0x154 ;
454
460
k10temp_get_ccd_support (pdev , data , 8 );
455
461
break ;
456
462
}
0 commit comments