mirror of
https://github.com/lm-sensors/lm-sensors
synced 2025-09-02 23:35:57 +00:00
Added recognition of SiS746 host bridge.
(mmh) Addressed some trivial compiler warnings. (mmh) Updated documentation. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1793 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
@@ -4,12 +4,10 @@ Status: Beta
|
|||||||
|
|
||||||
Supported adapters:
|
Supported adapters:
|
||||||
* Silicon Integrated Systems Corp (SiS)
|
* Silicon Integrated Systems Corp (SiS)
|
||||||
645/961 chipset
|
Any combination of these host bridges:
|
||||||
645DX/961 chipset
|
645, 645DX (aka 646), 648, 650, 651, 735, 745, 746
|
||||||
645DX/962 chipset
|
and these south bridges:
|
||||||
648/961 chipset
|
961, 962, 963(L)
|
||||||
650/961 chipset
|
|
||||||
735 chipset
|
|
||||||
|
|
||||||
Author: Mark M. Hoffman <mhoffman@lightlink.com>
|
Author: Mark M. Hoffman <mhoffman@lightlink.com>
|
||||||
|
|
||||||
@@ -54,7 +52,7 @@ running "make config" or equivalent on your kernel, otherwise the i2c-sis645
|
|||||||
driver will not build in this support.
|
driver will not build in this support.
|
||||||
|
|
||||||
I suspect that this driver could be made to work for the following SiS chipsets
|
I suspect that this driver could be made to work for the following SiS chipsets
|
||||||
as well: 648/963, 651/962, 635, and 635T.
|
as well: 635, and 635T.
|
||||||
If anyone owns a board with those chips AND is willing to risk crashing &
|
If anyone owns a board with those chips AND is willing to risk crashing &
|
||||||
burning an otherwise well-behaved kernel in the name of progress... please
|
burning an otherwise well-behaved kernel in the name of progress... please
|
||||||
contact me at <mhoffman@lightlink.com> or via the project's mailing list:
|
contact me at <mhoffman@lightlink.com> or via the project's mailing list:
|
||||||
|
@@ -34,6 +34,8 @@
|
|||||||
Note: we assume there can only be one SiS645 with one SMBus interface
|
Note: we assume there can only be one SiS645 with one SMBus interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* #define DEBUG 1 */
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
@@ -257,7 +259,9 @@ static int __devinit sis645_probe(struct pci_dev *dev, const struct pci_device_i
|
|||||||
&& (NULL == pci_find_device(PCI_VENDOR_ID_SI,
|
&& (NULL == pci_find_device(PCI_VENDOR_ID_SI,
|
||||||
PCI_DEVICE_ID_SI_735, NULL))
|
PCI_DEVICE_ID_SI_735, NULL))
|
||||||
&& (NULL == pci_find_device(PCI_VENDOR_ID_SI,
|
&& (NULL == pci_find_device(PCI_VENDOR_ID_SI,
|
||||||
PCI_DEVICE_ID_SI_745, NULL))) {
|
PCI_DEVICE_ID_SI_745, NULL))
|
||||||
|
&& (NULL == pci_find_device(PCI_VENDOR_ID_SI,
|
||||||
|
PCI_DEVICE_ID_SI_746, NULL))) {
|
||||||
printk(KERN_ERR DRV_NAME ": Can't find suitable host bridge!\n");
|
printk(KERN_ERR DRV_NAME ": Can't find suitable host bridge!\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
@@ -280,15 +284,15 @@ static int __devinit sis645_probe(struct pci_dev *dev, const struct pci_device_i
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
#else /* CONFIG_HOTPLUG */
|
#else /* CONFIG_HOTPLUG */
|
||||||
if (ret = sis645_enable_smbus(dev)) {
|
if ((ret = sis645_enable_smbus(dev))) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret = sis645_build_dev(&SIS645_SMBUS_dev, dev)) {
|
if ((ret = sis645_build_dev(&SIS645_SMBUS_dev, dev))) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret = pci_enable_device(SIS645_SMBUS_dev)) {
|
if ((ret = pci_enable_device(SIS645_SMBUS_dev))) {
|
||||||
printk(KERN_ERR DRV_NAME ": Can't pci_enable SMBus device!"
|
printk(KERN_ERR DRV_NAME ": Can't pci_enable SMBus device!"
|
||||||
" (0x%08x)\n", ret);
|
" (0x%08x)\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -406,7 +410,7 @@ static int sis645_transaction(int size)
|
|||||||
|
|
||||||
/* Finish up by resetting the bus */
|
/* Finish up by resetting the bus */
|
||||||
sis645_write(SMB_STS, temp);
|
sis645_write(SMB_STS, temp);
|
||||||
if (temp = sis645_read(SMB_STS)) {
|
if ((temp = sis645_read(SMB_STS))) {
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printk(KERN_DEBUG DRV_NAME ": Failed reset at end of transaction!"
|
printk(KERN_DEBUG DRV_NAME ": Failed reset at end of transaction!"
|
||||||
" (0x%02x)\n", temp);
|
" (0x%02x)\n", temp);
|
||||||
|
Reference in New Issue
Block a user