Lines Matching refs:port
43 /* struct pic32_sport - pic32 serial port descriptor
44 * @port: uart port descriptor
45 * @idx: port index
56 struct uart_port port;
74 static inline struct pic32_sport *to_pic32_sport(struct uart_port *port)
76 return container_of(port, struct pic32_sport, port);
82 __raw_writel(val, sport->port.membase + reg);
87 return __raw_readl(sport->port.membase + reg);
137 static unsigned int pic32_uart_tx_empty(struct uart_port *port)
139 struct pic32_sport *sport = to_pic32_sport(port);
146 static void pic32_uart_set_mctrl(struct uart_port *port, unsigned int mctrl)
148 struct pic32_sport *sport = to_pic32_sport(port);
160 static unsigned int pic32_uart_get_mctrl(struct uart_port *port)
162 struct pic32_sport *sport = to_pic32_sport(port);
165 /* get the state of CTS input pin for this port */
199 static void pic32_uart_stop_tx(struct uart_port *port)
201 struct pic32_sport *sport = to_pic32_sport(port);
218 static void pic32_uart_start_tx(struct uart_port *port)
220 struct pic32_sport *sport = to_pic32_sport(port);
227 /* serial core request to stop rx, called before port shutdown */
228 static void pic32_uart_stop_rx(struct uart_port *port)
230 struct pic32_sport *sport = to_pic32_sport(port);
241 static void pic32_uart_break_ctl(struct uart_port *port, int ctl)
243 struct pic32_sport *sport = to_pic32_sport(port);
246 spin_lock_irqsave(&port->lock, flags);
255 spin_unlock_irqrestore(&port->lock, flags);
258 /* get port type in string format */
259 static const char *pic32_uart_type(struct uart_port *port)
261 return (port->type == PORT_PIC32) ? PIC32_DEV_NAME : NULL;
265 static void pic32_uart_do_rx(struct uart_port *port)
267 struct pic32_sport *sport = to_pic32_sport(port);
273 * serial port
277 spin_lock(&port->lock);
279 tty = &port->state->port;
293 port->icount.overrun++;
304 port->icount.rx++;
313 port->icount.parity++;
315 port->icount.frame++;
318 sta_reg &= port->read_status_mask;
326 if (uart_handle_sysrq_char(port, c))
329 if ((sta_reg & port->ignore_status_mask) == 0)
334 spin_unlock(&port->lock);
342 static void pic32_uart_do_tx(struct uart_port *port)
344 struct pic32_sport *sport = to_pic32_sport(port);
345 struct circ_buf *xmit = &port->state->xmit;
348 if (port->x_char) {
349 pic32_uart_writel(sport, PIC32_UART_TX, port->x_char);
350 port->icount.tx++;
351 port->x_char = 0;
355 if (uart_tx_stopped(port)) {
356 pic32_uart_stop_tx(port);
378 uart_xmit_advance(port, 1);
386 uart_write_wakeup(port);
400 struct uart_port *port = dev_id;
402 pic32_uart_do_rx(port);
410 struct uart_port *port = dev_id;
413 spin_lock_irqsave(&port->lock, flags);
414 pic32_uart_do_tx(port);
415 spin_unlock_irqrestore(&port->lock, flags);
428 static void pic32_uart_en_and_unmask(struct uart_port *port)
430 struct pic32_sport *sport = to_pic32_sport(port);
439 static void pic32_uart_dsbl_and_mask(struct uart_port *port)
441 struct pic32_sport *sport = to_pic32_sport(port);
453 static int pic32_uart_startup(struct uart_port *port)
455 struct pic32_sport *sport = to_pic32_sport(port);
456 u32 dflt_baud = (port->uartclk / PIC32_UART_DFLT_BRATE / 16) - 1;
473 pic32_uart_dsbl_and_mask(port);
489 pic32_uart_type(port),
492 dev_err(port->dev, "%s: kasprintf err!", __func__);
498 IRQF_NO_THREAD, sport->irq_fault_name, port);
500 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
502 pic32_uart_type(port));
507 pic32_uart_type(port),
510 dev_err(port->dev, "%s: kasprintf err!", __func__);
516 IRQF_NO_THREAD, sport->irq_rx_name, port);
518 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
520 pic32_uart_type(port));
525 pic32_uart_type(port),
528 dev_err(port->dev, "%s: kasprintf err!", __func__);
534 IRQF_NO_THREAD, sport->irq_tx_name, port);
536 dev_err(port->dev, "%s: request irq(%d) err! ret:%d name:%s\n",
538 pic32_uart_type(port));
553 pic32_uart_en_and_unmask(port);
562 free_irq(sport->irq_tx, port);
565 free_irq(sport->irq_rx, port);
568 free_irq(sport->irq_fault, port);
577 static void pic32_uart_shutdown(struct uart_port *port)
579 struct pic32_sport *sport = to_pic32_sport(port);
583 spin_lock_irqsave(&port->lock, flags);
584 pic32_uart_dsbl_and_mask(port);
585 spin_unlock_irqrestore(&port->lock, flags);
589 free_irq(sport->irq_fault, port);
591 free_irq(sport->irq_tx, port);
593 free_irq(sport->irq_rx, port);
598 static void pic32_uart_set_termios(struct uart_port *port,
602 struct pic32_sport *sport = to_pic32_sport(port);
607 spin_lock_irqsave(&port->lock, flags);
610 pic32_uart_dsbl_and_mask(port);
664 baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16);
665 quot = uart_get_divisor(port, baud) - 1;
667 uart_update_timeout(port, new->c_cflag, baud);
673 pic32_uart_en_and_unmask(port);
675 spin_unlock_irqrestore(&port->lock, flags);
679 static int pic32_uart_request_port(struct uart_port *port)
681 struct platform_device *pdev = to_platform_device(port->dev);
688 if (!request_mem_region(port->mapbase, resource_size(res_mem),
692 port->membase = devm_ioremap(port->dev, port->mapbase,
694 if (!port->membase) {
695 dev_err(port->dev, "Unable to map registers\n");
696 release_mem_region(port->mapbase, resource_size(res_mem));
704 static void pic32_uart_release_port(struct uart_port *port)
706 struct platform_device *pdev = to_platform_device(port->dev);
715 release_mem_region(port->mapbase, res_size);
718 /* serial core request to do any port required auto-configuration */
719 static void pic32_uart_config_port(struct uart_port *port, int flags)
722 if (pic32_uart_request_port(port))
724 port->type = PORT_PIC32;
728 /* serial core request to check that port information in serinfo are suitable */
729 static int pic32_uart_verify_port(struct uart_port *port,
732 if (port->type != PORT_PIC32)
734 if (port->irq != serinfo->irq)
736 if (port->iotype != serinfo->io_type)
738 if (port->mapbase != (unsigned long)serinfo->iomem_base)
765 static void pic32_console_putchar(struct uart_port *port, unsigned char ch)
767 struct pic32_sport *sport = to_pic32_sport(port);
788 uart_console_write(&sport->port, s, count, pic32_console_putchar);
792 * port and setup it.
817 return uart_set_options(&sport->port, co, baud, parity, bits, flow);
871 struct uart_port *port;
904 port = &sport->port;
905 port->iotype = UPIO_MEM;
906 port->mapbase = res_mem->start;
907 port->ops = &pic32_uart_ops;
908 port->flags = UPF_BOOT_AUTOCONF;
909 port->dev = &pdev->dev;
910 port->fifosize = PIC32_UART_TX_FIFO_DEPTH;
911 port->uartclk = clk_get_rate(sport->clk);
912 port->line = uart_idx;
914 ret = uart_add_one_port(&pic32_uart_driver, port);
916 port->membase = NULL;
917 dev_err(port->dev, "%s: uart add port error!\n", __func__);
922 if (uart_console_registered(port)) {
924 * so disable it till the port is used.
930 platform_set_drvdata(pdev, port);
943 struct uart_port *port = platform_get_drvdata(pdev);
944 struct pic32_sport *sport = to_pic32_sport(port);
946 uart_remove_one_port(&pic32_uart_driver, port);
1003 MODULE_DESCRIPTION("Microchip PIC32 integrated serial port driver");