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=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 31265C433DF for ; Wed, 24 Jun 2020 08:04:13 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E62F920DD4 for ; Wed, 24 Jun 2020 08:04:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="T8Dlj9uc"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="KJ0Dep9U" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E62F920DD4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date: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=+v0v72F+oI2Hw07KcV/BLNxlLFc0jOiTL4/oXm0nxkg=; b=T8Dlj9uc7WUx9r6Y9IniUBq/b Ofpzojti1/Mdku1hEc27KxjG3ypBcBjywT3ivT993aN23UPfJ6uyW3SASFoC6cNarBI6r1MauhO7S lnKmwSx2tvoMUWVJMMWuzLoZHoINhwRFiVsWOA2AGg3f0kBirBJmIzG1t06/sbhp8mpTjJkfxPWp2 dKdF/Aegm5yh+ftiRQzmKBjSNASd5Eh/m+71SRRT2DxeicON4vKhE7IQbgp4pegg97f993I7NdI3X dxD2bzp1ps6hMy3+dfOCXX8ws566eCsSPUf3I16NELPilGJGeGK3TeoM7K9gC8dhetMzUpUw3sSFp FSeYc4Q3g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jo0Nw-0001WL-09; Wed, 24 Jun 2020 08:03:56 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jo0Ns-0001Th-L6 for linux-mediatek@lists.infradead.org; Wed, 24 Jun 2020 08:03:54 +0000 X-UUID: a282d00031184a87b80ed4ccd19d1bb3-20200623 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=q5RV4Z7+PpfMaiYjUfL+P3CBqF7lb9i8LRAB83bFUfU=; b=KJ0Dep9UG9UKKReCU+6NPWROnJmqQrmeiqPjWJkS5DIJo9nJy2PaBFjDzaYndjSWRWWg52qDd4MXapj8+UskYBQbXhXnYNL5pJxYcuF62XY7sAbzKPWC1/a+jTdgR1FmyEXIUdq4QadZfcHJGwZzxs6S7IIOZCwH7E/DfBxPzKk=; X-UUID: a282d00031184a87b80ed4ccd19d1bb3-20200623 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1818020734; Tue, 23 Jun 2020 23:56:28 -0800 Received: from MTKMBS01N1.mediatek.inc (172.21.101.68) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 24 Jun 2020 00:56:27 -0700 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 24 Jun 2020 15:56:20 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 24 Jun 2020 15:56:20 +0800 Message-ID: <1592985383.10732.1.camel@mtksdaap41> Subject: Re: [PATCH 02/10] media: mtk-vcodec: add SCP firmware ops From: Tiffany Lin To: Alexandre Courbot Date: Wed, 24 Jun 2020 15:56:23 +0800 In-Reply-To: References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-3-acourbot@chromium.org> <1591613234.18435.8.camel@mtksdaap41> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrew-CT Chen , Maoguang Meng , Rui Wang , Yunfei Dong , LKML , "moderated list:ARM/Mediatek SoC support" , Pi-Hsun Shih , Linux Media Mailing List Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Tue, 2020-06-16 at 22:17 +0900, Alexandre Courbot wrote: > On Mon, Jun 8, 2020 at 7:47 PM Tiffany Lin wrote: > > > > On Wed, 2020-05-20 at 17:27 +0900, Alexandre Courbot wrote: > > > From: Yunfei Dong > > > > > > Add support for communicating with the SCP firmware, which will be used > > > by MT8183. > > > Acked-by: Tiffany Lin > > > Signed-off-by: Yunfei Dong > > > [acourbot: refactor, cleanup and split] > > > Co-developed-by: Alexandre Courbot > > > Signed-off-by: Alexandre Courbot > > > --- > > > drivers/media/platform/Kconfig | 2 + > > > .../platform/mtk-vcodec/mtk_vcodec_dec_drv.c | 3 + > > > .../platform/mtk-vcodec/mtk_vcodec_enc_drv.c | 3 + > > > .../media/platform/mtk-vcodec/mtk_vcodec_fw.c | 56 +++++++++++++++++++ > > > .../media/platform/mtk-vcodec/mtk_vcodec_fw.h | 2 + > > > 5 files changed, 66 insertions(+) > > > > > > diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig > > > index c57ee78fa99d..9b11dd6b1ef3 100644 > > > --- a/drivers/media/platform/Kconfig > > > +++ b/drivers/media/platform/Kconfig > > > @@ -256,6 +256,8 @@ config VIDEO_MEDIATEK_VCODEC > > > select VIDEOBUF2_DMA_CONTIG > > > select V4L2_MEM2MEM_DEV > > > select VIDEO_MEDIATEK_VPU > > > + select MTK_SCP > > > + default n > > > help > > > Mediatek video codec driver provides HW capability to > > > encode and decode in a range of video formats > > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c > > > index 4f07a5fcce7f..5b5765b98e57 100644 > > > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c > > > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c > > > @@ -225,6 +225,9 @@ static int mtk_vcodec_probe(struct platform_device *pdev) > > > if (!of_property_read_u32(pdev->dev.of_node, "mediatek,vpu", > > > &rproc_phandle)) { > > > fw_type = VPU; > > > + } else if (!of_property_read_u32(pdev->dev.of_node, "mediatek,scp", > > > + &rproc_phandle)) { > > > + fw_type = SCP; > > > } else { > > > mtk_v4l2_err("Could not get vdec IPI device"); > > > return -ENODEV; > > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > > > index 4340ea10afd0..42530cd01a30 100644 > > > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > > > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_drv.c > > > @@ -233,6 +233,9 @@ static int mtk_vcodec_probe(struct platform_device *pdev) > > > if (!of_property_read_u32(pdev->dev.of_node, "mediatek,vpu", > > > &rproc_phandle)) { > > > fw_type = VPU; > > > + } else if (!of_property_read_u32(pdev->dev.of_node, "mediatek,scp", > > > + &rproc_phandle)) { > > > + fw_type = SCP; > > > } else { > > > mtk_v4l2_err("Could not get venc IPI device"); > > > return -ENODEV; > > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.c > > > index 967bb100a990..f2a62ea62fc6 100644 > > > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.c > > > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.c > > > @@ -19,6 +19,7 @@ struct mtk_vcodec_fw { > > > enum mtk_vcodec_fw_type type; > > > const struct mtk_vcodec_fw_ops *ops; > > > struct platform_device *pdev; > > > + struct mtk_scp *scp; > > > }; > > > > > > static int mtk_vcodec_vpu_load_firmware(struct mtk_vcodec_fw *fw) > > > @@ -71,6 +72,48 @@ static const struct mtk_vcodec_fw_ops mtk_vcodec_vpu_msg = { > > > .ipi_send = mtk_vcodec_vpu_ipi_send, > > > }; > > > > > > +static int mtk_vcodec_scp_load_firmware(struct mtk_vcodec_fw *fw) > > > +{ > > > + return rproc_boot(scp_get_rproc(fw->scp)); > > > > > > Does rproc_boot and scp_get_rproc depend on the other kernel module? > > where are they defineded? > > rproc_boot() is part of the remoteproc subsystem. scp_get_rproc() is > part of the mtk_scp driver, which is present upstream. This patch also > adds a dependency on MTK_SCP in Kconfig, which ensures both functions > are available. > > > > > > +} > > > + > > > +static unsigned int mtk_vcodec_scp_get_vdec_capa(struct mtk_vcodec_fw *fw) > > > +{ > > > + return scp_get_vdec_hw_capa(fw->scp); > > > +} > > > + > > > +static unsigned int mtk_vcodec_scp_get_venc_capa(struct mtk_vcodec_fw *fw) > > > +{ > > > + return scp_get_venc_hw_capa(fw->scp); > > > +} > > > + > > > +static void *mtk_vcodec_vpu_scp_dm_addr(struct mtk_vcodec_fw *fw, > > > + u32 dtcm_dmem_addr) > > > +{ > > > + return scp_mapping_dm_addr(fw->scp, dtcm_dmem_addr); > > > +} > > > + > > > +static int mtk_vcodec_scp_set_ipi_register(struct mtk_vcodec_fw *fw, int id, > > > + mtk_vcodec_ipi_handler handler, const char *name, void *priv) > > > +{ > > > + return scp_ipi_register(fw->scp, id, handler, priv); > > > +} > > > + > > > +static int mtk_vcodec_scp_ipi_send(struct mtk_vcodec_fw *fw, int id, void *buf, > > > + unsigned int len, unsigned int wait) > > > +{ > > > + return scp_ipi_send(fw->scp, id, buf, len, wait); > > > +} > > > + > > > +static const struct mtk_vcodec_fw_ops mtk_vcodec_rproc_msg = { > > > + .load_firmware = mtk_vcodec_scp_load_firmware, > > > + .get_vdec_capa = mtk_vcodec_scp_get_vdec_capa, > > > + .get_venc_capa = mtk_vcodec_scp_get_venc_capa, > > > + .map_dm_addr = mtk_vcodec_vpu_scp_dm_addr, > > > + .ipi_register = mtk_vcodec_scp_set_ipi_register, > > > + .ipi_send = mtk_vcodec_scp_ipi_send, > > > +}; > > > + > > > static void mtk_vcodec_reset_handler(void *priv) > > > { > > > struct mtk_vcodec_dev *dev = priv; > > > @@ -94,6 +137,7 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev, > > > const struct mtk_vcodec_fw_ops *ops; > > > struct mtk_vcodec_fw *fw; > > > struct platform_device *fw_pdev = NULL; > > > + struct mtk_scp *scp = NULL; > > > > > > switch (type) { > > > case VPU: > > > @@ -106,6 +150,14 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev, > > > vpu_wdt_reg_handler(fw_pdev, mtk_vcodec_reset_handler, > > > dev, rst_id); > > > break; > > > + case SCP: > > > + ops = &mtk_vcodec_rproc_msg; > > > + scp = scp_get(dev->plat_dev); > > > + if (!scp) { > > > + mtk_v4l2_err("could not get vdec scp handle"); > > > + return ERR_PTR(-EPROBE_DEFER); > > > + } > > > + break; > > > default: > > > mtk_v4l2_err("invalid vcodec fw type"); > > > return ERR_PTR(-EINVAL); > > > @@ -118,6 +170,7 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev, > > > fw->type = type; > > > fw->ops = ops; > > > fw->pdev = fw_pdev; > > > + fw->scp = scp; > > > > > > return fw; > > > } > > > @@ -129,6 +182,9 @@ void mtk_vcodec_fw_release(struct mtk_vcodec_fw *fw) > > > case VPU: > > > put_device(&fw->pdev->dev); > > > break; > > > + case SCP: > > > + scp_put(fw->scp); > > > + break; > > > } > > > } > > > EXPORT_SYMBOL_GPL(mtk_vcodec_fw_release); > > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.h > > > index ff25b0c19f74..ced1b6a10e07 100644 > > > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.h > > > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_fw.h > > > @@ -4,6 +4,7 @@ > > > #define _MTK_VCODEC_FW_H_ > > > > > > #include > > > +#include > > > > > > #include "../mtk-vpu/mtk_vpu.h" > > > > > > @@ -11,6 +12,7 @@ struct mtk_vcodec_dev; > > > > > > enum mtk_vcodec_fw_type { > > > VPU, > > > + SCP, > > > }; > > > > > > struct mtk_vcodec_fw; > > _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 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 8150BC433DF for ; Wed, 24 Jun 2020 07:56:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5944B20874 for ; Wed, 24 Jun 2020 07:56:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="KJ0Dep9U" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390153AbgFXH4k (ORCPT ); Wed, 24 Jun 2020 03:56:40 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:47959 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2387606AbgFXH4j (ORCPT ); Wed, 24 Jun 2020 03:56:39 -0400 X-UUID: 735342cd7e9c4072b23ed4030abdd913-20200624 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=q5RV4Z7+PpfMaiYjUfL+P3CBqF7lb9i8LRAB83bFUfU=; b=KJ0Dep9UG9UKKReCU+6NPWROnJmqQrmeiqPjWJkS5DIJo9nJy2PaBFjDzaYndjSWRWWg52qDd4MXapj8+UskYBQbXhXnYNL5pJxYcuF62XY7sAbzKPWC1/a+jTdgR1FmyEXIUdq4QadZfcHJGwZzxs6S7IIOZCwH7E/DfBxPzKk=; X-UUID: 735342cd7e9c4072b23ed4030abdd913-20200624 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1055401453; Wed, 24 Jun 2020 15:56:30 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 24 Jun 2020 15:56:20 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 24 Jun 2020 15:56:20 +0800 Message-ID: <1592985383.10732.1.camel@mtksdaap41> Subject: Re: [PATCH 02/10] media: mtk-vcodec: add SCP firmware ops From: Tiffany Lin To: Alexandre Courbot CC: Andrew-CT Chen , Rui Wang , Yunfei Dong , "Pi-Hsun Shih" , Maoguang Meng , Linux Media Mailing List , "moderated list:ARM/Mediatek SoC support" , LKML Date: Wed, 24 Jun 2020 15:56:23 +0800 In-Reply-To: References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-3-acourbot@chromium.org> <1591613234.18435.8.camel@mtksdaap41> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org T24gVHVlLCAyMDIwLTA2LTE2IGF0IDIyOjE3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gT24gTW9uLCBKdW4gOCwgMjAyMCBhdCA3OjQ3IFBNIFRpZmZhbnkgTGluIDx0aWZmYW55 LmxpbkBtZWRpYXRlay5jb20+IHdyb3RlOg0KPiA+DQo+ID4gT24gV2VkLCAyMDIwLTA1LTIwIGF0 IDE3OjI3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90ZToNCj4gPiA+IEZyb206IFl1bmZl aSBEb25nIDx5dW5mZWkuZG9uZ0BtZWRpYXRlay5jb20+DQo+ID4gPg0KPiA+ID4gQWRkIHN1cHBv cnQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgU0NQIGZpcm13YXJlLCB3aGljaCB3aWxsIGJl IHVzZWQNCj4gPiA+IGJ5IE1UODE4My4NCj4gPiA+DQoNCg0KQWNrZWQtYnk6IFRpZmZhbnkgTGlu IDx0aWZmYW55LmxpbkBtZWRpYXRlay5jb20+DQoNCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFl1bmZl aSBEb25nIDx5dW5mZWkuZG9uZ0BtZWRpYXRlay5jb20+DQo+ID4gPiBbYWNvdXJib3Q6IHJlZmFj dG9yLCBjbGVhbnVwIGFuZCBzcGxpdF0NCj4gPiA+IENvLWRldmVsb3BlZC1ieTogQWxleGFuZHJl IENvdXJib3QgPGFjb3VyYm90QGNocm9taXVtLm9yZz4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEFs ZXhhbmRyZSBDb3VyYm90IDxhY291cmJvdEBjaHJvbWl1bS5vcmc+DQo+ID4gPiAtLS0NCj4gPiA+ ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcgICAgICAgICAgICAgICAgfCAgMiArDQo+ ID4gPiAgLi4uL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19kZWNfZHJ2LmMgIHwgIDMg Kw0KPiA+ID4gIC4uLi9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZW5jX2Rydi5jICB8 ICAzICsNCj4gPiA+ICAuLi4vbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3 LmMgfCA1NiArKysrKysrKysrKysrKysrKysrDQo+ID4gPiAgLi4uL21lZGlhL3BsYXRmb3JtL210 ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5oIHwgIDIgKw0KPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwg NjYgaW5zZXJ0aW9ucygrKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcNCj4gPiA+ IGluZGV4IGM1N2VlNzhmYTk5ZC4uOWIxMWRkNmIxZWYzIDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnDQo+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL0tjb25maWcNCj4gPiA+IEBAIC0yNTYsNiArMjU2LDggQEAgY29uZmlnIFZJREVPX01F RElBVEVLX1ZDT0RFQw0KPiA+ID4gICAgICAgc2VsZWN0IFZJREVPQlVGMl9ETUFfQ09OVElHDQo+ ID4gPiAgICAgICBzZWxlY3QgVjRMMl9NRU0yTUVNX0RFVg0KPiA+ID4gICAgICAgc2VsZWN0IFZJ REVPX01FRElBVEVLX1ZQVQ0KPiA+ID4gKyAgICAgc2VsZWN0IE1US19TQ1ANCj4gPiA+ICsgICAg IGRlZmF1bHQgbg0KPiA+ID4gICAgICAgaGVscA0KPiA+ID4gICAgICAgICAgIE1lZGlhdGVrIHZp ZGVvIGNvZGVjIGRyaXZlciBwcm92aWRlcyBIVyBjYXBhYmlsaXR5IHRvDQo+ID4gPiAgICAgICAg ICAgZW5jb2RlIGFuZCBkZWNvZGUgaW4gYSByYW5nZSBvZiB2aWRlbyBmb3JtYXRzDQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZGVjX2Rydi5jIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZGVjX2Rydi5jDQo+ID4gPiBpbmRleCA0ZjA3YTVmY2NlN2YuLjViNTc2NWI5OGU1NyAxMDA2NDQN Cj4gPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVj X2RlY19kcnYuYw0KPiA+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVj L210a192Y29kZWNfZGVjX2Rydi5jDQo+ID4gPiBAQCAtMjI1LDYgKzIyNSw5IEBAIHN0YXRpYyBp bnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ID4g ICAgICAgaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwZGV2LT5kZXYub2Zfbm9kZSwgIm1lZGlh dGVrLHZwdSIsDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycHJvY19w aGFuZGxlKSkgew0KPiA+ID4gICAgICAgICAgICAgICBmd190eXBlID0gVlBVOw0KPiA+ID4gKyAg ICAgfSBlbHNlIGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0+ZGV2Lm9mX25vZGUsICJt ZWRpYXRlayxzY3AiLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ID4gPiArICAgICAgICAgICAgIGZ3X3R5cGUgPSBTQ1A7 DQo+ID4gPiAgICAgICB9IGVsc2Ugew0KPiA+ID4gICAgICAgICAgICAgICBtdGtfdjRsMl9lcnIo IkNvdWxkIG5vdCBnZXQgdmRlYyBJUEkgZGV2aWNlIik7DQo+ID4gPiAgICAgICAgICAgICAgIHJl dHVybiAtRU5PREVWOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19kcnYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v bXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19kcnYuYw0KPiA+ID4gaW5kZXggNDM0MGVhMTBhZmQw Li40MjUzMGNkMDFhMzAgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2VuY19kcnYuYw0KPiA+ID4gQEAgLTIz Myw2ICsyMzMsOSBAQCBzdGF0aWMgaW50IG10a192Y29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikNCj4gPiA+ICAgICAgIGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRl di0+ZGV2Lm9mX25vZGUsICJtZWRpYXRlayx2cHUiLA0KPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmcnByb2NfcGhhbmRsZSkpIHsNCj4gPiA+ICAgICAgICAgICAgICAgZndf dHlwZSA9IFZQVTsNCj4gPiA+ICsgICAgIH0gZWxzZSBpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMy KHBkZXYtPmRldi5vZl9ub2RlLCAibWVkaWF0ZWssc2NwIiwNCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZycHJvY19waGFuZGxlKSkgew0KPiA+ID4gKyAgICAg ICAgICAgICBmd190eXBlID0gU0NQOw0KPiA+ID4gICAgICAgfSBlbHNlIHsNCj4gPiA+ICAgICAg ICAgICAgICAgbXRrX3Y0bDJfZXJyKCJDb3VsZCBub3QgZ2V0IHZlbmMgSVBJIGRldmljZSIpOw0K PiA+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZncuYw0KPiA+ID4gaW5kZXgg OTY3YmIxMDBhOTkwLi5mMmE2MmVhNjJmYzYgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jDQo+ID4gPiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jDQo+ID4gPiBAQCAt MTksNiArMTksNyBAQCBzdHJ1Y3QgbXRrX3Zjb2RlY19mdyB7DQo+ID4gPiAgICAgICBlbnVtIG10 a192Y29kZWNfZndfdHlwZSB0eXBlOw0KPiA+ID4gICAgICAgY29uc3Qgc3RydWN0IG10a192Y29k ZWNfZndfb3BzICpvcHM7DQo+ID4gPiAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 Ow0KPiA+ID4gKyAgICAgc3RydWN0IG10a19zY3AgKnNjcDsNCj4gPiA+ICB9Ow0KPiA+ID4NCj4g PiA+ICBzdGF0aWMgaW50IG10a192Y29kZWNfdnB1X2xvYWRfZmlybXdhcmUoc3RydWN0IG10a192 Y29kZWNfZncgKmZ3KQ0KPiA+ID4gQEAgLTcxLDYgKzcyLDQ4IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgbXRrX3Zjb2RlY19md19vcHMgbXRrX3Zjb2RlY192cHVfbXNnID0gew0KPiA+ID4gICAgICAg LmlwaV9zZW5kID0gbXRrX3Zjb2RlY192cHVfaXBpX3NlbmQsDQo+ID4gPiAgfTsNCj4gPiA+DQo+ ID4gPiArc3RhdGljIGludCBtdGtfdmNvZGVjX3NjcF9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdGtf dmNvZGVjX2Z3ICpmdykNCj4gPiA+ICt7DQo+ID4gPiArICAgICByZXR1cm4gcnByb2NfYm9vdChz Y3BfZ2V0X3Jwcm9jKGZ3LT5zY3ApKTsNCj4gPg0KPiA+DQo+ID4gRG9lcyBycHJvY19ib290IGFu ZCBzY3BfZ2V0X3Jwcm9jIGRlcGVuZCBvbiB0aGUgb3RoZXIga2VybmVsIG1vZHVsZT8NCj4gPiB3 aGVyZSBhcmUgdGhleSBkZWZpbmVkZWQ/DQo+IA0KPiBycHJvY19ib290KCkgaXMgcGFydCBvZiB0 aGUgcmVtb3RlcHJvYyBzdWJzeXN0ZW0uIHNjcF9nZXRfcnByb2MoKSBpcw0KPiBwYXJ0IG9mIHRo ZSBtdGtfc2NwIGRyaXZlciwgd2hpY2ggaXMgcHJlc2VudCB1cHN0cmVhbS4gVGhpcyBwYXRjaCBh bHNvDQo+IGFkZHMgYSBkZXBlbmRlbmN5IG9uIE1US19TQ1AgaW4gS2NvbmZpZywgd2hpY2ggZW5z dXJlcyBib3RoIGZ1bmN0aW9ucw0KPiBhcmUgYXZhaWxhYmxlLg0KPiANCj4gPg0KPiA+ID4gK30N Cj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a192Y29kZWNfc2NwX2dldF92 ZGVjX2NhcGEoc3RydWN0IG10a192Y29kZWNfZncgKmZ3KQ0KPiA+ID4gK3sNCj4gPiA+ICsgICAg IHJldHVybiBzY3BfZ2V0X3ZkZWNfaHdfY2FwYShmdy0+c2NwKTsNCj4gPiA+ICt9DQo+ID4gPiAr DQo+ID4gPiArc3RhdGljIHVuc2lnbmVkIGludCBtdGtfdmNvZGVjX3NjcF9nZXRfdmVuY19jYXBh KHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdykNCj4gPiA+ICt7DQo+ID4gPiArICAgICByZXR1cm4g c2NwX2dldF92ZW5jX2h3X2NhcGEoZnctPnNjcCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g K3N0YXRpYyB2b2lkICptdGtfdmNvZGVjX3ZwdV9zY3BfZG1fYWRkcihzdHJ1Y3QgbXRrX3Zjb2Rl Y19mdyAqZncsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUz MiBkdGNtX2RtZW1fYWRkcikNCj4gPiA+ICt7DQo+ID4gPiArICAgICByZXR1cm4gc2NwX21hcHBp bmdfZG1fYWRkcihmdy0+c2NwLCBkdGNtX2RtZW1fYWRkcik7DQo+ID4gPiArfQ0KPiA+ID4gKw0K PiA+ID4gK3N0YXRpYyBpbnQgbXRrX3Zjb2RlY19zY3Bfc2V0X2lwaV9yZWdpc3RlcihzdHJ1Y3Qg bXRrX3Zjb2RlY19mdyAqZncsIGludCBpZCwNCj4gPiA+ICsgICAgICAgICAgICAgbXRrX3Zjb2Rl Y19pcGlfaGFuZGxlciBoYW5kbGVyLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICpwcml2KQ0KPiA+ ID4gK3sNCj4gPiA+ICsgICAgIHJldHVybiBzY3BfaXBpX3JlZ2lzdGVyKGZ3LT5zY3AsIGlkLCBo YW5kbGVyLCBwcml2KTsNCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIGludCBtdGtf dmNvZGVjX3NjcF9pcGlfc2VuZChzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncsIGludCBpZCwgdm9p ZCAqYnVmLA0KPiA+ID4gKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBp bnQgd2FpdCkNCj4gPiA+ICt7DQo+ID4gPiArICAgICByZXR1cm4gc2NwX2lwaV9zZW5kKGZ3LT5z Y3AsIGlkLCBidWYsIGxlbiwgd2FpdCk7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbXRrX3Zjb2RlY19md19vcHMgbXRrX3Zjb2RlY19ycHJvY19tc2cgPSB7 DQo+ID4gPiArICAgICAubG9hZF9maXJtd2FyZSA9IG10a192Y29kZWNfc2NwX2xvYWRfZmlybXdh cmUsDQo+ID4gPiArICAgICAuZ2V0X3ZkZWNfY2FwYSA9IG10a192Y29kZWNfc2NwX2dldF92ZGVj X2NhcGEsDQo+ID4gPiArICAgICAuZ2V0X3ZlbmNfY2FwYSA9IG10a192Y29kZWNfc2NwX2dldF92 ZW5jX2NhcGEsDQo+ID4gPiArICAgICAubWFwX2RtX2FkZHIgPSBtdGtfdmNvZGVjX3ZwdV9zY3Bf ZG1fYWRkciwNCj4gPiA+ICsgICAgIC5pcGlfcmVnaXN0ZXIgPSBtdGtfdmNvZGVjX3NjcF9zZXRf aXBpX3JlZ2lzdGVyLA0KPiA+ID4gKyAgICAgLmlwaV9zZW5kID0gbXRrX3Zjb2RlY19zY3BfaXBp X3NlbmQsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICBzdGF0aWMgdm9pZCBtdGtfdmNvZGVj X3Jlc2V0X2hhbmRsZXIodm9pZCAqcHJpdikNCj4gPiA+ICB7DQo+ID4gPiAgICAgICBzdHJ1Y3Qg bXRrX3Zjb2RlY19kZXYgKmRldiA9IHByaXY7DQo+ID4gPiBAQCAtOTQsNiArMTM3LDcgQEAgc3Ry dWN0IG10a192Y29kZWNfZncgKm10a192Y29kZWNfZndfc2VsZWN0KHN0cnVjdCBtdGtfdmNvZGVj X2RldiAqZGV2LA0KPiA+ID4gICAgICAgY29uc3Qgc3RydWN0IG10a192Y29kZWNfZndfb3BzICpv cHM7DQo+ID4gPiAgICAgICBzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZnc7DQo+ID4gPiAgICAgICBz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpmd19wZGV2ID0gTlVMTDsNCj4gPiA+ICsgICAgIHN0cnVj dCBtdGtfc2NwICpzY3AgPSBOVUxMOw0KPiA+ID4NCj4gPiA+ICAgICAgIHN3aXRjaCAodHlwZSkg ew0KPiA+ID4gICAgICAgY2FzZSBWUFU6DQo+ID4gPiBAQCAtMTA2LDYgKzE1MCwxNCBAQCBzdHJ1 Y3QgbXRrX3Zjb2RlY19mdyAqbXRrX3Zjb2RlY19md19zZWxlY3Qoc3RydWN0IG10a192Y29kZWNf ZGV2ICpkZXYsDQo+ID4gPiAgICAgICAgICAgICAgIHZwdV93ZHRfcmVnX2hhbmRsZXIoZndfcGRl diwgbXRrX3Zjb2RlY19yZXNldF9oYW5kbGVyLA0KPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRldiwgcnN0X2lkKTsNCj4gPiA+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gPiArICAgICBjYXNlIFNDUDoNCj4gPiA+ICsgICAgICAgICAgICAgb3BzID0gJm10a192Y29k ZWNfcnByb2NfbXNnOw0KPiA+ID4gKyAgICAgICAgICAgICBzY3AgPSBzY3BfZ2V0KGRldi0+cGxh dF9kZXYpOw0KPiA+ID4gKyAgICAgICAgICAgICBpZiAoIXNjcCkgew0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIG10a192NGwyX2VycigiY291bGQgbm90IGdldCB2ZGVjIHNjcCBoYW5kbGUi KTsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRVBST0JFX0RF RkVSKTsNCj4gPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgICAgICBicmVhazsN Cj4gPiA+ICAgICAgIGRlZmF1bHQ6DQo+ID4gPiAgICAgICAgICAgICAgIG10a192NGwyX2Vycigi aW52YWxpZCB2Y29kZWMgZncgdHlwZSIpOw0KPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gRVJS X1BUUigtRUlOVkFMKTsNCj4gPiA+IEBAIC0xMTgsNiArMTcwLDcgQEAgc3RydWN0IG10a192Y29k ZWNfZncgKm10a192Y29kZWNfZndfc2VsZWN0KHN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2LA0K PiA+ID4gICAgICAgZnctPnR5cGUgPSB0eXBlOw0KPiA+ID4gICAgICAgZnctPm9wcyA9IG9wczsN Cj4gPiA+ICAgICAgIGZ3LT5wZGV2ID0gZndfcGRldjsNCj4gPiA+ICsgICAgIGZ3LT5zY3AgPSBz Y3A7DQo+ID4gPg0KPiA+ID4gICAgICAgcmV0dXJuIGZ3Ow0KPiA+ID4gIH0NCj4gPiA+IEBAIC0x MjksNiArMTgyLDkgQEAgdm9pZCBtdGtfdmNvZGVjX2Z3X3JlbGVhc2Uoc3RydWN0IG10a192Y29k ZWNfZncgKmZ3KQ0KPiA+ID4gICAgICAgY2FzZSBWUFU6DQo+ID4gPiAgICAgICAgICAgICAgIHB1 dF9kZXZpY2UoJmZ3LT5wZGV2LT5kZXYpOw0KPiA+ID4gICAgICAgICAgICAgICBicmVhazsNCj4g PiA+ICsgICAgIGNhc2UgU0NQOg0KPiA+ID4gKyAgICAgICAgICAgICBzY3BfcHV0KGZ3LT5zY3Ap Ow0KPiA+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICAgICAgIH0NCj4gPiA+ICB9DQo+ ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwobXRrX3Zjb2RlY19md19yZWxlYXNlKTsNCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19m dy5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZncuaA0K PiA+ID4gaW5kZXggZmYyNWIwYzE5Zjc0Li5jZWQxYjZhMTBlMDcgMTAwNjQ0DQo+ID4gPiAtLS0g YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5oDQo+ID4g PiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5o DQo+ID4gPiBAQCAtNCw2ICs0LDcgQEANCj4gPiA+ICAjZGVmaW5lIF9NVEtfVkNPREVDX0ZXX0hf DQo+ID4gPg0KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9yZW1vdGVwcm9jLmg+DQo+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L3JlbW90ZXByb2MvbXRrX3NjcC5oPg0KPiA+ID4NCj4gPiA+ICAjaW5jbHVk ZSAiLi4vbXRrLXZwdS9tdGtfdnB1LmgiDQo+ID4gPg0KPiA+ID4gQEAgLTExLDYgKzEyLDcgQEAg c3RydWN0IG10a192Y29kZWNfZGV2Ow0KPiA+ID4NCj4gPiA+ICBlbnVtIG10a192Y29kZWNfZndf dHlwZSB7DQo+ID4gPiAgICAgICBWUFUsDQo+ID4gPiArICAgICBTQ1AsDQo+ID4gPiAgfTsNCj4g PiA+DQo+ID4gPiAgc3RydWN0IG10a192Y29kZWNfZnc7DQo+ID4NCg0K