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>
@@ -109,10 +102,7 @@ struct k10temp_data {
109102 int temp_offset ;
110103 u32 temp_adjust_mask ;
111104 u32 show_temp ;
112- u32 svi_addr [2 ];
113105 bool is_zen ;
114- bool show_current ;
115- int cfactor [2 ];
116106};
117107
118108#define TCTL_BIT 0
@@ -137,16 +127,6 @@ static const struct tctl_offset tctl_offset_table[] = {
137127 { 0x17 , "AMD Ryzen Threadripper 29" , 27000 }, /* 29{20,50,70,90}[W]X */
138128};
139129
140- static bool is_threadripper (void )
141- {
142- return strstr (boot_cpu_data .x86_model_id , "Threadripper" );
143- }
144-
145- static bool is_epyc (void )
146- {
147- return strstr (boot_cpu_data .x86_model_id , "EPYC" );
148- }
149-
150130static void read_htcreg_pci (struct pci_dev * pdev , u32 * regval )
151131{
152132 pci_read_config_dword (pdev , REG_HARDWARE_THERMAL_CONTROL , regval );
@@ -211,16 +191,6 @@ static const char *k10temp_temp_label[] = {
211191 "Tccd8" ,
212192};
213193
214- static const char * k10temp_in_label [] = {
215- "Vcore" ,
216- "Vsoc" ,
217- };
218-
219- static const char * k10temp_curr_label [] = {
220- "Icore" ,
221- "Isoc" ,
222- };
223-
224194static int k10temp_read_labels (struct device * dev ,
225195 enum hwmon_sensor_types type ,
226196 u32 attr , int channel , const char * * str )
@@ -229,50 +199,6 @@ static int k10temp_read_labels(struct device *dev,
229199 case hwmon_temp :
230200 * str = k10temp_temp_label [channel ];
231201 break ;
232- case hwmon_in :
233- * str = k10temp_in_label [channel ];
234- break ;
235- case hwmon_curr :
236- * str = k10temp_curr_label [channel ];
237- break ;
238- default :
239- return - EOPNOTSUPP ;
240- }
241- return 0 ;
242- }
243-
244- static int k10temp_read_curr (struct device * dev , u32 attr , int channel ,
245- long * val )
246- {
247- struct k10temp_data * data = dev_get_drvdata (dev );
248- u32 regval ;
249-
250- switch (attr ) {
251- case hwmon_curr_input :
252- amd_smn_read (amd_pci_dev_to_node_id (data -> pdev ),
253- data -> svi_addr [channel ], & regval );
254- * val = DIV_ROUND_CLOSEST (data -> cfactor [channel ] *
255- (regval & 0xff ),
256- 1000 );
257- break ;
258- default :
259- return - EOPNOTSUPP ;
260- }
261- return 0 ;
262- }
263-
264- static int k10temp_read_in (struct device * dev , u32 attr , int channel , long * val )
265- {
266- struct k10temp_data * data = dev_get_drvdata (dev );
267- u32 regval ;
268-
269- switch (attr ) {
270- case hwmon_in_input :
271- amd_smn_read (amd_pci_dev_to_node_id (data -> pdev ),
272- data -> svi_addr [channel ], & regval );
273- regval = (regval >> 16 ) & 0xff ;
274- * val = DIV_ROUND_CLOSEST (155000 - regval * 625 , 100 );
275- break ;
276202 default :
277203 return - EOPNOTSUPP ;
278204 }
@@ -331,10 +257,6 @@ static int k10temp_read(struct device *dev, enum hwmon_sensor_types type,
331257 switch (type ) {
332258 case hwmon_temp :
333259 return k10temp_read_temp (dev , attr , channel , val );
334- case hwmon_in :
335- return k10temp_read_in (dev , attr , channel , val );
336- case hwmon_curr :
337- return k10temp_read_curr (dev , attr , channel , val );
338260 default :
339261 return - EOPNOTSUPP ;
340262 }
@@ -383,11 +305,6 @@ static umode_t k10temp_is_visible(const void *_data,
383305 return 0 ;
384306 }
385307 break ;
386- case hwmon_in :
387- case hwmon_curr :
388- if (!data -> show_current )
389- return 0 ;
390- break ;
391308 default :
392309 return 0 ;
393310 }
@@ -517,20 +434,10 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
517434 case 0x8 : /* Zen+ */
518435 case 0x11 : /* Zen APU */
519436 case 0x18 : /* Zen+ APU */
520- data -> show_current = !is_threadripper () && !is_epyc ();
521- data -> svi_addr [0 ] = F17H_M01H_SVI_TEL_PLANE0 ;
522- data -> svi_addr [1 ] = F17H_M01H_SVI_TEL_PLANE1 ;
523- data -> cfactor [0 ] = F17H_M01H_CFACTOR_ICORE ;
524- data -> cfactor [1 ] = F17H_M01H_CFACTOR_ISOC ;
525437 k10temp_get_ccd_support (pdev , data , 4 );
526438 break ;
527439 case 0x31 : /* Zen2 Threadripper */
528440 case 0x71 : /* Zen2 */
529- data -> show_current = !is_threadripper () && !is_epyc ();
530- data -> cfactor [0 ] = F17H_M31H_CFACTOR_ICORE ;
531- data -> cfactor [1 ] = F17H_M31H_CFACTOR_ISOC ;
532- data -> svi_addr [0 ] = F17H_M31H_SVI_TEL_PLANE0 ;
533- data -> svi_addr [1 ] = F17H_M31H_SVI_TEL_PLANE1 ;
534441 k10temp_get_ccd_support (pdev , data , 8 );
535442 break ;
536443 }
@@ -542,11 +449,6 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
542449
543450 switch (boot_cpu_data .x86_model ) {
544451 case 0x0 ... 0x1 : /* Zen3 */
545- data -> show_current = true;
546- data -> svi_addr [0 ] = F19H_M01_SVI_TEL_PLANE0 ;
547- data -> svi_addr [1 ] = F19H_M01_SVI_TEL_PLANE1 ;
548- data -> cfactor [0 ] = F19H_M01H_CFACTOR_ICORE ;
549- data -> cfactor [1 ] = F19H_M01H_CFACTOR_ISOC ;
550452 k10temp_get_ccd_support (pdev , data , 8 );
551453 break ;
552454 }
0 commit comments