diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 15:07:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 15:07:28 -0400 |
commit | 36f021b579d195cdc5fa6f3e2bab198b4bf70643 (patch) | |
tree | 96d3c97f5e5214d2aa7151c12a22a7eb345dbaa1 /drivers/hwmon/f71805f.c | |
parent | 215d06780d13fd7de629b02b61b7b7bf88ce5039 (diff) | |
parent | 1d72acf91abb327e25137ad2e371c1a788b34e45 (diff) |
Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
* 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: (32 commits)
Use menuconfig objects - hwmon
hwmon/smsc47b397: Use dynamic sysfs callbacks
hwmon/smsc47b397: Convert to a platform driver
hwmon/w83781d: Deprecate W83627HF support
hwmon/w83781d: Use dynamic sysfs callbacks
hwmon/w83781d: Be less i2c_client-centric
hwmon/w83781d: Clean up conversion macros
hwmon/w83781d: No longer use i2c-isa
hwmon/ams: Do not print error on systems without apple motion sensor
hwmon/ams: Fix I2C read retry logic
hwmon: New AD7416, AD7417 and AD7418 driver
hwmon/coretemp: Add documentation
hwmon: New coretemp driver
i386: Use functions from library in msr driver
i386: Add safe variants of rdmsr_on_cpu and wrmsr_on_cpu
hwmon/lm75: Use dynamic sysfs callbacks
hwmon/lm78: Use dynamic sysfs callbacks
hwmon/lm78: Be less i2c_client-centric
hwmon/lm78: No longer use i2c-isa
hwmon: New max6650 driver
...
Diffstat (limited to 'drivers/hwmon/f71805f.c')
-rw-r--r-- | drivers/hwmon/f71805f.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/hwmon/f71805f.c b/drivers/hwmon/f71805f.c index 7c2973487122..cdbe309b8fc4 100644 --- a/drivers/hwmon/f71805f.c +++ b/drivers/hwmon/f71805f.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/err.h> | 35 | #include <linux/err.h> |
36 | #include <linux/mutex.h> | 36 | #include <linux/mutex.h> |
37 | #include <linux/sysfs.h> | 37 | #include <linux/sysfs.h> |
38 | #include <linux/ioport.h> | ||
38 | #include <asm/io.h> | 39 | #include <asm/io.h> |
39 | 40 | ||
40 | static struct platform_device *pdev; | 41 | static struct platform_device *pdev; |
@@ -1140,6 +1141,13 @@ static int __devinit f71805f_probe(struct platform_device *pdev) | |||
1140 | } | 1141 | } |
1141 | 1142 | ||
1142 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | 1143 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); |
1144 | if (!request_region(res->start + ADDR_REG_OFFSET, 2, DRVNAME)) { | ||
1145 | err = -EBUSY; | ||
1146 | dev_err(&pdev->dev, "Failed to request region 0x%lx-0x%lx\n", | ||
1147 | (unsigned long)(res->start + ADDR_REG_OFFSET), | ||
1148 | (unsigned long)(res->start + ADDR_REG_OFFSET + 1)); | ||
1149 | goto exit_free; | ||
1150 | } | ||
1143 | data->addr = res->start; | 1151 | data->addr = res->start; |
1144 | data->name = names[sio_data->kind]; | 1152 | data->name = names[sio_data->kind]; |
1145 | mutex_init(&data->update_lock); | 1153 | mutex_init(&data->update_lock); |
@@ -1165,7 +1173,7 @@ static int __devinit f71805f_probe(struct platform_device *pdev) | |||
1165 | 1173 | ||
1166 | /* Register sysfs interface files */ | 1174 | /* Register sysfs interface files */ |
1167 | if ((err = sysfs_create_group(&pdev->dev.kobj, &f71805f_group))) | 1175 | if ((err = sysfs_create_group(&pdev->dev.kobj, &f71805f_group))) |
1168 | goto exit_free; | 1176 | goto exit_release_region; |
1169 | if (data->has_in & (1 << 4)) { /* in4 */ | 1177 | if (data->has_in & (1 << 4)) { /* in4 */ |
1170 | if ((err = sysfs_create_group(&pdev->dev.kobj, | 1178 | if ((err = sysfs_create_group(&pdev->dev.kobj, |
1171 | &f71805f_group_optin[0]))) | 1179 | &f71805f_group_optin[0]))) |
@@ -1219,6 +1227,8 @@ exit_remove_files: | |||
1219 | for (i = 0; i < 4; i++) | 1227 | for (i = 0; i < 4; i++) |
1220 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_optin[i]); | 1228 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_optin[i]); |
1221 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_pwm_freq); | 1229 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_pwm_freq); |
1230 | exit_release_region: | ||
1231 | release_region(res->start + ADDR_REG_OFFSET, 2); | ||
1222 | exit_free: | 1232 | exit_free: |
1223 | platform_set_drvdata(pdev, NULL); | 1233 | platform_set_drvdata(pdev, NULL); |
1224 | kfree(data); | 1234 | kfree(data); |
@@ -1229,6 +1239,7 @@ exit: | |||
1229 | static int __devexit f71805f_remove(struct platform_device *pdev) | 1239 | static int __devexit f71805f_remove(struct platform_device *pdev) |
1230 | { | 1240 | { |
1231 | struct f71805f_data *data = platform_get_drvdata(pdev); | 1241 | struct f71805f_data *data = platform_get_drvdata(pdev); |
1242 | struct resource *res; | ||
1232 | int i; | 1243 | int i; |
1233 | 1244 | ||
1234 | platform_set_drvdata(pdev, NULL); | 1245 | platform_set_drvdata(pdev, NULL); |
@@ -1239,6 +1250,9 @@ static int __devexit f71805f_remove(struct platform_device *pdev) | |||
1239 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_pwm_freq); | 1250 | sysfs_remove_group(&pdev->dev.kobj, &f71805f_group_pwm_freq); |
1240 | kfree(data); | 1251 | kfree(data); |
1241 | 1252 | ||
1253 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | ||
1254 | release_region(res->start + ADDR_REG_OFFSET, 2); | ||
1255 | |||
1242 | return 0; | 1256 | return 0; |
1243 | } | 1257 | } |
1244 | 1258 | ||