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