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 66C5DC4332F for ; Mon, 21 Nov 2022 07:31:29 +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=29qoD4o027IxTw9MqXqPdA6CM5nc7VFV5NhZFmzi6Eo=; b=yUyU9E1iTLTTrG k14OXHTg/JLmRw1qtiyrvAAssh5xSrANhoisdPUUyIOzBTb4zqN3aKP3Qqp2tJ0GQ+z/U4aifzZI4 yDlEwYArJfNTngct7RHGqEZX41I8iIwhDO1FCDgb1yUd+TdGUlGBaJU6Ym+MHGzi34ct+kzrKE8ZT 4thrKAl4H218I8eoPan409K2nufxl41TG1hhvmtlaad8s0UXkadtVFdmop0jD23BMlgmzbsDzzQBr +w76yl5M0iCHDSGBACEdwaGGLPadZIWtSus7/SOlyZFrS1se6bVSmCRQeYQqpMw2O67LnKcIJLHs2 mfHAvyOI2/RQ+AQ5+aTA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ox1H6-00AOFe-L8; Mon, 21 Nov 2022 07:31:28 +0000 Received: from mail-he1eur04on0607.outbound.protection.outlook.com ([2a01:111:f400:fe0d::607] helo=EUR04-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ox1De-00ALUx-SA; Mon, 21 Nov 2022 07:27:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MS6PI+snBIduVlIltRTpCnhzoX6pNee55j8onR0ureBgx5DZ2KPKQe2Al9L2HI460B1QlZUPciaWVOTpqukZGvEBBwKmfqnq1PwpEUe5yQxponHCdxgkMofdWmP2TOSY4mU7HgW2XJVEYv9ltacuRL6OdhMCoUV4GHYfSmo6GupqoPdI5u3RqF3rpu3koItC6RRWTedOokosuLDL3Gj5BOEg23WhjJBbQju66JOsLK6d6uWHKYdLZJR3eg9EQDwKzi0BIy1Kd+62uBBJaZStU9poHCk9xuLYuw/3Qforvetunp923QJX/qy20gmM9+3EFAEq5Cr1TsX0wDTFsuNg8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=flkkTFpgDgCcbLid0yhCKcPupKXsf1TTX8yWNieMkck=; b=BLf/mNThTFRn9Zv/gHsZF29L+ENiL5kt/oQKliTXwQ0QceEcvoyR5x5FJGjzteYMbEcVS+/jbbYaHDoLfn9p9mGHq0IY2cPbJ7p+7E/uLuaSXTIctjK7aYwiq8uubxdH93wL5mo8poRDFa0tJ4vOv60OGyZPmR6Qr4p1gutnyMYOocRh+FZWGwJZ7gXTMFK/3JkLyAukAq6/NX9sdHdogw2V0ezz2V5RXWQRjk3e2FmxD0nyUxs0JGaPeAGsYK3ob8ibspkReSUuoF7zh8V8yPT9SjRupWKWXNrUgXsjbjmL8jb91aM8r43lgRlTaCakG5vgr58WKVb5D0q05no7cA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=flkkTFpgDgCcbLid0yhCKcPupKXsf1TTX8yWNieMkck=; b=dQyRZ4+jVUDOT8dWP820oJ2UrsnpazkYmn5ddUR9vhxj34wevgUCdqNc4GbX7+V8F4cjEgrGHsgV/CWGmyBQDv2MwNXJ+gHUr1JnxyR2Spg6EwQqkzsHEnRoGsizVvXUhGgDiFRMr6Uo0TZ1tbTvrpyttMhiGP/aI0O27DxFE3Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by AS8PR04MB7638.eurprd04.prod.outlook.com (2603:10a6:20b:291::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Mon, 21 Nov 2022 07:27:48 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::60b2:4bec:7707:e196]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::60b2:4bec:7707:e196%5]) with mapi id 15.20.5834.015; Mon, 21 Nov 2022 07:27:48 +0000 From: Sandor Yu To: andrzej.hajda@intel.com, neil.armstrong@linaro.org, robert.foss@linaro.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, airlied@gmail.com, daniel@ffwll.ch, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, kishon@ti.com, vkoul@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, alexander.stein@ew.tq-group.com Cc: kernel@pengutronix.de, linux-imx@nxp.com, Sandor.yu@nxp.com, oliver.brown@nxp.com Subject: [PATCH v4 08/10] phy: cadence: Add driver for HDP-TX DisplyPort PHY Date: Mon, 21 Nov 2022 15:23:58 +0800 Message-Id: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: SG2PR06CA0246.apcprd06.prod.outlook.com (2603:1096:4:ac::30) To PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9448:EE_|AS8PR04MB7638:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b5e0bb9-fb75-4b08-ded1-08dacb91e40c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ykuREkfvfh4ftFvv6vsBNI7Q9iVdLaE0hONpQQncKaxcm01ySan9cAkcw/MSPa0/KF9yGnm6amgaYX40xRRcjRnMAyKRMODcE5zMPy+amFcFXV21CqcXYOzzP+zmmGc94haqvbNd+gq3Qgv45pSixlqsTEzsmFdQmyZU24DZwqf7ZIx4Kue5fye0a5Kw5JesWce6FLwaC2tWVRxitOXdfmoJ6ZhhcgtiSpZLB0gzE55atw/SMLPZlXUdrifWYMKdDOffqvAak3d5YID2R2OrOxzw8yo1Lep8/J3yDoqBpKyX0X6kner4J97iHZCdhZ5meTtq3HBWyMyrmYSThIvtKcEoUgq1dgnnv2NvkCI+FR+hV6RyE3gFzbRdrCA1s/duQgfMLDW/8Ymy5AOJJBDsVIQEqBxv7yYUgNxgyDe/VJvm7u8UsrHIoNxyTdoiU/taqacV1ku/XTR2P9TABeMkFgod8DcWjairjK+xbzXo+ZMkpEvWauOisqI0fenFNGSNvOhiRPnuVJaMDnheo8NmQ4I5Rrtz4r7COjKmpDUVxI5Opd7Uge3tmpJ3F4UPeCZxBiugfNWq7DQkgtGs3FsCGkcjJh9Qvpauj2y21gwl6/WeUHXhiN3dwpPPHKFbb0Ngo+3mOKdjmDD0hEJs9tJZ4vrrbGnN7EyHQopNUC+oaYyH5UVls/UbLFHmeYnQFn2wGCycFyzM6pS0j8IqPRW/zA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9448.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(346002)(366004)(376002)(396003)(451199015)(7416002)(8936002)(8676002)(5660300002)(4326008)(30864003)(66556008)(66476007)(66946007)(41300700001)(86362001)(921005)(6486002)(478600001)(2906002)(6666004)(6506007)(26005)(52116002)(316002)(6512007)(186003)(83380400001)(2616005)(38100700002)(38350700002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cU1qQVNQNHFKaXF0QVRmVDh2bDBEU1hPSmdsWDBYSnFuQkNPU2tTOUpTVkRk?= =?utf-8?B?NFpLa1psWWpyMXllRW9KQ2dUeEwxZ1pEZ2VXZ2JXeUQxMmN3b3lUR3FYTi9E?= =?utf-8?B?eWh6cW5CVndzeGF3T0dMbzk1UTE0dXM2M3NoVjNYdDdjN0dxZXJ0bWwvVnZo?= =?utf-8?B?UE1zeFdnajNrbDRHYmtiaW94OTVONFRSWmcveS80V1hRUDBNcUlMdkJPTkl1?= =?utf-8?B?eWxicVRuWjc0Z3NIbkwxaTA2S2VpUEdyRFlWZVpDS3l4a2pidVRvclhmZXdC?= =?utf-8?B?S1NPdEhESmovNVBqWm5PelpqekJNMjBKbU9HQ2VDWkFDbncvVWQ0SHJnN3Zk?= =?utf-8?B?bVZOYXB3QjQzL1NzV1A3RENHQ0toQ084d0xTZzJWWisySkJyV2FGM2FzS3hn?= =?utf-8?B?OVZJRk1maWpKa1A3cExhOUtnU2VaREFZOEZWWWp3TUhmOGFlNE5Wb0YydW5W?= =?utf-8?B?M3M2N2kxU0k5elBoczc0OUhQTjMyOGpMR3N5YUswaklETG02SFVNbXlwc3ln?= =?utf-8?B?bVNaMmxQclh6SXh0TEpUV2MwREZMYWVKN0ZJVWV1TmxKUmhTLzMydVlEUVdP?= =?utf-8?B?RC9BTE1NKzdING9vUWdqRnRnZEwvQW9tSU9pN1ZScEhpWTJGd0xORkZncm54?= =?utf-8?B?UmxERkc3ZW5hVlNLV0hkRmM1YWJZbkw3bzBsWnZ6SDQ2bTRpTUlxU215M29a?= =?utf-8?B?eTRpUUhUOGliMmtGeHlmR0FMaXFOQVBuVUlnTzY5SzQ3b1pVelZGMUNaenFo?= =?utf-8?B?cE5GNDNYY0d5V1N5M0hVdFFFV0xpdDd6RHVweXJJWEhWUm1zWDArYVhzdldF?= =?utf-8?B?TVIwQVJvQ25mcGtKUGlDMVNYeGc4RmsyWi81QWVRQ1RBSUthRGovemE2Yy9j?= =?utf-8?B?bWdkQ3ZiNGgyMS9laVVtNFJpMDhqNE1yYnRTRzl1MUdVRDBUTTNrNWtIZEtN?= =?utf-8?B?bWRzYW0zcmhsbW9FczhycXY3dnhTVnlObjRhSUVBOEI2MnVQR0JIYUtBL3M3?= =?utf-8?B?Z2FEbUI4Sytna2hURkRTRlRQRHYzY3lDUkQwaW9lZjZ3endzQThDTlQ4RWg1?= =?utf-8?B?ejBBdk45RVNoYzZJWVViQXhiRlhwQ1JLQTRHc2dpK2d5LzFYRXBBQjhaYXY2?= =?utf-8?B?SjluNU1TaWJKRy8vQXBPeUNHY3htaXNGWG1EL1lkUDJ3blRlZWZuTDZTcTA2?= =?utf-8?B?d2drblQwOGxFL20yUkRGRnRybGthNXF3SDRBWnFxNFJxOHEwZHJBUk9DRDJa?= =?utf-8?B?S2N3Vk01ZFpkNmwzWFlOeTk3N1I4K2hoS1VkeFlsd2VHNmpObXpWMEpoeXc1?= =?utf-8?B?R0V6VnJUNDBNZXRRZFNKZUtwQng2YnJzN3l0dUtmY1RDQTBoaVVkaVJsV1Qr?= =?utf-8?B?WVk2MmRDdFJSVC9paG5UZjFEQmdsbW5IRDZEeVRGajJTNnBIN2R0d1B1K3Mw?= =?utf-8?B?bk1WWFdMTHB1dGdNREJxNkE3SWF5bWxKcDViZ09kbTFXbjd4cmNMazRQT3g3?= =?utf-8?B?by9QYkZ4Wktua2FHcit1d0V3aTI1TTdVN3haYmRzck9rSzZMbDZrSjViMWtw?= =?utf-8?B?ZGZEQ3JBSFJJZkgyS3dRUWNndnlrc2JXclZlYytwR1lRMlBsdEJRL1JmajlV?= =?utf-8?B?VE1DeURuVm9jS3oxeTBneUpBM1psVmRTRWZzWTQ2T002NHlxSWZ5aTIwWWFp?= =?utf-8?B?YUViTTBpTjZrWGdSNDhLZFhISG80bW5aZ3ZacHFmOHVzcUVhSC9NL1lmRWNQ?= =?utf-8?B?akZpUERnckRyQkFKTkZOZnpDZ0NjRzcwSDZqSGxzSk5QRHRudk9yVlQxSVcw?= =?utf-8?B?ZU9vYVdnME5jSW5GZk1NNFhmYXd1dVlQL3lDWGYxblJlVFJsMDhFN2ZCYUNy?= =?utf-8?B?QUppRzN2VjF1TDJaNzFFazJDVDM5WWhvMGh2LzBFN3lTZFRuOGpKNExMMFU3?= =?utf-8?B?YUlpUzFQTnFwTGFTZU1nbEw1Sk1ndFdTdkNLbmFqQ1JybzNmcjhEb2NaYlBT?= =?utf-8?B?YWhyVnA5Y2xOclEvbldhVG1qUlhBVGNGS3lxTUxjcldQZGV0ZFdibjdQcEti?= =?utf-8?B?TFpKMTNPWk9wQ1ZDdTQwTzBqNWFWdE5IRGpOK0hlVVIxSHBpRTJwNXNOcitJ?= =?utf-8?Q?rQXnmugYEBH7bc40fyJxXyJUz?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b5e0bb9-fb75-4b08-ded1-08dacb91e40c X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2022 07:27:48.5747 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9fSVE7MCehNSrdD+qUa8R+0kWtU7dj4byUNPH+sygJyQpRyWpPh4fjcPmfRcco0gpaNeCu7ccsEdLXf8dDWtXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7638 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221120_232754_988898_6CBFB028 X-CRM114-Status: GOOD ( 14.54 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org QWRkIENhZGVuY2UgSERQLVRYIERpc3BsYXlQb3J0IFBIWSBkcml2ZXIuCgpDYWRlbmNlIEhEUC1U WCBQSFkgY291bGQgYmUgcHV0IGluIGVpdGhlciBEUCBtb2RlIG9yCkhETUkgbW9kZSBiYXNlIG9u IHRoZSBjb25maWd1cmF0aW9uIGNob3Nlbi4KRGlzcGxheVBvcnQgUEhZIG1vZGUgaXMgY29uZmln dXJhdGVkIGluIHRoZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBTYW5kb3IgWXUgPFNhbmRvci55 dUBueHAuY29tPgotLS0KIGRyaXZlcnMvcGh5L2NhZGVuY2UvS2NvbmZpZyAgICAgICAgICAgICAg ICB8ICAgOCArCiBkcml2ZXJzL3BoeS9jYWRlbmNlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAg IDEgKwogZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0eC1kcC5jIHwgNzM3ICsr KysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA3NDYgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2NhZGVuY2UvcGh5LWNhZGVuY2UtaGRwdHgt ZHAuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvS2NvbmZpZyBiL2RyaXZlcnMv cGh5L2NhZGVuY2UvS2NvbmZpZwppbmRleCAxYWRkZTJkOTlhZTcuLjdjNjYyYTU3YjgxMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9waHkvY2FkZW5jZS9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L2Nh ZGVuY2UvS2NvbmZpZwpAQCAtMzAsNiArMzAsMTQgQEAgY29uZmlnIFBIWV9DQURFTkNFX0RQSFlf UlgKIAloZWxwCiAJICBTdXBwb3J0IGZvciBDYWRlbmNlIEQtUEhZIGluIFJ4IGNvbmZpZ3VyYXRp b24uCiAKK2NvbmZpZyBQSFlfQ0FERU5DRV9IRFBUWF9EUAorCXRyaXN0YXRlICJDYWRlbmNlIEhE UFRYIERQIFBIWSBEcml2ZXIiCisJZGVwZW5kcyBvbiBPRiAmJiBIQVNfSU9NRU0KKwlkZXBlbmRz IG9uIENPTU1PTl9DTEsKKwlzZWxlY3QgR0VORVJJQ19QSFkKKwloZWxwCisJICBFbmFibGUgdGhp cyB0byBzdXBwb3J0IHRoZSBDYWRlbmNlIEhEUFRYIERQIFBIWSBkcml2ZXIKKwogY29uZmlnIFBI WV9DQURFTkNFX1NJRVJSQQogCXRyaXN0YXRlICJDYWRlbmNlIFNpZXJyYSBQSFkgRHJpdmVyIgog CWRlcGVuZHMgb24gT0YgJiYgSEFTX0lPTUVNICYmIFJFU0VUX0NPTlRST0xMRVIKZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9jYWRlbmNlL01h a2VmaWxlCmluZGV4IGUxN2YwMzVkZGVjZS4uNWU3ZDkyYTRjOWFhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3BoeS9jYWRlbmNlL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcGh5L2NhZGVuY2UvTWFrZWZp bGUKQEAgLTIsNSArMiw2IEBACiBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfVE9SUkVOVCkJKz0g cGh5LWNhZGVuY2UtdG9ycmVudC5vCiBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfRFBIWSkJKz0g Y2Rucy1kcGh5Lm8KIG9iai0kKENPTkZJR19QSFlfQ0FERU5DRV9EUEhZX1JYKQkrPSBjZG5zLWRw aHktcngubworb2JqLSQoQ09ORklHX1BIWV9DQURFTkNFX0hEUFRYX0RQKQkrPSBwaHktY2FkZW5j ZS1oZHB0eC1kcC5vCiBvYmotJChDT05GSUdfUEhZX0NBREVOQ0VfU0lFUlJBKQkrPSBwaHktY2Fk ZW5jZS1zaWVycmEubwogb2JqLSQoQ09ORklHX1BIWV9DQURFTkNFX1NBTFZPKQkrPSBwaHktY2Fk ZW5jZS1zYWx2by5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9jYWRlbmNlL3BoeS1jYWRlbmNl LWhkcHR4LWRwLmMgYi9kcml2ZXJzL3BoeS9jYWRlbmNlL3BoeS1jYWRlbmNlLWhkcHR4LWRwLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNDQyOTIyODhkZDYKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3BoeS9jYWRlbmNlL3BoeS1jYWRlbmNlLWhkcHR4LWRw LmMKQEAgLTAsMCArMSw3MzcgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKKy8qCisgKiBDYWRlbmNlIEhEUC1UWCBEaXNwbGF5IFBvcnQgSW50ZXJmYWNlIChEUCkg UEhZIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBOWFAgU2VtaWNvbmR1Y3Rvciwg SW5jLgorICovCisjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgorI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHku aD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9p by5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgorCisjaW5jbHVkZSA8ZHJtL2JyaWRnZS9j ZG5zLW1oZHAtbWFpbGJveC5oPgorCisjZGVmaW5lIEFERFJfUEhZX0FGRQkweDgwMDAwCisKKy8q IFBIWSByZWdpc3RlcnMgKi8KKyNkZWZpbmUgQ01OX1NTTV9CSUFTX1RNUiAgICAgICAgICAgICAg ICAweDAwMjIKKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExFTl9UTVIgICAgICAgICAgICAweDAwMjkK KyNkZWZpbmUgQ01OX1BMTFNNMF9QTExQUkVfVE1SICAgICAgICAgICAweDAwMkEKKyNkZWZpbmUg Q01OX1BMTFNNMF9QTExWUkVGX1RNUiAgICAgICAgICAweDAwMkIKKyNkZWZpbmUgQ01OX1BMTFNN MF9QTExMT0NLX1RNUiAgICAgICAgICAweDAwMkMKKyNkZWZpbmUgQ01OX1BMTFNNMF9VU0VSX0RF Rl9DVFJMICAgICAgICAweDAwMkYKKyNkZWZpbmUgQ01OX1BTTV9DTEtfQ1RSTCAgICAgICAgICAg ICAgICAweDAwNjEKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX1NUQVJUICAgICAgICAgICAweDAw ODEKKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX0lOSVRfVE1SICAgICAgICAweDAwODQKKyNkZWZp bmUgQ01OX1BMTDBfVkNPQ0FMX0lURVJfVE1SICAgICAgICAweDAwODUKKyNkZWZpbmUgQ01OX1BM TDBfSU5URElWICAgICAgICAgICAgICAgICAweDAwOTQKKyNkZWZpbmUgQ01OX1BMTDBfRlJBQ0RJ ViAgICAgICAgICAgICAgICAweDAwOTUKKyNkZWZpbmUgQ01OX1BMTDBfSElHSF9USFIgICAgICAg ICAgICAgICAweDAwOTYKKyNkZWZpbmUgQ01OX1BMTDBfRFNNX0RJQUcgICAgICAgICAgICAgICAw eDAwOTcKKyNkZWZpbmUgQ01OX1BMTDBfU1NfQ1RSTDIgICAgICAgICAgICAgICAweDAwOTkKKyNk ZWZpbmUgQ01OX0lDQUxfSU5JVF9UTVIgICAgICAgICAgICAgICAweDAwQzQKKyNkZWZpbmUgQ01O X0lDQUxfSVRFUl9UTVIgICAgICAgICAgICAgICAweDAwQzUKKyNkZWZpbmUgQ01OX1JYQ0FMX0lO SVRfVE1SICAgICAgICAgICAgICAweDAwRDQKKyNkZWZpbmUgQ01OX1JYQ0FMX0lURVJfVE1SICAg ICAgICAgICAgICAweDAwRDUKKyNkZWZpbmUgQ01OX1RYUFVDQUxfSU5JVF9UTVIgICAgICAgICAg ICAweDAwRTQKKyNkZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwRTUK KyNkZWZpbmUgQ01OX1RYUERDQUxfSU5JVF9UTVIgICAgICAgICAgICAweDAwRjQKKyNkZWZpbmUg Q01OX1RYUERDQUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwRjUKKyNkZWZpbmUgQ01OX0lDQUxf QURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMDIKKyNkZWZpbmUgQ01OX0lDQUxfQURKX0lURVJf VE1SICAgICAgICAgICAweDAxMDMKKyNkZWZpbmUgQ01OX1JYX0FESl9JTklUX1RNUiAgICAgICAg ICAgICAweDAxMDYKKyNkZWZpbmUgQ01OX1JYX0FESl9JVEVSX1RNUiAgICAgICAgICAgICAweDAx MDcKKyNkZWZpbmUgQ01OX1RYUFVfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMEEKKyNkZWZp bmUgQ01OX1RYUFVfQURKX0lURVJfVE1SICAgICAgICAgICAweDAxMEIKKyNkZWZpbmUgQ01OX1RY UERfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMEUKKyNkZWZpbmUgQ01OX1RYUERfQURKX0lU RVJfVE1SICAgICAgICAgICAweDAxMEYKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9GQkhfT1ZSRCAg ICAgICAgICAweDAxQzAKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9GQkxfT1ZSRCAgICAgICAgICAw eDAxQzEKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9PVlJEICAgICAgICAgICAgICAweDAxQzIKKyNk ZWZpbmUgQ01OX0RJQUdfUExMMF9URVNUX01PREUgICAgICAgICAweDAxQzQKKyNkZWZpbmUgQ01O X0RJQUdfUExMMF9WMklfVFVORSAgICAgICAgICAweDAxQzUKKyNkZWZpbmUgQ01OX0RJQUdfUExM MF9DUF9UVU5FICAgICAgICAgICAweDAxQzYKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9MRl9QUk9H ICAgICAgICAgICAweDAxQzcKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTEgICAg ICAweDAxQzgKKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgICAgICAweDAxQzkK KyNkZWZpbmUgQ01OX0RJQUdfSFNDTEtfU0VMICAgICAgICAgICAgICAweDAxRTAKKyNkZWZpbmUg Q01OX0RJQUdfUEVSX0NBTF9BREogICAgICAgICAgICAweDAxRUMKKyNkZWZpbmUgQ01OX0RJQUdf Q0FMX0NUUkwgICAgICAgICAgICAgICAweDAxRUQKKyNkZWZpbmUgQ01OX0RJQUdfQUNZQSAgICAg ICAgICAgICAgICAgICAweDAxRkYKKyNkZWZpbmUgWENWUl9QU01fUkNUUkwgICAgICAgICAgICAg ICAgICAweDQwMDEKKyNkZWZpbmUgWENWUl9QU01fQ0FMX1RNUiAgICAgICAgICAgICAgICAweDQw MDIKKyNkZWZpbmUgWENWUl9QU01fQTBJTl9UTVIgICAgICAgICAgICAgICAweDQwMDMKKyNkZWZp bmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxUXzAgICAgICAgICAweDQwNDcKKyNkZWZpbmUgVFhfVFhD Q19DUE9TVF9NVUxUXzAwXzAgICAgICAgICAweDQwNEMKKyNkZWZpbmUgWENWUl9ESUFHX1BMTERS Q19DVFJMICAgICAgICAgICAweDQwRTAKKyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMICAg ICAgICAgICAweDQwRTAKKyNkZWZpbmUgWENWUl9ESUFHX0hTQ0xLX1NFTCAgICAgICAgICAgICAw eDQwRTEKKyNkZWZpbmUgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIgICAweDQwRjIKKyNk ZWZpbmUgVFhfUFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAweDQxMDAKKyNkZWZpbmUgVFhf UFNDX0ExICAgICAgICAgICAgICAgICAgICAgICAweDQxMDEKKyNkZWZpbmUgVFhfUFNDX0EyICAg ICAgICAgICAgICAgICAgICAgICAweDQxMDIKKyNkZWZpbmUgVFhfUFNDX0EzICAgICAgICAgICAg ICAgICAgICAgICAweDQxMDMKKyNkZWZpbmUgVFhfUkNWREVUX0VOX1RNUiAgICAgICAgICAgICAg ICAweDQxMjIKKyNkZWZpbmUgVFhfUkNWREVUX1NUX1RNUiAgICAgICAgICAgICAgICAweDQxMjMK KyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAweDQxRTcKKyNkZWZpbmUg VFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkgICAgICAweDQxRTcKKyNkZWZpbmUgVFhfRElBR19B Q1lBXzAgICAgICAgICAgICAgICAgICAweDQxRkYKKyNkZWZpbmUgVFhfRElBR19BQ1lBXzEgICAg ICAgICAgICAgICAgICAweDQzRkYKKyNkZWZpbmUgVFhfRElBR19BQ1lBXzIgICAgICAgICAgICAg ICAgICAweDQ1RkYKKyNkZWZpbmUgVFhfRElBR19BQ1lBXzMgICAgICAgICAgICAgICAgICAweDQ3 RkYKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUwMjAKKyNkZWZp bmUgVFhfQU5BX0NUUkxfUkVHXzIgICAgICAgICAgICAgICAweDUwMjEKKyNkZWZpbmUgVFhfRElH X0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUwMjMKKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVH XzIgICAgICAgICAgICAgICAweDUwMjQKKyNkZWZpbmUgVFhEQV9DWUFfQVVYREFfQ1lBICAgICAg ICAgICAgICAweDUwMjUKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzMgICAgICAgICAgICAgICAw eDUwMjYKKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzQgICAgICAgICAgICAgICAweDUwMjcKKyNk ZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzUgICAgICAgICAgICAgICAweDUwMjkKKyNkZWZpbmUgUlhf UFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAKKyNkZWZpbmUgUlhfUFNDX0NBTCAg ICAgICAgICAgICAgICAgICAgICAweDgwMDYKKyNkZWZpbmUgUEhZX0hEUF9NT0RFX0NUUkwgICAg ICAgICAgICAgICAweEMwMDgKKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAgICAgICAgICAg ICAweEMwMDkKKyNkZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAweEM4MDAK KworI2RlZmluZSBNQVhfTlVNX0xBTkVTCQk0CisjZGVmaW5lIERFRkFVTFRfTUFYX0JJVF9SQVRF CTU0MDAgLyogaW4gTWJwcyAqLworCisjZGVmaW5lIFJFRl9DTEtfMjdNSFoJCTI3MDAwMDAwCisK K2VudW0gZHBfbGlua19yYXRlIHsKKwlSQVRFXzFfNiA9IDE2MjAwMCwKKwlSQVRFXzJfMSA9IDIx NjAwMCwKKwlSQVRFXzJfNCA9IDI0MzAwMCwKKwlSQVRFXzJfNyA9IDI3MDAwMCwKKwlSQVRFXzNf MiA9IDMyNDAwMCwKKwlSQVRFXzRfMyA9IDQzMjAwMCwKKwlSQVRFXzVfNCA9IDU0MDAwMCwKKwlS QVRFXzhfMSA9IDgxMDAwMCwKK307CisKK3N0cnVjdCBwaHlfcGxsX3JlZyB7CisJdTE2IHZhbFs3 XTsKKwl1MzIgYWRkcjsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X3BsbF9yZWcgcGh5 X3BsbF8yN21fY2ZnW10gPSB7CisJLyogIDEuNjIgICAgMi4xNiAgICAyLjQzICAgIDIuNyAgICAg My4yNCAgICA0LjMyICAgIDUuNCAgICAgIHJlZ2lzdGVyIGFkZHJlc3MgKi8KKwl7eyAweDAxMEUs IDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAweDAxMEUgfSwgQ01OX1BM TDBfVkNPQ0FMX0lOSVRfVE1SIH0sCisJe3sgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFC LCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCIH0sIENNTl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiB9LAor CXt7IDB4MzBCOSwgMHgzMDg3LCAweDMwOTYsIDB4MzBCNCwgMHgzMEI5LCAweDMwODcsIDB4MzBC NCB9LCBDTU5fUExMMF9WQ09DQUxfU1RBUlQgfSwKKwl7eyAweDAwNzcsIDB4MDA5RiwgMHgwMEIz LCAweDAwQzcsIDB4MDA3NywgMHgwMDlGLCAweDAwQzcgfSwgQ01OX1BMTDBfSU5URElWIH0sCisJ e3sgMHhGOURBLCAweEY3Q0QsIDB4RjZDNywgMHhGNUMxLCAweEY5REEsIDB4RjdDRCwgMHhGNUMx IH0sIENNTl9QTEwwX0ZSQUNESVYgfSwKKwl7eyAweDAwMUUsIDB4MDAyOCwgMHgwMDJELCAweDAw MzIsIDB4MDAxRSwgMHgwMDI4LCAweDAwMzIgfSwgQ01OX1BMTDBfSElHSF9USFIgfSwKKwl7eyAw eDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAgfSwg Q01OX1BMTDBfRFNNX0RJQUcgfSwKKwl7eyAweDAwMDAsIDB4MTAwMCwgMHgxMDAwLCAweDEwMDAs IDB4MDAwMCwgMHgxMDAwLCAweDEwMDAgfSwgQ01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMIH0sCisJ e3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw IH0sIENNTl9ESUFHX1BMTDBfT1ZSRCB9LAorCXt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4 MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElBR19QTEwwX0ZCSF9PVlJEIH0s CisJe3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgw MDAwIH0sIENNTl9ESUFHX1BMTDBfRkJMX09WUkQgfSwKKwl7eyAweDAwMDYsIDB4MDAwNywgMHgw MDA3LCAweDAwMDcsIDB4MDAwNiwgMHgwMDA3LCAweDAwMDcgfSwgQ01OX0RJQUdfUExMMF9WMklf VFVORSB9LAorCXt7IDB4MDA0MywgMHgwMDQzLCAweDAwNDMsIDB4MDA0MiwgMHgwMDQzLCAweDAw NDMsIDB4MDA0MiB9LCBDTU5fRElBR19QTEwwX0NQX1RVTkUgfSwKKwl7eyAweDAwMDgsIDB4MDAw OCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDggfSwgQ01OX0RJQUdfUExM MF9MRl9QUk9HIH0sCisJe3sgMHgwMTAwLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAxMDAs IDB4MDAwMSwgMHgwMDAxIH0sIENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUxIH0sCisJe3sgMHgw MDA3LCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDcsIDB4MDAwMSwgMHgwMDAxIH0sIENN Tl9ESUFHX1BMTDBfUFRBVElTX1RVTkUyIH0sCisJe3sgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwg MHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwIH0sIENNTl9ESUFHX1BMTDBfVEVTVF9NT0RF fSwKKwl7eyAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAw eDAwMTYgfSwgQ01OX1BTTV9DTEtfQ1RSTCB9Cit9OworCitzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9w aHkgeworCXZvaWQgX19pb21lbSAqcmVnczsJLyogRFBUWCByZWdpc3RlcnMgYmFzZSAqLworCXN0 cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgcGh5ICpwaHk7CisJc3RydWN0IG11dGV4IG1ib3hf bXV0ZXg7IC8qIG11dGV4IHRvIHByb3RlY3QgbWFpbGJveCAqLworCXN0cnVjdCBjbGsgKnJlZl9j bGssICphcGJfY2xrOworCXUzMiByZWZfY2xrX3JhdGU7CisJdTMyIG51bV9sYW5lczsKKwl1MzIg bWF4X2JpdF9yYXRlOyAvKiBNYXhpbXVtIGxpbmsgYml0IHJhdGUgdG8gdXNlIChpbiBNYnBzKSAq LworCXUzMiBsaW5rX3JhdGU7CisJYm9vbCBwb3dlcl91cDsKK307CisKK3N0YXRpYyBpbnQgY2Ru c19waHlfcmVnX3dyaXRlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHksIHUzMiBh ZGRyLCB1MzIgdmFsKQoreworCXJldHVybiBjZG5zX21oZHBfcmVnX3dyaXRlKGNkbnNfcGh5LCBB RERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgdmFsKTsKK30KKworc3RhdGljIHUzMiBjZG5zX3Bo eV9yZWdfcmVhZChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzIgYWRkcikK K3sKKwl1MzIgcmVnMzI7CisKKwljZG5zX21oZHBfcmVnX3JlYWQoY2Ruc19waHksIEFERFJfUEhZ X0FGRSArIChhZGRyIDw8IDIpLCAmcmVnMzIpOworCXJldHVybiByZWczMjsKK30KKworc3RhdGlj IGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJhdGUpCit7CisJc3dpdGNoIChyYXRlKSB7CisJY2Fz ZSBSQVRFXzFfNjoKKwkJcmV0dXJuIDA7CisJY2FzZSBSQVRFXzJfMToKKwkJcmV0dXJuIDE7CisJ Y2FzZSBSQVRFXzJfNDoKKwkJcmV0dXJuIDI7CisJY2FzZSBSQVRFXzJfNzoKKwkJcmV0dXJuIDM7 CisJY2FzZSBSQVRFXzNfMjoKKwkJcmV0dXJuIDQ7CisJY2FzZSBSQVRFXzRfMzoKKwkJcmV0dXJu IDU7CisJY2FzZSBSQVRFXzVfNDoKKwkJcmV0dXJuIDY7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC0x OworCX0KK30KKworc3RhdGljIGludCBoZHB0eF9kcF9jbGtfZW5hYmxlKHN0cnVjdCBjZG5zX2hk cHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY2Ruc19waHkt PmRldjsKKwl1MzIgcmVmX2Nsa19yYXRlOworCWludCByZXQ7CisKKwljZG5zX3BoeS0+cmVmX2Ns ayA9IGRldm1fY2xrX2dldChkZXYsICJyZWZjbGsiKTsKKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5y ZWZfY2xrKSkgeworCQlkZXZfZXJyKGRldiwgInBoeSByZWYgY2xvY2sgbm90IGZvdW5kXG4iKTsK KwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZl9jbGspOworCX0KKworCWNkbnNfcGh5LT5h cGJfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImFwYmNsayIpOworCWlmIChJU19FUlIoY2Ruc19w aHktPmFwYl9jbGspKSB7CisJCWRldl9lcnIoZGV2LCAicGh5IGFwYiBjbG9jayBub3QgZm91bmRc biIpOworCQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+YXBiX2Nsayk7CisJfQorCisJcmV0ID0g Y2xrX3ByZXBhcmVfZW5hYmxlKGNkbnNfcGh5LT5yZWZfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRl dl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIHJlZiBjbG9ja1xuIik7CisJ CXJldHVybiByZXQ7CisJfQorCisJcmVmX2Nsa19yYXRlID0gY2xrX2dldF9yYXRlKGNkbnNfcGh5 LT5yZWZfY2xrKTsKKwlpZiAoIXJlZl9jbGtfcmF0ZSkgeworCQlkZXZfZXJyKGNkbnNfcGh5LT5k ZXYsICJGYWlsZWQgdG8gZ2V0IHJlZiBjbG9jayByYXRlXG4iKTsKKwkJZ290byBlcnJfcmVmX2Ns azsKKwl9CisKKwlpZiAocmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopCisJCWNkbnNfcGh5 LT5yZWZfY2xrX3JhdGUgPSByZWZfY2xrX3JhdGU7CisJZWxzZSB7CisJCWRldl9lcnIoY2Ruc19w aHktPmRldiwgIk5vdCBzdXBwb3J0IFJlZiBDbG9jayBSYXRlKCVkSHopXG4iLCByZWZfY2xrX3Jh dGUpOworCQlnb3RvIGVycl9yZWZfY2xrOworCX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJs ZShjZG5zX3BoeS0+YXBiX2Nsayk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGNkbnNfcGh5LT5k ZXYsICJGYWlsZWQgdG8gcHJlcGFyZSBhcGIgY2xvY2tcbiIpOworCQlnb3RvIGVycl9yZWZfY2xr OworCX0KKworCXJldHVybiAwOworCitlcnJfcmVmX2NsazoKKwljbGtfZGlzYWJsZV91bnByZXBh cmUoY2Ruc19waHktPnJlZl9jbGspOworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgdm9p ZCBoZHB0eF9kcF9jbGtfZGlzYWJsZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5 KQoreworCWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7CisJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5hcGJfY2xrKTsKK30KKworc3RhdGljIHZvaWQgaGRw dHhfZHBfYXV4X2NmZyhzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCS8q IFBvd2VyIHVwIEF1eCAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9DWUFf QVVYREFfQ1lBLCAxKTsKKworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElHX0NU UkxfUkVHXzEsIDB4Myk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBUWF9ESUdfQ1RSTF9SRUdfMiwgMzYpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDEwMCk7CisJbmRlbGF5KDE1 MCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgw MzAwKTsKKwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FO QV9DVFJMX1JFR18zLCAweDAwMDApOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4MjAwOCk7CisJbmRlbGF5KDE1MCk7CisJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHgyMDE4KTsK KwluZGVsYXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJM X1JFR18xLCAweEEwMTgpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwQyk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfNSwgMHgwMDAwKTsKKwluZGVs YXkoMTUwKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR180 LCAweDEwMDEpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfQU5BX0NUUkxfUkVHXzEsIDB4QTA5OCk7CisJbmRlbGF5KDE1MCk7CisJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHhBMTk4KTsKKwluZGVsYXkoMTUw KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAz MGQpOworCW5kZWxheSgxNTApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzIsIDB4MDMwZik7Cit9CisKKy8qIFBNQSBjb21tb24gY29uZmlndXJhdGlvbiBm b3IgMjdNSHogKi8KK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9wbWFfY21uX2NmZ18yN21oeihz dHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXUzMiBudW1fbGFuZXMgPSBj ZG5zX3BoeS0+bnVtX2xhbmVzOworCXUxNiB2YWw7CisJaW50IGs7CisKKwl2YWwgPSBjZG5zX3Bo eV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOworCXZhbCAmPSAweEZGRjc7 CisJdmFsIHw9IDB4MDAwODsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9QTUFf Q01OX0NUUkwxLCB2YWwpOworCisJLyogU3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAq LworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1NTTV9CSUFTX1RNUiwgMHgwMDg3 KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTExTTTBfUExMRU5fVE1SLCAw eDAwMUIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExQUkVf VE1SLCAweDAwMzYpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9Q TExWUkVGX1RNUiwgMHgwMDFCKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9Q TExTTTBfUExMTE9DS19UTVIsIDB4MDA2Qyk7CisKKwkvKiBDdXJyZW50IGNhbGlicmF0aW9uIHJl Z2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxfSU5JVF9U TVIsIDB4MDA0NCk7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9JVEVS X1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0FE Sl9JTklUX1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9J Q0FMX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsKKworCS8qIFJlc2lzdG9yIGNhbGlicmF0aW9uIHJl Z2lzdGVycyAqLworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVDQUxfSU5J VF9UTVIsIDB4MDAyMik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVUNB TF9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9U WFBVX0FESl9JTklUX1RNUiwgMHgwMDIyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IENNTl9UWFBVX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIENNTl9UWFBEQ0FMX0lOSVRfVE1SLCAweDAwMjIpOworCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgQ01OX1RYUERDQUxfSVRFUl9UTVIsIDB4MDAwNik7CisJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpfSU5JVF9UTVIsIDB4MDAyMik7CisJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpfSVRFUl9UTVIsIDB4MDAwNik7CisJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhDQUxfSU5JVF9UTVIsIDB4MDAyMik7 CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhDQUxfSVRFUl9UTVIsIDB4MDAw Nik7CisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhfQURKX0lOSVRfVE1SLCAw eDAwMjIpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1JYX0FESl9JVEVSX1RN UiwgMHgwMDA2KTsKKworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewor CQkvKiBQb3dlciBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLworCQljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFhDVlJfUFNNX0NBTF9UTVIgIHwgKGsgPDwgOSksIDB4MDE2RCk7CisJCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9QU01fQTBJTl9UTVIgfCAoayA8PCA5KSwg MHgwMTZEKTsKKwkJLyogVHJhbnNjZWl2ZXIgY29udHJvbCBhbmQgZGlhZ25vc3RpYyByZWdpc3Rl cnMgKi8KKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX0RJQUdfTEFORV9GQ01f RU5fTUdOX1RNUiB8IChrIDw8IDkpLCAweDAwQTIpOworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgIHwgKGsgPDwgOSksIDB4MDA5Nyk7 CisJCS8qIFRyYW5zbWl0dGVyIHJlY2VpdmVyIGRldGVjdCByZWdpc3RlcnMgKi8KKwkJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9SQ1ZERVRfRU5fVE1SIHwgKGsgPDwgOSksIDB4MEE4 Qyk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NUX1RNUiB8IChr IDw8IDkpLCAweDAwMzYpOworCX0KKworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhf RElBR19BQ1lBXzAsIDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19B Q1lBXzEsIDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzIs IDEpOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMsIDEpOwor fQorCitzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3bWh6KHN0cnVjdCBj ZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJdTMyIG51bV9sYW5lcyA9IGNkbnNfcGh5 LT5udW1fbGFuZXM7CisJdTMyIGxpbmtfcmF0ZSA9IGNkbnNfcGh5LT5saW5rX3JhdGU7CisJdTE2 IHZhbDsKKwlpbnQgaW5kZXgsIGksIGs7CisKKwkvKiBEUCBQTEwgZGF0YSByYXRlIDAvMSBjbG9j ayBkaXZpZGVyIHZhbHVlICovCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBI WV9IRFBfQ0xLX0NUTCk7CisJdmFsICY9IDB4MDBGRjsKKwlpZiAobGlua19yYXRlIDw9IFJBVEVf Ml83KQorCQl2YWwgfD0gMHgyNDAwOworCWVsc2UKKwkJdmFsIHw9IDB4MTIwMDsKKwljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKworCS8qIEhpZ2gg c3BlZWQgY2xvY2sgMC8xIGRpdiAqLworCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5 LCBDTU5fRElBR19IU0NMS19TRUwpOworCXZhbCAmPSAweEZGQ0M7CisJaWYgKGxpbmtfcmF0ZSA8 PSBSQVRFXzJfNykKKwkJdmFsIHw9IDB4MDAxMTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9ESUFHX0hTQ0xLX1NFTCwgdmFsKTsKKworCWZvciAoayA9IDA7IGsgPCBudW1fbGFu ZXM7IGsrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJfRElB R19IU0NMS19TRUwgfCAoayA8PCA5KSkpOworCQl2YWwgPSB2YWwgJiAweENGRkY7CisJCWlmIChs aW5rX3JhdGUgPD0gUkFURV8yXzcpCisJCQl2YWwgfD0gMHgxMDAwOworCQljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkpLCB2YWwpOwor CX0KKworCS8qIERQIFBIWSBQTEwgMjdNSHogY29uZmlndXJhdGlvbiAqLworCWluZGV4ID0gbGlu a19yYXRlX2luZGV4KGxpbmtfcmF0ZSk7CisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGh5 X3BsbF8yN21fY2ZnKTsgaSsrKQorCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIHBoeV9w bGxfMjdtX2NmZ1tpXS5hZGRyLAorCQkJCXBoeV9wbGxfMjdtX2NmZ1tpXS52YWxbaW5kZXhdKTsK KworCS8qIFRyYW5zY2VpdmVyIGNvbnRyb2wgYW5kIGRpYWdub3N0aWMgcmVnaXN0ZXJzICovCisJ Zm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgaysrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpKTsKKwkJdmFs ID0gdmFsICYgMHg4RkZGOworCQlpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQorCQkJdmFsIHw9 IDB4MjAwMDsKKwkJZWxzZQorCQkJdmFsIHw9IDB4MTAwMDsKKwkJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCAoWENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpLCB2YWwpOworCX0K KworCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgeworCQkvKiBQb3dlciBz dGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLworCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IChYQ1ZSX1BTTV9SQ1RSTCB8IChrIDw8IDkpKSwgIDB4QkVGQyk7CisJCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsKKwkJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFNDX0ExIHwgKGsgPDwgOSkpLCAweDY3OTgpOwor CQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTIgfCAoayA8PCA5KSksIDB4 MDA5OCk7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMyB8IChrIDw8 IDkpKSwgMHgwMDk4KTsKKwkJLyogUmVjZWl2ZXIgY2FsaWJyYXRpb24gcG93ZXIgc3RhdGUgZGVm aW5pdGlvbiByZWdpc3RlciAqLworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwg UlhfUFNDX0NBTCB8IChrIDw8IDkpKTsKKwkJdmFsICY9IDB4RkZCQjsKKwkJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCAoUlhfUFNDX0NBTCB8IChrIDw8IDkpKSwgdmFsKTsKKwkJdmFsID0g Y2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFJYX1BTQ19BMCAgfCAoayA8PCA5KSk7CisJCXZh bCAmPSAweEZGQkI7CisJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFJYX1BTQ19BMCAg fCAoayA8PCA5KSksIHZhbCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcmVm X2Nsb2NrX3R5cGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKK3sKKwl1MzIg dmFsOworCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NU UkwxKTsKKwl2YWwgJj0gMHhGRjhGOworCS8qCisJICogc2luZ2xlIGVuZGVkIHJlZmVyZW5jZSBj bG9jayAodmFsIHw9IDB4MDAzMCk7CisJICogZGlmZmVyZW50aWFsIGNsb2NrICAodmFsIHw9IDB4 MDAwMCk7CisJICoKKwkgKiBmb3IgZGlmZmVyZW50aWFsIGNsb2NrIG9uIHRoZSByZWZjbGtfcCBh bmQKKwkgKiByZWZjbGtfbSBvZmYgY2hpcCBwaW5zOiBDTU5fRElBR19BQ1lBWzhdPTEnYjEKKwkg KiBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9ESUFHX0FDWUEsIDB4MDEwMCk7CisJ ICovCisJdmFsIHw9IDB4MDAzMDsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9Q TUFfQ01OX0NUUkwxLCB2YWwpOworfQorCitzdGF0aWMgaW50IGhkcHR4X2RwX3BoeV9wb3dlcl91 cChzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQoreworCXUzMiB2YWwsIGk7CisK KwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovCisJdmFsID0g Y2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsIHw9ICgx IDw8IDApOworCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2 YWwpOworCS8qIFdhaXQgZm9yIFBMTCByZWFkeSBBQ0sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7 IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtf Q1RMKTsKKwkJaWYgKHZhbCAmICgxIDw8IDEpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7CisJ fQorCWlmIChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIEFj ayBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogRW5hYmxlIEhEUCBQTEzigJlz IGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRlIGNsb2NrcyBvdXQgb2YgUE1BLiAqLworCXZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCXZhbCB8PSAoMSA8 PCAyKTsKKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFs KTsKKwkvKiBXYWl0IGZvciBQTEwgY2xvY2sgZW5hYmxlIEFDSyAqLworCWZvciAoaSA9IDA7IGkg PCAxMDsgaSsrKSB7CisJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQ X0NMS19DVEwpOworCQlpZiAodmFsICYgKDEgPDwgMykpCisJCQlicmVhazsKKwkJbXNsZWVwKDIw KTsKKwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQ TEwgY2xvY2sgZW5hYmxlIEFDayBmYWlsZWRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyog Q29uZmlndXJlIFBIWSBpbiBBMiBNb2RlICovCisJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBQSFlfSERQX01PREVfQ1RSTCwgMHgwMDA0KTsKKwkvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBB MiBBY2sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBjZG5zX3BoeV9y ZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwpOworCQlpZiAodmFsICYgKDEgPDwg NikpCisJCQlicmVhazsKKwkJbXNsZWVwKDIwKTsKKwl9CisJaWYgKGkgPT0gMTApIHsKKwkJZGV2 X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIC0x OworCX0KKworCS8qIENvbmZpZ3VyZSBQSFkgaW4gQTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhl IEEwIHBvd2VyCisJICogc3RhdGUgaW4gb3JkZXIgdG8gdHJhbnNtaXQgZGF0YSkKKwkgKi8KKwlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDAxMDEpOwor CisJLyogV2FpdCBmb3IgUG93ZXIgU3RhdGUgQTAgQWNrICovCisJZm9yIChpID0gMDsgaSA8IDEw OyBpKyspIHsKKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfTU9E RV9DVFJMKTsKKwkJaWYgKHZhbCAmICgxIDw8IDQpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7 CisJfQorCWlmIChpID09IDEwKSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgQTAg QWNrIGZhaWxlZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwljZG5zX3BoeS0+cG93ZXJfdXAg PSB0cnVlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9wb3dl cl9kb3duKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCit7CisJdTE2IHZhbDsK KwlpbnQgaTsKKworCWlmICghY2Ruc19waHktPnBvd2VyX3VwKQorCQlyZXR1cm47CisKKwkvKiBQ bGFjZSB0aGUgUEhZIGxhbmVzIGluIHRoZSBBMyBwb3dlciBzdGF0ZS4gKi8KKwljZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDgpOworCS8qIFdhaXQgZm9y IFBvd2VyIFN0YXRlIEEzIEFjayAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJCXZh bCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCk7CisJCWlm ICh2YWwgJiAoMSA8PCA3KSkKKwkJCWJyZWFrOworCQltc2xlZXAoMjApOworCX0KKwlpZiAoaSA9 PSAxMCkgeworCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJXYWl0IEEzIEFjayBmYWlsZWRcbiIp OworCQlyZXR1cm47CisJfQorCisJLyogRGlzYWJsZSBIRFAgUExM4oCZcyBkYXRhIHJhdGUgYW5k IGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9mIFBNQS4gKi8KKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVh ZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwl2YWwgJj0gfigxIDw8IDIpOworCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOworCS8qIFdhaXQg Zm9yIFBMTCBjbG9jayBnYXRlIEFDSyAqLworCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisJ CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOworCQlp ZiAoISh2YWwgJiAoMSA8PCAzKSkpCisJCQlicmVhazsKKwkJbXNsZWVwKDIwKTsKKwl9CisJaWYg KGkgPT0gMTApIHsKKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZ2F0 ZSBBY2sgZmFpbGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCS8qIERpc2FibGUgSERQIFBMTOKA mXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tzICovCisJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ru c19waHksIFBIWV9IRFBfQ0xLX0NUTCk7CisJdmFsICY9IH4oMSA8PCAwKTsKKwljZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKKwkvKiBXYWl0IGZvciBQ TEwgZGlzYWJsZSBBQ0sgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQl2YWwgPSBj ZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKKwkJaWYgKCEodmFs ICYgKDEgPDwgMSkpKQorCQkJYnJlYWs7CisJCW1zbGVlcCgyMCk7CisJfQorCWlmIChpID09IDEw KSB7CisJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIGRpc2FibGUgQWNrIGZhaWxl ZFxuIik7CisJCXJldHVybjsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlf b24oc3RydWN0IHBoeSAqcGh5KQoreworCXN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19w aHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKKworCXJldHVybiBoZHB0eF9kcF9waHlfcG93ZXJf dXAoY2Ruc19waHkpOworfQorCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X29mZihzdHJ1 Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOworCisJaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfaW5pdChz dHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7CisKKwloZHB0eF9kcF9waHlfcmVmX2Ns b2NrX3R5cGUoY2Ruc19waHkpOworCisJLyogUEhZIHBvd2VyIHVwICovCisJcmV0ID0gaGRwdHhf ZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsK KworCWhkcHR4X2RwX2F1eF9jZmcoY2Ruc19waHkpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksCisJCQkJICAg ICB1bmlvbiBwaHlfY29uZmlndXJlX29wdHMgKm9wdHMpCit7CisJc3RydWN0IGNkbnNfaGRwdHhf ZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOworCWludCByZXQ7CisKKwlj ZG5zX3BoeS0+bGlua19yYXRlID0gb3B0cy0+ZHAubGlua19yYXRlOworCisJLyogRGlzYWJsZSBw aHkgY2xvY2sgaWYgUEhZIGluIHBvd2VyIHVwIHN0YXRlICovCisJaGRwdHhfZHBfcGh5X3Bvd2Vy X2Rvd24oY2Ruc19waHkpOworCisJaWYgKGNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgPT0gUkVGX0NM S18yN01IWikgeworCQloZHB0eF9kcF9waHlfcG1hX2Ntbl9jZmdfMjdtaHooY2Ruc19waHkpOwor CQloZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3bWh6KGNkbnNfcGh5KTsKKwl9IGVsc2UKKwkJ ZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgcmVmIGNsb2NrIHJhdGVcbiIpOwor CisJLyogUEhZIHBvd2VyIHVwICovCisJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNf cGh5KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBj ZG5zX2hkcHR4X2RwX3BoeV9vcHMgPSB7CisJLmluaXQJCT0gY2Ruc19oZHB0eF9kcF9waHlfaW5p dCwKKwkuY29uZmlndXJlCT0gY2Ruc19oZHB0eF9kcF9jb25maWd1cmUsCisJLnBvd2VyX29uCT0g Y2Ruc19oZHB0eF9kcF9waHlfb24sCisJLnBvd2VyX29mZgk9IGNkbnNfaGRwdHhfZHBfcGh5X29m ZiwKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IGNkbnNfaGRwdHhf ZHBfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGNk bnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3Qg cGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7CisJc3RydWN0IHJlc291cmNlICpyZXM7CisJc3Ry dWN0IHBoeSAqcGh5OworCWludCByZXQ7CisKKwljZG5zX3BoeSA9IGRldm1fa3phbGxvYyhkZXYs IHNpemVvZigqY2Ruc19waHkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNkbnNfcGh5KQorCQlyZXR1 cm4gLUVOT01FTTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGNkbnNfcGh5KTsKKwljZG5zX3Bo eS0+ZGV2ID0gZGV2OworCW11dGV4X2luaXQoJmNkbnNfcGh5LT5tYm94X211dGV4KTsKKworCXJl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJaWYg KCFyZXMpCisJCXJldHVybiAtRU5PREVWOworCWNkbnNfcGh5LT5yZWdzID0gZGV2bV9pb3JlbWFw KGRldiwgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpKTsKKwlpZiAoSVNfRVJSKGNkbnNf cGh5LT5yZWdzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZ3MpOworCisJaWYgKG9m X3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJjZG5zLG51bS1sYW5lcyIsCisJCQkJICZjZG5zX3Bo eS0+bnVtX2xhbmVzKSkgeworCQlkZXZfZXJyKGRldiwgIiVzOiBObyBcImNkbnMsbnVtLWxhbmVz XCItcHJvcGVydHkuXG4iLAorCQkJbm9kZS0+ZnVsbF9uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgbm9kZSwgJmNkbnNfaGRwdHhfZHBf cGh5X29wcyk7CisJaWYgKElTX0VSUihwaHkpKQorCQlyZXR1cm4gUFRSX0VSUihwaHkpOworCisJ Y2Ruc19waHktPm1heF9iaXRfcmF0ZSA9IERFRkFVTFRfTUFYX0JJVF9SQVRFOworCW9mX3Byb3Bl cnR5X3JlYWRfdTMyKG5vZGUsICJjZG5zLG1heC1iaXQtcmF0ZSIsCisJCQkgICAgICZjZG5zX3Bo eS0+bWF4X2JpdF9yYXRlKTsKKworCXN3aXRjaCAoY2Ruc19waHktPm1heF9iaXRfcmF0ZSkgewor CS8qIHZhbGlkIGJpdCByYXRlICovCisJY2FzZSAxNjIwOgorCWNhc2UgMjE2MDoKKwljYXNlIDI0 MzA6CisJY2FzZSAyNzAwOgorCWNhc2UgMzI0MDoKKwljYXNlIDQzMjA6CisJY2FzZSA1NDAwOgor CQlicmVhazsKKwljYXNlIDgxMDA6CisJZGVmYXVsdDoKKwkJZGV2X2VycihkZXYsICJ1bnN1cHBv cnRlZCBtYXggYml0IHJhdGU6ICVkTWJwc1xuIiwKKwkJCQljZG5zX3BoeS0+bWF4X2JpdF9yYXRl KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZGV2X2RiZyhkZXYsICJEUCBtYXggYml0IHJh dGUgJWQuJTAzZCBHYnBzXG4iLAorCQljZG5zX3BoeS0+bWF4X2JpdF9yYXRlIC8gMTAwMCwKKwkJ Y2Ruc19waHktPm1heF9iaXRfcmF0ZSAlIDEwMDApOworCisJcGh5LT5hdHRycy5idXNfd2lkdGgg PSBjZG5zX3BoeS0+bnVtX2xhbmVzOworCXBoeS0+YXR0cnMubWF4X2xpbmtfcmF0ZSA9IGNkbnNf cGh5LT5tYXhfYml0X3JhdGU7CisJcGh5LT5hdHRycy5tb2RlID0gUEhZX01PREVfRFA7CisKKwlj ZG5zX3BoeS0+cGh5ID0gcGh5OworCXBoeV9zZXRfZHJ2ZGF0YShwaHksIGNkbnNfcGh5KTsKKwor CWlmIChjZG5zX3BoeS0+bnVtX2xhbmVzID4gTUFYX05VTV9MQU5FUykgeworCQlkZXZfZXJyKGRl diwgIkludmFsaWQgbGFuZSBjb25maWd1cmF0aW9uXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0ID0gaGRwdHhfZHBfY2xrX2VuYWJsZShjZG5zX3BoeSk7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKGRldiwgIkluaXQgY2xrIGZhaWxcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9 CisKKwlwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIG9m X3BoeV9zaW1wbGVfeGxhdGUpOworCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgeworCQlyZXQg PSAgUFRSX0VSUihwaHlfcHJvdmlkZXIpOworCQlnb3RvIGNsa19kaXNhYmxlOworCX0KKworCWRl dl9kYmcoZGV2LCAibGluazogKCVkIGxhbmVzKSIsIGNkbnNfcGh5LT5udW1fbGFuZXMpOworCisJ cmV0dXJuIDA7CisKK2Nsa19kaXNhYmxlOgorCWhkcHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5 KTsKKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5 X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBjZG5zX2hk cHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWhk cHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaFtdID0g eworCXsKKwkJLmNvbXBhdGlibGUgPSAiY2RucyxoZHB0eC1kcC1waHkiLAorCX0sCisJe30KK307 CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaCk7CisK K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRwdHhfZHBfcGh5X2RyaXZlciA9 IHsKKwkucHJvYmUJPSBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZSwKKwkucmVtb3ZlID0gY2Ruc19o ZHB0eF9kcF9waHlfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lCT0gImNkbnMtaGRwdHgt ZHAtcGh5IiwKKwkJLm9mX21hdGNoX3RhYmxlCT0gY2Ruc19oZHB0eF9kcF9waHlfb2ZfbWF0Y2gs CisJfQorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoY2Ruc19oZHB0eF9kcF9waHlfZHJpdmVy KTsKKworTU9EVUxFX0FVVEhPUigiU2FuZG9yIFl1IDxzYW5kb3IueXVAbnhwLmNvbT4iKTsKK01P RFVMRV9ERVNDUklQVElPTigiQ2FkZW5jZSBIRFAtVFggRGlzcGxheVBvcnQgUEhZIGRyaXZlciIp OworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4zNC4xCgoKLS0gCmxpbnV4LXBoeSBtYWls aW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==