Lines Matching refs:sport
80 static inline void pic32_uart_writel(struct pic32_sport *sport, in pic32_uart_writel() argument
83 __raw_writel(val, sport->port.membase + reg); in pic32_uart_writel()
86 static inline u32 pic32_uart_readl(struct pic32_sport *sport, u32 reg) in pic32_uart_readl() argument
88 return __raw_readl(sport->port.membase + reg); in pic32_uart_readl()
130 static inline void pic32_wait_deplete_txbuf(struct pic32_sport *sport) in pic32_wait_deplete_txbuf() argument
133 while (!(pic32_uart_readl(sport, PIC32_UART_STA) & PIC32_UART_STA_TRMT)) in pic32_wait_deplete_txbuf()
140 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_tx_empty() local
141 u32 val = pic32_uart_readl(sport, PIC32_UART_STA); in pic32_uart_tx_empty()
149 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_set_mctrl() local
153 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_set_mctrl()
156 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_mctrl()
163 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_get_mctrl() local
167 if (!sport->cts_gpiod) in pic32_uart_get_mctrl()
169 else if (gpiod_get_value(sport->cts_gpiod)) in pic32_uart_get_mctrl()
184 static inline void pic32_uart_irqtxen(struct pic32_sport *sport, u8 en) in pic32_uart_irqtxen() argument
186 if (en && !sport->enable_tx_irq) { in pic32_uart_irqtxen()
187 enable_irq(sport->irq_tx); in pic32_uart_irqtxen()
188 sport->enable_tx_irq = true; in pic32_uart_irqtxen()
189 } else if (!en && sport->enable_tx_irq) { in pic32_uart_irqtxen()
194 disable_irq_nosync(sport->irq_tx); in pic32_uart_irqtxen()
195 sport->enable_tx_irq = false; in pic32_uart_irqtxen()
202 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_stop_tx() local
204 if (!(pic32_uart_readl(sport, PIC32_UART_MODE) & PIC32_UART_MODE_ON)) in pic32_uart_stop_tx()
207 if (!(pic32_uart_readl(sport, PIC32_UART_STA) & PIC32_UART_STA_UTXEN)) in pic32_uart_stop_tx()
211 pic32_wait_deplete_txbuf(sport); in pic32_uart_stop_tx()
213 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_stop_tx()
215 pic32_uart_irqtxen(sport, 0); in pic32_uart_stop_tx()
221 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_start_tx() local
223 pic32_uart_irqtxen(sport, 1); in pic32_uart_start_tx()
224 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_STA), in pic32_uart_start_tx()
231 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_stop_rx() local
234 disable_irq(sport->irq_rx); in pic32_uart_stop_rx()
237 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_stop_rx()
244 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_break_ctl() local
250 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_STA), in pic32_uart_break_ctl()
253 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_break_ctl()
268 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_do_rx() local
287 sta_reg = pic32_uart_readl(sport, PIC32_UART_STA); in pic32_uart_do_rx()
291 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_do_rx()
303 c = pic32_uart_readl(sport, PIC32_UART_RX); in pic32_uart_do_rx()
345 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_do_tx() local
350 pic32_uart_writel(sport, PIC32_UART_TX, port->x_char); in pic32_uart_do_tx()
374 pic32_uart_readl(sport, PIC32_UART_STA))) { in pic32_uart_do_tx()
377 pic32_uart_writel(sport, PIC32_UART_TX, c); in pic32_uart_do_tx()
396 pic32_uart_irqtxen(sport, 0); in pic32_uart_do_tx()
432 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_en_and_unmask() local
434 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_STA), in pic32_uart_en_and_unmask()
436 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_en_and_unmask()
443 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_dsbl_and_mask() local
446 pic32_wait_deplete_txbuf(sport); in pic32_uart_dsbl_and_mask()
448 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_dsbl_and_mask()
450 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_dsbl_and_mask()
457 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_startup() local
464 ret = clk_prepare_enable(sport->clk); in pic32_uart_startup()
471 pic32_uart_writel(sport, PIC32_UART_MODE, 0); in pic32_uart_startup()
472 pic32_uart_writel(sport, PIC32_UART_STA, 0); in pic32_uart_startup()
478 pic32_uart_writel(sport, PIC32_UART_BRG, dflt_baud); in pic32_uart_startup()
488 sport->enable_tx_irq = false; in pic32_uart_startup()
490 sport->irq_fault_name = kasprintf(GFP_KERNEL, "%s%d-fault", in pic32_uart_startup()
492 sport->idx); in pic32_uart_startup()
493 if (!sport->irq_fault_name) { in pic32_uart_startup()
498 irq_set_status_flags(sport->irq_fault, IRQ_NOAUTOEN); in pic32_uart_startup()
499 ret = request_irq(sport->irq_fault, pic32_uart_fault_interrupt, in pic32_uart_startup()
500 IRQF_NO_THREAD, sport->irq_fault_name, port); in pic32_uart_startup()
503 __func__, sport->irq_fault, ret, in pic32_uart_startup()
508 sport->irq_rx_name = kasprintf(GFP_KERNEL, "%s%d-rx", in pic32_uart_startup()
510 sport->idx); in pic32_uart_startup()
511 if (!sport->irq_rx_name) { in pic32_uart_startup()
516 irq_set_status_flags(sport->irq_rx, IRQ_NOAUTOEN); in pic32_uart_startup()
517 ret = request_irq(sport->irq_rx, pic32_uart_rx_interrupt, in pic32_uart_startup()
518 IRQF_NO_THREAD, sport->irq_rx_name, port); in pic32_uart_startup()
521 __func__, sport->irq_rx, ret, in pic32_uart_startup()
526 sport->irq_tx_name = kasprintf(GFP_KERNEL, "%s%d-tx", in pic32_uart_startup()
528 sport->idx); in pic32_uart_startup()
529 if (!sport->irq_tx_name) { in pic32_uart_startup()
534 irq_set_status_flags(sport->irq_tx, IRQ_NOAUTOEN); in pic32_uart_startup()
535 ret = request_irq(sport->irq_tx, pic32_uart_tx_interrupt, in pic32_uart_startup()
536 IRQF_NO_THREAD, sport->irq_tx_name, port); in pic32_uart_startup()
539 __func__, sport->irq_tx, ret, in pic32_uart_startup()
547 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_startup()
551 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_STA), in pic32_uart_startup()
559 enable_irq(sport->irq_rx); in pic32_uart_startup()
564 free_irq(sport->irq_tx, port); in pic32_uart_startup()
565 kfree(sport->irq_tx_name); in pic32_uart_startup()
567 free_irq(sport->irq_rx, port); in pic32_uart_startup()
568 kfree(sport->irq_rx_name); in pic32_uart_startup()
570 free_irq(sport->irq_fault, port); in pic32_uart_startup()
571 kfree(sport->irq_fault_name); in pic32_uart_startup()
573 clk_disable_unprepare(sport->clk); in pic32_uart_startup()
581 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_shutdown() local
588 clk_disable_unprepare(sport->clk); in pic32_uart_shutdown()
591 free_irq(sport->irq_fault, port); in pic32_uart_shutdown()
592 kfree(sport->irq_fault_name); in pic32_uart_shutdown()
593 free_irq(sport->irq_tx, port); in pic32_uart_shutdown()
594 kfree(sport->irq_tx_name); in pic32_uart_shutdown()
595 free_irq(sport->irq_rx, port); in pic32_uart_shutdown()
596 kfree(sport->irq_rx_name); in pic32_uart_shutdown()
604 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_set_termios() local
616 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_set_termios()
619 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
625 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_set_termios()
627 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
630 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_set_termios()
632 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
636 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
641 if ((new->c_cflag & CRTSCTS) && sport->cts_gpiod) { in pic32_uart_set_termios()
643 pic32_uart_writel(sport, PIC32_SET(PIC32_UART_MODE), in pic32_uart_set_termios()
645 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
647 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
651 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
653 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
655 pic32_uart_writel(sport, PIC32_CLR(PIC32_UART_MODE), in pic32_uart_set_termios()
668 pic32_uart_writel(sport, PIC32_UART_BRG, quot); in pic32_uart_set_termios()
769 struct pic32_sport *sport = to_pic32_sport(port); in pic32_console_putchar() local
771 if (!(pic32_uart_readl(sport, PIC32_UART_MODE) & PIC32_UART_MODE_ON)) in pic32_console_putchar()
774 if (!(pic32_uart_readl(sport, PIC32_UART_STA) & PIC32_UART_STA_UTXEN)) in pic32_console_putchar()
778 pic32_wait_deplete_txbuf(sport); in pic32_console_putchar()
780 pic32_uart_writel(sport, PIC32_UART_TX, ch & 0xff); in pic32_console_putchar()
787 struct pic32_sport *sport = pic32_sports[co->index]; in pic32_console_write() local
790 uart_console_write(&sport->port, s, count, pic32_console_putchar); in pic32_console_write()
798 struct pic32_sport *sport; in pic32_console_setup() local
808 sport = pic32_sports[co->index]; in pic32_console_setup()
809 if (!sport) in pic32_console_setup()
812 ret = clk_prepare_enable(sport->clk); in pic32_console_setup()
819 return uart_set_options(&sport->port, co, baud, parity, bits, flow); in pic32_console_setup()
870 struct pic32_sport *sport; in pic32_uart_probe() local
884 sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL); in pic32_uart_probe()
885 if (!sport) in pic32_uart_probe()
888 sport->idx = uart_idx; in pic32_uart_probe()
889 sport->irq_fault = irq_of_parse_and_map(np, 0); in pic32_uart_probe()
890 sport->irq_rx = irq_of_parse_and_map(np, 1); in pic32_uart_probe()
891 sport->irq_tx = irq_of_parse_and_map(np, 2); in pic32_uart_probe()
892 sport->clk = devm_clk_get(&pdev->dev, NULL); in pic32_uart_probe()
893 sport->dev = &pdev->dev; in pic32_uart_probe()
898 sport->cts_gpiod = devm_gpiod_get_optional(dev, "cts", GPIOD_IN); in pic32_uart_probe()
899 if (IS_ERR(sport->cts_gpiod)) in pic32_uart_probe()
900 return dev_err_probe(dev, PTR_ERR(sport->cts_gpiod), "error requesting CTS GPIO\n"); in pic32_uart_probe()
901 gpiod_set_consumer_name(sport->cts_gpiod, "CTS"); in pic32_uart_probe()
903 pic32_sports[uart_idx] = sport; in pic32_uart_probe()
904 port = &sport->port; in pic32_uart_probe()
911 port->uartclk = clk_get_rate(sport->clk); in pic32_uart_probe()
926 clk_disable_unprepare(sport->clk); in pic32_uart_probe()
944 struct pic32_sport *sport = to_pic32_sport(port); in pic32_uart_remove() local
947 clk_disable_unprepare(sport->clk); in pic32_uart_remove()
949 pic32_sports[sport->idx] = NULL; in pic32_uart_remove()