Lines Matching refs:port
63 static unsigned int pic32_uart_tx_empty(struct uart_port *port)
65 struct pic32_sport *sport = to_pic32_sport(port);
72 static void pic32_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
74 struct pic32_sport *sport = to_pic32_sport(port);
85 /* get the state of CTS input pin for this port */
96 static unsigned int pic32_uart_get_mctrl(struct uart_port *port)
98 struct pic32_sport *sport = to_pic32_sport(port);
134 static void pic32_uart_stop_tx(struct uart_port *port)
136 struct pic32_sport *sport = to_pic32_sport(port);
153 static void pic32_uart_start_tx(struct uart_port *port)
155 struct pic32_sport *sport = to_pic32_sport(port);
162 /* serial core request to stop rx, called before port shutdown */
163 static void pic32_uart_stop_rx(struct uart_port *port)
165 struct pic32_sport *sport = to_pic32_sport(port);
176 static void pic32_uart_break_ctl(struct uart_port *port, int ctl)
178 struct pic32_sport *sport = to_pic32_sport(port);
181 spin_lock_irqsave(&port->lock, flags);
190 spin_unlock_irqrestore(&port->lock, flags);
193 /* get port type in string format */
194 static const char *pic32_uart_type(struct uart_port *port)
196 return (port->type == PORT_PIC32) ? PIC32_DEV_NAME : NULL;
200 static void pic32_uart_do_rx(struct uart_port *port)
202 struct pic32_sport *sport = to_pic32_sport(port);
208 * serial port
212 spin_lock(&port->lock);
214 tty = &port->state->port;
228 port->icount.overrun++;
239 port->icount.rx++;
248 port->icount.parity++;
250 port->icount.frame++;
253 sta_reg &= port->read_status_mask;
261 if (uart_handle_sysrq_char(port, c))
264 if ((sta_reg & port->ignore_status_mask) == 0)
269 spin_unlock(&port->lock);
277 static void pic32_uart_do_tx(struct uart_port *port)
279 struct pic32_sport *sport = to_pic32_sport(port);
280 struct circ_buf *xmit = &port->state->xmit;
283 if (port->x_char) {
284 pic32_uart_writel(sport, PIC32_UART_TX, port->x_char);
285 port->icount.tx++;
286 port->x_char = 0;
290 if (uart_tx_stopped(port)) {
291 pic32_uart_stop_tx(port);
314 port->icount.tx++;
322 uart_write_wakeup(port);
336 struct uart_port *port = dev_id;
338 pic32_uart_do_rx(port);
346 struct uart_port *port = dev_id;
349 spin_lock_irqsave(&port->lock, flags);
350 pic32_uart_do_tx(port);
351 spin_unlock_irqrestore(&port->lock, flags);
364 static void pic32_uart_en_and_unmask(struct uart_port *port)
366 struct pic32_sport *sport = to_pic32_sport(port);
375 static void pic32_uart_dsbl_and_mask(struct uart_port *port)
377 struct pic32_sport *sport = to_pic32_sport(port);
389 static int pic32_uart_startup(struct uart_port *port)
391 struct pic32_sport *sport = to_pic32_sport(port);
392 u32 dflt_baud = (port->uartclk / PIC32_UART_DFLT_BRATE / 16) - 1;
409 pic32_uart_dsbl_and_mask(port);
425 pic32_uart_type(port),
428 dev_err(port->dev, "%s: kasprintf err!", __func__);
434 sport->irqflags_fault, sport->irq_fault_name, port);
436 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
438 pic32_uart_type(port));
443 pic32_uart_type(port),
446 dev_err(port->dev, "%s: kasprintf err!", __func__);
452 sport->irqflags_rx, sport->irq_rx_name, port);
454 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
456 pic32_uart_type(port));
461 pic32_uart_type(port),
464 dev_err(port->dev, "%s: kasprintf err!", __func__);
470 sport->irqflags_tx, sport->irq_tx_name, port);
472 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
474 pic32_uart_type(port));
489 pic32_uart_en_and_unmask(port);
497 free_irq(sport->irq_tx, port);
500 free_irq(sport->irq_rx, port);
503 free_irq(sport->irq_fault, port);
509 static void pic32_uart_shutdown(struct uart_port *port)
511 struct pic32_sport *sport = to_pic32_sport(port);
515 spin_lock_irqsave(&port->lock, flags);
516 pic32_uart_dsbl_and_mask(port);
517 spin_unlock_irqrestore(&port->lock, flags);
521 free_irq(sport->irq_fault, port);
522 free_irq(sport->irq_tx, port);
523 free_irq(sport->irq_rx, port);
527 static void pic32_uart_set_termios(struct uart_port *port,
531 struct pic32_sport *sport = to_pic32_sport(port);
536 spin_lock_irqsave(&port->lock, flags);
539 pic32_uart_dsbl_and_mask(port);
593 baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16);
594 quot = uart_get_divisor(port, baud) - 1;
596 uart_update_timeout(port, new->c_cflag, baud);
602 pic32_uart_en_and_unmask(port);
604 spin_unlock_irqrestore(&port->lock, flags);
608 static int pic32_uart_request_port(struct uart_port *port)
610 struct platform_device *pdev = to_platform_device(port->dev);
617 if (!request_mem_region(port->mapbase, resource_size(res_mem),
621 port->membase = devm_ioremap(port->dev, port->mapbase,
623 if (!port->membase) {
624 dev_err(port->dev, "Unable to map registers\n");
625 release_mem_region(port->mapbase, resource_size(res_mem));
633 static void pic32_uart_release_port(struct uart_port *port)
635 struct platform_device *pdev = to_platform_device(port->dev);
644 release_mem_region(port->mapbase, res_size);
647 /* serial core request to do any port required auto-configuration */
648 static void pic32_uart_config_port(struct uart_port *port, int flags)
651 if (pic32_uart_request_port(port))
653 port->type = PORT_PIC32;
657 /* serial core request to check that port information in serinfo are suitable */
658 static int pic32_uart_verify_port(struct uart_port *port,
661 if (port->type != PORT_PIC32)
663 if (port->irq != serinfo->irq)
665 if (port->iotype != serinfo->io_type)
667 if (port->mapbase != (unsigned long)serinfo->iomem_base)
694 static void pic32_console_putchar(struct uart_port *port, int ch)
696 struct pic32_sport *sport = to_pic32_sport(port);
715 struct uart_port *port = pic32_get_port(sport);
718 uart_console_write(port, s, count, pic32_console_putchar);
722 * port and setup it.
727 struct uart_port *port = NULL;
740 port = pic32_get_port(sport);
749 return uart_set_options(port, co, baud, parity, bits, flow);
802 struct uart_port *port;
852 port = &sport->port;
853 memset(port, 0, sizeof(*port));
854 port->iotype = UPIO_MEM;
855 port->mapbase = res_mem->start;
856 port->ops = &pic32_uart_ops;
857 port->flags = UPF_BOOT_AUTOCONF;
858 port->dev = &pdev->dev;
859 port->fifosize = PIC32_UART_TX_FIFO_DEPTH;
860 port->uartclk = clk_get_rate(sport->clk);
861 port->line = uart_idx;
863 ret = uart_add_one_port(&pic32_uart_driver, port);
865 port->membase = NULL;
866 dev_err(port->dev, "%s: uart add port error!\n", __func__);
871 if (uart_console(port) && (pic32_console.flags & CON_ENABLED)) {
873 * so disable it till the port is used.
879 platform_set_drvdata(pdev, port);
892 struct uart_port *port = platform_get_drvdata(pdev);
893 struct pic32_sport *sport = to_pic32_sport(port);
895 uart_remove_one_port(&pic32_uart_driver, port);
952 MODULE_DESCRIPTION("Microchip PIC32 integrated serial port driver");