On Tue, 2015-01-20 at 17:07 +0800, Keyon wrote: > On 2015年01月20日 16:57, Andy Shevchenko wrote: > > On Tue, 2015-01-20 at 14:41 +0800, Keyon wrote: > >> hi, Andy, > >> > >> will this change disable dw_dma_interrupt when dw_dma is set to off? > >> > >> I am debugging an ADSP issue on BDW and thinking of that we need disable > >> this interrupt(at least disable the interrupt reset part) when no > >> channel is used(dw->in_use == 0). > > This driver is not using it at all, so, this patch is a rather cosmetic > > change. Do you have this interrupt enabled by some reason (firmware?)? > yes, the firmware is using the same dma engine, while we set dma > off(with all channels freed). > the firmware won't use our kernel dma driver. > > If so, then it might make sense to disable it at interrupt handler as > > well. > yes, I have worked out a small patch for that and will send out to > review soon. It might make sense to fold both patches into one. Anyway, please, send what you have first. > >> ~Keyon > >> > >> On 2015年01月20日 00:20, Andy Shevchenko wrote: > >>> This patch moves disabling BLOCK interrupts code to dw_dma_off() function. It > >>> makes code a bit more consistent. > >>> > >>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > >>> --- > >>> drivers/dma/dw/core.c | 4 +--- > >>> 1 file changed, 1 insertion(+), 3 deletions(-) > >>> > >>> diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c > >>> index 0e7d94e..551edc3 100644 > >>> --- a/drivers/dma/dw/core.c > >>> +++ b/drivers/dma/dw/core.c > >>> @@ -1118,6 +1118,7 @@ static void dw_dma_off(struct dw_dma *dw) > >>> dma_writel(dw, CFG, 0); > >>> > >>> channel_clear_bit(dw, MASK.XFER, dw->all_chan_mask); > >>> + channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask); > >>> channel_clear_bit(dw, MASK.SRC_TRAN, dw->all_chan_mask); > >>> channel_clear_bit(dw, MASK.DST_TRAN, dw->all_chan_mask); > >>> channel_clear_bit(dw, MASK.ERROR, dw->all_chan_mask); > >>> @@ -1574,9 +1575,6 @@ int dw_dma_probe(struct dw_dma_chip *chip, struct dw_dma_platform_data *pdata) > >>> /* Force dma off, just in case */ > >>> dw_dma_off(dw); > >>> > >>> - /* Disable BLOCK interrupts as well */ > >>> - channel_clear_bit(dw, MASK.BLOCK, dw->all_chan_mask); > >>> - > >>> /* Create a pool of consistent memory blocks for hardware descriptors */ > >>> dw->desc_pool = dmam_pool_create("dw_dmac_desc_pool", chip->dev, > >>> sizeof(struct dw_desc), 4, 0); > > > -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html