Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb108619 authored by Michael Grzeschik's avatar Michael Grzeschik Committed by David S. Miller
Browse files

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: default avatarMichael Grzeschik <m.grzeschik@pengutronix.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0d494fcf
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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);