@@ -537,8 +537,7 @@ static ssize_t radeon_hwmon_show_temp(struct device *dev,
537537 struct device_attribute * attr ,
538538 char * buf )
539539{
540- struct drm_device * ddev = dev_get_drvdata (dev );
541- struct radeon_device * rdev = ddev -> dev_private ;
540+ struct radeon_device * rdev = dev_get_drvdata (dev );
542541 int temp ;
543542
544543 if (rdev -> asic -> pm .get_temperature )
@@ -566,23 +565,14 @@ static ssize_t radeon_hwmon_show_temp_thresh(struct device *dev,
566565 return snprintf (buf , PAGE_SIZE , "%d\n" , temp );
567566}
568567
569- static ssize_t radeon_hwmon_show_name (struct device * dev ,
570- struct device_attribute * attr ,
571- char * buf )
572- {
573- return sprintf (buf , "radeon\n" );
574- }
575-
576568static SENSOR_DEVICE_ATTR (temp1_input , S_IRUGO , radeon_hwmon_show_temp , NULL, 0 ) ;
577569static SENSOR_DEVICE_ATTR (temp1_crit , S_IRUGO , radeon_hwmon_show_temp_thresh , NULL, 0 ) ;
578570static SENSOR_DEVICE_ATTR (temp1_crit_hyst , S_IRUGO , radeon_hwmon_show_temp_thresh , NULL, 1 ) ;
579- static SENSOR_DEVICE_ATTR (name , S_IRUGO , radeon_hwmon_show_name , NULL, 0 ) ;
580571
581572static struct attribute * hwmon_attributes [] = {
582573 & sensor_dev_attr_temp1_input .dev_attr .attr ,
583574 & sensor_dev_attr_temp1_crit .dev_attr .attr ,
584575 & sensor_dev_attr_temp1_crit_hyst .dev_attr .attr ,
585- & sensor_dev_attr_name .dev_attr .attr ,
586576 NULL
587577};
588578
@@ -607,11 +597,15 @@ static const struct attribute_group hwmon_attrgroup = {
607597 .is_visible = hwmon_attributes_visible ,
608598};
609599
600+ static const struct attribute_group * hwmon_groups [] = {
601+ & hwmon_attrgroup ,
602+ NULL
603+ };
604+
610605static int radeon_hwmon_init (struct radeon_device * rdev )
611606{
612607 int err = 0 ;
613-
614- rdev -> pm .int_hwmon_dev = NULL ;
608+ struct device * hwmon_dev ;
615609
616610 switch (rdev -> pm .int_thermal_type ) {
617611 case THERMAL_TYPE_RV6XX :
@@ -624,20 +618,13 @@ static int radeon_hwmon_init(struct radeon_device *rdev)
624618 case THERMAL_TYPE_KV :
625619 if (rdev -> asic -> pm .get_temperature == NULL )
626620 return err ;
627- rdev -> pm .int_hwmon_dev = hwmon_device_register (rdev -> dev );
628- if (IS_ERR (rdev -> pm .int_hwmon_dev )) {
629- err = PTR_ERR (rdev -> pm .int_hwmon_dev );
621+ hwmon_dev = hwmon_device_register_with_groups (rdev -> dev ,
622+ "radeon" , rdev ,
623+ hwmon_groups );
624+ if (IS_ERR (hwmon_dev )) {
625+ err = PTR_ERR (hwmon_dev );
630626 dev_err (rdev -> dev ,
631627 "Unable to register hwmon device: %d\n" , err );
632- break ;
633- }
634- dev_set_drvdata (rdev -> pm .int_hwmon_dev , rdev -> ddev );
635- err = sysfs_create_group (& rdev -> pm .int_hwmon_dev -> kobj ,
636- & hwmon_attrgroup );
637- if (err ) {
638- dev_err (rdev -> dev ,
639- "Unable to create hwmon sysfs file: %d\n" , err );
640- hwmon_device_unregister (rdev -> dev );
641628 }
642629 break ;
643630 default :
@@ -647,14 +634,6 @@ static int radeon_hwmon_init(struct radeon_device *rdev)
647634 return err ;
648635}
649636
650- static void radeon_hwmon_fini (struct radeon_device * rdev )
651- {
652- if (rdev -> pm .int_hwmon_dev ) {
653- sysfs_remove_group (& rdev -> pm .int_hwmon_dev -> kobj , & hwmon_attrgroup );
654- hwmon_device_unregister (rdev -> pm .int_hwmon_dev );
655- }
656- }
657-
658637static void radeon_dpm_thermal_work_handler (struct work_struct * work )
659638{
660639 struct radeon_device * rdev =
@@ -1337,8 +1316,6 @@ static void radeon_pm_fini_old(struct radeon_device *rdev)
13371316
13381317 if (rdev -> pm .power_state )
13391318 kfree (rdev -> pm .power_state );
1340-
1341- radeon_hwmon_fini (rdev );
13421319}
13431320
13441321static void radeon_pm_fini_dpm (struct radeon_device * rdev )
@@ -1358,8 +1335,6 @@ static void radeon_pm_fini_dpm(struct radeon_device *rdev)
13581335
13591336 if (rdev -> pm .power_state )
13601337 kfree (rdev -> pm .power_state );
1361-
1362- radeon_hwmon_fini (rdev );
13631338}
13641339
13651340void radeon_pm_fini (struct radeon_device * rdev )
0 commit comments