--- a/drivers/dma/dw/core.c +++ b/drivers/dma/dw/core.c @@ -167,6 +167,8 @@ static void dwc_initialize_chan_dw(struc cfghi |= DWC_CFGH_DST_PER(dwc->dws.dst_id); cfghi |= DWC_CFGH_SRC_PER(dwc->dws.src_id); + cfghi |= DWC_CFGH_PROTCTL(3); /* bufferable + privileged access */ + /* Set polarity of handshake interface */ cfglo |= hs_polarity ? DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL : 0; @@ -1293,11 +1295,8 @@ int dw_dma_probe(struct dw_dma_chip *chi else list_add(&dwc->chan.device_node, &dw->dma.channels); - /* 7 is highest priority & 0 is lowest. */ - if (pdata->chan_priority == CHAN_PRIORITY_ASCENDING) - dwc->priority = pdata->nr_channels - i - 1; - else - dwc->priority = i; + /* set all channels to the same priority */ + dwc->priority = pdata->nr_channels - 1; dwc->ch_regs = &__dw_regs(dw)->CHAN[i]; spin_lock_init(&dwc->lock);