arcnet: com20020-pci: fix dev_id calculation
The dev_id was miscalculated. Only the two bits 4-5 are relevant for the MA1 card. PCIARC1 and PCIFB2 use the four bits 4-7 for id selection. Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0d494fcf86
commit
cb108619f2
1 changed files with 3 additions and 2 deletions
|
@ -135,6 +135,7 @@ static int com20020pci_probe(struct pci_dev *pdev,
|
|||
for (i = 0; i < ci->devcount; i++) {
|
||||
struct com20020_pci_channel_map *cm = &ci->chan_map_tbl[i];
|
||||
struct com20020_dev *card;
|
||||
int dev_id_mask = 0xf;
|
||||
|
||||
dev = alloc_arcdev(device);
|
||||
if (!dev) {
|
||||
|
@ -179,8 +180,8 @@ static int com20020pci_probe(struct pci_dev *pdev,
|
|||
|
||||
/* Get the dev_id from the PLX rotary coder */
|
||||
if (!strncmp(ci->name, "EAE PLX-PCI MA1", 15))
|
||||
dev->dev_id = 0xc;
|
||||
dev->dev_id ^= inb(priv->misc + ci->rotary) >> 4;
|
||||
dev_id_mask = 0x3;
|
||||
dev->dev_id = (inb(priv->misc + ci->rotary) >> 4) & dev_id_mask;
|
||||
|
||||
snprintf(dev->name, sizeof(dev->name), "arc%d-%d", dev->dev_id, i);
|
||||
|
||||
|
|
Loading…
Reference in a new issue