diff options
Diffstat (limited to 'drivers/hwmon/sis5595.c')
| -rw-r--r-- | drivers/hwmon/sis5595.c | 61 |
1 files changed, 26 insertions, 35 deletions
diff --git a/drivers/hwmon/sis5595.c b/drivers/hwmon/sis5595.c index 6c4d8eb9b7c..3532026e25d 100644 --- a/drivers/hwmon/sis5595.c +++ b/drivers/hwmon/sis5595.c @@ -6,7 +6,7 @@ * Kyösti Mälkki <kmalkki@cc.hut.fi>, and * Mark D. Studebaker <mdsxyz123@yahoo.com> * Ported to Linux 2.6 by Aurelien Jarno <aurelien@aurel32.net> with - * the help of Jean Delvare <khali@linux-fr.org> + * the help of Jean Delvare <jdelvare@suse.de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -132,7 +132,7 @@ static struct platform_device *pdev; */ static inline u8 IN_TO_REG(unsigned long val) { - unsigned long nval = SENSORS_LIMIT(val, 0, 4080); + unsigned long nval = clamp_val(val, 0, 4080); return (nval + 8) / 16; } #define IN_FROM_REG(val) ((val) * 16) @@ -141,7 +141,9 @@ static inline u8 FAN_TO_REG(long rpm, int div) { if (rpm <= 0) return 255; - return SENSORS_LIMIT((1350000 + rpm * div / 2) / (rpm * div), 1, 254); + if (rpm > 1350000) + return 1; + return clamp_val((1350000 + rpm * div / 2) / (rpm * div), 1, 254); } static inline int FAN_FROM_REG(u8 val, int div) @@ -159,7 +161,7 @@ static inline int TEMP_FROM_REG(s8 val) } static inline s8 TEMP_TO_REG(int val) { - int nval = SENSORS_LIMIT(val, -54120, 157530) ; + int nval = clamp_val(val, -54120, 157530) ; return nval < 0 ? (nval - 5212 - 415) / 830 : (nval - 5212 + 415) / 830; } @@ -204,7 +206,7 @@ struct sis5595_data { static struct pci_dev *s_bridge; /* pointer to the (only) sis5595 */ static int sis5595_probe(struct platform_device *pdev); -static int __devexit sis5595_remove(struct platform_device *pdev); +static int sis5595_remove(struct platform_device *pdev); static int sis5595_read_value(struct sis5595_data *data, u8 reg); static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value); @@ -217,7 +219,7 @@ static struct platform_driver sis5595_driver = { .name = "sis5595", }, .probe = sis5595_probe, - .remove = __devexit_p(sis5595_remove), + .remove = sis5595_remove, }; /* 4 Voltages */ @@ -456,8 +458,9 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *da, data->fan_div[nr] = 3; break; default: - dev_err(dev, "fan_div value %ld not " - "supported. Choose one of 1, 2, 4 or 8!\n", val); + dev_err(dev, + "fan_div value %ld not supported. Choose one of 1, 2, 4 or 8!\n", + val); mutex_unlock(&data->update_lock); return -EINVAL; } @@ -583,7 +586,7 @@ static const struct attribute_group sis5595_group_temp1 = { }; /* This is called when the module is loaded */ -static int __devinit sis5595_probe(struct platform_device *pdev) +static int sis5595_probe(struct platform_device *pdev) { int err = 0; int i; @@ -593,17 +596,14 @@ static int __devinit sis5595_probe(struct platform_device *pdev) /* Reserve the ISA region */ res = platform_get_resource(pdev, IORESOURCE_IO, 0); - if (!request_region(res->start, SIS5595_EXTENT, - sis5595_driver.driver.name)) { - err = -EBUSY; - goto exit; - } + if (!devm_request_region(&pdev->dev, res->start, SIS5595_EXTENT, + sis5595_driver.driver.name)) + return -EBUSY; - data = kzalloc(sizeof(struct sis5595_data), GFP_KERNEL); - if (!data) { - err = -ENOMEM; - goto exit_release; - } + data = devm_kzalloc(&pdev->dev, sizeof(struct sis5595_data), + GFP_KERNEL); + if (!data) + return -ENOMEM; mutex_init(&data->lock); mutex_init(&data->update_lock); @@ -636,7 +636,7 @@ static int __devinit sis5595_probe(struct platform_device *pdev) /* Register sysfs hooks */ err = sysfs_create_group(&pdev->dev.kobj, &sis5595_group); if (err) - goto exit_free; + return err; if (data->maxins == 4) { err = sysfs_create_group(&pdev->dev.kobj, &sis5595_group_in4); if (err) @@ -659,15 +659,10 @@ exit_remove_files: sysfs_remove_group(&pdev->dev.kobj, &sis5595_group); sysfs_remove_group(&pdev->dev.kobj, &sis5595_group_in4); sysfs_remove_group(&pdev->dev.kobj, &sis5595_group_temp1); -exit_free: - kfree(data); -exit_release: - release_region(res->start, SIS5595_EXTENT); -exit: return err; } -static int __devexit sis5595_remove(struct platform_device *pdev) +static int sis5595_remove(struct platform_device *pdev) { struct sis5595_data *data = platform_get_drvdata(pdev); @@ -676,10 +671,6 @@ static int __devexit sis5595_remove(struct platform_device *pdev) sysfs_remove_group(&pdev->dev.kobj, &sis5595_group_in4); sysfs_remove_group(&pdev->dev.kobj, &sis5595_group_temp1); - release_region(data->addr, SIS5595_EXTENT); - platform_set_drvdata(pdev, NULL); - kfree(data); - return 0; } @@ -705,7 +696,7 @@ static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value) } /* Called when we have found a new SIS5595. */ -static void __devinit sis5595_init_device(struct sis5595_data *data) +static void sis5595_init_device(struct sis5595_data *data) { u8 config = sis5595_read_value(data, SIS5595_REG_CONFIG); if (!(config & 0x01)) @@ -763,14 +754,14 @@ static struct sis5595_data *sis5595_update_device(struct device *dev) return data; } -static DEFINE_PCI_DEVICE_TABLE(sis5595_pci_ids) = { +static const struct pci_device_id sis5595_pci_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) }, { 0, } }; MODULE_DEVICE_TABLE(pci, sis5595_pci_ids); -static int blacklist[] __devinitdata = { +static int blacklist[] = { PCI_DEVICE_ID_SI_540, PCI_DEVICE_ID_SI_550, PCI_DEVICE_ID_SI_630, @@ -786,7 +777,7 @@ static int blacklist[] __devinitdata = { PCI_DEVICE_ID_SI_5598, 0 }; -static int __devinit sis5595_device_add(unsigned short address) +static int sis5595_device_add(unsigned short address) { struct resource res = { .start = address, @@ -827,7 +818,7 @@ exit: return err; } -static int __devinit sis5595_pci_probe(struct pci_dev *dev, +static int sis5595_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) { u16 address; |
