Hi Holger, Thanks for your patch. there is an ongoing tree wide action to update all those common pattern of checking for the -EPROBE_DEFER. I thus propose, to first integrate the patch [i2c: stm32: Simplify with dev_err_probe()] that has been proposed few days ago, and on top of that add an additional patch to check for the -ENODEV error case due to DMA being optional. I've prepared a patch for that and will post it now, could you consider it ? Alain On Fri, Aug 14, 2020 at 02:13:55PM +0000, Holger Assmann wrote: > We currently print errors twice when there is an actual error > when requesting a DMA channel, once in stm32f7_i2c_probe() > when stm32_i2c_dma_request() fails and once more in > stm32_i2c_dma_request() itself. stm32_i2c_dma_request() is only > called from stm32f7_i2c_probe(), so we could drop the duplicate > error message. > > This has the effect that we no longer warn about absence of a > DMA channel. This is intended as it is not mandatory for the > i2c-stm32 devices to have DMA enabled. Also, the overall number > of DMA channels on the STM32 is limited and has to be shared > with other peripherals. This may lead to DMA being intentionally > off for specific devices. > > This patch removes the unnecessary error message. > > Fixes: e07a89775c71 ("i2c: stm32: don't print an error on probe deferral") > Signed-off-by: Holger Assmann <h.assmann@xxxxxxxxxxxxxx> > --- > drivers/i2c/busses/i2c-stm32.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-stm32.c b/drivers/i2c/busses/i2c-stm32.c > index 3f69a3bb6119..cc05a4202559 100644 > --- a/drivers/i2c/busses/i2c-stm32.c > +++ b/drivers/i2c/busses/i2c-stm32.c > @@ -26,8 +26,6 @@ struct stm32_i2c_dma *stm32_i2c_dma_request(struct device *dev, > dma->chan_tx = dma_request_chan(dev, "tx"); > if (IS_ERR(dma->chan_tx)) { > ret = PTR_ERR(dma->chan_tx); > - if (ret != -EPROBE_DEFER) > - dev_err(dev, "can't request DMA tx channel\n"); > goto fail_al; > } > > @@ -46,9 +44,6 @@ struct stm32_i2c_dma *stm32_i2c_dma_request(struct device *dev, > dma->chan_rx = dma_request_chan(dev, "rx"); > if (IS_ERR(dma->chan_rx)) { > ret = PTR_ERR(dma->chan_rx); > - if (ret != -EPROBE_DEFER) > - dev_err(dev, "can't request DMA rx channel\n"); > - > goto fail_tx; > } > > -- > 2.20.1 >