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 EA957CCA473 for ; Fri, 24 Jun 2022 13:41:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231946AbiFXNlJ (ORCPT ); Fri, 24 Jun 2022 09:41:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229830AbiFXNlH (ORCPT ); Fri, 24 Jun 2022 09:41:07 -0400 Received: from mailgw01.mediatek.com (unknown [60.244.123.138]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A99E91838C; Fri, 24 Jun 2022 06:41:05 -0700 (PDT) X-UUID: be9463bb64ba4222aa2a60dad2c977dd-20220624 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.6,REQID:5408aefd-4fd5-4dd2-a207-3e6057eec195,OB:0,LO B:20,IP:0,URL:0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,RULE:Release_Ham,AC TION:release,TS:45 X-CID-INFO: VERSION:1.1.6,REQID:5408aefd-4fd5-4dd2-a207-3e6057eec195,OB:0,LOB: 20,IP:0,URL:0,TC:0,Content:0,EDM:0,RT:0,SF:45,FILE:0,RULE:Release_Ham,ACTI ON:release,TS:45 X-CID-META: VersionHash:b14ad71,CLOUDID:6a4f7ed8-850a-491d-a127-60d9309b2b3e,C OID:58ca2a026233,Recheck:0,SF:28|17|19|48,TC:nil,Content:-5,EDM:-3,IP:nil, URL:1,File:nil,QS:nil,BEC:nil,COL:0 X-UUID: be9463bb64ba4222aa2a60dad2c977dd-20220624 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 2043673483; Fri, 24 Jun 2022 21:41:00 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.15; Fri, 24 Jun 2022 21:40:59 +0800 Received: from mhfsdcap04 (10.17.3.154) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 24 Jun 2022 21:40:58 +0800 Message-ID: <2219b4523d9c52778610395de191c634dfe1801e.camel@mediatek.com> Subject: Re: [PATCH v1 3/4] pinctrl: mediatek: add rsel setting on mt8192 From: Guodong Liu To: "=?ISO-8859-1?Q?N=EDcolas?= F. R. A. Prado" CC: Linus Walleij , Rob Herring , Matthias Brugger , Sean Wang , Sean Wang , Zhiyong Tao , , , , , , Date: Fri, 24 Jun 2022 21:40:58 +0800 In-Reply-To: <20220609184716.mlu5j3m5i6jdraw4@notapiano> References: <20220608053909.1252-1-guodong.liu@mediatek.com> <20220608053909.1252-4-guodong.liu@mediatek.com> <20220609184716.mlu5j3m5i6jdraw4@notapiano> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org -----Original Message----- From: NĂ­colas F. R. A. Prado To: Guodong Liu Cc: Linus Walleij , Rob Herring < robh+dt@kernel.org>, Matthias Brugger , Sean Wang , Sean Wang , Zhiyong Tao , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Project_Global_Chrome_Upstream_Group@mediatek.com Subject: Re: [PATCH v1 3/4] pinctrl: mediatek: add rsel setting on mt8192 Date: Thu, 9 Jun 2022 14:47:16 -0400 Hi Guodong, thank you for the patch. Please see some suggestions below. On Wed, Jun 08, 2022 at 01:39:08PM +0800, Guodong Liu wrote: > I2C pins's resistance value can be controlled by rsel register. > This patch provides rsel (resistance selection) setting on mt8192 Please mention that you're also adding the pull_type array in this commit, something like: "Also add the missing pull type array for mt8192 to document the pull type of each pin and prevent invalid pull type settings". will fix it in next version,thanks! > > Signed-off-by: Guodong Liu > --- > drivers/pinctrl/mediatek/pinctrl-mt8192.c | 204 ++++++++++++++---- > ---- > 1 file changed, 134 insertions(+), 70 deletions(-) > > diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8192.c > b/drivers/pinctrl/mediatek/pinctrl-mt8192.c > index d11ff5519e1e..1486c141ee8c 100644 > --- a/drivers/pinctrl/mediatek/pinctrl-mt8192.c > +++ b/drivers/pinctrl/mediatek/pinctrl-mt8192.c > @@ -1285,73 +1285,140 @@ static const struct mtk_pin_field_calc > mt8192_pin_drv_adv_range[] = { > PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 6, 3), > }; > > -static const struct mtk_pin_field_calc mt8192_pin_e1e0en_range[] = { > - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 0, 1), > - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 18, 1), > - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 15, 1), > - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 3, 1), > - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 12, 1), > - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 0, 1), > - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 9, 1), > - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 27, 1), > - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 6, 1), > - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 24, 1), > - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 3, 1), > - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 21, 1), > - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 0, 1), > - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 3, 1), > - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 3, 1), > - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 9, 1), > - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 0, 1), > - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 3, 1), > - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 0, 1), > - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 6, 1), You're dropping E1, E0, and EN arrays here, but these were used by the original advanced drive configuration, so they should've been dropped in the previous patch, not in this one. will fix it in next version,thanks! > +static const struct mtk_pin_field_calc mt8192_pin_rsel_range[] = { > + PIN_FIELD_BASE(118, 118, 4, 0x00e0, 0x10, 0, 2), > + PIN_FIELD_BASE(119, 119, 4, 0x00e0, 0x10, 12, 2), > + PIN_FIELD_BASE(120, 120, 4, 0x00e0, 0x10, 10, 2), > + PIN_FIELD_BASE(121, 121, 4, 0x00e0, 0x10, 22, 2), > + PIN_FIELD_BASE(122, 122, 4, 0x00e0, 0x10, 8, 2), > + PIN_FIELD_BASE(123, 123, 4, 0x00e0, 0x10, 20, 2), > + PIN_FIELD_BASE(124, 124, 4, 0x00e0, 0x10, 6, 2), > + PIN_FIELD_BASE(125, 125, 4, 0x00e0, 0x10, 18, 2), > + PIN_FIELD_BASE(139, 139, 4, 0x00e0, 0x10, 4, 2), > + PIN_FIELD_BASE(140, 140, 4, 0x00e0, 0x10, 16, 2), > + PIN_FIELD_BASE(141, 141, 4, 0x00e0, 0x10, 2, 2), > + PIN_FIELD_BASE(142, 142, 4, 0x00e0, 0x10, 14, 2), > + PIN_FIELD_BASE(160, 160, 7, 0x00f0, 0x10, 0, 2), > + PIN_FIELD_BASE(161, 161, 7, 0x00f0, 0x10, 2, 2), > + PIN_FIELD_BASE(200, 200, 8, 0x0070, 0x10, 2, 2), > + PIN_FIELD_BASE(201, 201, 8, 0x0070, 0x10, 6, 2), > + PIN_FIELD_BASE(202, 202, 5, 0x0070, 0x10, 0, 2), > + PIN_FIELD_BASE(203, 203, 5, 0x0070, 0x10, 2, 2), > + PIN_FIELD_BASE(204, 204, 8, 0x0070, 0x10, 0, 2), > + PIN_FIELD_BASE(205, 205, 8, 0x0070, 0x10, 4, 2), > }; > > -static const struct mtk_pin_field_calc mt8192_pin_e0_range[] = { > - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 1, 1), > - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 19, 1), > - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 16, 1), > - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 4, 1), > - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 13, 1), > - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 1, 1), > - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 10, 1), > - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 28, 1), > - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 7, 1), > - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 25, 1), > - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 4, 1), > - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 22, 1), > - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 1, 1), > - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 4, 1), > - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 4, 1), > - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 10, 1), > - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 1, 1), > - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 4, 1), > - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 1, 1), > - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 7, 1), > -}; > - > -static const struct mtk_pin_field_calc mt8192_pin_e1_range[] = { > - PIN_FIELD_BASE(118, 118, 4, 0x0040, 0x10, 2, 1), > - PIN_FIELD_BASE(119, 119, 4, 0x0040, 0x10, 20, 1), > - PIN_FIELD_BASE(120, 120, 4, 0x0040, 0x10, 17, 1), > - PIN_FIELD_BASE(121, 121, 4, 0x0050, 0x10, 5, 1), > - PIN_FIELD_BASE(122, 122, 4, 0x0040, 0x10, 14, 1), > - PIN_FIELD_BASE(123, 123, 4, 0x0050, 0x10, 2, 1), > - PIN_FIELD_BASE(124, 124, 4, 0x0040, 0x10, 11, 1), > - PIN_FIELD_BASE(125, 125, 4, 0x0040, 0x10, 29, 1), > - PIN_FIELD_BASE(139, 139, 4, 0x0040, 0x10, 8, 1), > - PIN_FIELD_BASE(140, 140, 4, 0x0040, 0x10, 26, 1), > - PIN_FIELD_BASE(141, 141, 4, 0x0040, 0x10, 5, 1), > - PIN_FIELD_BASE(142, 142, 4, 0x0040, 0x10, 23, 1), > - PIN_FIELD_BASE(160, 160, 7, 0x0030, 0x10, 2, 1), > - PIN_FIELD_BASE(161, 161, 7, 0x0030, 0x10, 5, 1), > - PIN_FIELD_BASE(200, 200, 8, 0x0010, 0x10, 5, 1), > - PIN_FIELD_BASE(201, 201, 8, 0x0010, 0x10, 11, 1), > - PIN_FIELD_BASE(202, 202, 5, 0x0020, 0x10, 2, 1), > - PIN_FIELD_BASE(203, 203, 5, 0x0020, 0x10, 5, 1), > - PIN_FIELD_BASE(204, 204, 8, 0x0010, 0x10, 2, 1), > - PIN_FIELD_BASE(205, 205, 8, 0x0010, 0x10, 8, 1), > +static const unsigned int mt8192_pull_type[] = { > + MTK_PULL_PU_PD_TYPE,/*0*/ MTK_PULL_PU_PD_TYPE,/*1*/ > + MTK_PULL_PU_PD_TYPE,/*2*/ MTK_PULL_PU_PD_TYPE,/*3*/ > + MTK_PULL_PU_PD_TYPE,/*4*/ MTK_PULL_PU_PD_TYPE,/*5*/ > + MTK_PULL_PU_PD_TYPE,/*6*/ MTK_PULL_PU_PD_TYPE,/*7*/ > + MTK_PULL_PU_PD_TYPE,/*8*/ MTK_PULL_PU_PD_TYPE,/*9*/ > + MTK_PULL_PUPD_R1R0_TYPE,/*10*/ MTK_PULL_PUPD_R1R0_TYPE,/*11* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*12*/ MTK_PULL_PUPD_R1R0_TYPE,/*13* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*14*/ MTK_PULL_PUPD_R1R0_TYPE,/*15* > / > + MTK_PULL_PU_PD_TYPE,/*16*/ MTK_PULL_PU_PD_TYPE,/ > *17*/ > + MTK_PULL_PU_PD_TYPE,/*18*/ MTK_PULL_PU_PD_TYPE,/ > *19*/ > + MTK_PULL_PU_PD_TYPE,/*20*/ MTK_PULL_PU_PD_TYPE,/ > *21*/ > + MTK_PULL_PU_PD_TYPE,/*22*/ MTK_PULL_PU_PD_TYPE,/ > *23*/ > + MTK_PULL_PU_PD_TYPE,/*24*/ MTK_PULL_PU_PD_TYPE,/ > *25*/ > + MTK_PULL_PU_PD_TYPE,/*26*/ MTK_PULL_PU_PD_TYPE,/ > *27*/ > + MTK_PULL_PU_PD_TYPE,/*28*/ MTK_PULL_PU_PD_TYPE,/ > *29*/ > + MTK_PULL_PU_PD_TYPE,/*30*/ MTK_PULL_PU_PD_TYPE,/ > *31*/ > + MTK_PULL_PU_PD_TYPE,/*32*/ MTK_PULL_PU_PD_TYPE,/ > *33*/ > + MTK_PULL_PU_PD_TYPE,/*34*/ MTK_PULL_PU_PD_TYPE,/ > *35*/ > + MTK_PULL_PU_PD_TYPE,/*36*/ MTK_PULL_PU_PD_TYPE,/ > *37*/ > + MTK_PULL_PU_PD_TYPE,/*38*/ MTK_PULL_PU_PD_TYPE,/ > *39*/ > + MTK_PULL_PU_PD_TYPE,/*40*/ MTK_PULL_PU_PD_TYPE,/ > *41*/ > + MTK_PULL_PU_PD_TYPE,/*42*/ MTK_PULL_PU_PD_TYPE,/ > *43*/ > + MTK_PULL_PU_PD_TYPE,/*44*/ MTK_PULL_PUPD_R1R0_TY > PE,/*45*/ > + MTK_PULL_PUPD_R1R0_TYPE,/*46*/ MTK_PULL_PUPD_R1R0_TYPE,/*47* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*48*/ MTK_PULL_PUPD_R1R0_TYPE,/*49* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*50*/ MTK_PULL_PUPD_R1R0_TYPE,/*51* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*52*/ MTK_PULL_PUPD_R1R0_TYPE,/*53* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*54*/ MTK_PULL_PUPD_R1R0_TYPE,/*55* > / > + MTK_PULL_PUPD_R1R0_TYPE,/*56*/ MTK_PULL_PU_PD_TYPE,/*57*/ > + MTK_PULL_PU_PD_TYPE,/*58*/ MTK_PULL_PU_PD_TYPE,/ > *59*/ > + MTK_PULL_PU_PD_TYPE,/*60*/ MTK_PULL_PU_PD_TYPE,/ > *61*/ > + MTK_PULL_PU_PD_TYPE,/*62*/ MTK_PULL_PU_PD_TYPE,/ > *63*/ > + MTK_PULL_PU_PD_TYPE,/*64*/ MTK_PULL_PU_PD_TYPE,/ > *65*/ > + MTK_PULL_PU_PD_TYPE,/*66*/ MTK_PULL_PU_PD_TYPE,/ > *67*/ > + MTK_PULL_PU_PD_TYPE,/*68*/ MTK_PULL_PU_PD_TYPE,/ > *69*/ > + MTK_PULL_PU_PD_TYPE,/*70*/ MTK_PULL_PU_PD_TYPE,/ > *71*/ > + MTK_PULL_PU_PD_TYPE,/*72*/ MTK_PULL_PU_PD_TYPE,/ > *73*/ > + MTK_PULL_PU_PD_TYPE,/*74*/ MTK_PULL_PU_PD_TYPE,/ > *75*/ > + MTK_PULL_PU_PD_TYPE,/*76*/ MTK_PULL_PU_PD_TYPE,/ > *77*/ > + MTK_PULL_PU_PD_TYPE,/*78*/ MTK_PULL_PU_PD_TYPE,/ > *79*/ > + MTK_PULL_PU_PD_TYPE,/*80*/ MTK_PULL_PU_PD_TYPE,/ > *81*/ > + MTK_PULL_PU_PD_TYPE,/*82*/ MTK_PULL_PU_PD_TYPE,/ > *83*/ > + MTK_PULL_PU_PD_TYPE,/*84*/ MTK_PULL_PU_PD_TYPE,/ > *85*/ > + MTK_PULL_PU_PD_TYPE,/*86*/ MTK_PULL_PU_PD_TYPE,/ > *87*/ > + MTK_PULL_PU_PD_TYPE,/*88*/ MTK_PULL_PU_PD_TYPE,/ > *89*/ > + MTK_PULL_PU_PD_TYPE,/*90*/ MTK_PULL_PU_PD_TYPE,/ > *91*/ > + MTK_PULL_PU_PD_TYPE,/*92*/ MTK_PULL_PU_PD_TYPE,/ > *93*/ > + MTK_PULL_PU_PD_TYPE,/*94*/ MTK_PULL_PU_PD_TYPE,/ > *95*/ > + MTK_PULL_PU_PD_TYPE,/*96*/ MTK_PULL_PU_PD_TYPE,/ > *97*/ > + MTK_PULL_PU_PD_TYPE,/*98*/ MTK_PULL_PU_PD_TYPE,/ > *99*/ > + MTK_PULL_PU_PD_TYPE,/*100*/ MTK_PULL_PU_PD_TYPE,/ > *101*/ > + MTK_PULL_PU_PD_TYPE,/*102*/ MTK_PULL_PU_PD_TYPE,/ > *103*/ > + MTK_PULL_PU_PD_TYPE,/*104*/ MTK_PULL_PU_PD_TYPE,/ > *105*/ > + MTK_PULL_PU_PD_TYPE,/*106*/ MTK_PULL_PU_PD_TYPE,/ > *107*/ > + MTK_PULL_PU_PD_TYPE,/*108*/ MTK_PULL_PU_PD_TYPE,/ > *109*/ > + MTK_PULL_PU_PD_TYPE,/*110*/ MTK_PULL_PU_PD_TYPE,/ > *111*/ > + MTK_PULL_PU_PD_TYPE,/*112*/ MTK_PULL_PU_PD_TYPE,/ > *113*/ > + MTK_PULL_PU_PD_TYPE,/*114*/ MTK_PULL_PU_PD_TYPE,/ > *115*/ > + MTK_PULL_PU_PD_TYPE,/*116*/ MTK_PULL_PU_PD_TYPE,/ > *117*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*118*/ MTK_PULL_PU_PD_RSEL_TYPE,/*11 > 9*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*120*/ MTK_PULL_PU_PD_RSEL_TYPE,/*12 > 1*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*122*/ MTK_PULL_PU_PD_RSEL_TYPE,/*12 > 3*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*124*/ MTK_PULL_PU_PD_RSEL_TYPE,/*12 > 5*/ > + MTK_PULL_PU_PD_TYPE,/*126*/ MTK_PULL_PU_PD_TYPE,/ > *127*/ > + MTK_PULL_PU_PD_TYPE,/*128*/ MTK_PULL_PU_PD_TYPE,/ > *129*/ > + MTK_PULL_PU_PD_TYPE,/*130*/ MTK_PULL_PU_PD_TYPE,/ > *131*/ > + MTK_PULL_PU_PD_TYPE,/*132*/ MTK_PULL_PU_PD_TYPE,/ > *133*/ > + MTK_PULL_PU_PD_TYPE,/*134*/ MTK_PULL_PU_PD_TYPE,/ > *135*/ > + MTK_PULL_PU_PD_TYPE,/*136*/ MTK_PULL_PU_PD_TYPE,/ > *137*/ > + MTK_PULL_PU_PD_TYPE,/*138*/ MTK_PULL_PU_PD_RSEL_T > YPE,/*139*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*140*/ MTK_PULL_PU_PD_RSEL_TYPE,/*14 > 1*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*142*/ MTK_PULL_PU_PD_TYPE,/*143*/ > + MTK_PULL_PU_PD_TYPE,/*144*/ MTK_PULL_PU_PD_TYPE,/ > *145*/ > + MTK_PULL_PU_PD_TYPE,/*146*/ MTK_PULL_PU_PD_TYPE,/ > *147*/ > + MTK_PULL_PU_PD_TYPE,/*148*/ MTK_PULL_PU_PD_TYPE,/ > *149*/ > + MTK_PULL_PU_PD_TYPE,/*150*/ MTK_PULL_PU_PD_TYPE,/ > *151*/ > + MTK_PULL_PUPD_R1R0_TYPE,/*152*/ MTK_PULL_PUPD_R1R0_TYPE,/*153 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*154*/ MTK_PULL_PUPD_R1R0_TYPE,/*155 > */ > + MTK_PULL_PU_PD_TYPE,/*156*/ MTK_PULL_PU_PD_TYPE,/ > *157*/ > + MTK_PULL_PU_PD_TYPE,/*158*/ MTK_PULL_PU_PD_TYPE,/ > *159*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*160*/ MTK_PULL_PU_PD_RSEL_TYPE,/*16 > 1*/ > + MTK_PULL_PU_PD_TYPE,/*162*/ MTK_PULL_PU_PD_TYPE,/ > *163*/ > + MTK_PULL_PU_PD_TYPE,/*164*/ MTK_PULL_PU_PD_TYPE,/ > *165*/ > + MTK_PULL_PU_PD_TYPE,/*166*/ MTK_PULL_PU_PD_TYPE,/ > *167*/ > + MTK_PULL_PU_PD_TYPE,/*168*/ MTK_PULL_PU_PD_TYPE,/ > *169*/ > + MTK_PULL_PU_PD_TYPE,/*170*/ MTK_PULL_PU_PD_TYPE,/ > *171*/ > + MTK_PULL_PU_PD_TYPE,/*172*/ MTK_PULL_PU_PD_TYPE,/ > *173*/ > + MTK_PULL_PU_PD_TYPE,/*174*/ MTK_PULL_PU_PD_TYPE,/ > *175*/ > + MTK_PULL_PU_PD_TYPE,/*176*/ MTK_PULL_PU_PD_TYPE,/ > *177*/ > + MTK_PULL_PU_PD_TYPE,/*178*/ MTK_PULL_PU_PD_TYPE,/ > *179*/ > + MTK_PULL_PU_PD_TYPE,/*180*/ MTK_PULL_PU_PD_TYPE,/ > *181*/ > + MTK_PULL_PU_PD_TYPE,/*182*/ MTK_PULL_PUPD_R1R0_TY > PE,/*183*/ > + MTK_PULL_PUPD_R1R0_TYPE,/*184*/ MTK_PULL_PUPD_R1R0_TYPE,/*185 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*186*/ MTK_PULL_PUPD_R1R0_TYPE,/*187 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*188*/ MTK_PULL_PUPD_R1R0_TYPE,/*189 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*190*/ MTK_PULL_PUPD_R1R0_TYPE,/*191 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*192*/ MTK_PULL_PUPD_R1R0_TYPE,/*193 > */ > + MTK_PULL_PUPD_R1R0_TYPE,/*194*/ MTK_PULL_PU_PD_TYPE,/*195*/ > + MTK_PULL_PU_PD_TYPE,/*196*/ MTK_PULL_PU_PD_TYPE,/ > *197*/ > + MTK_PULL_PU_PD_TYPE,/*198*/ MTK_PULL_PU_PD_TYPE,/ > *199*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*200*/ MTK_PULL_PU_PD_RSEL_TYPE,/*20 > 1*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*202*/ MTK_PULL_PU_PD_RSEL_TYPE,/*20 > 3*/ > + MTK_PULL_PU_PD_RSEL_TYPE,/*204*/ MTK_PULL_PU_PD_RSEL_TYPE,/*20 > 5*/ > + MTK_PULL_PU_PD_TYPE,/*206*/ MTK_PULL_PU_PD_TYPE,/ > *207*/ > + MTK_PULL_PU_PD_TYPE,/*208*/ MTK_PULL_PU_PD_TYPE,/ > *209*/ > + MTK_PULL_PU_PD_TYPE,/*210*/ MTK_PULL_PU_PD_TYPE,/ > *211*/ > + MTK_PULL_PU_PD_TYPE,/*212*/ MTK_PULL_PU_PD_TYPE,/ > *213*/ > + MTK_PULL_PU_PD_TYPE,/*214*/ MTK_PULL_PU_PD_TYPE,/ > *215*/ > + MTK_PULL_PU_PD_TYPE,/*216*/ MTK_PULL_PU_PD_TYPE,/ > *217*/ > + MTK_PULL_PU_PD_TYPE,/*218*/ MTK_PULL_PU_PD_TYPE,/ > *219*/ > }; > > > @@ -1381,10 +1448,8 @@ static const struct mtk_pin_reg_calc > mt8192_reg_cals[PINCTRL_PIN_REG_MAX] = { > [PINCTRL_PIN_REG_PUPD] = MTK_RANGE(mt8192_pin_pupd_range), > [PINCTRL_PIN_REG_R0] = MTK_RANGE(mt8192_pin_r0_range), > [PINCTRL_PIN_REG_R1] = MTK_RANGE(mt8192_pin_r1_range), > - [PINCTRL_PIN_REG_DRV_EN] = MTK_RANGE(mt8192_pin_e1e0en_range), > - [PINCTRL_PIN_REG_DRV_E0] = MTK_RANGE(mt8192_pin_e0_range), > [PINCTRL_PIN_REG_DRV_ADV] = > MTK_RANGE(mt8192_pin_drv_adv_range), > - [PINCTRL_PIN_REG_DRV_E1] = MTK_RANGE(mt8192_pin_e1_range), > + [PINCTRL_PIN_REG_RSEL] = MTK_RANGE(mt8192_pin_rsel_range), > }; > > static const struct mtk_pin_soc mt8192_data = { > @@ -1394,6 +1459,7 @@ static const struct mtk_pin_soc mt8192_data = { > .ngrps = ARRAY_SIZE(mtk_pins_mt8192), > .base_names = mt8192_pinctrl_register_base_names, > .nbase_names = ARRAY_SIZE(mt8192_pinctrl_register_base_names), > + .pull_type = mt8192_pull_type, > .eint_hw = &mt8192_eint_hw, > .nfuncs = 8, > .gpio_m = 0, > @@ -1401,8 +1467,6 @@ static const struct mtk_pin_soc mt8192_data = { > .bias_get_combo = mtk_pinconf_bias_get_combo, > .drive_set = mtk_pinconf_drive_set_rev1, > .drive_get = mtk_pinconf_drive_get_rev1, > - .adv_pull_get = mtk_pinconf_adv_pull_get, > - .adv_pull_set = mtk_pinconf_adv_pull_set, I understand you're dropping this because the bias_combo getter/setters already handle all cases, but still this isn't really related to adding rsel, so I think it'd make more sense in a separate commit. At the very least it should be mentioned in the commit message. will fix it in next version,thanks! Thanks, NĂ­colas > .adv_drive_get = mtk_pinconf_adv_drive_get_raw, > .adv_drive_set = mtk_pinconf_adv_drive_set_raw, > }; > -- > 2.25.5 > 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 DA9A8C43334 for ; Fri, 24 Jun 2022 13:51:02 +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: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qbJFcQ0zIcE+x5HAAXZEx4wiyf5vvVGGTfMVBUPhz6U=; b=bTu77fvEZpNsnk eP0fBIF5QLmg4gVa6tvWwKTXNVGWIqcNAmDr1pVzzwEVEVmgrp1aee5ha9ObgWZxmuIJMnSneUj0o sLvgsqvp4uJBpQiBZMF2WJg3QEkYWTSoWL1mdWM+8eYP35SHz+PIPhGFO63/YQM+LOWVu3++HLBLD M3teUfvgYheFcJZHgStyJb5o0hXettyzV1v6KoYPEiCsnv5v3GfHZne8XhCJo9C4VrwKiISQEk1A9 sii17hHLrZLySu30bRalqk0IPH88RG89YKjoBfe59KY9kNEPDzUDhmrWOAEgRaB94RU4i/AJba6FU T+xIRVPT1w9fFDOi13yw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o4jh5-002Tp5-FH; Fri, 24 Jun 2022 13:49:55 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o4jej-002SRM-Dh; Fri, 24 Jun 2022 13:47:37 +0000 X-UUID: 9020124e549e42e698953772bb92e55e-20220624 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=XJKXtIXo3BtMANBGO51CpnB0whw1zJ0mZyO2wE7G5tc=; b=Eog93j5b4Ae0/dN3pmqsD50B6Kc94QPl0JKIYW7ln7SKwgnGJ7DU0JAgybrDzKOSFbDU2AOWEggSC7HK+L4jUL0yiyTz2sqowWHjQxtbFXpSPmrAQ7pi66s8qTqZFtkL3weJ58H9fUmpBC2uO4ODuk9GDc+apSw8X/OTv145B2Q=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.6,REQID:f9e779e8-fc4a-4fba-b1a0-946364decce4,OB:0,LO B:0,IP:0,URL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-META: VersionHash:b14ad71,CLOUDID:29637ed8-850a-491d-a127-60d9309b2b3e,C OID:IGNORED,Recheck:0,SF:nil,TC:nil,Content:-5,EDM:-3,IP:nil,URL:1,File:ni l,QS:nil,BEC:nil,COL:0 X-UUID: 9020124e549e42e698953772bb92e55e-20220624 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1393208950; Fri, 24 Jun 2022 06:47:13 -0700 Received: from mtkmbs10n1.mediatek.inc (172.21.101.34) by MTKMBS62N1.mediatek.inc (172.29.193.41) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 24 Jun 2022 06:41:00 -0700 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs10n1.mediatek.inc (172.21.101.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.792.15; Fri, 24 Jun 2022 21:40:59 +0800 Received: from mhfsdcap04 (10.17.3.154) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 24 Jun 2022 21:40:58 +0800 Message-ID: <2219b4523d9c52778610395de191c634dfe1801e.camel@mediatek.com> Subject: Re: [PATCH v1 3/4] pinctrl: mediatek: add rsel setting on mt8192 From: Guodong Liu To: "=?ISO-8859-1?Q?N=EDcolas?= F. R. A. Prado" CC: Linus Walleij , Rob Herring , Matthias Brugger , Sean Wang , Sean Wang , Zhiyong Tao , , , , , , Date: Fri, 24 Jun 2022 21:40:58 +0800 In-Reply-To: <20220609184716.mlu5j3m5i6jdraw4@notapiano> References: <20220608053909.1252-1-guodong.liu@mediatek.com> <20220608053909.1252-4-guodong.liu@mediatek.com> <20220609184716.mlu5j3m5i6jdraw4@notapiano> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220624_064729_643871_E3D8D55C X-CRM114-Status: GOOD ( 18.98 ) 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 LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IE7DrWNvbGFzIEYuIFIuIEEuIFByYWRv IDxuZnJhcHJhZG9AY29sbGFib3JhLmNvbT4NClRvOiBHdW9kb25nIExpdSA8Z3VvZG9uZy5saXVA bWVkaWF0ZWsuY29tPg0KQ2M6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9y Zz4sIFJvYiBIZXJyaW5nIDwNCnJvYmgrZHRAa2VybmVsLm9yZz4sIE1hdHRoaWFzIEJydWdnZXIg PG1hdHRoaWFzLmJnZ0BnbWFpbC5jb20+LCBTZWFuDQpXYW5nIDxzZWFuLndhbmdAa2VybmVsLm9y Zz4sIFNlYW4gV2FuZyA8c2Vhbi53YW5nQG1lZGlhdGVrLmNvbT4sDQpaaGl5b25nIFRhbyA8emhp eW9uZy50YW9AbWVkaWF0ZWsuY29tPiwgbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcsIA0KZGV2 aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmcsIGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZywgDQpsaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3JnLCBsaW51eC1rZXJuZWxA dmdlci5rZXJuZWwub3JnLCANClByb2plY3RfR2xvYmFsX0Nocm9tZV9VcHN0cmVhbV9Hcm91cEBt ZWRpYXRlay5jb20NClN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEgMy80XSBwaW5jdHJsOiBtZWRpYXRl azogYWRkIHJzZWwgc2V0dGluZyBvbg0KbXQ4MTkyDQpEYXRlOiBUaHUsIDkgSnVuIDIwMjIgMTQ6 NDc6MTYgLTA0MDANCg0KSGkgR3VvZG9uZywNCg0KdGhhbmsgeW91IGZvciB0aGUgcGF0Y2guIFBs ZWFzZSBzZWUgc29tZSBzdWdnZXN0aW9ucyBiZWxvdy4NCg0KT24gV2VkLCBKdW4gMDgsIDIwMjIg YXQgMDE6Mzk6MDhQTSArMDgwMCwgR3VvZG9uZyBMaXUgd3JvdGU6DQo+IEkyQyBwaW5zJ3MgcmVz aXN0YW5jZSB2YWx1ZSBjYW4gYmUgY29udHJvbGxlZCBieSByc2VsIHJlZ2lzdGVyLg0KPiBUaGlz IHBhdGNoIHByb3ZpZGVzIHJzZWwgKHJlc2lzdGFuY2Ugc2VsZWN0aW9uKSBzZXR0aW5nIG9uIG10 ODE5Mg0KDQpQbGVhc2UgbWVudGlvbiB0aGF0IHlvdSdyZSBhbHNvIGFkZGluZyB0aGUgcHVsbF90 eXBlIGFycmF5IGluIHRoaXMNCmNvbW1pdCwNCnNvbWV0aGluZyBsaWtlOiAiQWxzbyBhZGQgdGhl IG1pc3NpbmcgcHVsbCB0eXBlIGFycmF5IGZvciBtdDgxOTIgdG8NCmRvY3VtZW50IHRoZQ0KcHVs bCB0eXBlIG9mIGVhY2ggcGluIGFuZCBwcmV2ZW50IGludmFsaWQgcHVsbCB0eXBlIHNldHRpbmdz Ii4NCg0Kd2lsbCBmaXggaXQgaW4gbmV4dCB2ZXJzaW9uLHRoYW5rcyENCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IEd1b2RvbmcgTGl1IDxndW9kb25nLmxpdUBtZWRpYXRlay5jb20+DQo+IC0tLQ0KPiAg ZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ4MTkyLmMgfCAyMDQgKysrKysrKysr KysrKystLS0tDQo+IC0tLS0NCj4gIDEgZmlsZSBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwg NzAgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL21lZGlh dGVrL3BpbmN0cmwtbXQ4MTkyLmMNCj4gYi9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3Ry bC1tdDgxOTIuYw0KPiBpbmRleCBkMTFmZjU1MTllMWUuLjE0ODZjMTQxZWU4YyAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ4MTkyLmMNCj4gKysrIGIv ZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ4MTkyLmMNCj4gQEAgLTEyODUsNzMg KzEyODUsMTQwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3Bpbl9maWVsZF9jYWxjDQo+IG10 ODE5Ml9waW5fZHJ2X2Fkdl9yYW5nZVtdID0gew0KPiAgCVBJTl9GSUVMRF9CQVNFKDIwNSwgMjA1 LCA4LCAweDAwMTAsIDB4MTAsIDYsIDMpLA0KPiAgfTsNCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0 cnVjdCBtdGtfcGluX2ZpZWxkX2NhbGMgbXQ4MTkyX3Bpbl9lMWUwZW5fcmFuZ2VbXSA9IHsNCj4g LQlQSU5fRklFTERfQkFTRSgxMTgsIDExOCwgNCwgMHgwMDQwLCAweDEwLCAwLCAxKSwNCj4gLQlQ SU5fRklFTERfQkFTRSgxMTksIDExOSwgNCwgMHgwMDQwLCAweDEwLCAxOCwgMSksDQo+IC0JUElO X0ZJRUxEX0JBU0UoMTIwLCAxMjAsIDQsIDB4MDA0MCwgMHgxMCwgMTUsIDEpLA0KPiAtCVBJTl9G SUVMRF9CQVNFKDEyMSwgMTIxLCA0LCAweDAwNTAsIDB4MTAsIDMsIDEpLA0KPiAtCVBJTl9GSUVM RF9CQVNFKDEyMiwgMTIyLCA0LCAweDAwNDAsIDB4MTAsIDEyLCAxKSwNCj4gLQlQSU5fRklFTERf QkFTRSgxMjMsIDEyMywgNCwgMHgwMDUwLCAweDEwLCAwLCAxKSwNCj4gLQlQSU5fRklFTERfQkFT RSgxMjQsIDEyNCwgNCwgMHgwMDQwLCAweDEwLCA5LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgx MjUsIDEyNSwgNCwgMHgwMDQwLCAweDEwLCAyNywgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTM5 LCAxMzksIDQsIDB4MDA0MCwgMHgxMCwgNiwgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTQwLCAx NDAsIDQsIDB4MDA0MCwgMHgxMCwgMjQsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDE0MSwgMTQx LCA0LCAweDAwNDAsIDB4MTAsIDMsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDE0MiwgMTQyLCA0 LCAweDAwNDAsIDB4MTAsIDIxLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxNjAsIDE2MCwgNywg MHgwMDMwLCAweDEwLCAwLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxNjEsIDE2MSwgNywgMHgw MDMwLCAweDEwLCAzLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDAsIDIwMCwgOCwgMHgwMDEw LCAweDEwLCAzLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDEsIDIwMSwgOCwgMHgwMDEwLCAw eDEwLCA5LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDIsIDIwMiwgNSwgMHgwMDIwLCAweDEw LCAwLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDMsIDIwMywgNSwgMHgwMDIwLCAweDEwLCAz LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDQsIDIwNCwgOCwgMHgwMDEwLCAweDEwLCAwLCAx KSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDUsIDIwNSwgOCwgMHgwMDEwLCAweDEwLCA2LCAxKSwN Cg0KWW91J3JlIGRyb3BwaW5nIEUxLCBFMCwgYW5kIEVOIGFycmF5cyBoZXJlLCBidXQgdGhlc2Ug d2VyZSB1c2VkIGJ5IHRoZQ0Kb3JpZ2luYWwNCmFkdmFuY2VkIGRyaXZlIGNvbmZpZ3VyYXRpb24s IHNvIHRoZXkgc2hvdWxkJ3ZlIGJlZW4gZHJvcHBlZCBpbiB0aGUNCnByZXZpb3VzDQpwYXRjaCwg bm90IGluIHRoaXMgb25lLg0KDQp3aWxsIGZpeCBpdCBpbiBuZXh0IHZlcnNpb24sdGhhbmtzIQ0K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfcGluX2ZpZWxkX2NhbGMgbXQ4MTkyX3Bpbl9yc2Vs X3JhbmdlW10gPSB7DQo+ICsJUElOX0ZJRUxEX0JBU0UoMTE4LCAxMTgsIDQsIDB4MDBlMCwgMHgx MCwgMCwgMiksDQo+ICsJUElOX0ZJRUxEX0JBU0UoMTE5LCAxMTksIDQsIDB4MDBlMCwgMHgxMCwg MTIsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDEyMCwgMTIwLCA0LCAweDAwZTAsIDB4MTAsIDEw LCAyKSwNCj4gKwlQSU5fRklFTERfQkFTRSgxMjEsIDEyMSwgNCwgMHgwMGUwLCAweDEwLCAyMiwg MiksDQo+ICsJUElOX0ZJRUxEX0JBU0UoMTIyLCAxMjIsIDQsIDB4MDBlMCwgMHgxMCwgOCwgMiks DQo+ICsJUElOX0ZJRUxEX0JBU0UoMTIzLCAxMjMsIDQsIDB4MDBlMCwgMHgxMCwgMjAsIDIpLA0K PiArCVBJTl9GSUVMRF9CQVNFKDEyNCwgMTI0LCA0LCAweDAwZTAsIDB4MTAsIDYsIDIpLA0KPiAr CVBJTl9GSUVMRF9CQVNFKDEyNSwgMTI1LCA0LCAweDAwZTAsIDB4MTAsIDE4LCAyKSwNCj4gKwlQ SU5fRklFTERfQkFTRSgxMzksIDEzOSwgNCwgMHgwMGUwLCAweDEwLCA0LCAyKSwNCj4gKwlQSU5f RklFTERfQkFTRSgxNDAsIDE0MCwgNCwgMHgwMGUwLCAweDEwLCAxNiwgMiksDQo+ICsJUElOX0ZJ RUxEX0JBU0UoMTQxLCAxNDEsIDQsIDB4MDBlMCwgMHgxMCwgMiwgMiksDQo+ICsJUElOX0ZJRUxE X0JBU0UoMTQyLCAxNDIsIDQsIDB4MDBlMCwgMHgxMCwgMTQsIDIpLA0KPiArCVBJTl9GSUVMRF9C QVNFKDE2MCwgMTYwLCA3LCAweDAwZjAsIDB4MTAsIDAsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNF KDE2MSwgMTYxLCA3LCAweDAwZjAsIDB4MTAsIDIsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIw MCwgMjAwLCA4LCAweDAwNzAsIDB4MTAsIDIsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIwMSwg MjAxLCA4LCAweDAwNzAsIDB4MTAsIDYsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIwMiwgMjAy LCA1LCAweDAwNzAsIDB4MTAsIDAsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIwMywgMjAzLCA1 LCAweDAwNzAsIDB4MTAsIDIsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIwNCwgMjA0LCA4LCAw eDAwNzAsIDB4MTAsIDAsIDIpLA0KPiArCVBJTl9GSUVMRF9CQVNFKDIwNSwgMjA1LCA4LCAweDAw NzAsIDB4MTAsIDQsIDIpLA0KPiAgfTsNCj4gIA0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtf cGluX2ZpZWxkX2NhbGMgbXQ4MTkyX3Bpbl9lMF9yYW5nZVtdID0gew0KPiAtCVBJTl9GSUVMRF9C QVNFKDExOCwgMTE4LCA0LCAweDAwNDAsIDB4MTAsIDEsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNF KDExOSwgMTE5LCA0LCAweDAwNDAsIDB4MTAsIDE5LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgx MjAsIDEyMCwgNCwgMHgwMDQwLCAweDEwLCAxNiwgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTIx LCAxMjEsIDQsIDB4MDA1MCwgMHgxMCwgNCwgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTIyLCAx MjIsIDQsIDB4MDA0MCwgMHgxMCwgMTMsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDEyMywgMTIz LCA0LCAweDAwNTAsIDB4MTAsIDEsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDEyNCwgMTI0LCA0 LCAweDAwNDAsIDB4MTAsIDEwLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxMjUsIDEyNSwgNCwg MHgwMDQwLCAweDEwLCAyOCwgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTM5LCAxMzksIDQsIDB4 MDA0MCwgMHgxMCwgNywgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTQwLCAxNDAsIDQsIDB4MDA0 MCwgMHgxMCwgMjUsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDE0MSwgMTQxLCA0LCAweDAwNDAs IDB4MTAsIDQsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDE0MiwgMTQyLCA0LCAweDAwNDAsIDB4 MTAsIDIyLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxNjAsIDE2MCwgNywgMHgwMDMwLCAweDEw LCAxLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxNjEsIDE2MSwgNywgMHgwMDMwLCAweDEwLCA0 LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDAsIDIwMCwgOCwgMHgwMDEwLCAweDEwLCA0LCAx KSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDEsIDIwMSwgOCwgMHgwMDEwLCAweDEwLCAxMCwgMSks DQo+IC0JUElOX0ZJRUxEX0JBU0UoMjAyLCAyMDIsIDUsIDB4MDAyMCwgMHgxMCwgMSwgMSksDQo+ IC0JUElOX0ZJRUxEX0JBU0UoMjAzLCAyMDMsIDUsIDB4MDAyMCwgMHgxMCwgNCwgMSksDQo+IC0J UElOX0ZJRUxEX0JBU0UoMjA0LCAyMDQsIDgsIDB4MDAxMCwgMHgxMCwgMSwgMSksDQo+IC0JUElO X0ZJRUxEX0JBU0UoMjA1LCAyMDUsIDgsIDB4MDAxMCwgMHgxMCwgNywgMSksDQo+IC19Ow0KPiAt DQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IG10a19waW5fZmllbGRfY2FsYyBtdDgxOTJfcGluX2Ux X3JhbmdlW10gPSB7DQo+IC0JUElOX0ZJRUxEX0JBU0UoMTE4LCAxMTgsIDQsIDB4MDA0MCwgMHgx MCwgMiwgMSksDQo+IC0JUElOX0ZJRUxEX0JBU0UoMTE5LCAxMTksIDQsIDB4MDA0MCwgMHgxMCwg MjAsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDEyMCwgMTIwLCA0LCAweDAwNDAsIDB4MTAsIDE3 LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgxMjEsIDEyMSwgNCwgMHgwMDUwLCAweDEwLCA1LCAx KSwNCj4gLQlQSU5fRklFTERfQkFTRSgxMjIsIDEyMiwgNCwgMHgwMDQwLCAweDEwLCAxNCwgMSks DQo+IC0JUElOX0ZJRUxEX0JBU0UoMTIzLCAxMjMsIDQsIDB4MDA1MCwgMHgxMCwgMiwgMSksDQo+ IC0JUElOX0ZJRUxEX0JBU0UoMTI0LCAxMjQsIDQsIDB4MDA0MCwgMHgxMCwgMTEsIDEpLA0KPiAt CVBJTl9GSUVMRF9CQVNFKDEyNSwgMTI1LCA0LCAweDAwNDAsIDB4MTAsIDI5LCAxKSwNCj4gLQlQ SU5fRklFTERfQkFTRSgxMzksIDEzOSwgNCwgMHgwMDQwLCAweDEwLCA4LCAxKSwNCj4gLQlQSU5f RklFTERfQkFTRSgxNDAsIDE0MCwgNCwgMHgwMDQwLCAweDEwLCAyNiwgMSksDQo+IC0JUElOX0ZJ RUxEX0JBU0UoMTQxLCAxNDEsIDQsIDB4MDA0MCwgMHgxMCwgNSwgMSksDQo+IC0JUElOX0ZJRUxE X0JBU0UoMTQyLCAxNDIsIDQsIDB4MDA0MCwgMHgxMCwgMjMsIDEpLA0KPiAtCVBJTl9GSUVMRF9C QVNFKDE2MCwgMTYwLCA3LCAweDAwMzAsIDB4MTAsIDIsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNF KDE2MSwgMTYxLCA3LCAweDAwMzAsIDB4MTAsIDUsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDIw MCwgMjAwLCA4LCAweDAwMTAsIDB4MTAsIDUsIDEpLA0KPiAtCVBJTl9GSUVMRF9CQVNFKDIwMSwg MjAxLCA4LCAweDAwMTAsIDB4MTAsIDExLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDIsIDIw MiwgNSwgMHgwMDIwLCAweDEwLCAyLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDMsIDIwMywg NSwgMHgwMDIwLCAweDEwLCA1LCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDQsIDIwNCwgOCwg MHgwMDEwLCAweDEwLCAyLCAxKSwNCj4gLQlQSU5fRklFTERfQkFTRSgyMDUsIDIwNSwgOCwgMHgw MDEwLCAweDEwLCA4LCAxKSwNCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbXQ4MTkyX3B1 bGxfdHlwZVtdID0gew0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyowKi8JCU1US19QVUxMX1BV X1BEX1RZUEUsLyoxKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMiovCQlNVEtfUFVMTF9Q VV9QRF9UWVBFLC8qMyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjQqLwkJTVRLX1BVTExf UFVfUERfVFlQRSwvKjUqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyo2Ki8JCU1US19QVUxM X1BVX1BEX1RZUEUsLyo3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qOCovCQlNVEtfUFVM TF9QVV9QRF9UWVBFLC8qOSovDQo+ICsJTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyoxMCovCU1U S19QVUxMX1BVUERfUjFSMF9UWVBFLC8qMTEqDQo+IC8NCj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBf VFlQRSwvKjEyKi8JTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyoxMyoNCj4gLw0KPiArCU1US19Q VUxMX1BVUERfUjFSMF9UWVBFLC8qMTQqLwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjE1Kg0K PiAvDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE2Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUs Lw0KPiAqMTcqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyoxOCovCQlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8NCj4gKjE5Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMjAqLwkJTVRLX1BV TExfUFVfUERfVFlQRSwvDQo+ICoyMSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjIyKi8J CU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjMqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUs LyoyNCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjI1Ki8NCj4gKwlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8qMjYqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICoyNyovDQo+ICsJTVRLX1BV TExfUFVfUERfVFlQRSwvKjI4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjkqLw0KPiAr CU1US19QVUxMX1BVX1BEX1RZUEUsLyozMCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjMx Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMzIqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwv DQo+ICozMyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjM0Ki8JCU1US19QVUxMX1BVX1BE X1RZUEUsLw0KPiAqMzUqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyozNiovCQlNVEtfUFVM TF9QVV9QRF9UWVBFLC8NCj4gKjM3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMzgqLwkJ TVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICozOSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwv KjQwKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqNDEqLw0KPiArCU1US19QVUxMX1BVX1BE X1RZUEUsLyo0MiovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjQzKi8NCj4gKwlNVEtfUFVM TF9QVV9QRF9UWVBFLC8qNDQqLwkJTVRLX1BVTExfUFVQRF9SMVIwX1RZDQo+IFBFLC8qNDUqLw0K PiArCU1US19QVUxMX1BVUERfUjFSMF9UWVBFLC8qNDYqLwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQ RSwvKjQ3Kg0KPiAvDQo+ICsJTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyo0OCovCU1US19QVUxM X1BVUERfUjFSMF9UWVBFLC8qNDkqDQo+IC8NCj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwv KjUwKi8JTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyo1MSoNCj4gLw0KPiArCU1US19QVUxMX1BV UERfUjFSMF9UWVBFLC8qNTIqLwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjUzKg0KPiAvDQo+ ICsJTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyo1NCovCU1US19QVUxMX1BVUERfUjFSMF9UWVBF LC8qNTUqDQo+IC8NCj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjU2Ki8JTVRLX1BVTExf UFVfUERfVFlQRSwvKjU3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qNTgqLwkJTVRLX1BV TExfUFVfUERfVFlQRSwvDQo+ICo1OSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjYwKi8J CU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqNjEqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUs Lyo2MiovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjYzKi8NCj4gKwlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8qNjQqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICo2NSovDQo+ICsJTVRLX1BV TExfUFVfUERfVFlQRSwvKjY2Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqNjcqLw0KPiAr CU1US19QVUxMX1BVX1BEX1RZUEUsLyo2OCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjY5 Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qNzAqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwv DQo+ICo3MSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjcyKi8JCU1US19QVUxMX1BVX1BE X1RZUEUsLw0KPiAqNzMqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyo3NCovCQlNVEtfUFVM TF9QVV9QRF9UWVBFLC8NCj4gKjc1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qNzYqLwkJ TVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICo3NyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwv Kjc4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqNzkqLw0KPiArCU1US19QVUxMX1BVX1BE X1RZUEUsLyo4MCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjgxKi8NCj4gKwlNVEtfUFVM TF9QVV9QRF9UWVBFLC8qODIqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICo4MyovDQo+ICsJ TVRLX1BVTExfUFVfUERfVFlQRSwvKjg0Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqODUq Lw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyo4NiovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8N Cj4gKjg3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qODgqLwkJTVRLX1BVTExfUFVfUERf VFlQRSwvDQo+ICo4OSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjkwKi8JCU1US19QVUxM X1BVX1BEX1RZUEUsLw0KPiAqOTEqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyo5MiovCQlN VEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjkzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8q OTQqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICo5NSovDQo+ICsJTVRLX1BVTExfUFVfUERf VFlQRSwvKjk2Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqOTcqLw0KPiArCU1US19QVUxM X1BVX1BEX1RZUEUsLyo5OCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjk5Ki8NCj4gKwlN VEtfUFVMTF9QVV9QRF9UWVBFLC8qMTAwKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTAx Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTAyKi8JCU1US19QVUxMX1BVX1BEX1RZUEUs Lw0KPiAqMTAzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTA0Ki8JCU1US19QVUxMX1BV X1BEX1RZUEUsLw0KPiAqMTA1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTA2Ki8JCU1U S19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTA3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8q MTA4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTA5Ki8NCj4gKwlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8qMTEwKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTExKi8NCj4gKwlNVEtf UFVMTF9QVV9QRF9UWVBFLC8qMTEyKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTEzKi8N Cj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTE0Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0K PiAqMTE1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTE2Ki8JCU1US19QVUxMX1BVX1BE X1RZUEUsLw0KPiAqMTE3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMTgqLwlN VEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMQ0KPiA5Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9S U0VMX1RZUEUsLyoxMjAqLwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMg0KPiAxKi8NCj4g KwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMjIqLwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZ UEUsLyoxMg0KPiAzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMjQqLwlNVEtf UFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoxMg0KPiA1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBF LC8qMTI2Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTI3Ki8NCj4gKwlNVEtfUFVMTF9Q VV9QRF9UWVBFLC8qMTI4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTI5Ki8NCj4gKwlN VEtfUFVMTF9QVV9QRF9UWVBFLC8qMTMwKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTMx Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTMyKi8JCU1US19QVUxMX1BVX1BEX1RZUEUs Lw0KPiAqMTMzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTM0Ki8JCU1US19QVUxMX1BV X1BEX1RZUEUsLw0KPiAqMTM1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTM2Ki8JCU1U S19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTM3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8q MTM4Ki8JCU1US19QVUxMX1BVX1BEX1JTRUxfVA0KPiBZUEUsLyoxMzkqLw0KPiArCU1US19QVUxM X1BVX1BEX1JTRUxfVFlQRSwvKjE0MCovCU1US19QVUxMX1BVX1BEX1JTRUxfVFlQRSwvKjE0DQo+ IDEqLw0KPiArCU1US19QVUxMX1BVX1BEX1JTRUxfVFlQRSwvKjE0MiovCU1US19QVUxMX1BVX1BE X1RZUEUsLyoxNDMqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyoxNDQqLwkJTVRLX1BVTExf UFVfUERfVFlQRSwvDQo+ICoxNDUqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUsLyoxNDYqLwkJ TVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICoxNDcqLw0KPiArCU1US19QVUxMX1BVX1BEX1RZUEUs LyoxNDgqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICoxNDkqLw0KPiArCU1US19QVUxMX1BV X1BEX1RZUEUsLyoxNTAqLwkJTVRLX1BVTExfUFVfUERfVFlQRSwvDQo+ICoxNTEqLw0KPiArCU1U S19QVUxMX1BVUERfUjFSMF9UWVBFLC8qMTUyKi8JTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyox NTMNCj4gKi8NCj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjE1NCovCU1US19QVUxMX1BV UERfUjFSMF9UWVBFLC8qMTU1DQo+ICovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE1Niov CQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE1NyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQ RSwvKjE1OCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE1OSovDQo+ICsJTVRLX1BVTExf UFVfUERfUlNFTF9UWVBFLC8qMTYwKi8JTVRLX1BVTExfUFVfUERfUlNFTF9UWVBFLC8qMTYNCj4g MSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE2MiovCQlNVEtfUFVMTF9QVV9QRF9UWVBF LC8NCj4gKjE2MyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE2NCovCQlNVEtfUFVMTF9Q VV9QRF9UWVBFLC8NCj4gKjE2NSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE2NiovCQlN VEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE2NyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwv KjE2OCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE2OSovDQo+ICsJTVRLX1BVTExfUFVf UERfVFlQRSwvKjE3MCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE3MSovDQo+ICsJTVRL X1BVTExfUFVfUERfVFlQRSwvKjE3MiovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE3Myov DQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE3NCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8N Cj4gKjE3NSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE3NiovCQlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8NCj4gKjE3NyovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE3OCovCQlNVEtf UFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE3OSovDQo+ICsJTVRLX1BVTExfUFVfUERfVFlQRSwvKjE4 MCovCQlNVEtfUFVMTF9QVV9QRF9UWVBFLC8NCj4gKjE4MSovDQo+ICsJTVRLX1BVTExfUFVfUERf VFlQRSwvKjE4MiovCQlNVEtfUFVMTF9QVVBEX1IxUjBfVFkNCj4gUEUsLyoxODMqLw0KPiArCU1U S19QVUxMX1BVUERfUjFSMF9UWVBFLC8qMTg0Ki8JTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyox ODUNCj4gKi8NCj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjE4NiovCU1US19QVUxMX1BV UERfUjFSMF9UWVBFLC8qMTg3DQo+ICovDQo+ICsJTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyox ODgqLwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjE4OQ0KPiAqLw0KPiArCU1US19QVUxMX1BV UERfUjFSMF9UWVBFLC8qMTkwKi8JTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyoxOTENCj4gKi8N Cj4gKwlNVEtfUFVMTF9QVVBEX1IxUjBfVFlQRSwvKjE5MiovCU1US19QVUxMX1BVUERfUjFSMF9U WVBFLC8qMTkzDQo+ICovDQo+ICsJTVRLX1BVTExfUFVQRF9SMVIwX1RZUEUsLyoxOTQqLwlNVEtf UFVMTF9QVV9QRF9UWVBFLC8qMTk1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMTk2Ki8J CU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTk3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBF LC8qMTk4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMTk5Ki8NCj4gKwlNVEtfUFVMTF9Q VV9QRF9SU0VMX1RZUEUsLyoyMDAqLwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoyMA0KPiAx Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoyMDIqLwlNVEtfUFVMTF9QVV9QRF9S U0VMX1RZUEUsLyoyMA0KPiAzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoyMDQq LwlNVEtfUFVMTF9QVV9QRF9SU0VMX1RZUEUsLyoyMA0KPiA1Ki8NCj4gKwlNVEtfUFVMTF9QVV9Q RF9UWVBFLC8qMjA2Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjA3Ki8NCj4gKwlNVEtf UFVMTF9QVV9QRF9UWVBFLC8qMjA4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjA5Ki8N Cj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMjEwKi8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0K PiAqMjExKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMjEyKi8JCU1US19QVUxMX1BVX1BE X1RZUEUsLw0KPiAqMjEzKi8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMjE0Ki8JCU1US19Q VUxMX1BVX1BEX1RZUEUsLw0KPiAqMjE1Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9UWVBFLC8qMjE2 Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjE3Ki8NCj4gKwlNVEtfUFVMTF9QVV9QRF9U WVBFLC8qMjE4Ki8JCU1US19QVUxMX1BVX1BEX1RZUEUsLw0KPiAqMjE5Ki8NCj4gIH07DQo+ICAN Cj4gIA0KPiBAQCAtMTM4MSwxMCArMTQ0OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3Bp bl9yZWdfY2FsYw0KPiBtdDgxOTJfcmVnX2NhbHNbUElOQ1RSTF9QSU5fUkVHX01BWF0gPSB7DQo+ ICAJW1BJTkNUUkxfUElOX1JFR19QVVBEXSA9IE1US19SQU5HRShtdDgxOTJfcGluX3B1cGRfcmFu Z2UpLA0KPiAgCVtQSU5DVFJMX1BJTl9SRUdfUjBdID0gTVRLX1JBTkdFKG10ODE5Ml9waW5fcjBf cmFuZ2UpLA0KPiAgCVtQSU5DVFJMX1BJTl9SRUdfUjFdID0gTVRLX1JBTkdFKG10ODE5Ml9waW5f cjFfcmFuZ2UpLA0KPiAtCVtQSU5DVFJMX1BJTl9SRUdfRFJWX0VOXSA9IE1US19SQU5HRShtdDgx OTJfcGluX2UxZTBlbl9yYW5nZSksDQo+IC0JW1BJTkNUUkxfUElOX1JFR19EUlZfRTBdID0gTVRL X1JBTkdFKG10ODE5Ml9waW5fZTBfcmFuZ2UpLA0KPiAgCVtQSU5DVFJMX1BJTl9SRUdfRFJWX0FE Vl0JPQ0KPiBNVEtfUkFOR0UobXQ4MTkyX3Bpbl9kcnZfYWR2X3JhbmdlKSwNCj4gLQlbUElOQ1RS TF9QSU5fUkVHX0RSVl9FMV0gPSBNVEtfUkFOR0UobXQ4MTkyX3Bpbl9lMV9yYW5nZSksDQo+ICsJ W1BJTkNUUkxfUElOX1JFR19SU0VMXQk9IE1US19SQU5HRShtdDgxOTJfcGluX3JzZWxfcmFuZ2Up LA0KPiAgfTsNCj4gIA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfcGluX3NvYyBtdDgxOTJf ZGF0YSA9IHsNCj4gQEAgLTEzOTQsNiArMTQ1OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRr X3Bpbl9zb2MgbXQ4MTkyX2RhdGEgPSB7DQo+ICAJLm5ncnBzID0gQVJSQVlfU0laRShtdGtfcGlu c19tdDgxOTIpLA0KPiAgCS5iYXNlX25hbWVzID0gbXQ4MTkyX3BpbmN0cmxfcmVnaXN0ZXJfYmFz ZV9uYW1lcywNCj4gIAkubmJhc2VfbmFtZXMgPSBBUlJBWV9TSVpFKG10ODE5Ml9waW5jdHJsX3Jl Z2lzdGVyX2Jhc2VfbmFtZXMpLA0KPiArCS5wdWxsX3R5cGUgPSBtdDgxOTJfcHVsbF90eXBlLA0K PiAgCS5laW50X2h3ID0gJm10ODE5Ml9laW50X2h3LA0KPiAgCS5uZnVuY3MgPSA4LA0KPiAgCS5n cGlvX20gPSAwLA0KPiBAQCAtMTQwMSw4ICsxNDY3LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfcGluX3NvYyBtdDgxOTJfZGF0YSA9IHsNCj4gIAkuYmlhc19nZXRfY29tYm8gPSBtdGtfcGlu Y29uZl9iaWFzX2dldF9jb21ibywNCj4gIAkuZHJpdmVfc2V0CT0gbXRrX3BpbmNvbmZfZHJpdmVf c2V0X3JldjEsDQo+ICAJLmRyaXZlX2dldAk9IG10a19waW5jb25mX2RyaXZlX2dldF9yZXYxLA0K PiAtCS5hZHZfcHVsbF9nZXQgPSBtdGtfcGluY29uZl9hZHZfcHVsbF9nZXQsDQo+IC0JLmFkdl9w dWxsX3NldCA9IG10a19waW5jb25mX2Fkdl9wdWxsX3NldCwNCg0KSSB1bmRlcnN0YW5kIHlvdSdy ZSBkcm9wcGluZyB0aGlzIGJlY2F1c2UgdGhlIGJpYXNfY29tYm8gZ2V0dGVyL3NldHRlcnMNCmFs cmVhZHkNCmhhbmRsZSBhbGwgY2FzZXMsIGJ1dCBzdGlsbCB0aGlzIGlzbid0IHJlYWxseSByZWxh dGVkIHRvIGFkZGluZyByc2VsLA0Kc28gSSB0aGluaw0KaXQnZCBtYWtlIG1vcmUgc2Vuc2UgaW4g YSBzZXBhcmF0ZSBjb21taXQuIEF0IHRoZSB2ZXJ5IGxlYXN0IGl0IHNob3VsZA0KYmUNCm1lbnRp b25lZCBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuDQoNCndpbGwgZml4IGl0IGluIG5leHQgdmVyc2lv bix0aGFua3MhDQoNClRoYW5rcywNCk7DrWNvbGFzDQoNCj4gIAkuYWR2X2RyaXZlX2dldAk9IG10 a19waW5jb25mX2Fkdl9kcml2ZV9nZXRfcmF3LA0KPiAgCS5hZHZfZHJpdmVfc2V0CT0gbXRrX3Bp bmNvbmZfYWR2X2RyaXZlX3NldF9yYXcsDQo+ICB9Ow0KPiAtLSANCj4gMi4yNS41DQo+IA0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=