CC: [email protected]
TO: [email protected]
TO: Guenter Roeck <[email protected]>

tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel 
chromeos-5.4
head:   7fd7be5eec16d4ccd80534ee0ac446d947e5651a
commit: 331b74951ecc80a07a2eee8b8b68b4c5512276f0 [13/15] FROMLIST: drm/bridge: 
anx7625: Fix edid_read break case in sp_tx_edid_read()
:::::: branch date: 22 hours ago
:::::: commit date: 2 days ago
config: i386-randconfig-m021-20211117 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/gpu/drm/bridge/analogix/anx7625.c:1055 sp_tx_edid_read() warn: 
impossible condition '(g_edid_break < 0) => (0-255 < 0)'

vim +1055 drivers/gpu/drm/bridge/analogix/anx7625.c

23d8ba8ff5d368 Xin Ji              2020-09-18  1016  
23d8ba8ff5d368 Xin Ji              2020-09-18  1017  static int 
sp_tx_edid_read(struct anx7625_data *ctx,
23d8ba8ff5d368 Xin Ji              2020-09-18  1018                        u8 
*pedid_blocks_buf)
23d8ba8ff5d368 Xin Ji              2020-09-18  1019  {
23d8ba8ff5d368 Xin Ji              2020-09-18  1020     u8 offset, edid_pos;
23d8ba8ff5d368 Xin Ji              2020-09-18  1021     int count, blocks_num;
23d8ba8ff5d368 Xin Ji              2020-09-18  1022     u8 
pblock_buf[MAX_DPCD_BUFFER_SIZE];
23d8ba8ff5d368 Xin Ji              2020-09-18  1023     u8 i, j;
23d8ba8ff5d368 Xin Ji              2020-09-18  1024     u8 g_edid_break = 0;
23d8ba8ff5d368 Xin Ji              2020-09-18  1025     int ret;
23d8ba8ff5d368 Xin Ji              2020-09-18  1026     struct device *dev = 
&ctx->client->dev;
23d8ba8ff5d368 Xin Ji              2020-09-18  1027  
23d8ba8ff5d368 Xin Ji              2020-09-18  1028     /* Address initial */
23d8ba8ff5d368 Xin Ji              2020-09-18  1029     ret = 
anx7625_reg_write(ctx, ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji              2020-09-18  1030                             
AP_AUX_ADDR_7_0, 0x50);
23d8ba8ff5d368 Xin Ji              2020-09-18  1031     ret |= 
anx7625_reg_write(ctx, ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji              2020-09-18  1032                             
 AP_AUX_ADDR_15_8, 0);
23d8ba8ff5d368 Xin Ji              2020-09-18  1033     ret |= 
anx7625_write_and(ctx, ctx->i2c.rx_p0_client,
23d8ba8ff5d368 Xin Ji              2020-09-18  1034                             
 AP_AUX_ADDR_19_16, 0xf0);
23d8ba8ff5d368 Xin Ji              2020-09-18  1035     if (ret < 0) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1036             
DRM_DEV_ERROR(dev, "access aux channel IO error.\n");
23d8ba8ff5d368 Xin Ji              2020-09-18  1037             return -EIO;
23d8ba8ff5d368 Xin Ji              2020-09-18  1038     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1039  
23d8ba8ff5d368 Xin Ji              2020-09-18  1040     blocks_num = 
sp_tx_get_edid_block(ctx);
23d8ba8ff5d368 Xin Ji              2020-09-18  1041     if (blocks_num < 0)
23d8ba8ff5d368 Xin Ji              2020-09-18  1042             return 
blocks_num;
23d8ba8ff5d368 Xin Ji              2020-09-18  1043  
23d8ba8ff5d368 Xin Ji              2020-09-18  1044     count = 0;
23d8ba8ff5d368 Xin Ji              2020-09-18  1045  
23d8ba8ff5d368 Xin Ji              2020-09-18  1046     do {
23d8ba8ff5d368 Xin Ji              2020-09-18  1047             switch (count) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1048             case 0:
23d8ba8ff5d368 Xin Ji              2020-09-18  1049             case 1:
23d8ba8ff5d368 Xin Ji              2020-09-18  1050                     for (i 
= 0; i < 8; i++) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1051                             
offset = (i + count * 8) * MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji              2020-09-18  1052                             
g_edid_break = edid_read(ctx, offset,
23d8ba8ff5d368 Xin Ji              2020-09-18  1053                             
                         pblock_buf);
23d8ba8ff5d368 Xin Ji              2020-09-18  1054  
331b74951ecc80 Hsin-Yi Wang        2021-11-12 @1055                             
if (g_edid_break < 0)
23d8ba8ff5d368 Xin Ji              2020-09-18  1056                             
        break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1057  
23d8ba8ff5d368 Xin Ji              2020-09-18  1058                             
memcpy(&pedid_blocks_buf[offset],
23d8ba8ff5d368 Xin Ji              2020-09-18  1059                             
       pblock_buf,
23d8ba8ff5d368 Xin Ji              2020-09-18  1060                             
       MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji              2020-09-18  1061                     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1062  
23d8ba8ff5d368 Xin Ji              2020-09-18  1063                     break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1064             case 2:
23d8ba8ff5d368 Xin Ji              2020-09-18  1065                     offset 
= 0x00;
23d8ba8ff5d368 Xin Ji              2020-09-18  1066  
23d8ba8ff5d368 Xin Ji              2020-09-18  1067                     for (j 
= 0; j < 8; j++) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1068                             
edid_pos = (j + count * 8) *
23d8ba8ff5d368 Xin Ji              2020-09-18  1069                             
        MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji              2020-09-18  1070  
23d8ba8ff5d368 Xin Ji              2020-09-18  1071                             
if (g_edid_break == 1)
23d8ba8ff5d368 Xin Ji              2020-09-18  1072                             
        break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1073  
23d8ba8ff5d368 Xin Ji              2020-09-18  1074                             
segments_edid_read(ctx, count / 2,
23d8ba8ff5d368 Xin Ji              2020-09-18  1075                             
                   pblock_buf, offset);
23d8ba8ff5d368 Xin Ji              2020-09-18  1076                             
memcpy(&pedid_blocks_buf[edid_pos],
23d8ba8ff5d368 Xin Ji              2020-09-18  1077                             
       pblock_buf,
23d8ba8ff5d368 Xin Ji              2020-09-18  1078                             
       MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji              2020-09-18  1079                             
offset = offset + 0x10;
23d8ba8ff5d368 Xin Ji              2020-09-18  1080                     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1081  
23d8ba8ff5d368 Xin Ji              2020-09-18  1082                     break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1083             case 3:
23d8ba8ff5d368 Xin Ji              2020-09-18  1084                     offset 
= 0x80;
23d8ba8ff5d368 Xin Ji              2020-09-18  1085  
23d8ba8ff5d368 Xin Ji              2020-09-18  1086                     for (j 
= 0; j < 8; j++) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1087                             
edid_pos = (j + count * 8) *
23d8ba8ff5d368 Xin Ji              2020-09-18  1088                             
        MAX_DPCD_BUFFER_SIZE;
23d8ba8ff5d368 Xin Ji              2020-09-18  1089                             
if (g_edid_break == 1)
23d8ba8ff5d368 Xin Ji              2020-09-18  1090                             
        break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1091  
23d8ba8ff5d368 Xin Ji              2020-09-18  1092                             
segments_edid_read(ctx, count / 2,
23d8ba8ff5d368 Xin Ji              2020-09-18  1093                             
                   pblock_buf, offset);
23d8ba8ff5d368 Xin Ji              2020-09-18  1094                             
memcpy(&pedid_blocks_buf[edid_pos],
23d8ba8ff5d368 Xin Ji              2020-09-18  1095                             
       pblock_buf,
23d8ba8ff5d368 Xin Ji              2020-09-18  1096                             
       MAX_DPCD_BUFFER_SIZE);
23d8ba8ff5d368 Xin Ji              2020-09-18  1097                             
offset = offset + 0x10;
23d8ba8ff5d368 Xin Ji              2020-09-18  1098                     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1099  
23d8ba8ff5d368 Xin Ji              2020-09-18  1100                     break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1101             default:
23d8ba8ff5d368 Xin Ji              2020-09-18  1102                     break;
23d8ba8ff5d368 Xin Ji              2020-09-18  1103             }
23d8ba8ff5d368 Xin Ji              2020-09-18  1104  
23d8ba8ff5d368 Xin Ji              2020-09-18  1105             count++;
23d8ba8ff5d368 Xin Ji              2020-09-18  1106  
23d8ba8ff5d368 Xin Ji              2020-09-18  1107     } while (blocks_num >= 
count);
23d8ba8ff5d368 Xin Ji              2020-09-18  1108  
23d8ba8ff5d368 Xin Ji              2020-09-18  1109     /* Check edid data */
23d8ba8ff5d368 Xin Ji              2020-09-18  1110     if 
(!drm_edid_is_valid((struct edid *)pedid_blocks_buf)) {
23d8ba8ff5d368 Xin Ji              2020-09-18  1111             
DRM_DEV_ERROR(dev, "WARNING! edid check fail!\n");
23d8ba8ff5d368 Xin Ji              2020-09-18  1112             return -EINVAL;
23d8ba8ff5d368 Xin Ji              2020-09-18  1113     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1114  
23d8ba8ff5d368 Xin Ji              2020-09-18  1115     /* Reset aux channel */
c078b992821d86 Linux Patches Robot 2021-11-05  1116     ret = 
sp_tx_rst_aux(ctx);
c078b992821d86 Linux Patches Robot 2021-11-05  1117     if (ret < 0) {
c078b992821d86 Linux Patches Robot 2021-11-05  1118             
DRM_DEV_ERROR(dev, "Failed to reset aux channel!\n");
c078b992821d86 Linux Patches Robot 2021-11-05  1119             return ret;
c078b992821d86 Linux Patches Robot 2021-11-05  1120     }
23d8ba8ff5d368 Xin Ji              2020-09-18  1121  
23d8ba8ff5d368 Xin Ji              2020-09-18  1122     return (blocks_num + 1);
23d8ba8ff5d368 Xin Ji              2020-09-18  1123  }
23d8ba8ff5d368 Xin Ji              2020-09-18  1124  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to