mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 20:33:49 -04:00
media: qcom: camss: Functionally decompose CSIPHY clock lookups
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> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
committed by
Hans Verkuil
parent
bcd2adfef2
commit
0727615fb9
@@ -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[16]; /* csiphyXXX_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;
|
||||
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 &&
|
||||
(!strcmp(clock->name, "csi0_phy") ||
|
||||
!strcmp(clock->name, "csi1_phy") ||
|
||||
!strcmp(clock->name, "csi2_phy")))
|
||||
csiphy->rate_set[i] = true;
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user