Quoting Jeffrey Hugo (2019-10-01 12:57:08) > diff --git a/drivers/clk/qcom/gcc-msm8998.c b/drivers/clk/qcom/gcc-msm8998.c > index 091acd59c1d6..1651a2f47ab8 100644 > --- a/drivers/clk/qcom/gcc-msm8998.c > +++ b/drivers/clk/qcom/gcc-msm8998.c > @@ -2971,14 +2957,23 @@ static const struct qcom_cc_desc gcc_msm8998_desc = { > .num_resets = ARRAY_SIZE(gcc_msm8998_resets), > .gdscs = gcc_msm8998_gdscs, > .num_gdscs = ARRAY_SIZE(gcc_msm8998_gdscs), > - .clk_hws = gcc_msm8998_hws, > - .num_clk_hws = ARRAY_SIZE(gcc_msm8998_hws), > }; > > static int gcc_msm8998_probe(struct platform_device *pdev) > { > struct regmap *regmap; > int ret; > + struct clk *xo; > + > + /* > + * We must have a valid XO to continue, otherwise having a missing > + * parent on a system critical clock like the uart core clock can > + * result in strange bugs. We know XO will be provided by rpmcc, > + * but it might not be specified in DT like it should. > + */ > + xo = __clk_lookup("xo"); I very much dislike __clk_lookup(). I think we can not have this patch? > + if (!xo) > + return -EPROBE_DEFER; >