mirror of https://gitee.com/openkylin/linux.git
WAN pc300too.c: Fix PC300-X.21 detection
pc300too driver works around a bug in PCI9050 bridge. Unfortunately it was doing that too late. Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
This commit is contained in:
parent
72364706c3
commit
6476a907b5
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue