int cpdma_ctlr_int_ctrl(struct cpdma_ctlr *ctlr, bool enable) { unsigned long flags; int i, reg; spin_lock_irqsave(&ctlr->lock, flags); if (ctlr->state != CPDMA_STATE_ACTIVE) { spin_unlock_irqrestore(&ctlr->lock, flags); return -EINVAL; } reg = enable ? CPDMA_DMAINTMASKSET : CPDMA_DMAINTMASKCLEAR; dma_reg_write(ctlr, reg, CPDMA_DMAINT_HOSTERR); for (i = 0; i < ARRAY_SIZE(ctlr->channels); i++) { if (ctlr->channels[i]) cpdma_chan_int_ctrl(ctlr->channels[i], enable); } spin_unlock_irqrestore(&ctlr->lock, flags); return 0; }
int cpdma_ctlr_int_ctrl(struct cpdma_ctlr *ctlr, bool enable) { rtdm_lockctx_t context; int i, reg; rtdm_lock_get_irqsave(&ctlr->lock, context); if (ctlr->state != CPDMA_STATE_ACTIVE) { rtdm_lock_put_irqrestore(&ctlr->lock, context); return -EINVAL; } reg = enable ? CPDMA_DMAINTMASKSET : CPDMA_DMAINTMASKCLEAR; dma_reg_write(ctlr, reg, CPDMA_DMAINT_HOSTERR); for (i = 0; i < ARRAY_SIZE(ctlr->channels); i++) { if (ctlr->channels[i]) cpdma_chan_int_ctrl(ctlr->channels[i], enable); } rtdm_lock_put_irqrestore(&ctlr->lock, context); return 0; }