case V4L2_PIX_FMT_ARGB32:
        case V4L2_PIX_FMT_ABGR32:
        case V4L2_PIX_FMT_GREY:
+       case V4L2_PIX_FMT_Y16:
                tpg->is_yuv = false;
                break;
        case V4L2_PIX_FMT_YUV444:
        case V4L2_PIX_FMT_YUV444:
        case V4L2_PIX_FMT_YUV555:
        case V4L2_PIX_FMT_YUV565:
+       case V4L2_PIX_FMT_Y16:
                tpg->twopixelsize[0] = 2 * 2;
                break;
        case V4L2_PIX_FMT_RGB24:
                g <<= 4;
                b <<= 4;
        }
-       if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY) {
+       if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY ||
+           tpg->fourcc == V4L2_PIX_FMT_Y16) {
                /* Rec. 709 Luma function */
                /* (0.2126, 0.7152, 0.0722) * (255 * 256) */
                r = g = b = (13879 * r + 46688 * g + 4713 * b) >> 16;
        case V4L2_PIX_FMT_GREY:
                buf[0][offset] = r_y;
                break;
+       case V4L2_PIX_FMT_Y16:
+               buf[0][offset] = 0;
+               buf[0][offset+1] = r_y;
+               break;
        case V4L2_PIX_FMT_YUV422P:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YUV420M:
 
                .planes   = 1,
                .buffers = 1,
        },
+       {
+               .fourcc   = V4L2_PIX_FMT_Y16,
+               .vdownsampling = { 1 },
+               .bit_depth = { 16 },
+               .is_yuv   = true,
+               .planes   = 1,
+               .buffers = 1,
+       },
        {
                .fourcc   = V4L2_PIX_FMT_RGB332, /* rrrgggbb */
                .vdownsampling = { 1 },