On 6/5/2026 9:14 PM, David Heidelberg via B4 Relay wrote:
From: David Heidelberg <[email protected]>
Ensure that the link frequency divider correctly accounts for C-PHY
operation. The divider differs between D-PHY and C-PHY, as described
in the MIPI CSI-2 specification.
For more details, see:
https://docs.kernel.org/driver-api/media/tx-rx.html#pixel-rate
Suggested-by: Sakari Ailus <[email protected]>
Acked-by: Cory Keitz <[email protected]>
Tested-by: Cory Keitz <[email protected]>
Reviewed-by: Bryan O'Donoghue <[email protected]>
Link: https://docs.kernel.org/driver-api/media/tx-rx.html#pixel-rate
Signed-off-by: David Heidelberg <[email protected]>
---
drivers/media/platform/qcom/camss/camss-csid.c | 7 +++++--
drivers/media/platform/qcom/camss/camss-csiphy.c | 6 ++----
drivers/media/platform/qcom/camss/camss.c | 18 +++++++++++++++---
drivers/media/platform/qcom/camss/camss.h | 2 +-
4 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/drivers/media/platform/qcom/camss/camss-csid.c
b/drivers/media/platform/qcom/camss/camss-csid.c
index bcc34ac9dd212..7415e811082da 100644
--- a/drivers/media/platform/qcom/camss/camss-csid.c
+++ b/drivers/media/platform/qcom/camss/camss-csid.c
@@ -534,25 +534,28 @@ const struct csid_format_info *csid_get_fmt_entry(const
struct csid_format_info
/*
* csid_set_clock_rates - Calculate and set clock rates on CSID module
* @csiphy: CSID device
*/
static int csid_set_clock_rates(struct csid_device *csid)
{
struct device *dev = csid->camss->dev;
+ struct csiphy_device *csiphy =
&csid->camss->csiphy[csid->phy.csiphy_id];
The PHY indices are not necessarily contiguous on some platforms, such
as Hamoa or Purwa.
For example, on Hamoa, we have csiphy0, csiphy1, csiphy2, and csiphy4.
Using csiphy->id directly would lead to an array out-of-bounds access.
Thanks,
Wenmeng
+ struct csiphy_lanes_cfg *lane_cfg = &csiphy->cfg.csi2->lane_cfg;
const struct csid_format_info *fmt;
+
s64 link_freq;
int i, j;
int ret;