in ps3-vuart.c [823:859]
static int ps3_vuart_handle_port_interrupt(struct ps3_system_bus_device *dev)
{
int result;
struct ps3_vuart_port_priv *priv = to_port_priv(dev);
unsigned long status;
result = ps3_vuart_get_interrupt_status(dev, &status);
if (result)
return result;
dev_dbg(&dev->core, "%s:%d: status: %lxh\n", __func__, __LINE__,
status);
if (status & INTERRUPT_MASK_DISCONNECT) {
priv->stats.disconnect_interrupts++;
result = ps3_vuart_handle_interrupt_disconnect(dev);
if (result)
ps3_vuart_disable_interrupt_disconnect(dev);
}
if (status & INTERRUPT_MASK_TX) {
priv->stats.tx_interrupts++;
result = ps3_vuart_handle_interrupt_tx(dev);
if (result)
ps3_vuart_disable_interrupt_tx(dev);
}
if (status & INTERRUPT_MASK_RX) {
priv->stats.rx_interrupts++;
result = ps3_vuart_handle_interrupt_rx(dev);
if (result)
ps3_vuart_disable_interrupt_rx(dev);
}
return 0;
}