> > +   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

Reply via email to