|
@@ -314,35 +314,12 @@ static u32 ali1563_func(struct i2c_adapter * a)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static void ali1563_enable(struct pci_dev * dev)
|
|
|
|
-{
|
|
|
|
- u16 ctrl;
|
|
|
|
-
|
|
|
|
- pci_read_config_word(dev,ALI1563_SMBBA,&ctrl);
|
|
|
|
- ctrl |= 0x7;
|
|
|
|
- pci_write_config_word(dev,ALI1563_SMBBA,ctrl);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static int __devinit ali1563_setup(struct pci_dev * dev)
|
|
static int __devinit ali1563_setup(struct pci_dev * dev)
|
|
{
|
|
{
|
|
u16 ctrl;
|
|
u16 ctrl;
|
|
|
|
|
|
pci_read_config_word(dev,ALI1563_SMBBA,&ctrl);
|
|
pci_read_config_word(dev,ALI1563_SMBBA,&ctrl);
|
|
|
|
|
|
- /* Check if device is even enabled first */
|
|
|
|
- if (!(ctrl & ALI1563_SMB_IOEN)) {
|
|
|
|
- dev_warn(&dev->dev,"I/O space not enabled, trying manually\n");
|
|
|
|
- ali1563_enable(dev);
|
|
|
|
- }
|
|
|
|
- if (!(ctrl & ALI1563_SMB_IOEN)) {
|
|
|
|
- dev_warn(&dev->dev,"I/O space still not enabled, giving up\n");
|
|
|
|
- goto Err;
|
|
|
|
- }
|
|
|
|
- if (!(ctrl & ALI1563_SMB_HOSTEN)) {
|
|
|
|
- dev_warn(&dev->dev,"Host Controller not enabled\n");
|
|
|
|
- goto Err;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/* SMB I/O Base in high 12 bits and must be aligned with the
|
|
/* SMB I/O Base in high 12 bits and must be aligned with the
|
|
* size of the I/O space. */
|
|
* size of the I/O space. */
|
|
ali1563_smba = ctrl & ~(ALI1563_SMB_IOSIZE - 1);
|
|
ali1563_smba = ctrl & ~(ALI1563_SMB_IOSIZE - 1);
|
|
@@ -350,6 +327,24 @@ static int __devinit ali1563_setup(struct pci_dev * dev)
|
|
dev_warn(&dev->dev,"ali1563_smba Uninitialized\n");
|
|
dev_warn(&dev->dev,"ali1563_smba Uninitialized\n");
|
|
goto Err;
|
|
goto Err;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /* Check if device is enabled */
|
|
|
|
+ if (!(ctrl & ALI1563_SMB_HOSTEN)) {
|
|
|
|
+ dev_warn(&dev->dev, "Host Controller not enabled\n");
|
|
|
|
+ goto Err;
|
|
|
|
+ }
|
|
|
|
+ if (!(ctrl & ALI1563_SMB_IOEN)) {
|
|
|
|
+ dev_warn(&dev->dev, "I/O space not enabled, trying manually\n");
|
|
|
|
+ pci_write_config_word(dev, ALI1563_SMBBA,
|
|
|
|
+ ctrl | ALI1563_SMB_IOEN);
|
|
|
|
+ pci_read_config_word(dev, ALI1563_SMBBA, &ctrl);
|
|
|
|
+ if (!(ctrl & ALI1563_SMB_IOEN)) {
|
|
|
|
+ dev_err(&dev->dev, "I/O space still not enabled, "
|
|
|
|
+ "giving up\n");
|
|
|
|
+ goto Err;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
if (!request_region(ali1563_smba, ALI1563_SMB_IOSIZE,
|
|
if (!request_region(ali1563_smba, ALI1563_SMB_IOSIZE,
|
|
ali1563_pci_driver.name)) {
|
|
ali1563_pci_driver.name)) {
|
|
dev_err(&dev->dev, "Could not allocate I/O space at 0x%04x\n",
|
|
dev_err(&dev->dev, "Could not allocate I/O space at 0x%04x\n",
|