Hello Wenjing Liu,

The patch 0078c924e733: "drm/amd/display: move eDP panel control
logic to link_edp_panel_control" from Dec 19, 2022, leads to the
following Smatch static checker warning:

    
drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_edp_panel_control.c:353
    link_edp_receiver_ready_T9() warn: potential negative cast to bool 'result'

    
drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_edp_panel_control.c:388
    link_edp_receiver_ready_T7() warn: potential negative cast to bool 'result'

drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_edp_panel_control.c
    331 bool link_edp_receiver_ready_T9(struct dc_link *link)

This function returns DC_OK (1) on success or positive on error or -1
on unknown error.  So casting it to bool means it always returns true.

    332 {
    333         unsigned int tries = 0;
    334         unsigned char sinkstatus = 0;
    335         unsigned char edpRev = 0;
    336         enum dc_status result = DC_OK;
    337 
    338         result = core_link_read_dpcd(link, DP_EDP_DPCD_REV, &edpRev, 
sizeof(edpRev));
    339 
    340         /* start from eDP version 1.2, SINK_STAUS indicate the sink is 
ready.*/
    341         if (result == DC_OK && edpRev >= DP_EDP_12) {
    342                 do {
    343                         sinkstatus = 1;
    344                         result = core_link_read_dpcd(link, 
DP_SINK_STATUS, &sinkstatus, sizeof(sinkstatus));
    345                         if (sinkstatus == 0)
    346                                 break;
    347                         if (result != DC_OK)
    348                                 break;
    349                         udelay(100); //MAx T9
    350                 } while (++tries < 50);
    351         }
    352 
--> 353         return result;
    354 }

regards,
dan carpenter

Reply via email to