Message ID | 20230907164410.36651-13-bryan.odonoghue@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: qcom: camss: Add parameter passing to remove several outstanding bugs | expand |
On 7.09.2023 18:44, Bryan O'Donoghue wrote: > The csiphyX_timer and csiX_phy values need not be hard-coded. We can > functionally decompose the string matching inside of a loop. > > Static string values are brittle, difficult to extend and not required > anyway since the camss->res->csiphy_num value informs us of the number > of CSIPHYs and hence the set of potential clocks for a given CSIPHY. > > In simple terms if we have five CSIPHYs we can have no more and no less > than five csiphy_timer clocks. Similarly csi_phy core clocks have a 1:1 > relationship with the PHY they clock. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad
On 8.09.2023 11:20, Konrad Dybcio wrote: > On 7.09.2023 18:44, Bryan O'Donoghue wrote: >> The csiphyX_timer and csiX_phy values need not be hard-coded. We can >> functionally decompose the string matching inside of a loop. >> >> Static string values are brittle, difficult to extend and not required >> anyway since the camss->res->csiphy_num value informs us of the number >> of CSIPHYs and hence the set of potential clocks for a given CSIPHY. >> >> In simple terms if we have five CSIPHYs we can have no more and no less >> than five csiphy_timer clocks. Similarly csi_phy core clocks have a 1:1 >> relationship with the PHY they clock. >> >> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> >> --- > Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org> > > Konrad Actually, well, I'm not sure about the breaks inside.. Konrad
diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/media/platform/qcom/camss/camss-csiphy.c index 18f9a4defb2a4..87d6d65aa90cf 100644 --- a/drivers/media/platform/qcom/camss/camss-csiphy.c +++ b/drivers/media/platform/qcom/camss/camss-csiphy.c @@ -536,6 +536,15 @@ static int csiphy_init_formats(struct v4l2_subdev *sd, return csiphy_set_format(sd, fh ? fh->state : NULL, &format); } +static bool csiphy_match_clock_name(const char *clock_name, const char *format, + int index) +{ + char name[15]; /* csiphyXX_timer\0 */ + + snprintf(name, sizeof(name), format, index); + return !strcmp(clock_name, name); +} + /* * msm_csiphy_subdev_init - Initialize CSIPHY device structure and resources * @csiphy: CSIPHY device @@ -550,7 +559,7 @@ int msm_csiphy_subdev_init(struct camss *camss, { struct device *dev = camss->dev; struct platform_device *pdev = to_platform_device(dev); - int i, j; + int i, j, k; int ret; csiphy->camss = camss; @@ -656,19 +665,19 @@ int msm_csiphy_subdev_init(struct camss *camss, for (j = 0; j < clock->nfreqs; j++) clock->freq[j] = res->clock_rate[i][j]; - if (!strcmp(clock->name, "csiphy0_timer") || - !strcmp(clock->name, "csiphy1_timer") || - !strcmp(clock->name, "csiphy2_timer") || - !strcmp(clock->name, "csiphy3_timer") || - !strcmp(clock->name, "csiphy4_timer") || - !strcmp(clock->name, "csiphy5_timer")) - csiphy->rate_set[i] = true; - - if (camss->res->version == CAMSS_660 && - (!strcmp(clock->name, "csi0_phy") || - !strcmp(clock->name, "csi1_phy") || - !strcmp(clock->name, "csi2_phy"))) - csiphy->rate_set[i] = true; + for (k = 0; k < camss->res->csiphy_num; k++) { + csiphy->rate_set[i] = csiphy_match_clock_name(clock->name, + "csiphy%d_timer", k); + if (csiphy->rate_set[i]) + break; + + if (camss->res->version == CAMSS_660) { + csiphy->rate_set[i] = csiphy_match_clock_name(clock->name, + "csi%d_phy", k); + if (csiphy->rate_set[i]) + break; + } + } } return 0;
The csiphyX_timer and csiX_phy values need not be hard-coded. We can functionally decompose the string matching inside of a loop. Static string values are brittle, difficult to extend and not required anyway since the camss->res->csiphy_num value informs us of the number of CSIPHYs and hence the set of potential clocks for a given CSIPHY. In simple terms if we have five CSIPHYs we can have no more and no less than five csiphy_timer clocks. Similarly csi_phy core clocks have a 1:1 relationship with the PHY they clock. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- .../media/platform/qcom/camss/camss-csiphy.c | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-)