X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fi2c%2Fbusses%2Fi2c-amd756.c;h=eca5ed3738b857acd6c6bb66f0ee7118cb1ffc7f;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=22c4a9948275272042890ff5a481497e05ddeae0;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c index 22c4a9948..eca5ed373 100644 --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c @@ -116,14 +116,14 @@ static int amd756_transaction(struct i2c_adapter *adap) int result = 0; int timeout = 0; - dev_dbg(&adap->dev, ": Transaction (pre): GS=%04x, GE=%04x, ADD=%04x, " + dev_dbg(&adap->dev, "Transaction (pre): GS=%04x, GE=%04x, ADD=%04x, " "DAT=%04x\n", inw_p(SMB_GLOBAL_STATUS), inw_p(SMB_GLOBAL_ENABLE), inw_p(SMB_HOST_ADDRESS), inb_p(SMB_HOST_DATA)); /* Make sure the SMBus host is ready to start transmitting */ if ((temp = inw_p(SMB_GLOBAL_STATUS)) & (GS_HST_STS | GS_SMB_STS)) { - dev_dbg(&adap->dev, ": SMBus busy (%04x). Waiting... \n", temp); + dev_dbg(&adap->dev, "SMBus busy (%04x). Waiting...\n", temp); do { msleep(1); temp = inw_p(SMB_GLOBAL_STATUS); @@ -131,7 +131,7 @@ static int amd756_transaction(struct i2c_adapter *adap) (timeout++ < MAX_TIMEOUT)); /* If the SMBus is still busy, we give up */ if (timeout >= MAX_TIMEOUT) { - dev_dbg(&adap->dev, ": Busy wait timeout (%04x)\n", temp); + dev_dbg(&adap->dev, "Busy wait timeout (%04x)\n", temp); goto abort; } timeout = 0; @@ -148,46 +148,46 @@ static int amd756_transaction(struct i2c_adapter *adap) /* If the SMBus is still busy, we give up */ if (timeout >= MAX_TIMEOUT) { - dev_dbg(&adap->dev, ": Completion timeout!\n"); + dev_dbg(&adap->dev, "Completion timeout!\n"); goto abort; } if (temp & GS_PRERR_STS) { result = -1; - dev_dbg(&adap->dev, ": SMBus Protocol error (no response)!\n"); + dev_dbg(&adap->dev, "SMBus Protocol error (no response)!\n"); } if (temp & GS_COL_STS) { result = -1; - dev_warn(&adap->dev, " SMBus collision!\n"); + dev_warn(&adap->dev, "SMBus collision!\n"); } if (temp & GS_TO_STS) { result = -1; - dev_dbg(&adap->dev, ": SMBus protocol timeout!\n"); + dev_dbg(&adap->dev, "SMBus protocol timeout!\n"); } if (temp & GS_HCYC_STS) - dev_dbg(&adap->dev, " SMBus protocol success!\n"); + dev_dbg(&adap->dev, "SMBus protocol success!\n"); outw_p(GS_CLEAR_STS, SMB_GLOBAL_STATUS); #ifdef DEBUG if (((temp = inw_p(SMB_GLOBAL_STATUS)) & GS_CLEAR_STS) != 0x00) { dev_dbg(&adap->dev, - ": Failed reset at end of transaction (%04x)\n", temp); + "Failed reset at end of transaction (%04x)\n", temp); } #endif dev_dbg(&adap->dev, - ": Transaction (post): GS=%04x, GE=%04x, ADD=%04x, DAT=%04x\n", + "Transaction (post): GS=%04x, GE=%04x, ADD=%04x, DAT=%04x\n", inw_p(SMB_GLOBAL_STATUS), inw_p(SMB_GLOBAL_ENABLE), inw_p(SMB_HOST_ADDRESS), inb_p(SMB_HOST_DATA)); return result; abort: - dev_warn(&adap->dev, ": Sending abort.\n"); + dev_warn(&adap->dev, "Sending abort\n"); outw_p(inw(SMB_GLOBAL_ENABLE) | GE_ABORT, SMB_GLOBAL_ENABLE); msleep(100); outw_p(GS_CLEAR_STS, SMB_GLOBAL_STATUS); @@ -204,7 +204,7 @@ static s32 amd756_access(struct i2c_adapter * adap, u16 addr, /** TODO: Should I supporte the 10-bit transfers? */ switch (size) { case I2C_SMBUS_PROC_CALL: - dev_dbg(&adap->dev, ": I2C_SMBUS_PROC_CALL not supported!\n"); + dev_dbg(&adap->dev, "I2C_SMBUS_PROC_CALL not supported!\n"); /* TODO: Well... It is supported, I'm just not sure what to do here... */ return -1; case I2C_SMBUS_QUICK: @@ -302,7 +302,7 @@ static struct i2c_algorithm smbus_algorithm = { .functionality = amd756_func, }; -static struct i2c_adapter amd756_adapter = { +struct i2c_adapter amd756_smbus = { .owner = THIS_MODULE, .class = I2C_CLASS_HWMON, .algo = &smbus_algorithm, @@ -310,16 +310,27 @@ static struct i2c_adapter amd756_adapter = { }; enum chiptype { AMD756, AMD766, AMD768, NFORCE, AMD8111 }; +static const char* chipname[] = { + "AMD756", "AMD766", "AMD768", + "nVidia nForce", "AMD8111", +}; static struct pci_device_id amd756_ids[] = { - {PCI_VENDOR_ID_AMD, 0x740B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AMD756 }, - {PCI_VENDOR_ID_AMD, 0x7413, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AMD766 }, - {PCI_VENDOR_ID_AMD, 0x7443, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AMD768 }, - {PCI_VENDOR_ID_AMD, 0x746B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AMD8111 }, - {PCI_VENDOR_ID_NVIDIA, 0x01B4, PCI_ANY_ID, PCI_ANY_ID, 0, 0, NFORCE }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_740B), + .driver_data = AMD756 }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7413), + .driver_data = AMD766 }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7443), + .driver_data = AMD768 }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_SMBUS), + .driver_data = AMD8111 }, + { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS), + .driver_data = NFORCE }, { 0, } }; +MODULE_DEVICE_TABLE (pci, amd756_ids); + static int __devinit amd756_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -328,8 +339,8 @@ static int __devinit amd756_probe(struct pci_dev *pdev, u8 temp; if (amd756_ioport) { - dev_err(&pdev->dev, ": Only one device supported. " - "(you have a strange motherboard, btw..)\n"); + dev_err(&pdev->dev, "Only one device supported " + "(you have a strange motherboard, btw)\n"); return -ENODEV; } @@ -346,7 +357,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev, pci_read_config_byte(pdev, SMBGCFG, &temp); if ((temp & 128) == 0) { dev_err(&pdev->dev, - ": Error: SMBus controller I/O not enabled!\n"); + "Error: SMBus controller I/O not enabled!\n"); return -ENODEV; } @@ -358,25 +369,25 @@ static int __devinit amd756_probe(struct pci_dev *pdev, } if (!request_region(amd756_ioport, SMB_IOSIZE, "amd756-smbus")) { - dev_err(&pdev->dev, ": SMB region 0x%x already in use!\n", + dev_err(&pdev->dev, "SMB region 0x%x already in use!\n", amd756_ioport); return -ENODEV; } pci_read_config_byte(pdev, SMBREV, &temp); - dev_dbg(&pdev->dev, ": SMBREV = 0x%X\n", temp); - dev_dbg(&pdev->dev, ": AMD756_smba = 0x%X\n", amd756_ioport); + dev_dbg(&pdev->dev, "SMBREV = 0x%X\n", temp); + dev_dbg(&pdev->dev, "AMD756_smba = 0x%X\n", amd756_ioport); /* set up the driverfs linkage to our parent device */ - amd756_adapter.dev.parent = &pdev->dev; + amd756_smbus.dev.parent = &pdev->dev; - snprintf(amd756_adapter.name, I2C_NAME_SIZE, - "SMBus AMD756 adapter at %04x", amd756_ioport); + sprintf(amd756_smbus.name, "SMBus %s adapter at %04x", + chipname[id->driver_data], amd756_ioport); - error = i2c_add_adapter(&amd756_adapter); + error = i2c_add_adapter(&amd756_smbus); if (error) { dev_err(&pdev->dev, - ": Adapter registration failed, module not inserted.\n"); + "Adapter registration failed, module not inserted\n"); goto out_err; } @@ -389,7 +400,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev, static void __devexit amd756_remove(struct pci_dev *dev) { - i2c_del_adapter(&amd756_adapter); + i2c_del_adapter(&amd756_smbus); release_region(amd756_ioport, SMB_IOSIZE); } @@ -402,7 +413,7 @@ static struct pci_driver amd756_driver = { static int __init amd756_init(void) { - return pci_module_init(&amd756_driver); + return pci_register_driver(&amd756_driver); } static void __exit amd756_exit(void) @@ -414,5 +425,7 @@ MODULE_AUTHOR("Merlin Hughes "); MODULE_DESCRIPTION("AMD756/766/768/8111 and nVidia nForce SMBus driver"); MODULE_LICENSE("GPL"); +EXPORT_SYMBOL(amd756_smbus); + module_init(amd756_init) module_exit(amd756_exit)