Sorry for the premature send of the previous reply.
"Liu Ying" <[email protected]> writes: >> >> diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c >> b/drivers/gpu/drm/bridge/nwl-dsi.c >> index f3f4334136c0..eb604733eea0 100644 >> --- a/drivers/gpu/drm/bridge/nwl-dsi.c >> +++ b/drivers/gpu/drm/bridge/nwl-dsi.c >> @@ -22,6 +22,7 @@ >> #include <linux/reset.h> >> #include <linux/sys_soc.h> >> #include <linux/time64.h> >> +#include <linux/math64.h> > > Sort the header files alphabetically. Will do. >> + hfp = roundup(hfp, 2); >> + hbp = roundup(hbp, 2); >> + hsa = roundup(hsa, 2); >> + >> + /* >> + * We need to subtract the packet header length: 32 >> + * In order to make sure we don't get negative values, >> + * subtract a proportional value to the total length of the >> + * horizontal blanking duration. >> + */ >> + h_blank = hfp + hbp + hsa; >> + >> + if (h_blank) { >> + pkt_len = min(hfp, roundup(((hfp * 100 / h_blank) * 32) / 100, >> 2)); >> + pkt_hdr_len = pkt_len; >> + hfp -= pkt_len; >> + >> + pkt_len = min(hbp, roundup(((hbp * 100 / h_blank) * 32) / 100, >> 2)); >> + pkt_hdr_len += pkt_len; >> + hbp -= pkt_len; >> + >> + pkt_len = min(hsa, 32 - pkt_hdr_len); >> + pkt_hdr_len += pkt_len; >> + hsa -= pkt_len; >> + if (pkt_hdr_len != 32) >> + dev_warn(dsi->dev, >> + "Unable to subtract packet header length >> fully: %d left\n", >> + 32 - pkt_hdr_len); >> + } >> + >> + DRM_DEV_DEBUG_DRIVER(dsi->dev, "Register values: hfp=%d hbp=%d >> hsa=%d\n", hfp, hbp, hsa); >> + >> + nwl_dsi_write(dsi, NWL_DSI_HFP, hfp); >> + nwl_dsi_write(dsi, NWL_DSI_HBP, hbp); >> + nwl_dsi_write(dsi, NWL_DSI_HSA, hsa); >> >> nwl_dsi_write(dsi, NWL_DSI_ENABLE_MULT_PKTS, 0x0); >> nwl_dsi_write(dsi, NWL_DSI_BLLP_MODE, 0x1); >> >> -- >> 2.56.0 >> > > Not sure if the fix is 100% correct, but it is a correct direction to > change the blanking packet payload size from in pixel clocks to in bytes, > so better than no fix: > Acked-by: Liu Ying <[email protected]> Thanks. With the information available to me, this is the best I can do. /Esben
