On Mon 28 Dec 07:56 CST 2020, Shawn Guo wrote: > Currently, GENI devices like i2c-qcom-geni fails to probe in ACPI boot, > if interconnect support is enabled. That's because interconnect driver > only supports DT right now. As interconnect is not necessarily required > for basic function of GENI devices, let's shield those ICC calls to get > GENI devices probe for ACPI boot. > > Signed-off-by: Shawn Guo <shawn.guo@xxxxxxxxxx> > --- > drivers/soc/qcom/qcom-geni-se.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c > index f42954e2c98e..9feb1d78a5df 100644 > --- a/drivers/soc/qcom/qcom-geni-se.c > +++ b/drivers/soc/qcom/qcom-geni-se.c > @@ -760,6 +760,9 @@ int geni_icc_get(struct geni_se *se, const char *icc_ddr) > int i, err; > const char *icc_names[] = {"qup-core", "qup-config", icc_ddr}; > > + if (has_acpi_companion(se->dev)) > + return 0; > + > for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) { > if (!icc_names[i]) > continue; > @@ -785,6 +788,9 @@ int geni_icc_set_bw(struct geni_se *se) > { > int i, ret; > > + if (has_acpi_companion(se->dev)) Can't we simply rely on the fact that icc_set_bw(), icc_enable() and icc_disable() all return successfully when passed a path of NULL? That would reduce this patch to only modifying geni_icc_get(), which presumably would be the place the modify once there is a mechanism to acquire paths in ACPI (if that ends up look anything like the of-based case). Regards, Bjorn > + return 0; > + > for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) { > ret = icc_set_bw(se->icc_paths[i].path, > se->icc_paths[i].avg_bw, se->icc_paths[i].avg_bw); > @@ -803,6 +809,9 @@ void geni_icc_set_tag(struct geni_se *se, u32 tag) > { > int i; > > + if (has_acpi_companion(se->dev)) > + return; > + > for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) > icc_set_tag(se->icc_paths[i].path, tag); > } > @@ -813,6 +822,9 @@ int geni_icc_enable(struct geni_se *se) > { > int i, ret; > > + if (has_acpi_companion(se->dev)) > + return 0; > + > for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) { > ret = icc_enable(se->icc_paths[i].path); > if (ret) { > @@ -830,6 +842,9 @@ int geni_icc_disable(struct geni_se *se) > { > int i, ret; > > + if (has_acpi_companion(se->dev)) > + return 0; > + > for (i = 0; i < ARRAY_SIZE(se->icc_paths); i++) { > ret = icc_disable(se->icc_paths[i].path); > if (ret) { > -- > 2.17.1 >