Hi Andrew, On Fri, May 1, 2020 at 5:44 PM Andrew Lunn <andrew@xxxxxxx> wrote: > > > + if (rx_dly_config & PRG_ETH0_ADJ_ENABLE) { > > + /* The timing adjustment logic is driven by a separate clock */ > > + ret = meson8b_devm_clk_prepare_enable(dwmac, > > + dwmac->timing_adj_clk); > > + if (ret) { > > + dev_err(dwmac->dev, > > + "Failed to enable the timing-adjustment clock\n"); > > + return ret; > > + } > > + } > > Hi Martin > > It is a while since i used the clk API. I thought the get_optional() > call returned a NULL pointer if the clock does not exist. > clk_prepare_enable() passed a NULL pointer is a NOP, but it also does > not return an error. So if the clock does not exist, you won't get > this error, the code keeps going, configures the hardware, but it does > not work. > > I think you need to check dwmac->timing_adj_clk != NULL here, and > error out if DT has properties which require it. Thank you for your excellent code review quality (as always)! you are right and I will fix that in the next version Martin