#if NEURONSPI_DETAILED_DEBUG > 0
printk(KERN_DEBUG "NEURONSPI: UART registration 1\n");
#endif
- n_spi->uart_buf = kzalloc(NEURONSPI_FIFO_SIZE, GFP_KERNEL);
+ n_spi->uart_buf = kzalloc(NEURONSPI_FIFO_SIZE, GFP_ATOMIC);
neuronspi_uart_probe(spi, n_spi->neuron_index);
#if NEURONSPI_DETAILED_DEBUG > 0
printk(KERN_DEBUG "NEURONSPI: UART PROBE MCTRL:%d\n", neuronspi_spi_uart_get_cflag(spi, 0));
return;
}
+ spin_lock_irqsave(&port->port.lock, flags);
if (uart_circ_empty(xmit) || uart_tx_stopped(&port->port)) {
+ spin_unlock_irqrestore(&port->port.lock, flags);
spin_lock_irqsave(&port->tx_lock, flags);
port->tx_work_count--;
spin_unlock_irqrestore(&port->tx_lock, flags);
return;
}
+ spin_unlock_irqrestore(&port->port.lock, flags);
/* Get length of data pending in circular buffer */
spin_lock_irqsave(&port->port.lock, flags);
port->tx_work_count--;
spin_unlock_irqrestore(&port->tx_lock, flags);
+ spin_lock_irqsave(&port->port.lock, flags);
if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) {
- spin_lock_irqsave(&port->port.lock, flags);
uart_write_wakeup(&port->port);
- spin_unlock_irqrestore(&port->port.lock, flags);
}
+ spin_unlock_irqrestore(&port->port.lock, flags);
}
void neuronspi_uart_handle_irq(struct neuronspi_uart_data *uart_data, u32 portno)
-Repository:neuron-kernel ActiveBranch:[uart_timeout] PrecedingRelease:v.0.12 PrecedingRevision:68(b7675a2) LatestCommit:Wed Jun 27 17:06:39 CEST 2018
+Repository:neuron-kernel ActiveBranch:[uart_timeout] PrecedingRelease:v.0.12 PrecedingRevision:69(77704e8) LatestCommit:Wed Jun 27 17:37:58 CEST 2018