On 2022-06-07 05:40, Chandan Vurdigere Nataraj wrote: > [Why] > Getting below errors: > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1414:5: error: implicit conversion from enumeration type 'enum scan_direction_class' to different enumeration type 'enum dm_rotation_angle' [-Werror,-Wenum-conversion] > mode_lib->vba.SourceScan[k], > ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:1744:22: error: implicit conversion from enumeration type 'enum scan_direction_class' to different enumeration type 'enum dm_rotation_angle' [-Werror,-Wenum-conversion] > && (!(!IsVertical(mode_lib->vba.SourceScan[k])) || mode_lib->vba.DCCEnable[k] == true)) { > ~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~ > 2 errors generated. > > drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_util_32.c:5484:18: error: implicit conversion from enumeration type 'RequestType' to different enumeration type 'enum RequestType' [-Werror,-Wenum-conversion] > RequestLuma = REQ_256Bytes; > ~ ^~~~~~~~~~~~ > 18 errors of similar kind > > [How] > 1. Add typecast at relevant places > 2. Move the enum RequestType definition ahead of declarations > > Signed-off-by: Chandan Vurdigere Nataraj <chandan.vurdigerenataraj@xxxxxxx> > > diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c > index b77a1ae792d1..5828e60f291d 100644 > --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c > +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c > @@ -1411,7 +1411,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman > v->BytePerPixelC[k], > v->BytePerPixelDETY[k], > v->BytePerPixelDETC[k], > - mode_lib->vba.SourceScan[k], > + (enum dm_rotation_angle) mode_lib->vba.SourceScan[k], Hi Jay, This seems fishy, dm_rotation_angle and scan_dirrection_class are very different enums. Comparing dml32_CalculateDCCConfiguration() with CalculateDCCConfiguration(), it seems dm_rotation_angle is new for DCN32. Is passing vba.SourceScan correct here? One more comment below. > /* Output */ > &v->DCCYMaxUncompressedBlock[k], > &v->DCCCMaxUncompressedBlock[k], > @@ -1741,7 +1741,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l > mode_lib->vba.SourceFormatPixelAndScanSupport = true; > for (k = 0; k <= mode_lib->vba.NumberOfActiveSurfaces - 1; k++) { > if (mode_lib->vba.SurfaceTiling[k] == dm_sw_linear > - && (!(!IsVertical(mode_lib->vba.SourceScan[k])) || mode_lib->vba.DCCEnable[k] == true)) { > + && (!(!IsVertical((enum dm_rotation_angle) mode_lib->vba.SourceScan[k])) > + || mode_lib->vba.DCCEnable[k] == true)) { > mode_lib->vba.SourceFormatPixelAndScanSupport = false; > } > } > diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c > index 6509a84eeb64..07f3a85f8edf 100644 > --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c > +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c > @@ -5314,9 +5314,15 @@ void dml32_CalculateDCCConfiguration( > unsigned int *IndependentBlockLuma, > unsigned int *IndependentBlockChroma) > { > + typedef enum { > + REQ_256Bytes, > + REQ_128BytesNonContiguous, > + REQ_128BytesContiguous, > + REQ_NA > + } RequestType; > > - enum RequestType RequestLuma; > - enum RequestType RequestChroma; > + RequestType RequestLuma; > + RequestType RequestChroma; This might need a wider cleanup, enum RequestType is defined in display_mode_enums.h and is already included in all the display_mode_vba*.c files I've come across. Unless I'm missing something, we shouldn't need to redefine RequestType. That said, there doesn't seem to be any functional change, and it fixes a build error. So Acked-by: Leo Li <sunpeng.li@xxxxxxx> Thanks, Leo > > unsigned int segment_order_horz_contiguous_luma; > unsigned int segment_order_horz_contiguous_chroma; > @@ -5350,13 +5356,6 @@ void dml32_CalculateDCCConfiguration( > double detile_buf_vp_horz_limit; > double detile_buf_vp_vert_limit; > > - typedef enum { > - REQ_256Bytes, > - REQ_128BytesNonContiguous, > - REQ_128BytesContiguous, > - REQ_NA > - } RequestType; > - > yuv420 = ((SourcePixelFormat == dm_420_8 || SourcePixelFormat == dm_420_10 || > SourcePixelFormat == dm_420_12) ? 1 : 0); > horz_div_l = 1; > @@ -5527,11 +5526,11 @@ void dml32_CalculateDCCConfiguration( > RequestChroma = REQ_128BytesContiguous; > } > > - if (RequestLuma == (enum RequestType) REQ_256Bytes) { > + if (RequestLuma == REQ_256Bytes) { > *MaxUncompressedBlockLuma = 256; > *MaxCompressedBlockLuma = 256; > *IndependentBlockLuma = 0; > - } else if (RequestLuma == (enum RequestType) REQ_128BytesContiguous) { > + } else if (RequestLuma == REQ_128BytesContiguous) { > *MaxUncompressedBlockLuma = 256; > *MaxCompressedBlockLuma = 128; > *IndependentBlockLuma = 128; > @@ -5541,11 +5540,11 @@ void dml32_CalculateDCCConfiguration( > *IndependentBlockLuma = 64; > } > > - if (RequestChroma == (enum RequestType) REQ_256Bytes) { > + if (RequestChroma == REQ_256Bytes) { > *MaxUncompressedBlockChroma = 256; > *MaxCompressedBlockChroma = 256; > *IndependentBlockChroma = 0; > - } else if (RequestChroma == (enum RequestType) REQ_128BytesContiguous) { > + } else if (RequestChroma == REQ_128BytesContiguous) { > *MaxUncompressedBlockChroma = 256; > *MaxCompressedBlockChroma = 128; > *IndependentBlockChroma = 128;