Hi Vivek, Thank you for the patch! Yet something to improve: [auto build test ERROR on linuxtv-media/master] [also build test ERROR on v5.0-rc4 next-20190207] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Vivek-Kasireddy/Add-support-for-32-bit-packed-YUV-formats/20190208-173506 base: git://linuxtv.org/media_tree.git master config: i386-randconfig-x017-201905 (attached as .config) compiler: gcc-8 (Debian 8.2.0-15) 8.2.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): drivers/media/common/v4l2-tpg/v4l2-tpg-core.c: In function 'gen_twopix': >> drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:1283:2: error: duplicate case value case V4L2_PIX_FMT_YUV32: ^~~~ drivers/media/common/v4l2-tpg/v4l2-tpg-core.c:1281:2: note: previously used here case V4L2_PIX_FMT_YUV32: ^~~~ vim +1283 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c 1051 1052 /* 'odd' is true for pixels 1, 3, 5, etc. and false for pixels 0, 2, 4, etc. */ 1053 static void gen_twopix(struct tpg_data *tpg, 1054 u8 buf[TPG_MAX_PLANES][8], int color, bool odd) 1055 { 1056 unsigned offset = odd * tpg->twopixelsize[0] / 2; 1057 u8 alpha = tpg->alpha_component; 1058 u8 r_y_h, g_u_s, b_v; 1059 1060 if (tpg->alpha_red_only && color != TPG_COLOR_CSC_RED && 1061 color != TPG_COLOR_100_RED && 1062 color != TPG_COLOR_75_RED) 1063 alpha = 0; 1064 if (color == TPG_COLOR_RANDOM) 1065 precalculate_color(tpg, color); 1066 r_y_h = tpg->colors[color][0]; /* R or precalculated Y, H */ 1067 g_u_s = tpg->colors[color][1]; /* G or precalculated U, V */ 1068 b_v = tpg->colors[color][2]; /* B or precalculated V */ 1069 1070 switch (tpg->fourcc) { 1071 case V4L2_PIX_FMT_GREY: 1072 buf[0][offset] = r_y_h; 1073 break; 1074 case V4L2_PIX_FMT_Y10: 1075 buf[0][offset] = (r_y_h << 2) & 0xff; 1076 buf[0][offset+1] = r_y_h >> 6; 1077 break; 1078 case V4L2_PIX_FMT_Y12: 1079 buf[0][offset] = (r_y_h << 4) & 0xff; 1080 buf[0][offset+1] = r_y_h >> 4; 1081 break; 1082 case V4L2_PIX_FMT_Y16: 1083 case V4L2_PIX_FMT_Z16: 1084 /* 1085 * Ideally both bytes should be set to r_y_h, but then you won't 1086 * be able to detect endian problems. So keep it 0 except for 1087 * the corner case where r_y_h is 0xff so white really will be 1088 * white (0xffff). 1089 */ 1090 buf[0][offset] = r_y_h == 0xff ? r_y_h : 0; 1091 buf[0][offset+1] = r_y_h; 1092 break; 1093 case V4L2_PIX_FMT_Y16_BE: 1094 /* See comment for V4L2_PIX_FMT_Y16 above */ 1095 buf[0][offset] = r_y_h; 1096 buf[0][offset+1] = r_y_h == 0xff ? r_y_h : 0; 1097 break; 1098 case V4L2_PIX_FMT_YUV422M: 1099 case V4L2_PIX_FMT_YUV422P: 1100 case V4L2_PIX_FMT_YUV420: 1101 case V4L2_PIX_FMT_YUV420M: 1102 buf[0][offset] = r_y_h; 1103 if (odd) { 1104 buf[1][0] = (buf[1][0] + g_u_s) / 2; 1105 buf[2][0] = (buf[2][0] + b_v) / 2; 1106 buf[1][1] = buf[1][0]; 1107 buf[2][1] = buf[2][0]; 1108 break; 1109 } 1110 buf[1][0] = g_u_s; 1111 buf[2][0] = b_v; 1112 break; 1113 case V4L2_PIX_FMT_YVU422M: 1114 case V4L2_PIX_FMT_YVU420: 1115 case V4L2_PIX_FMT_YVU420M: 1116 buf[0][offset] = r_y_h; 1117 if (odd) { 1118 buf[1][0] = (buf[1][0] + b_v) / 2; 1119 buf[2][0] = (buf[2][0] + g_u_s) / 2; 1120 buf[1][1] = buf[1][0]; 1121 buf[2][1] = buf[2][0]; 1122 break; 1123 } 1124 buf[1][0] = b_v; 1125 buf[2][0] = g_u_s; 1126 break; 1127 1128 case V4L2_PIX_FMT_NV12: 1129 case V4L2_PIX_FMT_NV12M: 1130 case V4L2_PIX_FMT_NV16: 1131 case V4L2_PIX_FMT_NV16M: 1132 buf[0][offset] = r_y_h; 1133 if (odd) { 1134 buf[1][0] = (buf[1][0] + g_u_s) / 2; 1135 buf[1][1] = (buf[1][1] + b_v) / 2; 1136 break; 1137 } 1138 buf[1][0] = g_u_s; 1139 buf[1][1] = b_v; 1140 break; 1141 case V4L2_PIX_FMT_NV21: 1142 case V4L2_PIX_FMT_NV21M: 1143 case V4L2_PIX_FMT_NV61: 1144 case V4L2_PIX_FMT_NV61M: 1145 buf[0][offset] = r_y_h; 1146 if (odd) { 1147 buf[1][0] = (buf[1][0] + b_v) / 2; 1148 buf[1][1] = (buf[1][1] + g_u_s) / 2; 1149 break; 1150 } 1151 buf[1][0] = b_v; 1152 buf[1][1] = g_u_s; 1153 break; 1154 1155 case V4L2_PIX_FMT_YUV444M: 1156 buf[0][offset] = r_y_h; 1157 buf[1][offset] = g_u_s; 1158 buf[2][offset] = b_v; 1159 break; 1160 1161 case V4L2_PIX_FMT_YVU444M: 1162 buf[0][offset] = r_y_h; 1163 buf[1][offset] = b_v; 1164 buf[2][offset] = g_u_s; 1165 break; 1166 1167 case V4L2_PIX_FMT_NV24: 1168 buf[0][offset] = r_y_h; 1169 buf[1][2 * offset] = g_u_s; 1170 buf[1][(2 * offset + 1) % 8] = b_v; 1171 break; 1172 1173 case V4L2_PIX_FMT_NV42: 1174 buf[0][offset] = r_y_h; 1175 buf[1][2 * offset] = b_v; 1176 buf[1][(2 * offset + 1) % 8] = g_u_s; 1177 break; 1178 1179 case V4L2_PIX_FMT_YUYV: 1180 buf[0][offset] = r_y_h; 1181 if (odd) { 1182 buf[0][1] = (buf[0][1] + g_u_s) / 2; 1183 buf[0][3] = (buf[0][3] + b_v) / 2; 1184 break; 1185 } 1186 buf[0][1] = g_u_s; 1187 buf[0][3] = b_v; 1188 break; 1189 case V4L2_PIX_FMT_UYVY: 1190 buf[0][offset + 1] = r_y_h; 1191 if (odd) { 1192 buf[0][0] = (buf[0][0] + g_u_s) / 2; 1193 buf[0][2] = (buf[0][2] + b_v) / 2; 1194 break; 1195 } 1196 buf[0][0] = g_u_s; 1197 buf[0][2] = b_v; 1198 break; 1199 case V4L2_PIX_FMT_YVYU: 1200 buf[0][offset] = r_y_h; 1201 if (odd) { 1202 buf[0][1] = (buf[0][1] + b_v) / 2; 1203 buf[0][3] = (buf[0][3] + g_u_s) / 2; 1204 break; 1205 } 1206 buf[0][1] = b_v; 1207 buf[0][3] = g_u_s; 1208 break; 1209 case V4L2_PIX_FMT_VYUY: 1210 buf[0][offset + 1] = r_y_h; 1211 if (odd) { 1212 buf[0][0] = (buf[0][0] + b_v) / 2; 1213 buf[0][2] = (buf[0][2] + g_u_s) / 2; 1214 break; 1215 } 1216 buf[0][0] = b_v; 1217 buf[0][2] = g_u_s; 1218 break; 1219 case V4L2_PIX_FMT_RGB332: 1220 buf[0][offset] = (r_y_h << 5) | (g_u_s << 2) | b_v; 1221 break; 1222 case V4L2_PIX_FMT_YUV565: 1223 case V4L2_PIX_FMT_RGB565: 1224 buf[0][offset] = (g_u_s << 5) | b_v; 1225 buf[0][offset + 1] = (r_y_h << 3) | (g_u_s >> 3); 1226 break; 1227 case V4L2_PIX_FMT_RGB565X: 1228 buf[0][offset] = (r_y_h << 3) | (g_u_s >> 3); 1229 buf[0][offset + 1] = (g_u_s << 5) | b_v; 1230 break; 1231 case V4L2_PIX_FMT_RGB444: 1232 case V4L2_PIX_FMT_XRGB444: 1233 alpha = 0; 1234 /* fall through */ 1235 case V4L2_PIX_FMT_YUV444: 1236 case V4L2_PIX_FMT_ARGB444: 1237 buf[0][offset] = (g_u_s << 4) | b_v; 1238 buf[0][offset + 1] = (alpha & 0xf0) | r_y_h; 1239 break; 1240 case V4L2_PIX_FMT_RGB555: 1241 case V4L2_PIX_FMT_XRGB555: 1242 alpha = 0; 1243 /* fall through */ 1244 case V4L2_PIX_FMT_YUV555: 1245 case V4L2_PIX_FMT_ARGB555: 1246 buf[0][offset] = (g_u_s << 5) | b_v; 1247 buf[0][offset + 1] = (alpha & 0x80) | (r_y_h << 2) 1248 | (g_u_s >> 3); 1249 break; 1250 case V4L2_PIX_FMT_RGB555X: 1251 case V4L2_PIX_FMT_XRGB555X: 1252 alpha = 0; 1253 /* fall through */ 1254 case V4L2_PIX_FMT_ARGB555X: 1255 buf[0][offset] = (alpha & 0x80) | (r_y_h << 2) | (g_u_s >> 3); 1256 buf[0][offset + 1] = (g_u_s << 5) | b_v; 1257 break; 1258 case V4L2_PIX_FMT_RGB24: 1259 case V4L2_PIX_FMT_HSV24: 1260 buf[0][offset] = r_y_h; 1261 buf[0][offset + 1] = g_u_s; 1262 buf[0][offset + 2] = b_v; 1263 break; 1264 case V4L2_PIX_FMT_BGR24: 1265 buf[0][offset] = b_v; 1266 buf[0][offset + 1] = g_u_s; 1267 buf[0][offset + 2] = r_y_h; 1268 break; 1269 case V4L2_PIX_FMT_BGR666: 1270 buf[0][offset] = (b_v << 2) | (g_u_s >> 4); 1271 buf[0][offset + 1] = (g_u_s << 4) | (r_y_h >> 2); 1272 buf[0][offset + 2] = r_y_h << 6; 1273 buf[0][offset + 3] = 0; 1274 break; 1275 case V4L2_PIX_FMT_RGB32: 1276 case V4L2_PIX_FMT_XRGB32: 1277 case V4L2_PIX_FMT_HSV32: 1278 case V4L2_PIX_FMT_XYUV32: 1279 alpha = 0; 1280 /* fall through */ 1281 case V4L2_PIX_FMT_YUV32: 1282 case V4L2_PIX_FMT_ARGB32: > 1283 case V4L2_PIX_FMT_YUV32: 1284 case V4L2_PIX_FMT_AYUV32: 1285 buf[0][offset] = alpha; 1286 buf[0][offset + 1] = r_y_h; 1287 buf[0][offset + 2] = g_u_s; 1288 buf[0][offset + 3] = b_v; 1289 break; 1290 case V4L2_PIX_FMT_BGR32: 1291 case V4L2_PIX_FMT_XBGR32: 1292 case V4L2_PIX_FMT_VUYX32: 1293 alpha = 0; 1294 /* fall through */ 1295 case V4L2_PIX_FMT_ABGR32: 1296 case V4L2_PIX_FMT_VUYA32: 1297 buf[0][offset] = b_v; 1298 buf[0][offset + 1] = g_u_s; 1299 buf[0][offset + 2] = r_y_h; 1300 buf[0][offset + 3] = alpha; 1301 break; 1302 case V4L2_PIX_FMT_SBGGR8: 1303 buf[0][offset] = odd ? g_u_s : b_v; 1304 buf[1][offset] = odd ? r_y_h : g_u_s; 1305 break; 1306 case V4L2_PIX_FMT_SGBRG8: 1307 buf[0][offset] = odd ? b_v : g_u_s; 1308 buf[1][offset] = odd ? g_u_s : r_y_h; 1309 break; 1310 case V4L2_PIX_FMT_SGRBG8: 1311 buf[0][offset] = odd ? r_y_h : g_u_s; 1312 buf[1][offset] = odd ? g_u_s : b_v; 1313 break; 1314 case V4L2_PIX_FMT_SRGGB8: 1315 buf[0][offset] = odd ? g_u_s : r_y_h; 1316 buf[1][offset] = odd ? b_v : g_u_s; 1317 break; 1318 case V4L2_PIX_FMT_SBGGR10: 1319 buf[0][offset] = odd ? g_u_s << 2 : b_v << 2; 1320 buf[0][offset + 1] = odd ? g_u_s >> 6 : b_v >> 6; 1321 buf[1][offset] = odd ? r_y_h << 2 : g_u_s << 2; 1322 buf[1][offset + 1] = odd ? r_y_h >> 6 : g_u_s >> 6; 1323 buf[0][offset] |= (buf[0][offset] >> 2) & 3; 1324 buf[1][offset] |= (buf[1][offset] >> 2) & 3; 1325 break; 1326 case V4L2_PIX_FMT_SGBRG10: 1327 buf[0][offset] = odd ? b_v << 2 : g_u_s << 2; 1328 buf[0][offset + 1] = odd ? b_v >> 6 : g_u_s >> 6; 1329 buf[1][offset] = odd ? g_u_s << 2 : r_y_h << 2; 1330 buf[1][offset + 1] = odd ? g_u_s >> 6 : r_y_h >> 6; 1331 buf[0][offset] |= (buf[0][offset] >> 2) & 3; 1332 buf[1][offset] |= (buf[1][offset] >> 2) & 3; 1333 break; 1334 case V4L2_PIX_FMT_SGRBG10: 1335 buf[0][offset] = odd ? r_y_h << 2 : g_u_s << 2; 1336 buf[0][offset + 1] = odd ? r_y_h >> 6 : g_u_s >> 6; 1337 buf[1][offset] = odd ? g_u_s << 2 : b_v << 2; 1338 buf[1][offset + 1] = odd ? g_u_s >> 6 : b_v >> 6; 1339 buf[0][offset] |= (buf[0][offset] >> 2) & 3; 1340 buf[1][offset] |= (buf[1][offset] >> 2) & 3; 1341 break; 1342 case V4L2_PIX_FMT_SRGGB10: 1343 buf[0][offset] = odd ? g_u_s << 2 : r_y_h << 2; 1344 buf[0][offset + 1] = odd ? g_u_s >> 6 : r_y_h >> 6; 1345 buf[1][offset] = odd ? b_v << 2 : g_u_s << 2; 1346 buf[1][offset + 1] = odd ? b_v >> 6 : g_u_s >> 6; 1347 buf[0][offset] |= (buf[0][offset] >> 2) & 3; 1348 buf[1][offset] |= (buf[1][offset] >> 2) & 3; 1349 break; 1350 case V4L2_PIX_FMT_SBGGR12: 1351 buf[0][offset] = odd ? g_u_s << 4 : b_v << 4; 1352 buf[0][offset + 1] = odd ? g_u_s >> 4 : b_v >> 4; 1353 buf[1][offset] = odd ? r_y_h << 4 : g_u_s << 4; 1354 buf[1][offset + 1] = odd ? r_y_h >> 4 : g_u_s >> 4; 1355 buf[0][offset] |= (buf[0][offset] >> 4) & 0xf; 1356 buf[1][offset] |= (buf[1][offset] >> 4) & 0xf; 1357 break; 1358 case V4L2_PIX_FMT_SGBRG12: 1359 buf[0][offset] = odd ? b_v << 4 : g_u_s << 4; 1360 buf[0][offset + 1] = odd ? b_v >> 4 : g_u_s >> 4; 1361 buf[1][offset] = odd ? g_u_s << 4 : r_y_h << 4; 1362 buf[1][offset + 1] = odd ? g_u_s >> 4 : r_y_h >> 4; 1363 buf[0][offset] |= (buf[0][offset] >> 4) & 0xf; 1364 buf[1][offset] |= (buf[1][offset] >> 4) & 0xf; 1365 break; 1366 case V4L2_PIX_FMT_SGRBG12: 1367 buf[0][offset] = odd ? r_y_h << 4 : g_u_s << 4; 1368 buf[0][offset + 1] = odd ? r_y_h >> 4 : g_u_s >> 4; 1369 buf[1][offset] = odd ? g_u_s << 4 : b_v << 4; 1370 buf[1][offset + 1] = odd ? g_u_s >> 4 : b_v >> 4; 1371 buf[0][offset] |= (buf[0][offset] >> 4) & 0xf; 1372 buf[1][offset] |= (buf[1][offset] >> 4) & 0xf; 1373 break; 1374 case V4L2_PIX_FMT_SRGGB12: 1375 buf[0][offset] = odd ? g_u_s << 4 : r_y_h << 4; 1376 buf[0][offset + 1] = odd ? g_u_s >> 4 : r_y_h >> 4; 1377 buf[1][offset] = odd ? b_v << 4 : g_u_s << 4; 1378 buf[1][offset + 1] = odd ? b_v >> 4 : g_u_s >> 4; 1379 buf[0][offset] |= (buf[0][offset] >> 4) & 0xf; 1380 buf[1][offset] |= (buf[1][offset] >> 4) & 0xf; 1381 break; 1382 case V4L2_PIX_FMT_SBGGR16: 1383 buf[0][offset] = buf[0][offset + 1] = odd ? g_u_s : b_v; 1384 buf[1][offset] = buf[1][offset + 1] = odd ? r_y_h : g_u_s; 1385 break; 1386 case V4L2_PIX_FMT_SGBRG16: 1387 buf[0][offset] = buf[0][offset + 1] = odd ? b_v : g_u_s; 1388 buf[1][offset] = buf[1][offset + 1] = odd ? g_u_s : r_y_h; 1389 break; 1390 case V4L2_PIX_FMT_SGRBG16: 1391 buf[0][offset] = buf[0][offset + 1] = odd ? r_y_h : g_u_s; 1392 buf[1][offset] = buf[1][offset + 1] = odd ? g_u_s : b_v; 1393 break; 1394 case V4L2_PIX_FMT_SRGGB16: 1395 buf[0][offset] = buf[0][offset + 1] = odd ? g_u_s : r_y_h; 1396 buf[1][offset] = buf[1][offset + 1] = odd ? b_v : g_u_s; 1397 break; 1398 } 1399 } 1400 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation