1111 * convert raw register values is from https://github.com/ocerman/zenpower.
1212 * The information is not confirmed from chip datasheets, but experiments
1313 * suggest that it provides reasonable temperature values.
14- * - Register addresses to read chip voltage and current are also from
15- * https://github.com/ocerman/zenpower, and not confirmed from chip
16- * datasheets. Current calibration is board specific and not typically
17- * shared by board vendors. For this reason, current values are
18- * normalized to report 1A/LSB for core current and and 0.25A/LSB for SoC
19- * current. Reported values can be adjusted using the sensors configuration
20- * file.
2114 */
2215
2316#include <linux/bitops.h>
@@ -110,10 +103,7 @@ struct k10temp_data {
110103 int temp_offset ;
111104 u32 temp_adjust_mask ;
112105 u32 show_temp ;
113- u32 svi_addr [2 ];
114106 bool is_zen ;
115- bool show_current ;
116- int cfactor [2 ];
117107};
118108
119109#define TCTL_BIT 0
@@ -138,16 +128,6 @@ static const struct tctl_offset tctl_offset_table[] = {
138128 { 0x17 , "AMD Ryzen Threadripper 29" , 27000 }, /* 29{20,50,70,90}[W]X */
139129};
140130
141- static bool is_threadripper (void )
142- {
143- return strstr (boot_cpu_data .x86_model_id , "Threadripper" );
144- }
145-
146- static bool is_epyc (void )
147- {
148- return strstr (boot_cpu_data .x86_model_id , "EPYC" );
149- }
150-
151131static void read_htcreg_pci (struct pci_dev * pdev , u32 * regval )
152132{
153133 pci_read_config_dword (pdev , REG_HARDWARE_THERMAL_CONTROL , regval );
@@ -212,16 +192,6 @@ static const char *k10temp_temp_label[] = {
212192 "Tccd8" ,
213193};
214194
215- static const char * k10temp_in_label [] = {
216- "Vcore" ,
217- "Vsoc" ,
218- };
219-
220- static const char * k10temp_curr_label [] = {
221- "Icore" ,
222- "Isoc" ,
223- };
224-
225195static int k10temp_read_labels (struct device * dev ,
226196 enum hwmon_sensor_types type ,
227197 u32 attr , int channel , const char * * str )
@@ -230,50 +200,6 @@ static int k10temp_read_labels(struct device *dev,
230200 case hwmon_temp :
231201 * str = k10temp_temp_label [channel ];
232202 break ;
233- case hwmon_in :
234- * str = k10temp_in_label [channel ];
235- break ;
236- case hwmon_curr :
237- * str = k10temp_curr_label [channel ];
238- break ;
239- default :
240- return - EOPNOTSUPP ;
241- }
242- return 0 ;
243- }
244-
245- static int k10temp_read_curr (struct device * dev , u32 attr , int channel ,
246- long * val )
247- {
248- struct k10temp_data * data = dev_get_drvdata (dev );
249- u32 regval ;
250-
251- switch (attr ) {
252- case hwmon_curr_input :
253- amd_smn_read (amd_pci_dev_to_node_id (data -> pdev ),
254- data -> svi_addr [channel ], & regval );
255- * val = DIV_ROUND_CLOSEST (data -> cfactor [channel ] *
256- (regval & 0xff ),
257- 1000 );
258- break ;
259- default :
260- return - EOPNOTSUPP ;
261- }
262- return 0 ;
263- }
264-
265- static int k10temp_read_in (struct device * dev , u32 attr , int channel , long * val )
266- {
267- struct k10temp_data * data = dev_get_drvdata (dev );
268- u32 regval ;
269-
270- switch (attr ) {
271- case hwmon_in_input :
272- amd_smn_read (amd_pci_dev_to_node_id (data -> pdev ),
273- data -> svi_addr [channel ], & regval );
274- regval = (regval >> 16 ) & 0xff ;
275- * val = DIV_ROUND_CLOSEST (155000 - regval * 625 , 100 );
276- break ;
277203 default :
278204 return - EOPNOTSUPP ;
279205 }
@@ -332,10 +258,6 @@ static int k10temp_read(struct device *dev, enum hwmon_sensor_types type,
332258 switch (type ) {
333259 case hwmon_temp :
334260 return k10temp_read_temp (dev , attr , channel , val );
335- case hwmon_in :
336- return k10temp_read_in (dev , attr , channel , val );
337- case hwmon_curr :
338- return k10temp_read_curr (dev , attr , channel , val );
339261 default :
340262 return - EOPNOTSUPP ;
341263 }
@@ -384,11 +306,6 @@ static umode_t k10temp_is_visible(const void *_data,
384306 return 0 ;
385307 }
386308 break ;
387- case hwmon_in :
388- case hwmon_curr :
389- if (!data -> show_current )
390- return 0 ;
391- break ;
392309 default :
393310 return 0 ;
394311 }
@@ -588,20 +505,10 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
588505 case 0x8 : /* Zen+ */
589506 case 0x11 : /* Zen APU */
590507 case 0x18 : /* Zen+ APU */
591- data -> show_current = !is_threadripper () && !is_epyc ();
592- data -> svi_addr [0 ] = F17H_M01H_SVI_TEL_PLANE0 ;
593- data -> svi_addr [1 ] = F17H_M01H_SVI_TEL_PLANE1 ;
594- data -> cfactor [0 ] = F17H_M01H_CFACTOR_ICORE ;
595- data -> cfactor [1 ] = F17H_M01H_CFACTOR_ISOC ;
596508 k10temp_get_ccd_support (pdev , data , 4 );
597509 break ;
598510 case 0x31 : /* Zen2 Threadripper */
599511 case 0x71 : /* Zen2 */
600- data -> show_current = !is_threadripper () && !is_epyc ();
601- data -> cfactor [0 ] = F17H_M31H_CFACTOR_ICORE ;
602- data -> cfactor [1 ] = F17H_M31H_CFACTOR_ISOC ;
603- data -> svi_addr [0 ] = F17H_M31H_SVI_TEL_PLANE0 ;
604- data -> svi_addr [1 ] = F17H_M31H_SVI_TEL_PLANE1 ;
605512 k10temp_get_ccd_support (pdev , data , 8 );
606513 break ;
607514 }
@@ -613,11 +520,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
613520
614521 switch (boot_cpu_data .x86_model ) {
615522 case 0x0 ... 0x1 : /* Zen3 */
616- data -> show_current = true;
617- data -> svi_addr [0 ] = F19H_M01_SVI_TEL_PLANE0 ;
618- data -> svi_addr [1 ] = F19H_M01_SVI_TEL_PLANE1 ;
619- data -> cfactor [0 ] = F19H_M01H_CFACTOR_ICORE ;
620- data -> cfactor [1 ] = F19H_M01H_CFACTOR_ISOC ;
621523 k10temp_get_ccd_support (pdev , data , 8 );
622524 break ;
623525 }
0 commit comments