trouble with interrupts on 16C

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm having trouble with an Oxford Semiconductor UART with the part number OXPCIe952.  This is a PCI-E uart which we're using to connect to another device on our board.  The CPU we're using is based on an ARM11 MPCORE.

Here's the output from lspci:
# lspci -s 05:00.1 -v
05:00.1 Serial controller: Oxford Semiconductor Ltd Device c13d (prog-if 02 [16550])
        Subsystem: Oxford Semiconductor Ltd Device c13d
        Flags: fast devsel, IRQ 77
        Memory at 20300000 (32-bit, non-prefetchable) [size=16K]
        Memory at 20600000 (32-bit, non-prefetchable) [size=2M]
        Memory at 20800000 (32-bit, non-prefetchable) [size=2M]
        Capabilities: [40] Power Management version 3
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
        Capabilities: [100] Power Budgeting <?>
        Kernel driver in use: serial


>From the kernel when I modprobe 8250_pci:
 [236954.361000] 1 ports detected on Oxford PCI Express device
 [236954.361000] Setup PCI port: port 0, irq 77, type 2
 [236954.365000] ttyS1: detected caps 00000700 should be 00000500
 [236954.365000] 0000:05:00.1: ttyS1 at MMIO 0x20301000 (irq = 77) is a 16C950/954


The problem I'm having is that I almost never seem to get an interrupt when there is data ready to be read.  I added a custom interrupt handler that does a printk of the iir, ier, and lsr registers after each valid interrupt.  It's very rare that I see the status register say that there is data ready to be read.  The other end is essentially a shell that echoes back every character as well as the results of a command with an error string for an invalid command.  The only data I ever get back is a small part of the error string.

We've had some luck in uboot just polling the status register as opposed to using the interrupt.  Apart from writing my own driver from scratch, is there an easy way to poll that register using the 8250 driver?

Thanks
Matt

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux