Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / i2c / busses / i2c-sis630.c
index 437ee28..acb75e2 100644 (file)
@@ -48,7 +48,6 @@
    Note: we assume there can only be one device, with one SMBus interface.
 */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/delay.h>
 #define SIS630_PCALL           0x04
 #define SIS630_BLOCK_DATA      0x05
 
+static struct pci_driver sis630_driver;
+
 /* insmod parameters */
-static int high_clock = 0;
-static int force = 0;
-MODULE_PARM(high_clock, "i");
+static int high_clock;
+static int force;
+module_param(high_clock, bool, 0);
 MODULE_PARM_DESC(high_clock, "Set Host Master Clock to 56KHz (default 14KHz).");
-MODULE_PARM(force, "i");
+module_param(force, bool, 0);
 MODULE_PARM_DESC(force, "Forcibly enable the SIS630. DANGEROUS!");
 
 /* acpi base address */
-static unsigned short acpi_base = 0;
+static unsigned short acpi_base;
 
 /* supported chips */
 static int supported[] = {
@@ -145,7 +146,7 @@ static int sis630_transaction_start(struct i2c_adapter *adap, int size, u8 *oldc
        dev_dbg(&adap->dev, "saved clock 0x%02x\n", *oldclock);
 
        /* disable timeout interrupt , set Host Master Clock to 56KHz if requested */
-       if (high_clock > 0)
+       if (high_clock)
                sis630_write(SMB_CNT, 0x20);
        else
                sis630_write(SMB_CNT, (*oldclock & ~0x40));
@@ -210,7 +211,7 @@ static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock)
         * restore old Host Master Clock if high_clock is set
         * and oldclock was not 56KHz
         */
-       if (high_clock > 0 && !(oldclock & 0x20))
+       if (high_clock && !(oldclock & 0x20))
                sis630_write(SMB_CNT,(sis630_read(SMB_CNT) & ~0x20));
 
        dev_dbg(&adap->dev, "SMB_CNT after clock restore 0x%02x\n", sis630_read(SMB_CNT));
@@ -401,7 +402,7 @@ static int sis630_setup(struct pci_dev *sis630_dev)
        if (dummy) {
                pci_dev_put(dummy);
        }
-        else if (force > 0) {
+        else if (force) {
                dev_err(&sis630_dev->dev, "WARNING: Can't detect SIS630 compatible device, but "
                        "loading because of force option enabled\n");
        }
@@ -433,7 +434,8 @@ static int sis630_setup(struct pci_dev *sis630_dev)
        dev_dbg(&sis630_dev->dev, "ACPI base at 0x%04x\n", acpi_base);
 
        /* Everything is happy, let's grab the memory and set things up. */
-       if (!request_region(acpi_base + SMB_STS, SIS630_SMB_IOREGION, "sis630-smbus")) {
+       if (!request_region(acpi_base + SMB_STS, SIS630_SMB_IOREGION,
+                           sis630_driver.name)) {
                dev_err(&sis630_dev->dev, "SMBus registers 0x%04x-0x%04x already "
                        "in use!\n", acpi_base + SMB_STS, acpi_base + SMB_SAA);
                goto exit;
@@ -449,8 +451,6 @@ exit:
 
 
 static struct i2c_algorithm smbus_algorithm = {
-       .name           = "Non-I2C SMBus adapter",
-       .id             = I2C_ALGO_SMBUS,
        .smbus_xfer     = sis630_access,
        .functionality  = sis630_func,
 };
@@ -458,15 +458,17 @@ static struct i2c_algorithm smbus_algorithm = {
 static struct i2c_adapter sis630_adapter = {
        .owner          = THIS_MODULE,
        .class          = I2C_CLASS_HWMON,
-       .name           = "unset",
        .algo           = &smbus_algorithm,
 };
 
 static struct pci_device_id sis630_ids[] __devinitdata = {
        { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503) },
+       { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_LPC) },
        { 0, }
 };
 
+MODULE_DEVICE_TABLE (pci, sis630_ids);
+
 static int __devinit sis630_probe(struct pci_dev *dev, const struct pci_device_id *id)
 {
        if (sis630_setup(dev)) {
@@ -494,7 +496,7 @@ static void __devexit sis630_remove(struct pci_dev *dev)
 
 
 static struct pci_driver sis630_driver = {
-       .name           = "sis630 smbus",
+       .name           = "sis630_smbus",
        .id_table       = sis630_ids,
        .probe          = sis630_probe,
        .remove         = __devexit_p(sis630_remove),
@@ -502,7 +504,7 @@ static struct pci_driver sis630_driver = {
 
 static int __init i2c_sis630_init(void)
 {
-       return pci_module_init(&sis630_driver);
+       return pci_register_driver(&sis630_driver);
 }