On 01/17/2017 06:09 PM, Sergei Shtylyov wrote: > On 01/17/2017 04:45 PM, Alexandre Bailon wrote: > >> Despite the driver is already using DT to get the number of channels, >> init_sched() is using an hardcoded value to get it. >> Use DT to get the number of channels. >> >> Signed-off-by: Alexandre Bailon <abailon@xxxxxxxxxxxx> >> --- >> drivers/dma/cppi41.c | 33 ++++++++++++++++++++------------- >> 1 file changed, 20 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c >> index 3b2f57f..303ccee 100644 >> --- a/drivers/dma/cppi41.c >> +++ b/drivers/dma/cppi41.c > [...] >> @@ -832,7 +829,7 @@ static int init_descs(struct device *dev, struct >> cppi41_dd *cdd) >> return 0; >> } >> >> -static void init_sched(struct cppi41_dd *cdd) >> +static int init_sched(struct device *dev, struct cppi41_dd *cdd) >> { >> unsigned ch; >> unsigned word; > [...] >> @@ -850,9 +847,11 @@ static void init_sched(struct cppi41_dd *cdd) >> cppi_writel(reg, cdd->sched_mem + DMA_SCHED_WORD(word)); >> word++; >> } >> - reg = 15 * 2 * 2 - 1; >> + reg = cdd->n_chans * 2 - 1; >> reg |= DMA_SCHED_CTRL_EN; >> cppi_writel(reg, cdd->sched_mem + DMA_SCHED_CTRL); >> + >> + return 0; >> } >> >> static int init_cppi41(struct device *dev, struct cppi41_dd *cdd) >> @@ -871,12 +870,14 @@ static int init_cppi41(struct device *dev, >> struct cppi41_dd *cdd) >> >> ret = init_descs(dev, cdd); >> if (ret) >> - goto err_td; >> + goto deinit; >> >> cppi_writel(cdd->td_queue.submit, cdd->ctrl_mem + DMA_TDFDQ); >> - init_sched(cdd); >> + ret = init_sched(dev, cdd); >> + if (ret) > > What's the point if init_sched() always returns 0? In older version of this patch, I was able to return non zero in case of error. I will fix it. Best Regards, Alexandre > > [...] > > MBR, Sergei > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html