Message ID | 20230329-rfc-msm-dsc-helper-v6-6-cb7f59f0f7fb@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Introduce MSM-specific DSC helpers | expand |
On 2023-04-12 16:25:20, Jessica Zhang wrote: > hdisplay for compressed images should be calculated as bytes_per_slice * > slice_count. Thus, use MSM DSC helper to calculate hdisplay for > dsi_timing_setup instead of directly using mode->hdisplay. > > Changes in v3: > - Split from previous patch > - Initialized hdisplay as uncompressed pclk per line at the beginning of > dsi_timing_setup as to not break dual DSI calculations > > Changes in v4: > - Moved pclk_per_intf calculations to DSC hdisplay adjustments > > Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > index 508577c596ff..ae966d4e349d 100644 > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > * pulse width same > */ > h_total -= hdisplay; > - hdisplay /= 3; > + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, single DSI), which will only show garbage when it is applied. Are you sure this is correct, and the helper is returning the right values? I'll see if I can help review and validate those later, and debug if necessary. - Marijn > h_total += hdisplay; > ha_end = ha_start + hdisplay; > } > > -- > 2.40.0 >
On 5/4/2023 2:56 PM, Marijn Suijten wrote: > On 2023-04-12 16:25:20, Jessica Zhang wrote: >> hdisplay for compressed images should be calculated as bytes_per_slice * >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for >> dsi_timing_setup instead of directly using mode->hdisplay. >> >> Changes in v3: >> - Split from previous patch >> - Initialized hdisplay as uncompressed pclk per line at the beginning of >> dsi_timing_setup as to not break dual DSI calculations >> >> Changes in v4: >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments >> >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >> --- >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c >> index 508577c596ff..ae966d4e349d 100644 >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >> * pulse width same >> */ >> h_total -= hdisplay; >> - hdisplay /= 3; >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > single DSI), which will only show garbage when it is applied. > > Are you sure this is correct, and the helper is returning the right > values? I'll see if I can help review and validate those later, and > debug if necessary. > > - Marijn To help us debug these kind of issues, can you pls point us to your panel driver? > >> h_total += hdisplay; >> ha_end = ha_start + hdisplay; >> } >> >> -- >> 2.40.0 >>
On 5/4/2023 2:56 PM, Marijn Suijten wrote: > On 2023-04-12 16:25:20, Jessica Zhang wrote: >> hdisplay for compressed images should be calculated as bytes_per_slice * >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for >> dsi_timing_setup instead of directly using mode->hdisplay. >> >> Changes in v3: >> - Split from previous patch >> - Initialized hdisplay as uncompressed pclk per line at the beginning of >> dsi_timing_setup as to not break dual DSI calculations >> >> Changes in v4: >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments >> >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >> --- >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c >> index 508577c596ff..ae966d4e349d 100644 >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >> * pulse width same >> */ >> h_total -= hdisplay; >> - hdisplay /= 3; >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > single DSI), which will only show garbage when it is applied. > > Are you sure this is correct, and the helper is returning the right > values? I'll see if I can help review and validate those later, and > debug if necessary. Hi Marijn, Just checking, are you testing this with the DSI for DSC v1.2 changes? That series includes a fix to the word count calculation [1] needed to get DSC working. Thanks, Jessica Zhang [1] https://patchwork.freedesktop.org/patch/535115/?series=117219&rev=1 > > - Marijn > >> h_total += hdisplay; >> ha_end = ha_start + hdisplay; >> } >> >> -- >> 2.40.0 >>
On 2023-05-04 15:05:15, Abhinav Kumar wrote: > > > On 5/4/2023 2:56 PM, Marijn Suijten wrote: > > On 2023-04-12 16:25:20, Jessica Zhang wrote: > >> hdisplay for compressed images should be calculated as bytes_per_slice * > >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for > >> dsi_timing_setup instead of directly using mode->hdisplay. > >> > >> Changes in v3: > >> - Split from previous patch > >> - Initialized hdisplay as uncompressed pclk per line at the beginning of > >> dsi_timing_setup as to not break dual DSI calculations > >> > >> Changes in v4: > >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments > >> > >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > >> --- > >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > >> index 508577c596ff..ae966d4e349d 100644 > >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > >> * pulse width same > >> */ > >> h_total -= hdisplay; > >> - hdisplay /= 3; > >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > > > This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > > single DSI), which will only show garbage when it is applied. > > > > Are you sure this is correct, and the helper is returning the right > > values? I'll see if I can help review and validate those later, and > > debug if necessary. > > > > - Marijn > > To help us debug these kind of issues, can you pls point us to your > panel driver? https://github.com/SoMainline/linux/commit/b154ea72e6c2ca0d4a33a28cc24e3a762dba4948 - Marijn
On 2023-05-04 15:34:08, Jessica Zhang wrote: > > > On 5/4/2023 2:56 PM, Marijn Suijten wrote: > > On 2023-04-12 16:25:20, Jessica Zhang wrote: > >> hdisplay for compressed images should be calculated as bytes_per_slice * > >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for > >> dsi_timing_setup instead of directly using mode->hdisplay. > >> > >> Changes in v3: > >> - Split from previous patch > >> - Initialized hdisplay as uncompressed pclk per line at the beginning of > >> dsi_timing_setup as to not break dual DSI calculations > >> > >> Changes in v4: > >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments > >> > >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > >> --- > >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > >> index 508577c596ff..ae966d4e349d 100644 > >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > >> * pulse width same > >> */ > >> h_total -= hdisplay; > >> - hdisplay /= 3; > >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > > > This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > > single DSI), which will only show garbage when it is applied. > > > > Are you sure this is correct, and the helper is returning the right > > values? I'll see if I can help review and validate those later, and > > debug if necessary. > > Hi Marijn, > > Just checking, are you testing this with the DSI for DSC v1.2 changes? Yes, all the series, including those that are implicitly/indirectly required. This specific patch is pointed out by git bisect. > That series includes a fix to the word count calculation [1] needed to > get DSC working. No, we cannot have this series introduce a bug and depend on *a future* series to fix that, if that's what you're saying. > Thanks, > > Jessica Zhang > > [1] https://patchwork.freedesktop.org/patch/535115/?series=117219&rev=1 That ""fix"" won't have any effect since slice_count is 1 for this specific panel/device: https://github.com/SoMainline/linux/commit/b154ea72e6c2ca0d4a33a28cc24e3a762dba4948 - Marijn > > > > > - Marijn > > > >> h_total += hdisplay; > >> ha_end = ha_start + hdisplay; > >> } > >> > >> -- > >> 2.40.0 > >>
On 2023-05-07 17:27:33, Marijn Suijten wrote: > On 2023-05-04 15:05:15, Abhinav Kumar wrote: > > > > > > On 5/4/2023 2:56 PM, Marijn Suijten wrote: > > > On 2023-04-12 16:25:20, Jessica Zhang wrote: > > >> hdisplay for compressed images should be calculated as bytes_per_slice * > > >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for > > >> dsi_timing_setup instead of directly using mode->hdisplay. > > >> > > >> Changes in v3: > > >> - Split from previous patch > > >> - Initialized hdisplay as uncompressed pclk per line at the beginning of > > >> dsi_timing_setup as to not break dual DSI calculations > > >> > > >> Changes in v4: > > >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments > > >> > > >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > > >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > > >> --- > > >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > >> > > >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > > >> index 508577c596ff..ae966d4e349d 100644 > > >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > > >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > > >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > > >> * pulse width same > > >> */ > > >> h_total -= hdisplay; > > >> - hdisplay /= 3; > > >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > > > > > This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > > > single DSI), which will only show garbage when it is applied. > > > > > > Are you sure this is correct, and the helper is returning the right > > > values? I'll see if I can help review and validate those later, and > > > debug if necessary. > > > > > > - Marijn > > > > To help us debug these kind of issues, can you pls point us to your > > panel driver? > > https://github.com/SoMainline/linux/commit/b154ea72e6c2ca0d4a33a28cc24e3a762dba4948 I found the fix myself after piecing together the hints provided across the many different patch series. This panel driver assigns slice_count=1 based on downstream's qcom,mdss-dsc-slice-per-pkt = <1>, but as per the many slice_count-related fixes the latter DT parameter is a QCOM-specific hardware feature, whereas slice_count is simply the number of slices per line. Since a line is a scanline, and that panel has a width of hdisplay=1440 and a slice_width of 720, the number of slices spanning a line is simply slice_count=hdisplay/slice_width=2. This makes the panel work again atop the four-or-so-series without a revert of this patch. Is it a big ask to request a single, coherent series fixing all uses of slice_count - and implementing support for slice-per-pkt - instead of having the patches spread across multiple series? That makes it much easier to cover ground here and review this series, as slice_count seems to be used everywhere where downstream used slice_per_pkt - even I mistakenly used it after assuming it was the same based on the original patches. - Marijn
On 2023-04-12 16:25:20, Jessica Zhang wrote: > hdisplay for compressed images should be calculated as bytes_per_slice * > slice_count. Thus, use MSM DSC helper to calculate hdisplay for > dsi_timing_setup instead of directly using mode->hdisplay. This doesn't really matter in the common case of of bpp=8, as the number of horizontal pixels is equal to the number of horizontal slices times the width of one horizontal slice. > Changes in v3: > - Split from previous patch > - Initialized hdisplay as uncompressed pclk per line at the beginning of > dsi_timing_setup as to not break dual DSI calculations > > Changes in v4: > - Moved pclk_per_intf calculations to DSC hdisplay adjustments > > Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > index 508577c596ff..ae966d4e349d 100644 > --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > * pulse width same > */ > h_total -= hdisplay; > - hdisplay /= 3; > + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; This function sounds like it returns bytes_per_line instead, not the number of pixels in case bpp!=8. Should we rename it? - Marijn > h_total += hdisplay; > ha_end = ha_start + hdisplay; > } > > -- > 2.40.0 >
On 5/8/2023 2:46 PM, Marijn Suijten wrote: > On 2023-04-12 16:25:20, Jessica Zhang wrote: >> hdisplay for compressed images should be calculated as bytes_per_slice * >> slice_count. Thus, use MSM DSC helper to calculate hdisplay for >> dsi_timing_setup instead of directly using mode->hdisplay. > > This doesn't really matter in the common case of of bpp=8, as the number > of horizontal pixels is equal to the number of horizontal slices times > the width of one horizontal slice. > >> Changes in v3: >> - Split from previous patch >> - Initialized hdisplay as uncompressed pclk per line at the beginning of >> dsi_timing_setup as to not break dual DSI calculations >> >> Changes in v4: >> - Moved pclk_per_intf calculations to DSC hdisplay adjustments >> >> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >> --- >> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c >> index 508577c596ff..ae966d4e349d 100644 >> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c >> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c >> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >> * pulse width same >> */ >> h_total -= hdisplay; >> - hdisplay /= 3; >> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > > This function sounds like it returns bytes_per_line instead, not the > number of pixels in case bpp!=8. Should we rename it? Hi Marijn, Sounds good. Thanks, Jessica Zhang > > - Marijn > >> h_total += hdisplay; >> ha_end = ha_start + hdisplay; >> } >> >> -- >> 2.40.0 >>
On 5/7/2023 11:34 AM, Marijn Suijten wrote: > On 2023-05-07 17:27:33, Marijn Suijten wrote: >> On 2023-05-04 15:05:15, Abhinav Kumar wrote: >>> >>> >>> On 5/4/2023 2:56 PM, Marijn Suijten wrote: >>>> On 2023-04-12 16:25:20, Jessica Zhang wrote: >>>>> hdisplay for compressed images should be calculated as bytes_per_slice * >>>>> slice_count. Thus, use MSM DSC helper to calculate hdisplay for >>>>> dsi_timing_setup instead of directly using mode->hdisplay. >>>>> >>>>> Changes in v3: >>>>> - Split from previous patch >>>>> - Initialized hdisplay as uncompressed pclk per line at the beginning of >>>>> dsi_timing_setup as to not break dual DSI calculations >>>>> >>>>> Changes in v4: >>>>> - Moved pclk_per_intf calculations to DSC hdisplay adjustments >>>>> >>>>> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> >>>>> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> >>>>> --- >>>>> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>> >>>>> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c >>>>> index 508577c596ff..ae966d4e349d 100644 >>>>> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c >>>>> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c >>>>> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) >>>>> * pulse width same >>>>> */ >>>>> h_total -= hdisplay; >>>>> - hdisplay /= 3; >>>>> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; >>>> >>>> This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, >>>> single DSI), which will only show garbage when it is applied. >>>> >>>> Are you sure this is correct, and the helper is returning the right >>>> values? I'll see if I can help review and validate those later, and >>>> debug if necessary. >>>> >>>> - Marijn >>> >>> To help us debug these kind of issues, can you pls point us to your >>> panel driver? >> >> https://github.com/SoMainline/linux/commit/b154ea72e6c2ca0d4a33a28cc24e3a762dba4948 > > I found the fix myself after piecing together the hints provided across > the many different patch series. This panel driver assigns > slice_count=1 based on downstream's qcom,mdss-dsc-slice-per-pkt = <1>, > but as per the many slice_count-related fixes the latter DT parameter is > a QCOM-specific hardware feature, whereas slice_count is simply the > number of slices per line. > > Since a line is a scanline, and that panel has a width of hdisplay=1440 > and a slice_width of 720, the number of slices spanning a line is simply > slice_count=hdisplay/slice_width=2. This makes the panel work again > atop the four-or-so-series without a revert of this patch. > > Is it a big ask to request a single, coherent series fixing all uses of > slice_count - and implementing support for slice-per-pkt - instead of > having the patches spread across multiple series? That makes it much > easier to cover ground here and review this series, as slice_count seems > to be used everywhere where downstream used slice_per_pkt - even I > mistakenly used it after assuming it was the same based on the original > patches. Hi Marijn, Just want to document the changes we agreed on regarding the slice_count fixes: I will move "drm/msm/dsi: Fix calculation for pkt_per_line" to the "Add DSC v1.2 Support for DSI" series so that all the slice_count/slice_per_pkt fixes are consolidated. In addition I will also add a patch in "Add DSC v1.2 Support for DSI" to remove the incorrect `dsc->slice_count = 1` line in dsi_update_dsc_timing(). Thanks, Jessica Zhang > > - Marijn
On 2023-05-08 17:51:08, Jessica Zhang wrote: > > > On 5/7/2023 11:34 AM, Marijn Suijten wrote: > > On 2023-05-07 17:27:33, Marijn Suijten wrote: > >> On 2023-05-04 15:05:15, Abhinav Kumar wrote: > >>> > >>> > >>> On 5/4/2023 2:56 PM, Marijn Suijten wrote: > >>>> On 2023-04-12 16:25:20, Jessica Zhang wrote: > >>>>> hdisplay for compressed images should be calculated as bytes_per_slice * > >>>>> slice_count. Thus, use MSM DSC helper to calculate hdisplay for > >>>>> dsi_timing_setup instead of directly using mode->hdisplay. > >>>>> > >>>>> Changes in v3: > >>>>> - Split from previous patch > >>>>> - Initialized hdisplay as uncompressed pclk per line at the beginning of > >>>>> dsi_timing_setup as to not break dual DSI calculations > >>>>> > >>>>> Changes in v4: > >>>>> - Moved pclk_per_intf calculations to DSC hdisplay adjustments > >>>>> > >>>>> Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com> > >>>>> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > >>>>> --- > >>>>> drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +- > >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>> > >>>>> diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c > >>>>> index 508577c596ff..ae966d4e349d 100644 > >>>>> --- a/drivers/gpu/drm/msm/dsi/dsi_host.c > >>>>> +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c > >>>>> @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) > >>>>> * pulse width same > >>>>> */ > >>>>> h_total -= hdisplay; > >>>>> - hdisplay /= 3; > >>>>> + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; > >>>> > >>>> This patch is unfortunately regressing the Sony Xperia XZ3 (sdm845, > >>>> single DSI), which will only show garbage when it is applied. > >>>> > >>>> Are you sure this is correct, and the helper is returning the right > >>>> values? I'll see if I can help review and validate those later, and > >>>> debug if necessary. > >>>> > >>>> - Marijn > >>> > >>> To help us debug these kind of issues, can you pls point us to your > >>> panel driver? > >> > >> https://github.com/SoMainline/linux/commit/b154ea72e6c2ca0d4a33a28cc24e3a762dba4948 > > > > I found the fix myself after piecing together the hints provided across > > the many different patch series. This panel driver assigns > > slice_count=1 based on downstream's qcom,mdss-dsc-slice-per-pkt = <1>, > > but as per the many slice_count-related fixes the latter DT parameter is > > a QCOM-specific hardware feature, whereas slice_count is simply the > > number of slices per line. > > > > Since a line is a scanline, and that panel has a width of hdisplay=1440 > > and a slice_width of 720, the number of slices spanning a line is simply > > slice_count=hdisplay/slice_width=2. This makes the panel work again > > atop the four-or-so-series without a revert of this patch. > > > > Is it a big ask to request a single, coherent series fixing all uses of > > slice_count - and implementing support for slice-per-pkt - instead of > > having the patches spread across multiple series? That makes it much > > easier to cover ground here and review this series, as slice_count seems > > to be used everywhere where downstream used slice_per_pkt - even I > > mistakenly used it after assuming it was the same based on the original > > patches. > > Hi Marijn, > > Just want to document the changes we agreed on regarding the slice_count > fixes: > > I will move "drm/msm/dsi: Fix calculation for pkt_per_line" to the "Add > DSC v1.2 Support for DSI" series so that all the > slice_count/slice_per_pkt fixes are consolidated. > > In addition I will also add a patch in "Add DSC v1.2 Support for DSI" to > remove the incorrect `dsc->slice_count = 1` line in dsi_update_dsc_timing(). That sounds good, but be sure to check two things: - Can we squash some of the patches? - Can we make the wording and title consistent? That goes a long way in understanding that the patches in question are addressing the same "wrong use of dsc->slice_count because it was thought to be equal to slice_per_pkt" issue. - Marijn
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 508577c596ff..ae966d4e349d 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -952,7 +952,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi) * pulse width same */ h_total -= hdisplay; - hdisplay /= 3; + hdisplay = msm_dsc_get_pclk_per_intf(msm_host->dsc) / 3; h_total += hdisplay; ha_end = ha_start + hdisplay; }