git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hwmon: (w83627hf) Fix setting fan min right after driver load
[safe/jmp/linux-2.6]
/
drivers
/
hwmon
/
applesmc.c
diff --git
a/drivers/hwmon/applesmc.c
b/drivers/hwmon/applesmc.c
index
0c16067
..
21ff8e1
100644
(file)
--- a/
drivers/hwmon/applesmc.c
+++ b/
drivers/hwmon/applesmc.c
@@
-79,11
+79,15
@@
/*
* Temperature sensors keys (sp78 - 2 bytes).
/*
* Temperature sensors keys (sp78 - 2 bytes).
- * First set for Macbook(Pro), second for Macmini.
*/
static const char* temperature_sensors_sets[][13] = {
*/
static const char* temperature_sensors_sets[][13] = {
+/* Set 0: Macbook Pro */
{ "TA0P", "TB0T", "TC0D", "TC0P", "TG0H", "TG0P", "TG0T", "Th0H",
"Th1H", "Tm0P", "Ts0P", "Ts1P", NULL },
{ "TA0P", "TB0T", "TC0D", "TC0P", "TG0H", "TG0P", "TG0T", "Th0H",
"Th1H", "Tm0P", "Ts0P", "Ts1P", NULL },
+/* Set 1: Macbook set */
+ { "TB0T", "TC0D", "TC0P", "TM0P", "TN0P", "TN1P", "Th0H", "Th0S",
+ "Th1H", "Ts0P", NULL },
+/* Set 2: Macmini set */
{ "TC0D", "TC0P", NULL }
};
{ "TC0D", "TC0P", NULL }
};
@@
-123,7
+127,7
@@
static s16 rest_x;
static s16 rest_y;
static struct timer_list applesmc_timer;
static struct input_dev *applesmc_idev;
static s16 rest_y;
static struct timer_list applesmc_timer;
static struct input_dev *applesmc_idev;
-static struct
class_device *hwmon_class
_dev;
+static struct
device *hwmon
_dev;
/* Indicates whether this computer has an accelerometer. */
static unsigned int applesmc_accelerometer;
/* Indicates whether this computer has an accelerometer. */
static unsigned int applesmc_accelerometer;
@@
-491,6
+495,12
@@
out:
/* Sysfs Files */
/* Sysfs Files */
+static ssize_t applesmc_name_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ return snprintf(buf, PAGE_SIZE, "applesmc\n");
+}
+
static ssize_t applesmc_position_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
static ssize_t applesmc_position_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@
-913,6
+923,8
@@
static struct led_classdev applesmc_backlight = {
.brightness_set = applesmc_brightness_set,
};
.brightness_set = applesmc_brightness_set,
};
+static DEVICE_ATTR(name, 0444, applesmc_name_show, NULL);
+
static DEVICE_ATTR(position, 0444, applesmc_position_show, NULL);
static DEVICE_ATTR(calibrate, 0644,
applesmc_calibrate_show, applesmc_calibrate_store);
static DEVICE_ATTR(position, 0444, applesmc_position_show, NULL);
static DEVICE_ATTR(calibrate, 0644,
applesmc_calibrate_show, applesmc_calibrate_store);
@@
-1142,10
+1154,10
@@
static void applesmc_release_accelerometer(void)
static __initdata struct dmi_match_data applesmc_dmi_data[] = {
/* MacBook Pro: accelerometer, backlight and temperature set 0 */
{ .accelerometer = 1, .light = 1, .temperature_set = 0 },
static __initdata struct dmi_match_data applesmc_dmi_data[] = {
/* MacBook Pro: accelerometer, backlight and temperature set 0 */
{ .accelerometer = 1, .light = 1, .temperature_set = 0 },
-/* MacBook: accelerometer and temperature set
0
*/
- { .accelerometer = 1, .light = 0, .temperature_set =
0
},
-/* Mac
Book: temperature set 1
*/
- { .accelerometer = 0, .light = 0, .temperature_set =
1 }
+/* MacBook: accelerometer and temperature set
1
*/
+ { .accelerometer = 1, .light = 0, .temperature_set =
1
},
+/* Mac
Mini: temperature set 2
*/
+ { .accelerometer = 0, .light = 0, .temperature_set =
2 },
};
/* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
};
/* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
@@
-1197,10
+1209,14
@@
static int __init applesmc_init(void)
goto out_driver;
}
goto out_driver;
}
+ ret = sysfs_create_file(&pdev->dev.kobj, &dev_attr_name.attr);
+ if (ret)
+ goto out_device;
+
/* Create key enumeration sysfs files */
ret = sysfs_create_group(&pdev->dev.kobj, &key_enumeration_group);
if (ret)
/* Create key enumeration sysfs files */
ret = sysfs_create_group(&pdev->dev.kobj, &key_enumeration_group);
if (ret)
- goto out_
devic
e;
+ goto out_
nam
e;
/* create fan files */
count = applesmc_get_fan_count();
/* create fan files */
count = applesmc_get_fan_count();
@@
-1271,9
+1287,9
@@
static int __init applesmc_init(void)
goto out_light_wq;
}
goto out_light_wq;
}
- hwmon_
class_
dev = hwmon_device_register(&pdev->dev);
- if (IS_ERR(hwmon_
class_
dev)) {
- ret = PTR_ERR(hwmon_
class_
dev);
+ hwmon_dev = hwmon_device_register(&pdev->dev);
+ if (IS_ERR(hwmon_dev)) {
+ ret = PTR_ERR(hwmon_dev);
goto out_light_ledclass;
}
goto out_light_ledclass;
}
@@
-1300,6
+1316,8
@@
out_fan_1:
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[1]);
out_key_enumeration:
sysfs_remove_group(&pdev->dev.kobj, &key_enumeration_group);
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[1]);
out_key_enumeration:
sysfs_remove_group(&pdev->dev.kobj, &key_enumeration_group);
+out_name:
+ sysfs_remove_file(&pdev->dev.kobj, &dev_attr_name.attr);
out_device:
platform_device_unregister(pdev);
out_driver:
out_device:
platform_device_unregister(pdev);
out_driver:
@@
-1313,7
+1331,7
@@
out:
static void __exit applesmc_exit(void)
{
static void __exit applesmc_exit(void)
{
- hwmon_device_unregister(hwmon_
class_
dev);
+ hwmon_device_unregister(hwmon_dev);
if (applesmc_light) {
led_classdev_unregister(&applesmc_backlight);
destroy_workqueue(applesmc_led_wq);
if (applesmc_light) {
led_classdev_unregister(&applesmc_backlight);
destroy_workqueue(applesmc_led_wq);
@@
-1325,6
+1343,7
@@
static void __exit applesmc_exit(void)
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[0]);
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[1]);
sysfs_remove_group(&pdev->dev.kobj, &key_enumeration_group);
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[0]);
sysfs_remove_group(&pdev->dev.kobj, &fan_attribute_groups[1]);
sysfs_remove_group(&pdev->dev.kobj, &key_enumeration_group);
+ sysfs_remove_file(&pdev->dev.kobj, &dev_attr_name.attr);
platform_device_unregister(pdev);
platform_driver_unregister(&applesmc_driver);
release_region(APPLESMC_DATA_PORT, APPLESMC_NR_PORTS);
platform_device_unregister(pdev);
platform_driver_unregister(&applesmc_driver);
release_region(APPLESMC_DATA_PORT, APPLESMC_NR_PORTS);