Re: serial: start_tx & buffer handling
On Fri, May 4, 2018 at 12:04 AM, Greg KHwrote: > On Thu, May 03, 2018 at 08:08:48PM +0530, Muni Sekhar wrote: >> Hi All, >> >> I’m trying to understand how user mode buffer is written to low level >> serial hardware registers. >> >> For this I read the kernel code and I came to know that from user mode >> write() API lands into kernel’s tty_write() ("drivers/tty/tty_io.c") >> and then it calls a uart_write() ("drivers/tty/serial/serial_core.c"). >> >> In uart_write(), the buffer is copied to circ_buf and then it calls >> low level serial hardware driver’s start_tx() (struct uart_ops >> .start_tx). But here I could not find how the buffer kept in circ_buf >> is copied to serial port’s TX_FIFO registers? >> >> Can someone take a moment to explain me on this? > > It all depends on which specific UART driver you are looking at, they > all do it a bit different depending on the hardware. > > Which one are you looking at? Look at what the start_tx callback does > for that specific driver, that should give you a hint as to how data > starts flowing. Usually an interrupt is enabled that is used to flush > the buffer out to the hardware. > I’m looking for any existing sample code which does DMA transfers of UART transmitted data. I looked at the bcm63xx_uart.c, it looks it does not handle DMA transfers. Even copying the Tx buffer (from circ_buf) to UART_FIFO_REG happening in ISR. > thanks, > > greg k-h -- Thanks, Sekhar ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: serial: start_tx & buffer handling
On Thu, May 03, 2018 at 08:08:48PM +0530, Muni Sekhar wrote: > Hi All, > > I’m trying to understand how user mode buffer is written to low level > serial hardware registers. > > For this I read the kernel code and I came to know that from user mode > write() API lands into kernel’s tty_write() ("drivers/tty/tty_io.c") > and then it calls a uart_write() ("drivers/tty/serial/serial_core.c"). > > In uart_write(), the buffer is copied to circ_buf and then it calls > low level serial hardware driver’s start_tx() (struct uart_ops > .start_tx). But here I could not find how the buffer kept in circ_buf > is copied to serial port’s TX_FIFO registers? > > Can someone take a moment to explain me on this? It all depends on which specific UART driver you are looking at, they all do it a bit different depending on the hardware. Which one are you looking at? Look at what the start_tx callback does for that specific driver, that should give you a hint as to how data starts flowing. Usually an interrupt is enabled that is used to flush the buffer out to the hardware. thanks, greg k-h ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
serial: start_tx & buffer handling
Hi All, I’m trying to understand how user mode buffer is written to low level serial hardware registers. For this I read the kernel code and I came to know that from user mode write() API lands into kernel’s tty_write() ("drivers/tty/tty_io.c") and then it calls a uart_write() ("drivers/tty/serial/serial_core.c"). In uart_write(), the buffer is copied to circ_buf and then it calls low level serial hardware driver’s start_tx() (struct uart_ops .start_tx). But here I could not find how the buffer kept in circ_buf is copied to serial port’s TX_FIFO registers? Can someone take a moment to explain me on this? -- Thanks, Sekhar ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
serial: custom baud rate
Hi All, >From include/asm-generic/termbits.h , I see baudrate can be one of the standard values: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 50, 576000, 921600, 100, 1152000, 150, 200, 250, 300, 350, 400. If I need to set a custom baud rates(e.g. 14400, 128000, 256000), does Linux serial framework has any supporting method? -- Thanks, Sekhar ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies