• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/serial/

Lines Matching refs:up

58 static int sport_uart_tx_chars(struct sport_uart_port *up);
61 static inline void tx_one_byte(struct sport_uart_port *up, unsigned int value)
64 up->txmask1, up->txmask2);
72 : [mask1]"d"(up->txmask1), [mask2]"d"(up->txmask2)
77 SPORT_PUT_TX(up, value);
80 static inline unsigned char rx_one_byte(struct sport_uart_port *up)
86 if ((up->csize + up->stopb) > 7)
87 value = SPORT_GET_RX32(up);
89 value = SPORT_GET_RX(up);
92 up->csize, up->rxmask);
110 : [val]"d"(value), [rxmask]"d"(up->rxmask), [lc]"a"(up->csize)
118 static int sport_uart_setup(struct sport_uart_port *up, int size, int baud_rate)
124 SPORT_PUT_TCR1(up, (LATFS | ITFS | TFSR | TLSBIT | ITCLK));
125 SPORT_PUT_TCR2(up, size + 1);
126 pr_debug("%s TCR1:%x, TCR2:%x\n", __func__, SPORT_GET_TCR1(up), SPORT_GET_TCR2(up));
129 SPORT_PUT_RCR1(up, (RCKFE | LARFS | LRFS | RFSR | IRCLK));
130 SPORT_PUT_RCR2(up, (size + 1) * 2 - 1);
131 pr_debug("%s RCR1:%x, RCR2:%x\n", __func__, SPORT_GET_RCR1(up), SPORT_GET_RCR2(up));
135 SPORT_PUT_TCLKDIV(up, tclkdiv);
136 SPORT_PUT_RCLKDIV(up, rclkdiv);
146 struct sport_uart_port *up = dev_id;
147 struct tty_struct *tty = up->port.state->port.tty;
150 spin_lock(&up->port.lock);
152 while (SPORT_GET_STAT(up) & RXNE) {
153 ch = rx_one_byte(up);
154 up->port.icount.rx++;
156 if (!uart_handle_sysrq_char(&up->port, ch))
161 spin_unlock(&up->port.lock);
168 struct sport_uart_port *up = dev_id;
170 spin_lock(&up->port.lock);
171 sport_uart_tx_chars(up);
172 spin_unlock(&up->port.lock);
179 struct sport_uart_port *up = dev_id;
180 struct tty_struct *tty = up->port.state->port.tty;
181 unsigned int stat = SPORT_GET_STAT(up);
183 spin_lock(&up->port.lock);
187 up->port.icount.overrun++;
189 SPORT_PUT_STAT(up, ROVF); /* Clear ROVF bit */
197 SPORT_PUT_TCR1(up, SPORT_GET_TCR1(up) & ~TSPEN);
198 SPORT_PUT_RCR1(up, SPORT_GET_RCR1(up) & ~RSPEN);
202 spin_unlock(&up->port.lock);
209 struct sport_uart_port *up = (struct sport_uart_port *)port;
210 if (up->cts_pin < 0)
214 if (SPORT_UART_GET_CTS(up))
222 struct sport_uart_port *up = (struct sport_uart_port *)port;
223 if (up->rts_pin < 0)
228 SPORT_UART_ENABLE_RTS(up);
230 SPORT_UART_DISABLE_RTS(up);
238 struct sport_uart_port *up = (struct sport_uart_port *)dev_id;
241 status = sport_get_mctrl(&up->port);
242 uart_handle_cts_change(&up->port, status & TIOCM_CTS);
262 struct sport_uart_port *up = (struct sport_uart_port *)port;
266 ret = request_irq(up->port.irq, sport_uart_rx_irq, 0,
267 "SPORT_UART_RX", up);
273 ret = request_irq(up->port.irq+1, sport_uart_tx_irq, 0,
274 "SPORT_UART_TX", up);
280 ret = request_irq(up->err_irq, sport_uart_err_irq, 0,
281 "SPORT_UART_STATUS", up);
288 if (up->cts_pin >= 0) {
289 if (request_irq(gpio_to_irq(up->cts_pin),
292 IRQF_DISABLED, "BFIN_SPORT_UART_CTS", up)) {
293 up->cts_pin = -1;
298 if (up->rts_pin >= 0)
299 gpio_direction_output(up->rts_pin, 0);
304 free_irq(up->port.irq+1, up);
306 free_irq(up->port.irq, up);
317 static int sport_uart_tx_chars(struct sport_uart_port *up)
319 struct circ_buf *xmit = &up->port.state->xmit;
321 if (SPORT_GET_STAT(up) & TXF)
324 if (up->port.x_char) {
325 tx_one_byte(up, up->port.x_char);
326 up->port.icount.tx++;
327 up->port.x_char = 0;
331 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {
337 if (SPORT_GET_STAT(up) & TXHRE)
338 sport_stop_tx(&up->port);
342 while(!(SPORT_GET_STAT(up) & TXF) && !uart_circ_empty(xmit)) {
343 tx_one_byte(up, xmit->buf[xmit->tail]);
345 up->port.icount.tx++;
349 uart_write_wakeup(&up->port);
356 struct sport_uart_port *up = (struct sport_uart_port *)port;
359 stat = SPORT_GET_STAT(up);
369 struct sport_uart_port *up = (struct sport_uart_port *)port;
373 if (!(SPORT_GET_TCR1(up) & TSPEN))
381 SPORT_PUT_TX(up, 0xffff);
382 while (!(SPORT_GET_STAT(up) & TXHRE))
385 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) & ~TSPEN));
393 struct sport_uart_port *up = (struct sport_uart_port *)port;
398 if (sport_uart_tx_chars(up)) {
400 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) | TSPEN));
409 struct sport_uart_port *up = (struct sport_uart_port *)port;
413 SPORT_PUT_RCR1(up, (SPORT_GET_RCR1(up) & ~RSPEN));
429 struct sport_uart_port *up = (struct sport_uart_port *)port;
434 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) & ~TSPEN));
435 SPORT_PUT_RCR1(up, (SPORT_GET_RCR1(up) & ~RSPEN));
438 free_irq(up->port.irq, up);
439 free_irq(up->port.irq+1, up);
440 free_irq(up->err_irq, up);
442 if (up->cts_pin >= 0)
443 free_irq(gpio_to_irq(up->cts_pin), up);
449 struct sport_uart_port *up = (struct sport_uart_port *)port;
452 return up->port.type == PORT_BFIN_SPORT ? "BFIN-SPORT-UART" : NULL;
468 struct sport_uart_port *up = (struct sport_uart_port *)port;
471 up->port.type = PORT_BFIN_SPORT;
483 struct sport_uart_port *up = (struct sport_uart_port *)port;
491 up->csize = 8;
494 up->csize = 7;
497 up->csize = 6;
500 up->csize = 5;
507 up->stopb = 1;
511 /* up->parib = 1; */
514 spin_lock_irqsave(&up->port.lock, flags);
524 up->rxmask = 0x01 | (((up->csize + up->stopb) * 2 - 1) << 0x8);
529 for (i = 0, up->txmask1 = 0; i < up->csize; i++)
530 up->txmask1 |= (1<<i);
531 up->txmask2 = (1<<i);
532 if (up->stopb) {
534 up->txmask2 |= (1<<i);
536 up->txmask1 <<= 1;
537 up->txmask2 <<= 1;
542 SPORT_PUT_TCR1(up, SPORT_GET_TCR1(up) & ~TSPEN);
543 SPORT_PUT_RCR1(up, SPORT_GET_RCR1(up) & ~RSPEN);
545 sport_uart_setup(up, up->csize + up->stopb, port->uartclk);
550 SPORT_PUT_TX(up, 0xffff);
551 SPORT_PUT_TX(up, 0xffff);
552 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) | TSPEN));
554 while (!(SPORT_GET_STAT(up) & TXHRE))
556 SPORT_PUT_TCR1(up, SPORT_GET_TCR1(up) & ~TSPEN);
563 SPORT_PUT_RCR1(up, SPORT_GET_RCR1(up) | RSPEN);
566 spin_unlock_irqrestore(&up->port.lock, flags);
598 struct sport_uart_port *up;
612 up = bfin_sport_uart_ports[co->index];
613 if (!up)
619 return uart_set_options(&up->port, co, baud, parity, bits, flow);
624 struct sport_uart_port *up = (struct sport_uart_port *)port;
626 while (SPORT_GET_STAT(up) & TXF)
629 tx_one_byte(up, ch);
638 struct sport_uart_port *up = bfin_sport_uart_ports[co->index];
641 spin_lock_irqsave(&up->port.lock, flags);
643 if (SPORT_GET_TCR1(up) & TSPEN)
644 uart_console_write(&up->port, s, count, sport_uart_console_putchar);
647 while (SPORT_GET_STAT(up) & TXF)
649 SPORT_PUT_TX(up, 0xffff);
651 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) | TSPEN));
654 uart_console_write(&up->port, s, count, sport_uart_console_putchar);
661 while (SPORT_GET_STAT(up) & TXF)
663 SPORT_PUT_TX(up, 0xffff);
664 while (!(SPORT_GET_STAT(up) & TXHRE))
668 SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) & ~TSPEN));
672 spin_unlock_irqrestore(&up->port.lock, flags);