Hi Heiko,

On 6/3/2026 4:59 AM, Heiko Stuebner wrote:
> Am Dienstag, 24. März 2026, 09:58:37 Mitteleuropäische Sommerzeit schrieb 
> Chaoyi Chen:
>> From: Chaoyi Chen <[email protected]>
>>
>> Different chips have varying support for the maximum bit rate per lane.
>>
>> Add calculation for the maximum per lane bit rate for various chip
>> platforms, and relax the bandwidth margin requirements.
>>
>> Signed-off-by: Chaoyi Chen <[email protected]>
>> ---
>>  .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c   | 21 +++++++++++++++----
>>  1 file changed, 17 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c 
>> b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
>> index 3547d91b25d3..d3bacfae174e 100644
>> --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
>> +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
>> @@ -268,6 +268,7 @@ struct rockchip_dw_dsi_chip_data {
>>  
>>      unsigned int flags;
>>      unsigned int max_data_lanes;
>> +    unsigned long max_bit_rate_per_lane;
>>  };
>>  
>>  struct dw_mipi_dsi_rockchip {
>> @@ -565,7 +566,7 @@ dw_mipi_dsi_get_lane_mbps(void *priv_data, const struct 
>> drm_display_mode *mode,
>>      int bpp;
>>      unsigned long mpclk, tmp;
>>      unsigned int target_mbps = 1000;
>> -    unsigned int max_mbps = dppa_map[ARRAY_SIZE(dppa_map) - 1].max_mbps;
>> +    unsigned int max_mbps;
>>      unsigned long best_freq = 0;
>>      unsigned long fvco_min, fvco_max, fin, fout;
>>      unsigned int min_prediv, max_prediv;
>> @@ -573,6 +574,7 @@ dw_mipi_dsi_get_lane_mbps(void *priv_data, const struct 
>> drm_display_mode *mode,
>>      unsigned long _fbdiv, best_fbdiv;
>>      unsigned long min_delta = ULONG_MAX;
>>  
>> +    max_mbps = dsi->cdata->max_bit_rate_per_lane;
> 
> I may be blind, but how do the values come together?
> In the dppa_map table we have mbps values of 89 to 1500
> (MHz)
> 
> While below the values set are
>       .max_bit_rate_per_lane = 1500000000UL,
> in Hz I guess
> 
> And I don't see the needed conversion somehow.
> 
>

Oh! It should be:

max_mbps = dsi->cdata->max_bit_rate_per_lane / USEC_PER_SEC;

Will fix in v2.

>>      dsi->format = format;
>>      bpp = mipi_dsi_pixel_format_to_bpp(dsi->format);
>>      if (bpp < 0) {
>> @@ -584,8 +586,8 @@ dw_mipi_dsi_get_lane_mbps(void *priv_data, const struct 
>> drm_display_mode *mode,
>>  
>>      mpclk = DIV_ROUND_UP(mode->clock, MSEC_PER_SEC);
>>      if (mpclk) {
>> -            /* take 1 / 0.8, since mbps must big than bandwidth of RGB */
>> -            tmp = mpclk * (bpp / lanes) * 10 / 8;
>> +            /* take 1 / 0.9, since mbps must big than bandwidth of RGB */
>> +            tmp = mpclk * (bpp / lanes) * 10 / 9;
> 
> Please do this in a separate patch, especially as I would expect some
> sort of explanation on why this is ok to do.
>

Sure! I'll split this out in the new series.

-- 
Best, 
Chaoyi

Reply via email to