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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
