On Tue, Jan 15, 2013 at 3:54 AM, Viresh Kumar <viresh.ku...@linaro.org> wrote: > On Mon, Jan 14, 2013 at 7:50 PM, Andy Shevchenko > <andriy.shevche...@linux.intel.com> wrote: >> The driver's default assumes that hardware has two AHB masters which might be >> not true. In such rare cases we have not to exceed a number of the AHB >> masters >> present in the hardware. Thus, the AHB master with highest possible number >> will >> be used to retrieve the data witdh value. >> >> The patch also changes the logic a bit when the master parameter of the >> dwc_get_data_width() is out of range. Now the function will return a value >> related to the first AHB master. >> >> Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> >> --- >> drivers/dma/dw_dmac.c | 7 ++++--- >> 1 file changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c >> index 30ff2a4..b2d564a 100644 >> --- a/drivers/dma/dw_dmac.c >> +++ b/drivers/dma/dw_dmac.c >> @@ -80,13 +80,14 @@ static inline unsigned int dwc_get_data_width(struct >> dma_chan *chan, int master) >> { >> struct dw_dma *dw = to_dw_dma(chan->device); >> struct dw_dma_slave *dws = chan->private; >> + unsigned int m = 0; >> >> if (master == SRC_MASTER) >> - return dw->data_width[dwc_get_sms(dws)]; >> + m = dwc_get_sms(dws); >> else if (master == DST_MASTER) >> - return dw->data_width[dwc_get_dms(dws)]; >> + m = dwc_get_dms(dws); >> >> - return 0; >> + return dw->data_width[min_t(unsigned int, dw->nr_masters - 1, m)]; > > The details of the patch are fine, but i didn't get how do you get > master 1 selected > on a system where you have only 1 master?
min_t(..., nr_masters - 1, m) defines this. m is returned value with default settings, let's say 1. In that case if nr_masters is also 1 the min_t(..., 1-1, 1) returns 0. The value of nr_masters itself is come from autoconfig or platform data. > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- With Best Regards, Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/