From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <4A13D9F6.30602@domain.hid> Date: Wed, 20 May 2009 12:22:46 +0200 From: Wolfgang Grandegger MIME-Version: 1.0 References: <4A008DC9.1000603@domain.hid> <1242812539.31033.12.camel@domain.hid> In-Reply-To: <1242812539.31033.12.camel@domain.hid> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-core] [Xenomai-help] IXXAT-PCI-CAN driver hijacks my pci board List-Id: Xenomai life and development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Philippe Gerum Cc: xenomai@xenomai.org, Stefan Kisdaroczi Hi Philippe, Philippe Gerum wrote: > It looks like this patch is still pending an ack/nak. Wolfgang, any > comment on this? TIA, FIFO overrun, sorry. > On Tue, 2009-05-05 at 21:04 +0200, Stefan Kisdaroczi wrote: >> Hi, >> >> my pci board has the same pci-interface-chip as the IXXAT-PCI board. >> The vendor and device id's are identical, but the subsys id is different. >> >> The documentation for my board says that it is essential to check all ID values, >> because vendor and device id are standard values for the pci-interface-chip. >> >> dmesg output, there is no IXXAT-PCI-CAN board installed: >>> RT-Socket-CAN 0.90.2 - (C) 2006 RT-Socket-CAN Development Team >>> RTCAN SJA1000 driver initialized >>> PCI: setting IRQ 12 as level-triggered >>> IXXAT-PCI-CAN 0000:00:11.0: found PCI INT A -> IRQ 12 >>> IXXAT-PCI-CAN: Initializing device 10b5:9050:2503 OK, it finding a variant of the PLX9050, but it will not use the device because of the following lines after the above printout: if (sub_sys_id != IXXAT_PCI_SUB_SYS_ID) return -ENODEV; But ... >> The following patch fixed it for me (my own driver loads again). ... obviously it does not probe again. >> However, i could not check if it still detects the CAN board, >> as i dont have one. >> >> Thanks >> kisda >> >> --- xenomai-2.4.7.orig/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c >> +++ xenomai-2.4.7/ksrc/drivers/can/sja1000/rtcan_ixxat_pci.c >> @@ -73,7 +73,7 @@ >> #define IXXAT_BASE_PORT_SIZE 0x0400 >> >> static struct pci_device_id ixxat_pci_tbl[] = { >> - {IXXAT_PCI_VENDOR_ID, IXXAT_PCI_DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, >> + {IXXAT_PCI_VENDOR_ID, IXXAT_PCI_DEVICE_ID, IXXAT_PCI_VENDOR_ID, IXXAT_PCI_SUB_SYS_ID, 0, 0, 0}, >> { } >> }; >> MODULE_DEVICE_TABLE (pci, ixxat_pci_tbl); I don't have a IXXAT CAN card to check if the sub-vendor id is really IXXAT_PCI_VENDOR_ID. Does {IXXAT_PCI_VENDOR_ID, IXXAT_PCI_DEVICE_ID, PCI_ANY_ID, IXXAT_PCI_SUB_SYS_ID, 0, 0, 0}, work as well? A work-around would be to disable the IXXAT-PCI driver in the kernel config. Wolfgang.