static void spi_clps711x_setup_mode(struct spi_device *spi) { /* Setup edge for transfer */ if (spi->mode & SPI_CPHA) clps_writew(clps_readw(SYSCON3) | SYSCON3_ADCCKNSEN, SYSCON3); else clps_writew(clps_readw(SYSCON3) & ~SYSCON3_ADCCKNSEN, SYSCON3); }
static irqreturn_t uart_clps711x_int_rx(int irq, void *dev_id) { struct uart_port *port = dev_id; struct tty_struct *tty = tty_port_tty_get(&port->state->port); unsigned int status, ch, flg; if (!tty) return IRQ_HANDLED; for (;;) { status = clps_readl(SYSFLG(port)); if (status & SYSFLG_URXFE) break; ch = clps_readw(UARTDR(port)); status = ch & (UARTDR_FRMERR | UARTDR_PARERR | UARTDR_OVERR); ch &= 0xff; port->icount.rx++; flg = TTY_NORMAL; if (unlikely(status)) { if (status & UARTDR_PARERR) port->icount.parity++; else if (status & UARTDR_FRMERR) port->icount.frame++; else if (status & UARTDR_OVERR) port->icount.overrun++; status &= port->read_status_mask; if (status & UARTDR_PARERR) flg = TTY_PARITY; else if (status & UARTDR_FRMERR) flg = TTY_FRAME; else if (status & UARTDR_OVERR) flg = TTY_OVERRUN; } if (uart_handle_sysrq_char(port, ch)) continue; if (status & port->ignore_status_mask) continue; uart_insert_char(port, status, UARTDR_OVERR, ch, flg); } tty_flip_buffer_push(tty); tty_kref_put(tty); return IRQ_HANDLED; }