From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84653C433DF for ; Fri, 14 Aug 2020 07:28:42 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4061D20639 for ; Fri, 14 Aug 2020 07:28:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="K9D7b9nM"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="JARudOms" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4061D20639 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Sank9T1nGIM6ZEkrwlVdaqNc4WgAso4SMExioo31CR8=; b=K9D7b9nMMSi8lDceTBYwOr9h2 mT4SaoK2zlQX+srf2R30fQFpT+zdZtzuIWDyFLL7DbWQp3RGRWmckY5nsNDvJM401hM7g35aC6DJM dBRftZ0OQYDK67TamLmKeRYqMb2TciJWB8VHAsqHAALsZaX6D3AhdogmjkD6yG/31MpoM+Ap1odHg 62Dp+yOKxmL3VgTSKlUtUh4dECgNMa13ytp+Npq/DiZUiJj89ljeAFt1K99SF00Yl9oOaxRB+bFmC jhEcL6oIyf8f5tG2wjRG7DbsucpU97lUwVCrAvnOK+eFpOSzwDoMc0Gxosu2W+YaBi6kEoPR0+HMh vivI9/K0Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6U8Z-0006bU-Pg; Fri, 14 Aug 2020 07:28:27 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6U3x-0003N2-4S; Fri, 14 Aug 2020 07:23:44 +0000 X-UUID: 1ec150e9526f45e780e2de2ad1211119-20200813 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=1GYuN+LcBPlFEx+0Dh2Uxise7OCvxH4yOt7pqymOxBM=; b=JARudOmsae/vVINL313I46XnRLnI20a1SuzZSsnYAQLyIakT1Ir2A8U2U9DYErTWfP1JuHIfxyNNPnkdCHY4lN5Tc9HrP8zlsWsvi5HRxtHMwC5U0DyxoyS9N57PmVSvAkHFzReNk6VYC5N4WuR8/oYjq56fpDdrYLy9oQXU69Y=; X-UUID: 1ec150e9526f45e780e2de2ad1211119-20200813 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1179679822; Thu, 13 Aug 2020 23:23:16 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 00:13:29 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 15:13:26 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 14 Aug 2020 15:13:25 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , "Matthias Brugger" , Rick Chang Subject: [PATCH v12 20/29] media: platform: Redefinition of mtk_jpeg_q_data structure Date: Fri, 14 Aug 2020 15:11:53 +0800 Message-ID: <20200814071202.25067-22-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200814071202.25067-1-xia.jiang@mediatek.com> References: <20200814071202.25067-1-xia.jiang@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200814_032341_528559_CC3C1418 X-CRM114-Status: GOOD ( 17.29 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maoguang.meng@mediatek.com, devicetree@vger.kernel.org, mojahsu@chromium.org, srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Tomasz Figa , senozhatsky@chromium.org, drinkcat@chromium.org, linux-mediatek@lists.infradead.org, Xia Jiang , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Marek Szyprowski Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org The standard v4l2_pix_format_mplane structure contains width/height/ sizeimage/bytesperline, so use v4l2_pix_format_mplane to replace them. Reviewed-by: Tomasz Figa Signed-off-by: Xia Jiang --- v12: no changes --- .../media/platform/mtk-jpeg/mtk_jpeg_core.c | 101 ++++++++++-------- .../media/platform/mtk-jpeg/mtk_jpeg_core.h | 20 +--- 2 files changed, 57 insertions(+), 64 deletions(-) diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c index b3e38ffd4e81..01f4656fe2b3 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -207,15 +207,15 @@ static int mtk_jpeg_g_fmt_vid_mplane(struct file *file, void *priv, q_data = mtk_jpeg_get_q_data(ctx, f->type); - pix_mp->width = q_data->w; - pix_mp->height = q_data->h; + pix_mp->width = q_data->pix_mp.width; + pix_mp->height = q_data->pix_mp.height; pix_mp->field = V4L2_FIELD_NONE; pix_mp->pixelformat = q_data->fmt->fourcc; pix_mp->num_planes = q_data->fmt->colplanes; - pix_mp->colorspace = ctx->colorspace; - pix_mp->ycbcr_enc = ctx->ycbcr_enc; - pix_mp->xfer_func = ctx->xfer_func; - pix_mp->quantization = ctx->quantization; + pix_mp->colorspace = q_data->pix_mp.colorspace; + pix_mp->ycbcr_enc = q_data->pix_mp.ycbcr_enc; + pix_mp->xfer_func = q_data->pix_mp.xfer_func; + pix_mp->quantization = q_data->pix_mp.quantization; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "(%d) g_fmt:%c%c%c%c wxh:%ux%u\n", f->type, @@ -228,8 +228,8 @@ static int mtk_jpeg_g_fmt_vid_mplane(struct file *file, void *priv, for (i = 0; i < pix_mp->num_planes; i++) { struct v4l2_plane_pix_format *pfmt = &pix_mp->plane_fmt[i]; - pfmt->bytesperline = q_data->bytesperline[i]; - pfmt->sizeimage = q_data->sizeimage[i]; + pfmt->bytesperline = q_data->pix_mp.plane_fmt[i].bytesperline; + pfmt->sizeimage = q_data->pix_mp.plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "plane[%d] bpl=%u, size=%u\n", @@ -318,12 +318,12 @@ static int mtk_jpeg_s_fmt_mplane(struct mtk_jpeg_ctx *ctx, q_data->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, pix_mp->pixelformat, fmt_type); - q_data->w = pix_mp->width; - q_data->h = pix_mp->height; - ctx->colorspace = pix_mp->colorspace; - ctx->ycbcr_enc = pix_mp->ycbcr_enc; - ctx->xfer_func = pix_mp->xfer_func; - ctx->quantization = pix_mp->quantization; + q_data->pix_mp.width = pix_mp->width; + q_data->pix_mp.height = pix_mp->height; + q_data->pix_mp.colorspace = pix_mp->colorspace; + q_data->pix_mp.ycbcr_enc = pix_mp->ycbcr_enc; + q_data->pix_mp.xfer_func = pix_mp->xfer_func; + q_data->pix_mp.quantization = pix_mp->quantization; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "(%d) s_fmt:%c%c%c%c wxh:%ux%u\n", f->type, @@ -331,15 +331,18 @@ static int mtk_jpeg_s_fmt_mplane(struct mtk_jpeg_ctx *ctx, (q_data->fmt->fourcc >> 8 & 0xff), (q_data->fmt->fourcc >> 16 & 0xff), (q_data->fmt->fourcc >> 24 & 0xff), - q_data->w, q_data->h); + q_data->pix_mp.width, q_data->pix_mp.height); for (i = 0; i < q_data->fmt->colplanes; i++) { - q_data->bytesperline[i] = pix_mp->plane_fmt[i].bytesperline; - q_data->sizeimage[i] = pix_mp->plane_fmt[i].sizeimage; + q_data->pix_mp.plane_fmt[i].bytesperline = + pix_mp->plane_fmt[i].bytesperline; + q_data->pix_mp.plane_fmt[i].sizeimage = + pix_mp->plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "plane[%d] bpl=%u, size=%u\n", - i, q_data->bytesperline[i], q_data->sizeimage[i]); + i, q_data->pix_mp.plane_fmt[i].bytesperline, + q_data->pix_mp.plane_fmt[i].sizeimage); } return 0; @@ -404,15 +407,15 @@ static int mtk_jpeg_g_selection(struct file *file, void *priv, switch (s->target) { case V4L2_SEL_TGT_COMPOSE: case V4L2_SEL_TGT_COMPOSE_DEFAULT: - s->r.width = ctx->out_q.w; - s->r.height = ctx->out_q.h; + s->r.width = ctx->out_q.pix_mp.width; + s->r.height = ctx->out_q.pix_mp.height; s->r.left = 0; s->r.top = 0; break; case V4L2_SEL_TGT_COMPOSE_BOUNDS: case V4L2_SEL_TGT_COMPOSE_PADDED: - s->r.width = ctx->cap_q.w; - s->r.height = ctx->cap_q.h; + s->r.width = ctx->cap_q.pix_mp.width; + s->r.height = ctx->cap_q.pix_mp.height; s->r.left = 0; s->r.top = 0; break; @@ -468,14 +471,14 @@ static int mtk_jpeg_queue_setup(struct vb2_queue *q, if (*num_planes) { for (i = 0; i < *num_planes; i++) - if (sizes[i] < q_data->sizeimage[i]) + if (sizes[i] < q_data->pix_mp.plane_fmt[i].sizeimage) return -EINVAL; return 0; } *num_planes = q_data->fmt->colplanes; for (i = 0; i < q_data->fmt->colplanes; i++) { - sizes[i] = q_data->sizeimage[i]; + sizes[i] = q_data->pix_mp.plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "sizeimage[%d]=%u\n", i, sizes[i]); } @@ -494,7 +497,8 @@ static int mtk_jpeg_buf_prepare(struct vb2_buffer *vb) return -EINVAL; for (i = 0; i < q_data->fmt->colplanes; i++) - vb2_set_plane_payload(vb, i, q_data->sizeimage[i]); + vb2_set_plane_payload(vb, i, + q_data->pix_mp.plane_fmt[i].sizeimage); return 0; } @@ -506,7 +510,8 @@ static bool mtk_jpeg_check_resolution_change(struct mtk_jpeg_ctx *ctx, struct mtk_jpeg_q_data *q_data; q_data = &ctx->out_q; - if (q_data->w != param->pic_w || q_data->h != param->pic_h) { + if (q_data->pix_mp.width != param->pic_w || + q_data->pix_mp.height != param->pic_h) { v4l2_dbg(1, debug, &jpeg->v4l2_dev, "Picture size change\n"); return true; } @@ -529,20 +534,20 @@ static void mtk_jpeg_set_queue_data(struct mtk_jpeg_ctx *ctx, int i; q_data = &ctx->out_q; - q_data->w = param->pic_w; - q_data->h = param->pic_h; + q_data->pix_mp.width = param->pic_w; + q_data->pix_mp.height = param->pic_h; q_data = &ctx->cap_q; - q_data->w = param->dec_w; - q_data->h = param->dec_h; + q_data->pix_mp.width = param->dec_w; + q_data->pix_mp.height = param->dec_h; q_data->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, param->dst_fourcc, MTK_JPEG_FMT_FLAG_DEC_CAPTURE); for (i = 0; i < q_data->fmt->colplanes; i++) { - q_data->bytesperline[i] = param->mem_stride[i]; - q_data->sizeimage[i] = param->comp_size[i]; + q_data->pix_mp.plane_fmt[i].bytesperline = param->mem_stride[i]; + q_data->pix_mp.plane_fmt[i].sizeimage = param->comp_size[i]; } v4l2_dbg(1, debug, &jpeg->v4l2_dev, @@ -841,32 +846,36 @@ static void mtk_jpeg_set_default_params(struct mtk_jpeg_ctx *ctx) struct mtk_jpeg_q_data *q = &ctx->out_q; int i; - ctx->colorspace = V4L2_COLORSPACE_JPEG, - ctx->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; - ctx->quantization = V4L2_QUANTIZATION_DEFAULT; - ctx->xfer_func = V4L2_XFER_FUNC_DEFAULT; + q->pix_mp.colorspace = V4L2_COLORSPACE_JPEG, + q->pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; + q->pix_mp.quantization = V4L2_QUANTIZATION_DEFAULT; + q->pix_mp.xfer_func = V4L2_XFER_FUNC_DEFAULT; q->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, V4L2_PIX_FMT_JPEG, MTK_JPEG_FMT_FLAG_DEC_OUTPUT); - q->w = MTK_JPEG_MIN_WIDTH; - q->h = MTK_JPEG_MIN_HEIGHT; - q->bytesperline[0] = 0; - q->sizeimage[0] = MTK_JPEG_DEFAULT_SIZEIMAGE; + q->pix_mp.width = MTK_JPEG_MIN_WIDTH; + q->pix_mp.height = MTK_JPEG_MIN_HEIGHT; + q->pix_mp.plane_fmt[0].bytesperline = 0; + q->pix_mp.plane_fmt[0].sizeimage = MTK_JPEG_DEFAULT_SIZEIMAGE; q = &ctx->cap_q; q->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, V4L2_PIX_FMT_YUV420M, MTK_JPEG_FMT_FLAG_DEC_CAPTURE); - q->w = MTK_JPEG_MIN_WIDTH; - q->h = MTK_JPEG_MIN_HEIGHT; + q->pix_mp.colorspace = V4L2_COLORSPACE_JPEG, + q->pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; + q->pix_mp.quantization = V4L2_QUANTIZATION_DEFAULT; + q->pix_mp.xfer_func = V4L2_XFER_FUNC_DEFAULT; + q->pix_mp.width = MTK_JPEG_MIN_WIDTH; + q->pix_mp.height = MTK_JPEG_MIN_HEIGHT; for (i = 0; i < q->fmt->colplanes; i++) { - u32 stride = q->w * q->fmt->h_sample[i] / 4; - u32 h = q->h * q->fmt->v_sample[i] / 4; + u32 stride = q->pix_mp.width * q->fmt->h_sample[i] / 4; + u32 h = q->pix_mp.height * q->fmt->v_sample[i] / 4; - q->bytesperline[i] = stride; - q->sizeimage[i] = stride * h; + q->pix_mp.plane_fmt[i].bytesperline = stride; + q->pix_mp.plane_fmt[i].sizeimage = stride * h; } } diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h index 192ee488a50a..4c76a9dcc4b7 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h @@ -96,18 +96,11 @@ struct mtk_jpeg_fmt { /** * mtk_jpeg_q_data - parameters of one queue * @fmt: driver-specific format of this queue - * @w: image width - * @h: image height - * @bytesperline: distance in bytes between the leftmost pixels in two adjacent - * lines - * @sizeimage: image buffer size in bytes + * @pix_mp: multiplanar format */ struct mtk_jpeg_q_data { struct mtk_jpeg_fmt *fmt; - u32 w; - u32 h; - u32 bytesperline[VIDEO_MAX_PLANES]; - u32 sizeimage[VIDEO_MAX_PLANES]; + struct v4l2_pix_format_mplane pix_mp; }; /** @@ -117,10 +110,6 @@ struct mtk_jpeg_q_data { * @cap_q: destination (capture) queue queue information * @fh: V4L2 file handle * @state: state of the context - * @colorspace: enum v4l2_colorspace; supplemental to pixelformat - * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding - * @quantization: enum v4l2_quantization, colorspace quantization - * @xfer_func: enum v4l2_xfer_func, colorspace transfer function */ struct mtk_jpeg_ctx { struct mtk_jpeg_dev *jpeg; @@ -128,11 +117,6 @@ struct mtk_jpeg_ctx { struct mtk_jpeg_q_data cap_q; struct v4l2_fh fh; enum mtk_jpeg_ctx_state state; - - enum v4l2_colorspace colorspace; - enum v4l2_ycbcr_encoding ycbcr_enc; - enum v4l2_quantization quantization; - enum v4l2_xfer_func xfer_func; }; #endif /* _MTK_JPEG_CORE_H */ -- 2.18.0 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17A20C433E1 for ; Fri, 14 Aug 2020 07:31:14 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BE39F20639 for ; Fri, 14 Aug 2020 07:31:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="YrCuYZBv"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="JARudOms" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BE39F20639 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MWmoi5KdoJBD09KV9iwBf0Tr8JB3Cvi2tkNYCpfZrIM=; b=YrCuYZBv3gK+oHElYF2lI/XMN fE9sswxt1Gfw/00HGyWVuEOhrPo7YlcX6cJnsMahA1ASpmEUoXTK8ruFxkC4s/YfecqsXL7FRs9Zr 899iR0AONEXN4HRsjwhMn2p0pchfDqsCqkwuwI0xrD31Jf5DHrZQ6Hhtzex+MYg7vipqM0ZVIhXs9 TAs0Z9FAkz1qu+UWvi9BzondPxKDD74WE/jkQAlHea7vlCtlH6MdRh7Sd4Jh/aIuO7Fj/3MmAe+cZ v11EF/N2/b0vBqiIFsoARyoVCjEDq5WlArVpdPn+C+bNjVE6jSf6JZtu2ZYmcL+kv69fXCzS93TxV DS37Mw85Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6U8m-0006iO-Ao; Fri, 14 Aug 2020 07:28:40 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k6U3x-0003N2-4S; Fri, 14 Aug 2020 07:23:44 +0000 X-UUID: 1ec150e9526f45e780e2de2ad1211119-20200813 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=1GYuN+LcBPlFEx+0Dh2Uxise7OCvxH4yOt7pqymOxBM=; b=JARudOmsae/vVINL313I46XnRLnI20a1SuzZSsnYAQLyIakT1Ir2A8U2U9DYErTWfP1JuHIfxyNNPnkdCHY4lN5Tc9HrP8zlsWsvi5HRxtHMwC5U0DyxoyS9N57PmVSvAkHFzReNk6VYC5N4WuR8/oYjq56fpDdrYLy9oQXU69Y=; X-UUID: 1ec150e9526f45e780e2de2ad1211119-20200813 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1179679822; Thu, 13 Aug 2020 23:23:16 -0800 Received: from mtkmbs07n1.mediatek.inc (172.21.101.16) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 00:13:29 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 15:13:26 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 14 Aug 2020 15:13:25 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , "Matthias Brugger" , Rick Chang Subject: [PATCH v12 20/29] media: platform: Redefinition of mtk_jpeg_q_data structure Date: Fri, 14 Aug 2020 15:11:53 +0800 Message-ID: <20200814071202.25067-22-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200814071202.25067-1-xia.jiang@mediatek.com> References: <20200814071202.25067-1-xia.jiang@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200814_032341_528559_CC3C1418 X-CRM114-Status: GOOD ( 17.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: maoguang.meng@mediatek.com, devicetree@vger.kernel.org, mojahsu@chromium.org, srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, Tomasz Figa , senozhatsky@chromium.org, drinkcat@chromium.org, linux-mediatek@lists.infradead.org, Xia Jiang , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Marek Szyprowski Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The standard v4l2_pix_format_mplane structure contains width/height/ sizeimage/bytesperline, so use v4l2_pix_format_mplane to replace them. Reviewed-by: Tomasz Figa Signed-off-by: Xia Jiang --- v12: no changes --- .../media/platform/mtk-jpeg/mtk_jpeg_core.c | 101 ++++++++++-------- .../media/platform/mtk-jpeg/mtk_jpeg_core.h | 20 +--- 2 files changed, 57 insertions(+), 64 deletions(-) diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c index b3e38ffd4e81..01f4656fe2b3 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c @@ -207,15 +207,15 @@ static int mtk_jpeg_g_fmt_vid_mplane(struct file *file, void *priv, q_data = mtk_jpeg_get_q_data(ctx, f->type); - pix_mp->width = q_data->w; - pix_mp->height = q_data->h; + pix_mp->width = q_data->pix_mp.width; + pix_mp->height = q_data->pix_mp.height; pix_mp->field = V4L2_FIELD_NONE; pix_mp->pixelformat = q_data->fmt->fourcc; pix_mp->num_planes = q_data->fmt->colplanes; - pix_mp->colorspace = ctx->colorspace; - pix_mp->ycbcr_enc = ctx->ycbcr_enc; - pix_mp->xfer_func = ctx->xfer_func; - pix_mp->quantization = ctx->quantization; + pix_mp->colorspace = q_data->pix_mp.colorspace; + pix_mp->ycbcr_enc = q_data->pix_mp.ycbcr_enc; + pix_mp->xfer_func = q_data->pix_mp.xfer_func; + pix_mp->quantization = q_data->pix_mp.quantization; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "(%d) g_fmt:%c%c%c%c wxh:%ux%u\n", f->type, @@ -228,8 +228,8 @@ static int mtk_jpeg_g_fmt_vid_mplane(struct file *file, void *priv, for (i = 0; i < pix_mp->num_planes; i++) { struct v4l2_plane_pix_format *pfmt = &pix_mp->plane_fmt[i]; - pfmt->bytesperline = q_data->bytesperline[i]; - pfmt->sizeimage = q_data->sizeimage[i]; + pfmt->bytesperline = q_data->pix_mp.plane_fmt[i].bytesperline; + pfmt->sizeimage = q_data->pix_mp.plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "plane[%d] bpl=%u, size=%u\n", @@ -318,12 +318,12 @@ static int mtk_jpeg_s_fmt_mplane(struct mtk_jpeg_ctx *ctx, q_data->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, pix_mp->pixelformat, fmt_type); - q_data->w = pix_mp->width; - q_data->h = pix_mp->height; - ctx->colorspace = pix_mp->colorspace; - ctx->ycbcr_enc = pix_mp->ycbcr_enc; - ctx->xfer_func = pix_mp->xfer_func; - ctx->quantization = pix_mp->quantization; + q_data->pix_mp.width = pix_mp->width; + q_data->pix_mp.height = pix_mp->height; + q_data->pix_mp.colorspace = pix_mp->colorspace; + q_data->pix_mp.ycbcr_enc = pix_mp->ycbcr_enc; + q_data->pix_mp.xfer_func = pix_mp->xfer_func; + q_data->pix_mp.quantization = pix_mp->quantization; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "(%d) s_fmt:%c%c%c%c wxh:%ux%u\n", f->type, @@ -331,15 +331,18 @@ static int mtk_jpeg_s_fmt_mplane(struct mtk_jpeg_ctx *ctx, (q_data->fmt->fourcc >> 8 & 0xff), (q_data->fmt->fourcc >> 16 & 0xff), (q_data->fmt->fourcc >> 24 & 0xff), - q_data->w, q_data->h); + q_data->pix_mp.width, q_data->pix_mp.height); for (i = 0; i < q_data->fmt->colplanes; i++) { - q_data->bytesperline[i] = pix_mp->plane_fmt[i].bytesperline; - q_data->sizeimage[i] = pix_mp->plane_fmt[i].sizeimage; + q_data->pix_mp.plane_fmt[i].bytesperline = + pix_mp->plane_fmt[i].bytesperline; + q_data->pix_mp.plane_fmt[i].sizeimage = + pix_mp->plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "plane[%d] bpl=%u, size=%u\n", - i, q_data->bytesperline[i], q_data->sizeimage[i]); + i, q_data->pix_mp.plane_fmt[i].bytesperline, + q_data->pix_mp.plane_fmt[i].sizeimage); } return 0; @@ -404,15 +407,15 @@ static int mtk_jpeg_g_selection(struct file *file, void *priv, switch (s->target) { case V4L2_SEL_TGT_COMPOSE: case V4L2_SEL_TGT_COMPOSE_DEFAULT: - s->r.width = ctx->out_q.w; - s->r.height = ctx->out_q.h; + s->r.width = ctx->out_q.pix_mp.width; + s->r.height = ctx->out_q.pix_mp.height; s->r.left = 0; s->r.top = 0; break; case V4L2_SEL_TGT_COMPOSE_BOUNDS: case V4L2_SEL_TGT_COMPOSE_PADDED: - s->r.width = ctx->cap_q.w; - s->r.height = ctx->cap_q.h; + s->r.width = ctx->cap_q.pix_mp.width; + s->r.height = ctx->cap_q.pix_mp.height; s->r.left = 0; s->r.top = 0; break; @@ -468,14 +471,14 @@ static int mtk_jpeg_queue_setup(struct vb2_queue *q, if (*num_planes) { for (i = 0; i < *num_planes; i++) - if (sizes[i] < q_data->sizeimage[i]) + if (sizes[i] < q_data->pix_mp.plane_fmt[i].sizeimage) return -EINVAL; return 0; } *num_planes = q_data->fmt->colplanes; for (i = 0; i < q_data->fmt->colplanes; i++) { - sizes[i] = q_data->sizeimage[i]; + sizes[i] = q_data->pix_mp.plane_fmt[i].sizeimage; v4l2_dbg(1, debug, &jpeg->v4l2_dev, "sizeimage[%d]=%u\n", i, sizes[i]); } @@ -494,7 +497,8 @@ static int mtk_jpeg_buf_prepare(struct vb2_buffer *vb) return -EINVAL; for (i = 0; i < q_data->fmt->colplanes; i++) - vb2_set_plane_payload(vb, i, q_data->sizeimage[i]); + vb2_set_plane_payload(vb, i, + q_data->pix_mp.plane_fmt[i].sizeimage); return 0; } @@ -506,7 +510,8 @@ static bool mtk_jpeg_check_resolution_change(struct mtk_jpeg_ctx *ctx, struct mtk_jpeg_q_data *q_data; q_data = &ctx->out_q; - if (q_data->w != param->pic_w || q_data->h != param->pic_h) { + if (q_data->pix_mp.width != param->pic_w || + q_data->pix_mp.height != param->pic_h) { v4l2_dbg(1, debug, &jpeg->v4l2_dev, "Picture size change\n"); return true; } @@ -529,20 +534,20 @@ static void mtk_jpeg_set_queue_data(struct mtk_jpeg_ctx *ctx, int i; q_data = &ctx->out_q; - q_data->w = param->pic_w; - q_data->h = param->pic_h; + q_data->pix_mp.width = param->pic_w; + q_data->pix_mp.height = param->pic_h; q_data = &ctx->cap_q; - q_data->w = param->dec_w; - q_data->h = param->dec_h; + q_data->pix_mp.width = param->dec_w; + q_data->pix_mp.height = param->dec_h; q_data->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, param->dst_fourcc, MTK_JPEG_FMT_FLAG_DEC_CAPTURE); for (i = 0; i < q_data->fmt->colplanes; i++) { - q_data->bytesperline[i] = param->mem_stride[i]; - q_data->sizeimage[i] = param->comp_size[i]; + q_data->pix_mp.plane_fmt[i].bytesperline = param->mem_stride[i]; + q_data->pix_mp.plane_fmt[i].sizeimage = param->comp_size[i]; } v4l2_dbg(1, debug, &jpeg->v4l2_dev, @@ -841,32 +846,36 @@ static void mtk_jpeg_set_default_params(struct mtk_jpeg_ctx *ctx) struct mtk_jpeg_q_data *q = &ctx->out_q; int i; - ctx->colorspace = V4L2_COLORSPACE_JPEG, - ctx->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; - ctx->quantization = V4L2_QUANTIZATION_DEFAULT; - ctx->xfer_func = V4L2_XFER_FUNC_DEFAULT; + q->pix_mp.colorspace = V4L2_COLORSPACE_JPEG, + q->pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; + q->pix_mp.quantization = V4L2_QUANTIZATION_DEFAULT; + q->pix_mp.xfer_func = V4L2_XFER_FUNC_DEFAULT; q->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, V4L2_PIX_FMT_JPEG, MTK_JPEG_FMT_FLAG_DEC_OUTPUT); - q->w = MTK_JPEG_MIN_WIDTH; - q->h = MTK_JPEG_MIN_HEIGHT; - q->bytesperline[0] = 0; - q->sizeimage[0] = MTK_JPEG_DEFAULT_SIZEIMAGE; + q->pix_mp.width = MTK_JPEG_MIN_WIDTH; + q->pix_mp.height = MTK_JPEG_MIN_HEIGHT; + q->pix_mp.plane_fmt[0].bytesperline = 0; + q->pix_mp.plane_fmt[0].sizeimage = MTK_JPEG_DEFAULT_SIZEIMAGE; q = &ctx->cap_q; q->fmt = mtk_jpeg_find_format(mtk_jpeg_formats, MTK_JPEG_NUM_FORMATS, V4L2_PIX_FMT_YUV420M, MTK_JPEG_FMT_FLAG_DEC_CAPTURE); - q->w = MTK_JPEG_MIN_WIDTH; - q->h = MTK_JPEG_MIN_HEIGHT; + q->pix_mp.colorspace = V4L2_COLORSPACE_JPEG, + q->pix_mp.ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT; + q->pix_mp.quantization = V4L2_QUANTIZATION_DEFAULT; + q->pix_mp.xfer_func = V4L2_XFER_FUNC_DEFAULT; + q->pix_mp.width = MTK_JPEG_MIN_WIDTH; + q->pix_mp.height = MTK_JPEG_MIN_HEIGHT; for (i = 0; i < q->fmt->colplanes; i++) { - u32 stride = q->w * q->fmt->h_sample[i] / 4; - u32 h = q->h * q->fmt->v_sample[i] / 4; + u32 stride = q->pix_mp.width * q->fmt->h_sample[i] / 4; + u32 h = q->pix_mp.height * q->fmt->v_sample[i] / 4; - q->bytesperline[i] = stride; - q->sizeimage[i] = stride * h; + q->pix_mp.plane_fmt[i].bytesperline = stride; + q->pix_mp.plane_fmt[i].sizeimage = stride * h; } } diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h index 192ee488a50a..4c76a9dcc4b7 100644 --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.h @@ -96,18 +96,11 @@ struct mtk_jpeg_fmt { /** * mtk_jpeg_q_data - parameters of one queue * @fmt: driver-specific format of this queue - * @w: image width - * @h: image height - * @bytesperline: distance in bytes between the leftmost pixels in two adjacent - * lines - * @sizeimage: image buffer size in bytes + * @pix_mp: multiplanar format */ struct mtk_jpeg_q_data { struct mtk_jpeg_fmt *fmt; - u32 w; - u32 h; - u32 bytesperline[VIDEO_MAX_PLANES]; - u32 sizeimage[VIDEO_MAX_PLANES]; + struct v4l2_pix_format_mplane pix_mp; }; /** @@ -117,10 +110,6 @@ struct mtk_jpeg_q_data { * @cap_q: destination (capture) queue queue information * @fh: V4L2 file handle * @state: state of the context - * @colorspace: enum v4l2_colorspace; supplemental to pixelformat - * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding - * @quantization: enum v4l2_quantization, colorspace quantization - * @xfer_func: enum v4l2_xfer_func, colorspace transfer function */ struct mtk_jpeg_ctx { struct mtk_jpeg_dev *jpeg; @@ -128,11 +117,6 @@ struct mtk_jpeg_ctx { struct mtk_jpeg_q_data cap_q; struct v4l2_fh fh; enum mtk_jpeg_ctx_state state; - - enum v4l2_colorspace colorspace; - enum v4l2_ycbcr_encoding ycbcr_enc; - enum v4l2_quantization quantization; - enum v4l2_xfer_func xfer_func; }; #endif /* _MTK_JPEG_CORE_H */ -- 2.18.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.4 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 645C2C433E1 for ; Fri, 14 Aug 2020 07:14:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 332EB20708 for ; Fri, 14 Aug 2020 07:14:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Fxn7NDYI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726841AbgHNHOZ (ORCPT ); Fri, 14 Aug 2020 03:14:25 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:21934 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726861AbgHNHNj (ORCPT ); Fri, 14 Aug 2020 03:13:39 -0400 X-UUID: 62fad3c25a5242609b4ca3443f39ee43-20200814 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=1GYuN+LcBPlFEx+0Dh2Uxise7OCvxH4yOt7pqymOxBM=; b=Fxn7NDYIZh3+pbD9fPlCgkqsketoJuvMde8H6muFf5Z98uCCYsGx7H+KE+eHsGmLbJRlztArXjI6lArsh5Rv7qGqa+JgjapaZaWpZBNzsTU2xdQi/RkGtxuc51g/Vr44mtKaxd81wIS2A7Ti3mqNJKxhWqJGGhQ6sn5iIMMuLE0=; X-UUID: 62fad3c25a5242609b4ca3443f39ee43-20200814 Received: from mtkexhb02.mediatek.inc [(172.21.101.103)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1550802922; Fri, 14 Aug 2020 15:13:29 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 14 Aug 2020 15:13:26 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 14 Aug 2020 15:13:25 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Rick Chang CC: , , , , , Marek Szyprowski , Tomasz Figa , , , , , , Xia Jiang Subject: [PATCH v12 20/29] media: platform: Redefinition of mtk_jpeg_q_data structure Date: Fri, 14 Aug 2020 15:11:53 +0800 Message-ID: <20200814071202.25067-22-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200814071202.25067-1-xia.jiang@mediatek.com> References: <20200814071202.25067-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org VGhlIHN0YW5kYXJkIHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgc3RydWN0dXJlIGNvbnRhaW5zIHdp ZHRoL2hlaWdodC8NCnNpemVpbWFnZS9ieXRlc3BlcmxpbmUsIHNvIHVzZSB2NGwyX3BpeF9mb3Jt YXRfbXBsYW5lIHRvIHJlcGxhY2UgdGhlbS4NCg0KUmV2aWV3ZWQtYnk6IFRvbWFzeiBGaWdhIDx0 ZmlnYUBjaHJvbWl1bS5vcmc+DQpTaWduZWQtb2ZmLWJ5OiBYaWEgSmlhbmcgPHhpYS5qaWFuZ0Bt ZWRpYXRlay5jb20+DQotLS0NCnYxMjogbm8gY2hhbmdlcw0KLS0tDQogLi4uL21lZGlhL3BsYXRm b3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYyAgIHwgMTAxICsrKysrKysrKystLS0tLS0tLQ0K IC4uLi9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggICB8ICAyMCArLS0t DQogMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkNCg0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29y ZS5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCmlu ZGV4IGIzZTM4ZmZkNGU4MS4uMDFmNDY1NmZlMmIzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCisrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5jDQpAQCAtMjA3LDE1ICsyMDcsMTUgQEAg c3RhdGljIGludCBtdGtfanBlZ19nX2ZtdF92aWRfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2 b2lkICpwcml2LA0KIA0KIAlxX2RhdGEgPSBtdGtfanBlZ19nZXRfcV9kYXRhKGN0eCwgZi0+dHlw ZSk7DQogDQotCXBpeF9tcC0+d2lkdGggPSBxX2RhdGEtPnc7DQotCXBpeF9tcC0+aGVpZ2h0ID0g cV9kYXRhLT5oOw0KKwlwaXhfbXAtPndpZHRoID0gcV9kYXRhLT5waXhfbXAud2lkdGg7DQorCXBp eF9tcC0+aGVpZ2h0ID0gcV9kYXRhLT5waXhfbXAuaGVpZ2h0Ow0KIAlwaXhfbXAtPmZpZWxkID0g VjRMMl9GSUVMRF9OT05FOw0KIAlwaXhfbXAtPnBpeGVsZm9ybWF0ID0gcV9kYXRhLT5mbXQtPmZv dXJjYzsNCiAJcGl4X21wLT5udW1fcGxhbmVzID0gcV9kYXRhLT5mbXQtPmNvbHBsYW5lczsNCi0J cGl4X21wLT5jb2xvcnNwYWNlID0gY3R4LT5jb2xvcnNwYWNlOw0KLQlwaXhfbXAtPnljYmNyX2Vu YyA9IGN0eC0+eWNiY3JfZW5jOw0KLQlwaXhfbXAtPnhmZXJfZnVuYyA9IGN0eC0+eGZlcl9mdW5j Ow0KLQlwaXhfbXAtPnF1YW50aXphdGlvbiA9IGN0eC0+cXVhbnRpemF0aW9uOw0KKwlwaXhfbXAt PmNvbG9yc3BhY2UgPSBxX2RhdGEtPnBpeF9tcC5jb2xvcnNwYWNlOw0KKwlwaXhfbXAtPnljYmNy X2VuYyA9IHFfZGF0YS0+cGl4X21wLnljYmNyX2VuYzsNCisJcGl4X21wLT54ZmVyX2Z1bmMgPSBx X2RhdGEtPnBpeF9tcC54ZmVyX2Z1bmM7DQorCXBpeF9tcC0+cXVhbnRpemF0aW9uID0gcV9kYXRh LT5waXhfbXAucXVhbnRpemF0aW9uOw0KIA0KIAl2NGwyX2RiZygxLCBkZWJ1ZywgJmpwZWctPnY0 bDJfZGV2LCAiKCVkKSBnX2ZtdDolYyVjJWMlYyB3eGg6JXV4JXVcbiIsDQogCQkgZi0+dHlwZSwN CkBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIGludCBtdGtfanBlZ19nX2ZtdF92aWRfbXBsYW5l KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0KIAlmb3IgKGkgPSAwOyBpIDwgcGl4X21w LT5udW1fcGxhbmVzOyBpKyspIHsNCiAJCXN0cnVjdCB2NGwyX3BsYW5lX3BpeF9mb3JtYXQgKnBm bXQgPSAmcGl4X21wLT5wbGFuZV9mbXRbaV07DQogDQotCQlwZm10LT5ieXRlc3BlcmxpbmUgPSBx X2RhdGEtPmJ5dGVzcGVybGluZVtpXTsNCi0JCXBmbXQtPnNpemVpbWFnZSA9IHFfZGF0YS0+c2l6 ZWltYWdlW2ldOw0KKwkJcGZtdC0+Ynl0ZXNwZXJsaW5lID0gcV9kYXRhLT5waXhfbXAucGxhbmVf Zm10W2ldLmJ5dGVzcGVybGluZTsNCisJCXBmbXQtPnNpemVpbWFnZSA9IHFfZGF0YS0+cGl4X21w LnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2U7DQogDQogCQl2NGwyX2RiZygxLCBkZWJ1ZywgJmpwZWct PnY0bDJfZGV2LA0KIAkJCSAicGxhbmVbJWRdIGJwbD0ldSwgc2l6ZT0ldVxuIiwNCkBAIC0zMTgs MTIgKzMxOCwxMiBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10X21wbGFuZShzdHJ1Y3QgbXRr X2pwZWdfY3R4ICpjdHgsDQogCXFfZGF0YS0+Zm10ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQobXRr X2pwZWdfZm9ybWF0cywNCiAJCQkJCSAgIE1US19KUEVHX05VTV9GT1JNQVRTLA0KIAkJCQkJICAg cGl4X21wLT5waXhlbGZvcm1hdCwgZm10X3R5cGUpOw0KLQlxX2RhdGEtPncgPSBwaXhfbXAtPndp ZHRoOw0KLQlxX2RhdGEtPmggPSBwaXhfbXAtPmhlaWdodDsNCi0JY3R4LT5jb2xvcnNwYWNlID0g cGl4X21wLT5jb2xvcnNwYWNlOw0KLQljdHgtPnljYmNyX2VuYyA9IHBpeF9tcC0+eWNiY3JfZW5j Ow0KLQljdHgtPnhmZXJfZnVuYyA9IHBpeF9tcC0+eGZlcl9mdW5jOw0KLQljdHgtPnF1YW50aXph dGlvbiA9IHBpeF9tcC0+cXVhbnRpemF0aW9uOw0KKwlxX2RhdGEtPnBpeF9tcC53aWR0aCA9IHBp eF9tcC0+d2lkdGg7DQorCXFfZGF0YS0+cGl4X21wLmhlaWdodCA9IHBpeF9tcC0+aGVpZ2h0Ow0K KwlxX2RhdGEtPnBpeF9tcC5jb2xvcnNwYWNlID0gcGl4X21wLT5jb2xvcnNwYWNlOw0KKwlxX2Rh dGEtPnBpeF9tcC55Y2Jjcl9lbmMgPSBwaXhfbXAtPnljYmNyX2VuYzsNCisJcV9kYXRhLT5waXhf bXAueGZlcl9mdW5jID0gcGl4X21wLT54ZmVyX2Z1bmM7DQorCXFfZGF0YS0+cGl4X21wLnF1YW50 aXphdGlvbiA9IHBpeF9tcC0+cXVhbnRpemF0aW9uOw0KIA0KIAl2NGwyX2RiZygxLCBkZWJ1Zywg JmpwZWctPnY0bDJfZGV2LCAiKCVkKSBzX2ZtdDolYyVjJWMlYyB3eGg6JXV4JXVcbiIsDQogCQkg Zi0+dHlwZSwNCkBAIC0zMzEsMTUgKzMzMSwxOCBAQCBzdGF0aWMgaW50IG10a19qcGVnX3NfZm10 X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCQkgKHFfZGF0YS0+Zm10LT5mb3Vy Y2MgPj4gIDggJiAweGZmKSwNCiAJCSAocV9kYXRhLT5mbXQtPmZvdXJjYyA+PiAxNiAmIDB4ZmYp LA0KIAkJIChxX2RhdGEtPmZtdC0+Zm91cmNjID4+IDI0ICYgMHhmZiksDQotCQkgcV9kYXRhLT53 LCBxX2RhdGEtPmgpOw0KKwkJIHFfZGF0YS0+cGl4X21wLndpZHRoLCBxX2RhdGEtPnBpeF9tcC5o ZWlnaHQpOw0KIA0KIAlmb3IgKGkgPSAwOyBpIDwgcV9kYXRhLT5mbXQtPmNvbHBsYW5lczsgaSsr KSB7DQotCQlxX2RhdGEtPmJ5dGVzcGVybGluZVtpXSA9IHBpeF9tcC0+cGxhbmVfZm10W2ldLmJ5 dGVzcGVybGluZTsNCi0JCXFfZGF0YS0+c2l6ZWltYWdlW2ldID0gcGl4X21wLT5wbGFuZV9mbXRb aV0uc2l6ZWltYWdlOw0KKwkJcV9kYXRhLT5waXhfbXAucGxhbmVfZm10W2ldLmJ5dGVzcGVybGlu ZSA9DQorCQkJCQlwaXhfbXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmU7DQorCQlxX2RhdGEt PnBpeF9tcC5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0NCisJCQkJCXBpeF9tcC0+cGxhbmVfZm10 W2ldLnNpemVpbWFnZTsNCiANCiAJCXY0bDJfZGJnKDEsIGRlYnVnLCAmanBlZy0+djRsMl9kZXYs DQogCQkJICJwbGFuZVslZF0gYnBsPSV1LCBzaXplPSV1XG4iLA0KLQkJCSBpLCBxX2RhdGEtPmJ5 dGVzcGVybGluZVtpXSwgcV9kYXRhLT5zaXplaW1hZ2VbaV0pOw0KKwkJCSBpLCBxX2RhdGEtPnBp eF9tcC5wbGFuZV9mbXRbaV0uYnl0ZXNwZXJsaW5lLA0KKwkJCSBxX2RhdGEtPnBpeF9tcC5wbGFu ZV9mbXRbaV0uc2l6ZWltYWdlKTsNCiAJfQ0KIA0KIAlyZXR1cm4gMDsNCkBAIC00MDQsMTUgKzQw NywxNSBAQCBzdGF0aWMgaW50IG10a19qcGVnX2dfc2VsZWN0aW9uKHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpwcml2LA0KIAlzd2l0Y2ggKHMtPnRhcmdldCkgew0KIAljYXNlIFY0TDJfU0VMX1RH VF9DT01QT1NFOg0KIAljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX0RFRkFVTFQ6DQotCQlzLT5y LndpZHRoID0gY3R4LT5vdXRfcS53Ow0KLQkJcy0+ci5oZWlnaHQgPSBjdHgtPm91dF9xLmg7DQor CQlzLT5yLndpZHRoID0gY3R4LT5vdXRfcS5waXhfbXAud2lkdGg7DQorCQlzLT5yLmhlaWdodCA9 IGN0eC0+b3V0X3EucGl4X21wLmhlaWdodDsNCiAJCXMtPnIubGVmdCA9IDA7DQogCQlzLT5yLnRv cCA9IDA7DQogCQlicmVhazsNCiAJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFM6DQog CWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0VfUEFEREVEOg0KLQkJcy0+ci53aWR0aCA9IGN0eC0+ Y2FwX3EudzsNCi0JCXMtPnIuaGVpZ2h0ID0gY3R4LT5jYXBfcS5oOw0KKwkJcy0+ci53aWR0aCA9 IGN0eC0+Y2FwX3EucGl4X21wLndpZHRoOw0KKwkJcy0+ci5oZWlnaHQgPSBjdHgtPmNhcF9xLnBp eF9tcC5oZWlnaHQ7DQogCQlzLT5yLmxlZnQgPSAwOw0KIAkJcy0+ci50b3AgPSAwOw0KIAkJYnJl YWs7DQpAQCAtNDY4LDE0ICs0NzEsMTQgQEAgc3RhdGljIGludCBtdGtfanBlZ19xdWV1ZV9zZXR1 cChzdHJ1Y3QgdmIyX3F1ZXVlICpxLA0KIA0KIAlpZiAoKm51bV9wbGFuZXMpIHsNCiAJCWZvciAo aSA9IDA7IGkgPCAqbnVtX3BsYW5lczsgaSsrKQ0KLQkJCWlmIChzaXplc1tpXSA8IHFfZGF0YS0+ c2l6ZWltYWdlW2ldKQ0KKwkJCWlmIChzaXplc1tpXSA8IHFfZGF0YS0+cGl4X21wLnBsYW5lX2Zt dFtpXS5zaXplaW1hZ2UpDQogCQkJCXJldHVybiAtRUlOVkFMOw0KIAkJcmV0dXJuIDA7DQogCX0N CiANCiAJKm51bV9wbGFuZXMgPSBxX2RhdGEtPmZtdC0+Y29scGxhbmVzOw0KIAlmb3IgKGkgPSAw OyBpIDwgcV9kYXRhLT5mbXQtPmNvbHBsYW5lczsgaSsrKSB7DQotCQlzaXplc1tpXSA9IHFfZGF0 YS0+c2l6ZWltYWdlW2ldOw0KKwkJc2l6ZXNbaV0gPSAgcV9kYXRhLT5waXhfbXAucGxhbmVfZm10 W2ldLnNpemVpbWFnZTsNCiAJCXY0bDJfZGJnKDEsIGRlYnVnLCAmanBlZy0+djRsMl9kZXYsICJz aXplaW1hZ2VbJWRdPSV1XG4iLA0KIAkJCSBpLCBzaXplc1tpXSk7DQogCX0NCkBAIC00OTQsNyAr NDk3LDggQEAgc3RhdGljIGludCBtdGtfanBlZ19idWZfcHJlcGFyZShzdHJ1Y3QgdmIyX2J1ZmZl ciAqdmIpDQogCQlyZXR1cm4gLUVJTlZBTDsNCiANCiAJZm9yIChpID0gMDsgaSA8IHFfZGF0YS0+ Zm10LT5jb2xwbGFuZXM7IGkrKykNCi0JCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCh2YiwgaSwgcV9k YXRhLT5zaXplaW1hZ2VbaV0pOw0KKwkJdmIyX3NldF9wbGFuZV9wYXlsb2FkKHZiLCBpLA0KKwkJ CQkgICAgICBxX2RhdGEtPnBpeF9tcC5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlKTsNCiANCiAJcmV0 dXJuIDA7DQogfQ0KQEAgLTUwNiw3ICs1MTAsOCBAQCBzdGF0aWMgYm9vbCBtdGtfanBlZ19jaGVj a19yZXNvbHV0aW9uX2NoYW5nZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCXN0cnVjdCBt dGtfanBlZ19xX2RhdGEgKnFfZGF0YTsNCiANCiAJcV9kYXRhID0gJmN0eC0+b3V0X3E7DQotCWlm IChxX2RhdGEtPncgIT0gcGFyYW0tPnBpY193IHx8IHFfZGF0YS0+aCAhPSBwYXJhbS0+cGljX2gp IHsNCisJaWYgKHFfZGF0YS0+cGl4X21wLndpZHRoICE9IHBhcmFtLT5waWNfdyB8fA0KKwkgICAg cV9kYXRhLT5waXhfbXAuaGVpZ2h0ICE9IHBhcmFtLT5waWNfaCkgew0KIAkJdjRsMl9kYmcoMSwg ZGVidWcsICZqcGVnLT52NGwyX2RldiwgIlBpY3R1cmUgc2l6ZSBjaGFuZ2VcbiIpOw0KIAkJcmV0 dXJuIHRydWU7DQogCX0NCkBAIC01MjksMjAgKzUzNCwyMCBAQCBzdGF0aWMgdm9pZCBtdGtfanBl Z19zZXRfcXVldWVfZGF0YShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCWludCBpOw0KIA0K IAlxX2RhdGEgPSAmY3R4LT5vdXRfcTsNCi0JcV9kYXRhLT53ID0gcGFyYW0tPnBpY193Ow0KLQlx X2RhdGEtPmggPSBwYXJhbS0+cGljX2g7DQorCXFfZGF0YS0+cGl4X21wLndpZHRoID0gcGFyYW0t PnBpY193Ow0KKwlxX2RhdGEtPnBpeF9tcC5oZWlnaHQgPSBwYXJhbS0+cGljX2g7DQogDQogCXFf ZGF0YSA9ICZjdHgtPmNhcF9xOw0KLQlxX2RhdGEtPncgPSBwYXJhbS0+ZGVjX3c7DQotCXFfZGF0 YS0+aCA9IHBhcmFtLT5kZWNfaDsNCisJcV9kYXRhLT5waXhfbXAud2lkdGggPSBwYXJhbS0+ZGVj X3c7DQorCXFfZGF0YS0+cGl4X21wLmhlaWdodCA9IHBhcmFtLT5kZWNfaDsNCiAJcV9kYXRhLT5m bXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChtdGtfanBlZ19mb3JtYXRzLA0KIAkJCQkJICAgTVRL X0pQRUdfTlVNX0ZPUk1BVFMsDQogCQkJCQkgICBwYXJhbS0+ZHN0X2ZvdXJjYywNCiAJCQkJCSAg IE1US19KUEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFKTsNCiANCiAJZm9yIChpID0gMDsgaSA8IHFf ZGF0YS0+Zm10LT5jb2xwbGFuZXM7IGkrKykgew0KLQkJcV9kYXRhLT5ieXRlc3BlcmxpbmVbaV0g PSBwYXJhbS0+bWVtX3N0cmlkZVtpXTsNCi0JCXFfZGF0YS0+c2l6ZWltYWdlW2ldID0gcGFyYW0t PmNvbXBfc2l6ZVtpXTsNCisJCXFfZGF0YS0+cGl4X21wLnBsYW5lX2ZtdFtpXS5ieXRlc3Blcmxp bmUgPSBwYXJhbS0+bWVtX3N0cmlkZVtpXTsNCisJCXFfZGF0YS0+cGl4X21wLnBsYW5lX2ZtdFtp XS5zaXplaW1hZ2UgPSBwYXJhbS0+Y29tcF9zaXplW2ldOw0KIAl9DQogDQogCXY0bDJfZGJnKDEs IGRlYnVnLCAmanBlZy0+djRsMl9kZXYsDQpAQCAtODQxLDMyICs4NDYsMzYgQEAgc3RhdGljIHZv aWQgbXRrX2pwZWdfc2V0X2RlZmF1bHRfcGFyYW1zKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkN CiAJc3RydWN0IG10a19qcGVnX3FfZGF0YSAqcSA9ICZjdHgtPm91dF9xOw0KIAlpbnQgaTsNCiAN Ci0JY3R4LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQotCWN0eC0+eWNiY3Jf ZW5jID0gVjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDsNCi0JY3R4LT5xdWFudGl6YXRpb24gPSBWNEwy X1FVQU5USVpBVElPTl9ERUZBVUxUOw0KLQljdHgtPnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5D X0RFRkFVTFQ7DQorCXEtPnBpeF9tcC5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcs DQorCXEtPnBpeF9tcC55Y2Jjcl9lbmMgPSBWNEwyX1lDQkNSX0VOQ19ERUZBVUxUOw0KKwlxLT5w aXhfbXAucXVhbnRpemF0aW9uID0gVjRMMl9RVUFOVElaQVRJT05fREVGQVVMVDsNCisJcS0+cGl4 X21wLnhmZXJfZnVuYyA9IFY0TDJfWEZFUl9GVU5DX0RFRkFVTFQ7DQogDQogCXEtPmZtdCA9IG10 a19qcGVnX2ZpbmRfZm9ybWF0KG10a19qcGVnX2Zvcm1hdHMsIE1US19KUEVHX05VTV9GT1JNQVRT LA0KIAkJCQkgICAgICBWNEwyX1BJWF9GTVRfSlBFRywNCiAJCQkJICAgICAgTVRLX0pQRUdfRk1U X0ZMQUdfREVDX09VVFBVVCk7DQotCXEtPncgPSBNVEtfSlBFR19NSU5fV0lEVEg7DQotCXEtPmgg PSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KLQlxLT5ieXRlc3BlcmxpbmVbMF0gPSAwOw0KLQlxLT5z aXplaW1hZ2VbMF0gPSBNVEtfSlBFR19ERUZBVUxUX1NJWkVJTUFHRTsNCisJcS0+cGl4X21wLndp ZHRoID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KKwlxLT5waXhfbXAuaGVpZ2h0ID0gTVRLX0pQRUdf TUlOX0hFSUdIVDsNCisJcS0+cGl4X21wLnBsYW5lX2ZtdFswXS5ieXRlc3BlcmxpbmUgPSAwOw0K KwlxLT5waXhfbXAucGxhbmVfZm10WzBdLnNpemVpbWFnZSA9IE1US19KUEVHX0RFRkFVTFRfU0la RUlNQUdFOw0KIA0KIAlxID0gJmN0eC0+Y2FwX3E7DQogCXEtPmZtdCA9IG10a19qcGVnX2ZpbmRf Zm9ybWF0KG10a19qcGVnX2Zvcm1hdHMsIE1US19KUEVHX05VTV9GT1JNQVRTLA0KIAkJCQkgICAg ICBWNEwyX1BJWF9GTVRfWVVWNDIwTSwNCiAJCQkJICAgICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVD X0NBUFRVUkUpOw0KLQlxLT53ID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KLQlxLT5oID0gTVRLX0pQ RUdfTUlOX0hFSUdIVDsNCisJcS0+cGl4X21wLmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0Vf SlBFRywNCisJcS0+cGl4X21wLnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RFRkFVTFQ7DQor CXEtPnBpeF9tcC5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElPTl9ERUZBVUxUOw0KKwlx LT5waXhfbXAueGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZVTkNfREVGQVVMVDsNCisJcS0+cGl4X21w LndpZHRoID0gTVRLX0pQRUdfTUlOX1dJRFRIOw0KKwlxLT5waXhfbXAuaGVpZ2h0ID0gTVRLX0pQ RUdfTUlOX0hFSUdIVDsNCiANCiAJZm9yIChpID0gMDsgaSA8IHEtPmZtdC0+Y29scGxhbmVzOyBp KyspIHsNCi0JCXUzMiBzdHJpZGUgPSBxLT53ICogcS0+Zm10LT5oX3NhbXBsZVtpXSAvIDQ7DQot CQl1MzIgaCA9IHEtPmggKiBxLT5mbXQtPnZfc2FtcGxlW2ldIC8gNDsNCisJCXUzMiBzdHJpZGUg PSBxLT5waXhfbXAud2lkdGggKiBxLT5mbXQtPmhfc2FtcGxlW2ldIC8gNDsNCisJCXUzMiBoID0g cS0+cGl4X21wLmhlaWdodCAqIHEtPmZtdC0+dl9zYW1wbGVbaV0gLyA0Ow0KIA0KLQkJcS0+Ynl0 ZXNwZXJsaW5lW2ldID0gc3RyaWRlOw0KLQkJcS0+c2l6ZWltYWdlW2ldID0gc3RyaWRlICogaDsN CisJCXEtPnBpeF9tcC5wbGFuZV9mbXRbaV0uYnl0ZXNwZXJsaW5lID0gc3RyaWRlOw0KKwkJcS0+ cGl4X21wLnBsYW5lX2ZtdFtpXS5zaXplaW1hZ2UgPSBzdHJpZGUgKiBoOw0KIAl9DQogfQ0KIA0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29y ZS5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCmlu ZGV4IDE5MmVlNDg4YTUwYS4uNGM3NmE5ZGNjNGI3IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCisrKyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oDQpAQCAtOTYsMTggKzk2LDExIEBAIHN0 cnVjdCBtdGtfanBlZ19mbXQgew0KIC8qKg0KICAqIG10a19qcGVnX3FfZGF0YSAtIHBhcmFtZXRl cnMgb2Ygb25lIHF1ZXVlDQogICogQGZtdDoJICBkcml2ZXItc3BlY2lmaWMgZm9ybWF0IG9mIHRo aXMgcXVldWUNCi0gKiBAdzoJCSAgaW1hZ2Ugd2lkdGgNCi0gKiBAaDoJCSAgaW1hZ2UgaGVpZ2h0 DQotICogQGJ5dGVzcGVybGluZTogZGlzdGFuY2UgaW4gYnl0ZXMgYmV0d2VlbiB0aGUgbGVmdG1v c3QgcGl4ZWxzIGluIHR3byBhZGphY2VudA0KLSAqICAgICAgICAgICAgICAgIGxpbmVzDQotICog QHNpemVpbWFnZToJICBpbWFnZSBidWZmZXIgc2l6ZSBpbiBieXRlcw0KKyAqIEBwaXhfbXA6CSAg bXVsdGlwbGFuYXIgZm9ybWF0DQogICovDQogc3RydWN0IG10a19qcGVnX3FfZGF0YSB7DQogCXN0 cnVjdCBtdGtfanBlZ19mbXQJKmZtdDsNCi0JdTMyCQkJdzsNCi0JdTMyCQkJaDsNCi0JdTMyCQkJ Ynl0ZXNwZXJsaW5lW1ZJREVPX01BWF9QTEFORVNdOw0KLQl1MzIJCQlzaXplaW1hZ2VbVklERU9f TUFYX1BMQU5FU107DQorCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5lIHBpeF9tcDsNCiB9 Ow0KIA0KIC8qKg0KQEAgLTExNywxMCArMTEwLDYgQEAgc3RydWN0IG10a19qcGVnX3FfZGF0YSB7 DQogICogQGNhcF9xOgkJZGVzdGluYXRpb24gKGNhcHR1cmUpIHF1ZXVlIHF1ZXVlIGluZm9ybWF0 aW9uDQogICogQGZoOgkJCVY0TDIgZmlsZSBoYW5kbGUNCiAgKiBAc3RhdGU6CQlzdGF0ZSBvZiB0 aGUgY29udGV4dA0KLSAqIEBjb2xvcnNwYWNlOiBlbnVtIHY0bDJfY29sb3JzcGFjZTsgc3VwcGxl bWVudGFsIHRvIHBpeGVsZm9ybWF0DQotICogQHljYmNyX2VuYzogZW51bSB2NGwyX3ljYmNyX2Vu Y29kaW5nLCBZJ0NiQ3IgZW5jb2RpbmcNCi0gKiBAcXVhbnRpemF0aW9uOiBlbnVtIHY0bDJfcXVh bnRpemF0aW9uLCBjb2xvcnNwYWNlIHF1YW50aXphdGlvbg0KLSAqIEB4ZmVyX2Z1bmM6IGVudW0g djRsMl94ZmVyX2Z1bmMsIGNvbG9yc3BhY2UgdHJhbnNmZXIgZnVuY3Rpb24NCiAgKi8NCiBzdHJ1 Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0IG10a19qcGVnX2RldgkJKmpwZWc7DQpAQCAtMTI4 LDExICsxMTcsNiBAQCBzdHJ1Y3QgbXRrX2pwZWdfY3R4IHsNCiAJc3RydWN0IG10a19qcGVnX3Ff ZGF0YQkJY2FwX3E7DQogCXN0cnVjdCB2NGwyX2ZoCQkJZmg7DQogCWVudW0gbXRrX2pwZWdfY3R4 X3N0YXRlCQlzdGF0ZTsNCi0NCi0JZW51bSB2NGwyX2NvbG9yc3BhY2UgY29sb3JzcGFjZTsNCi0J ZW51bSB2NGwyX3ljYmNyX2VuY29kaW5nIHljYmNyX2VuYzsNCi0JZW51bSB2NGwyX3F1YW50aXph dGlvbiBxdWFudGl6YXRpb247DQotCWVudW0gdjRsMl94ZmVyX2Z1bmMgeGZlcl9mdW5jOw0KIH07 DQogDQogI2VuZGlmIC8qIF9NVEtfSlBFR19DT1JFX0ggKi8NCi0tIA0KMi4xOC4wDQo=