From: Alex Hung <[email protected]> [WHY] element_size_to_bytes_per_pixel() handled only element sizes 0 to 4 and returned 0 for every other value, and an unexpected element size caused a divide by zero.
[HOW] Derive the size as 1 << element_size, which matches the existing encoding, and fall back to 1 for values of 8 or more to keep the result nonzero. Reviewed-by: Austin Zheng <[email protected]> Signed-off-by: Alex Hung <[email protected]> Signed-off-by: George Zhang <[email protected]> --- .../alternate_pstate_shared_lib.c | 22 +------------------ 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/alternate_pstate_shared_lib.c b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/alternate_pstate_shared_lib.c index 53ead9f687ac..f082f058001e 100644 --- a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/alternate_pstate_shared_lib.c +++ b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/alternate_pstate_shared_lib.c @@ -884,27 +884,7 @@ static void populate_lsdma_start_end_lines( static uint8_t element_size_to_bytes_per_pixel(uint8_t element_size) { - uint8_t bytes_per_pixel = 0; - - switch (element_size) { // 0: 8bpp, 1: 16bpp, 2: 32bpp, 3: 64bpp, 4: 128bpp - Values supported by LSDMA Controller - case 0: - bytes_per_pixel = 1; - break; - case 1: - bytes_per_pixel = 2; - break; - case 2: - bytes_per_pixel = 4; - break; - case 3: - bytes_per_pixel = 8; - break; - case 4: - bytes_per_pixel = 16; - break; - } - - return bytes_per_pixel; + return element_size < 8 ? (uint8_t)(1U << element_size) : 1; } static void populate_lsdma( -- 2.55.0
