|
@@ -319,27 +319,6 @@ static int __devinit pc300_pci_init_one(struct pci_dev *pdev,
|
|
|
}
|
|
|
pci_set_drvdata(pdev, card);
|
|
|
|
|
|
- if (pdev->device == PCI_DEVICE_ID_PC300_TE_1 ||
|
|
|
- pdev->device == PCI_DEVICE_ID_PC300_TE_2)
|
|
|
- card->type = PC300_TE; /* not fully supported */
|
|
|
- else if (card->init_ctrl_value & PC300_CTYPE_MASK)
|
|
|
- card->type = PC300_X21;
|
|
|
- else
|
|
|
- card->type = PC300_RSV;
|
|
|
-
|
|
|
- if (pdev->device == PCI_DEVICE_ID_PC300_RX_1 ||
|
|
|
- pdev->device == PCI_DEVICE_ID_PC300_TE_1)
|
|
|
- card->n_ports = 1;
|
|
|
- else
|
|
|
- card->n_ports = 2;
|
|
|
-
|
|
|
- for (i = 0; i < card->n_ports; i++)
|
|
|
- if (!(card->ports[i].netdev = alloc_hdlcdev(&card->ports[i]))) {
|
|
|
- printk(KERN_ERR "pc300: unable to allocate memory\n");
|
|
|
- pc300_pci_remove_one(pdev);
|
|
|
- return -ENOMEM;
|
|
|
- }
|
|
|
-
|
|
|
if (pci_resource_len(pdev, 0) != PC300_PLX_SIZE ||
|
|
|
pci_resource_len(pdev, 2) != PC300_SCA_SIZE ||
|
|
|
pci_resource_len(pdev, 3) < 16384) {
|
|
@@ -348,13 +327,13 @@ static int __devinit pc300_pci_init_one(struct pci_dev *pdev,
|
|
|
return -EFAULT;
|
|
|
}
|
|
|
|
|
|
- plxphys = pci_resource_start(pdev,0) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
+ plxphys = pci_resource_start(pdev, 0) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
card->plxbase = ioremap(plxphys, PC300_PLX_SIZE);
|
|
|
|
|
|
- scaphys = pci_resource_start(pdev,2) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
+ scaphys = pci_resource_start(pdev, 2) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
card->scabase = ioremap(scaphys, PC300_SCA_SIZE);
|
|
|
|
|
|
- ramphys = pci_resource_start(pdev,3) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
+ ramphys = pci_resource_start(pdev, 3) & PCI_BASE_ADDRESS_MEM_MASK;
|
|
|
card->rambase = pci_ioremap_bar(pdev, 3);
|
|
|
|
|
|
if (card->plxbase == NULL ||
|
|
@@ -369,6 +348,27 @@ static int __devinit pc300_pci_init_one(struct pci_dev *pdev,
|
|
|
card->init_ctrl_value = readl(&((plx9050 __iomem *)card->scabase)->init_ctrl);
|
|
|
pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, plxphys);
|
|
|
|
|
|
+ if (pdev->device == PCI_DEVICE_ID_PC300_TE_1 ||
|
|
|
+ pdev->device == PCI_DEVICE_ID_PC300_TE_2)
|
|
|
+ card->type = PC300_TE; /* not fully supported */
|
|
|
+ else if (card->init_ctrl_value & PC300_CTYPE_MASK)
|
|
|
+ card->type = PC300_X21;
|
|
|
+ else
|
|
|
+ card->type = PC300_RSV;
|
|
|
+
|
|
|
+ if (pdev->device == PCI_DEVICE_ID_PC300_RX_1 ||
|
|
|
+ pdev->device == PCI_DEVICE_ID_PC300_TE_1)
|
|
|
+ card->n_ports = 1;
|
|
|
+ else
|
|
|
+ card->n_ports = 2;
|
|
|
+
|
|
|
+ for (i = 0; i < card->n_ports; i++)
|
|
|
+ if (!(card->ports[i].netdev = alloc_hdlcdev(&card->ports[i]))) {
|
|
|
+ printk(KERN_ERR "pc300: unable to allocate memory\n");
|
|
|
+ pc300_pci_remove_one(pdev);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
/* Reset PLX */
|
|
|
p = &card->plxbase->init_ctrl;
|
|
|
writel(card->init_ctrl_value | 0x40000000, p);
|