diff options
-rw-r--r-- | Documentation/hwmon/via686a | 17 | ||||
-rw-r--r-- | drivers/hwmon/via686a.c | 18 |
2 files changed, 26 insertions, 9 deletions
diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a index b82014cb7c53..a936fb3824b2 100644 --- a/Documentation/hwmon/via686a +++ b/Documentation/hwmon/via686a | |||
@@ -18,8 +18,9 @@ Authors: | |||
18 | Module Parameters | 18 | Module Parameters |
19 | ----------------- | 19 | ----------------- |
20 | 20 | ||
21 | force_addr=0xaddr Set the I/O base address. Useful for Asus A7V boards | 21 | force_addr=0xaddr Set the I/O base address. Useful for boards that |
22 | that don't set the address in the BIOS. Does not do a | 22 | don't set the address in the BIOS. Look for a BIOS |
23 | upgrade before resorting to this. Does not do a | ||
23 | PCI force; the via686a must still be present in lspci. | 24 | PCI force; the via686a must still be present in lspci. |
24 | Don't use this unless the driver complains that the | 25 | Don't use this unless the driver complains that the |
25 | base address is not set. | 26 | base address is not set. |
@@ -63,3 +64,15 @@ miss once-only alarms. | |||
63 | 64 | ||
64 | The driver only updates its values each 1.5 seconds; reading it more often | 65 | The driver only updates its values each 1.5 seconds; reading it more often |
65 | will do no harm, but will return 'old' values. | 66 | will do no harm, but will return 'old' values. |
67 | |||
68 | Known Issues | ||
69 | ------------ | ||
70 | |||
71 | This driver handles sensors integrated in some VIA south bridges. It is | ||
72 | possible that a motherboard maker used a VT82C686A/B chip as part of a | ||
73 | product design but was not interested in its hardware monitoring features, | ||
74 | in which case the sensor inputs will not be wired. This is the case of | ||
75 | the Asus K7V, A7V and A7V133 motherboards, to name only a few of them. | ||
76 | So, if you need the force_addr parameter, and end up with values which | ||
77 | don't seem to make any sense, don't look any further: your chip is simply | ||
78 | not wired for hardware monitoring. | ||
diff --git a/drivers/hwmon/via686a.c b/drivers/hwmon/via686a.c index 60e94879f415..688ccf924c3a 100644 --- a/drivers/hwmon/via686a.c +++ b/drivers/hwmon/via686a.c | |||
@@ -589,10 +589,8 @@ static int via686a_detect(struct i2c_adapter *adapter) | |||
589 | u16 val; | 589 | u16 val; |
590 | 590 | ||
591 | /* 8231 requires multiple of 256, we enforce that on 686 as well */ | 591 | /* 8231 requires multiple of 256, we enforce that on 686 as well */ |
592 | if (force_addr) | ||
593 | address = force_addr & 0xFF00; | ||
594 | |||
595 | if (force_addr) { | 592 | if (force_addr) { |
593 | address = force_addr & 0xFF00; | ||
596 | dev_warn(&adapter->dev, "forcing ISA address 0x%04X\n", | 594 | dev_warn(&adapter->dev, "forcing ISA address 0x%04X\n", |
597 | address); | 595 | address); |
598 | if (PCIBIOS_SUCCESSFUL != | 596 | if (PCIBIOS_SUCCESSFUL != |
@@ -603,11 +601,17 @@ static int via686a_detect(struct i2c_adapter *adapter) | |||
603 | pci_read_config_word(s_bridge, VIA686A_ENABLE_REG, &val)) | 601 | pci_read_config_word(s_bridge, VIA686A_ENABLE_REG, &val)) |
604 | return -ENODEV; | 602 | return -ENODEV; |
605 | if (!(val & 0x0001)) { | 603 | if (!(val & 0x0001)) { |
606 | dev_warn(&adapter->dev, "enabling sensors\n"); | 604 | if (force_addr) { |
607 | if (PCIBIOS_SUCCESSFUL != | 605 | dev_info(&adapter->dev, "enabling sensors\n"); |
608 | pci_write_config_word(s_bridge, VIA686A_ENABLE_REG, | 606 | if (PCIBIOS_SUCCESSFUL != |
609 | val | 0x0001)) | 607 | pci_write_config_word(s_bridge, VIA686A_ENABLE_REG, |
608 | val | 0x0001)) | ||
609 | return -ENODEV; | ||
610 | } else { | ||
611 | dev_warn(&adapter->dev, "sensors disabled - enable " | ||
612 | "with force_addr=0x%x\n", address); | ||
610 | return -ENODEV; | 613 | return -ENODEV; |
614 | } | ||
611 | } | 615 | } |
612 | 616 | ||
613 | /* Reserve the ISA region */ | 617 | /* Reserve the ISA region */ |