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

Commit 3e66d013 authored by Christopher R. Baker's avatar Christopher R. Baker Committed by Marc Kleine-Budde
Browse files

can: populate netdev::dev_id for udev discrimination



My objective is to be able to totally discriminate CAN ports on multi-port
cards via udev so as to rename them to semantically interesting/unique names
for my system (e.g., "ecuCAN" and "auxCAN" instead of "can0" and "can1").

The following patch assigns the dev_id field to match the channel number on all
multi-channel devices. I can only test my two-port Peak PCI card, but it works
as expected: ATTRS{dev_id} now expresses the port number and my udev rules now
unambiguously pick out and rename my individual CAN ports.

Signed-off-by: default avatarChristopher R. Baker <cbaker@rec.ri.cmu.edu>
Tested-by: Oliver Hartkopp <socketcan@hartkopp.net> [PEAK PCAN-USB pro and EMS PCMCIA]
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent c971fa2a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -323,6 +323,7 @@ static int ems_pci_add_card(struct pci_dev *pdev,
			priv->cdr = EMS_PCI_CDR;

			SET_NETDEV_DEV(dev, &pdev->dev);
			dev->dev_id = i;

			if (card->version == 1)
				/* reset int flag of pita */
+1 −0
Original line number Diff line number Diff line
@@ -211,6 +211,7 @@ static int ems_pcmcia_add_card(struct pcmcia_device *pdev, unsigned long base)
		priv = netdev_priv(dev);
		priv->priv = card;
		SET_NETDEV_DEV(dev, &pdev->dev);
		dev->dev_id = i;

		priv->irq_flags = IRQF_SHARED;
		dev->irq = pdev->irq;
+1 −0
Original line number Diff line number Diff line
@@ -270,6 +270,7 @@ static int kvaser_pci_add_chan(struct pci_dev *pdev, int channel,
		 priv->reg_base, board->conf_addr, dev->irq);

	SET_NETDEV_DEV(dev, &pdev->dev);
	dev->dev_id = channel;

	/* Register SJA1000 device */
	err = register_sja1000dev(dev);
+1 −0
Original line number Diff line number Diff line
@@ -642,6 +642,7 @@ static int peak_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
		icr |= chan->icr_mask;

		SET_NETDEV_DEV(dev, &pdev->dev);
		dev->dev_id = i;

		/* Create chain of SJA1000 devices */
		chan->prev_dev = pci_get_drvdata(pdev);
+1 −0
Original line number Diff line number Diff line
@@ -550,6 +550,7 @@ static int pcan_add_channels(struct pcan_pccard *card)
		priv = netdev_priv(netdev);
		priv->priv = card;
		SET_NETDEV_DEV(netdev, &pdev->dev);
		netdev->dev_id = i;

		priv->irq_flags = IRQF_SHARED;
		netdev->irq = pdev->irq;
Loading