Re: [PATCH v7 7/8] media: qcom: camss: Account for C-PHY when calculating link frequency

David Heidelberg <[email protected]>
Newsgroups org.kernel.vger.phone-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media
Message-ID <[email protected]>
On 10/06/2026 10:23, Wenmeng Liu wrote:
> 
> 
> 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.
> 

Nice catch, thanks. I thought I'll make it cleaner, but I guess this chance 
could be pain point. Reverted to passing (number of) `lanes` and just added cphy 
bool instead of passing whole struct.

David

> 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;
> 

-- 
David Heidelberg
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.