Re: Reg: Serial port driver for microchip's new PCIe UART device

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

 



On Thu, Feb 10, 2022 at 10:38:39AM +0000, Kumaravel.Thiagarajan@xxxxxxxxxxxxx wrote:
> > > We are working on a PCIe based multi-instance UART device.
> > > Based on the Linux community feedback few months back, we had written
> > it as a custom driver inside drivers/tty/serial/8250.
> > > Now this custom driver is requiring a DWORD FIFO access for both Tx and
> > Rx, and I am in the process of changing my driver code.
> > 
> > Why does the hardware not follow the normal standard here?
> We are building a PCIe 8250 based UART.  We can absolutely support the normal 8250 framework and standard drivers. 
> However, the challenges we see are the round-trip delays introduced by PCIe reads and writes having an impact on throughput, particularly if you are downstream of a PCIe tree with multiple hops.
> The sizes of the payloads are limited to 32-bit by the processor PIO, however, even going from 8-bit payloads to 32-bit payloads improves throughput dramatically.

What specific reads are you having problems with?

Why not just use DMA like other PCIe serial port cards do, which we have
supported for decades now.

> > And are you sure it will still not fit into the 8250 format?
> As mentioned our hardware can support this, however, we see that it is less efficient due to the requirement for single byte reads and writes.

Again, which reads/writes are taking a long time?  And again, why not
use DMA for the data instead?

> > > Can I model my custom driver on serial drivers present in drivers/tty/serial/
> > directory?
> > 
> > You could, but it would be much smaller and easier to use the 8250
> > framework given that you probably do have an 8250-like device, right?
> Adding DWORD reads/writes to the hardware is a necessary enhancement for improved performance over PCIe.
> But 8250 framework looks very closely tied with reading character by character from the FIFO and I was not able to find a place in that framework where I could hook my own DWORD based Rx and Tx logic.
> Is there any DWORD based UART FIFO driver example with 8250 framework available?

All of the code is there for you to read :)

thanks,

greg k-h



[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