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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_SANE_1 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 75113C433ED for ; Tue, 20 Apr 2021 09:10:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 40493611F2 for ; Tue, 20 Apr 2021 09:10:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231295AbhDTJKq (ORCPT ); Tue, 20 Apr 2021 05:10:46 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:42278 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231322AbhDTJKn (ORCPT ); Tue, 20 Apr 2021 05:10:43 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: benjamin.gaignard) with ESMTPSA id 34F941F4270E Subject: Re: [PATCH v9 03/13] media: hantro: Use syscon instead of 'ctrl' register To: Lucas Stach , ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, lee.jones@linaro.org, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, hverkuil-cisco@xs4all.nl, emil.l.velikov@gmail.com, "Peng Fan (OSS)" , Jacky Bai Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-imx@nxp.com, kernel@pengutronix.de, kernel@collabora.com, cphealy@gmail.com, linux-arm-kernel@lists.infradead.org References: <20210407073534.376722-1-benjamin.gaignard@collabora.com> <20210407073534.376722-4-benjamin.gaignard@collabora.com> <7bcbb787d82f21d42563d8fb7e3c2e7d40123932.camel@pengutronix.de> <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> From: Benjamin Gaignard Message-ID: <36008691-d075-203d-0cac-2a012773ea34@collabora.com> Date: Tue, 20 Apr 2021 11:10:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 16/04/2021 à 17:14, Lucas Stach a écrit : > Am Freitag, dem 16.04.2021 um 15:08 +0200 schrieb Benjamin Gaignard: >> Le 16/04/2021 à 12:54, Lucas Stach a écrit : >>> Am Mittwoch, dem 07.04.2021 um 09:35 +0200 schrieb Benjamin Gaignard: >>>> In order to be able to share the control hardware block between >>>> VPUs use a syscon instead a ioremap it in the driver. >>>> To keep the compatibility with older DT if 'nxp,imx8mq-vpu-ctrl' >>>> phandle is not found look at 'ctrl' reg-name. >>>> With the method it becomes useless to provide a list of register >>>> names so remove it. >>> Sorry for putting a spoke in the wheel after many iterations of the >>> series. >>> >>> We just discussed a way forward on how to handle the clocks and resets >>> provided by the blkctl block on i.MX8MM and later and it seems there is >>> a consensus on trying to provide virtual power domains from a blkctl >>> driver, controlling clocks and resets for the devices in the power >>> domain. I would like to avoid introducing yet another way of handling >>> the blkctl and thus would like to align the i.MX8MQ VPU blkctl with >>> what we are planning to do on the later chip generations. >>> >>> CC'ing Jacky Bai and Peng Fan from NXP, as they were going to give this >>> virtual power domain thing a shot. >> That could replace the 3 first patches and Dt patche of this series >> but that will not impact the hevc part, so I wonder if pure hevc patches >> could be merged anyway ? >> They are reviewed and don't depend of how the ctrl block is managed. > I'm not really in a position to give any informed opinion about that > hvec patches, as I only skimmed them, but I don't see any reason to > delay patches 04-11 from this series until the i.MX8M platform issues > are sorted. AFAICS those things are totally orthogonal. Hi Hans, What do you think about this proposal to split this series ? Get hevc part merged could allow me to continue to add features like scaling lists, compressed reference buffers and 10-bit supports. Regards, Benjamin > > Regards, > Lucas > >>> Regards, >>> Lucas >>> >>>> Signed-off-by: Benjamin Gaignard >>>> Reviewed-by: Philipp Zabel >>>> --- >>>> version 9: >>>>   - Corrections in commit message >>>> >>>> version 7: >>>>   - Add Philipp reviewed-by tag. >>>>   - Change syscon phandle name. >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> version 5: >>>>   - use syscon instead of VPU reset driver. >>>>   - if DT doesn't provide syscon keep backward compatibilty by using >>>>     'ctrl' reg-name. >>>> >>>>   drivers/staging/media/hantro/hantro.h | 5 +- >>>>   drivers/staging/media/hantro/imx8m_vpu_hw.c | 52 ++++++++++++--------- >>>>   2 files changed, 34 insertions(+), 23 deletions(-) >>>> >>>> diff --git a/drivers/staging/media/hantro/hantro.h b/drivers/staging/media/hantro/hantro.h >>>> index 6c1b888abe75..37b9ce04bd4e 100644 >>>> --- a/drivers/staging/media/hantro/hantro.h >>>> +++ b/drivers/staging/media/hantro/hantro.h >>>> @@ -13,6 +13,7 @@ >>>>   #define HANTRO_H_ >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   #include >>>> +#include >>>>   #include >>>>   #include >>>>   #include >>>> @@ -167,7 +168,7 @@ hantro_vdev_to_func(struct video_device *vdev) >>>>    * @reg_bases: Mapped addresses of VPU registers. >>>>    * @enc_base: Mapped address of VPU encoder register for convenience. >>>>    * @dec_base: Mapped address of VPU decoder register for convenience. >>>> - * @ctrl_base: Mapped address of VPU control block. >>>> + * @ctrl_base: Regmap of VPU control block. >>>>    * @vpu_mutex: Mutex to synchronize V4L2 calls. >>>>    * @irqlock: Spinlock to synchronize access to data structures >>>>    * shared with interrupt handlers. >>>> @@ -186,7 +187,7 @@ struct hantro_dev { >>>>    void __iomem **reg_bases; >>>>    void __iomem *enc_base; >>>>    void __iomem *dec_base; >>>> - void __iomem *ctrl_base; >>>> + struct regmap *ctrl_base; >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    struct mutex vpu_mutex; /* video_device lock */ >>>>    spinlock_t irqlock; >>>> diff --git a/drivers/staging/media/hantro/imx8m_vpu_hw.c b/drivers/staging/media/hantro/imx8m_vpu_hw.c >>>> index c222de075ef4..8d0c3425234b 100644 >>>> --- a/drivers/staging/media/hantro/imx8m_vpu_hw.c >>>> +++ b/drivers/staging/media/hantro/imx8m_vpu_hw.c >>>> @@ -7,6 +7,7 @@ >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   #include >>>>   #include >>>> +#include >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   #include "hantro.h" >>>>   #include "hantro_jpeg.h" >>>> @@ -24,30 +25,28 @@ >>>>   #define CTRL_G1_PP_FUSE 0x0c >>>>   #define CTRL_G2_DEC_FUSE 0x10 >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> +static const struct regmap_config ctrl_regmap_ctrl = { >>>> + .reg_bits = 32, >>>> + .val_bits = 32, >>>> + .reg_stride = 0x14, >>>> +}; >>>> + >>>>   static void imx8m_soft_reset(struct hantro_dev *vpu, u32 reset_bits) >>>>   { >>>> - u32 val; >>>> - >>>>    /* Assert */ >>>> - val = readl(vpu->ctrl_base + CTRL_SOFT_RESET); >>>> - val &= ~reset_bits; >>>> - writel(val, vpu->ctrl_base + CTRL_SOFT_RESET); >>>> + regmap_update_bits(vpu->ctrl_base, CTRL_SOFT_RESET, reset_bits, 0); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    udelay(2); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    /* Release */ >>>> - val = readl(vpu->ctrl_base + CTRL_SOFT_RESET); >>>> - val |= reset_bits; >>>> - writel(val, vpu->ctrl_base + CTRL_SOFT_RESET); >>>> + regmap_update_bits(vpu->ctrl_base, CTRL_SOFT_RESET, >>>> + reset_bits, reset_bits); >>>>   } >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   static void imx8m_clk_enable(struct hantro_dev *vpu, u32 clock_bits) >>>>   { >>>> - u32 val; >>>> - >>>> - val = readl(vpu->ctrl_base + CTRL_CLOCK_ENABLE); >>>> - val |= clock_bits; >>>> - writel(val, vpu->ctrl_base + CTRL_CLOCK_ENABLE); >>>> + regmap_update_bits(vpu->ctrl_base, CTRL_CLOCK_ENABLE, >>>> + clock_bits, clock_bits); >>>>   } >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   static int imx8mq_runtime_resume(struct hantro_dev *vpu) >>>> @@ -64,9 +63,9 @@ static int imx8mq_runtime_resume(struct hantro_dev *vpu) >>>>    imx8m_clk_enable(vpu, CLOCK_G1 | CLOCK_G2); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    /* Set values of the fuse registers */ >>>> - writel(0xffffffff, vpu->ctrl_base + CTRL_G1_DEC_FUSE); >>>> - writel(0xffffffff, vpu->ctrl_base + CTRL_G1_PP_FUSE); >>>> - writel(0xffffffff, vpu->ctrl_base + CTRL_G2_DEC_FUSE); >>>> + regmap_write(vpu->ctrl_base, CTRL_G1_DEC_FUSE, 0xffffffff); >>>> + regmap_write(vpu->ctrl_base, CTRL_G1_PP_FUSE, 0xffffffff); >>>> + regmap_write(vpu->ctrl_base, CTRL_G2_DEC_FUSE, 0xffffffff); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    clk_bulk_disable_unprepare(vpu->variant->num_clocks, vpu->clocks); >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> @@ -150,8 +149,22 @@ static irqreturn_t imx8m_vpu_g1_irq(int irq, void *dev_id) >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   static int imx8mq_vpu_hw_init(struct hantro_dev *vpu) >>>>   { >>>> - vpu->dec_base = vpu->reg_bases[0]; >>>> - vpu->ctrl_base = vpu->reg_bases[vpu->variant->num_regs - 1]; >>>> + struct device_node *np = vpu->dev->of_node; >>>> + >>>> + vpu->ctrl_base = syscon_regmap_lookup_by_phandle(np, "nxp,imx8m-vpu-ctrl"); >>>> + if (IS_ERR(vpu->ctrl_base)) { >>>> + struct resource *res; >>>> + void __iomem *ctrl; >>>> + >>>> + res = platform_get_resource_byname(vpu->pdev, IORESOURCE_MEM, "ctrl"); >>>> + ctrl = devm_ioremap_resource(vpu->dev, res); >>>> + if (IS_ERR(ctrl)) >>>> + return PTR_ERR(ctrl); >>>> + >>>> + vpu->ctrl_base = devm_regmap_init_mmio(vpu->dev, ctrl, &ctrl_regmap_ctrl); >>>> + if (IS_ERR(vpu->ctrl_base)) >>>> + return PTR_ERR(vpu->ctrl_base); >>>> + } >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>    return 0; >>>>   } >>>> @@ -198,7 +211,6 @@ static const struct hantro_irq imx8mq_irqs[] = { >>>>   }; >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   static const char * const imx8mq_clk_names[] = { "g1", "g2", "bus" }; >>>> -static const char * const imx8mq_reg_names[] = { "g1", "g2", "ctrl" }; >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>   const struct hantro_variant imx8mq_vpu_variant = { >>>>    .dec_fmts = imx8m_vpu_dec_fmts, >>>> @@ -215,6 +227,4 @@ const struct hantro_variant imx8mq_vpu_variant = { >>>>    .num_irqs = ARRAY_SIZE(imx8mq_irqs), >>>>    .clk_names = imx8mq_clk_names, >>>>    .num_clocks = ARRAY_SIZE(imx8mq_clk_names), >>>> - .reg_names = imx8mq_reg_names, >>>> - .num_regs = ARRAY_SIZE(imx8mq_reg_names) >>>>   }; >>> > > 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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_SANE_1 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 B10E3C433ED for ; Tue, 20 Apr 2021 09:10:20 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 0636261354 for ; Tue, 20 Apr 2021 09:10:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0636261354 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 848A36063F; Tue, 20 Apr 2021 09:10:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MsD6NKeIXC3e; Tue, 20 Apr 2021 09:10:18 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id 31A6B60800; Tue, 20 Apr 2021 09:10:18 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 641BB1BF2C0 for ; Tue, 20 Apr 2021 09:10:17 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 51661402F1 for ; Tue, 20 Apr 2021 09:10:17 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ULLsA_TQdN0S for ; Tue, 20 Apr 2021 09:10:13 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by smtp4.osuosl.org (Postfix) with ESMTPS id 1AE00402E7 for ; Tue, 20 Apr 2021 09:10:12 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: benjamin.gaignard) with ESMTPSA id 34F941F4270E Subject: Re: [PATCH v9 03/13] media: hantro: Use syscon instead of 'ctrl' register To: Lucas Stach , ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, lee.jones@linaro.org, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, hverkuil-cisco@xs4all.nl, emil.l.velikov@gmail.com, "Peng Fan (OSS)" , Jacky Bai References: <20210407073534.376722-1-benjamin.gaignard@collabora.com> <20210407073534.376722-4-benjamin.gaignard@collabora.com> <7bcbb787d82f21d42563d8fb7e3c2e7d40123932.camel@pengutronix.de> <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> From: Benjamin Gaignard Message-ID: <36008691-d075-203d-0cac-2a012773ea34@collabora.com> Date: Tue, 20 Apr 2021 11:10:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> Content-Language: en-US X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-imx@nxp.com, kernel@pengutronix.de, kernel@collabora.com, cphealy@gmail.com, linux-media@vger.kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" CkxlIDE2LzA0LzIwMjEgw6AgMTc6MTQsIEx1Y2FzIFN0YWNoIGEgw6ljcml0wqA6Cj4gQW0gRnJl aXRhZywgZGVtIDE2LjA0LjIwMjEgdW0gMTU6MDggKzAyMDAgc2NocmllYiBCZW5qYW1pbiBHYWln bmFyZDoKPj4gTGUgMTYvMDQvMjAyMSDDoCAxMjo1NCwgTHVjYXMgU3RhY2ggYSDDqWNyaXTCoDoK Pj4+IEFtIE1pdHR3b2NoLCBkZW0gMDcuMDQuMjAyMSB1bSAwOTozNSArMDIwMCBzY2hyaWViIEJl bmphbWluIEdhaWduYXJkOgo+Pj4+IEluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2hhcmUgdGhlIGNv bnRyb2wgaGFyZHdhcmUgYmxvY2sgYmV0d2Vlbgo+Pj4+IFZQVXMgdXNlIGEgc3lzY29uIGluc3Rl YWQgYSBpb3JlbWFwIGl0IGluIHRoZSBkcml2ZXIuCj4+Pj4gVG8ga2VlcCB0aGUgY29tcGF0aWJp bGl0eSB3aXRoIG9sZGVyIERUIGlmICdueHAsaW14OG1xLXZwdS1jdHJsJwo+Pj4+IHBoYW5kbGUg aXMgbm90IGZvdW5kIGxvb2sgYXQgJ2N0cmwnIHJlZy1uYW1lLgo+Pj4+IFdpdGggdGhlIG1ldGhv ZCBpdCBiZWNvbWVzIHVzZWxlc3MgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgcmVnaXN0ZXIKPj4+PiBu YW1lcyBzbyByZW1vdmUgaXQuCj4+PiBTb3JyeSBmb3IgcHV0dGluZyBhIHNwb2tlIGluIHRoZSB3 aGVlbCBhZnRlciBtYW55IGl0ZXJhdGlvbnMgb2YgdGhlCj4+PiBzZXJpZXMuCj4+Pgo+Pj4gV2Ug anVzdCBkaXNjdXNzZWQgYSB3YXkgZm9yd2FyZCBvbiBob3cgdG8gaGFuZGxlIHRoZSBjbG9ja3Mg YW5kIHJlc2V0cwo+Pj4gcHJvdmlkZWQgYnkgdGhlIGJsa2N0bCBibG9jayBvbiBpLk1YOE1NIGFu ZCBsYXRlciBhbmQgaXQgc2VlbXMgdGhlcmUgaXMKPj4+IGEgY29uc2Vuc3VzIG9uIHRyeWluZyB0 byBwcm92aWRlIHZpcnR1YWwgcG93ZXIgZG9tYWlucyBmcm9tIGEgYmxrY3RsCj4+PiBkcml2ZXIs IGNvbnRyb2xsaW5nIGNsb2NrcyBhbmQgcmVzZXRzIGZvciB0aGUgZGV2aWNlcyBpbiB0aGUgcG93 ZXIKPj4+IGRvbWFpbi4gSSB3b3VsZCBsaWtlIHRvIGF2b2lkIGludHJvZHVjaW5nIHlldCBhbm90 aGVyIHdheSBvZiBoYW5kbGluZwo+Pj4gdGhlIGJsa2N0bCBhbmQgdGh1cyB3b3VsZCBsaWtlIHRv IGFsaWduIHRoZSBpLk1YOE1RIFZQVSBibGtjdGwgd2l0aAo+Pj4gd2hhdCB3ZSBhcmUgcGxhbm5p bmcgdG8gZG8gb24gdGhlIGxhdGVyIGNoaXAgZ2VuZXJhdGlvbnMuCj4+Pgo+Pj4gQ0MnaW5nIEph Y2t5IEJhaSBhbmQgUGVuZyBGYW4gZnJvbSBOWFAsIGFzIHRoZXkgd2VyZSBnb2luZyB0byBnaXZl IHRoaXMKPj4+IHZpcnR1YWwgcG93ZXIgZG9tYWluIHRoaW5nIGEgc2hvdC4KPj4gVGhhdCBjb3Vs ZCByZXBsYWNlIHRoZSAzIGZpcnN0IHBhdGNoZXMgYW5kIER0IHBhdGNoZSBvZiB0aGlzIHNlcmll cwo+PiBidXQgdGhhdCB3aWxsIG5vdCBpbXBhY3QgdGhlIGhldmMgcGFydCwgc28gSSB3b25kZXIg aWYgcHVyZSBoZXZjIHBhdGNoZXMKPj4gY291bGQgYmUgbWVyZ2VkIGFueXdheSA/Cj4+IFRoZXkg YXJlIHJldmlld2VkIGFuZCBkb24ndCBkZXBlbmQgb2YgaG93IHRoZSBjdHJsIGJsb2NrIGlzIG1h bmFnZWQuCj4gSSdtIG5vdCByZWFsbHkgaW4gYSBwb3NpdGlvbiB0byBnaXZlIGFueSBpbmZvcm1l ZCBvcGluaW9uIGFib3V0IHRoYXQKPiBodmVjIHBhdGNoZXMsIGFzIEkgb25seSBza2ltbWVkIHRo ZW0sIGJ1dCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvCj4gZGVsYXkgcGF0Y2hlcyAwNC0xMSBm cm9tIHRoaXMgc2VyaWVzIHVudGlsIHRoZSBpLk1YOE0gcGxhdGZvcm0gaXNzdWVzCj4gYXJlIHNv cnRlZC4gQUZBSUNTIHRob3NlIHRoaW5ncyBhcmUgdG90YWxseSBvcnRob2dvbmFsLgoKSGkgSGFu cywKV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcyBwcm9wb3NhbCB0byBzcGxpdCB0aGlzIHNl cmllcyA/CkdldCBoZXZjIHBhcnQgbWVyZ2VkIGNvdWxkIGFsbG93IG1lIHRvIGNvbnRpbnVlIHRv IGFkZCBmZWF0dXJlcwpsaWtlIHNjYWxpbmcgbGlzdHMsIGNvbXByZXNzZWQgcmVmZXJlbmNlIGJ1 ZmZlcnMgYW5kIDEwLWJpdCBzdXBwb3J0cy4KClJlZ2FyZHMsCkJlbmphbWluCgo+Cj4gUmVnYXJk cywKPiBMdWNhcwo+Cj4+PiBSZWdhcmRzLAo+Pj4gTHVjYXMKPj4+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+ Pj4gUmV2aWV3ZWQtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+Cj4+ Pj4gLS0tCj4+Pj4gdmVyc2lvbiA5Ogo+Pj4+ICDCoMKgLSBDb3JyZWN0aW9ucyBpbiBjb21taXQg bWVzc2FnZQo+Pj4+Cj4+Pj4gdmVyc2lvbiA3Ogo+Pj4+ICDCoMKgLSBBZGQgUGhpbGlwcCByZXZp ZXdlZC1ieSB0YWcuCj4+Pj4gIMKgwqAtIENoYW5nZSBzeXNjb24gcGhhbmRsZSBuYW1lLgo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IHZlcnNpb24gNToKPj4+PiAg wqDCoC0gdXNlIHN5c2NvbiBpbnN0ZWFkIG9mIFZQVSByZXNldCBkcml2ZXIuCj4+Pj4gIMKgwqAt IGlmIERUIGRvZXNuJ3QgcHJvdmlkZSBzeXNjb24ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsdHkg YnkgdXNpbmcKPj4+PiAgwqDCoMKgwqAnY3RybCcgcmVnLW5hbWUuCj4+Pj4KPj4+PiAgwqDCoGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmggICAgICAgfCAgNSArLQo+Pj4+ICDC oMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYyB8IDUyICsrKysr KysrKysrKy0tLS0tLS0tLQo+Pj4+ICDCoMKgMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9o YW50cm8uaAo+Pj4+IGluZGV4IDZjMWI4ODhhYmU3NS4uMzdiOWNlMDRiZDRlIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPj4+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4+Pj4gQEAgLTEzLDYgKzEzLDcg QEAKPj4+PiAgwqDCoCNkZWZpbmUgSEFOVFJPX0hfCj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51 eC92aWRlb2RldjIuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51eC93YWl0Lmg+Cj4+Pj4gIMKg wqAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+Pj4gQEAgLTE2Nyw3ICsxNjgsNyBAQCBoYW50cm9f dmRldl90b19mdW5jKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCj4+Pj4gIMKgwqDCoCogQHJl Z19iYXNlczoJCU1hcHBlZCBhZGRyZXNzZXMgb2YgVlBVIHJlZ2lzdGVycy4KPj4+PiAgwqDCoMKg KiBAZW5jX2Jhc2U6CQlNYXBwZWQgYWRkcmVzcyBvZiBWUFUgZW5jb2RlciByZWdpc3RlciBmb3Ig Y29udmVuaWVuY2UuCj4+Pj4gIMKgwqDCoCogQGRlY19iYXNlOgkJTWFwcGVkIGFkZHJlc3Mgb2Yg VlBVIGRlY29kZXIgcmVnaXN0ZXIgZm9yIGNvbnZlbmllbmNlLgo+Pj4+IC0gKiBAY3RybF9iYXNl OgkJTWFwcGVkIGFkZHJlc3Mgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gKyAqIEBjdHJsX2Jh c2U6CQlSZWdtYXAgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gIMKgwqDCoCogQHZwdV9tdXRl eDoJCU11dGV4IHRvIHN5bmNocm9uaXplIFY0TDIgY2FsbHMuCj4+Pj4gIMKgwqDCoCogQGlycWxv Y2s6CQlTcGlubG9jayB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gZGF0YSBzdHJ1Y3R1cmVzCj4+ Pj4gIMKgwqDCoCoJCQlzaGFyZWQgd2l0aCBpbnRlcnJ1cHQgaGFuZGxlcnMuCj4+Pj4gQEAgLTE4 Niw3ICsxODcsNyBAQCBzdHJ1Y3QgaGFudHJvX2RldiB7Cj4+Pj4gIMKgwqAJdm9pZCBfX2lvbWVt ICoqcmVnX2Jhc2VzOwo+Pj4+ICDCoMKgCXZvaWQgX19pb21lbSAqZW5jX2Jhc2U7Cj4+Pj4gIMKg wqAJdm9pZCBfX2lvbWVtICpkZWNfYmFzZTsKPj4+PiAtCXZvaWQgX19pb21lbSAqY3RybF9iYXNl Owo+Pj4+ICsJc3RydWN0IHJlZ21hcCAqY3RybF9iYXNlOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgCXN0cnVjdCBtdXRleCB2cHVfbXV0ZXg7CS8qIHZp ZGVvX2RldmljZSBsb2NrICovCj4+Pj4gIMKgwqAJc3BpbmxvY2tfdCBpcnFsb2NrOwo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYwo+Pj4+IGluZGV4IGMy MjJkZTA3NWVmNC4uOGQwYzM0MjUyMzRiIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMKPj4+PiArKysgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jCj4+Pj4gQEAgLTcsNiArNyw3IEBACj4+Pj4gICAg Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4+PiArI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50cm8uaCIKPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50 cm9fanBlZy5oIgo+Pj4+IEBAIC0yNCwzMCArMjUsMjggQEAKPj4+PiAgwqDCoCNkZWZpbmUgQ1RS TF9HMV9QUF9GVVNFCQkweDBjCj4+Pj4gIMKgwqAjZGVmaW5lIENUUkxfRzJfREVDX0ZVU0UJMHgx MAo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3RybF9yZWdtYXBfY3RybCA9IHsKPj4+PiArCS5yZWdf Yml0cyA9IDMyLAo+Pj4+ICsJLnZhbF9iaXRzID0gMzIsCj4+Pj4gKwkucmVnX3N0cmlkZSA9IDB4 MTQsCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICDCoMKgc3RhdGljIHZvaWQgaW14OG1fc29mdF9yZXNl dChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1LCB1MzIgcmVzZXRfYml0cykKPj4+PiAgwqDCoHsKPj4+ PiAtCXUzMiB2YWw7Cj4+Pj4gLQo+Pj4+ICDCoMKgCS8qIEFzc2VydCAqLwo+Pj4+IC0JdmFsID0g cmVhZGwodnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRfUkVTRVQpOwo+Pj4+IC0JdmFsICY9IH5y ZXNldF9iaXRzOwo+Pj4+IC0Jd3JpdGVsKHZhbCwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRf UkVTRVQpOwo+Pj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHZwdS0+Y3RybF9iYXNlLCBDVFJMX1NP RlRfUkVTRVQsIHJlc2V0X2JpdHMsIDApOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+ICDCoMKgCXVkZWxheSgyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoAkvKiBSZWxlYXNlICovCj4+Pj4gLQl2YWwgPSByZWFkbCh2 cHUtPmN0cmxfYmFzZSArIENUUkxfU09GVF9SRVNFVCk7Cj4+Pj4gLQl2YWwgfD0gcmVzZXRfYml0 czsKPj4+PiAtCXdyaXRlbCh2YWwsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9TT0ZUX1JFU0VUKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9TT0ZUX1JFU0VU LAo+Pj4+ICsJCQkgICByZXNldF9iaXRzLCByZXNldF9iaXRzKTsKPj4+PiAgwqDCoH0KPj4+PiAg ICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0YXRpYyB2b2lkIGlt eDhtX2Nsa19lbmFibGUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSwgdTMyIGNsb2NrX2JpdHMpCj4+ Pj4gIMKgwqB7Cj4+Pj4gLQl1MzIgdmFsOwo+Pj4+IC0KPj4+PiAtCXZhbCA9IHJlYWRsKHZwdS0+ Y3RybF9iYXNlICsgQ1RSTF9DTE9DS19FTkFCTEUpOwo+Pj4+IC0JdmFsIHw9IGNsb2NrX2JpdHM7 Cj4+Pj4gLQl3cml0ZWwodmFsLCB2cHUtPmN0cmxfYmFzZSArIENUUkxfQ0xPQ0tfRU5BQkxFKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9DTE9DS19FTkFC TEUsCj4+Pj4gKwkJCSAgIGNsb2NrX2JpdHMsIGNsb2NrX2JpdHMpOwo+Pj4+ICDCoMKgfQo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgc3RhdGljIGludCBp bXg4bXFfcnVudGltZV9yZXN1bWUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSkKPj4+PiBAQCAtNjQs OSArNjMsOSBAQCBzdGF0aWMgaW50IGlteDhtcV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgaGFudHJv X2RldiAqdnB1KQo+Pj4+ICDCoMKgCWlteDhtX2Nsa19lbmFibGUodnB1LCBDTE9DS19HMSB8IENM T0NLX0cyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDC oAkvKiBTZXQgdmFsdWVzIG9mIHRoZSBmdXNlIHJlZ2lzdGVycyAqLwo+Pj4+IC0Jd3JpdGVsKDB4 ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMV9ERUNfRlVTRSk7Cj4+Pj4gLQl3cml0 ZWwoMHhmZmZmZmZmZiwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX0cxX1BQX0ZVU0UpOwo+Pj4+IC0J d3JpdGVsKDB4ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMl9ERUNfRlVTRSk7Cj4+ Pj4gKwlyZWdtYXBfd3JpdGUodnB1LT5jdHJsX2Jhc2UsIENUUkxfRzFfREVDX0ZVU0UsIDB4ZmZm ZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJMX0cxX1BQX0ZV U0UsIDB4ZmZmZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJM X0cyX0RFQ19GVVNFLCAweGZmZmZmZmZmKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4KPj4+PiAgwqDCoAljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZSh2cHUtPnZhcmlh bnQtPm51bV9jbG9ja3MsIHZwdS0+Y2xvY2tzKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiBAQCAtMTUwLDggKzE0OSwyMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg aW14OG1fdnB1X2cxX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+Pj4gICAgCj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBzdGF0aWMgaW50IGlteDhtcV92cHVfaHdf aW5pdChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1KQo+Pj4+ICDCoMKgewo+Pj4+IC0JdnB1LT5kZWNf YmFzZSA9IHZwdS0+cmVnX2Jhc2VzWzBdOwo+Pj4+IC0JdnB1LT5jdHJsX2Jhc2UgPSB2cHUtPnJl Z19iYXNlc1t2cHUtPnZhcmlhbnQtPm51bV9yZWdzIC0gMV07Cj4+Pj4gKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wID0gdnB1LT5kZXYtPm9mX25vZGU7Cj4+Pj4gKwo+Pj4+ICsJdnB1LT5jdHJsX2Jh c2UgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAibnhwLGlteDhtLXZwdS1j dHJsIik7Cj4+Pj4gKwlpZiAoSVNfRVJSKHZwdS0+Y3RybF9iYXNlKSkgewo+Pj4+ICsJCXN0cnVj dCByZXNvdXJjZSAqcmVzOwo+Pj4+ICsJCXZvaWQgX19pb21lbSAqY3RybDsKPj4+PiArCj4+Pj4g KwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZSh2cHUtPnBkZXYsIElPUkVTT1VS Q0VfTUVNLCAiY3RybCIpOwo+Pj4+ICsJCWN0cmwgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UodnB1 LT5kZXYsIHJlcyk7Cj4+Pj4gKwkJaWYgKElTX0VSUihjdHJsKSkKPj4+PiArCQkJcmV0dXJuIFBU Ul9FUlIoY3RybCk7Cj4+Pj4gKwo+Pj4+ICsJCXZwdS0+Y3RybF9iYXNlID0gZGV2bV9yZWdtYXBf aW5pdF9tbWlvKHZwdS0+ZGV2LCBjdHJsLCAmY3RybF9yZWdtYXBfY3RybCk7Cj4+Pj4gKwkJaWYg KElTX0VSUih2cHUtPmN0cmxfYmFzZSkpCj4+Pj4gKwkJCXJldHVybiBQVFJfRVJSKHZwdS0+Y3Ry bF9iYXNlKTsKPj4+PiArCX0KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4K Pj4+PiAgwqDCoAlyZXR1cm4gMDsKPj4+PiAgwqDCoH0KPj4+PiBAQCAtMTk4LDcgKzIxMSw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGFudHJvX2lycSBpbXg4bXFfaXJxc1tdID0gewo+Pj4+ICDC oMKgfTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgaW14OG1xX2Nsa19uYW1lc1tdID0geyAiZzEiLCAiZzIi LCAiYnVzIiB9Owo+Pj4+IC1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGlteDhtcV9yZWdfbmFt ZXNbXSA9IHsgImcxIiwgImcyIiwgImN0cmwiIH07Cj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgaW14OG1x X3ZwdV92YXJpYW50ID0gewo+Pj4+ICDCoMKgCS5kZWNfZm10cyA9IGlteDhtX3ZwdV9kZWNfZm10 cywKPj4+PiBAQCAtMjE1LDYgKzIyNyw0IEBAIGNvbnN0IHN0cnVjdCBoYW50cm9fdmFyaWFudCBp bXg4bXFfdnB1X3ZhcmlhbnQgPSB7Cj4+Pj4gIMKgwqAJLm51bV9pcnFzID0gQVJSQVlfU0laRShp bXg4bXFfaXJxcyksCj4+Pj4gIMKgwqAJLmNsa19uYW1lcyA9IGlteDhtcV9jbGtfbmFtZXMsCj4+ Pj4gIMKgwqAJLm51bV9jbG9ja3MgPSBBUlJBWV9TSVpFKGlteDhtcV9jbGtfbmFtZXMpLAo+Pj4+ IC0JLnJlZ19uYW1lcyA9IGlteDhtcV9yZWdfbmFtZXMsCj4+Pj4gLQkubnVtX3JlZ3MgPSBBUlJB WV9TSVpFKGlteDhtcV9yZWdfbmFtZXMpCj4+Pj4gIMKgwqB9Owo+Pj4KPgo+Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldmVsIG1haWxpbmcgbGlzdApk ZXZlbEBsaW51eGRyaXZlcnByb2plY3Qub3JnCmh0dHA6Ly9kcml2ZXJkZXYubGludXhkcml2ZXJw cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaXZlcmRldi1kZXZlbAo= 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=-15.2 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,NICE_REPLY_A,SPF_HELO_NONE,SPF_NONE, UNPARSEABLE_RELAY,USER_AGENT_SANE_1 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 0DD7AC43618 for ; Tue, 20 Apr 2021 09:11:18 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 757F56101E for ; Tue, 20 Apr 2021 09:11:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 757F56101E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com 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=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=yOsKBOiV9q48OljDIb6xbD9GeIDzf5cQDGMDR/gWtME=; b=EE1a/Vp0FaYr9ueZPHQV7OjJp XQCtPZNpLE2Fa51AYekmCzMJV+Kkuufnj/f8rKMn+3ms+HJdEzdCW32NQDgBTBwn9ee4+ZbbSVUEN VsmSlpbncJZuS9nzs748LFaVg58AG1jq6WJBo93zEVX4Ha9kdBfX2oILRxQ+BUxatNI+VhvvKFmeu 32wzdJd73Nvhea+LZmkshdiJDzH8Lk6HWeDXkEOr1ff3Xi9YB/9x4y5lfdkfo9uY1OKdW2wJ/0CwP 3TAz1FXqDJemT0jQ7WfjlnnPdb605rvXJP4HJeDl76dUlkJ3AmsxKhzZdM4dcp2OXTH0f3lsAwfoa 225J53mmQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lYmPZ-00Bg9d-HA; Tue, 20 Apr 2021 09:11:13 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYmOl-00Bfzd-2Y; Tue, 20 Apr 2021 09:10:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=ZD97JqxKMrxJLl5m5soy5BJCP81W4AyZFRxNCX8qCW4=; b=WCnUYPSJc1wIzaBqK89JB/04OV 85bdfrQPNlnA3ocOqvx0StaNEzEGVQqEEqMuUSpgZP2VeAIdR4tP3xB4JydiEIPJxvdYFRHB4vO8I rYt98zXbGrmXmWLgN5+ZLSru4d4Z9YRMVJW5y3k/Op+g6EX0of13dg7XJ/vCmKgPv7fOH/WP5PUoq gdd0fwEOX+MJykbZ2/Vc7VA3s+PttkwEG2esmCTNWbdc6KbskpSJcEW4M5UxwPTbZKHEFJ4U/7yRc pN501R+Sk+tw/7KUoY5OpWSu9uG6xi1y3WGCVuaQ/k8Yzm3k0o68WZpGNDv/QKyQ/AXdTQWc467hk NTiC1idg==; Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYmOe-00BxSP-9Y; Tue, 20 Apr 2021 09:10:21 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: benjamin.gaignard) with ESMTPSA id 34F941F4270E Subject: Re: [PATCH v9 03/13] media: hantro: Use syscon instead of 'ctrl' register To: Lucas Stach , ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, lee.jones@linaro.org, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, hverkuil-cisco@xs4all.nl, emil.l.velikov@gmail.com, "Peng Fan (OSS)" , Jacky Bai Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-imx@nxp.com, kernel@pengutronix.de, kernel@collabora.com, cphealy@gmail.com, linux-arm-kernel@lists.infradead.org References: <20210407073534.376722-1-benjamin.gaignard@collabora.com> <20210407073534.376722-4-benjamin.gaignard@collabora.com> <7bcbb787d82f21d42563d8fb7e3c2e7d40123932.camel@pengutronix.de> <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> From: Benjamin Gaignard Message-ID: <36008691-d075-203d-0cac-2a012773ea34@collabora.com> Date: Tue, 20 Apr 2021 11:10:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210420_021016_602255_0CBD608D X-CRM114-Status: GOOD ( 29.92 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org CkxlIDE2LzA0LzIwMjEgw6AgMTc6MTQsIEx1Y2FzIFN0YWNoIGEgw6ljcml0wqA6Cj4gQW0gRnJl aXRhZywgZGVtIDE2LjA0LjIwMjEgdW0gMTU6MDggKzAyMDAgc2NocmllYiBCZW5qYW1pbiBHYWln bmFyZDoKPj4gTGUgMTYvMDQvMjAyMSDDoCAxMjo1NCwgTHVjYXMgU3RhY2ggYSDDqWNyaXTCoDoK Pj4+IEFtIE1pdHR3b2NoLCBkZW0gMDcuMDQuMjAyMSB1bSAwOTozNSArMDIwMCBzY2hyaWViIEJl bmphbWluIEdhaWduYXJkOgo+Pj4+IEluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2hhcmUgdGhlIGNv bnRyb2wgaGFyZHdhcmUgYmxvY2sgYmV0d2Vlbgo+Pj4+IFZQVXMgdXNlIGEgc3lzY29uIGluc3Rl YWQgYSBpb3JlbWFwIGl0IGluIHRoZSBkcml2ZXIuCj4+Pj4gVG8ga2VlcCB0aGUgY29tcGF0aWJp bGl0eSB3aXRoIG9sZGVyIERUIGlmICdueHAsaW14OG1xLXZwdS1jdHJsJwo+Pj4+IHBoYW5kbGUg aXMgbm90IGZvdW5kIGxvb2sgYXQgJ2N0cmwnIHJlZy1uYW1lLgo+Pj4+IFdpdGggdGhlIG1ldGhv ZCBpdCBiZWNvbWVzIHVzZWxlc3MgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgcmVnaXN0ZXIKPj4+PiBu YW1lcyBzbyByZW1vdmUgaXQuCj4+PiBTb3JyeSBmb3IgcHV0dGluZyBhIHNwb2tlIGluIHRoZSB3 aGVlbCBhZnRlciBtYW55IGl0ZXJhdGlvbnMgb2YgdGhlCj4+PiBzZXJpZXMuCj4+Pgo+Pj4gV2Ug anVzdCBkaXNjdXNzZWQgYSB3YXkgZm9yd2FyZCBvbiBob3cgdG8gaGFuZGxlIHRoZSBjbG9ja3Mg YW5kIHJlc2V0cwo+Pj4gcHJvdmlkZWQgYnkgdGhlIGJsa2N0bCBibG9jayBvbiBpLk1YOE1NIGFu ZCBsYXRlciBhbmQgaXQgc2VlbXMgdGhlcmUgaXMKPj4+IGEgY29uc2Vuc3VzIG9uIHRyeWluZyB0 byBwcm92aWRlIHZpcnR1YWwgcG93ZXIgZG9tYWlucyBmcm9tIGEgYmxrY3RsCj4+PiBkcml2ZXIs IGNvbnRyb2xsaW5nIGNsb2NrcyBhbmQgcmVzZXRzIGZvciB0aGUgZGV2aWNlcyBpbiB0aGUgcG93 ZXIKPj4+IGRvbWFpbi4gSSB3b3VsZCBsaWtlIHRvIGF2b2lkIGludHJvZHVjaW5nIHlldCBhbm90 aGVyIHdheSBvZiBoYW5kbGluZwo+Pj4gdGhlIGJsa2N0bCBhbmQgdGh1cyB3b3VsZCBsaWtlIHRv IGFsaWduIHRoZSBpLk1YOE1RIFZQVSBibGtjdGwgd2l0aAo+Pj4gd2hhdCB3ZSBhcmUgcGxhbm5p bmcgdG8gZG8gb24gdGhlIGxhdGVyIGNoaXAgZ2VuZXJhdGlvbnMuCj4+Pgo+Pj4gQ0MnaW5nIEph Y2t5IEJhaSBhbmQgUGVuZyBGYW4gZnJvbSBOWFAsIGFzIHRoZXkgd2VyZSBnb2luZyB0byBnaXZl IHRoaXMKPj4+IHZpcnR1YWwgcG93ZXIgZG9tYWluIHRoaW5nIGEgc2hvdC4KPj4gVGhhdCBjb3Vs ZCByZXBsYWNlIHRoZSAzIGZpcnN0IHBhdGNoZXMgYW5kIER0IHBhdGNoZSBvZiB0aGlzIHNlcmll cwo+PiBidXQgdGhhdCB3aWxsIG5vdCBpbXBhY3QgdGhlIGhldmMgcGFydCwgc28gSSB3b25kZXIg aWYgcHVyZSBoZXZjIHBhdGNoZXMKPj4gY291bGQgYmUgbWVyZ2VkIGFueXdheSA/Cj4+IFRoZXkg YXJlIHJldmlld2VkIGFuZCBkb24ndCBkZXBlbmQgb2YgaG93IHRoZSBjdHJsIGJsb2NrIGlzIG1h bmFnZWQuCj4gSSdtIG5vdCByZWFsbHkgaW4gYSBwb3NpdGlvbiB0byBnaXZlIGFueSBpbmZvcm1l ZCBvcGluaW9uIGFib3V0IHRoYXQKPiBodmVjIHBhdGNoZXMsIGFzIEkgb25seSBza2ltbWVkIHRo ZW0sIGJ1dCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvCj4gZGVsYXkgcGF0Y2hlcyAwNC0xMSBm cm9tIHRoaXMgc2VyaWVzIHVudGlsIHRoZSBpLk1YOE0gcGxhdGZvcm0gaXNzdWVzCj4gYXJlIHNv cnRlZC4gQUZBSUNTIHRob3NlIHRoaW5ncyBhcmUgdG90YWxseSBvcnRob2dvbmFsLgoKSGkgSGFu cywKV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcyBwcm9wb3NhbCB0byBzcGxpdCB0aGlzIHNl cmllcyA/CkdldCBoZXZjIHBhcnQgbWVyZ2VkIGNvdWxkIGFsbG93IG1lIHRvIGNvbnRpbnVlIHRv IGFkZCBmZWF0dXJlcwpsaWtlIHNjYWxpbmcgbGlzdHMsIGNvbXByZXNzZWQgcmVmZXJlbmNlIGJ1 ZmZlcnMgYW5kIDEwLWJpdCBzdXBwb3J0cy4KClJlZ2FyZHMsCkJlbmphbWluCgo+Cj4gUmVnYXJk cywKPiBMdWNhcwo+Cj4+PiBSZWdhcmRzLAo+Pj4gTHVjYXMKPj4+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+ Pj4gUmV2aWV3ZWQtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+Cj4+ Pj4gLS0tCj4+Pj4gdmVyc2lvbiA5Ogo+Pj4+ICDCoMKgLSBDb3JyZWN0aW9ucyBpbiBjb21taXQg bWVzc2FnZQo+Pj4+Cj4+Pj4gdmVyc2lvbiA3Ogo+Pj4+ICDCoMKgLSBBZGQgUGhpbGlwcCByZXZp ZXdlZC1ieSB0YWcuCj4+Pj4gIMKgwqAtIENoYW5nZSBzeXNjb24gcGhhbmRsZSBuYW1lLgo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IHZlcnNpb24gNToKPj4+PiAg wqDCoC0gdXNlIHN5c2NvbiBpbnN0ZWFkIG9mIFZQVSByZXNldCBkcml2ZXIuCj4+Pj4gIMKgwqAt IGlmIERUIGRvZXNuJ3QgcHJvdmlkZSBzeXNjb24ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsdHkg YnkgdXNpbmcKPj4+PiAgwqDCoMKgwqAnY3RybCcgcmVnLW5hbWUuCj4+Pj4KPj4+PiAgwqDCoGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmggICAgICAgfCAgNSArLQo+Pj4+ICDC oMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYyB8IDUyICsrKysr KysrKysrKy0tLS0tLS0tLQo+Pj4+ICDCoMKgMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9o YW50cm8uaAo+Pj4+IGluZGV4IDZjMWI4ODhhYmU3NS4uMzdiOWNlMDRiZDRlIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPj4+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4+Pj4gQEAgLTEzLDYgKzEzLDcg QEAKPj4+PiAgwqDCoCNkZWZpbmUgSEFOVFJPX0hfCj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51 eC92aWRlb2RldjIuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51eC93YWl0Lmg+Cj4+Pj4gIMKg wqAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+Pj4gQEAgLTE2Nyw3ICsxNjgsNyBAQCBoYW50cm9f dmRldl90b19mdW5jKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCj4+Pj4gIMKgwqDCoCogQHJl Z19iYXNlczoJCU1hcHBlZCBhZGRyZXNzZXMgb2YgVlBVIHJlZ2lzdGVycy4KPj4+PiAgwqDCoMKg KiBAZW5jX2Jhc2U6CQlNYXBwZWQgYWRkcmVzcyBvZiBWUFUgZW5jb2RlciByZWdpc3RlciBmb3Ig Y29udmVuaWVuY2UuCj4+Pj4gIMKgwqDCoCogQGRlY19iYXNlOgkJTWFwcGVkIGFkZHJlc3Mgb2Yg VlBVIGRlY29kZXIgcmVnaXN0ZXIgZm9yIGNvbnZlbmllbmNlLgo+Pj4+IC0gKiBAY3RybF9iYXNl OgkJTWFwcGVkIGFkZHJlc3Mgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gKyAqIEBjdHJsX2Jh c2U6CQlSZWdtYXAgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gIMKgwqDCoCogQHZwdV9tdXRl eDoJCU11dGV4IHRvIHN5bmNocm9uaXplIFY0TDIgY2FsbHMuCj4+Pj4gIMKgwqDCoCogQGlycWxv Y2s6CQlTcGlubG9jayB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gZGF0YSBzdHJ1Y3R1cmVzCj4+ Pj4gIMKgwqDCoCoJCQlzaGFyZWQgd2l0aCBpbnRlcnJ1cHQgaGFuZGxlcnMuCj4+Pj4gQEAgLTE4 Niw3ICsxODcsNyBAQCBzdHJ1Y3QgaGFudHJvX2RldiB7Cj4+Pj4gIMKgwqAJdm9pZCBfX2lvbWVt ICoqcmVnX2Jhc2VzOwo+Pj4+ICDCoMKgCXZvaWQgX19pb21lbSAqZW5jX2Jhc2U7Cj4+Pj4gIMKg wqAJdm9pZCBfX2lvbWVtICpkZWNfYmFzZTsKPj4+PiAtCXZvaWQgX19pb21lbSAqY3RybF9iYXNl Owo+Pj4+ICsJc3RydWN0IHJlZ21hcCAqY3RybF9iYXNlOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgCXN0cnVjdCBtdXRleCB2cHVfbXV0ZXg7CS8qIHZp ZGVvX2RldmljZSBsb2NrICovCj4+Pj4gIMKgwqAJc3BpbmxvY2tfdCBpcnFsb2NrOwo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYwo+Pj4+IGluZGV4IGMy MjJkZTA3NWVmNC4uOGQwYzM0MjUyMzRiIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMKPj4+PiArKysgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jCj4+Pj4gQEAgLTcsNiArNyw3IEBACj4+Pj4gICAg Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4+PiArI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50cm8uaCIKPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50 cm9fanBlZy5oIgo+Pj4+IEBAIC0yNCwzMCArMjUsMjggQEAKPj4+PiAgwqDCoCNkZWZpbmUgQ1RS TF9HMV9QUF9GVVNFCQkweDBjCj4+Pj4gIMKgwqAjZGVmaW5lIENUUkxfRzJfREVDX0ZVU0UJMHgx MAo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3RybF9yZWdtYXBfY3RybCA9IHsKPj4+PiArCS5yZWdf Yml0cyA9IDMyLAo+Pj4+ICsJLnZhbF9iaXRzID0gMzIsCj4+Pj4gKwkucmVnX3N0cmlkZSA9IDB4 MTQsCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICDCoMKgc3RhdGljIHZvaWQgaW14OG1fc29mdF9yZXNl dChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1LCB1MzIgcmVzZXRfYml0cykKPj4+PiAgwqDCoHsKPj4+ PiAtCXUzMiB2YWw7Cj4+Pj4gLQo+Pj4+ICDCoMKgCS8qIEFzc2VydCAqLwo+Pj4+IC0JdmFsID0g cmVhZGwodnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRfUkVTRVQpOwo+Pj4+IC0JdmFsICY9IH5y ZXNldF9iaXRzOwo+Pj4+IC0Jd3JpdGVsKHZhbCwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRf UkVTRVQpOwo+Pj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHZwdS0+Y3RybF9iYXNlLCBDVFJMX1NP RlRfUkVTRVQsIHJlc2V0X2JpdHMsIDApOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+ICDCoMKgCXVkZWxheSgyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoAkvKiBSZWxlYXNlICovCj4+Pj4gLQl2YWwgPSByZWFkbCh2 cHUtPmN0cmxfYmFzZSArIENUUkxfU09GVF9SRVNFVCk7Cj4+Pj4gLQl2YWwgfD0gcmVzZXRfYml0 czsKPj4+PiAtCXdyaXRlbCh2YWwsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9TT0ZUX1JFU0VUKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9TT0ZUX1JFU0VU LAo+Pj4+ICsJCQkgICByZXNldF9iaXRzLCByZXNldF9iaXRzKTsKPj4+PiAgwqDCoH0KPj4+PiAg ICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0YXRpYyB2b2lkIGlt eDhtX2Nsa19lbmFibGUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSwgdTMyIGNsb2NrX2JpdHMpCj4+ Pj4gIMKgwqB7Cj4+Pj4gLQl1MzIgdmFsOwo+Pj4+IC0KPj4+PiAtCXZhbCA9IHJlYWRsKHZwdS0+ Y3RybF9iYXNlICsgQ1RSTF9DTE9DS19FTkFCTEUpOwo+Pj4+IC0JdmFsIHw9IGNsb2NrX2JpdHM7 Cj4+Pj4gLQl3cml0ZWwodmFsLCB2cHUtPmN0cmxfYmFzZSArIENUUkxfQ0xPQ0tfRU5BQkxFKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9DTE9DS19FTkFC TEUsCj4+Pj4gKwkJCSAgIGNsb2NrX2JpdHMsIGNsb2NrX2JpdHMpOwo+Pj4+ICDCoMKgfQo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgc3RhdGljIGludCBp bXg4bXFfcnVudGltZV9yZXN1bWUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSkKPj4+PiBAQCAtNjQs OSArNjMsOSBAQCBzdGF0aWMgaW50IGlteDhtcV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgaGFudHJv X2RldiAqdnB1KQo+Pj4+ICDCoMKgCWlteDhtX2Nsa19lbmFibGUodnB1LCBDTE9DS19HMSB8IENM T0NLX0cyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDC oAkvKiBTZXQgdmFsdWVzIG9mIHRoZSBmdXNlIHJlZ2lzdGVycyAqLwo+Pj4+IC0Jd3JpdGVsKDB4 ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMV9ERUNfRlVTRSk7Cj4+Pj4gLQl3cml0 ZWwoMHhmZmZmZmZmZiwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX0cxX1BQX0ZVU0UpOwo+Pj4+IC0J d3JpdGVsKDB4ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMl9ERUNfRlVTRSk7Cj4+ Pj4gKwlyZWdtYXBfd3JpdGUodnB1LT5jdHJsX2Jhc2UsIENUUkxfRzFfREVDX0ZVU0UsIDB4ZmZm ZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJMX0cxX1BQX0ZV U0UsIDB4ZmZmZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJM X0cyX0RFQ19GVVNFLCAweGZmZmZmZmZmKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4KPj4+PiAgwqDCoAljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZSh2cHUtPnZhcmlh bnQtPm51bV9jbG9ja3MsIHZwdS0+Y2xvY2tzKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiBAQCAtMTUwLDggKzE0OSwyMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg aW14OG1fdnB1X2cxX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+Pj4gICAgCj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBzdGF0aWMgaW50IGlteDhtcV92cHVfaHdf aW5pdChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1KQo+Pj4+ICDCoMKgewo+Pj4+IC0JdnB1LT5kZWNf YmFzZSA9IHZwdS0+cmVnX2Jhc2VzWzBdOwo+Pj4+IC0JdnB1LT5jdHJsX2Jhc2UgPSB2cHUtPnJl Z19iYXNlc1t2cHUtPnZhcmlhbnQtPm51bV9yZWdzIC0gMV07Cj4+Pj4gKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wID0gdnB1LT5kZXYtPm9mX25vZGU7Cj4+Pj4gKwo+Pj4+ICsJdnB1LT5jdHJsX2Jh c2UgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAibnhwLGlteDhtLXZwdS1j dHJsIik7Cj4+Pj4gKwlpZiAoSVNfRVJSKHZwdS0+Y3RybF9iYXNlKSkgewo+Pj4+ICsJCXN0cnVj dCByZXNvdXJjZSAqcmVzOwo+Pj4+ICsJCXZvaWQgX19pb21lbSAqY3RybDsKPj4+PiArCj4+Pj4g KwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZSh2cHUtPnBkZXYsIElPUkVTT1VS Q0VfTUVNLCAiY3RybCIpOwo+Pj4+ICsJCWN0cmwgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UodnB1 LT5kZXYsIHJlcyk7Cj4+Pj4gKwkJaWYgKElTX0VSUihjdHJsKSkKPj4+PiArCQkJcmV0dXJuIFBU Ul9FUlIoY3RybCk7Cj4+Pj4gKwo+Pj4+ICsJCXZwdS0+Y3RybF9iYXNlID0gZGV2bV9yZWdtYXBf aW5pdF9tbWlvKHZwdS0+ZGV2LCBjdHJsLCAmY3RybF9yZWdtYXBfY3RybCk7Cj4+Pj4gKwkJaWYg KElTX0VSUih2cHUtPmN0cmxfYmFzZSkpCj4+Pj4gKwkJCXJldHVybiBQVFJfRVJSKHZwdS0+Y3Ry bF9iYXNlKTsKPj4+PiArCX0KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4K Pj4+PiAgwqDCoAlyZXR1cm4gMDsKPj4+PiAgwqDCoH0KPj4+PiBAQCAtMTk4LDcgKzIxMSw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGFudHJvX2lycSBpbXg4bXFfaXJxc1tdID0gewo+Pj4+ICDC oMKgfTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgaW14OG1xX2Nsa19uYW1lc1tdID0geyAiZzEiLCAiZzIi LCAiYnVzIiB9Owo+Pj4+IC1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGlteDhtcV9yZWdfbmFt ZXNbXSA9IHsgImcxIiwgImcyIiwgImN0cmwiIH07Cj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgaW14OG1x X3ZwdV92YXJpYW50ID0gewo+Pj4+ICDCoMKgCS5kZWNfZm10cyA9IGlteDhtX3ZwdV9kZWNfZm10 cywKPj4+PiBAQCAtMjE1LDYgKzIyNyw0IEBAIGNvbnN0IHN0cnVjdCBoYW50cm9fdmFyaWFudCBp bXg4bXFfdnB1X3ZhcmlhbnQgPSB7Cj4+Pj4gIMKgwqAJLm51bV9pcnFzID0gQVJSQVlfU0laRShp bXg4bXFfaXJxcyksCj4+Pj4gIMKgwqAJLmNsa19uYW1lcyA9IGlteDhtcV9jbGtfbmFtZXMsCj4+ Pj4gIMKgwqAJLm51bV9jbG9ja3MgPSBBUlJBWV9TSVpFKGlteDhtcV9jbGtfbmFtZXMpLAo+Pj4+ IC0JLnJlZ19uYW1lcyA9IGlteDhtcV9yZWdfbmFtZXMsCj4+Pj4gLQkubnVtX3JlZ3MgPSBBUlJB WV9TSVpFKGlteDhtcV9yZWdfbmFtZXMpCj4+Pj4gIMKgwqB9Owo+Pj4KPgo+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWls aW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== 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=-15.3 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,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,USER_AGENT_SANE_1 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 5FAB8C433B4 for ; Tue, 20 Apr 2021 09:13:03 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 BC6F161363 for ; Tue, 20 Apr 2021 09:13:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BC6F161363 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.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=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=K+2aR2TRI8PRenV6B8I3tgLcF5AtZOiagGtWZflUEm8=; b=Xl1TX4K1TjIJNQQOdM520rbR4 N5UOXOslvFH350x6Mo22pZ1gpFjtLExNym4Ee//b86wakWOqbGOvFzZBhu4rwPg38TmWRxHbVhmPb zNsN/xXG1mKaJwI6MrGOiQucGvCiKMxeMsSQQkS9Syh4BePfyeGqN7zB9ZeQlZXMzTCMVSsDp0w4g De3eHH33t0sLA159FHDo4v4cPUboDUNWqDk5pupwD79AJBbcsqTevFxLTA4UmhQrPAUoUUseUph0J bcmOAPJk/NXyv/3YQUjn8hXxjpxT2+WASNMQoRObPY2s8tEZg/56rujqhFnxwd4hYWLpW9+1X1OJQ auxxtrBbg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lYmPB-00Bg5P-6r; Tue, 20 Apr 2021 09:10:49 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYmOl-00Bfzd-2Y; Tue, 20 Apr 2021 09:10:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=ZD97JqxKMrxJLl5m5soy5BJCP81W4AyZFRxNCX8qCW4=; b=WCnUYPSJc1wIzaBqK89JB/04OV 85bdfrQPNlnA3ocOqvx0StaNEzEGVQqEEqMuUSpgZP2VeAIdR4tP3xB4JydiEIPJxvdYFRHB4vO8I rYt98zXbGrmXmWLgN5+ZLSru4d4Z9YRMVJW5y3k/Op+g6EX0of13dg7XJ/vCmKgPv7fOH/WP5PUoq gdd0fwEOX+MJykbZ2/Vc7VA3s+PttkwEG2esmCTNWbdc6KbskpSJcEW4M5UxwPTbZKHEFJ4U/7yRc pN501R+Sk+tw/7KUoY5OpWSu9uG6xi1y3WGCVuaQ/k8Yzm3k0o68WZpGNDv/QKyQ/AXdTQWc467hk NTiC1idg==; Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lYmOe-00BxSP-9Y; Tue, 20 Apr 2021 09:10:21 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: benjamin.gaignard) with ESMTPSA id 34F941F4270E Subject: Re: [PATCH v9 03/13] media: hantro: Use syscon instead of 'ctrl' register To: Lucas Stach , ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, lee.jones@linaro.org, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, hverkuil-cisco@xs4all.nl, emil.l.velikov@gmail.com, "Peng Fan (OSS)" , Jacky Bai Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-imx@nxp.com, kernel@pengutronix.de, kernel@collabora.com, cphealy@gmail.com, linux-arm-kernel@lists.infradead.org References: <20210407073534.376722-1-benjamin.gaignard@collabora.com> <20210407073534.376722-4-benjamin.gaignard@collabora.com> <7bcbb787d82f21d42563d8fb7e3c2e7d40123932.camel@pengutronix.de> <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> From: Benjamin Gaignard Message-ID: <36008691-d075-203d-0cac-2a012773ea34@collabora.com> Date: Tue, 20 Apr 2021 11:10:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <529b61b1b1e6030c92a7944c4864246521b2ccdd.camel@pengutronix.de> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210420_021016_602255_0CBD608D X-CRM114-Status: GOOD ( 29.92 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CkxlIDE2LzA0LzIwMjEgw6AgMTc6MTQsIEx1Y2FzIFN0YWNoIGEgw6ljcml0wqA6Cj4gQW0gRnJl aXRhZywgZGVtIDE2LjA0LjIwMjEgdW0gMTU6MDggKzAyMDAgc2NocmllYiBCZW5qYW1pbiBHYWln bmFyZDoKPj4gTGUgMTYvMDQvMjAyMSDDoCAxMjo1NCwgTHVjYXMgU3RhY2ggYSDDqWNyaXTCoDoK Pj4+IEFtIE1pdHR3b2NoLCBkZW0gMDcuMDQuMjAyMSB1bSAwOTozNSArMDIwMCBzY2hyaWViIEJl bmphbWluIEdhaWduYXJkOgo+Pj4+IEluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2hhcmUgdGhlIGNv bnRyb2wgaGFyZHdhcmUgYmxvY2sgYmV0d2Vlbgo+Pj4+IFZQVXMgdXNlIGEgc3lzY29uIGluc3Rl YWQgYSBpb3JlbWFwIGl0IGluIHRoZSBkcml2ZXIuCj4+Pj4gVG8ga2VlcCB0aGUgY29tcGF0aWJp bGl0eSB3aXRoIG9sZGVyIERUIGlmICdueHAsaW14OG1xLXZwdS1jdHJsJwo+Pj4+IHBoYW5kbGUg aXMgbm90IGZvdW5kIGxvb2sgYXQgJ2N0cmwnIHJlZy1uYW1lLgo+Pj4+IFdpdGggdGhlIG1ldGhv ZCBpdCBiZWNvbWVzIHVzZWxlc3MgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgcmVnaXN0ZXIKPj4+PiBu YW1lcyBzbyByZW1vdmUgaXQuCj4+PiBTb3JyeSBmb3IgcHV0dGluZyBhIHNwb2tlIGluIHRoZSB3 aGVlbCBhZnRlciBtYW55IGl0ZXJhdGlvbnMgb2YgdGhlCj4+PiBzZXJpZXMuCj4+Pgo+Pj4gV2Ug anVzdCBkaXNjdXNzZWQgYSB3YXkgZm9yd2FyZCBvbiBob3cgdG8gaGFuZGxlIHRoZSBjbG9ja3Mg YW5kIHJlc2V0cwo+Pj4gcHJvdmlkZWQgYnkgdGhlIGJsa2N0bCBibG9jayBvbiBpLk1YOE1NIGFu ZCBsYXRlciBhbmQgaXQgc2VlbXMgdGhlcmUgaXMKPj4+IGEgY29uc2Vuc3VzIG9uIHRyeWluZyB0 byBwcm92aWRlIHZpcnR1YWwgcG93ZXIgZG9tYWlucyBmcm9tIGEgYmxrY3RsCj4+PiBkcml2ZXIs IGNvbnRyb2xsaW5nIGNsb2NrcyBhbmQgcmVzZXRzIGZvciB0aGUgZGV2aWNlcyBpbiB0aGUgcG93 ZXIKPj4+IGRvbWFpbi4gSSB3b3VsZCBsaWtlIHRvIGF2b2lkIGludHJvZHVjaW5nIHlldCBhbm90 aGVyIHdheSBvZiBoYW5kbGluZwo+Pj4gdGhlIGJsa2N0bCBhbmQgdGh1cyB3b3VsZCBsaWtlIHRv IGFsaWduIHRoZSBpLk1YOE1RIFZQVSBibGtjdGwgd2l0aAo+Pj4gd2hhdCB3ZSBhcmUgcGxhbm5p bmcgdG8gZG8gb24gdGhlIGxhdGVyIGNoaXAgZ2VuZXJhdGlvbnMuCj4+Pgo+Pj4gQ0MnaW5nIEph Y2t5IEJhaSBhbmQgUGVuZyBGYW4gZnJvbSBOWFAsIGFzIHRoZXkgd2VyZSBnb2luZyB0byBnaXZl IHRoaXMKPj4+IHZpcnR1YWwgcG93ZXIgZG9tYWluIHRoaW5nIGEgc2hvdC4KPj4gVGhhdCBjb3Vs ZCByZXBsYWNlIHRoZSAzIGZpcnN0IHBhdGNoZXMgYW5kIER0IHBhdGNoZSBvZiB0aGlzIHNlcmll cwo+PiBidXQgdGhhdCB3aWxsIG5vdCBpbXBhY3QgdGhlIGhldmMgcGFydCwgc28gSSB3b25kZXIg aWYgcHVyZSBoZXZjIHBhdGNoZXMKPj4gY291bGQgYmUgbWVyZ2VkIGFueXdheSA/Cj4+IFRoZXkg YXJlIHJldmlld2VkIGFuZCBkb24ndCBkZXBlbmQgb2YgaG93IHRoZSBjdHJsIGJsb2NrIGlzIG1h bmFnZWQuCj4gSSdtIG5vdCByZWFsbHkgaW4gYSBwb3NpdGlvbiB0byBnaXZlIGFueSBpbmZvcm1l ZCBvcGluaW9uIGFib3V0IHRoYXQKPiBodmVjIHBhdGNoZXMsIGFzIEkgb25seSBza2ltbWVkIHRo ZW0sIGJ1dCBJIGRvbid0IHNlZSBhbnkgcmVhc29uIHRvCj4gZGVsYXkgcGF0Y2hlcyAwNC0xMSBm cm9tIHRoaXMgc2VyaWVzIHVudGlsIHRoZSBpLk1YOE0gcGxhdGZvcm0gaXNzdWVzCj4gYXJlIHNv cnRlZC4gQUZBSUNTIHRob3NlIHRoaW5ncyBhcmUgdG90YWxseSBvcnRob2dvbmFsLgoKSGkgSGFu cywKV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcyBwcm9wb3NhbCB0byBzcGxpdCB0aGlzIHNl cmllcyA/CkdldCBoZXZjIHBhcnQgbWVyZ2VkIGNvdWxkIGFsbG93IG1lIHRvIGNvbnRpbnVlIHRv IGFkZCBmZWF0dXJlcwpsaWtlIHNjYWxpbmcgbGlzdHMsIGNvbXByZXNzZWQgcmVmZXJlbmNlIGJ1 ZmZlcnMgYW5kIDEwLWJpdCBzdXBwb3J0cy4KClJlZ2FyZHMsCkJlbmphbWluCgo+Cj4gUmVnYXJk cywKPiBMdWNhcwo+Cj4+PiBSZWdhcmRzLAo+Pj4gTHVjYXMKPj4+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4+ Pj4gUmV2aWV3ZWQtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+Cj4+ Pj4gLS0tCj4+Pj4gdmVyc2lvbiA5Ogo+Pj4+ICDCoMKgLSBDb3JyZWN0aW9ucyBpbiBjb21taXQg bWVzc2FnZQo+Pj4+Cj4+Pj4gdmVyc2lvbiA3Ogo+Pj4+ICDCoMKgLSBBZGQgUGhpbGlwcCByZXZp ZXdlZC1ieSB0YWcuCj4+Pj4gIMKgwqAtIENoYW5nZSBzeXNjb24gcGhhbmRsZSBuYW1lLgo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IHZlcnNpb24gNToKPj4+PiAg wqDCoC0gdXNlIHN5c2NvbiBpbnN0ZWFkIG9mIFZQVSByZXNldCBkcml2ZXIuCj4+Pj4gIMKgwqAt IGlmIERUIGRvZXNuJ3QgcHJvdmlkZSBzeXNjb24ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsdHkg YnkgdXNpbmcKPj4+PiAgwqDCoMKgwqAnY3RybCcgcmVnLW5hbWUuCj4+Pj4KPj4+PiAgwqDCoGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmggICAgICAgfCAgNSArLQo+Pj4+ICDC oMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYyB8IDUyICsrKysr KysrKysrKy0tLS0tLS0tLQo+Pj4+ICDCoMKgMiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9o YW50cm8uaAo+Pj4+IGluZGV4IDZjMWI4ODhhYmU3NS4uMzdiOWNlMDRiZDRlIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPj4+PiArKysgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4+Pj4gQEAgLTEzLDYgKzEzLDcg QEAKPj4+PiAgwqDCoCNkZWZpbmUgSEFOVFJPX0hfCj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51 eC92aWRlb2RldjIuaD4KPj4+PiAgwqDCoCNpbmNsdWRlIDxsaW51eC93YWl0Lmg+Cj4+Pj4gIMKg wqAjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+Pj4gQEAgLTE2Nyw3ICsxNjgsNyBAQCBoYW50cm9f dmRldl90b19mdW5jKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCj4+Pj4gIMKgwqDCoCogQHJl Z19iYXNlczoJCU1hcHBlZCBhZGRyZXNzZXMgb2YgVlBVIHJlZ2lzdGVycy4KPj4+PiAgwqDCoMKg KiBAZW5jX2Jhc2U6CQlNYXBwZWQgYWRkcmVzcyBvZiBWUFUgZW5jb2RlciByZWdpc3RlciBmb3Ig Y29udmVuaWVuY2UuCj4+Pj4gIMKgwqDCoCogQGRlY19iYXNlOgkJTWFwcGVkIGFkZHJlc3Mgb2Yg VlBVIGRlY29kZXIgcmVnaXN0ZXIgZm9yIGNvbnZlbmllbmNlLgo+Pj4+IC0gKiBAY3RybF9iYXNl OgkJTWFwcGVkIGFkZHJlc3Mgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gKyAqIEBjdHJsX2Jh c2U6CQlSZWdtYXAgb2YgVlBVIGNvbnRyb2wgYmxvY2suCj4+Pj4gIMKgwqDCoCogQHZwdV9tdXRl eDoJCU11dGV4IHRvIHN5bmNocm9uaXplIFY0TDIgY2FsbHMuCj4+Pj4gIMKgwqDCoCogQGlycWxv Y2s6CQlTcGlubG9jayB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gZGF0YSBzdHJ1Y3R1cmVzCj4+ Pj4gIMKgwqDCoCoJCQlzaGFyZWQgd2l0aCBpbnRlcnJ1cHQgaGFuZGxlcnMuCj4+Pj4gQEAgLTE4 Niw3ICsxODcsNyBAQCBzdHJ1Y3QgaGFudHJvX2RldiB7Cj4+Pj4gIMKgwqAJdm9pZCBfX2lvbWVt ICoqcmVnX2Jhc2VzOwo+Pj4+ICDCoMKgCXZvaWQgX19pb21lbSAqZW5jX2Jhc2U7Cj4+Pj4gIMKg wqAJdm9pZCBfX2lvbWVtICpkZWNfYmFzZTsKPj4+PiAtCXZvaWQgX19pb21lbSAqY3RybF9iYXNl Owo+Pj4+ICsJc3RydWN0IHJlZ21hcCAqY3RybF9iYXNlOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgCXN0cnVjdCBtdXRleCB2cHVfbXV0ZXg7CS8qIHZp ZGVvX2RldmljZSBsb2NrICovCj4+Pj4gIMKgwqAJc3BpbmxvY2tfdCBpcnFsb2NrOwo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jIGIv ZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9pbXg4bV92cHVfaHcuYwo+Pj4+IGluZGV4IGMy MjJkZTA3NWVmNC4uOGQwYzM0MjUyMzRiIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3LmMKPj4+PiArKysgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2lteDhtX3ZwdV9ody5jCj4+Pj4gQEAgLTcsNiArNyw3IEBACj4+Pj4gICAg Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgv Y2xrLmg+Cj4+Pj4gIMKgwqAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPj4+PiArI2luY2x1ZGUg PGxpbnV4L21mZC9zeXNjb24uaD4KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50cm8uaCIKPj4+PiAgwqDCoCNpbmNsdWRlICJoYW50 cm9fanBlZy5oIgo+Pj4+IEBAIC0yNCwzMCArMjUsMjggQEAKPj4+PiAgwqDCoCNkZWZpbmUgQ1RS TF9HMV9QUF9GVVNFCQkweDBjCj4+Pj4gIMKgwqAjZGVmaW5lIENUUkxfRzJfREVDX0ZVU0UJMHgx MAo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY3RybF9yZWdtYXBfY3RybCA9IHsKPj4+PiArCS5yZWdf Yml0cyA9IDMyLAo+Pj4+ICsJLnZhbF9iaXRzID0gMzIsCj4+Pj4gKwkucmVnX3N0cmlkZSA9IDB4 MTQsCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICDCoMKgc3RhdGljIHZvaWQgaW14OG1fc29mdF9yZXNl dChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1LCB1MzIgcmVzZXRfYml0cykKPj4+PiAgwqDCoHsKPj4+ PiAtCXUzMiB2YWw7Cj4+Pj4gLQo+Pj4+ICDCoMKgCS8qIEFzc2VydCAqLwo+Pj4+IC0JdmFsID0g cmVhZGwodnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRfUkVTRVQpOwo+Pj4+IC0JdmFsICY9IH5y ZXNldF9iaXRzOwo+Pj4+IC0Jd3JpdGVsKHZhbCwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX1NPRlRf UkVTRVQpOwo+Pj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHZwdS0+Y3RybF9iYXNlLCBDVFJMX1NP RlRfUkVTRVQsIHJlc2V0X2JpdHMsIDApOwo+Pj4+ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+ICDCoMKgCXVkZWxheSgyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoAkvKiBSZWxlYXNlICovCj4+Pj4gLQl2YWwgPSByZWFkbCh2 cHUtPmN0cmxfYmFzZSArIENUUkxfU09GVF9SRVNFVCk7Cj4+Pj4gLQl2YWwgfD0gcmVzZXRfYml0 czsKPj4+PiAtCXdyaXRlbCh2YWwsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9TT0ZUX1JFU0VUKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9TT0ZUX1JFU0VU LAo+Pj4+ICsJCQkgICByZXNldF9iaXRzLCByZXNldF9iaXRzKTsKPj4+PiAgwqDCoH0KPj4+PiAg ICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0YXRpYyB2b2lkIGlt eDhtX2Nsa19lbmFibGUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSwgdTMyIGNsb2NrX2JpdHMpCj4+ Pj4gIMKgwqB7Cj4+Pj4gLQl1MzIgdmFsOwo+Pj4+IC0KPj4+PiAtCXZhbCA9IHJlYWRsKHZwdS0+ Y3RybF9iYXNlICsgQ1RSTF9DTE9DS19FTkFCTEUpOwo+Pj4+IC0JdmFsIHw9IGNsb2NrX2JpdHM7 Cj4+Pj4gLQl3cml0ZWwodmFsLCB2cHUtPmN0cmxfYmFzZSArIENUUkxfQ0xPQ0tfRU5BQkxFKTsK Pj4+PiArCXJlZ21hcF91cGRhdGVfYml0cyh2cHUtPmN0cmxfYmFzZSwgQ1RSTF9DTE9DS19FTkFC TEUsCj4+Pj4gKwkJCSAgIGNsb2NrX2JpdHMsIGNsb2NrX2JpdHMpOwo+Pj4+ICDCoMKgfQo+Pj4+ ICAgIAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+ICDCoMKgc3RhdGljIGludCBp bXg4bXFfcnVudGltZV9yZXN1bWUoc3RydWN0IGhhbnRyb19kZXYgKnZwdSkKPj4+PiBAQCAtNjQs OSArNjMsOSBAQCBzdGF0aWMgaW50IGlteDhtcV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgaGFudHJv X2RldiAqdnB1KQo+Pj4+ICDCoMKgCWlteDhtX2Nsa19lbmFibGUodnB1LCBDTE9DS19HMSB8IENM T0NLX0cyKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDC oAkvKiBTZXQgdmFsdWVzIG9mIHRoZSBmdXNlIHJlZ2lzdGVycyAqLwo+Pj4+IC0Jd3JpdGVsKDB4 ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMV9ERUNfRlVTRSk7Cj4+Pj4gLQl3cml0 ZWwoMHhmZmZmZmZmZiwgdnB1LT5jdHJsX2Jhc2UgKyBDVFJMX0cxX1BQX0ZVU0UpOwo+Pj4+IC0J d3JpdGVsKDB4ZmZmZmZmZmYsIHZwdS0+Y3RybF9iYXNlICsgQ1RSTF9HMl9ERUNfRlVTRSk7Cj4+ Pj4gKwlyZWdtYXBfd3JpdGUodnB1LT5jdHJsX2Jhc2UsIENUUkxfRzFfREVDX0ZVU0UsIDB4ZmZm ZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJMX0cxX1BQX0ZV U0UsIDB4ZmZmZmZmZmYpOwo+Pj4+ICsJcmVnbWFwX3dyaXRlKHZwdS0+Y3RybF9iYXNlLCBDVFJM X0cyX0RFQ19GVVNFLCAweGZmZmZmZmZmKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4KPj4+PiAgwqDCoAljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZSh2cHUtPnZhcmlh bnQtPm51bV9jbG9ja3MsIHZwdS0+Y2xvY2tzKTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+PiBAQCAtMTUwLDggKzE0OSwyMiBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qg aW14OG1fdnB1X2cxX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4+Pj4gICAgCj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBzdGF0aWMgaW50IGlteDhtcV92cHVfaHdf aW5pdChzdHJ1Y3QgaGFudHJvX2RldiAqdnB1KQo+Pj4+ICDCoMKgewo+Pj4+IC0JdnB1LT5kZWNf YmFzZSA9IHZwdS0+cmVnX2Jhc2VzWzBdOwo+Pj4+IC0JdnB1LT5jdHJsX2Jhc2UgPSB2cHUtPnJl Z19iYXNlc1t2cHUtPnZhcmlhbnQtPm51bV9yZWdzIC0gMV07Cj4+Pj4gKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wID0gdnB1LT5kZXYtPm9mX25vZGU7Cj4+Pj4gKwo+Pj4+ICsJdnB1LT5jdHJsX2Jh c2UgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAibnhwLGlteDhtLXZwdS1j dHJsIik7Cj4+Pj4gKwlpZiAoSVNfRVJSKHZwdS0+Y3RybF9iYXNlKSkgewo+Pj4+ICsJCXN0cnVj dCByZXNvdXJjZSAqcmVzOwo+Pj4+ICsJCXZvaWQgX19pb21lbSAqY3RybDsKPj4+PiArCj4+Pj4g KwkJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZSh2cHUtPnBkZXYsIElPUkVTT1VS Q0VfTUVNLCAiY3RybCIpOwo+Pj4+ICsJCWN0cmwgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UodnB1 LT5kZXYsIHJlcyk7Cj4+Pj4gKwkJaWYgKElTX0VSUihjdHJsKSkKPj4+PiArCQkJcmV0dXJuIFBU Ul9FUlIoY3RybCk7Cj4+Pj4gKwo+Pj4+ICsJCXZwdS0+Y3RybF9iYXNlID0gZGV2bV9yZWdtYXBf aW5pdF9tbWlvKHZwdS0+ZGV2LCBjdHJsLCAmY3RybF9yZWdtYXBfY3RybCk7Cj4+Pj4gKwkJaWYg KElTX0VSUih2cHUtPmN0cmxfYmFzZSkpCj4+Pj4gKwkJCXJldHVybiBQVFJfRVJSKHZwdS0+Y3Ry bF9iYXNlKTsKPj4+PiArCX0KPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4K Pj4+PiAgwqDCoAlyZXR1cm4gMDsKPj4+PiAgwqDCoH0KPj4+PiBAQCAtMTk4LDcgKzIxMSw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaGFudHJvX2lycSBpbXg4bXFfaXJxc1tdID0gewo+Pj4+ICDC oMKgfTsKPj4+PiAgICAKPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiAgwqDCoHN0 YXRpYyBjb25zdCBjaGFyICogY29uc3QgaW14OG1xX2Nsa19uYW1lc1tdID0geyAiZzEiLCAiZzIi LCAiYnVzIiB9Owo+Pj4+IC1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGlteDhtcV9yZWdfbmFt ZXNbXSA9IHsgImcxIiwgImcyIiwgImN0cmwiIH07Cj4+Pj4gICAgCj4+Pj4KPj4+Pgo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gIMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgaW14OG1x X3ZwdV92YXJpYW50ID0gewo+Pj4+ICDCoMKgCS5kZWNfZm10cyA9IGlteDhtX3ZwdV9kZWNfZm10 cywKPj4+PiBAQCAtMjE1LDYgKzIyNyw0IEBAIGNvbnN0IHN0cnVjdCBoYW50cm9fdmFyaWFudCBp bXg4bXFfdnB1X3ZhcmlhbnQgPSB7Cj4+Pj4gIMKgwqAJLm51bV9pcnFzID0gQVJSQVlfU0laRShp bXg4bXFfaXJxcyksCj4+Pj4gIMKgwqAJLmNsa19uYW1lcyA9IGlteDhtcV9jbGtfbmFtZXMsCj4+ Pj4gIMKgwqAJLm51bV9jbG9ja3MgPSBBUlJBWV9TSVpFKGlteDhtcV9jbGtfbmFtZXMpLAo+Pj4+ IC0JLnJlZ19uYW1lcyA9IGlteDhtcV9yZWdfbmFtZXMsCj4+Pj4gLQkubnVtX3JlZ3MgPSBBUlJB WV9TSVpFKGlteDhtcV9yZWdfbmFtZXMpCj4+Pj4gIMKgwqB9Owo+Pj4KPgo+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1h aWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==