Message ID | 1557249513-4903-12-git-send-email-yibin.gong@nxp.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | add ecspi ERR009165 for i.mx6/7 soc family | expand |
On 07-05-19, 09:16, Robin Gong wrote: > Because the number of ecspi1 rx event on i.mx8mm is 0, the condition > check ignore such special case without dma channel enabled, which caused > ecspi1 rx works failed. Actually, no need to check event_id0, checking > event_id1 is enough for DEV_2_DEV case because it's so lucky that event_id1 > never be 0. Well is that by chance or design that event_id1 will be never 0? > > Signed-off-by: Robin Gong <yibin.gong@nxp.com> > --- > drivers/dma/imx-sdma.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c > index a495c7f..86594fc 100644 > --- a/drivers/dma/imx-sdma.c > +++ b/drivers/dma/imx-sdma.c > @@ -1370,8 +1370,8 @@ static void sdma_free_chan_resources(struct dma_chan *chan) > > sdma_channel_synchronize(chan); > > - if (sdmac->event_id0) > - sdma_event_disable(sdmac, sdmac->event_id0); > + sdma_event_disable(sdmac, sdmac->event_id0); > + > if (sdmac->event_id1) > sdma_event_disable(sdmac, sdmac->event_id1); > > @@ -1670,11 +1670,9 @@ static int sdma_config(struct dma_chan *chan, > memcpy(&sdmac->slave_config, dmaengine_cfg, sizeof(*dmaengine_cfg)); > > /* Set ENBLn earlier to make sure dma request triggered after that */ > - if (sdmac->event_id0) { > - if (sdmac->event_id0 >= sdmac->sdma->drvdata->num_events) > - return -EINVAL; > - sdma_event_enable(sdmac, sdmac->event_id0); > - } > + if (sdmac->event_id0 >= sdmac->sdma->drvdata->num_events) > + return -EINVAL; > + sdma_event_enable(sdmac, sdmac->event_id0); > > if (sdmac->event_id1) { > if (sdmac->event_id1 >= sdmac->sdma->drvdata->num_events) > -- > 2.7.4 >
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c index a495c7f..86594fc 100644 --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c @@ -1370,8 +1370,8 @@ static void sdma_free_chan_resources(struct dma_chan *chan) sdma_channel_synchronize(chan); - if (sdmac->event_id0) - sdma_event_disable(sdmac, sdmac->event_id0); + sdma_event_disable(sdmac, sdmac->event_id0); + if (sdmac->event_id1) sdma_event_disable(sdmac, sdmac->event_id1); @@ -1670,11 +1670,9 @@ static int sdma_config(struct dma_chan *chan, memcpy(&sdmac->slave_config, dmaengine_cfg, sizeof(*dmaengine_cfg)); /* Set ENBLn earlier to make sure dma request triggered after that */ - if (sdmac->event_id0) { - if (sdmac->event_id0 >= sdmac->sdma->drvdata->num_events) - return -EINVAL; - sdma_event_enable(sdmac, sdmac->event_id0); - } + if (sdmac->event_id0 >= sdmac->sdma->drvdata->num_events) + return -EINVAL; + sdma_event_enable(sdmac, sdmac->event_id0); if (sdmac->event_id1) { if (sdmac->event_id1 >= sdmac->sdma->drvdata->num_events)
Because the number of ecspi1 rx event on i.mx8mm is 0, the condition check ignore such special case without dma channel enabled, which caused ecspi1 rx works failed. Actually, no need to check event_id0, checking event_id1 is enough for DEV_2_DEV case because it's so lucky that event_id1 never be 0. Signed-off-by: Robin Gong <yibin.gong@nxp.com> --- drivers/dma/imx-sdma.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-)