|
@@ -4364,6 +4364,22 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
|
|
|
goto err_out;
|
|
|
}
|
|
|
|
|
|
+ /* Get configuration information
|
|
|
+ * Note: only regular PCI config access once to test for HW issues
|
|
|
+ * other PCI access through shared memory for speed and to
|
|
|
+ * avoid MMCONFIG problems.
|
|
|
+ */
|
|
|
+ err = pci_read_config_dword(pdev, PCI_DEV_REG2, ®);
|
|
|
+ if (err) {
|
|
|
+ dev_err(&pdev->dev, "PCI read config failed\n");
|
|
|
+ goto err_out;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (~reg == 0) {
|
|
|
+ dev_err(&pdev->dev, "PCI configuration read error\n");
|
|
|
+ goto err_out;
|
|
|
+ }
|
|
|
+
|
|
|
err = pci_request_regions(pdev, DRV_NAME);
|
|
|
if (err) {
|
|
|
dev_err(&pdev->dev, "cannot obtain PCI resources\n");
|
|
@@ -4389,21 +4405,6 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* Get configuration information
|
|
|
- * Note: only regular PCI config access once to test for HW issues
|
|
|
- * other PCI access through shared memory for speed and to
|
|
|
- * avoid MMCONFIG problems.
|
|
|
- */
|
|
|
- err = pci_read_config_dword(pdev, PCI_DEV_REG2, ®);
|
|
|
- if (err) {
|
|
|
- dev_err(&pdev->dev, "PCI read config failed\n");
|
|
|
- goto err_out_free_regions;
|
|
|
- }
|
|
|
-
|
|
|
- /* size of available VPD, only impact sysfs */
|
|
|
- err = pci_vpd_truncate(pdev, 1ul << (((reg & PCI_VPD_ROM_SZ) >> 14) + 8));
|
|
|
- if (err)
|
|
|
- dev_warn(&pdev->dev, "Can't set VPD size\n");
|
|
|
|
|
|
#ifdef __BIG_ENDIAN
|
|
|
/* The sk98lin vendor driver uses hardware byte swapping but
|