Hi Florian > > >> + /* Clock is optional on most platforms */ > > >> + priv->clk = devm_clk_get(dev, NULL); > > >> + if (IS_ERR(priv->clk)) > > >> + priv->clk = NULL; > > > > > > at least in case of EPROBE_DEFERED this isn't the expected behavior. Maybe we should better trigger on non-existing clock? > > > > Good point, so more like: > > > > if (IS_ERR(priv->clk) && PTR_ERR(priv->clk) == -ENODEV)? > > Unfortunately we need to return the error in all other cases. Please > take a look at devm_usb_get_phy in dwc2 [1]. AFAIK we don't need to > take care of ENXIO in our case. A few subsystems have a get_optional() call, e.g. devm_phy_optional_get(). It does not return an error when the phy is not supposed to exist, but in all other cases, it does. Maybe consider adding devm_clk_get_optional()? Andrew