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.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 16A63C48BE5 for ; Tue, 22 Jun 2021 21:46:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F15ED6128E for ; Tue, 22 Jun 2021 21:45:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229886AbhFVVsM (ORCPT ); Tue, 22 Jun 2021 17:48:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229625AbhFVVsL (ORCPT ); Tue, 22 Jun 2021 17:48:11 -0400 Received: from mail-qv1-xf2d.google.com (mail-qv1-xf2d.google.com [IPv6:2607:f8b0:4864:20::f2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84540C061756 for ; Tue, 22 Jun 2021 14:45:54 -0700 (PDT) Received: by mail-qv1-xf2d.google.com with SMTP id dj3so350989qvb.11 for ; Tue, 22 Jun 2021 14:45:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=tjkvSgGRfmIbfrg2chlFeWIFPYZbCMnuiloAlQl45gOXmmhsO2Q0AMBFtqxGCu7VQX B/TzNcXPflnytYqKxL0vpy0u3Xo5HqsR3oAecuaV3pNoFWtwBx0fTTbkiSyXI5YVqRTX W2FwfHx+f1kUBeeX26j2RI0/ZdYs2o7ZvqJNr523zeV0O3DmmlrhFYWcW66mhIkHdFEU 7j+EQlaJKH4sNbT73OU3HcSwVX1kKOMhPuJy+tXX3wA5H/bcJyl9x9Y/Mi1Iul4h5RxM OI8BRJqqSXOL+QGcYFgffWzmXExCGcrxNvOJCz5TC9/zHFUEyAyDLmDx2JxODeUV3x/C nSjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=rechE9VZW4E8D6lwA8p4CO3PxXHRvlEJojkPX7YXo5nASd0jj77LqH24+D8xYcod4E WCcAZSCki+nr4l5nity+oWw8iTvZeS3h4Lf75Bk/Lm96tD1Vz6ZlWLl1Y/8VW86yevmH YPLx07KcxKoVX6F/Q3bLCKLi7e+dGXYxN0zf3Oo/Fcb9ngQf2ueN+MXHaQZ/ohNTvvfs ASXvapz/qWB5NSPpvyJi5K8droF3+/uCWgx5TSEfqFPnC09urbSUT81kradRc0tbsHup STHCAIzIV6dyuuSoyfc98gu5GR+DywT5qV0Yv3BhTAX/R72BDr4WvljJH4RWdlebgBnA xVgA== X-Gm-Message-State: AOAM532lffb4UrFYe4fPDdkqJjjmMqp95QfFC8oEDB2YFX9tBqZIFNHF 6HueRe2mIJ5REiYHQWDGesHcHA== X-Google-Smtp-Source: ABdhPJy/hfM1bVULI3oIX7/Nw7nufILBm50Nrc1Qhd1xgcdtpXlBz1HcSGkjslOgXQxPHRyPenZk1w== X-Received: by 2002:a0c:f181:: with SMTP id m1mr996619qvl.15.1624398353631; Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id m199sm14161214qke.71.2021.06.22.14.45.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Message-ID: <8f57b807062b5125b1129cab343c7f19e5068c62.camel@ndufresne.ca> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Nicolas Dufresne To: Benjamin Gaignard , hverkuil@xs4all.nl, ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Tue, 22 Jun 2021 17:45:51 -0400 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.1 (3.40.1-1.fc34) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le vendredi 18 juin 2021 à 15:15 +0200, Benjamin Gaignard a écrit : > When enumerating the output formats take care of the hardware scaling > capabilities. > For a given input size G2 hardware block is capable of down scale the > output by 2, 4 or 8 factor. When decoding 4K streams that to be could > helpful to save memory bandwidth. > > Signed-off-by: Benjamin Gaignard > --- > drivers/staging/media/hantro/hantro.h | 4 ++ > .../staging/media/hantro/hantro_g2_hevc_dec.c | 46 ++++++++++++++++++- > drivers/staging/media/hantro/hantro_g2_regs.h | 6 +++ > drivers/staging/media/hantro/hantro_hw.h | 1 + > drivers/staging/media/hantro/hantro_v4l2.c | 10 ++-- > drivers/staging/media/hantro/imx8m_vpu_hw.c | 1 + > 6 files changed, 63 insertions(+), 5 deletions(-) > > diff --git a/drivers/staging/media/hantro/hantro.h b/drivers/staging/media/hantro/hantro.h > index 6a21d1e95b34..ca9038b0384a 100644 > --- a/drivers/staging/media/hantro/hantro.h > +++ b/drivers/staging/media/hantro/hantro.h > @@ -71,6 +71,9 @@ struct hantro_irq { > * @reg_names: array of register range names > * @num_regs: number of register range names in the array > * @postproc_regs: &struct hantro_postproc_regs pointer > + * @scaling: Set possible scaled output formats. > + * Returns zero if OK, a negative value in error cases. > + * Optional. > */ > struct hantro_variant { > unsigned int enc_offset; > @@ -92,6 +95,7 @@ struct hantro_variant { > const char * const *reg_names; > int num_regs; > const struct hantro_postproc_regs *postproc_regs; > + int (*scaling)(struct hantro_ctx *ctx, struct v4l2_frmsizeenum *fsize); > }; > > /** > diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > index 41dc89ec926c..3a8aa2ff109c 100644 > --- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > +++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > @@ -396,6 +396,17 @@ static void set_ref_pic_list(struct hantro_ctx *ctx) > } > } > > +static int down_scale_factor(struct hantro_ctx *ctx) > +{ > + const struct hantro_hevc_dec_ctrls *ctrls = &ctx->hevc_dec.ctrls; > + const struct v4l2_ctrl_hevc_sps *sps = ctrls->sps; > + > + if (sps->pic_width_in_luma_samples == ctx->dst_fmt.width) > + return 0; > + > + return DIV_ROUND_CLOSEST(sps->pic_width_in_luma_samples, ctx->dst_fmt.width); > +} > + > static int set_ref(struct hantro_ctx *ctx) > { > const struct hantro_hevc_dec_ctrls *ctrls = &ctx->hevc_dec.ctrls; > @@ -409,6 +420,7 @@ static int set_ref(struct hantro_ctx *ctx) > size_t mv_offset = hantro_hevc_motion_vectors_offset(sps); > size_t compress_luma_offset = hantro_hevc_luma_compress_offset(sps); > size_t compress_chroma_offset = hantro_hevc_chroma_compress_offset(sps); > + int down_scale = down_scale_factor(ctx); > u32 max_ref_frames; > u16 dpb_longterm_e; > static const struct hantro_reg cur_poc[] = { > @@ -521,8 +533,18 @@ static int set_ref(struct hantro_ctx *ctx) > hantro_write_addr(vpu, G2_REG_CHR_REF(i), chroma_addr); > hantro_write_addr(vpu, G2_REG_DMV_REF(i++), mv_addr); > > - hantro_write_addr(vpu, G2_ADDR_DST, luma_addr); > - hantro_write_addr(vpu, G2_ADDR_DST_CHR, chroma_addr); > + if (down_scale) { > + chroma_addr = luma_addr + (cr_offset >> down_scale); > + hantro_reg_write(vpu, &g2_down_scale_e, 1); > + hantro_reg_write(vpu, &g2_down_scale_y, down_scale >> 2); > + hantro_reg_write(vpu, &g2_down_scale_x, down_scale >> 2); > + hantro_write_addr(vpu, G2_DS_DST, luma_addr); > + hantro_write_addr(vpu, G2_DS_DST_CHR, chroma_addr); > + } else { > + hantro_write_addr(vpu, G2_ADDR_DST, luma_addr); > + hantro_write_addr(vpu, G2_ADDR_DST_CHR, chroma_addr); > + } > + > hantro_write_addr(vpu, G2_ADDR_DST_MV, mv_addr); > hantro_write_addr(vpu, G2_COMP_ADDR_DST, compress_luma_addr); > hantro_write_addr(vpu, G2_COMP_CHR, compress_chroma_addr); > @@ -603,6 +625,26 @@ static void hantro_g2_check_idle(struct hantro_dev *vpu) > } > } > > +int hantro_g2_hevc_dec_scaling(struct hantro_ctx *ctx, > + struct v4l2_frmsizeenum *fsize) > +{ > + /** > + * G2 scaler can scale down by 0, 2, 4 or 8 > + * use fsize->index has power of 2 diviser > + **/ > + if (fsize->index > 3) > + return -EINVAL; > + > + if (!ctx->src_fmt.width || !ctx->src_fmt.height) > + return -EINVAL; > + > + fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE; > + fsize->discrete.width = ctx->src_fmt.width >> fsize->index; > + fsize->discrete.height = ctx->src_fmt.height >> fsize->index; Have you given some thought around coded vs display size ? In this context, we return an enumerated of coded scaled size. The VIDIOC_ENUM_FRAMESIZES documentation [0] does not say anything useful about these two. So this ambiguity also exist for existing M2M scaler mainline. Shall we enumerate the frame sizes in term of coded or display size ? Of course the scaling factor remains the same, but the application will likely need to convert. Which leads me to think this patch should come with additional documentation. [0] https://www.kernel.org/doc/html/v4.11/media/uapi/v4l/vidioc-enum-framesizes.html p.s. my feeling is that enumerating coded size is what makes most sense, but the PP could also have some cropping capability, in which case it may want to lock the src_fmt width/height to the display size instead of padding it. Not knowing what the driver will do seems problematic for applications. > + > + return 0; > +} > + > int hantro_g2_hevc_dec_run(struct hantro_ctx *ctx) > { > struct hantro_dev *vpu = ctx->dev; > diff --git a/drivers/staging/media/hantro/hantro_g2_regs.h b/drivers/staging/media/hantro/hantro_g2_regs.h > index 941e5482d27b..54f3d78ce46e 100644 > --- a/drivers/staging/media/hantro/hantro_g2_regs.h > +++ b/drivers/staging/media/hantro/hantro_g2_regs.h > @@ -174,6 +174,10 @@ > #define g2_buswidth G2_DEC_REG(58, 8, 0x7) > #define g2_max_burst G2_DEC_REG(58, 0, 0xff) > > +#define g2_down_scale_e G2_DEC_REG(184, 7, 0x1) > +#define g2_down_scale_y G2_DEC_REG(184, 2, 0x3) > +#define g2_down_scale_x G2_DEC_REG(184, 0, 0x3) > + > #define G2_REG_CONFIG G2_SWREG(58) > #define G2_REG_CONFIG_DEC_CLK_GATE_E BIT(16) > #define G2_REG_CONFIG_DEC_CLK_GATE_IDLE_E BIT(17) > @@ -193,6 +197,8 @@ > #define G2_TILE_FILTER (G2_SWREG(179)) > #define G2_TILE_SAO (G2_SWREG(181)) > #define G2_TILE_BSD (G2_SWREG(183)) > +#define G2_DS_DST (G2_SWREG(186)) > +#define G2_DS_DST_CHR (G2_SWREG(188)) > #define G2_COMP_ADDR_DST (G2_SWREG(190)) > #define G2_COMP_ADDR_REF(i) (G2_SWREG(192) + ((i) * 0x8)) > #define G2_COMP_CHR (G2_SWREG(224)) > diff --git a/drivers/staging/media/hantro/hantro_hw.h b/drivers/staging/media/hantro/hantro_hw.h > index c5374cd74d66..2edb890f10af 100644 > --- a/drivers/staging/media/hantro/hantro_hw.h > +++ b/drivers/staging/media/hantro/hantro_hw.h > @@ -241,6 +241,7 @@ int hantro_hevc_dec_init(struct hantro_ctx *ctx); > void hantro_hevc_dec_exit(struct hantro_ctx *ctx); > int hantro_g2_hevc_dec_run(struct hantro_ctx *ctx); > void hantro_g2_hevc_dec_done(struct hantro_ctx *ctx); > +int hantro_g2_hevc_dec_scaling(struct hantro_ctx *ctx, struct v4l2_frmsizeenum *fsize); > int hantro_hevc_dec_prepare_run(struct hantro_ctx *ctx); > dma_addr_t hantro_hevc_get_ref_buf(struct hantro_ctx *ctx, int poc); > void hantro_hevc_ref_remove_unused(struct hantro_ctx *ctx); > diff --git a/drivers/staging/media/hantro/hantro_v4l2.c b/drivers/staging/media/hantro/hantro_v4l2.c > index bcb0bdff4a9a..566b645f661d 100644 > --- a/drivers/staging/media/hantro/hantro_v4l2.c > +++ b/drivers/staging/media/hantro/hantro_v4l2.c > @@ -118,7 +118,7 @@ static int vidioc_enum_framesizes(struct file *file, void *priv, > struct hantro_ctx *ctx = fh_to_ctx(priv); > const struct hantro_fmt *fmt; > > - if (fsize->index != 0) { > + if (fsize->index != 0 && !ctx->dev->variant->scaling) { > vpu_debug(0, "invalid frame size index (expected 0, got %d)\n", > fsize->index); > return -EINVAL; > @@ -131,9 +131,13 @@ static int vidioc_enum_framesizes(struct file *file, void *priv, > return -EINVAL; > } > > - /* This only makes sense for coded formats */ > - if (fmt->codec_mode == HANTRO_MODE_NONE) > + /* For non-coded formats check if scaling is possible */ > + if (fmt->codec_mode == HANTRO_MODE_NONE) { > + if (ctx->dev->variant->scaling) > + return ctx->dev->variant->scaling(ctx, fsize); > + > return -EINVAL; > + } > > fsize->type = V4L2_FRMSIZE_TYPE_STEPWISE; > fsize->stepwise = fmt->frmsize; > diff --git a/drivers/staging/media/hantro/imx8m_vpu_hw.c b/drivers/staging/media/hantro/imx8m_vpu_hw.c > index 65bcf46740d7..d3b760569b52 100644 > --- a/drivers/staging/media/hantro/imx8m_vpu_hw.c > +++ b/drivers/staging/media/hantro/imx8m_vpu_hw.c > @@ -304,4 +304,5 @@ const struct hantro_variant imx8mq_vpu_g2_variant = { > .num_irqs = ARRAY_SIZE(imx8mq_g2_irqs), > .clk_names = imx8mq_clk_names, > .num_clocks = ARRAY_SIZE(imx8mq_clk_names), > + .scaling = hantro_g2_hevc_dec_scaling, > }; 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=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 52DBCC2B9F4 for ; Tue, 22 Jun 2021 21:46:05 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 0D17F6128E for ; Tue, 22 Jun 2021 21:46:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D17F6128E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LZ1iVdNyAXlidp39acgNuLcLv4c1cNBAddY44xUlrVY=; b=E3r0a7pCziuJ8e rc1DNDPw3WER9sl2YxyfiX7bZAoh5UVQ9Xn/J5g1LQL6tpxM4gmDVRu4fm1XDmjuFPXoGd/8NTa6K PoY9Ys8ybmcz8PejRDgX0nGinsAa9RM4MSN+TUJQ+V2wK6k6YsBWnykkrSIWoMBSMq3Xp2/1NE31x E5k0rKLUkkeAEHK0MWLnFbvFRjiBwZuiTchhAyaZweAvK+g8ovJsPZNo8c6GzLiuKqGLkLEpZpUb+ QFY1Zqsonr5p+T+suY9RvBotb1DuqKEo4L0eS6GoUJwjoZJr1zTyzW2BGevy4uaKxpeiTE0+Sbt4U kjv94nKMO/69rwi24VBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvoDX-008ZGf-Kh; Tue, 22 Jun 2021 21:45:59 +0000 Received: from mail-qv1-xf29.google.com ([2607:f8b0:4864:20::f29]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvoDU-008ZFM-N0 for linux-rockchip@lists.infradead.org; Tue, 22 Jun 2021 21:45:58 +0000 Received: by mail-qv1-xf29.google.com with SMTP id h10so376779qvz.2 for ; Tue, 22 Jun 2021 14:45:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=tjkvSgGRfmIbfrg2chlFeWIFPYZbCMnuiloAlQl45gOXmmhsO2Q0AMBFtqxGCu7VQX B/TzNcXPflnytYqKxL0vpy0u3Xo5HqsR3oAecuaV3pNoFWtwBx0fTTbkiSyXI5YVqRTX W2FwfHx+f1kUBeeX26j2RI0/ZdYs2o7ZvqJNr523zeV0O3DmmlrhFYWcW66mhIkHdFEU 7j+EQlaJKH4sNbT73OU3HcSwVX1kKOMhPuJy+tXX3wA5H/bcJyl9x9Y/Mi1Iul4h5RxM OI8BRJqqSXOL+QGcYFgffWzmXExCGcrxNvOJCz5TC9/zHFUEyAyDLmDx2JxODeUV3x/C nSjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=GyfbR18woJVH4Og5R/DJnUvllYi23BCEdAeJJmTe6pKogKg9nU8XyPHdzDtyXyRuOW MoPqXwxLyeD5nK8Jk43+zxlv99kdW0dmzG1f/majvRMSuHqYYdgNaox+KD5SVMzpxjn8 y2wz+nlJlqXDIU42ewrcTsv8Vn9reIX/XhTiHJweTy5XTTB8H+tu/klIFcfo2tU+UGqX 5Ajmr2Fp55FFjBYfYiGqovqhWw4zq9geuC2WPlGvTrGJR4UQhCmWbOuPw4yFKvlB0KyA bLQx9mHyHQUPMYKoSkSg4le5FkmbzwBg9iod0TmgPUzQWvjnCoZ2ZvuRu5Tuv+Rtr+iX YzAg== X-Gm-Message-State: AOAM530Em4ESdqsgp2Nz6ZhSBWDXHL1aJDwV9pFbfPjOkO2JdRn0cUtR ZTYb26Pxl8s42DAK2avL5xIMJw== X-Google-Smtp-Source: ABdhPJy/hfM1bVULI3oIX7/Nw7nufILBm50Nrc1Qhd1xgcdtpXlBz1HcSGkjslOgXQxPHRyPenZk1w== X-Received: by 2002:a0c:f181:: with SMTP id m1mr996619qvl.15.1624398353631; Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id m199sm14161214qke.71.2021.06.22.14.45.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Message-ID: <8f57b807062b5125b1129cab343c7f19e5068c62.camel@ndufresne.ca> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Nicolas Dufresne To: Benjamin Gaignard , hverkuil@xs4all.nl, ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Tue, 22 Jun 2021 17:45:51 -0400 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> User-Agent: Evolution 3.40.1 (3.40.1-1.fc34) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210622_144556_805070_2D237F40 X-CRM114-Status: GOOD ( 29.09 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org TGUgdmVuZHJlZGkgMTgganVpbiAyMDIxIMOgIDE1OjE1ICswMjAwLCBCZW5qYW1pbiBHYWlnbmFy ZCBhIMOpY3JpdMKgOgo+IFdoZW4gZW51bWVyYXRpbmcgdGhlIG91dHB1dCBmb3JtYXRzIHRha2Ug Y2FyZSBvZiB0aGUgaGFyZHdhcmUgc2NhbGluZwo+IGNhcGFiaWxpdGllcy4KPiBGb3IgYSBnaXZl biBpbnB1dCBzaXplIEcyIGhhcmR3YXJlIGJsb2NrIGlzIGNhcGFibGUgb2YgZG93biBzY2FsZSB0 aGUKPiBvdXRwdXQgYnkgMiwgNCBvciA4IGZhY3Rvci4gV2hlbiBkZWNvZGluZyA0SyBzdHJlYW1z IHRoYXQgdG8gYmUgY291bGQKPiBoZWxwZnVsIHRvIHNhdmUgbWVtb3J5IGJhbmR3aWR0aC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29s bGFib3JhLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8u aCAgICAgICAgIHwgIDQgKysKPiAgLi4uL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9o ZXZjX2RlYy5jIHwgNDYgKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmggfCAgNiArKysKPiAgZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9oYW50cm9faHcuaCAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192NGwyLmMgICAgfCAxMCArKy0tCj4gIGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgICB8ICAxICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCA2 MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hh bnRyby9oYW50cm8uaAo+IGluZGV4IDZhMjFkMWU5NWIzNC4uY2E5MDM4YjAzODRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPiArKysgYi9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4gQEAgLTcxLDYgKzcxLDkgQEAgc3Ry dWN0IGhhbnRyb19pcnEgewo+ICAgKiBAcmVnX25hbWVzOgkJCWFycmF5IG9mIHJlZ2lzdGVyIHJh bmdlIG5hbWVzCj4gICAqIEBudW1fcmVnczoJCQludW1iZXIgb2YgcmVnaXN0ZXIgcmFuZ2UgbmFt ZXMgaW4gdGhlIGFycmF5Cj4gICAqIEBwb3N0cHJvY19yZWdzOgkJJnN0cnVjdCBoYW50cm9fcG9z dHByb2NfcmVncyBwb2ludGVyCj4gKyAqIEBzY2FsaW5nOgkJCVNldCBwb3NzaWJsZSBzY2FsZWQg b3V0cHV0IGZvcm1hdHMuCj4gKyAqCQkJCVJldHVybnMgemVybyBpZiBPSywgYSBuZWdhdGl2ZSB2 YWx1ZSBpbiBlcnJvciBjYXNlcy4KPiArICoJCQkJT3B0aW9uYWwuCj4gICAqLwo+ICBzdHJ1Y3Qg aGFudHJvX3ZhcmlhbnQgewo+ICAJdW5zaWduZWQgaW50IGVuY19vZmZzZXQ7Cj4gQEAgLTkyLDYg Kzk1LDcgQEAgc3RydWN0IGhhbnRyb192YXJpYW50IHsKPiAgCWNvbnN0IGNoYXIgKiBjb25zdCAq cmVnX25hbWVzOwo+ICAJaW50IG51bV9yZWdzOwo+ICAJY29uc3Qgc3RydWN0IGhhbnRyb19wb3N0 cHJvY19yZWdzICpwb3N0cHJvY19yZWdzOwo+ICsJaW50ICgqc2NhbGluZykoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKTsKPiAgfTsKPiAgCj4g IC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19n Ml9oZXZjX2RlYy5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfaGV2 Y19kZWMuYwo+IGluZGV4IDQxZGM4OWVjOTI2Yy4uM2E4YWEyZmYxMDljIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMKPiArKysg Yi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4gQEAg LTM5Niw2ICszOTYsMTcgQEAgc3RhdGljIHZvaWQgc2V0X3JlZl9waWNfbGlzdChzdHJ1Y3QgaGFu dHJvX2N0eCAqY3R4KQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGRvd25fc2NhbGVfZmFj dG9yKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBoYW50cm9f aGV2Y19kZWNfY3RybHMgKmN0cmxzID0gJmN0eC0+aGV2Y19kZWMuY3RybHM7Cj4gKwljb25zdCBz dHJ1Y3QgdjRsMl9jdHJsX2hldmNfc3BzICpzcHMgPSBjdHJscy0+c3BzOwo+ICsKPiArCWlmIChz cHMtPnBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXMgPT0gY3R4LT5kc3RfZm10LndpZHRoKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChzcHMtPnBpY193aWR0 aF9pbl9sdW1hX3NhbXBsZXMsIGN0eC0+ZHN0X2ZtdC53aWR0aCk7Cj4gK30KPiArCj4gIHN0YXRp YyBpbnQgc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICB7Cj4gIAljb25zdCBzdHJ1 Y3QgaGFudHJvX2hldmNfZGVjX2N0cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+ IEBAIC00MDksNiArNDIwLDcgQEAgc3RhdGljIGludCBzZXRfcmVmKHN0cnVjdCBoYW50cm9fY3R4 ICpjdHgpCj4gIAlzaXplX3QgbXZfb2Zmc2V0ID0gaGFudHJvX2hldmNfbW90aW9uX3ZlY3RvcnNf b2Zmc2V0KHNwcyk7Cj4gIAlzaXplX3QgY29tcHJlc3NfbHVtYV9vZmZzZXQgPSBoYW50cm9faGV2 Y19sdW1hX2NvbXByZXNzX29mZnNldChzcHMpOwo+ICAJc2l6ZV90IGNvbXByZXNzX2Nocm9tYV9v ZmZzZXQgPSBoYW50cm9faGV2Y19jaHJvbWFfY29tcHJlc3Nfb2Zmc2V0KHNwcyk7Cj4gKwlpbnQg ZG93bl9zY2FsZSA9IGRvd25fc2NhbGVfZmFjdG9yKGN0eCk7Cj4gIAl1MzIgbWF4X3JlZl9mcmFt ZXM7Cj4gIAl1MTYgZHBiX2xvbmd0ZXJtX2U7Cj4gIAlzdGF0aWMgY29uc3Qgc3RydWN0IGhhbnRy b19yZWcgY3VyX3BvY1tdID0gewo+IEBAIC01MjEsOCArNTMzLDE4IEBAIHN0YXRpYyBpbnQgc2V0 X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBH Ml9SRUdfQ0hSX1JFRihpKSwgY2hyb21hX2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBHMl9SRUdfRE1WX1JFRihpKyspLCBtdl9hZGRyKTsKPiAgCj4gLQloYW50cm9fd3JpdGVfYWRk cih2cHUsIEcyX0FERFJfRFNULCBsdW1hX2FkZHIpOwo+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBHMl9BRERSX0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiArCWlmIChkb3duX3NjYWxlKSB7Cj4g KwkJY2hyb21hX2FkZHIgPSBsdW1hX2FkZHIgKyAoY3Jfb2Zmc2V0ID4+IGRvd25fc2NhbGUpOwo+ ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmZzJfZG93bl9zY2FsZV9lLCAxKTsKPiArCQloYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeSwgZG93bl9zY2FsZSA+PiAyKTsKPiAr CQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeCwgZG93bl9zY2FsZSA+PiAy KTsKPiArCQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RTX0RTVCwgbHVtYV9hZGRyKTsKPiAr CQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RTX0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiAr CX0gZWxzZSB7Cj4gKwkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9BRERSX0RTVCwgbHVtYV9h ZGRyKTsKPiArCQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21h X2FkZHIpOwo+ICsJfQo+ICsKPiAgCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfQUREUl9EU1Rf TVYsIG12X2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9DT01QX0FERFJfRFNU LCBjb21wcmVzc19sdW1hX2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9DT01Q X0NIUiwgY29tcHJlc3NfY2hyb21hX2FkZHIpOwo+IEBAIC02MDMsNiArNjI1LDI2IEBAIHN0YXRp YyB2b2lkIGhhbnRyb19nMl9jaGVja19pZGxlKHN0cnVjdCBoYW50cm9fZGV2ICp2cHUpCj4gIAl9 Cj4gIH0KPiAgCj4gK2ludCBoYW50cm9fZzJfaGV2Y19kZWNfc2NhbGluZyhzdHJ1Y3QgaGFudHJv X2N0eCAqY3R4LAo+ICsJCQkgICAgICAgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQo+ ICt7Cj4gKwkvKioKPiArCSAqIEcyIHNjYWxlciBjYW4gc2NhbGUgZG93biBieSAwLCAyLCA0IG9y IDgKPiArCSAqIHVzZSBmc2l6ZS0+aW5kZXggaGFzIHBvd2VyIG9mIDIgZGl2aXNlcgo+ICsJICoq Lwo+ICsJaWYgKGZzaXplLT5pbmRleCA+IDMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ aWYgKCFjdHgtPnNyY19mbXQud2lkdGggfHwgIWN0eC0+c3JjX2ZtdC5oZWlnaHQpCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZnNpemUtPnR5cGUgPSBWNEwyX0ZSTVNJWkVfVFlQRV9ESVND UkVURTsKPiArCWZzaXplLT5kaXNjcmV0ZS53aWR0aCA9IGN0eC0+c3JjX2ZtdC53aWR0aCA+PiBm c2l6ZS0+aW5kZXg7Cj4gKwlmc2l6ZS0+ZGlzY3JldGUuaGVpZ2h0ID0gY3R4LT5zcmNfZm10Lmhl aWdodCA+PiBmc2l6ZS0+aW5kZXg7CgpIYXZlIHlvdSBnaXZlbiBzb21lIHRob3VnaHQgYXJvdW5k IGNvZGVkIHZzIGRpc3BsYXkgc2l6ZSA/IEluIHRoaXMgY29udGV4dCwgd2UKcmV0dXJuIGFuIGVu dW1lcmF0ZWQgb2YgY29kZWQgc2NhbGVkIHNpemUuIFRoZSBWSURJT0NfRU5VTV9GUkFNRVNJWkVT CmRvY3VtZW50YXRpb24gWzBdIGRvZXMgbm90IHNheSBhbnl0aGluZyB1c2VmdWwgYWJvdXQgdGhl c2UgdHdvLiBTbyB0aGlzCmFtYmlndWl0eSBhbHNvIGV4aXN0IGZvciBleGlzdGluZyBNMk0gc2Nh bGVyIG1haW5saW5lLgoKU2hhbGwgd2UgZW51bWVyYXRlIHRoZSBmcmFtZSBzaXplcyBpbiB0ZXJt IG9mIGNvZGVkIG9yIGRpc3BsYXkgc2l6ZSA/IE9mIGNvdXJzZQp0aGUgc2NhbGluZyAgZmFjdG9y IHJlbWFpbnMgdGhlIHNhbWUsIGJ1dCB0aGUgYXBwbGljYXRpb24gd2lsbCBsaWtlbHkgbmVlZCB0 bwpjb252ZXJ0LiBXaGljaCBsZWFkcyBtZSB0byB0aGluayB0aGlzIHBhdGNoIHNob3VsZCBjb21l IHdpdGggYWRkaXRpb25hbApkb2N1bWVudGF0aW9uLgoKWzBdIGh0dHBzOi8vd3d3Lmtlcm5lbC5v cmcvZG9jL2h0bWwvdjQuMTEvbWVkaWEvdWFwaS92NGwvdmlkaW9jLWVudW0tZnJhbWVzaXplcy5o dG1sCgpwLnMuIG15IGZlZWxpbmcgaXMgdGhhdCBlbnVtZXJhdGluZyBjb2RlZCBzaXplIGlzIHdo YXQgbWFrZXMgbW9zdCBzZW5zZSwgYnV0IHRoZQpQUCBjb3VsZCBhbHNvIGhhdmUgc29tZSBjcm9w cGluZyBjYXBhYmlsaXR5LCBpbiB3aGljaCBjYXNlIGl0IG1heSB3YW50IHRvIGxvY2sKdGhlIHNy Y19mbXQgd2lkdGgvaGVpZ2h0IHRvIHRoZSBkaXNwbGF5IHNpemUgaW5zdGVhZCBvZiBwYWRkaW5n IGl0LiBOb3Qga25vd2luZwp3aGF0IHRoZSBkcml2ZXIgd2lsbCBkbyBzZWVtcyBwcm9ibGVtYXRp YyBmb3IgYXBwbGljYXRpb25zLgoKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgaW50IGhh bnRyb19nMl9oZXZjX2RlY19ydW4oc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiAgewo+ICAJc3Ry dWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmggYi9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmgKPiBpbmRleCA5NDFlNTQ4MmQyN2IuLjU0ZjNkNzhj ZTQ2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19n Ml9yZWdzLmgKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9y ZWdzLmgKPiBAQCAtMTc0LDYgKzE3NCwxMCBAQAo+ICAjZGVmaW5lIGcyX2J1c3dpZHRoCQlHMl9E RUNfUkVHKDU4LCA4LCAgMHg3KQo+ICAjZGVmaW5lIGcyX21heF9idXJzdAkJRzJfREVDX1JFRyg1 OCwgMCwgIDB4ZmYpCj4gIAo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfZQlHMl9ERUNfUkVHKDE4 NCwgNywgMHgxKQo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfeQlHMl9ERUNfUkVHKDE4NCwgMiwg MHgzKQo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfeAlHMl9ERUNfUkVHKDE4NCwgMCwgMHgzKQo+ ICsKPiAgI2RlZmluZSBHMl9SRUdfQ09ORklHCQkJCUcyX1NXUkVHKDU4KQo+ICAjZGVmaW5lIEcy X1JFR19DT05GSUdfREVDX0NMS19HQVRFX0UJCUJJVCgxNikKPiAgI2RlZmluZSBHMl9SRUdfQ09O RklHX0RFQ19DTEtfR0FURV9JRExFX0UJQklUKDE3KQo+IEBAIC0xOTMsNiArMTk3LDggQEAKPiAg I2RlZmluZSBHMl9USUxFX0ZJTFRFUgkJKEcyX1NXUkVHKDE3OSkpCj4gICNkZWZpbmUgRzJfVElM RV9TQU8JCShHMl9TV1JFRygxODEpKQo+ICAjZGVmaW5lIEcyX1RJTEVfQlNECQkoRzJfU1dSRUco MTgzKSkKPiArI2RlZmluZSBHMl9EU19EU1QJCShHMl9TV1JFRygxODYpKQo+ICsjZGVmaW5lIEcy X0RTX0RTVF9DSFIJCShHMl9TV1JFRygxODgpKQo+ICAjZGVmaW5lIEcyX0NPTVBfQUREUl9EU1QJ KEcyX1NXUkVHKDE5MCkpCj4gICNkZWZpbmUgRzJfQ09NUF9BRERSX1JFRihpKQkoRzJfU1dSRUco MTkyKSArICgoaSkgKiAweDgpKQo+ICAjZGVmaW5lIEcyX0NPTVBfQ0hSCQkoRzJfU1dSRUcoMjI0 KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3LmgKPiBpbmRleCBjNTM3 NGNkNzRkNjYuLjJlZGI4OTBmMTBhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19ody5oCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm9faHcuaAo+IEBAIC0yNDEsNiArMjQxLDcgQEAgaW50IGhhbnRyb19oZXZjX2RlY19p bml0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+ICB2b2lkIGhhbnRyb19oZXZjX2RlY19leGl0 KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+ICBpbnQgaGFudHJvX2cyX2hldmNfZGVjX3J1bihz dHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPiAgdm9pZCBoYW50cm9fZzJfaGV2Y19kZWNfZG9uZShz dHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPiAraW50IGhhbnRyb19nMl9oZXZjX2RlY19zY2FsaW5n KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIHN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSk7 Cj4gIGludCBoYW50cm9faGV2Y19kZWNfcHJlcGFyZV9ydW4oc3RydWN0IGhhbnRyb19jdHggKmN0 eCk7Cj4gIGRtYV9hZGRyX3QgaGFudHJvX2hldmNfZ2V0X3JlZl9idWYoc3RydWN0IGhhbnRyb19j dHggKmN0eCwgaW50IHBvYyk7Cj4gIHZvaWQgaGFudHJvX2hldmNfcmVmX3JlbW92ZV91bnVzZWQo c3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8v aGFudHJvX3Y0bDIuYwo+IGluZGV4IGJjYjBiZGZmNGE5YS4uNTY2YjY0NWY2NjFkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYwo+ICsrKyBi L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYwo+IEBAIC0xMTgsNyAr MTE4LDcgQEAgc3RhdGljIGludCB2aWRpb2NfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LAo+ICAJc3RydWN0IGhhbnRyb19jdHggKmN0eCA9IGZoX3RvX2N0eChw cml2KTsKPiAgCWNvbnN0IHN0cnVjdCBoYW50cm9fZm10ICpmbXQ7Cj4gIAo+IC0JaWYgKGZzaXpl LT5pbmRleCAhPSAwKSB7Cj4gKwlpZiAoZnNpemUtPmluZGV4ICE9IDAgJiYgIWN0eC0+ZGV2LT52 YXJpYW50LT5zY2FsaW5nKSB7Cj4gIAkJdnB1X2RlYnVnKDAsICJpbnZhbGlkIGZyYW1lIHNpemUg aW5kZXggKGV4cGVjdGVkIDAsIGdvdCAlZClcbiIsCj4gIAkJCSAgZnNpemUtPmluZGV4KTsKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTMxLDkgKzEzMSwxMyBAQCBzdGF0aWMgaW50IHZpZGlv Y19lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JLyogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGZvciBj b2RlZCBmb3JtYXRzICovCj4gLQlpZiAoZm10LT5jb2RlY19tb2RlID09IEhBTlRST19NT0RFX05P TkUpCj4gKwkvKiBGb3Igbm9uLWNvZGVkIGZvcm1hdHMgY2hlY2sgaWYgc2NhbGluZyBpcyBwb3Nz aWJsZSAqLwo+ICsJaWYgKGZtdC0+Y29kZWNfbW9kZSA9PSBIQU5UUk9fTU9ERV9OT05FKSB7Cj4g KwkJaWYgKGN0eC0+ZGV2LT52YXJpYW50LT5zY2FsaW5nKQo+ICsJCQlyZXR1cm4gY3R4LT5kZXYt PnZhcmlhbnQtPnNjYWxpbmcoY3R4LCBmc2l6ZSk7Cj4gKwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICsJfQo+ICAKPiAgCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfU1RFUFdJU0U7Cj4g IAlmc2l6ZS0+c3RlcHdpc2UgPSBmbXQtPmZybXNpemU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2lteDhtX3ZwdV9ody5jCj4gaW5kZXggNjViY2Y0Njc0MGQ3Li5kM2I3NjA1Njli NTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVf aHcuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMK PiBAQCAtMzA0LDQgKzMwNCw1IEBAIGNvbnN0IHN0cnVjdCBoYW50cm9fdmFyaWFudCBpbXg4bXFf dnB1X2cyX3ZhcmlhbnQgPSB7Cj4gIAkubnVtX2lycXMgPSBBUlJBWV9TSVpFKGlteDhtcV9nMl9p cnFzKSwKPiAgCS5jbGtfbmFtZXMgPSBpbXg4bXFfY2xrX25hbWVzLAo+ICAJLm51bV9jbG9ja3Mg PSBBUlJBWV9TSVpFKGlteDhtcV9jbGtfbmFtZXMpLAo+ICsJLnNjYWxpbmcgPSBoYW50cm9fZzJf aGV2Y19kZWNfc2NhbGluZywKPiAgfTsKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tj aGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo= 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=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 C9C6BC2B9F4 for ; Tue, 22 Jun 2021 21:47:47 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 827FB61002 for ; Tue, 22 Jun 2021 21:47:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 827FB61002 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca 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=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LUb/F/FZV4ChUtLzushKh+JSBuUgl+LIVp2w3VLKt5o=; b=yvDVYFD0ptlkAP QM1XXKiSA+AKoIeFCmOizUyjOyEzuCBMMjce4SzCj4PfpwXEB7EmMm6ZGx4ZmblksJkgai7VtaBEz IV8azWWu6EjfltRHMFH6/Jf6AGc0RaU9B477TTV710UOj2uU32MNbMSaX3ZgY/RxYvnJcLYOKwZLB LQZ7RjSYRVRtf3MhZztHmO6lAiAgVa3ZkVbglFlWF58KuqiY/eOhGAezqDTEea4+vBxVvXR6bvvS+ tIkNsqqOGzRqLDLsR/ns00acx7afsAdFlWQv6pUI/I6Un6i5OsdyELE8Ix82xStujmV7wnu4xkPiU hl2R+VA5hot51fuvjFFg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvoDa-008ZGx-A0; Tue, 22 Jun 2021 21:46:02 +0000 Received: from mail-qv1-xf34.google.com ([2607:f8b0:4864:20::f34]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lvoDU-008ZFL-NR for linux-arm-kernel@lists.infradead.org; Tue, 22 Jun 2021 21:45:59 +0000 Received: by mail-qv1-xf34.google.com with SMTP id im10so373378qvb.3 for ; Tue, 22 Jun 2021 14:45:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=tjkvSgGRfmIbfrg2chlFeWIFPYZbCMnuiloAlQl45gOXmmhsO2Q0AMBFtqxGCu7VQX B/TzNcXPflnytYqKxL0vpy0u3Xo5HqsR3oAecuaV3pNoFWtwBx0fTTbkiSyXI5YVqRTX W2FwfHx+f1kUBeeX26j2RI0/ZdYs2o7ZvqJNr523zeV0O3DmmlrhFYWcW66mhIkHdFEU 7j+EQlaJKH4sNbT73OU3HcSwVX1kKOMhPuJy+tXX3wA5H/bcJyl9x9Y/Mi1Iul4h5RxM OI8BRJqqSXOL+QGcYFgffWzmXExCGcrxNvOJCz5TC9/zHFUEyAyDLmDx2JxODeUV3x/C nSjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=oPVDUtPyjXmvgE+Kh6Hphe5UsrziziCjcLMH+vYS1pQ=; b=W2SdJrxMN6hAiQqL2J/9sv6lVD7xI0RjfUlDaHtQuFzXwR2Q9OG4lgngJ5cxOw8V73 PxvKJg3uf8MCbMV0arhGB17y0ovD2vOEG1jd+H8ixKxqK3BrAZQKbWzdnyNvVMo9p7h7 FJiM+Ee/Oxc+CksiAAQZCs9rtsPB8mmcig1oVznJbcpjVA9MWXU36DfUvflECS3TIYbG AzRwxrd3p6v/eo+wfNGoV97B3+wukzAECMeWK5i+EgBvZH2XBguAMd762/9j9ctmSkJQ cXksSPkzOgTZVM5HIpRTXg3w1q9oI/aiIQ2b62a3H5E15W45ekfX0/DYQm25318OKB99 1yFA== X-Gm-Message-State: AOAM530zNjsujdFrtgtciL0R7G8yovv02qXCSPfRkyaQ1jDnTbLvgA5x TgDdgHG+z/CbmiTL9S17hR2+TQ== X-Google-Smtp-Source: ABdhPJy/hfM1bVULI3oIX7/Nw7nufILBm50Nrc1Qhd1xgcdtpXlBz1HcSGkjslOgXQxPHRyPenZk1w== X-Received: by 2002:a0c:f181:: with SMTP id m1mr996619qvl.15.1624398353631; Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id m199sm14161214qke.71.2021.06.22.14.45.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Jun 2021 14:45:53 -0700 (PDT) Message-ID: <8f57b807062b5125b1129cab343c7f19e5068c62.camel@ndufresne.ca> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Nicolas Dufresne To: Benjamin Gaignard , hverkuil@xs4all.nl, ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Tue, 22 Jun 2021 17:45:51 -0400 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> User-Agent: Evolution 3.40.1 (3.40.1-1.fc34) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210622_144556_809796_BFEA6558 X-CRM114-Status: GOOD ( 30.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgdmVuZHJlZGkgMTgganVpbiAyMDIxIMOgIDE1OjE1ICswMjAwLCBCZW5qYW1pbiBHYWlnbmFy ZCBhIMOpY3JpdMKgOgo+IFdoZW4gZW51bWVyYXRpbmcgdGhlIG91dHB1dCBmb3JtYXRzIHRha2Ug Y2FyZSBvZiB0aGUgaGFyZHdhcmUgc2NhbGluZwo+IGNhcGFiaWxpdGllcy4KPiBGb3IgYSBnaXZl biBpbnB1dCBzaXplIEcyIGhhcmR3YXJlIGJsb2NrIGlzIGNhcGFibGUgb2YgZG93biBzY2FsZSB0 aGUKPiBvdXRwdXQgYnkgMiwgNCBvciA4IGZhY3Rvci4gV2hlbiBkZWNvZGluZyA0SyBzdHJlYW1z IHRoYXQgdG8gYmUgY291bGQKPiBoZWxwZnVsIHRvIHNhdmUgbWVtb3J5IGJhbmR3aWR0aC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29s bGFib3JhLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm8u aCAgICAgICAgIHwgIDQgKysKPiAgLi4uL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9o ZXZjX2RlYy5jIHwgNDYgKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmggfCAgNiArKysKPiAgZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9oYW50cm9faHcuaCAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb192NGwyLmMgICAgfCAxMCArKy0tCj4gIGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgICB8ICAxICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCA2 MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hh bnRyby9oYW50cm8uaAo+IGluZGV4IDZhMjFkMWU5NWIzNC4uY2E5MDM4YjAzODRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPiArKysgYi9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4gQEAgLTcxLDYgKzcxLDkgQEAgc3Ry dWN0IGhhbnRyb19pcnEgewo+ICAgKiBAcmVnX25hbWVzOgkJCWFycmF5IG9mIHJlZ2lzdGVyIHJh bmdlIG5hbWVzCj4gICAqIEBudW1fcmVnczoJCQludW1iZXIgb2YgcmVnaXN0ZXIgcmFuZ2UgbmFt ZXMgaW4gdGhlIGFycmF5Cj4gICAqIEBwb3N0cHJvY19yZWdzOgkJJnN0cnVjdCBoYW50cm9fcG9z dHByb2NfcmVncyBwb2ludGVyCj4gKyAqIEBzY2FsaW5nOgkJCVNldCBwb3NzaWJsZSBzY2FsZWQg b3V0cHV0IGZvcm1hdHMuCj4gKyAqCQkJCVJldHVybnMgemVybyBpZiBPSywgYSBuZWdhdGl2ZSB2 YWx1ZSBpbiBlcnJvciBjYXNlcy4KPiArICoJCQkJT3B0aW9uYWwuCj4gICAqLwo+ICBzdHJ1Y3Qg aGFudHJvX3ZhcmlhbnQgewo+ICAJdW5zaWduZWQgaW50IGVuY19vZmZzZXQ7Cj4gQEAgLTkyLDYg Kzk1LDcgQEAgc3RydWN0IGhhbnRyb192YXJpYW50IHsKPiAgCWNvbnN0IGNoYXIgKiBjb25zdCAq cmVnX25hbWVzOwo+ICAJaW50IG51bV9yZWdzOwo+ICAJY29uc3Qgc3RydWN0IGhhbnRyb19wb3N0 cHJvY19yZWdzICpwb3N0cHJvY19yZWdzOwo+ICsJaW50ICgqc2NhbGluZykoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKTsKPiAgfTsKPiAgCj4g IC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19n Ml9oZXZjX2RlYy5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfaGV2 Y19kZWMuYwo+IGluZGV4IDQxZGM4OWVjOTI2Yy4uM2E4YWEyZmYxMDljIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMKPiArKysg Yi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4gQEAg LTM5Niw2ICszOTYsMTcgQEAgc3RhdGljIHZvaWQgc2V0X3JlZl9waWNfbGlzdChzdHJ1Y3QgaGFu dHJvX2N0eCAqY3R4KQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGRvd25fc2NhbGVfZmFj dG9yKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBoYW50cm9f aGV2Y19kZWNfY3RybHMgKmN0cmxzID0gJmN0eC0+aGV2Y19kZWMuY3RybHM7Cj4gKwljb25zdCBz dHJ1Y3QgdjRsMl9jdHJsX2hldmNfc3BzICpzcHMgPSBjdHJscy0+c3BzOwo+ICsKPiArCWlmIChz cHMtPnBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXMgPT0gY3R4LT5kc3RfZm10LndpZHRoKQo+ICsJ CXJldHVybiAwOwo+ICsKPiArCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChzcHMtPnBpY193aWR0 aF9pbl9sdW1hX3NhbXBsZXMsIGN0eC0+ZHN0X2ZtdC53aWR0aCk7Cj4gK30KPiArCj4gIHN0YXRp YyBpbnQgc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICB7Cj4gIAljb25zdCBzdHJ1 Y3QgaGFudHJvX2hldmNfZGVjX2N0cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+ IEBAIC00MDksNiArNDIwLDcgQEAgc3RhdGljIGludCBzZXRfcmVmKHN0cnVjdCBoYW50cm9fY3R4 ICpjdHgpCj4gIAlzaXplX3QgbXZfb2Zmc2V0ID0gaGFudHJvX2hldmNfbW90aW9uX3ZlY3RvcnNf b2Zmc2V0KHNwcyk7Cj4gIAlzaXplX3QgY29tcHJlc3NfbHVtYV9vZmZzZXQgPSBoYW50cm9faGV2 Y19sdW1hX2NvbXByZXNzX29mZnNldChzcHMpOwo+ICAJc2l6ZV90IGNvbXByZXNzX2Nocm9tYV9v ZmZzZXQgPSBoYW50cm9faGV2Y19jaHJvbWFfY29tcHJlc3Nfb2Zmc2V0KHNwcyk7Cj4gKwlpbnQg ZG93bl9zY2FsZSA9IGRvd25fc2NhbGVfZmFjdG9yKGN0eCk7Cj4gIAl1MzIgbWF4X3JlZl9mcmFt ZXM7Cj4gIAl1MTYgZHBiX2xvbmd0ZXJtX2U7Cj4gIAlzdGF0aWMgY29uc3Qgc3RydWN0IGhhbnRy b19yZWcgY3VyX3BvY1tdID0gewo+IEBAIC01MjEsOCArNTMzLDE4IEBAIHN0YXRpYyBpbnQgc2V0 X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBH Ml9SRUdfQ0hSX1JFRihpKSwgY2hyb21hX2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBHMl9SRUdfRE1WX1JFRihpKyspLCBtdl9hZGRyKTsKPiAgCj4gLQloYW50cm9fd3JpdGVfYWRk cih2cHUsIEcyX0FERFJfRFNULCBsdW1hX2FkZHIpOwo+IC0JaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBHMl9BRERSX0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiArCWlmIChkb3duX3NjYWxlKSB7Cj4g KwkJY2hyb21hX2FkZHIgPSBsdW1hX2FkZHIgKyAoY3Jfb2Zmc2V0ID4+IGRvd25fc2NhbGUpOwo+ ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmZzJfZG93bl9zY2FsZV9lLCAxKTsKPiArCQloYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeSwgZG93bl9zY2FsZSA+PiAyKTsKPiAr CQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeCwgZG93bl9zY2FsZSA+PiAy KTsKPiArCQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RTX0RTVCwgbHVtYV9hZGRyKTsKPiAr CQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RTX0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiAr CX0gZWxzZSB7Cj4gKwkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9BRERSX0RTVCwgbHVtYV9h ZGRyKTsKPiArCQloYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21h X2FkZHIpOwo+ICsJfQo+ICsKPiAgCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfQUREUl9EU1Rf TVYsIG12X2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9DT01QX0FERFJfRFNU LCBjb21wcmVzc19sdW1hX2FkZHIpOwo+ICAJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9DT01Q X0NIUiwgY29tcHJlc3NfY2hyb21hX2FkZHIpOwo+IEBAIC02MDMsNiArNjI1LDI2IEBAIHN0YXRp YyB2b2lkIGhhbnRyb19nMl9jaGVja19pZGxlKHN0cnVjdCBoYW50cm9fZGV2ICp2cHUpCj4gIAl9 Cj4gIH0KPiAgCj4gK2ludCBoYW50cm9fZzJfaGV2Y19kZWNfc2NhbGluZyhzdHJ1Y3QgaGFudHJv X2N0eCAqY3R4LAo+ICsJCQkgICAgICAgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQo+ ICt7Cj4gKwkvKioKPiArCSAqIEcyIHNjYWxlciBjYW4gc2NhbGUgZG93biBieSAwLCAyLCA0IG9y IDgKPiArCSAqIHVzZSBmc2l6ZS0+aW5kZXggaGFzIHBvd2VyIG9mIDIgZGl2aXNlcgo+ICsJICoq Lwo+ICsJaWYgKGZzaXplLT5pbmRleCA+IDMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ aWYgKCFjdHgtPnNyY19mbXQud2lkdGggfHwgIWN0eC0+c3JjX2ZtdC5oZWlnaHQpCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZnNpemUtPnR5cGUgPSBWNEwyX0ZSTVNJWkVfVFlQRV9ESVND UkVURTsKPiArCWZzaXplLT5kaXNjcmV0ZS53aWR0aCA9IGN0eC0+c3JjX2ZtdC53aWR0aCA+PiBm c2l6ZS0+aW5kZXg7Cj4gKwlmc2l6ZS0+ZGlzY3JldGUuaGVpZ2h0ID0gY3R4LT5zcmNfZm10Lmhl aWdodCA+PiBmc2l6ZS0+aW5kZXg7CgpIYXZlIHlvdSBnaXZlbiBzb21lIHRob3VnaHQgYXJvdW5k IGNvZGVkIHZzIGRpc3BsYXkgc2l6ZSA/IEluIHRoaXMgY29udGV4dCwgd2UKcmV0dXJuIGFuIGVu dW1lcmF0ZWQgb2YgY29kZWQgc2NhbGVkIHNpemUuIFRoZSBWSURJT0NfRU5VTV9GUkFNRVNJWkVT CmRvY3VtZW50YXRpb24gWzBdIGRvZXMgbm90IHNheSBhbnl0aGluZyB1c2VmdWwgYWJvdXQgdGhl c2UgdHdvLiBTbyB0aGlzCmFtYmlndWl0eSBhbHNvIGV4aXN0IGZvciBleGlzdGluZyBNMk0gc2Nh bGVyIG1haW5saW5lLgoKU2hhbGwgd2UgZW51bWVyYXRlIHRoZSBmcmFtZSBzaXplcyBpbiB0ZXJt IG9mIGNvZGVkIG9yIGRpc3BsYXkgc2l6ZSA/IE9mIGNvdXJzZQp0aGUgc2NhbGluZyAgZmFjdG9y IHJlbWFpbnMgdGhlIHNhbWUsIGJ1dCB0aGUgYXBwbGljYXRpb24gd2lsbCBsaWtlbHkgbmVlZCB0 bwpjb252ZXJ0LiBXaGljaCBsZWFkcyBtZSB0byB0aGluayB0aGlzIHBhdGNoIHNob3VsZCBjb21l IHdpdGggYWRkaXRpb25hbApkb2N1bWVudGF0aW9uLgoKWzBdIGh0dHBzOi8vd3d3Lmtlcm5lbC5v cmcvZG9jL2h0bWwvdjQuMTEvbWVkaWEvdWFwaS92NGwvdmlkaW9jLWVudW0tZnJhbWVzaXplcy5o dG1sCgpwLnMuIG15IGZlZWxpbmcgaXMgdGhhdCBlbnVtZXJhdGluZyBjb2RlZCBzaXplIGlzIHdo YXQgbWFrZXMgbW9zdCBzZW5zZSwgYnV0IHRoZQpQUCBjb3VsZCBhbHNvIGhhdmUgc29tZSBjcm9w cGluZyBjYXBhYmlsaXR5LCBpbiB3aGljaCBjYXNlIGl0IG1heSB3YW50IHRvIGxvY2sKdGhlIHNy Y19mbXQgd2lkdGgvaGVpZ2h0IHRvIHRoZSBkaXNwbGF5IHNpemUgaW5zdGVhZCBvZiBwYWRkaW5n IGl0LiBOb3Qga25vd2luZwp3aGF0IHRoZSBkcml2ZXIgd2lsbCBkbyBzZWVtcyBwcm9ibGVtYXRp YyBmb3IgYXBwbGljYXRpb25zLgoKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgaW50IGhh bnRyb19nMl9oZXZjX2RlY19ydW4oc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiAgewo+ICAJc3Ry dWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmggYi9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19nMl9yZWdzLmgKPiBpbmRleCA5NDFlNTQ4MmQyN2IuLjU0ZjNkNzhj ZTQ2ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19n Ml9yZWdzLmgKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9y ZWdzLmgKPiBAQCAtMTc0LDYgKzE3NCwxMCBAQAo+ICAjZGVmaW5lIGcyX2J1c3dpZHRoCQlHMl9E RUNfUkVHKDU4LCA4LCAgMHg3KQo+ICAjZGVmaW5lIGcyX21heF9idXJzdAkJRzJfREVDX1JFRyg1 OCwgMCwgIDB4ZmYpCj4gIAo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfZQlHMl9ERUNfUkVHKDE4 NCwgNywgMHgxKQo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfeQlHMl9ERUNfUkVHKDE4NCwgMiwg MHgzKQo+ICsjZGVmaW5lIGcyX2Rvd25fc2NhbGVfeAlHMl9ERUNfUkVHKDE4NCwgMCwgMHgzKQo+ ICsKPiAgI2RlZmluZSBHMl9SRUdfQ09ORklHCQkJCUcyX1NXUkVHKDU4KQo+ICAjZGVmaW5lIEcy X1JFR19DT05GSUdfREVDX0NMS19HQVRFX0UJCUJJVCgxNikKPiAgI2RlZmluZSBHMl9SRUdfQ09O RklHX0RFQ19DTEtfR0FURV9JRExFX0UJQklUKDE3KQo+IEBAIC0xOTMsNiArMTk3LDggQEAKPiAg I2RlZmluZSBHMl9USUxFX0ZJTFRFUgkJKEcyX1NXUkVHKDE3OSkpCj4gICNkZWZpbmUgRzJfVElM RV9TQU8JCShHMl9TV1JFRygxODEpKQo+ICAjZGVmaW5lIEcyX1RJTEVfQlNECQkoRzJfU1dSRUco MTgzKSkKPiArI2RlZmluZSBHMl9EU19EU1QJCShHMl9TV1JFRygxODYpKQo+ICsjZGVmaW5lIEcy X0RTX0RTVF9DSFIJCShHMl9TV1JFRygxODgpKQo+ICAjZGVmaW5lIEcyX0NPTVBfQUREUl9EU1QJ KEcyX1NXUkVHKDE5MCkpCj4gICNkZWZpbmUgRzJfQ09NUF9BRERSX1JFRihpKQkoRzJfU1dSRUco MTkyKSArICgoaSkgKiAweDgpKQo+ICAjZGVmaW5lIEcyX0NPTVBfQ0hSCQkoRzJfU1dSRUcoMjI0 KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faHcu aCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3LmgKPiBpbmRleCBjNTM3 NGNkNzRkNjYuLjJlZGI4OTBmMTBhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19ody5oCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm9faHcuaAo+IEBAIC0yNDEsNiArMjQxLDcgQEAgaW50IGhhbnRyb19oZXZjX2RlY19p bml0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+ICB2b2lkIGhhbnRyb19oZXZjX2RlY19leGl0 KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpOwo+ICBpbnQgaGFudHJvX2cyX2hldmNfZGVjX3J1bihz dHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPiAgdm9pZCBoYW50cm9fZzJfaGV2Y19kZWNfZG9uZShz dHJ1Y3QgaGFudHJvX2N0eCAqY3R4KTsKPiAraW50IGhhbnRyb19nMl9oZXZjX2RlY19zY2FsaW5n KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIHN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSk7 Cj4gIGludCBoYW50cm9faGV2Y19kZWNfcHJlcGFyZV9ydW4oc3RydWN0IGhhbnRyb19jdHggKmN0 eCk7Cj4gIGRtYV9hZGRyX3QgaGFudHJvX2hldmNfZ2V0X3JlZl9idWYoc3RydWN0IGhhbnRyb19j dHggKmN0eCwgaW50IHBvYyk7Cj4gIHZvaWQgaGFudHJvX2hldmNfcmVmX3JlbW92ZV91bnVzZWQo c3RydWN0IGhhbnRyb19jdHggKmN0eCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8v aGFudHJvX3Y0bDIuYwo+IGluZGV4IGJjYjBiZGZmNGE5YS4uNTY2YjY0NWY2NjFkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYwo+ICsrKyBi L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuYwo+IEBAIC0xMTgsNyAr MTE4LDcgQEAgc3RhdGljIGludCB2aWRpb2NfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LAo+ICAJc3RydWN0IGhhbnRyb19jdHggKmN0eCA9IGZoX3RvX2N0eChw cml2KTsKPiAgCWNvbnN0IHN0cnVjdCBoYW50cm9fZm10ICpmbXQ7Cj4gIAo+IC0JaWYgKGZzaXpl LT5pbmRleCAhPSAwKSB7Cj4gKwlpZiAoZnNpemUtPmluZGV4ICE9IDAgJiYgIWN0eC0+ZGV2LT52 YXJpYW50LT5zY2FsaW5nKSB7Cj4gIAkJdnB1X2RlYnVnKDAsICJpbnZhbGlkIGZyYW1lIHNpemUg aW5kZXggKGV4cGVjdGVkIDAsIGdvdCAlZClcbiIsCj4gIAkJCSAgZnNpemUtPmluZGV4KTsKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTMxLDkgKzEzMSwxMyBAQCBzdGF0aWMgaW50IHZpZGlv Y19lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JLyogVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGZvciBj b2RlZCBmb3JtYXRzICovCj4gLQlpZiAoZm10LT5jb2RlY19tb2RlID09IEhBTlRST19NT0RFX05P TkUpCj4gKwkvKiBGb3Igbm9uLWNvZGVkIGZvcm1hdHMgY2hlY2sgaWYgc2NhbGluZyBpcyBwb3Nz aWJsZSAqLwo+ICsJaWYgKGZtdC0+Y29kZWNfbW9kZSA9PSBIQU5UUk9fTU9ERV9OT05FKSB7Cj4g KwkJaWYgKGN0eC0+ZGV2LT52YXJpYW50LT5zY2FsaW5nKQo+ICsJCQlyZXR1cm4gY3R4LT5kZXYt PnZhcmlhbnQtPnNjYWxpbmcoY3R4LCBmc2l6ZSk7Cj4gKwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICsJfQo+ICAKPiAgCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfU1RFUFdJU0U7Cj4g IAlmc2l6ZS0+c3RlcHdpc2UgPSBmbXQtPmZybXNpemU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2lteDhtX3ZwdV9ody5jCj4gaW5kZXggNjViY2Y0Njc0MGQ3Li5kM2I3NjA1Njli NTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVf aHcuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMK PiBAQCAtMzA0LDQgKzMwNCw1IEBAIGNvbnN0IHN0cnVjdCBoYW50cm9fdmFyaWFudCBpbXg4bXFf dnB1X2cyX3ZhcmlhbnQgPSB7Cj4gIAkubnVtX2lycXMgPSBBUlJBWV9TSVpFKGlteDhtcV9nMl9p cnFzKSwKPiAgCS5jbGtfbmFtZXMgPSBpbXg4bXFfY2xrX25hbWVzLAo+ICAJLm51bV9jbG9ja3Mg PSBBUlJBWV9TSVpFKGlteDhtcV9jbGtfbmFtZXMpLAo+ICsJLnNjYWxpbmcgPSBoYW50cm9fZzJf aGV2Y19kZWNfc2NhbGluZywKPiAgfTsKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=