aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon')
-rw-r--r--drivers/hwmon/f71882fg.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c
index cdd16d4966c3..1cfd2231677a 100644
--- a/drivers/hwmon/f71882fg.c
+++ b/drivers/hwmon/f71882fg.c
@@ -1507,12 +1507,31 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
1507 mutex_init(&data->update_lock); 1507 mutex_init(&data->update_lock);
1508 platform_set_drvdata(pdev, data); 1508 platform_set_drvdata(pdev, data);
1509 1509
1510 start_reg = f71882fg_read8(data, F71882FG_REG_START);
1511 if (!(start_reg & 0x03)) {
1512 dev_warn(&pdev->dev, "Hardware monitoring not activated\n");
1513 err = -ENODEV;
1514 goto exit_free;
1515 }
1516
1517 /* If it is a 71862 and the fan / pwm part is enabled sanity check
1518 the pwm settings */
1519 if (data->type == f71862fg && (start_reg & 0x02)) {
1520 u8 reg = f71882fg_read8(data, F71882FG_REG_PWM_ENABLE);
1521 if ((reg & 0x15) != 0x15) {
1522 dev_err(&pdev->dev,
1523 "Invalid (reserved) pwm settings: 0x%02x\n",
1524 (unsigned int)reg);
1525 err = -ENODEV;
1526 goto exit_free;
1527 }
1528 }
1529
1510 /* Register sysfs interface files */ 1530 /* Register sysfs interface files */
1511 err = device_create_file(&pdev->dev, &dev_attr_name); 1531 err = device_create_file(&pdev->dev, &dev_attr_name);
1512 if (err) 1532 if (err)
1513 goto exit_unregister_sysfs; 1533 goto exit_unregister_sysfs;
1514 1534
1515 start_reg = f71882fg_read8(data, F71882FG_REG_START);
1516 if (start_reg & 0x01) { 1535 if (start_reg & 0x01) {
1517 err = f71882fg_create_sysfs_files(pdev, f718x2fg_in_temp_attr, 1536 err = f71882fg_create_sysfs_files(pdev, f718x2fg_in_temp_attr,
1518 ARRAY_SIZE(f718x2fg_in_temp_attr)); 1537 ARRAY_SIZE(f718x2fg_in_temp_attr));
@@ -1558,7 +1577,9 @@ static int __devinit f71882fg_probe(struct platform_device *pdev)
1558 1577
1559exit_unregister_sysfs: 1578exit_unregister_sysfs:
1560 f71882fg_remove(pdev); /* Will unregister the sysfs files for us */ 1579 f71882fg_remove(pdev); /* Will unregister the sysfs files for us */
1561 1580 return err; /* f71882fg_remove() also frees our data */
1581exit_free:
1582 kfree(data);
1562 return err; 1583 return err;
1563} 1584}
1564 1585
@@ -1600,8 +1621,6 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address,
1600{ 1621{
1601 int err = -ENODEV; 1622 int err = -ENODEV;
1602 u16 devid; 1623 u16 devid;
1603 u8 reg;
1604 struct f71882fg_data data;
1605 1624
1606 superio_enter(sioaddr); 1625 superio_enter(sioaddr);
1607 1626
@@ -1638,25 +1657,6 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address,
1638 } 1657 }
1639 *address &= ~(REGION_LENGTH - 1); /* Ignore 3 LSB */ 1658 *address &= ~(REGION_LENGTH - 1); /* Ignore 3 LSB */
1640 1659
1641 data.addr = *address;
1642 reg = f71882fg_read8(&data, F71882FG_REG_START);
1643 if (!(reg & 0x03)) {
1644 printk(KERN_WARNING DRVNAME
1645 ": Hardware monitoring not activated\n");
1646 goto exit;
1647 }
1648
1649 /* If it is a 71862 and the fan / pwm part is enabled sanity check
1650 the pwm settings */
1651 if (sio_data->type == f71862fg && (reg & 0x02)) {
1652 reg = f71882fg_read8(&data, F71882FG_REG_PWM_ENABLE);
1653 if ((reg & 0x15) != 0x15) {
1654 printk(KERN_ERR DRVNAME
1655 ": Invalid (reserved) pwm settings: 0x%02x\n",
1656 (unsigned int)reg);
1657 goto exit;
1658 }
1659 }
1660 err = 0; 1660 err = 0;
1661 printk(KERN_INFO DRVNAME ": Found %s chip at %#x, revision %d\n", 1661 printk(KERN_INFO DRVNAME ": Found %s chip at %#x, revision %d\n",
1662 f71882fg_names[sio_data->type], (unsigned int)*address, 1662 f71882fg_names[sio_data->type], (unsigned int)*address,