> > + if (i2c_dev->has_dma) {
> > + ret = tegra_i2c_init_dma_param(i2c_dev, true);
> > + if (ret == -EPROBE_DEFER)
> > + goto disable_div_clk;
> > + ret = tegra_i2c_init_dma_param(i2c_dev, false);
> > + if (ret == -EPROBE_DEFER)
> > + goto disable_div_clk;
>
> So tegra_i2c_init_dma_param() could fail, printing a error message, and probe
> will succeed? If allocation fails during the driver's probe, then just fail
> the probe. Please give the rationale.
If APB DMA probe doesn’t happen prior to tegra i2c, DMA is not available by the
time tegra_init_dma_param tries to request slave channel and in those cases
dma_request_slave_channel_reason will return EPROBE_DEFER for tegra I2C probe
to retry
In case if DMA is available but DMA buffer allocation fails, then
tegra_i2c_init_dma_param returns ENOMEM and probe also fails returning same
ENOMEM
Thanks
Sowjanya