On Fri, 2015-02-06 at 13:20 +0100, Georg Gast wrote: > Hi, > i have the following card: > > [10b5:9050] (rev 01) Subsystem: PLX Technology, Inc. IXXAT CAN i165 > > lspci -x -d 10b5:9050 > 07:05.0 Network controller: PLX Technology, Inc. PCI <-> IOBus Bridge > (rev 01) > 00: b5 10 50 90 03 00 80 02 01 00 80 02 10 00 00 00 > 10: 00 50 40 fe 01 a4 00 00 00 00 40 fe 00 00 00 00 > 20: 00 00 00 00 00 00 00 00 00 00 00 00 b5 10 67 10
The 16 bit subsystem vendor ID lives at 0x2C and is 0x10b5, and the 16 bit subsystem ID lives at 0x2E and is 0x1067, right? > 30: 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 00 00 > > It offers an sja1000 can bus. It is a relatively old card. The 10b5:9050 > suggested that the driver plx_pci + sja1000 are offering support for it, > but i guess it gets rejected by the subsystem id, but i cant figure out > if i have done it wrong. > > from the output of the pci configuration space, i guess the subsystem id > is 1067 so i authored the appended patch. My added printk doesnt get > triggered, so i assume, the pci description is still wrong. > > Any hints would be appreciated... > > This is exactly the card. > http://www.bol-system.com/english/ixxat/ipci165pci.htm > > Best regards > Georg Gast > > From 648f6abe1f055e7da26584fd5975a5e53102fe18 Mon Sep 17 00:00:00 2001 > From: Georg Gast <ge...@schorsch-tech.de> > Date: Fri, 6 Feb 2015 13:03:53 +0100 > Subject: [PATCH] IXXAT CAN i165 > > --- > drivers/net/can/sja1000/plx_pci.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/net/can/sja1000/plx_pci.c > b/drivers/net/can/sja1000/plx_pci.c > index 8836a74..7e59478 100644 > --- a/drivers/net/can/sja1000/plx_pci.c > +++ b/drivers/net/can/sja1000/plx_pci.c > @@ -45,6 +45,7 @@ MODULE_SUPPORTED_DEVICE("Adlink PCI-7841/cPCI-7841, " > "esd CAN-PCIe/2000, " > "Connect Tech Inc. CANpro/104-Plus Opto (CRG001), " > "IXXAT PC-I 04/PCI, " > + "IXXAT CAN i165, " > "ELCUS CAN-200-PCI") > MODULE_LICENSE("GPL v2"); > > @@ -131,6 +132,7 @@ struct plx_pci_card { > #define IXXAT_PCI_VENDOR_ID 0x10b5 > #define IXXAT_PCI_DEVICE_ID 0x9050 > #define IXXAT_PCI_SUB_SYS_ID 0x2540 > +#define IXXAT_PCI_I165_SUB_SYS_ID 0x1065 But here you use 0x1065 instead of either 0x10b5 or 0x1067. > #define MARATHON_PCI_DEVICE_ID 0x2715 > > @@ -215,6 +217,14 @@ static struct plx_pci_card_info plx_pci_card_info_ixxat > = { > /* based on PLX9050 */ > }; > > +static struct plx_pci_card_info plx_pci_card_info_ixxat_i165 = { > + "IXXAT CAN i165", 1, > + PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR, > + {0, 0x00, 0x00}, { {2, 0x00, 0x80}, {2, 0x200, 0x80} }, > + &plx_pci_reset_common > + /* based on PLX9050 */ > +}; > + > static struct plx_pci_card_info plx_pci_card_info_marathon = { > "Marathon CAN-bus-PCI", 2, > PLX_PCI_CAN_CLOCK, PLX_PCI_OCR, PLX_PCI_CDR, > @@ -312,6 +322,13 @@ static const struct pci_device_id plx_pci_tbl[] = { > (kernel_ulong_t)&plx_pci_card_info_ixxat > }, > { > + /* IXXAT CAN i165 card */ > + IXXAT_PCI_VENDOR_ID, IXXAT_PCI_DEVICE_ID, > + PCI_ANY_ID, IXXAT_PCI_I165_SUB_SYS_ID, You're checking the subsystem ID, so you should use 0x1067. Is that correct? > + 0, 0, > + (kernel_ulong_t)&plx_pci_card_info_ixxat_i165 > + }, > + { > /* Marathon CAN-bus-PCI card */ > PCI_VENDOR_ID_PLX, MARATHON_PCI_DEVICE_ID, > PCI_ANY_ID, PCI_ANY_ID, > @@ -514,6 +531,7 @@ static int plx_pci_add_card(struct pci_dev *pdev, > u32 val; > void __iomem *addr; > > + printk("plx_pci: Probing ..."); > ci = (struct plx_pci_card_info *)ent->driver_data; > > if (pci_enable_device(pdev) < 0) { > -- > 2.0.5 Please post patches inline, next time. Paul Bolle -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/