Lines Matching +full:rs485 +full:- +full:rts +full:- +full:delay
1 // SPDX-License-Identifier: GPL-2.0
36 struct serial_rs485 *rs485) in lpc18xx_rs485_config() argument
43 if (rs485->flags & SER_RS485_ENABLED) { in lpc18xx_rs485_config()
47 if (rs485->flags & SER_RS485_RTS_ON_SEND) in lpc18xx_rs485_config()
51 if (rs485->delay_rts_after_send) { in lpc18xx_rs485_config()
52 baud_clk = port->uartclk / up->dl_read(up); in lpc18xx_rs485_config()
53 rs485_dly_reg = DIV_ROUND_UP(rs485->delay_rts_after_send in lpc18xx_rs485_config()
59 /* Calculate the resulting delay in ms */ in lpc18xx_rs485_config()
60 rs485->delay_rts_after_send = (rs485_dly_reg * MSEC_PER_SEC) in lpc18xx_rs485_config()
80 offset = offset << p->regshift; in lpc18xx_uart_serial_out()
81 writel(value, p->membase + offset); in lpc18xx_uart_serial_out()
87 /* Delay RTS before send is not supported */
99 dev_err(&pdev->dev, "memory resource not found"); in lpc18xx_serial_probe()
100 return -EINVAL; in lpc18xx_serial_probe()
105 uart.port.membase = devm_ioremap(&pdev->dev, res->start, in lpc18xx_serial_probe()
108 return -ENOMEM; in lpc18xx_serial_probe()
110 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in lpc18xx_serial_probe()
112 return -ENOMEM; in lpc18xx_serial_probe()
114 data->clk_uart = devm_clk_get(&pdev->dev, "uartclk"); in lpc18xx_serial_probe()
115 if (IS_ERR(data->clk_uart)) { in lpc18xx_serial_probe()
116 dev_err(&pdev->dev, "uart clock not found\n"); in lpc18xx_serial_probe()
117 return PTR_ERR(data->clk_uart); in lpc18xx_serial_probe()
120 data->clk_reg = devm_clk_get(&pdev->dev, "reg"); in lpc18xx_serial_probe()
121 if (IS_ERR(data->clk_reg)) { in lpc18xx_serial_probe()
122 dev_err(&pdev->dev, "reg clock not found\n"); in lpc18xx_serial_probe()
123 return PTR_ERR(data->clk_reg); in lpc18xx_serial_probe()
126 ret = clk_prepare_enable(data->clk_reg); in lpc18xx_serial_probe()
128 dev_err(&pdev->dev, "unable to enable reg clock\n"); in lpc18xx_serial_probe()
132 ret = clk_prepare_enable(data->clk_uart); in lpc18xx_serial_probe()
134 dev_err(&pdev->dev, "unable to enable uart clock\n"); in lpc18xx_serial_probe()
138 data->dma.rx_param = data; in lpc18xx_serial_probe()
139 data->dma.tx_param = data; in lpc18xx_serial_probe()
142 uart.port.dev = &pdev->dev; in lpc18xx_serial_probe()
143 uart.port.mapbase = res->start; in lpc18xx_serial_probe()
146 uart.port.uartclk = clk_get_rate(data->clk_uart); in lpc18xx_serial_probe()
159 uart.dma = &data->dma; in lpc18xx_serial_probe()
160 uart.dma->rxconf.src_maxburst = 1; in lpc18xx_serial_probe()
161 uart.dma->txconf.dst_maxburst = 1; in lpc18xx_serial_probe()
165 dev_err(&pdev->dev, "unable to register 8250 port\n"); in lpc18xx_serial_probe()
169 data->line = ret; in lpc18xx_serial_probe()
175 clk_disable_unprepare(data->clk_uart); in lpc18xx_serial_probe()
177 clk_disable_unprepare(data->clk_reg); in lpc18xx_serial_probe()
185 serial8250_unregister_port(data->line); in lpc18xx_serial_remove()
186 clk_disable_unprepare(data->clk_uart); in lpc18xx_serial_remove()
187 clk_disable_unprepare(data->clk_reg); in lpc18xx_serial_remove()
191 { .compatible = "nxp,lpc1850-uart" },
200 .name = "lpc18xx-uart",