• 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.36/drivers/serial/

Lines Matching refs:up

241 static unsigned int sio_in(struct uart_sio_port *up, int offset)
243 return __sio_in(up->port.iobase + offset);
246 static void sio_out(struct uart_sio_port *up, int offset, int value)
248 __sio_out(value, up->port.iobase + offset);
251 static unsigned int serial_in(struct uart_sio_port *up, int offset)
259 static void serial_out(struct uart_sio_port *up, int offset, int value)
269 struct uart_sio_port *up = (struct uart_sio_port *)port;
271 if (up->ier & UART_IER_THRI) {
272 up->ier &= ~UART_IER_THRI;
273 serial_out(up, UART_IER, up->ier);
280 struct uart_sio_port *up = (struct uart_sio_port *)port;
281 struct circ_buf *xmit = &up->port.state->xmit;
283 if (!(up->ier & UART_IER_THRI)) {
284 up->ier |= UART_IER_THRI;
285 serial_out(up, UART_IER, up->ier);
286 serial_out(up, UART_TX, xmit->buf[xmit->tail]);
288 up->port.icount.tx++;
290 while((serial_in(up, UART_LSR) & UART_EMPTY) != UART_EMPTY);
292 struct uart_sio_port *up = (struct uart_sio_port *)port;
294 if (!(up->ier & UART_IER_THRI)) {
295 up->ier |= UART_IER_THRI;
296 serial_out(up, UART_IER, up->ier);
303 struct uart_sio_port *up = (struct uart_sio_port *)port;
305 up->ier &= ~UART_IER_RLSI;
306 up->port.read_status_mask &= ~UART_LSR_DR;
307 serial_out(up, UART_IER, up->ier);
312 struct uart_sio_port *up = (struct uart_sio_port *)port;
314 up->ier |= UART_IER_MSI;
315 serial_out(up, UART_IER, up->ier);
318 static void receive_chars(struct uart_sio_port *up, int *status)
320 struct tty_struct *tty = up->port.state->port.tty;
326 ch = sio_in(up, SIORXB);
328 up->port.icount.rx++;
337 up->port.icount.brk++;
344 if (uart_handle_break(&up->port))
347 up->port.icount.parity++;
349 up->port.icount.frame++;
351 up->port.icount.overrun++;
356 *status &= up->port.read_status_mask;
358 if (up->port.line == up->port.cons->index) {
360 *status |= up->lsr_break_flag;
361 up->lsr_break_flag = 0;
372 if (uart_handle_sysrq_char(&up->port, ch))
374 if ((*status & up->port.ignore_status_mask) == 0)
386 *status = serial_in(up, UART_LSR);
391 static void transmit_chars(struct uart_sio_port *up)
393 struct circ_buf *xmit = &up->port.state->xmit;
396 if (up->port.x_char) {
398 serial_out(up, UART_TX, up->port.x_char);
400 up->port.icount.tx++;
401 up->port.x_char = 0;
404 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {
405 m32r_sio_stop_tx(&up->port);
409 count = up->port.fifosize;
411 serial_out(up, UART_TX, xmit->buf[xmit->tail]);
413 up->port.icount.tx++;
416 while (!(serial_in(up, UART_LSR) & UART_LSR_THRE));
421 uart_write_wakeup(&up->port);
426 m32r_sio_stop_tx(&up->port);
432 static inline void m32r_sio_handle_port(struct uart_sio_port *up,
438 receive_chars(up, &status);
440 transmit_chars(up);
477 struct uart_sio_port *up;
480 up = list_entry(l, struct uart_sio_port, list);
482 sts = sio_in(up, SIOSTS);
484 spin_lock(&up->port.lock);
485 m32r_sio_handle_port(up, sts);
486 spin_unlock(&up->port.lock);
515 static void serial_do_unlink(struct irq_info *i, struct uart_sio_port *up)
520 if (i->head == &up->list)
522 list_del(&up->list);
524 BUG_ON(i->head != &up->list);
531 static int serial_link_irq_chain(struct uart_sio_port *up)
533 struct irq_info *i = irq_lists + up->port.irq;
539 list_add(&up->list, i->head);
544 INIT_LIST_HEAD(&up->list);
545 i->head = &up->list;
548 ret = request_irq(up->port.irq, m32r_sio_interrupt,
550 ret |= request_irq(up->port.irq + 1, m32r_sio_interrupt,
553 serial_do_unlink(i, up);
559 static void serial_unlink_irq_chain(struct uart_sio_port *up)
561 struct irq_info *i = irq_lists + up->port.irq;
566 free_irq(up->port.irq, i);
567 free_irq(up->port.irq + 1, i);
570 serial_do_unlink(i, up);
578 struct uart_sio_port *up = (struct uart_sio_port *)data;
582 sts = sio_in(up, SIOSTS);
584 spin_lock(&up->port.lock);
585 m32r_sio_handle_port(up, sts);
586 spin_unlock(&up->port.lock);
589 timeout = up->port.timeout;
591 mod_timer(&up->timer, jiffies + timeout);
596 struct uart_sio_port *up = (struct uart_sio_port *)port;
600 spin_lock_irqsave(&up->port.lock, flags);
601 ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
602 spin_unlock_irqrestore(&up->port.lock, flags);
624 struct uart_sio_port *up = (struct uart_sio_port *)port;
634 if (!is_real_interrupt(up->port.irq)) {
635 unsigned int timeout = up->port.timeout;
639 up->timer.data = (unsigned long)up;
640 mod_timer(&up->timer, jiffies + timeout);
642 retval = serial_link_irq_chain(up);
654 up->ier = UART_IER_MSI | UART_IER_RLSI | UART_IER_RDI;
655 sio_out(up, SIOTRCR, up->ier);
667 struct uart_sio_port *up = (struct uart_sio_port *)port;
672 up->ier = 0;
673 sio_out(up, SIOTRCR, 0);
681 if (!is_real_interrupt(up->port.irq))
682 del_timer_sync(&up->timer);
684 serial_unlink_irq_chain(up);
696 struct uart_sio_port *up = (struct uart_sio_port *)port;
742 spin_lock_irqsave(&up->port.lock, flags);
751 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR;
753 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE;
755 up->port.read_status_mask |= UART_LSR_BI;
760 up->port.ignore_status_mask = 0;
762 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE;
764 up->port.ignore_status_mask |= UART_LSR_BI;
770 up->port.ignore_status_mask |= UART_LSR_OE;
777 up->port.ignore_status_mask |= UART_LSR_DR;
782 up->ier &= ~UART_IER_MSI;
783 if (UART_ENABLE_MS(&up->port, termios->c_cflag))
784 up->ier |= UART_IER_MSI;
786 serial_out(up, UART_IER, up->ier);
788 up->lcr = cval; /* Save LCR */
789 spin_unlock_irqrestore(&up->port.lock, flags);
795 struct uart_sio_port *up = (struct uart_sio_port *)port;
797 if (up->pm)
798 up->pm(port, state, oldstate);
807 m32r_sio_request_std_resource(struct uart_sio_port *up, struct resource **res)
809 unsigned int size = 8 << up->port.regshift;
815 switch (up->port.iotype) {
817 if (up->port.mapbase) {
819 *res = request_mem_region(up->port.mapbase, size, "serial");
821 start = up->port.mapbase;
830 *res = request_region(up->port.iobase, size, "serial");
840 struct uart_sio_port *up = (struct uart_sio_port *)port;
843 size <<= up->port.regshift;
845 switch (up->port.iotype) {
847 if (up->port.mapbase) {
851 iounmap(up->port.membase);
852 up->port.membase = NULL;
854 start = up->port.mapbase;
858 release_mem_region(start, 8 << up->port.regshift);
863 start = up->port.iobase;
867 release_region(start + offset, 8 << up->port.regshift);
877 struct uart_sio_port *up = (struct uart_sio_port *)port;
881 ret = m32r_sio_request_std_resource(up, &res);
886 if (ret == 0 && up->port.flags & UPF_IOREMAP) {
889 up->port.membase = ioremap(up->port.mapbase, size);
890 if (!up->port.membase)
904 struct uart_sio_port *up = (struct uart_sio_port *)port;
906 spin_lock_irqsave(&up->port.lock, flags);
908 up->port.type = (PORT_M32R_SIO - PORT_M32R_BASE + 1);
909 up->port.fifosize = uart_config[up->port.type].dfl_xmit_fifo_size;
911 spin_unlock_irqrestore(&up->port.lock, flags);
958 struct uart_sio_port *up;
966 for (i = 0, up = m32r_sio_ports; i < ARRAY_SIZE(old_serial_port);
967 i++, up++) {
968 up->port.iobase = old_serial_port[i].port;
969 up->port.irq = irq_canonicalize(old_serial_port[i].irq);
970 up->port.uartclk = old_serial_port[i].baud_base * 16;
971 up->port.flags = old_serial_port[i].flags;
972 up->port.membase = old_serial_port[i].iomem_base;
973 up->port.iotype = old_serial_port[i].io_type;
974 up->port.regshift = old_serial_port[i].iomem_reg_shift;
975 up->port.ops = &m32r_sio_pops;
986 struct uart_sio_port *up = &m32r_sio_ports[i];
988 up->port.line = i;
989 up->port.ops = &m32r_sio_pops;
990 init_timer(&up->timer);
991 up->timer.function = m32r_sio_timeout;
996 up->mcr_mask = ~ALPHA_KLUDGE_MCR;
997 up->mcr_force = ALPHA_KLUDGE_MCR;
999 uart_add_one_port(drv, &up->port);
1008 static inline void wait_for_xmitr(struct uart_sio_port *up)
1012 /* Wait up to 10ms for the character(s) to be sent. */
1014 status = sio_in(up, SIOSTS);
1021 /* Wait up to 1s for flow control if necessary */
1022 if (up->port.flags & UPF_CONS_FLOW) {
1031 struct uart_sio_port *up = (struct uart_sio_port *)port;
1033 wait_for_xmitr(up);
1034 sio_out(up, SIOTXB, ch);
1046 struct uart_sio_port *up = &m32r_sio_ports[co->index];
1052 ier = sio_in(up, SIOTRCR);
1053 sio_out(up, SIOTRCR, 0);
1055 uart_console_write(&up->port, s, count, m32r_sio_console_putchar);
1061 wait_for_xmitr(up);
1062 sio_out(up, SIOTRCR, ier);