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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD60FC433EF for ; Mon, 23 May 2022 06:03:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235827AbiEWGDL (ORCPT ); Mon, 23 May 2022 02:03:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233295AbiEWGBR (ORCPT ); Mon, 23 May 2022 02:01:17 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28AC510A4; Sun, 22 May 2022 23:01:11 -0700 (PDT) X-UUID: 761b162b2f614b0bac1e8e55fff5a5d7-20220523 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.5,REQID:2e0d962f-ce70-42ec-8eee-10d74295f8d3,OB:20,L OB:50,IP:0,URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:95,FILE:0,RULE:Release_Ham, ACTION:release,TS:90 X-CID-INFO: VERSION:1.1.5,REQID:2e0d962f-ce70-42ec-8eee-10d74295f8d3,OB:20,LOB :50,IP:0,URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:95,FILE:0,RULE:Spam_GS981B3D, ACTION:quarantine,TS:90 X-CID-META: VersionHash:2a19b09,CLOUDID:187b2ee3-edbf-4bd4-8a34-dfc5f7bb086d,C OID:4bfce04ef61e,Recheck:0,SF:28|17|19|48,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,QS:0,BEC:nil X-UUID: 761b162b2f614b0bac1e8e55fff5a5d7-20220523 Received: from mtkmbs10n1.mediatek.inc [(172.21.101.34)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1823473661; Mon, 23 May 2022 14:00:59 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Mon, 23 May 2022 14:00:58 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 23 May 2022 14:00:57 +0800 From: Rex-BC Chen To: , , , , CC: , , , , , , , , , , , , Rex-BC Chen Subject: [PATCH v8 06/19] clk: mediatek: reset: Revise structure to control reset register Date: Mon, 23 May 2022 14:00:43 +0800 Message-ID: <20220523060056.24396-7-rex-bc.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20220523060056.24396-1-rex-bc.chen@mediatek.com> References: <20220523060056.24396-1-rex-bc.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To declare the reset data easier, we add a strucure to do this instead of using many input variables to mtk_register_reset_controller(). - Add mtk_clk_rst_desc to define the reset description when registering the reset controller. - Rename "mtk_reset" to "mtk_clk_rst_data". We use it to store data of reset controller. - Document mtk_clk_rst_desc and mtk_clk_rst_data. - Modify the documentation of mtk_register_reset_controller. - Extract container_of in update functions to to_mtk_clk_rst_data(). Signed-off-by: Rex-BC Chen Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: NĂ­colas F. R. A. Prado Tested-by: NĂ­colas F. R. A. Prado --- drivers/clk/mediatek/clk-mt2701-eth.c | 8 ++++++- drivers/clk/mediatek/clk-mt2701-g3d.c | 8 ++++++- drivers/clk/mediatek/clk-mt2701-hif.c | 8 ++++++- drivers/clk/mediatek/clk-mt2701.c | 19 +++++++++++++-- drivers/clk/mediatek/clk-mt2712.c | 19 +++++++++++++-- drivers/clk/mediatek/clk-mt7622-eth.c | 8 ++++++- drivers/clk/mediatek/clk-mt7622-hif.c | 10 ++++++-- drivers/clk/mediatek/clk-mt7622.c | 19 +++++++++++++-- drivers/clk/mediatek/clk-mt7629-eth.c | 8 ++++++- drivers/clk/mediatek/clk-mt7629-hif.c | 10 ++++++-- drivers/clk/mediatek/clk-mt8135.c | 19 +++++++++++++-- drivers/clk/mediatek/clk-mt8173.c | 19 +++++++++++++-- drivers/clk/mediatek/clk-mt8183.c | 9 ++++++-- drivers/clk/mediatek/reset.c | 33 +++++++++++++++++---------- drivers/clk/mediatek/reset.h | 29 +++++++++++++++++------ 15 files changed, 186 insertions(+), 40 deletions(-) diff --git a/drivers/clk/mediatek/clk-mt2701-eth.c b/drivers/clk/mediatek/clk-mt2701-eth.c index 579343e0bba6..270d15ce58bf 100644 --- a/drivers/clk/mediatek/clk-mt2701-eth.c +++ b/drivers/clk/mediatek/clk-mt2701-eth.c @@ -36,6 +36,12 @@ static const struct mtk_gate eth_clks[] = { GATE_ETH(CLK_ETHSYS_CRYPTO, "crypto_clk", "ethif_sel", 29), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static const struct of_device_id of_match_clk_mt2701_eth[] = { { .compatible = "mediatek,mt2701-ethsys", }, {} @@ -58,7 +64,7 @@ static int clk_mt2701_eth_probe(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt2701-g3d.c b/drivers/clk/mediatek/clk-mt2701-g3d.c index bd77ed25b101..9cfd589939e5 100644 --- a/drivers/clk/mediatek/clk-mt2701-g3d.c +++ b/drivers/clk/mediatek/clk-mt2701-g3d.c @@ -35,6 +35,12 @@ static const struct mtk_gate g3d_clks[] = { GATE_G3D(CLK_G3DSYS_CORE, "g3d_core", "mfg_sel", 0), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0xc, +}; + static int clk_mt2701_g3dsys_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -52,7 +58,7 @@ static int clk_mt2701_g3dsys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0xc, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt2701-hif.c b/drivers/clk/mediatek/clk-mt2701-hif.c index ae3849b58db8..a6b812fcc922 100644 --- a/drivers/clk/mediatek/clk-mt2701-hif.c +++ b/drivers/clk/mediatek/clk-mt2701-hif.c @@ -33,6 +33,12 @@ static const struct mtk_gate hif_clks[] = { GATE_HIF(CLK_HIFSYS_PCIE2, "pcie2_clk", "ethpll_500m_ck", 26), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static const struct of_device_id of_match_clk_mt2701_hif[] = { { .compatible = "mediatek,mt2701-hifsys", }, {} @@ -57,7 +63,7 @@ static int clk_mt2701_hif_probe(struct platform_device *pdev) return r; } - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return 0; } diff --git a/drivers/clk/mediatek/clk-mt2701.c b/drivers/clk/mediatek/clk-mt2701.c index 18f90657a643..f165126232d3 100644 --- a/drivers/clk/mediatek/clk-mt2701.c +++ b/drivers/clk/mediatek/clk-mt2701.c @@ -735,6 +735,21 @@ static const struct mtk_fixed_factor infra_fixed_divs[] = { FACTOR(CLK_INFRA_CLK_13M, "clk13m", "clk26m", 1, 2), }; +static const struct mtk_clk_rst_desc clk_rst_desc[] = { + /* infrasys */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x30, + }, + /* pericfg */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x0, + }, +}; + static struct clk_hw_onecell_data *infra_clk_data; static void __init mtk_infrasys_init_early(struct device_node *node) @@ -787,7 +802,7 @@ static int mtk_infrasys_init(struct platform_device *pdev) if (r) return r; - mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[0]); return 0; } @@ -910,7 +925,7 @@ static int mtk_pericfg_init(struct platform_device *pdev) if (r) return r; - mtk_register_reset_controller(node, 2, 0x0, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[1]); return 0; } diff --git a/drivers/clk/mediatek/clk-mt2712.c b/drivers/clk/mediatek/clk-mt2712.c index 3385fc963409..c7a8aafd44cc 100644 --- a/drivers/clk/mediatek/clk-mt2712.c +++ b/drivers/clk/mediatek/clk-mt2712.c @@ -1258,6 +1258,21 @@ static const struct mtk_pll_data plls[] = { 0, 31, 0x0300, 4, 0, 0, 0, 0x0304, 0), }; +static const struct mtk_clk_rst_desc clk_rst_desc[] = { + /* infra */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x30, + }, + /* peri */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x0, + }, +}; + static int clk_mt2712_apmixed_probe(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -1361,7 +1376,7 @@ static int clk_mt2712_infra_probe(struct platform_device *pdev) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[0]); return r; } @@ -1383,7 +1398,7 @@ static int clk_mt2712_peri_probe(struct platform_device *pdev) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[1]); return r; } diff --git a/drivers/clk/mediatek/clk-mt7622-eth.c b/drivers/clk/mediatek/clk-mt7622-eth.c index 424105b91b7d..40eefed3d12b 100644 --- a/drivers/clk/mediatek/clk-mt7622-eth.c +++ b/drivers/clk/mediatek/clk-mt7622-eth.c @@ -65,6 +65,12 @@ static const struct mtk_gate sgmii_clks[] = { "ssusb_cdr_fb", 5), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static int clk_mt7622_ethsys_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -82,7 +88,7 @@ static int clk_mt7622_ethsys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt7622-hif.c b/drivers/clk/mediatek/clk-mt7622-hif.c index 88bccf595ee4..ca29d93ce2d0 100644 --- a/drivers/clk/mediatek/clk-mt7622-hif.c +++ b/drivers/clk/mediatek/clk-mt7622-hif.c @@ -76,6 +76,12 @@ static const struct mtk_gate pcie_clks[] = { GATE_PCIE(CLK_SATA_PM_EN, "sata_pm_en", "univpll2_d4", 30), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static int clk_mt7622_ssusbsys_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -93,7 +99,7 @@ static int clk_mt7622_ssusbsys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } @@ -115,7 +121,7 @@ static int clk_mt7622_pciesys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt7622.c b/drivers/clk/mediatek/clk-mt7622.c index 9b7ebccf75bc..115db564a6d4 100644 --- a/drivers/clk/mediatek/clk-mt7622.c +++ b/drivers/clk/mediatek/clk-mt7622.c @@ -610,6 +610,21 @@ static struct mtk_composite peri_muxes[] = { MUX(CLK_PERIBUS_SEL, "peribus_ck_sel", peribus_ck_parents, 0x05C, 0, 1), }; +static const struct mtk_clk_rst_desc clk_rst_desc[] = { + /* infrasys */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x30, + }, + /* pericfg */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x0, + }, +}; + static int mtk_topckgen_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -663,7 +678,7 @@ static int mtk_infrasys_init(struct platform_device *pdev) if (r) return r; - mtk_register_reset_controller(node, 1, 0x30, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[0]); return 0; } @@ -714,7 +729,7 @@ static int mtk_pericfg_init(struct platform_device *pdev) clk_prepare_enable(clk_data->hws[CLK_PERI_UART0_PD]->clk); - mtk_register_reset_controller(node, 2, 0x0, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[1]); return 0; } diff --git a/drivers/clk/mediatek/clk-mt7629-eth.c b/drivers/clk/mediatek/clk-mt7629-eth.c index ba2548ef4031..c20c7853500d 100644 --- a/drivers/clk/mediatek/clk-mt7629-eth.c +++ b/drivers/clk/mediatek/clk-mt7629-eth.c @@ -76,6 +76,12 @@ static const struct mtk_gate sgmii_clks[2][4] = { } }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static int clk_mt7629_ethsys_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -92,7 +98,7 @@ static int clk_mt7629_ethsys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt7629-hif.c b/drivers/clk/mediatek/clk-mt7629-hif.c index 5863ac799b70..5d7ec861afab 100644 --- a/drivers/clk/mediatek/clk-mt7629-hif.c +++ b/drivers/clk/mediatek/clk-mt7629-hif.c @@ -71,6 +71,12 @@ static const struct mtk_gate pcie_clks[] = { GATE_PCIE(CLK_PCIE_P0_PIPE_EN, "pcie_p0_pipe_en", "pcie0_pipe_en", 23), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 1, + .reg_ofs = 0x34, +}; + static int clk_mt7629_ssusbsys_init(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -88,7 +94,7 @@ static int clk_mt7629_ssusbsys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } @@ -110,7 +116,7 @@ static int clk_mt7629_pciesys_init(struct platform_device *pdev) "could not register clock provider: %s: %d\n", pdev->name, r); - mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/clk-mt8135.c b/drivers/clk/mediatek/clk-mt8135.c index b94433a1dde1..f554574b2567 100644 --- a/drivers/clk/mediatek/clk-mt8135.c +++ b/drivers/clk/mediatek/clk-mt8135.c @@ -514,6 +514,21 @@ static const struct mtk_composite peri_clks[] __initconst = { MUX(CLK_PERI_UART3_SEL, "uart3_ck_sel", uart_ck_sel_parents, 0x40c, 3, 1), }; +static const struct mtk_clk_rst_desc clk_rst_desc[] = { + /* infrasys */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x30, + }, + /* pericfg */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x0, + } +}; + static void __init mtk_topckgen_init(struct device_node *node) { struct clk_hw_onecell_data *clk_data; @@ -559,7 +574,7 @@ static void __init mtk_infrasys_init(struct device_node *node) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[0]); } CLK_OF_DECLARE(mtk_infrasys, "mediatek,mt8135-infracfg", mtk_infrasys_init); @@ -587,7 +602,7 @@ static void __init mtk_pericfg_init(struct device_node *node) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[1]); } CLK_OF_DECLARE(mtk_pericfg, "mediatek,mt8135-pericfg", mtk_pericfg_init); diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c index 9fbf26c96795..1e86210e9c66 100644 --- a/drivers/clk/mediatek/clk-mt8173.c +++ b/drivers/clk/mediatek/clk-mt8173.c @@ -819,6 +819,21 @@ static const struct mtk_gate venclt_clks[] __initconst = { GATE_VENCLT(CLK_VENCLT_CKE1, "venclt_cke1", "venclt_sel", 4), }; +static const struct mtk_clk_rst_desc clk_rst_desc[] = { + /* infrasys */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x30, + }, + /* pericfg */ + { + .version = MTK_RST_SIMPLE, + .rst_bank_nr = 2, + .reg_ofs = 0x0, + } +}; + static struct clk_hw_onecell_data *mt8173_top_clk_data __initdata; static struct clk_hw_onecell_data *mt8173_pll_clk_data __initdata; @@ -882,7 +897,7 @@ static void __init mtk_infrasys_init(struct device_node *node) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[0]); } CLK_OF_DECLARE(mtk_infrasys, "mediatek,mt8173-infracfg", mtk_infrasys_init); @@ -910,7 +925,7 @@ static void __init mtk_pericfg_init(struct device_node *node) pr_err("%s(): could not register clock provider: %d\n", __func__, r); - mtk_register_reset_controller(node, 2, 0, MTK_RST_SIMPLE); + mtk_register_reset_controller(node, &clk_rst_desc[1]); } CLK_OF_DECLARE(mtk_pericfg, "mediatek,mt8173-pericfg", mtk_pericfg_init); diff --git a/drivers/clk/mediatek/clk-mt8183.c b/drivers/clk/mediatek/clk-mt8183.c index d0e89b015ffc..5708c5d8b300 100644 --- a/drivers/clk/mediatek/clk-mt8183.c +++ b/drivers/clk/mediatek/clk-mt8183.c @@ -1153,6 +1153,12 @@ static const struct mtk_pll_data plls[] = { 0, 0, 32, 8, 0x02B4, 1, 0x02BC, 0x0014, 1, 0x02B8, 0, 0x02B4), }; +static const struct mtk_clk_rst_desc clk_rst_desc = { + .version = MTK_RST_SET_CLR, + .rst_bank_nr = 4, + .reg_ofs = INFRA_RST0_SET_OFFSET, +}; + static int clk_mt8183_apmixed_probe(struct platform_device *pdev) { struct clk_hw_onecell_data *clk_data; @@ -1240,8 +1246,7 @@ static int clk_mt8183_infra_probe(struct platform_device *pdev) return r; } - mtk_register_reset_controller(node, 4, - INFRA_RST0_SET_OFFSET, MTK_RST_SET_CLR); + mtk_register_reset_controller(node, &clk_rst_desc); return r; } diff --git a/drivers/clk/mediatek/reset.c b/drivers/clk/mediatek/reset.c index 33745f7f144f..47bc6b1842fd 100644 --- a/drivers/clk/mediatek/reset.c +++ b/drivers/clk/mediatek/reset.c @@ -12,14 +12,19 @@ #include "reset.h" +static inline struct mtk_clk_rst_data *to_mtk_clk_rst_data(struct reset_controller_dev *rcdev) +{ + return container_of(rcdev, struct mtk_clk_rst_data, rcdev); +} + static int mtk_reset_update(struct reset_controller_dev *rcdev, unsigned long id, bool deassert) { - struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev); + struct mtk_clk_rst_data *data = to_mtk_clk_rst_data(rcdev); unsigned int val = deassert ? 0 : ~0; return regmap_update_bits(data->regmap, - data->regofs + ((id / 32) << 2), + data->desc->reg_ofs + ((id / 32) << 2), BIT(id % 32), val); } @@ -49,11 +54,11 @@ static int mtk_reset(struct reset_controller_dev *rcdev, unsigned long id) static int mtk_reset_update_set_clr(struct reset_controller_dev *rcdev, unsigned long id, bool deassert) { - struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev); + struct mtk_clk_rst_data *data = to_mtk_clk_rst_data(rcdev); unsigned int deassert_ofs = deassert ? 0x4 : 0; return regmap_write(data->regmap, - data->regofs + ((id / 32) << 4) + deassert_ofs, + data->desc->reg_ofs + ((id / 32) << 4) + deassert_ofs, BIT(id % 32)); } @@ -93,15 +98,19 @@ static const struct reset_control_ops mtk_reset_ops_set_clr = { }; void mtk_register_reset_controller(struct device_node *np, - u32 rst_bank_nr, u16 reg_ofs, - enum mtk_reset_version version) + const struct mtk_clk_rst_desc *desc) { - struct mtk_reset *data; - int ret; struct regmap *regmap; const struct reset_control_ops *rcops = NULL; + struct mtk_clk_rst_data *data; + int ret; + + if (!desc) { + pr_err("mtk clock reset desc is NULL\n"); + return; + } - switch (version) { + switch (desc->version) { case MTK_RST_SIMPLE: rcops = &mtk_reset_ops; break; @@ -109,7 +118,7 @@ void mtk_register_reset_controller(struct device_node *np, rcops = &mtk_reset_ops_set_clr; break; default: - pr_err("Unknown reset version %d\n", version); + pr_err("Unknown reset version %d\n", desc->version); return; } @@ -123,10 +132,10 @@ void mtk_register_reset_controller(struct device_node *np, if (!data) return; + data->desc = desc; data->regmap = regmap; - data->regofs = reg_ofs; data->rcdev.owner = THIS_MODULE; - data->rcdev.nr_resets = rst_bank_nr * 32; + data->rcdev.nr_resets = desc->rst_bank_nr * 32; data->rcdev.ops = rcops; data->rcdev.of_node = np; diff --git a/drivers/clk/mediatek/reset.h b/drivers/clk/mediatek/reset.h index 851244bbd2ad..b4c2b468da4a 100644 --- a/drivers/clk/mediatek/reset.h +++ b/drivers/clk/mediatek/reset.h @@ -21,21 +21,36 @@ enum mtk_reset_version { MTK_RST_MAX, }; -struct mtk_reset { +/** + * struct mtk_clk_rst_desc - Description of MediaTek clock reset. + * @version: Reset version which is defined in enum mtk_reset_version. + * @reg_ofs: Base offset of the reset register. + * @rst_bank_nr: Quantity of reset bank. + */ +struct mtk_clk_rst_desc { + enum mtk_reset_version version; + u16 reg_ofs; + u32 rst_bank_nr; +}; + +/** + * struct mtk_clk_rst_data - Data of MediaTek clock reset controller. + * @regmap: Pointer to base address of reset register address. + * @rcdev: Reset controller device. + * @desc: Pointer to description of the reset controller. + */ +struct mtk_clk_rst_data { struct regmap *regmap; - int regofs; struct reset_controller_dev rcdev; + const struct mtk_clk_rst_desc *desc; }; /** * mtk_register_reset_controller - Register MediaTek clock reset controller * @np: Pointer to device node. - * @rst_bank_nr: Quantity of reset bank. - * @reg_ofs: Base offset of the reset register. - * @version: Version of MediaTek clock reset controller. + * @desc: Constant pointer to description of clock reset. */ void mtk_register_reset_controller(struct device_node *np, - u32 rst_bank_nr, u16 reg_ofs, - enum mtk_reset_version version); + const struct mtk_clk_rst_desc *desc); #endif /* __DRV_CLK_MTK_RESET_H */ -- 2.18.0 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id A74AAC433F5 for ; Mon, 23 May 2022 09:35:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=C+QULfTQhdJjIR1XgbBntW7GucJgV0odNjoqZa18du0=; b=SWtjS3GICzGb3O fYHaAJc++/fPQnC7Fdmal+qCp/ZnnSOnPO3/mH1SyRQgRRrRjDGUNlzF6MmpktCAA2hdgGfCrndMF XapTsTKArvmGarxIgaqwQKO2ZKknbh6L0o4AYeNpQIfegbXLHZQ8qPOi4Qz3YveWwPNuUe9TOyQlv M1N0Khk5lEmfDkVmf7Ixg+Uuo2JN98a/ZJGYsCDQNiPqBi+YbK9kWfyC8YAU7lBuO69yaq5dkBTmu daBwq5c3nNUewf5nd+74572tFt93TaJb3ocymGPEVz0ZoI2ZFxP7KmFXWAnrK1Ia9CWoGHaZ44RKJ eAzz3QAvEYwfdIyyMIyw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt4T1-002t2P-Cd; Mon, 23 May 2022 09:35:11 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt2oq-002A7b-Rg; Mon, 23 May 2022 07:49:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=QgH/aO/iwfctlyW9nMq+hgFS7JVPHclA/JVQF6km00k=; b=eoX0cPx2rPPrY/jHbl8JkZQSFs +zJQcGeB61FYJeTPHKnnjFIJJHLUslzYni5XOCvKUAH+AXw57Tl5gjjNbe5PVQ5OohNlch+8nkUAh P/OJoii+99LhXtHPB/FFIcKtnBOnZOW1h6sEIX5GedNPuqELtCsGJu6SUuJyuuCUpIzzQDt80PKxY pTLn/nbvOV4mDrzZzSv1XCVcoMkCFnsUVV+LDnsbuYkQdSVnm3AebR7MvQMWGCwQqo0efTNlg0HEl IrDvg95NTHjs767xMjXivLlyL/9bJJvwoGHV69OFSAmnz50O4FB5LqjeEwVWYWdG5wkWZVn5Amcsq Y/lYaA1Q==; Received: from mailgw02.mediatek.com ([216.200.240.185]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt18S-000sci-7B; Mon, 23 May 2022 06:01:50 +0000 X-UUID: 221cfa98af7a4ea0b2380f4c40ae562a-20220522 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.5, REQID:4b1f0bc1-bb60-451d-a937-1fcde4adbab0, OB:0, LO B:0,IP:0,URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,RULE:Release_Ham,ACT ION:release,TS:-5 X-CID-META: VersionHash:2a19b09, CLOUDID:af7f2ee3-edbf-4bd4-8a34-dfc5f7bb086d, C OID:IGNORED,Recheck:0,SF:nil,TC:nil,Content:0,EDM:-3,IP:nil,URL:0,File:nil ,QS:0,BEC:nil X-UUID: 221cfa98af7a4ea0b2380f4c40ae562a-20220522 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 133166184; Sun, 22 May 2022 23:01:22 -0700 Received: from mtkmbs11n2.mediatek.inc (172.21.101.187) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 22 May 2022 23:01:00 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Mon, 23 May 2022 14:00:58 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 23 May 2022 14:00:57 +0800 From: Rex-BC Chen To: , , , , CC: , , , , , , , , , , , , Rex-BC Chen Subject: [PATCH v8 06/19] clk: mediatek: reset: Revise structure to control reset register Date: Mon, 23 May 2022 14:00:43 +0800 Message-ID: <20220523060056.24396-7-rex-bc.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20220523060056.24396-1-rex-bc.chen@mediatek.com> References: <20220523060056.24396-1-rex-bc.chen@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220523_070144_739355_CCAE7B51 X-CRM114-Status: GOOD ( 15.53 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org VG8gZGVjbGFyZSB0aGUgcmVzZXQgZGF0YSBlYXNpZXIsIHdlIGFkZCBhIHN0cnVjdXJlIHRvIGRv IHRoaXMgaW5zdGVhZApvZiB1c2luZyBtYW55IGlucHV0IHZhcmlhYmxlcyB0byBtdGtfcmVnaXN0 ZXJfcmVzZXRfY29udHJvbGxlcigpLgoKLSBBZGQgbXRrX2Nsa19yc3RfZGVzYyB0byBkZWZpbmUg dGhlIHJlc2V0IGRlc2NyaXB0aW9uIHdoZW4gcmVnaXN0ZXJpbmcKICB0aGUgcmVzZXQgY29udHJv bGxlci4KLSBSZW5hbWUgIm10a19yZXNldCIgdG8gIm10a19jbGtfcnN0X2RhdGEiLiBXZSB1c2Ug aXQgdG8gc3RvcmUgZGF0YSBvZgogIHJlc2V0IGNvbnRyb2xsZXIuCi0gRG9jdW1lbnQgbXRrX2Ns a19yc3RfZGVzYyBhbmQgbXRrX2Nsa19yc3RfZGF0YS4KLSBNb2RpZnkgdGhlIGRvY3VtZW50YXRp b24gb2YgbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIuCi0gRXh0cmFjdCBjb250YWluZXJf b2YgaW4gdXBkYXRlIGZ1bmN0aW9ucyB0byB0b19tdGtfY2xrX3JzdF9kYXRhKCkuCgpTaWduZWQt b2ZmLWJ5OiBSZXgtQkMgQ2hlbiA8cmV4LWJjLmNoZW5AbWVkaWF0ZWsuY29tPgpSZXZpZXdlZC1i eTogQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9A Y29sbGFib3JhLmNvbT4KUmV2aWV3ZWQtYnk6IE7DrWNvbGFzIEYuIFIuIEEuIFByYWRvIDxuZnJh cHJhZG9AY29sbGFib3JhLmNvbT4KVGVzdGVkLWJ5OiBOw61jb2xhcyBGLiBSLiBBLiBQcmFkbyA8 bmZyYXByYWRvQGNvbGxhYm9yYS5jb20+Ci0tLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10 MjcwMS1ldGguYyB8ICA4ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt ZzNkLmMgfCAgOCArKysrKystCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLWhpZi5j IHwgIDggKysrKysrLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jICAgICB8IDE5 ICsrKysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jICAgICB8 IDE5ICsrKysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi1ldGgu YyB8ICA4ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjItaGlmLmMgfCAx MCArKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi5jICAgICB8IDE5ICsr KysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYyB8ICA4 ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjktaGlmLmMgfCAxMCArKysr KystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODEzNS5jICAgICB8IDE5ICsrKysrKysr KysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE3My5jICAgICB8IDE5ICsrKysr KysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE4My5jICAgICB8ICA5ICsr KysrKy0tCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jICAgICAgICAgIHwgMzMgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5oICAgICAg ICAgIHwgMjkgKysrKysrKysrKysrKysrKystLS0tLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDE4NiBp bnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9t ZWRpYXRlay9jbGstbXQyNzAxLWV0aC5jIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Mjcw MS1ldGguYwppbmRleCA1NzkzNDNlMGJiYTYuLjI3MGQxNWNlNThiZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1ldGguYworKysgYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9jbGstbXQyNzAxLWV0aC5jCkBAIC0zNiw2ICszNiwxMiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG10a19nYXRlIGV0aF9jbGtzW10gPSB7CiAJR0FURV9FVEgoQ0xLX0VUSFNZU19DUllQVE8s ICJjcnlwdG9fY2xrIiwgImV0aGlmX3NlbCIsIDI5KSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7CisJLnZlcnNpb24gPSBNVEtfUlNU X1NJTVBMRSwKKwkucnN0X2JhbmtfbnIgPSAxLAorCS5yZWdfb2ZzID0gMHgzNCwKK307CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX21hdGNoX2Nsa19tdDI3MDFfZXRoW10g PSB7CiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtZXRoc3lzIiwgfSwKIAl7fQpA QCAtNTgsNyArNjQsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MDFfZXRoX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkiY291bGQgbm90IHJlZ2lzdGVyIGNsb2NrIHByb3Zp ZGVyOiAlczogJWRcbiIsCiAJCQlwZGV2LT5uYW1lLCByKTsKIAotCW10a19yZWdpc3Rlcl9yZXNl dF9jb250cm9sbGVyKG5vZGUsIDEsIDB4MzQsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0 ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjKTsKIAogCXJldHVybiByOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1nM2QuYyBiL2Ry aXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEtZzNkLmMKaW5kZXggYmQ3N2VkMjViMTAxLi45 Y2ZkNTg5OTM5ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt ZzNkLmMKKysrIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1nM2QuYwpAQCAtMzUs NiArMzUsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZSBnM2RfY2xrc1tdID0gewog CUdBVEVfRzNEKENMS19HM0RTWVNfQ09SRSwgImczZF9jb3JlIiwgIm1mZ19zZWwiLCAwKSwKIH07 CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7 CisJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkucnN0X2JhbmtfbnIgPSAxLAorCS5yZWdf b2ZzID0gMHhjLAorfTsKKwogc3RhdGljIGludCBjbGtfbXQyNzAxX2czZHN5c19pbml0KHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEg KmNsa19kYXRhOwpAQCAtNTIsNyArNTgsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MDFfZzNkc3lz X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCSJjb3VsZCBub3QgcmVnaXN0 ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAlZFxuIiwKIAkJCXBkZXYtPm5hbWUsIHIpOwogCi0JbXRr X3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMSwgMHhjLCBNVEtfUlNUX1NJTVBMRSk7 CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzYyk7CiAK IAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3 MDEtaGlmLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLWhpZi5jCmluZGV4IGFl Mzg0OWI1OGRiOC4uYTZiODEyZmNjOTIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRl ay9jbGstbXQyNzAxLWhpZi5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt aGlmLmMKQEAgLTMzLDYgKzMzLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGUgaGlm X2Nsa3NbXSA9IHsKIAlHQVRFX0hJRihDTEtfSElGU1lTX1BDSUUyLCAicGNpZTJfY2xrIiwgImV0 aHBsbF81MDBtX2NrIiwgMjYpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3Jz dF9kZXNjIGNsa19yc3RfZGVzYyA9IHsKKwkudmVyc2lvbiA9IE1US19SU1RfU0lNUExFLAorCS5y c3RfYmFua19uciA9IDEsCisJLnJlZ19vZnMgPSAweDM0LAorfTsKKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgb2ZfbWF0Y2hfY2xrX210MjcwMV9oaWZbXSA9IHsKIAl7IC5jb21w YXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1oaWZzeXMiLCB9LAogCXt9CkBAIC01Nyw3ICs2Myw3 IEBAIHN0YXRpYyBpbnQgY2xrX210MjcwMV9oaWZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAkJcmV0dXJuIHI7CiAJfQogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgMSwgMHgzNCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9j b250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMgYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9jbGstbXQyNzAxLmMKaW5kZXggMThmOTA2NTdhNjQzLi5mMTY1MTI2MjMyZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYworKysgYi9kcml2ZXJzL2Ns ay9tZWRpYXRlay9jbGstbXQyNzAxLmMKQEAgLTczNSw2ICs3MzUsMjEgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfZml4ZWRfZmFjdG9yIGluZnJhX2ZpeGVkX2RpdnNbXSA9IHsKIAlGQUNUT1Io Q0xLX0lORlJBX0NMS18xM00sICJjbGsxM20iLCAiY2xrMjZtIiwgMSwgMiksCiB9OwogCitzdGF0 aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjW10gPSB7CisJLyog aW5mcmFzeXMgKi8KKwl7CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFu a19uciA9IDIsCisJCS5yZWdfb2ZzID0gMHgzMCwKKwl9LAorCS8qIHBlcmljZmcgKi8KKwl7CisJ CS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFua19uciA9IDIsCisJCS5yZWdf b2ZzID0gMHgwLAorCX0sCit9OworCiBzdGF0aWMgc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEg KmluZnJhX2Nsa19kYXRhOwogCiBzdGF0aWMgdm9pZCBfX2luaXQgbXRrX2luZnJhc3lzX2luaXRf ZWFybHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQpAQCAtNzg3LDcgKzgwMiw3IEBAIHN0YXRp YyBpbnQgbXRrX2luZnJhc3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlp ZiAocikKIAkJcmV0dXJuIHI7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2Rl LCAyLCAweDMwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgJmNsa19yc3RfZGVzY1swXSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTkxMCw3ICs5 MjUsNyBAQCBzdGF0aWMgaW50IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29u dHJvbGxlcihub2RlLCAyLCAweDAsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0ZXJfcmVz ZXRfY29udHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjWzFdKTsKIAogCXJldHVybiAwOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jIGIvZHJpdmVycy9j bGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jCmluZGV4IDMzODVmYzk2MzQwOS4uYzdhOGFhZmQ0NGNj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzEyLmMKKysrIGIvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jCkBAIC0xMjU4LDYgKzEyNTgsMjEgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBtdGtfcGxsX2RhdGEgcGxsc1tdID0gewogCQkwLCAzMSwgMHgwMzAw LCA0LCAwLCAwLCAwLCAweDAzMDQsIDApLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtf Y2xrX3JzdF9kZXNjIGNsa19yc3RfZGVzY1tdID0geworCS8qIGluZnJhICovCisJeworCQkudmVy c2lvbiA9IE1US19SU1RfU0lNUExFLAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9 IDB4MzAsCisJfSwKKwkvKiBwZXJpICovCisJeworCQkudmVyc2lvbiA9IE1US19SU1RfU0lNUExF LAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MCwKKwl9LAorfTsKKwogc3Rh dGljIGludCBjbGtfbXQyNzEyX2FwbWl4ZWRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIHsKIAlzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqY2xrX2RhdGE7CkBAIC0xMzYx LDcgKzEzNzYsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MTJfaW5mcmFfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAkJcHJfZXJyKCIlcygpOiBjb3VsZCBub3QgcmVnaXN0ZXIg Y2xvY2sgcHJvdmlkZXI6ICVkXG4iLAogCQkJX19mdW5jX18sIHIpOwogCi0JbXRrX3JlZ2lzdGVy X3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMiwgMHgzMCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19y ZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2NbMF0pOwogCiAJcmV0 dXJuIHI7CiB9CkBAIC0xMzgzLDcgKzEzOTgsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MTJfcGVy aV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlwcl9lcnIoIiVzKCk6IGNv dWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7 CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJ TVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVz Y1sxXSk7CiAKIAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVr L2Nsay1tdDc2MjItZXRoLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLWV0aC5j CmluZGV4IDQyNDEwNWI5MWI3ZC4uNDBlZWZlZDNkMTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns ay9tZWRpYXRlay9jbGstbXQ3NjIyLWV0aC5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Ns ay1tdDc2MjItZXRoLmMKQEAgLTY1LDYgKzY1LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRr X2dhdGUgc2dtaWlfY2xrc1tdID0gewogCQkgICAic3N1c2JfY2RyX2ZiIiwgNSksCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjID0geworCS52 ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJLnJzdF9iYW5rX25yID0gMSwKKwkucmVnX29mcyA9 IDB4MzQsCit9OworCiBzdGF0aWMgaW50IGNsa19tdDc2MjJfZXRoc3lzX2luaXQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqY2xr X2RhdGE7CkBAIC04Miw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgY2xrX210NzYyMl9ldGhzeXNfaW5p dChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBj bG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJcGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVn aXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAxLCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJ bXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAly ZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjIt aGlmLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLWhpZi5jCmluZGV4IDg4YmNj ZjU5NWVlNC4uY2EyOWQ5M2NlMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9j bGstbXQ3NjIyLWhpZi5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjItaGlm LmMKQEAgLTc2LDYgKzc2LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGUgcGNpZV9j bGtzW10gPSB7CiAJR0FURV9QQ0lFKENMS19TQVRBX1BNX0VOLCAic2F0YV9wbV9lbiIsICJ1bml2 cGxsMl9kNCIsIDMwKSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVz YyBjbGtfcnN0X2Rlc2MgPSB7CisJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkucnN0X2Jh bmtfbnIgPSAxLAorCS5yZWdfb2ZzID0gMHgzNCwKK307CisKIHN0YXRpYyBpbnQgY2xrX210NzYy Ml9zc3VzYnN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0 IGNsa19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtOTMsNyArOTksNyBAQCBzdGF0aWMg aW50IGNsa19tdDc2MjJfc3N1c2JzeXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJ cGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAx LCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIo bm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAlyZXR1cm4gcjsKIH0KQEAgLTExNSw3ICsxMjEsNyBA QCBzdGF0aWMgaW50IGNsa19tdDc2MjJfcGNpZXN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiAJCQkiY291bGQgbm90IHJlZ2lzdGVyIGNsb2NrIHByb3ZpZGVyOiAlczogJWRc biIsCiAJCQlwZGV2LT5uYW1lLCByKTsKIAotCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVy KG5vZGUsIDEsIDB4MzQsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0ZXJfcmVzZXRfY29u dHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjKTsKIAogCXJldHVybiByOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi5jIGIvZHJpdmVycy9jbGsvbWVkaWF0 ZWsvY2xrLW10NzYyMi5jCmluZGV4IDliN2ViY2NmNzViYy4uMTE1ZGI1NjRhNmQ0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLmMKKysrIGIvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyMi5jCkBAIC02MTAsNiArNjEwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qg bXRrX2NvbXBvc2l0ZSBwZXJpX211eGVzW10gPSB7CiAJTVVYKENMS19QRVJJQlVTX1NFTCwgInBl cmlidXNfY2tfc2VsIiwgcGVyaWJ1c19ja19wYXJlbnRzLCAweDA1QywgMCwgMSksCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjW10gPSB7CisJ LyogaW5mcmFzeXMgKi8KKwl7CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3Rf YmFua19uciA9IDEsCisJCS5yZWdfb2ZzID0gMHgzMCwKKwl9LAorCS8qIHBlcmljZmcgKi8KKwl7 CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFua19uciA9IDIsCisJCS5y ZWdfb2ZzID0gMHgwLAorCX0sCit9OworCiBzdGF0aWMgaW50IG10a190b3Bja2dlbl9pbml0KHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2Rh dGEgKmNsa19kYXRhOwpAQCAtNjYzLDcgKzY3OCw3IEBAIHN0YXRpYyBpbnQgbXRrX2luZnJhc3lz X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAocikKIAkJcmV0dXJuIHI7 CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAxLCAweDMwLCBNVEtfUlNU X1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3Rf ZGVzY1swXSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcxNCw3ICs3MjksNyBAQCBzdGF0aWMgaW50 IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCWNsa19w cmVwYXJlX2VuYWJsZShjbGtfZGF0YS0+aHdzW0NMS19QRVJJX1VBUlQwX1BEXS0+Y2xrKTsKIAot CW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsIDIsIDB4MCwgTVRLX1JTVF9TSU1Q TEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2Nb MV0pOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9j bGstbXQ3NjI5LWV0aC5jIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYwpp bmRleCBiYTI1NDhlZjQwMzEuLmMyMGM3ODUzNTAwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYworKysgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGst bXQ3NjI5LWV0aC5jCkBAIC03Niw2ICs3NiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19n YXRlIHNnbWlpX2Nsa3NbMl1bNF0gPSB7CiAJfQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfY2xrX3JzdF9kZXNjIGNsa19yc3RfZGVzYyA9IHsKKwkudmVyc2lvbiA9IE1US19SU1RfU0lN UExFLAorCS5yc3RfYmFua19uciA9IDEsCisJLnJlZ19vZnMgPSAweDM0LAorfTsKKwogc3RhdGlj IGludCBjbGtfbXQ3NjI5X2V0aHN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtOTIsNyArOTgs NyBAQCBzdGF0aWMgaW50IGNsa19tdDc2MjlfZXRoc3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIAkJCSJjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAl ZFxuIiwKIAkJCXBkZXYtPm5hbWUsIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgMSwgMHgzNCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9j b250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIHI7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjI5LWhpZi5jIGIvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyOS1oaWYuYwppbmRleCA1ODYzYWM3OTliNzAuLjVkN2VjODYxYWZh YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1oaWYuYworKysg Yi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjI5LWhpZi5jCkBAIC03MSw2ICs3MSwxMiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19nYXRlIHBjaWVfY2xrc1tdID0gewogCUdBVEVfUENJ RShDTEtfUENJRV9QMF9QSVBFX0VOLCAicGNpZV9wMF9waXBlX2VuIiwgInBjaWUwX3BpcGVfZW4i LCAyMyksCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3Jz dF9kZXNjID0geworCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJLnJzdF9iYW5rX25yID0g MSwKKwkucmVnX29mcyA9IDB4MzQsCit9OworCiBzdGF0aWMgaW50IGNsa19tdDc2Mjlfc3N1c2Jz eXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBjbGtfaHdf b25lY2VsbF9kYXRhICpjbGtfZGF0YTsKQEAgLTg4LDcgKzk0LDcgQEAgc3RhdGljIGludCBjbGtf bXQ3NjI5X3NzdXNic3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCSJj b3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAlZFxuIiwKIAkJCXBkZXYtPm5h bWUsIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMSwgMHgzNCwg TVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZj bGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIHI7CiB9CkBAIC0xMTAsNyArMTE2LDcgQEAgc3RhdGlj IGludCBjbGtfbXQ3NjI5X3BjaWVzeXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJ cGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAx LCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIo bm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxMzUuYyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1t dDgxMzUuYwppbmRleCBiOTQ0MzNhMWRkZTEuLmY1NTQ1NzRiMjU2NyAxMDA2NDQKLS0tIGEvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODEzNS5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVr L2Nsay1tdDgxMzUuYwpAQCAtNTE0LDYgKzUxNCwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10 a19jb21wb3NpdGUgcGVyaV9jbGtzW10gX19pbml0Y29uc3QgPSB7CiAJTVVYKENMS19QRVJJX1VB UlQzX1NFTCwgInVhcnQzX2NrX3NlbCIsIHVhcnRfY2tfc2VsX3BhcmVudHMsIDB4NDBjLCAzLCAx KSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rl c2NbXSA9IHsKKwkvKiBpbmZyYXN5cyAqLworCXsKKwkJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBM RSwKKwkJLnJzdF9iYW5rX25yID0gMiwKKwkJLnJlZ19vZnMgPSAweDMwLAorCX0sCisJLyogcGVy aWNmZyAqLworCXsKKwkJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkJLnJzdF9iYW5rX25y ID0gMiwKKwkJLnJlZ19vZnMgPSAweDAsCisJfQorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IG10 a190b3Bja2dlbl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIHsKIAlzdHJ1Y3QgY2xr X2h3X29uZWNlbGxfZGF0YSAqY2xrX2RhdGE7CkBAIC01NTksNyArNTc0LDcgQEAgc3RhdGljIHZv aWQgX19pbml0IG10a19pbmZyYXN5c19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAkJ cHJfZXJyKCIlcygpOiBjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVkXG4iLAog CQkJX19mdW5jX18sIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwg MiwgMHgzMCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVy KG5vZGUsICZjbGtfcnN0X2Rlc2NbMF0pOwogfQogQ0xLX09GX0RFQ0xBUkUobXRrX2luZnJhc3lz LCAibWVkaWF0ZWssbXQ4MTM1LWluZnJhY2ZnIiwgbXRrX2luZnJhc3lzX2luaXQpOwogCkBAIC01 ODcsNyArNjAyLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG10a19wZXJpY2ZnX2luaXQoc3RydWN0 IGRldmljZV9ub2RlICpub2RlKQogCQlwcl9lcnIoIiVzKCk6IGNvdWxkIG5vdCByZWdpc3RlciBj bG9jayBwcm92aWRlcjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7CiAKLQltdGtfcmVnaXN0ZXJf cmVzZXRfY29udHJvbGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lz dGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzY1sxXSk7CiB9CiBDTEtfT0Zf REVDTEFSRShtdGtfcGVyaWNmZywgIm1lZGlhdGVrLG10ODEzNS1wZXJpY2ZnIiwgbXRrX3Blcmlj ZmdfaW5pdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMu YyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMuYwppbmRleCA5ZmJmMjZjOTY3OTUu LjFlODYyMTBlOWM2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE3 My5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMuYwpAQCAtODE5LDYgKzgx OSwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19nYXRlIHZlbmNsdF9jbGtzW10gX19pbml0 Y29uc3QgPSB7CiAJR0FURV9WRU5DTFQoQ0xLX1ZFTkNMVF9DS0UxLCAidmVuY2x0X2NrZTEiLCAi dmVuY2x0X3NlbCIsIDQpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3JzdF9k ZXNjIGNsa19yc3RfZGVzY1tdID0geworCS8qIGluZnJhc3lzICovCisJeworCQkudmVyc2lvbiA9 IE1US19SU1RfU0lNUExFLAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MzAs CisJfSwKKwkvKiBwZXJpY2ZnICovCisJeworCQkudmVyc2lvbiA9IE1US19SU1RfU0lNUExFLAor CQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MCwKKwl9Cit9OworCiBzdGF0aWMg c3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEgKm10ODE3M190b3BfY2xrX2RhdGEgX19pbml0ZGF0 YTsKIHN0YXRpYyBzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqbXQ4MTczX3BsbF9jbGtfZGF0 YSBfX2luaXRkYXRhOwogCkBAIC04ODIsNyArODk3LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG10 a19pbmZyYXN5c19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAkJcHJfZXJyKCIlcygp OiBjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVkXG4iLAogCQkJX19mdW5jX18s IHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMiwgMHgzMCwgTVRL X1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtf cnN0X2Rlc2NbMF0pOwogfQogQ0xLX09GX0RFQ0xBUkUobXRrX2luZnJhc3lzLCAibWVkaWF0ZWss bXQ4MTczLWluZnJhY2ZnIiwgbXRrX2luZnJhc3lzX2luaXQpOwogCkBAIC05MTAsNyArOTI1LDcg QEAgc3RhdGljIHZvaWQgX19pbml0IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IGRldmljZV9ub2Rl ICpub2RlKQogCQlwcl9lcnIoIiVzKCk6IGNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRl cjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJv bGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2Nv bnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzY1sxXSk7CiB9CiBDTEtfT0ZfREVDTEFSRShtdGtf cGVyaWNmZywgIm1lZGlhdGVrLG10ODE3My1wZXJpY2ZnIiwgbXRrX3BlcmljZmdfaW5pdCk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYyBiL2RyaXZlcnMv Y2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYwppbmRleCBkMGU4OWIwMTVmZmMuLjU3MDhjNWQ4YjMw MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE4My5jCisrKyBiL2Ry aXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYwpAQCAtMTE1Myw2ICsxMTUzLDEyIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3BsbF9kYXRhIHBsbHNbXSA9IHsKIAkJMCwgMCwgMzIsIDgs IDB4MDJCNCwgMSwgMHgwMkJDLCAweDAwMTQsIDEsIDB4MDJCOCwgMCwgMHgwMkI0KSwKIH07CiAK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7CisJ LnZlcnNpb24gPSBNVEtfUlNUX1NFVF9DTFIsCisJLnJzdF9iYW5rX25yID0gNCwKKwkucmVnX29m cyA9IElORlJBX1JTVDBfU0VUX09GRlNFVCwKK307CisKIHN0YXRpYyBpbnQgY2xrX210ODE4M19h cG1peGVkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNs a19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtMTI0MCw4ICsxMjQ2LDcgQEAgc3RhdGlj IGludCBjbGtfbXQ4MTgzX2luZnJhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiAJCXJldHVybiByOwogCX0KIAotCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUs IDQsCi0JCQkJICAgICAgSU5GUkFfUlNUMF9TRVRfT0ZGU0VULCBNVEtfUlNUX1NFVF9DTFIpOwor CW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJ cmV0dXJuIHI7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jIGIv ZHJpdmVycy9jbGsvbWVkaWF0ZWsvcmVzZXQuYwppbmRleCAzMzc0NWY3ZjE0NGYuLjQ3YmM2YjE4 NDJmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvcmVzZXQuYworKysgYi9kcml2 ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jCkBAIC0xMiwxNCArMTIsMTkgQEAKIAogI2luY2x1ZGUg InJlc2V0LmgiCiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IG10a19jbGtfcnN0X2RhdGEgKnRvX210 a19jbGtfcnN0X2RhdGEoc3RydWN0IHJlc2V0X2NvbnRyb2xsZXJfZGV2ICpyY2RldikKK3sKKwly ZXR1cm4gY29udGFpbmVyX29mKHJjZGV2LCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGF0YSwgcmNkZXYp OworfQorCiBzdGF0aWMgaW50IG10a19yZXNldF91cGRhdGUoc3RydWN0IHJlc2V0X2NvbnRyb2xs ZXJfZGV2ICpyY2RldiwKIAkJCSAgICB1bnNpZ25lZCBsb25nIGlkLCBib29sIGRlYXNzZXJ0KQog ewotCXN0cnVjdCBtdGtfcmVzZXQgKmRhdGEgPSBjb250YWluZXJfb2YocmNkZXYsIHN0cnVjdCBt dGtfcmVzZXQsIHJjZGV2KTsKKwlzdHJ1Y3QgbXRrX2Nsa19yc3RfZGF0YSAqZGF0YSA9IHRvX210 a19jbGtfcnN0X2RhdGEocmNkZXYpOwogCXVuc2lnbmVkIGludCB2YWwgPSBkZWFzc2VydCA/IDAg OiB+MDsKIAogCXJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMoZGF0YS0+cmVnbWFwLAotCQkJCSAg ZGF0YS0+cmVnb2ZzICsgKChpZCAvIDMyKSA8PCAyKSwKKwkJCQkgIGRhdGEtPmRlc2MtPnJlZ19v ZnMgKyAoKGlkIC8gMzIpIDw8IDIpLAogCQkJCSAgQklUKGlkICUgMzIpLCB2YWwpOwogfQogCkBA IC00OSwxMSArNTQsMTEgQEAgc3RhdGljIGludCBtdGtfcmVzZXQoc3RydWN0IHJlc2V0X2NvbnRy b2xsZXJfZGV2ICpyY2RldiwgdW5zaWduZWQgbG9uZyBpZCkKIHN0YXRpYyBpbnQgbXRrX3Jlc2V0 X3VwZGF0ZV9zZXRfY2xyKHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNkZXYsCiAJCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaWQsIGJvb2wgZGVhc3NlcnQpCiB7Ci0Jc3RydWN0IG10a19yZXNl dCAqZGF0YSA9IGNvbnRhaW5lcl9vZihyY2Rldiwgc3RydWN0IG10a19yZXNldCwgcmNkZXYpOwor CXN0cnVjdCBtdGtfY2xrX3JzdF9kYXRhICpkYXRhID0gdG9fbXRrX2Nsa19yc3RfZGF0YShyY2Rl dik7CiAJdW5zaWduZWQgaW50IGRlYXNzZXJ0X29mcyA9IGRlYXNzZXJ0ID8gMHg0IDogMDsKIAog CXJldHVybiByZWdtYXBfd3JpdGUoZGF0YS0+cmVnbWFwLAotCQkJICAgIGRhdGEtPnJlZ29mcyAr ICgoaWQgLyAzMikgPDwgNCkgKyBkZWFzc2VydF9vZnMsCisJCQkgICAgZGF0YS0+ZGVzYy0+cmVn X29mcyArICgoaWQgLyAzMikgPDwgNCkgKyBkZWFzc2VydF9vZnMsCiAJCQkgICAgQklUKGlkICUg MzIpKTsKIH0KIApAQCAtOTMsMTUgKzk4LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVzZXRf Y29udHJvbF9vcHMgbXRrX3Jlc2V0X29wc19zZXRfY2xyID0gewogfTsKIAogdm9pZCBtdGtfcmVn aXN0ZXJfcmVzZXRfY29udHJvbGxlcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAotCQkJCSAgIHUz MiByc3RfYmFua19uciwgdTE2IHJlZ19vZnMsCi0JCQkJICAgZW51bSBtdGtfcmVzZXRfdmVyc2lv biB2ZXJzaW9uKQorCQkJCSAgIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3JzdF9kZXNjICpkZXNjKQog ewotCXN0cnVjdCBtdGtfcmVzZXQgKmRhdGE7Ci0JaW50IHJldDsKIAlzdHJ1Y3QgcmVnbWFwICpy ZWdtYXA7CiAJY29uc3Qgc3RydWN0IHJlc2V0X2NvbnRyb2xfb3BzICpyY29wcyA9IE5VTEw7CisJ c3RydWN0IG10a19jbGtfcnN0X2RhdGEgKmRhdGE7CisJaW50IHJldDsKKworCWlmICghZGVzYykg eworCQlwcl9lcnIoIm10ayBjbG9jayByZXNldCBkZXNjIGlzIE5VTExcbiIpOworCQlyZXR1cm47 CisJfQogCi0Jc3dpdGNoICh2ZXJzaW9uKSB7CisJc3dpdGNoIChkZXNjLT52ZXJzaW9uKSB7CiAJ Y2FzZSBNVEtfUlNUX1NJTVBMRToKIAkJcmNvcHMgPSAmbXRrX3Jlc2V0X29wczsKIAkJYnJlYWs7 CkBAIC0xMDksNyArMTE4LDcgQEAgdm9pZCBtdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihz dHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAogCQlyY29wcyA9ICZtdGtfcmVzZXRfb3BzX3NldF9jbHI7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXByX2VycigiVW5rbm93biByZXNldCB2ZXJzaW9uICVk XG4iLCB2ZXJzaW9uKTsKKwkJcHJfZXJyKCJVbmtub3duIHJlc2V0IHZlcnNpb24gJWRcbiIsIGRl c2MtPnZlcnNpb24pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjMsMTAgKzEzMiwxMCBAQCB2b2lk IG10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCiAJ aWYgKCFkYXRhKQogCQlyZXR1cm47CiAKKwlkYXRhLT5kZXNjID0gZGVzYzsKIAlkYXRhLT5yZWdt YXAgPSByZWdtYXA7Ci0JZGF0YS0+cmVnb2ZzID0gcmVnX29mczsKIAlkYXRhLT5yY2Rldi5vd25l ciA9IFRISVNfTU9EVUxFOwotCWRhdGEtPnJjZGV2Lm5yX3Jlc2V0cyA9IHJzdF9iYW5rX25yICog MzI7CisJZGF0YS0+cmNkZXYubnJfcmVzZXRzID0gZGVzYy0+cnN0X2JhbmtfbnIgKiAzMjsKIAlk YXRhLT5yY2Rldi5vcHMgPSByY29wczsKIAlkYXRhLT5yY2Rldi5vZl9ub2RlID0gbnA7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL3Jlc2V0LmggYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9yZXNldC5oCmluZGV4IDg1MTI0NGJiZDJhZC4uYjRjMmI0NjhkYTRhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5oCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVr L3Jlc2V0LmgKQEAgLTIxLDIxICsyMSwzNiBAQCBlbnVtIG10a19yZXNldF92ZXJzaW9uIHsKIAlN VEtfUlNUX01BWCwKIH07CiAKLXN0cnVjdCBtdGtfcmVzZXQgeworLyoqCisgKiBzdHJ1Y3QgbXRr X2Nsa19yc3RfZGVzYyAtIERlc2NyaXB0aW9uIG9mIE1lZGlhVGVrIGNsb2NrIHJlc2V0LgorICog QHZlcnNpb246IFJlc2V0IHZlcnNpb24gd2hpY2ggaXMgZGVmaW5lZCBpbiBlbnVtIG10a19yZXNl dF92ZXJzaW9uLgorICogQHJlZ19vZnM6IEJhc2Ugb2Zmc2V0IG9mIHRoZSByZXNldCByZWdpc3Rl ci4KKyAqIEByc3RfYmFua19ucjogUXVhbnRpdHkgb2YgcmVzZXQgYmFuay4KKyAqLworc3RydWN0 IG10a19jbGtfcnN0X2Rlc2MgeworCWVudW0gbXRrX3Jlc2V0X3ZlcnNpb24gdmVyc2lvbjsKKwl1 MTYgcmVnX29mczsKKwl1MzIgcnN0X2JhbmtfbnI7Cit9OworCisvKioKKyAqIHN0cnVjdCBtdGtf Y2xrX3JzdF9kYXRhIC0gRGF0YSBvZiBNZWRpYVRlayBjbG9jayByZXNldCBjb250cm9sbGVyLgor ICogQHJlZ21hcDogUG9pbnRlciB0byBiYXNlIGFkZHJlc3Mgb2YgcmVzZXQgcmVnaXN0ZXIgYWRk cmVzcy4KKyAqIEByY2RldjogUmVzZXQgY29udHJvbGxlciBkZXZpY2UuCisgKiBAZGVzYzogUG9p bnRlciB0byBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzZXQgY29udHJvbGxlci4KKyAqLworc3RydWN0 IG10a19jbGtfcnN0X2RhdGEgewogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKLQlpbnQgcmVnb2Zz OwogCXN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiByY2RldjsKKwljb25zdCBzdHJ1Y3QgbXRr X2Nsa19yc3RfZGVzYyAqZGVzYzsKIH07CiAKIC8qKgogICogbXRrX3JlZ2lzdGVyX3Jlc2V0X2Nv bnRyb2xsZXIgLSBSZWdpc3RlciBNZWRpYVRlayBjbG9jayByZXNldCBjb250cm9sbGVyCiAgKiBA bnA6IFBvaW50ZXIgdG8gZGV2aWNlIG5vZGUuCi0gKiBAcnN0X2JhbmtfbnI6IFF1YW50aXR5IG9m IHJlc2V0IGJhbmsuCi0gKiBAcmVnX29mczogQmFzZSBvZmZzZXQgb2YgdGhlIHJlc2V0IHJlZ2lz dGVyLgotICogQHZlcnNpb246IFZlcnNpb24gb2YgTWVkaWFUZWsgY2xvY2sgcmVzZXQgY29udHJv bGxlci4KKyAqIEBkZXNjOiBDb25zdGFudCBwb2ludGVyIHRvIGRlc2NyaXB0aW9uIG9mIGNsb2Nr IHJlc2V0LgogICovCiB2b2lkIG10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKHN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAsCi0JCQkJICAgdTMyIHJzdF9iYW5rX25yLCB1MTYgcmVnX29mcywKLQkJ CQkgICBlbnVtIG10a19yZXNldF92ZXJzaW9uIHZlcnNpb24pOworCQkJCSAgIGNvbnN0IHN0cnVj dCBtdGtfY2xrX3JzdF9kZXNjICpkZXNjKTsKIAogI2VuZGlmIC8qIF9fRFJWX0NMS19NVEtfUkVT RVRfSCAqLwotLSAKMi4xOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KTGludXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1tZWRpYXRlawo= 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B5F3EC433EF for ; Mon, 23 May 2022 09:36:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9Tmf94g63xT5USUtTobQ7T2+rmz0+4ZG+TlBGhzlp+o=; b=tDlEVStuKOAHJv HoIV/sboM1iBW+5xBNpdBpnrnVcA130OC0M+4H/eMmXhMDd/jzxT3bMm52nLzoRW2ZVfeTA1HmEjj G0fG91UbeVq3gbD/r4vsGb09TzuHJBJvWxrP6NpMRu3j5bMnuRdxtYEPhusfiK2BqDf2KuDju5tKm kWhFsepJ9PVPY/Kn9JEwXdYuBgIWO1lgUYPC1NKaFOtt0E5xoU2ppZdO/F83M9yZG91hSJaOZipu/ D3iDRwwtEFbYMRH+pmUBy2xa8R+3yWYj9/iK4eSSxggJE4LqKCaVXrPdQBSyUf9s8BJaYzQyv0KiQ BJ+CUr+UQoKJrtAvyTlQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt4T6-002t3v-Ro; Mon, 23 May 2022 09:35:17 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt2oq-002A7b-Rg; Mon, 23 May 2022 07:49:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=QgH/aO/iwfctlyW9nMq+hgFS7JVPHclA/JVQF6km00k=; b=eoX0cPx2rPPrY/jHbl8JkZQSFs +zJQcGeB61FYJeTPHKnnjFIJJHLUslzYni5XOCvKUAH+AXw57Tl5gjjNbe5PVQ5OohNlch+8nkUAh P/OJoii+99LhXtHPB/FFIcKtnBOnZOW1h6sEIX5GedNPuqELtCsGJu6SUuJyuuCUpIzzQDt80PKxY pTLn/nbvOV4mDrzZzSv1XCVcoMkCFnsUVV+LDnsbuYkQdSVnm3AebR7MvQMWGCwQqo0efTNlg0HEl IrDvg95NTHjs767xMjXivLlyL/9bJJvwoGHV69OFSAmnz50O4FB5LqjeEwVWYWdG5wkWZVn5Amcsq Y/lYaA1Q==; Received: from mailgw02.mediatek.com ([216.200.240.185]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt18S-000sci-7B; Mon, 23 May 2022 06:01:50 +0000 X-UUID: 221cfa98af7a4ea0b2380f4c40ae562a-20220522 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.5, REQID:4b1f0bc1-bb60-451d-a937-1fcde4adbab0, OB:0, LO B:0,IP:0,URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:0,FILE:0,RULE:Release_Ham,ACT ION:release,TS:-5 X-CID-META: VersionHash:2a19b09, CLOUDID:af7f2ee3-edbf-4bd4-8a34-dfc5f7bb086d, C OID:IGNORED,Recheck:0,SF:nil,TC:nil,Content:0,EDM:-3,IP:nil,URL:0,File:nil ,QS:0,BEC:nil X-UUID: 221cfa98af7a4ea0b2380f4c40ae562a-20220522 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 133166184; Sun, 22 May 2022 23:01:22 -0700 Received: from mtkmbs11n2.mediatek.inc (172.21.101.187) by MTKMBS62N2.mediatek.inc (172.29.193.42) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sun, 22 May 2022 23:01:00 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs11n2.mediatek.inc (172.21.101.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.3; Mon, 23 May 2022 14:00:58 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 23 May 2022 14:00:57 +0800 From: Rex-BC Chen To: , , , , CC: , , , , , , , , , , , , Rex-BC Chen Subject: [PATCH v8 06/19] clk: mediatek: reset: Revise structure to control reset register Date: Mon, 23 May 2022 14:00:43 +0800 Message-ID: <20220523060056.24396-7-rex-bc.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20220523060056.24396-1-rex-bc.chen@mediatek.com> References: <20220523060056.24396-1-rex-bc.chen@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220523_070144_739355_CCAE7B51 X-CRM114-Status: GOOD ( 15.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VG8gZGVjbGFyZSB0aGUgcmVzZXQgZGF0YSBlYXNpZXIsIHdlIGFkZCBhIHN0cnVjdXJlIHRvIGRv IHRoaXMgaW5zdGVhZApvZiB1c2luZyBtYW55IGlucHV0IHZhcmlhYmxlcyB0byBtdGtfcmVnaXN0 ZXJfcmVzZXRfY29udHJvbGxlcigpLgoKLSBBZGQgbXRrX2Nsa19yc3RfZGVzYyB0byBkZWZpbmUg dGhlIHJlc2V0IGRlc2NyaXB0aW9uIHdoZW4gcmVnaXN0ZXJpbmcKICB0aGUgcmVzZXQgY29udHJv bGxlci4KLSBSZW5hbWUgIm10a19yZXNldCIgdG8gIm10a19jbGtfcnN0X2RhdGEiLiBXZSB1c2Ug aXQgdG8gc3RvcmUgZGF0YSBvZgogIHJlc2V0IGNvbnRyb2xsZXIuCi0gRG9jdW1lbnQgbXRrX2Ns a19yc3RfZGVzYyBhbmQgbXRrX2Nsa19yc3RfZGF0YS4KLSBNb2RpZnkgdGhlIGRvY3VtZW50YXRp b24gb2YgbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIuCi0gRXh0cmFjdCBjb250YWluZXJf b2YgaW4gdXBkYXRlIGZ1bmN0aW9ucyB0byB0b19tdGtfY2xrX3JzdF9kYXRhKCkuCgpTaWduZWQt b2ZmLWJ5OiBSZXgtQkMgQ2hlbiA8cmV4LWJjLmNoZW5AbWVkaWF0ZWsuY29tPgpSZXZpZXdlZC1i eTogQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9A Y29sbGFib3JhLmNvbT4KUmV2aWV3ZWQtYnk6IE7DrWNvbGFzIEYuIFIuIEEuIFByYWRvIDxuZnJh cHJhZG9AY29sbGFib3JhLmNvbT4KVGVzdGVkLWJ5OiBOw61jb2xhcyBGLiBSLiBBLiBQcmFkbyA8 bmZyYXByYWRvQGNvbGxhYm9yYS5jb20+Ci0tLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10 MjcwMS1ldGguYyB8ICA4ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt ZzNkLmMgfCAgOCArKysrKystCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLWhpZi5j IHwgIDggKysrKysrLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jICAgICB8IDE5 ICsrKysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jICAgICB8 IDE5ICsrKysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi1ldGgu YyB8ICA4ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjItaGlmLmMgfCAx MCArKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi5jICAgICB8IDE5ICsr KysrKysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYyB8ICA4 ICsrKysrKy0KIGRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjktaGlmLmMgfCAxMCArKysr KystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODEzNS5jICAgICB8IDE5ICsrKysrKysr KysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE3My5jICAgICB8IDE5ICsrKysr KysrKysrKystLQogZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE4My5jICAgICB8ICA5ICsr KysrKy0tCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jICAgICAgICAgIHwgMzMgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5oICAgICAg ICAgIHwgMjkgKysrKysrKysrKysrKysrKystLS0tLS0KIDE1IGZpbGVzIGNoYW5nZWQsIDE4NiBp bnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9t ZWRpYXRlay9jbGstbXQyNzAxLWV0aC5jIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Mjcw MS1ldGguYwppbmRleCA1NzkzNDNlMGJiYTYuLjI3MGQxNWNlNThiZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1ldGguYworKysgYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9jbGstbXQyNzAxLWV0aC5jCkBAIC0zNiw2ICszNiwxMiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG10a19nYXRlIGV0aF9jbGtzW10gPSB7CiAJR0FURV9FVEgoQ0xLX0VUSFNZU19DUllQVE8s ICJjcnlwdG9fY2xrIiwgImV0aGlmX3NlbCIsIDI5KSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7CisJLnZlcnNpb24gPSBNVEtfUlNU X1NJTVBMRSwKKwkucnN0X2JhbmtfbnIgPSAxLAorCS5yZWdfb2ZzID0gMHgzNCwKK307CisKIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX21hdGNoX2Nsa19tdDI3MDFfZXRoW10g PSB7CiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3MDEtZXRoc3lzIiwgfSwKIAl7fQpA QCAtNTgsNyArNjQsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MDFfZXRoX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQkiY291bGQgbm90IHJlZ2lzdGVyIGNsb2NrIHByb3Zp ZGVyOiAlczogJWRcbiIsCiAJCQlwZGV2LT5uYW1lLCByKTsKIAotCW10a19yZWdpc3Rlcl9yZXNl dF9jb250cm9sbGVyKG5vZGUsIDEsIDB4MzQsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0 ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjKTsKIAogCXJldHVybiByOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1nM2QuYyBiL2Ry aXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEtZzNkLmMKaW5kZXggYmQ3N2VkMjViMTAxLi45 Y2ZkNTg5OTM5ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt ZzNkLmMKKysrIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS1nM2QuYwpAQCAtMzUs NiArMzUsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfZ2F0ZSBnM2RfY2xrc1tdID0gewog CUdBVEVfRzNEKENMS19HM0RTWVNfQ09SRSwgImczZF9jb3JlIiwgIm1mZ19zZWwiLCAwKSwKIH07 CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7 CisJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkucnN0X2JhbmtfbnIgPSAxLAorCS5yZWdf b2ZzID0gMHhjLAorfTsKKwogc3RhdGljIGludCBjbGtfbXQyNzAxX2czZHN5c19pbml0KHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEg KmNsa19kYXRhOwpAQCAtNTIsNyArNTgsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MDFfZzNkc3lz X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCSJjb3VsZCBub3QgcmVnaXN0 ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAlZFxuIiwKIAkJCXBkZXYtPm5hbWUsIHIpOwogCi0JbXRr X3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMSwgMHhjLCBNVEtfUlNUX1NJTVBMRSk7 CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzYyk7CiAK IAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3 MDEtaGlmLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLWhpZi5jCmluZGV4IGFl Mzg0OWI1OGRiOC4uYTZiODEyZmNjOTIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRl ay9jbGstbXQyNzAxLWhpZi5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEt aGlmLmMKQEAgLTMzLDYgKzMzLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGUgaGlm X2Nsa3NbXSA9IHsKIAlHQVRFX0hJRihDTEtfSElGU1lTX1BDSUUyLCAicGNpZTJfY2xrIiwgImV0 aHBsbF81MDBtX2NrIiwgMjYpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3Jz dF9kZXNjIGNsa19yc3RfZGVzYyA9IHsKKwkudmVyc2lvbiA9IE1US19SU1RfU0lNUExFLAorCS5y c3RfYmFua19uciA9IDEsCisJLnJlZ19vZnMgPSAweDM0LAorfTsKKwogc3RhdGljIGNvbnN0IHN0 cnVjdCBvZl9kZXZpY2VfaWQgb2ZfbWF0Y2hfY2xrX210MjcwMV9oaWZbXSA9IHsKIAl7IC5jb21w YXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1oaWZzeXMiLCB9LAogCXt9CkBAIC01Nyw3ICs2Myw3 IEBAIHN0YXRpYyBpbnQgY2xrX210MjcwMV9oaWZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAkJcmV0dXJuIHI7CiAJfQogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgMSwgMHgzNCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9j b250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMgYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9jbGstbXQyNzAxLmMKaW5kZXggMThmOTA2NTdhNjQzLi5mMTY1MTI2MjMyZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYworKysgYi9kcml2ZXJzL2Ns ay9tZWRpYXRlay9jbGstbXQyNzAxLmMKQEAgLTczNSw2ICs3MzUsMjEgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfZml4ZWRfZmFjdG9yIGluZnJhX2ZpeGVkX2RpdnNbXSA9IHsKIAlGQUNUT1Io Q0xLX0lORlJBX0NMS18xM00sICJjbGsxM20iLCAiY2xrMjZtIiwgMSwgMiksCiB9OwogCitzdGF0 aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjW10gPSB7CisJLyog aW5mcmFzeXMgKi8KKwl7CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFu a19uciA9IDIsCisJCS5yZWdfb2ZzID0gMHgzMCwKKwl9LAorCS8qIHBlcmljZmcgKi8KKwl7CisJ CS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFua19uciA9IDIsCisJCS5yZWdf b2ZzID0gMHgwLAorCX0sCit9OworCiBzdGF0aWMgc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEg KmluZnJhX2Nsa19kYXRhOwogCiBzdGF0aWMgdm9pZCBfX2luaXQgbXRrX2luZnJhc3lzX2luaXRf ZWFybHkoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQpAQCAtNzg3LDcgKzgwMiw3IEBAIHN0YXRp YyBpbnQgbXRrX2luZnJhc3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlp ZiAocikKIAkJcmV0dXJuIHI7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2Rl LCAyLCAweDMwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgJmNsa19yc3RfZGVzY1swXSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTkxMCw3ICs5 MjUsNyBAQCBzdGF0aWMgaW50IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29u dHJvbGxlcihub2RlLCAyLCAweDAsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0ZXJfcmVz ZXRfY29udHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjWzFdKTsKIAogCXJldHVybiAwOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jIGIvZHJpdmVycy9j bGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jCmluZGV4IDMzODVmYzk2MzQwOS4uYzdhOGFhZmQ0NGNj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzEyLmMKKysrIGIvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcxMi5jCkBAIC0xMjU4LDYgKzEyNTgsMjEgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBtdGtfcGxsX2RhdGEgcGxsc1tdID0gewogCQkwLCAzMSwgMHgwMzAw LCA0LCAwLCAwLCAwLCAweDAzMDQsIDApLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtf Y2xrX3JzdF9kZXNjIGNsa19yc3RfZGVzY1tdID0geworCS8qIGluZnJhICovCisJeworCQkudmVy c2lvbiA9IE1US19SU1RfU0lNUExFLAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9 IDB4MzAsCisJfSwKKwkvKiBwZXJpICovCisJeworCQkudmVyc2lvbiA9IE1US19SU1RfU0lNUExF LAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MCwKKwl9LAorfTsKKwogc3Rh dGljIGludCBjbGtfbXQyNzEyX2FwbWl4ZWRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIHsKIAlzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqY2xrX2RhdGE7CkBAIC0xMzYx LDcgKzEzNzYsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MTJfaW5mcmFfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAkJcHJfZXJyKCIlcygpOiBjb3VsZCBub3QgcmVnaXN0ZXIg Y2xvY2sgcHJvdmlkZXI6ICVkXG4iLAogCQkJX19mdW5jX18sIHIpOwogCi0JbXRrX3JlZ2lzdGVy X3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMiwgMHgzMCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19y ZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2NbMF0pOwogCiAJcmV0 dXJuIHI7CiB9CkBAIC0xMzgzLDcgKzEzOTgsNyBAQCBzdGF0aWMgaW50IGNsa19tdDI3MTJfcGVy aV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlwcl9lcnIoIiVzKCk6IGNv dWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7 CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJ TVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVz Y1sxXSk7CiAKIAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVr L2Nsay1tdDc2MjItZXRoLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLWV0aC5j CmluZGV4IDQyNDEwNWI5MWI3ZC4uNDBlZWZlZDNkMTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ns ay9tZWRpYXRlay9jbGstbXQ3NjIyLWV0aC5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Ns ay1tdDc2MjItZXRoLmMKQEAgLTY1LDYgKzY1LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRr X2dhdGUgc2dtaWlfY2xrc1tdID0gewogCQkgICAic3N1c2JfY2RyX2ZiIiwgNSksCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjID0geworCS52 ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJLnJzdF9iYW5rX25yID0gMSwKKwkucmVnX29mcyA9 IDB4MzQsCit9OworCiBzdGF0aWMgaW50IGNsa19tdDc2MjJfZXRoc3lzX2luaXQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqY2xr X2RhdGE7CkBAIC04Miw3ICs4OCw3IEBAIHN0YXRpYyBpbnQgY2xrX210NzYyMl9ldGhzeXNfaW5p dChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBj bG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJcGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVn aXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAxLCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJ bXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAly ZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjIt aGlmLmMgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLWhpZi5jCmluZGV4IDg4YmNj ZjU5NWVlNC4uY2EyOWQ5M2NlMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9j bGstbXQ3NjIyLWhpZi5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDc2MjItaGlm LmMKQEAgLTc2LDYgKzc2LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2dhdGUgcGNpZV9j bGtzW10gPSB7CiAJR0FURV9QQ0lFKENMS19TQVRBX1BNX0VOLCAic2F0YV9wbV9lbiIsICJ1bml2 cGxsMl9kNCIsIDMwKSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVz YyBjbGtfcnN0X2Rlc2MgPSB7CisJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkucnN0X2Jh bmtfbnIgPSAxLAorCS5yZWdfb2ZzID0gMHgzNCwKK307CisKIHN0YXRpYyBpbnQgY2xrX210NzYy Ml9zc3VzYnN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0 IGNsa19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtOTMsNyArOTksNyBAQCBzdGF0aWMg aW50IGNsa19tdDc2MjJfc3N1c2JzeXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJ cGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAx LCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIo bm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAlyZXR1cm4gcjsKIH0KQEAgLTExNSw3ICsxMjEsNyBA QCBzdGF0aWMgaW50IGNsa19tdDc2MjJfcGNpZXN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiAJCQkiY291bGQgbm90IHJlZ2lzdGVyIGNsb2NrIHByb3ZpZGVyOiAlczogJWRc biIsCiAJCQlwZGV2LT5uYW1lLCByKTsKIAotCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVy KG5vZGUsIDEsIDB4MzQsIE1US19SU1RfU0lNUExFKTsKKwltdGtfcmVnaXN0ZXJfcmVzZXRfY29u dHJvbGxlcihub2RlLCAmY2xrX3JzdF9kZXNjKTsKIAogCXJldHVybiByOwogfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyMi5jIGIvZHJpdmVycy9jbGsvbWVkaWF0 ZWsvY2xrLW10NzYyMi5jCmluZGV4IDliN2ViY2NmNzViYy4uMTE1ZGI1NjRhNmQ0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjIyLmMKKysrIGIvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyMi5jCkBAIC02MTAsNiArNjEwLDIxIEBAIHN0YXRpYyBzdHJ1Y3Qg bXRrX2NvbXBvc2l0ZSBwZXJpX211eGVzW10gPSB7CiAJTVVYKENMS19QRVJJQlVTX1NFTCwgInBl cmlidXNfY2tfc2VsIiwgcGVyaWJ1c19ja19wYXJlbnRzLCAweDA1QywgMCwgMSksCiB9OwogCitz dGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3JzdF9kZXNjW10gPSB7CisJ LyogaW5mcmFzeXMgKi8KKwl7CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3Rf YmFua19uciA9IDEsCisJCS5yZWdfb2ZzID0gMHgzMCwKKwl9LAorCS8qIHBlcmljZmcgKi8KKwl7 CisJCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJCS5yc3RfYmFua19uciA9IDIsCisJCS5y ZWdfb2ZzID0gMHgwLAorCX0sCit9OworCiBzdGF0aWMgaW50IG10a190b3Bja2dlbl9pbml0KHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2Rh dGEgKmNsa19kYXRhOwpAQCAtNjYzLDcgKzY3OCw3IEBAIHN0YXRpYyBpbnQgbXRrX2luZnJhc3lz X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAocikKIAkJcmV0dXJuIHI7 CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAxLCAweDMwLCBNVEtfUlNU X1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3Rf ZGVzY1swXSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcxNCw3ICs3MjksNyBAQCBzdGF0aWMgaW50 IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCWNsa19w cmVwYXJlX2VuYWJsZShjbGtfZGF0YS0+aHdzW0NMS19QRVJJX1VBUlQwX1BEXS0+Y2xrKTsKIAot CW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsIDIsIDB4MCwgTVRLX1JTVF9TSU1Q TEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2Nb MV0pOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9j bGstbXQ3NjI5LWV0aC5jIGIvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYwpp bmRleCBiYTI1NDhlZjQwMzEuLmMyMGM3ODUzNTAwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyOS1ldGguYworKysgYi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGst bXQ3NjI5LWV0aC5jCkBAIC03Niw2ICs3NiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19n YXRlIHNnbWlpX2Nsa3NbMl1bNF0gPSB7CiAJfQogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfY2xrX3JzdF9kZXNjIGNsa19yc3RfZGVzYyA9IHsKKwkudmVyc2lvbiA9IE1US19SU1RfU0lN UExFLAorCS5yc3RfYmFua19uciA9IDEsCisJLnJlZ19vZnMgPSAweDM0LAorfTsKKwogc3RhdGlj IGludCBjbGtfbXQ3NjI5X2V0aHN5c19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiB7CiAJc3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtOTIsNyArOTgs NyBAQCBzdGF0aWMgaW50IGNsa19tdDc2MjlfZXRoc3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIAkJCSJjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAl ZFxuIiwKIAkJCXBkZXYtPm5hbWUsIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xs ZXIobm9kZSwgMSwgMHgzNCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9j b250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIHI7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjI5LWhpZi5jIGIvZHJpdmVycy9jbGsv bWVkaWF0ZWsvY2xrLW10NzYyOS1oaWYuYwppbmRleCA1ODYzYWM3OTliNzAuLjVkN2VjODYxYWZh YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NzYyOS1oaWYuYworKysg Yi9kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ3NjI5LWhpZi5jCkBAIC03MSw2ICs3MSwxMiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19nYXRlIHBjaWVfY2xrc1tdID0gewogCUdBVEVfUENJ RShDTEtfUENJRV9QMF9QSVBFX0VOLCAicGNpZV9wMF9waXBlX2VuIiwgInBjaWUwX3BpcGVfZW4i LCAyMyksCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19jbGtfcnN0X2Rlc2MgY2xrX3Jz dF9kZXNjID0geworCS52ZXJzaW9uID0gTVRLX1JTVF9TSU1QTEUsCisJLnJzdF9iYW5rX25yID0g MSwKKwkucmVnX29mcyA9IDB4MzQsCit9OworCiBzdGF0aWMgaW50IGNsa19tdDc2Mjlfc3N1c2Jz eXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBjbGtfaHdf b25lY2VsbF9kYXRhICpjbGtfZGF0YTsKQEAgLTg4LDcgKzk0LDcgQEAgc3RhdGljIGludCBjbGtf bXQ3NjI5X3NzdXNic3lzX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCSJj b3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVzOiAlZFxuIiwKIAkJCXBkZXYtPm5h bWUsIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMSwgMHgzNCwg TVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZj bGtfcnN0X2Rlc2MpOwogCiAJcmV0dXJuIHI7CiB9CkBAIC0xMTAsNyArMTE2LDcgQEAgc3RhdGlj IGludCBjbGtfbXQ3NjI5X3BjaWVzeXNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQogCQkJImNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRlcjogJXM6ICVkXG4iLAogCQkJ cGRldi0+bmFtZSwgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihub2RlLCAx LCAweDM0LCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIo bm9kZSwgJmNsa19yc3RfZGVzYyk7CiAKIAlyZXR1cm4gcjsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxMzUuYyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1t dDgxMzUuYwppbmRleCBiOTQ0MzNhMWRkZTEuLmY1NTQ1NzRiMjU2NyAxMDA2NDQKLS0tIGEvZHJp dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODEzNS5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVr L2Nsay1tdDgxMzUuYwpAQCAtNTE0LDYgKzUxNCwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10 a19jb21wb3NpdGUgcGVyaV9jbGtzW10gX19pbml0Y29uc3QgPSB7CiAJTVVYKENMS19QRVJJX1VB UlQzX1NFTCwgInVhcnQzX2NrX3NlbCIsIHVhcnRfY2tfc2VsX3BhcmVudHMsIDB4NDBjLCAzLCAx KSwKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rl c2NbXSA9IHsKKwkvKiBpbmZyYXN5cyAqLworCXsKKwkJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBM RSwKKwkJLnJzdF9iYW5rX25yID0gMiwKKwkJLnJlZ19vZnMgPSAweDMwLAorCX0sCisJLyogcGVy aWNmZyAqLworCXsKKwkJLnZlcnNpb24gPSBNVEtfUlNUX1NJTVBMRSwKKwkJLnJzdF9iYW5rX25y ID0gMiwKKwkJLnJlZ19vZnMgPSAweDAsCisJfQorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IG10 a190b3Bja2dlbl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIHsKIAlzdHJ1Y3QgY2xr X2h3X29uZWNlbGxfZGF0YSAqY2xrX2RhdGE7CkBAIC01NTksNyArNTc0LDcgQEAgc3RhdGljIHZv aWQgX19pbml0IG10a19pbmZyYXN5c19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAkJ cHJfZXJyKCIlcygpOiBjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVkXG4iLAog CQkJX19mdW5jX18sIHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwg MiwgMHgzMCwgTVRLX1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVy KG5vZGUsICZjbGtfcnN0X2Rlc2NbMF0pOwogfQogQ0xLX09GX0RFQ0xBUkUobXRrX2luZnJhc3lz LCAibWVkaWF0ZWssbXQ4MTM1LWluZnJhY2ZnIiwgbXRrX2luZnJhc3lzX2luaXQpOwogCkBAIC01 ODcsNyArNjAyLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG10a19wZXJpY2ZnX2luaXQoc3RydWN0 IGRldmljZV9ub2RlICpub2RlKQogCQlwcl9lcnIoIiVzKCk6IGNvdWxkIG5vdCByZWdpc3RlciBj bG9jayBwcm92aWRlcjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7CiAKLQltdGtfcmVnaXN0ZXJf cmVzZXRfY29udHJvbGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lz dGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzY1sxXSk7CiB9CiBDTEtfT0Zf REVDTEFSRShtdGtfcGVyaWNmZywgIm1lZGlhdGVrLG10ODEzNS1wZXJpY2ZnIiwgbXRrX3Blcmlj ZmdfaW5pdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMu YyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMuYwppbmRleCA5ZmJmMjZjOTY3OTUu LjFlODYyMTBlOWM2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE3 My5jCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxNzMuYwpAQCAtODE5LDYgKzgx OSwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19nYXRlIHZlbmNsdF9jbGtzW10gX19pbml0 Y29uc3QgPSB7CiAJR0FURV9WRU5DTFQoQ0xLX1ZFTkNMVF9DS0UxLCAidmVuY2x0X2NrZTEiLCAi dmVuY2x0X3NlbCIsIDQpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3JzdF9k ZXNjIGNsa19yc3RfZGVzY1tdID0geworCS8qIGluZnJhc3lzICovCisJeworCQkudmVyc2lvbiA9 IE1US19SU1RfU0lNUExFLAorCQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MzAs CisJfSwKKwkvKiBwZXJpY2ZnICovCisJeworCQkudmVyc2lvbiA9IE1US19SU1RfU0lNUExFLAor CQkucnN0X2JhbmtfbnIgPSAyLAorCQkucmVnX29mcyA9IDB4MCwKKwl9Cit9OworCiBzdGF0aWMg c3RydWN0IGNsa19od19vbmVjZWxsX2RhdGEgKm10ODE3M190b3BfY2xrX2RhdGEgX19pbml0ZGF0 YTsKIHN0YXRpYyBzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSAqbXQ4MTczX3BsbF9jbGtfZGF0 YSBfX2luaXRkYXRhOwogCkBAIC04ODIsNyArODk3LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG10 a19pbmZyYXN5c19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkKIAkJcHJfZXJyKCIlcygp OiBjb3VsZCBub3QgcmVnaXN0ZXIgY2xvY2sgcHJvdmlkZXI6ICVkXG4iLAogCQkJX19mdW5jX18s IHIpOwogCi0JbXRrX3JlZ2lzdGVyX3Jlc2V0X2NvbnRyb2xsZXIobm9kZSwgMiwgMHgzMCwgTVRL X1JTVF9TSU1QTEUpOworCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtf cnN0X2Rlc2NbMF0pOwogfQogQ0xLX09GX0RFQ0xBUkUobXRrX2luZnJhc3lzLCAibWVkaWF0ZWss bXQ4MTczLWluZnJhY2ZnIiwgbXRrX2luZnJhc3lzX2luaXQpOwogCkBAIC05MTAsNyArOTI1LDcg QEAgc3RhdGljIHZvaWQgX19pbml0IG10a19wZXJpY2ZnX2luaXQoc3RydWN0IGRldmljZV9ub2Rl ICpub2RlKQogCQlwcl9lcnIoIiVzKCk6IGNvdWxkIG5vdCByZWdpc3RlciBjbG9jayBwcm92aWRl cjogJWRcbiIsCiAJCQlfX2Z1bmNfXywgcik7CiAKLQltdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJv bGxlcihub2RlLCAyLCAwLCBNVEtfUlNUX1NJTVBMRSk7CisJbXRrX3JlZ2lzdGVyX3Jlc2V0X2Nv bnRyb2xsZXIobm9kZSwgJmNsa19yc3RfZGVzY1sxXSk7CiB9CiBDTEtfT0ZfREVDTEFSRShtdGtf cGVyaWNmZywgIm1lZGlhdGVrLG10ODE3My1wZXJpY2ZnIiwgbXRrX3BlcmljZmdfaW5pdCk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYyBiL2RyaXZlcnMv Y2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYwppbmRleCBkMGU4OWIwMTVmZmMuLjU3MDhjNWQ4YjMw MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10ODE4My5jCisrKyBiL2Ry aXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDgxODMuYwpAQCAtMTE1Myw2ICsxMTUzLDEyIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3BsbF9kYXRhIHBsbHNbXSA9IHsKIAkJMCwgMCwgMzIsIDgs IDB4MDJCNCwgMSwgMHgwMkJDLCAweDAwMTQsIDEsIDB4MDJCOCwgMCwgMHgwMkI0KSwKIH07CiAK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGVzYyBjbGtfcnN0X2Rlc2MgPSB7CisJ LnZlcnNpb24gPSBNVEtfUlNUX1NFVF9DTFIsCisJLnJzdF9iYW5rX25yID0gNCwKKwkucmVnX29m cyA9IElORlJBX1JTVDBfU0VUX09GRlNFVCwKK307CisKIHN0YXRpYyBpbnQgY2xrX210ODE4M19h cG1peGVkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGNs a19od19vbmVjZWxsX2RhdGEgKmNsa19kYXRhOwpAQCAtMTI0MCw4ICsxMjQ2LDcgQEAgc3RhdGlj IGludCBjbGtfbXQ4MTgzX2luZnJhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp CiAJCXJldHVybiByOwogCX0KIAotCW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUs IDQsCi0JCQkJICAgICAgSU5GUkFfUlNUMF9TRVRfT0ZGU0VULCBNVEtfUlNUX1NFVF9DTFIpOwor CW10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKG5vZGUsICZjbGtfcnN0X2Rlc2MpOwogCiAJ cmV0dXJuIHI7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jIGIv ZHJpdmVycy9jbGsvbWVkaWF0ZWsvcmVzZXQuYwppbmRleCAzMzc0NWY3ZjE0NGYuLjQ3YmM2YjE4 NDJmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvbWVkaWF0ZWsvcmVzZXQuYworKysgYi9kcml2 ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5jCkBAIC0xMiwxNCArMTIsMTkgQEAKIAogI2luY2x1ZGUg InJlc2V0LmgiCiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IG10a19jbGtfcnN0X2RhdGEgKnRvX210 a19jbGtfcnN0X2RhdGEoc3RydWN0IHJlc2V0X2NvbnRyb2xsZXJfZGV2ICpyY2RldikKK3sKKwly ZXR1cm4gY29udGFpbmVyX29mKHJjZGV2LCBzdHJ1Y3QgbXRrX2Nsa19yc3RfZGF0YSwgcmNkZXYp OworfQorCiBzdGF0aWMgaW50IG10a19yZXNldF91cGRhdGUoc3RydWN0IHJlc2V0X2NvbnRyb2xs ZXJfZGV2ICpyY2RldiwKIAkJCSAgICB1bnNpZ25lZCBsb25nIGlkLCBib29sIGRlYXNzZXJ0KQog ewotCXN0cnVjdCBtdGtfcmVzZXQgKmRhdGEgPSBjb250YWluZXJfb2YocmNkZXYsIHN0cnVjdCBt dGtfcmVzZXQsIHJjZGV2KTsKKwlzdHJ1Y3QgbXRrX2Nsa19yc3RfZGF0YSAqZGF0YSA9IHRvX210 a19jbGtfcnN0X2RhdGEocmNkZXYpOwogCXVuc2lnbmVkIGludCB2YWwgPSBkZWFzc2VydCA/IDAg OiB+MDsKIAogCXJldHVybiByZWdtYXBfdXBkYXRlX2JpdHMoZGF0YS0+cmVnbWFwLAotCQkJCSAg ZGF0YS0+cmVnb2ZzICsgKChpZCAvIDMyKSA8PCAyKSwKKwkJCQkgIGRhdGEtPmRlc2MtPnJlZ19v ZnMgKyAoKGlkIC8gMzIpIDw8IDIpLAogCQkJCSAgQklUKGlkICUgMzIpLCB2YWwpOwogfQogCkBA IC00OSwxMSArNTQsMTEgQEAgc3RhdGljIGludCBtdGtfcmVzZXQoc3RydWN0IHJlc2V0X2NvbnRy b2xsZXJfZGV2ICpyY2RldiwgdW5zaWduZWQgbG9uZyBpZCkKIHN0YXRpYyBpbnQgbXRrX3Jlc2V0 X3VwZGF0ZV9zZXRfY2xyKHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNkZXYsCiAJCQkJ ICAgIHVuc2lnbmVkIGxvbmcgaWQsIGJvb2wgZGVhc3NlcnQpCiB7Ci0Jc3RydWN0IG10a19yZXNl dCAqZGF0YSA9IGNvbnRhaW5lcl9vZihyY2Rldiwgc3RydWN0IG10a19yZXNldCwgcmNkZXYpOwor CXN0cnVjdCBtdGtfY2xrX3JzdF9kYXRhICpkYXRhID0gdG9fbXRrX2Nsa19yc3RfZGF0YShyY2Rl dik7CiAJdW5zaWduZWQgaW50IGRlYXNzZXJ0X29mcyA9IGRlYXNzZXJ0ID8gMHg0IDogMDsKIAog CXJldHVybiByZWdtYXBfd3JpdGUoZGF0YS0+cmVnbWFwLAotCQkJICAgIGRhdGEtPnJlZ29mcyAr ICgoaWQgLyAzMikgPDwgNCkgKyBkZWFzc2VydF9vZnMsCisJCQkgICAgZGF0YS0+ZGVzYy0+cmVn X29mcyArICgoaWQgLyAzMikgPDwgNCkgKyBkZWFzc2VydF9vZnMsCiAJCQkgICAgQklUKGlkICUg MzIpKTsKIH0KIApAQCAtOTMsMTUgKzk4LDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVzZXRf Y29udHJvbF9vcHMgbXRrX3Jlc2V0X29wc19zZXRfY2xyID0gewogfTsKIAogdm9pZCBtdGtfcmVn aXN0ZXJfcmVzZXRfY29udHJvbGxlcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAotCQkJCSAgIHUz MiByc3RfYmFua19uciwgdTE2IHJlZ19vZnMsCi0JCQkJICAgZW51bSBtdGtfcmVzZXRfdmVyc2lv biB2ZXJzaW9uKQorCQkJCSAgIGNvbnN0IHN0cnVjdCBtdGtfY2xrX3JzdF9kZXNjICpkZXNjKQog ewotCXN0cnVjdCBtdGtfcmVzZXQgKmRhdGE7Ci0JaW50IHJldDsKIAlzdHJ1Y3QgcmVnbWFwICpy ZWdtYXA7CiAJY29uc3Qgc3RydWN0IHJlc2V0X2NvbnRyb2xfb3BzICpyY29wcyA9IE5VTEw7CisJ c3RydWN0IG10a19jbGtfcnN0X2RhdGEgKmRhdGE7CisJaW50IHJldDsKKworCWlmICghZGVzYykg eworCQlwcl9lcnIoIm10ayBjbG9jayByZXNldCBkZXNjIGlzIE5VTExcbiIpOworCQlyZXR1cm47 CisJfQogCi0Jc3dpdGNoICh2ZXJzaW9uKSB7CisJc3dpdGNoIChkZXNjLT52ZXJzaW9uKSB7CiAJ Y2FzZSBNVEtfUlNUX1NJTVBMRToKIAkJcmNvcHMgPSAmbXRrX3Jlc2V0X29wczsKIAkJYnJlYWs7 CkBAIC0xMDksNyArMTE4LDcgQEAgdm9pZCBtdGtfcmVnaXN0ZXJfcmVzZXRfY29udHJvbGxlcihz dHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAogCQlyY29wcyA9ICZtdGtfcmVzZXRfb3BzX3NldF9jbHI7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXByX2VycigiVW5rbm93biByZXNldCB2ZXJzaW9uICVk XG4iLCB2ZXJzaW9uKTsKKwkJcHJfZXJyKCJVbmtub3duIHJlc2V0IHZlcnNpb24gJWRcbiIsIGRl c2MtPnZlcnNpb24pOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjMsMTAgKzEzMiwxMCBAQCB2b2lk IG10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCiAJ aWYgKCFkYXRhKQogCQlyZXR1cm47CiAKKwlkYXRhLT5kZXNjID0gZGVzYzsKIAlkYXRhLT5yZWdt YXAgPSByZWdtYXA7Ci0JZGF0YS0+cmVnb2ZzID0gcmVnX29mczsKIAlkYXRhLT5yY2Rldi5vd25l ciA9IFRISVNfTU9EVUxFOwotCWRhdGEtPnJjZGV2Lm5yX3Jlc2V0cyA9IHJzdF9iYW5rX25yICog MzI7CisJZGF0YS0+cmNkZXYubnJfcmVzZXRzID0gZGVzYy0+cnN0X2JhbmtfbnIgKiAzMjsKIAlk YXRhLT5yY2Rldi5vcHMgPSByY29wczsKIAlkYXRhLT5yY2Rldi5vZl9ub2RlID0gbnA7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvY2xrL21lZGlhdGVrL3Jlc2V0LmggYi9kcml2ZXJzL2Nsay9tZWRp YXRlay9yZXNldC5oCmluZGV4IDg1MTI0NGJiZDJhZC4uYjRjMmI0NjhkYTRhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Nsay9tZWRpYXRlay9yZXNldC5oCisrKyBiL2RyaXZlcnMvY2xrL21lZGlhdGVr L3Jlc2V0LmgKQEAgLTIxLDIxICsyMSwzNiBAQCBlbnVtIG10a19yZXNldF92ZXJzaW9uIHsKIAlN VEtfUlNUX01BWCwKIH07CiAKLXN0cnVjdCBtdGtfcmVzZXQgeworLyoqCisgKiBzdHJ1Y3QgbXRr X2Nsa19yc3RfZGVzYyAtIERlc2NyaXB0aW9uIG9mIE1lZGlhVGVrIGNsb2NrIHJlc2V0LgorICog QHZlcnNpb246IFJlc2V0IHZlcnNpb24gd2hpY2ggaXMgZGVmaW5lZCBpbiBlbnVtIG10a19yZXNl dF92ZXJzaW9uLgorICogQHJlZ19vZnM6IEJhc2Ugb2Zmc2V0IG9mIHRoZSByZXNldCByZWdpc3Rl ci4KKyAqIEByc3RfYmFua19ucjogUXVhbnRpdHkgb2YgcmVzZXQgYmFuay4KKyAqLworc3RydWN0 IG10a19jbGtfcnN0X2Rlc2MgeworCWVudW0gbXRrX3Jlc2V0X3ZlcnNpb24gdmVyc2lvbjsKKwl1 MTYgcmVnX29mczsKKwl1MzIgcnN0X2JhbmtfbnI7Cit9OworCisvKioKKyAqIHN0cnVjdCBtdGtf Y2xrX3JzdF9kYXRhIC0gRGF0YSBvZiBNZWRpYVRlayBjbG9jayByZXNldCBjb250cm9sbGVyLgor ICogQHJlZ21hcDogUG9pbnRlciB0byBiYXNlIGFkZHJlc3Mgb2YgcmVzZXQgcmVnaXN0ZXIgYWRk cmVzcy4KKyAqIEByY2RldjogUmVzZXQgY29udHJvbGxlciBkZXZpY2UuCisgKiBAZGVzYzogUG9p bnRlciB0byBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzZXQgY29udHJvbGxlci4KKyAqLworc3RydWN0 IG10a19jbGtfcnN0X2RhdGEgewogCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKLQlpbnQgcmVnb2Zz OwogCXN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiByY2RldjsKKwljb25zdCBzdHJ1Y3QgbXRr X2Nsa19yc3RfZGVzYyAqZGVzYzsKIH07CiAKIC8qKgogICogbXRrX3JlZ2lzdGVyX3Jlc2V0X2Nv bnRyb2xsZXIgLSBSZWdpc3RlciBNZWRpYVRlayBjbG9jayByZXNldCBjb250cm9sbGVyCiAgKiBA bnA6IFBvaW50ZXIgdG8gZGV2aWNlIG5vZGUuCi0gKiBAcnN0X2JhbmtfbnI6IFF1YW50aXR5IG9m IHJlc2V0IGJhbmsuCi0gKiBAcmVnX29mczogQmFzZSBvZmZzZXQgb2YgdGhlIHJlc2V0IHJlZ2lz dGVyLgotICogQHZlcnNpb246IFZlcnNpb24gb2YgTWVkaWFUZWsgY2xvY2sgcmVzZXQgY29udHJv bGxlci4KKyAqIEBkZXNjOiBDb25zdGFudCBwb2ludGVyIHRvIGRlc2NyaXB0aW9uIG9mIGNsb2Nr IHJlc2V0LgogICovCiB2b2lkIG10a19yZWdpc3Rlcl9yZXNldF9jb250cm9sbGVyKHN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAsCi0JCQkJICAgdTMyIHJzdF9iYW5rX25yLCB1MTYgcmVnX29mcywKLQkJ CQkgICBlbnVtIG10a19yZXNldF92ZXJzaW9uIHZlcnNpb24pOworCQkJCSAgIGNvbnN0IHN0cnVj dCBtdGtfY2xrX3JzdF9kZXNjICpkZXNjKTsKIAogI2VuZGlmIC8qIF9fRFJWX0NMS19NVEtfUkVT RVRfSCAqLwotLSAKMi4xOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=