All of lore.kernel.org
 help / color / mirror / Atom feed
* trouble with interrupts on 16C
@ 2012-04-23 13:45 Stoltenberg, Matthew
  0 siblings, 0 replies; only message in thread
From: Stoltenberg, Matthew @ 2012-04-23 13:45 UTC (permalink / raw)
  To: linux-serial

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-04-23 13:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-23 13:45 trouble with interrupts on 16C Stoltenberg, Matthew

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.