Hello,
I work on a QNX driver for a PCI board based on an XR17D158 from Exar. This board provides 6 RS485 serial links.
I have started the developpement using the devc_ser8250 source on x86.
What I have done :
1- read the interrupt line (5) in pci local bus configuration register. This interrupt line is shared with an other device (Intelligent I/O).
2- configure the serial links
3- disable interrupt, clear the device by reading RX, TX, LS, … registers
4- do the interrupt attach on my interrupt handler.
5- enable the interrupt
I send a character on the serial link, and my interrupt handler is not called!
I have checked that, just before sending my character, the interrupt registers of the exar which give the interrupt source are empty.
I am able to read the characters in RX register, to read the LS register, and just after the interrupt register are cleaned again.
I have several questions :
- How I can know if interrupts are level or edge triggered?
- If I do a “pci -v”, I can read :
PCI Int Pin = INT A
Interrupt line = 5
CPU Interrupt = 5h
What is the difference between interrupt line and CPU interrupt?
If I change the interrupt line using pci_map_irq, the CPU interrupt is not changed.
- Is it possible to know the state or level of a given IRQ with QNX? I wish to check if the IRQ 5 is not always activated (in high level).
- The IRQ 5 is shared with an other device. Could it explain my issue?
Many thanks for our help.
Alexandre