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.2 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,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 1FC1CC433DF for ; Mon, 8 Jun 2020 10:50:00 +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 E13FD206C3 for ; Mon, 8 Jun 2020 10:49:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="gWQBye3j"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="DWGPIwN8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E13FD206C3 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=bombadil.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=ckFUW/H6zC04GmddIhVI+QEWwObtX5J/lRv3o2+FcyA=; b=gWQBye3j/MRIeM A8oDVJWSjaSpH4BuxY28eBW8eY/duP0Ed8iCLDOx1kIskahcL3rH+1VrlAP2izXYAU0roVvo2bwWk IqPnoJWZC7OKxOiE+70psin8xJh+3fBZ0CjWCv05Ux+Ee3Mb5YF2wHbK3TGRCZYDqH/1fgN9bB+QB fvgkJ7ihY+XglyNg/dim61B8CyOuO8JRU3hG/Lyiwvm04+m6D+vWwuo8lLLMOiyqSCJpHsa89Xt1r Vnq743sNK0/EV7Td11ZGhwJLNvq8ayNHaWxcP8ZNKgL1mMpXlPewR6TOlF4YfzrZH09mTxBkiATDd AJmti5P0ofTTxH7CHXhw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jiFLk-0002KP-Gv; Mon, 08 Jun 2020 10:49:52 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jiFLg-0002Jb-TX for linux-mediatek@lists.infradead.org; Mon, 08 Jun 2020 10:49:50 +0000 X-UUID: 64ae1fd3e5064356b58ce1598623ec19-20200608 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=4U5wOyS9euUxaAz1UlU89Xtc0yNK/D1HajDxurFdoY0=; b=DWGPIwN82FJCAt9fuuOj4oDFpYuNx1pA6XIEiyvrxiJaTsvd3LJBiUJpfI1NUEvEMsmvtqZciQlkhzOzYR7dXvjEoc/E5RSlkSWFqpxhtaiukvpD5VojrARQP0S8k1209t9jst11RBtS9ZCSE9Plp9YkYL4EjJYpamTdd5WEyBQ=; X-UUID: 64ae1fd3e5064356b58ce1598623ec19-20200608 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1359846883; Mon, 08 Jun 2020 02:49:38 -0800 Received: from MTKMBS01N1.mediatek.inc (172.21.101.68) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 8 Jun 2020 03:47:19 -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; Mon, 8 Jun 2020 18:47:12 +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; Mon, 8 Jun 2020 18:47:12 +0800 Message-ID: <1591613234.18435.8.camel@mtksdaap41> Subject: Re: [PATCH 02/10] media: mtk-vcodec: add SCP firmware ops From: Tiffany Lin To: Alexandre Courbot Date: Mon, 8 Jun 2020 18:47:14 +0800 In-Reply-To: <20200520082723.96136-3-acourbot@chromium.org> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-3-acourbot@chromium.org> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200608_034948_964718_89C5535F X-CRM114-Status: GOOD ( 16.92 ) 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 , linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, Pi-Hsun Shih , linux-media@vger.kernel.org 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 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. > > 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? > +} > + > +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.3 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,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 6E55BC433E0 for ; Mon, 8 Jun 2020 10:47:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3E5712074B for ; Mon, 8 Jun 2020 10:47:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="DWGPIwN8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729358AbgFHKrW (ORCPT ); Mon, 8 Jun 2020 06:47:22 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:28246 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729307AbgFHKrW (ORCPT ); Mon, 8 Jun 2020 06:47:22 -0400 X-UUID: c782088ae4b44a7cadfc541d45808d27-20200608 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=4U5wOyS9euUxaAz1UlU89Xtc0yNK/D1HajDxurFdoY0=; b=DWGPIwN82FJCAt9fuuOj4oDFpYuNx1pA6XIEiyvrxiJaTsvd3LJBiUJpfI1NUEvEMsmvtqZciQlkhzOzYR7dXvjEoc/E5RSlkSWFqpxhtaiukvpD5VojrARQP0S8k1209t9jst11RBtS9ZCSE9Plp9YkYL4EjJYpamTdd5WEyBQ=; X-UUID: c782088ae4b44a7cadfc541d45808d27-20200608 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1850781260; Mon, 08 Jun 2020 18:47:16 +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; Mon, 8 Jun 2020 18:47:12 +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; Mon, 8 Jun 2020 18:47:12 +0800 Message-ID: <1591613234.18435.8.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 , , , Date: Mon, 8 Jun 2020 18:47:14 +0800 In-Reply-To: <20200520082723.96136-3-acourbot@chromium.org> References: <20200520082723.96136-1-acourbot@chromium.org> <20200520082723.96136-3-acourbot@chromium.org> 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 T24gV2VkLCAyMDIwLTA1LTIwIGF0IDE3OjI3ICswOTAwLCBBbGV4YW5kcmUgQ291cmJvdCB3cm90 ZToNCj4gRnJvbTogWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4NCj4gDQo+ IEFkZCBzdXBwb3J0IGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIFNDUCBmaXJtd2FyZSwgd2hp Y2ggd2lsbCBiZSB1c2VkDQo+IGJ5IE1UODE4My4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFl1bmZl aSBEb25nIDx5dW5mZWkuZG9uZ0BtZWRpYXRlay5jb20+DQo+IFthY291cmJvdDogcmVmYWN0b3Is IGNsZWFudXAgYW5kIHNwbGl0XQ0KPiBDby1kZXZlbG9wZWQtYnk6IEFsZXhhbmRyZSBDb3VyYm90 IDxhY291cmJvdEBjaHJvbWl1bS5vcmc+DQo+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBDb3Vy Ym90IDxhY291cmJvdEBjaHJvbWl1bS5vcmc+DQo+IC0tLQ0KPiAgZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDIgKw0KPiAgLi4uL3BsYXRmb3JtL210ay12 Y29kZWMvbXRrX3Zjb2RlY19kZWNfZHJ2LmMgIHwgIDMgKw0KPiAgLi4uL3BsYXRmb3JtL210ay12 Y29kZWMvbXRrX3Zjb2RlY19lbmNfZHJ2LmMgIHwgIDMgKw0KPiAgLi4uL21lZGlhL3BsYXRmb3Jt L210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jIHwgNTYgKysrKysrKysrKysrKysrKysrKw0KPiAg Li4uL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5oIHwgIDIgKw0KPiAg NSBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29u ZmlnDQo+IGluZGV4IGM1N2VlNzhmYTk5ZC4uOWIxMWRkNmIxZWYzIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9LY29uZmlnDQo+IEBAIC0yNTYsNiArMjU2LDggQEAgY29uZmlnIFZJREVPX01FRElBVEVL X1ZDT0RFQw0KPiAgCXNlbGVjdCBWSURFT0JVRjJfRE1BX0NPTlRJRw0KPiAgCXNlbGVjdCBWNEwy X01FTTJNRU1fREVWDQo+ICAJc2VsZWN0IFZJREVPX01FRElBVEVLX1ZQVQ0KPiArCXNlbGVjdCBN VEtfU0NQDQo+ICsJZGVmYXVsdCBuDQo+ICAJaGVscA0KPiAgCSAgICBNZWRpYXRlayB2aWRlbyBj b2RlYyBkcml2ZXIgcHJvdmlkZXMgSFcgY2FwYWJpbGl0eSB0bw0KPiAgCSAgICBlbmNvZGUgYW5k IGRlY29kZSBpbiBhIHJhbmdlIG9mIHZpZGVvIGZvcm1hdHMNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2RlY19kcnYuYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2RlY19kcnYuYw0KPiBpbmRl eCA0ZjA3YTVmY2NlN2YuLjViNTc2NWI5OGU1NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNfZGVjX2Rydi5jDQo+ICsrKyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2RlY19kcnYuYw0KPiBAQCAt MjI1LDYgKzIyNSw5IEBAIHN0YXRpYyBpbnQgbXRrX3Zjb2RlY19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiAgCWlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0+ZGV2 Lm9mX25vZGUsICJtZWRpYXRlayx2cHUiLA0KPiAgCQkJCSAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ ICAJCWZ3X3R5cGUgPSBWUFU7DQo+ICsJfSBlbHNlIGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIo cGRldi0+ZGV2Lm9mX25vZGUsICJtZWRpYXRlayxzY3AiLA0KPiArCQkJCQkgJnJwcm9jX3BoYW5k bGUpKSB7DQo+ICsJCWZ3X3R5cGUgPSBTQ1A7DQo+ICAJfSBlbHNlIHsNCj4gIAkJbXRrX3Y0bDJf ZXJyKCJDb3VsZCBub3QgZ2V0IHZkZWMgSVBJIGRldmljZSIpOw0KPiAgCQlyZXR1cm4gLUVOT0RF VjsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtf dmNvZGVjX2VuY19kcnYuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtf dmNvZGVjX2VuY19kcnYuYw0KPiBpbmRleCA0MzQwZWExMGFmZDAuLjQyNTMwY2QwMWEzMCAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstdmNvZGVjL210a192Y29kZWNf ZW5jX2Rydi5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtf dmNvZGVjX2VuY19kcnYuYw0KPiBAQCAtMjMzLDYgKzIzMyw5IEBAIHN0YXRpYyBpbnQgbXRrX3Zj b2RlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCWlmICghb2ZfcHJv cGVydHlfcmVhZF91MzIocGRldi0+ZGV2Lm9mX25vZGUsICJtZWRpYXRlayx2cHUiLA0KPiAgCQkJ CSAgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ICAJCWZ3X3R5cGUgPSBWUFU7DQo+ICsJfSBlbHNlIGlm ICghb2ZfcHJvcGVydHlfcmVhZF91MzIocGRldi0+ZGV2Lm9mX25vZGUsICJtZWRpYXRlayxzY3Ai LA0KPiArCQkJCQkgJnJwcm9jX3BoYW5kbGUpKSB7DQo+ICsJCWZ3X3R5cGUgPSBTQ1A7DQo+ICAJ fSBlbHNlIHsNCj4gIAkJbXRrX3Y0bDJfZXJyKCJDb3VsZCBub3QgZ2V0IHZlbmMgSVBJIGRldmlj ZSIpOw0KPiAgCQlyZXR1cm4gLUVOT0RFVjsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3LmMgYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5jDQo+IGluZGV4IDk2N2JiMTAwYTk5MC4uZjJh NjJlYTYyZmM2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29k ZWMvbXRrX3Zjb2RlY19mdy5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZj b2RlYy9tdGtfdmNvZGVjX2Z3LmMNCj4gQEAgLTE5LDYgKzE5LDcgQEAgc3RydWN0IG10a192Y29k ZWNfZncgew0KPiAgCWVudW0gbXRrX3Zjb2RlY19md190eXBlIHR5cGU7DQo+ICAJY29uc3Qgc3Ry dWN0IG10a192Y29kZWNfZndfb3BzICpvcHM7DQo+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldjsNCj4gKwlzdHJ1Y3QgbXRrX3NjcCAqc2NwOw0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIGlu dCBtdGtfdmNvZGVjX3ZwdV9sb2FkX2Zpcm13YXJlKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdykN Cj4gQEAgLTcxLDYgKzcyLDQ4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3Zjb2RlY19md19v cHMgbXRrX3Zjb2RlY192cHVfbXNnID0gew0KPiAgCS5pcGlfc2VuZCA9IG10a192Y29kZWNfdnB1 X2lwaV9zZW5kLA0KPiAgfTsNCj4gIA0KPiArc3RhdGljIGludCBtdGtfdmNvZGVjX3NjcF9sb2Fk X2Zpcm13YXJlKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdykNCj4gK3sNCj4gKwlyZXR1cm4gcnBy b2NfYm9vdChzY3BfZ2V0X3Jwcm9jKGZ3LT5zY3ApKTsNCg0KDQpEb2VzIHJwcm9jX2Jvb3QgYW5k IHNjcF9nZXRfcnByb2MgZGVwZW5kIG9uIHRoZSBvdGhlciBrZXJuZWwgbW9kdWxlPw0Kd2hlcmUg YXJlIHRoZXkgZGVmaW5lZGVkPw0KDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQg bXRrX3Zjb2RlY19zY3BfZ2V0X3ZkZWNfY2FwYShzdHJ1Y3QgbXRrX3Zjb2RlY19mdyAqZncpDQo+ ICt7DQo+ICsJcmV0dXJuIHNjcF9nZXRfdmRlY19od19jYXBhKGZ3LT5zY3ApOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG10a192Y29kZWNfc2NwX2dldF92ZW5jX2NhcGEoc3Ry dWN0IG10a192Y29kZWNfZncgKmZ3KQ0KPiArew0KPiArCXJldHVybiBzY3BfZ2V0X3ZlbmNfaHdf Y2FwYShmdy0+c2NwKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgKm10a192Y29kZWNfdnB1 X3NjcF9kbV9hZGRyKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywNCj4gKwkJCQkJdTMyIGR0Y21f ZG1lbV9hZGRyKQ0KPiArew0KPiArCXJldHVybiBzY3BfbWFwcGluZ19kbV9hZGRyKGZ3LT5zY3As IGR0Y21fZG1lbV9hZGRyKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtdGtfdmNvZGVjX3Nj cF9zZXRfaXBpX3JlZ2lzdGVyKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywgaW50IGlkLA0KPiAr CQltdGtfdmNvZGVjX2lwaV9oYW5kbGVyIGhhbmRsZXIsIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQg KnByaXYpDQo+ICt7DQo+ICsJcmV0dXJuIHNjcF9pcGlfcmVnaXN0ZXIoZnctPnNjcCwgaWQsIGhh bmRsZXIsIHByaXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG10a192Y29kZWNfc2NwX2lw aV9zZW5kKHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICpmdywgaW50IGlkLCB2b2lkICpidWYsDQo+ICsJ CXVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGludCB3YWl0KQ0KPiArew0KPiArCXJldHVybiBz Y3BfaXBpX3NlbmQoZnctPnNjcCwgaWQsIGJ1ZiwgbGVuLCB3YWl0KTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfdmNvZGVjX2Z3X29wcyBtdGtfdmNvZGVjX3Jwcm9jX21z ZyA9IHsNCj4gKwkubG9hZF9maXJtd2FyZSA9IG10a192Y29kZWNfc2NwX2xvYWRfZmlybXdhcmUs DQo+ICsJLmdldF92ZGVjX2NhcGEgPSBtdGtfdmNvZGVjX3NjcF9nZXRfdmRlY19jYXBhLA0KPiAr CS5nZXRfdmVuY19jYXBhID0gbXRrX3Zjb2RlY19zY3BfZ2V0X3ZlbmNfY2FwYSwNCj4gKwkubWFw X2RtX2FkZHIgPSBtdGtfdmNvZGVjX3ZwdV9zY3BfZG1fYWRkciwNCj4gKwkuaXBpX3JlZ2lzdGVy ID0gbXRrX3Zjb2RlY19zY3Bfc2V0X2lwaV9yZWdpc3RlciwNCj4gKwkuaXBpX3NlbmQgPSBtdGtf dmNvZGVjX3NjcF9pcGlfc2VuZCwNCj4gK307DQo+ICsNCj4gIHN0YXRpYyB2b2lkIG10a192Y29k ZWNfcmVzZXRfaGFuZGxlcih2b2lkICpwcml2KQ0KPiAgew0KPiAgCXN0cnVjdCBtdGtfdmNvZGVj X2RldiAqZGV2ID0gcHJpdjsNCj4gQEAgLTk0LDYgKzEzNyw3IEBAIHN0cnVjdCBtdGtfdmNvZGVj X2Z3ICptdGtfdmNvZGVjX2Z3X3NlbGVjdChzdHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldiwNCj4g IAljb25zdCBzdHJ1Y3QgbXRrX3Zjb2RlY19md19vcHMgKm9wczsNCj4gIAlzdHJ1Y3QgbXRrX3Zj b2RlY19mdyAqZnc7DQo+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZndfcGRldiA9IE5VTEw7 DQo+ICsJc3RydWN0IG10a19zY3AgKnNjcCA9IE5VTEw7DQo+ICANCj4gIAlzd2l0Y2ggKHR5cGUp IHsNCj4gIAljYXNlIFZQVToNCj4gQEAgLTEwNiw2ICsxNTAsMTQgQEAgc3RydWN0IG10a192Y29k ZWNfZncgKm10a192Y29kZWNfZndfc2VsZWN0KHN0cnVjdCBtdGtfdmNvZGVjX2RldiAqZGV2LA0K PiAgCQl2cHVfd2R0X3JlZ19oYW5kbGVyKGZ3X3BkZXYsIG10a192Y29kZWNfcmVzZXRfaGFuZGxl ciwNCj4gIAkJCQkgICAgZGV2LCByc3RfaWQpOw0KPiAgCQlicmVhazsNCj4gKwljYXNlIFNDUDoN Cj4gKwkJb3BzID0gJm10a192Y29kZWNfcnByb2NfbXNnOw0KPiArCQlzY3AgPSBzY3BfZ2V0KGRl di0+cGxhdF9kZXYpOw0KPiArCQlpZiAoIXNjcCkgew0KPiArCQkJbXRrX3Y0bDJfZXJyKCJjb3Vs ZCBub3QgZ2V0IHZkZWMgc2NwIGhhbmRsZSIpOw0KPiArCQkJcmV0dXJuIEVSUl9QVFIoLUVQUk9C RV9ERUZFUik7DQo+ICsJCX0NCj4gKwkJYnJlYWs7DQo+ICAJZGVmYXVsdDoNCj4gIAkJbXRrX3Y0 bDJfZXJyKCJpbnZhbGlkIHZjb2RlYyBmdyB0eXBlIik7DQo+ICAJCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOw0KPiBAQCAtMTE4LDYgKzE3MCw3IEBAIHN0cnVjdCBtdGtfdmNvZGVjX2Z3ICptdGtf dmNvZGVjX2Z3X3NlbGVjdChzdHJ1Y3QgbXRrX3Zjb2RlY19kZXYgKmRldiwNCj4gIAlmdy0+dHlw ZSA9IHR5cGU7DQo+ICAJZnctPm9wcyA9IG9wczsNCj4gIAlmdy0+cGRldiA9IGZ3X3BkZXY7DQo+ ICsJZnctPnNjcCA9IHNjcDsNCj4gIA0KPiAgCXJldHVybiBmdzsNCj4gIH0NCj4gQEAgLTEyOSw2 ICsxODIsOSBAQCB2b2lkIG10a192Y29kZWNfZndfcmVsZWFzZShzdHJ1Y3QgbXRrX3Zjb2RlY19m dyAqZncpDQo+ICAJY2FzZSBWUFU6DQo+ICAJCXB1dF9kZXZpY2UoJmZ3LT5wZGV2LT5kZXYpOw0K PiAgCQlicmVhazsNCj4gKwljYXNlIFNDUDoNCj4gKwkJc2NwX3B1dChmdy0+c2NwKTsNCj4gKwkJ YnJlYWs7DQo+ICAJfQ0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTF9HUEwobXRrX3Zjb2RlY19md19y ZWxlYXNlKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2Rl Yy9tdGtfdmNvZGVjX2Z3LmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRr X3Zjb2RlY19mdy5oDQo+IGluZGV4IGZmMjViMGMxOWY3NC4uY2VkMWI2YTEwZTA3IDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay12Y29kZWMvbXRrX3Zjb2RlY19mdy5o DQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLXZjb2RlYy9tdGtfdmNvZGVjX2Z3 LmgNCj4gQEAgLTQsNiArNCw3IEBADQo+ICAjZGVmaW5lIF9NVEtfVkNPREVDX0ZXX0hfDQo+ICAN Cj4gICNpbmNsdWRlIDxsaW51eC9yZW1vdGVwcm9jLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcmVt b3RlcHJvYy9tdGtfc2NwLmg+DQo+ICANCj4gICNpbmNsdWRlICIuLi9tdGstdnB1L210a192cHUu aCINCj4gIA0KPiBAQCAtMTEsNiArMTIsNyBAQCBzdHJ1Y3QgbXRrX3Zjb2RlY19kZXY7DQo+ICAN Cj4gIGVudW0gbXRrX3Zjb2RlY19md190eXBlIHsNCj4gIAlWUFUsDQo+ICsJU0NQLA0KPiAgfTsN Cj4gIA0KPiAgc3RydWN0IG10a192Y29kZWNfZnc7DQoNCg==