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 BDFD9C433F5 for ; Mon, 9 May 2022 18:02:37 +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=9neCihXPIve4wIayA4HWuoSpi5Y79DjstGt/ozXoSio=; b=JerQyri8pOoZrv cxB0Aguwjgor1QU8B2vukYLr8Wg0QhFhExTeVkBx7hT/5pICvHLBj9To9W1GrvRvDKOEGjUPaTe+n C1oiQQz6ZmMe9v4rGfO7hj1YlkLI9oyMdB3Tdf8PlWUtXPdsS6SWopqJ+FsO2QL2PXB6njnrpn6BE unDb4Q8LKz8D0dtP/nUA/TwQCGjcpBx4gplyYd7Ww6Vcla5Cy95/lk4KL5gjSo9uaXk3R+iGw62Yq 20TUg8oF3DYloTJwlqgnE4EsjwP6em9fdJaAIQTKW0XLXEA0MXyBMSfZh+BsitaK1rx5rYmIdGSn0 cFRRkLTvHAKgcUsovvMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1no7hy-00Fi2s-N5; Mon, 09 May 2022 18:02:10 +0000 Received: from gandalf.ozlabs.org ([150.107.74.76]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1no7dM-00Ff6f-DB; Mon, 09 May 2022 17:57:29 +0000 Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by gandalf.ozlabs.org (Postfix) with ESMTP id 4Kxplz1829z4ySZ; Tue, 10 May 2022 03:57:19 +1000 (AEST) Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.ozlabs.org (Postfix) with ESMTPSA id 4Kxpls5wzLz4xVP; Tue, 10 May 2022 03:57:13 +1000 (AEST) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: linux-spi@vger.kernel.org, linux-mtd@lists.infradead.org Cc: Mark Brown , Tudor Ambarus , Pratyush Yadav , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-aspeed@lists.ozlabs.org, Joel Stanley , Andrew Jeffery , Chin-Ting Kuo , devicetree@vger.kernel.org, Rob Herring , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tao Ren , Jae Hyun Yoo Subject: [PATCH v7 08/11] spi: aspeed: Calibrate read timings Date: Mon, 9 May 2022 19:56:13 +0200 Message-Id: <20220509175616.1089346-9-clg@kaod.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220509175616.1089346-1-clg@kaod.org> References: <20220509175616.1089346-1-clg@kaod.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220509_105724_819396_1AD13DBA X-CRM114-Status: GOOD ( 30.29 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion 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-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org VG8gYWNjb21tb2RhdGUgdGhlIGRpZmZlcmVudCByZXNwb25zZSB0aW1lIG9mIFNQSSB0cmFuc2Zl cnMgb24gZGlmZmVyZW50CmJvYXJkcyBhbmQgZGlmZmVyZW50IFNQSSBOT1IgZGV2aWNlcywgdGhl IEFzcGVlZCBjb250cm9sbGVycyBwcm92aWRlIGEKc2V0IG9mIFJlYWQgVGltaW5nIENvbXBlbnNh dGlvbiByZWdpc3RlcnMgdG8gdHVuZSB0aGUgdGltaW5nIGRlbGF5cwpkZXBlbmRpbmcgb24gdGhl IGZyZXF1ZW5jeSBiZWluZyB1c2VkLiBUaGUgQVNUMjYwMCBTb0MgaGFzIG9uZSBvZiB0aGVzZQpy ZWdpc3RlcnMgcGVyIGRldmljZS4gT24gdGhlIEFTVDI1MDAgYW5kIEFTVDI0MDAgU29DcywgdGhl IHRpbWluZwpyZWdpc3RlciBpcyBzaGFyZWQgYnkgYWxsIGRldmljZXMgd2hpY2ggaXMgcHJvYmxl bWF0aWMgdG8gZ2V0IGdvb2QKcmVzdWx0cyBvdGhlciB0aGFuIGZvciBvbmUgZGV2aWNlLgoKVGhl IGFsZ29yaXRobSBmaXJzdCByZWFkcyBhIGdvbGRlbiBidWZmZXIgYXQgbG93IHNwZWVkIGFuZCB0 aGVuIHBlcmZvcm1zCnJlYWRzIHdpdGggZGlmZmVyZW50IGNsb2NrcyBhbmQgZGVsYXkgY3ljbGUg c2V0dGluZ3MgdG8gZmluZCBhIGJyZWFraW5nCnBvaW50LiBUaGlzIHNlbGVjdHMgYSBkZWZhdWx0 IGdvb2QgZnJlcXVlbmN5IGZvciB0aGUgQ0V4IGNvbnRyb2wgcmVnaXN0ZXIuClRoZSBjdXJyZW50 IHNldHRpbmdzIGFyZSBhIGJpdCBvcHRpbWlzdGljIGFzIHdlIHBpY2sgdGhlIGZpcnN0IGRlbGF5 IGdpdmluZwpnb29kIHJlc3VsdHMuIEEgc2FmZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gZGV0ZXJt aW5lIGFuIGludGVydmFsIGFuZApjaG9vc2UgdGhlIG1pZGRsZSB2YWx1ZS4KCkNhbGlicmF0aW9u IGlzIHBlcmZvcm1lZCB3aGVuIHRoZSBkaXJlY3QgbWFwcGluZyBmb3IgcmVhZHMgaXMgY3JlYXRl ZC4KU2luY2UgdGhlIHVuZGVybHlpbmcgc3BpLW5vciBvYmplY3QgbmVlZHMgdG8gYmUgaW5pdGlh bGl6ZWQgdG8gY3JlYXRlCnRoZSBzcGlfbWVtIG9wZXJhdGlvbiBmb3IgZGlyZWN0IG1hcHBpbmcs IHdlIHNob3VsZCBiZSBmaW5lLiBIYXZpbmcgYQpzcGVjaWZpYyBBUEkgd291bGQgY2xhcmlmeSB0 aGUgcmVxdWlyZW1lbnRzIHRob3VnaC4KCkNjOiBQcmF0eXVzaCBZYWRhdiA8cC55YWRhdkB0aS5j b20+ClJldmlld2VkLWJ5OiBKb2VsIFN0YW5sZXkgPGpvZWxAam1zLmlkLmF1PgpUZXN0ZWQtYnk6 IEpvZWwgU3RhbmxleSA8am9lbEBqbXMuaWQuYXU+ClRlc3RlZC1ieTogVGFvIFJlbiA8cmVudGFv LmJ1cHRAZ21haWwuY29tPgpUZXN0ZWQtYnk6IEphZSBIeXVuIFlvbyA8cXVpY19qYWVoeW9vQHF1 aWNpbmMuY29tPgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3Jn PgotLS0KIGRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgfCAyODEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgYi9kcml2ZXJzL3NwaS9z cGktYXNwZWVkLXNtYy5jCmluZGV4IGQyYjYzYzhiYjg4Zi4uMzVmNjkzNDg0N2I3IDEwMDY0NAot LS0gYS9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaS1h c3BlZWQtc21jLmMKQEAgLTMzLDYgKzMzLDggQEAKICNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1Nf NEIJCUJJVCgxMykJLyogQVNUMjQwMCBTUEkgb25seSAqLwogI2RlZmluZSAgIENUUkxfSU9fRFVN TVlfU0VUKGR1bW15KQkJCQkJXAogCSgoKCgoZHVtbXkpID4+IDIpICYgMHgxKSA8PCAxNCkgfCAo KChkdW1teSkgJiAweDMpIDw8IDYpKQorI2RlZmluZSAgIENUUkxfRlJFUV9TRUxfU0hJRlQJCTgK KyNkZWZpbmUgICBDVFJMX0ZSRVFfU0VMX01BU0sJCUdFTk1BU0soMTEsIENUUkxfRlJFUV9TRUxf U0hJRlQpCiAjZGVmaW5lICAgQ1RSTF9DRV9TVE9QX0FDVElWRQkJQklUKDIpCiAjZGVmaW5lICAg Q1RSTF9JT19NT0RFX0NNRF9NQVNLCQlHRU5NQVNLKDEsIDApCiAjZGVmaW5lICAgQ1RSTF9JT19N T0RFX05PUk1BTAkJMHgwCkBAIC00NSw2ICs0Nyw5IEBACiAvKiBDRXggQWRkcmVzcyBEZWNvZGlu ZyBSYW5nZSBSZWdpc3RlciAqLwogI2RlZmluZSBDRTBfU0VHTUVOVF9BRERSX1JFRwkJMHgzMAog CisvKiBDRXggUmVhZCB0aW1pbmcgY29tcGVuc2F0aW9uIHJlZ2lzdGVyICovCisjZGVmaW5lIENF MF9USU1JTkdfQ09NUEVOU0FUSU9OX1JFRwkweDk0CisKIGVudW0gYXNwZWVkX3NwaV9jdGxfcmVn X3ZhbHVlIHsKIAlBU1BFRURfU1BJX0JBU0UsCiAJQVNQRUVEX1NQSV9SRUFELApAQCAtNzAsMTAg Kzc1LDE1IEBAIHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgewogCWJvb2wJaGFzdHlwZTsKIAl1MzIJ bW9kZV9iaXRzOwogCXUzMgl3ZTA7CisJdTMyCXRpbWluZzsKKwl1MzIJaGNsa19tYXNrOworCXUz MgloZGl2X21heDsKIAogCXUzMiAoKnNlZ21lbnRfc3RhcnQpKHN0cnVjdCBhc3BlZWRfc3BpICph c3BpLCB1MzIgcmVnKTsKIAl1MzIgKCpzZWdtZW50X2VuZCkoc3RydWN0IGFzcGVlZF9zcGkgKmFz cGksIHUzMiByZWcpOwogCXUzMiAoKnNlZ21lbnRfcmVnKShzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNw aSwgdTMyIHN0YXJ0LCB1MzIgZW5kKTsKKwlpbnQgKCpjYWxpYnJhdGUpKHN0cnVjdCBhc3BlZWRf c3BpX2NoaXAgKmNoaXAsIHUzMiBoZGl2LAorCQkJIGNvbnN0IHU4ICpnb2xkZW5fYnVmLCB1OCAq dGVzdF9idWYpOwogfTsKIAogI2RlZmluZSBBU1BFRURfU1BJX01BWF9OVU1fQ1MJNQpAQCAtNTI1 LDYgKzUzNSw4IEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NwaV9jaGlwX2FkanVzdF93aW5kb3coc3Ry dWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBh c3BlZWRfc3BpX2RvX2NhbGlicmF0aW9uKHN0cnVjdCBhc3BlZWRfc3BpX2NoaXAgKmNoaXApOwor CiBzdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJt YXBfZGVzYyAqZGVzYykKIHsKIAlzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSA9IHNwaV9jb250cm9s bGVyX2dldF9kZXZkYXRhKGRlc2MtPm1lbS0+c3BpLT5tYXN0ZXIpOwpAQCAtNTczLDYgKzU4NSw4 IEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NwaV9kaXJtYXBfY3JlYXRlKHN0cnVjdCBzcGlfbWVtX2Rp cm1hcF9kZXNjICpkZXNjKQogCWNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSA9IGN0bF92 YWw7CiAJd3JpdGVsKGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSwgY2hpcC0+Y3RsKTsK IAorCXJldCA9IGFzcGVlZF9zcGlfZG9fY2FsaWJyYXRpb24oY2hpcCk7CisKIAlkZXZfaW5mbyhh c3BpLT5kZXYsICJDRSVkIHJlYWQgYnVzd2lkdGg6JWQgWzB4JTA4eF1cbiIsCiAJCSBjaGlwLT5j cywgb3AtPmRhdGEuYnVzd2lkdGgsIGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSk7CiAK QEAgLTgyNSw2ICs4MzksMjQ5IEBAIHN0YXRpYyB1MzIgYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2 MDBfcmVnKHN0cnVjdCBhc3BlZWRfc3BpICphc3BpLAogCQkoKGVuZCAtIDEpICYgQVNUMjYwMF9T RUdfQUREUl9NQVNLKTsKIH0KIAorLyoKKyAqIFJlYWQgdGltaW5nIGNvbXBlbnNhdGlvbiBzZXF1 ZW5jZXMKKyAqLworCisjZGVmaW5lIENBTElCUkFURV9CVUZfU0laRSBTWl8xNksKKworc3RhdGlj IGJvb2wgYXNwZWVkX3NwaV9jaGVja19yZWFkcyhzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlw LAorCQkJCSAgIGNvbnN0IHU4ICpnb2xkZW5fYnVmLCB1OCAqdGVzdF9idWYpCit7CisJaW50IGk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworCQltZW1jcHlfZnJvbWlvKHRlc3RfYnVm LCBjaGlwLT5haGJfYmFzZSwgQ0FMSUJSQVRFX0JVRl9TSVpFKTsKKwkJaWYgKG1lbWNtcCh0ZXN0 X2J1ZiwgZ29sZGVuX2J1ZiwgQ0FMSUJSQVRFX0JVRl9TSVpFKSAhPSAwKSB7CisjaWYgZGVmaW5l ZChWRVJCT1NFX0RFQlVHKQorCQkJcHJpbnRfaGV4X2R1bXBfYnl0ZXMoREVWSUNFX05BTUUgIiAg ZmFpbDogIiwgRFVNUF9QUkVGSVhfTk9ORSwKKwkJCQkJICAgICB0ZXN0X2J1ZiwgMHgxMDApOwor I2VuZGlmCisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisJcmV0dXJuIHRydWU7Cit9CisKKyNk ZWZpbmUgRlJFQURfVFBBU1MoaSkJKCgoaSkgLyAyKSB8ICgoKGkpICYgMSkgPyAwIDogOCkpCisK Ky8qCisgKiBUaGUgdGltaW5nIHJlZ2lzdGVyIGlzIHNoYXJlZCBieSBhbGwgZGV2aWNlcy4gT25s eSB1cGRhdGUgZm9yIENFMC4KKyAqLworc3RhdGljIGludCBhc3BlZWRfc3BpX2NhbGlicmF0ZShz dHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlwLCB1MzIgaGRpdiwKKwkJCQljb25zdCB1OCAqZ29s ZGVuX2J1ZiwgdTggKnRlc3RfYnVmKQoreworCXN0cnVjdCBhc3BlZWRfc3BpICphc3BpID0gY2hp cC0+YXNwaTsKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhICpkYXRhID0gYXNwaS0+ZGF0 YTsKKwlpbnQgaTsKKwlpbnQgZ29vZF9wYXNzID0gLTEsIHBhc3NfY291bnQgPSAwOworCXUzMiBz aGlmdCA9IChoZGl2IC0gMSkgPDwgMjsKKwl1MzIgbWFzayA9IH4oMHhmdSA8PCBzaGlmdCk7CisJ dTMyIGZyZWFkX3RpbWluZ192YWwgPSAwOworCisJLyogVHJ5IEhDTEsgZGVsYXkgMC4uNSwgZWFj aCBvbmUgd2l0aC93aXRob3V0IGRlbGF5IGFuZCBsb29rIGZvciBhCisJICogZ29vZCBwYWlyLgor CSAqLworCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CisJCWJvb2wgcGFzczsKKworCQlpZiAo Y2hpcC0+Y3MgPT0gMCkgeworCQkJZnJlYWRfdGltaW5nX3ZhbCAmPSBtYXNrOworCQkJZnJlYWRf dGltaW5nX3ZhbCB8PSBGUkVBRF9UUEFTUyhpKSA8PCBzaGlmdDsKKwkJCXdyaXRlbChmcmVhZF90 aW1pbmdfdmFsLCBhc3BpLT5yZWdzICsgZGF0YS0+dGltaW5nKTsKKwkJfQorCQlwYXNzID0gYXNw ZWVkX3NwaV9jaGVja19yZWFkcyhjaGlwLCBnb2xkZW5fYnVmLCB0ZXN0X2J1Zik7CisJCWRldl9k YmcoYXNwaS0+ZGV2LAorCQkJIiAgKiBbJTA4eF0gJWQgSENMSyBkZWxheSwgJWRucyBESSBkZWxh eSA6ICVzIiwKKwkJCWZyZWFkX3RpbWluZ192YWwsIGkgLyAyLCAoaSAmIDEpID8gMCA6IDQsCisJ CQlwYXNzID8gIlBBU1MiIDogIkZBSUwiKTsKKwkJaWYgKHBhc3MpIHsKKwkJCXBhc3NfY291bnQr KzsKKwkJCWlmIChwYXNzX2NvdW50ID09IDMpIHsKKwkJCQlnb29kX3Bhc3MgPSBpIC0gMTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXBhc3NfY291bnQgPSAwOworCQl9CisJfQor CisJLyogTm8gZ29vZCBzZXR0aW5nIGZvciB0aGlzIGZyZXF1ZW5jeSAqLworCWlmIChnb29kX3Bh c3MgPCAwKQorCQlyZXR1cm4gLTE7CisKKwkvKiBXZSBoYXZlIGF0IGxlYXN0IG9uZSBwYXNzIG9m IG1hcmdpbiwgbGV0J3MgdXNlIGZpcnN0IHBhc3MgKi8KKwlpZiAoY2hpcC0+Y3MgPT0gMCkgewor CQlmcmVhZF90aW1pbmdfdmFsICY9IG1hc2s7CisJCWZyZWFkX3RpbWluZ192YWwgfD0gRlJFQURf VFBBU1MoZ29vZF9wYXNzKSA8PCBzaGlmdDsKKwkJd3JpdGVsKGZyZWFkX3RpbWluZ192YWwsIGFz cGktPnJlZ3MgKyBkYXRhLT50aW1pbmcpOworCX0KKwlkZXZfZGJnKGFzcGktPmRldiwgIiAqIC0+ IGdvb2QgaXMgcGFzcyAlZCBbMHglMDh4XSIsCisJCWdvb2RfcGFzcywgZnJlYWRfdGltaW5nX3Zh bCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBib29sIGFzcGVlZF9zcGlfY2hlY2tfY2FsaWJf ZGF0YShjb25zdCB1OCAqdGVzdF9idWYsIHUzMiBzaXplKQoreworCWNvbnN0IHUzMiAqdGIzMiA9 IChjb25zdCB1MzIgKil0ZXN0X2J1ZjsKKwl1MzIgaSwgY250ID0gMDsKKworCS8qIFdlIGNoZWNr IGlmIHdlIGhhdmUgZW5vdWdoIHdvcmRzIHRoYXQgYXJlIG5laXRoZXIgYWxsIDAKKwkgKiBub3Ig YWxsIDEncyBzbyB0aGUgY2FsaWJyYXRpb24gY2FuIGJlIGNvbnNpZGVyZWQgdmFsaWQuCisJICoK KwkgKiBJIHVzZSBhbiBhcmJpdHJhcnkgdGhyZXNob2xkIGZvciBub3cgb2YgNjQKKwkgKi8KKwlz aXplID4+PSAyOworCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkJaWYgKHRiMzJbaV0g IT0gMCAmJiB0YjMyW2ldICE9IDB4ZmZmZmZmZmYpCisJCQljbnQrKzsKKwl9CisJcmV0dXJuIGNu dCA+PSA2NDsKK30KKworc3RhdGljIGNvbnN0IHUzMiBhc3BlZWRfc3BpX2hjbGtfZGl2c1tdID0g eworCTB4ZiwgLyogSENMSyAqLworCTB4NywgLyogSENMSy8yICovCisJMHhlLCAvKiBIQ0xLLzMg Ki8KKwkweDYsIC8qIEhDTEsvNCAqLworCTB4ZCwgLyogSENMSy81ICovCit9OworCisjZGVmaW5l IEFTUEVFRF9TUElfSENMS19ESVYoaSkgXAorCShhc3BlZWRfc3BpX2hjbGtfZGl2c1soaSkgLSAx XSA8PCBDVFJMX0ZSRVFfU0VMX1NISUZUKQorCitzdGF0aWMgaW50IGFzcGVlZF9zcGlfZG9fY2Fs aWJyYXRpb24oc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCkKK3sKKwlzdHJ1Y3QgYXNwZWVk X3NwaSAqYXNwaSA9IGNoaXAtPmFzcGk7CisJY29uc3Qgc3RydWN0IGFzcGVlZF9zcGlfZGF0YSAq ZGF0YSA9IGFzcGktPmRhdGE7CisJdTMyIGFoYl9mcmVxID0gYXNwaS0+Y2xrX2ZyZXE7CisJdTMy IG1heF9mcmVxID0gY2hpcC0+Y2xrX2ZyZXE7CisJdTMyIGN0bF92YWw7CisJdTggKmdvbGRlbl9i dWYgPSBOVUxMOworCXU4ICp0ZXN0X2J1ZiA9IE5VTEw7CisJaW50IGksIHJjLCBiZXN0X2RpdiA9 IC0xOworCisJZGV2X2RiZyhhc3BpLT5kZXYsICJjYWxjdWxhdGUgdGltaW5nIGNvbXBlbnNhdGlv biAtIEFIQiBmcmVxOiAlZCBNSHoiLAorCQlhaGJfZnJlcSAvIDEwMDAwMDApOworCisJLyoKKwkg KiB1c2UgdGhlIHJlbGF0ZWQgbG93IGZyZXF1ZW5jeSB0byBnZXQgY2hlY2sgY2FsaWJyYXRpb24g ZGF0YQorCSAqIGFuZCBnZXQgZ29sZGVuIGRhdGEuCisJICovCisJY3RsX3ZhbCA9IGNoaXAtPmN0 bF92YWxbQVNQRUVEX1NQSV9SRUFEXSAmIGRhdGEtPmhjbGtfbWFzazsKKwl3cml0ZWwoY3RsX3Zh bCwgY2hpcC0+Y3RsKTsKKworCXRlc3RfYnVmID0ga3phbGxvYyhDQUxJQlJBVEVfQlVGX1NJWkUg KiAyLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXRlc3RfYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWdvbGRlbl9idWYgPSB0ZXN0X2J1ZiArIENBTElCUkFURV9CVUZfU0laRTsKKworCW1lbWNweV9m cm9taW8oZ29sZGVuX2J1ZiwgY2hpcC0+YWhiX2Jhc2UsIENBTElCUkFURV9CVUZfU0laRSk7CisJ aWYgKCFhc3BlZWRfc3BpX2NoZWNrX2NhbGliX2RhdGEoZ29sZGVuX2J1ZiwgQ0FMSUJSQVRFX0JV Rl9TSVpFKSkgeworCQlkZXZfaW5mbyhhc3BpLT5kZXYsICJDYWxpYnJhdGlvbiBhcmVhIHRvbyB1 bmlmb3JtLCB1c2luZyBsb3cgc3BlZWQiKTsKKwkJZ290byBub19jYWxpYjsKKwl9CisKKyNpZiBk ZWZpbmVkKFZFUkJPU0VfREVCVUcpCisJcHJpbnRfaGV4X2R1bXBfYnl0ZXMoREVWSUNFX05BTUUg IiAgZ29vZDogIiwgRFVNUF9QUkVGSVhfTk9ORSwKKwkJCSAgICAgZ29sZGVuX2J1ZiwgMHgxMDAp OworI2VuZGlmCisKKwkvKiBOb3cgd2UgaXRlcmF0ZSB0aGUgSENMSyBkaXZpZGVycyB1bnRpbCB3 ZSBmaW5kIG91ciBicmVha2luZyBwb2ludCAqLworCWZvciAoaSA9IEFSUkFZX1NJWkUoYXNwZWVk X3NwaV9oY2xrX2RpdnMpOyBpID4gZGF0YS0+aGRpdl9tYXggLSAxOyBpLS0pIHsKKwkJdTMyIHR2 LCBmcmVxOworCisJCWZyZXEgPSBhaGJfZnJlcSAvIGk7CisJCWlmIChmcmVxID4gbWF4X2ZyZXEp CisJCQljb250aW51ZTsKKworCQkvKiBTZXQgdGhlIHRpbWluZyAqLworCQl0diA9IGNoaXAtPmN0 bF92YWxbQVNQRUVEX1NQSV9SRUFEXSB8IEFTUEVFRF9TUElfSENMS19ESVYoaSk7CisJCXdyaXRl bCh0diwgY2hpcC0+Y3RsKTsKKwkJZGV2X2RiZyhhc3BpLT5kZXYsICJUcnlpbmcgSENMSy8lZCBb JTA4eF0gLi4uIiwgaSwgdHYpOworCQlyYyA9IGRhdGEtPmNhbGlicmF0ZShjaGlwLCBpLCBnb2xk ZW5fYnVmLCB0ZXN0X2J1Zik7CisJCWlmIChyYyA9PSAwKQorCQkJYmVzdF9kaXYgPSBpOworCX0K KworCS8qIE5vdGhpbmcgZm91bmQgPyAqLworCWlmIChiZXN0X2RpdiA8IDApIHsKKwkJZGV2X3dh cm4oYXNwaS0+ZGV2LCAiTm8gZ29vZCBmcmVxdWVuY3ksIHVzaW5nIGR1bWIgc2xvdyIpOworCX0g ZWxzZSB7CisJCWRldl9kYmcoYXNwaS0+ZGV2LCAiRm91bmQgZ29vZCByZWFkIHRpbWluZ3MgYXQg SENMSy8lZCIsIGJlc3RfZGl2KTsKKworCQkvKiBSZWNvcmQgdGhlIGZyZXEgKi8KKwkJZm9yIChp ID0gMDsgaSA8IEFTUEVFRF9TUElfTUFYOyBpKyspCisJCQljaGlwLT5jdGxfdmFsW2ldID0gKGNo aXAtPmN0bF92YWxbaV0gJiBkYXRhLT5oY2xrX21hc2spIHwKKwkJCQlBU1BFRURfU1BJX0hDTEtf RElWKGJlc3RfZGl2KTsKKwl9CisKK25vX2NhbGliOgorCXdyaXRlbChjaGlwLT5jdGxfdmFsW0FT UEVFRF9TUElfUkVBRF0sIGNoaXAtPmN0bCk7CisJa2ZyZWUodGVzdF9idWYpOworCXJldHVybiAw OworfQorCisjZGVmaW5lIFRJTUlOR19ERUxBWV9ESQkJQklUKDMpCisjZGVmaW5lIFRJTUlOR19E RUxBWV9IQ1lDTEVfTUFYCTUKKyNkZWZpbmUgVElNSU5HX1JFR19BU1QyNjAwKGNoaXApCQkJCVwK KwkoKGNoaXApLT5hc3BpLT5yZWdzICsgKGNoaXApLT5hc3BpLT5kYXRhLT50aW1pbmcgKwlcCisJ IChjaGlwKS0+Y3MgKiA0KQorCitzdGF0aWMgaW50IGFzcGVlZF9zcGlfYXN0MjYwMF9jYWxpYnJh dGUoc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCwgdTMyIGhkaXYsCisJCQkJCWNvbnN0IHU4 ICpnb2xkZW5fYnVmLCB1OCAqdGVzdF9idWYpCit7CisJc3RydWN0IGFzcGVlZF9zcGkgKmFzcGkg PSBjaGlwLT5hc3BpOworCWludCBoY3ljbGU7CisJdTMyIHNoaWZ0ID0gKGhkaXYgLSAyKSA8PCAz OworCXUzMiBtYXNrID0gfigweGZ1IDw8IHNoaWZ0KTsKKwl1MzIgZnJlYWRfdGltaW5nX3ZhbCA9 IDA7CisKKwlmb3IgKGhjeWNsZSA9IDA7IGhjeWNsZSA8PSBUSU1JTkdfREVMQVlfSENZQ0xFX01B WDsgaGN5Y2xlKyspIHsKKwkJaW50IGRlbGF5X25zOworCQlib29sIHBhc3MgPSBmYWxzZTsKKwor CQlmcmVhZF90aW1pbmdfdmFsICY9IG1hc2s7CisJCWZyZWFkX3RpbWluZ192YWwgfD0gaGN5Y2xl IDw8IHNoaWZ0OworCisJCS8qIG5vIERJIGlucHV0IGRlbGF5IGZpcnN0ICAqLworCQl3cml0ZWwo ZnJlYWRfdGltaW5nX3ZhbCwgVElNSU5HX1JFR19BU1QyNjAwKGNoaXApKTsKKwkJcGFzcyA9IGFz cGVlZF9zcGlfY2hlY2tfcmVhZHMoY2hpcCwgZ29sZGVuX2J1ZiwgdGVzdF9idWYpOworCQlkZXZf ZGJnKGFzcGktPmRldiwKKwkJCSIgICogWyUwOHhdICVkIEhDTEsgZGVsYXksIERJIGRlbGF5IG5v bmUgOiAlcyIsCisJCQlmcmVhZF90aW1pbmdfdmFsLCBoY3ljbGUsIHBhc3MgPyAiUEFTUyIgOiAi RkFJTCIpOworCQlpZiAocGFzcykKKwkJCXJldHVybiAwOworCisJCS8qIEFkZCBESSBpbnB1dCBk ZWxheXMgICovCisJCWZyZWFkX3RpbWluZ192YWwgJj0gbWFzazsKKwkJZnJlYWRfdGltaW5nX3Zh bCB8PSAoVElNSU5HX0RFTEFZX0RJIHwgaGN5Y2xlKSA8PCBzaGlmdDsKKworCQlmb3IgKGRlbGF5 X25zID0gMDsgZGVsYXlfbnMgPCAweDEwOyBkZWxheV9ucysrKSB7CisJCQlmcmVhZF90aW1pbmdf dmFsICY9IH4oMHhmIDw8ICg0ICsgc2hpZnQpKTsKKwkJCWZyZWFkX3RpbWluZ192YWwgfD0gZGVs YXlfbnMgPDwgKDQgKyBzaGlmdCk7CisKKwkJCXdyaXRlbChmcmVhZF90aW1pbmdfdmFsLCBUSU1J TkdfUkVHX0FTVDI2MDAoY2hpcCkpOworCQkJcGFzcyA9IGFzcGVlZF9zcGlfY2hlY2tfcmVhZHMo Y2hpcCwgZ29sZGVuX2J1ZiwgdGVzdF9idWYpOworCQkJZGV2X2RiZyhhc3BpLT5kZXYsCisJCQkJ IiAgKiBbJTA4eF0gJWQgSENMSyBkZWxheSwgREkgZGVsYXkgJWQuJWRucyA6ICVzIiwKKwkJCQlm cmVhZF90aW1pbmdfdmFsLCBoY3ljbGUsIChkZWxheV9ucyArIDEpIC8gMiwKKwkJCQkoZGVsYXlf bnMgKyAxKSAmIDEgPyA1IDogNSwgcGFzcyA/ICJQQVNTIiA6ICJGQUlMIik7CisJCQkvKgorCQkJ ICogVE9ETzogVGhpcyBpcyBvcHRpbWlzdGljLiBXZSBzaG91bGQgbG9vaworCQkJICogZm9yIGEg d29ya2luZyBpbnRlcnZhbCBhbmQgc2F2ZSB0aGUgbWlkZGxlCisJCQkgKiB2YWx1ZSBpbiB0aGUg cmVhZCB0aW1pbmcgcmVnaXN0ZXIuCisJCQkgKi8KKwkJCWlmIChwYXNzKQorCQkJCXJldHVybiAw OworCQl9CisJfQorCisJLyogTm8gZ29vZCBzZXR0aW5nIGZvciB0aGlzIGZyZXF1ZW5jeSAqLwor CXJldHVybiAtMTsKK30KKwogLyoKICAqIFBsYXRmb3JtIGRlZmluaXRpb25zCiAgKi8KQEAgLTgz Myw2ICsxMDkwLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhIGFzdDI0 MDBfZm1jX2RhdGEgPSB7CiAJLmhhc3R5cGUgICAgICAgPSB0cnVlLAogCS53ZTAJICAgICAgID0g MTYsCiAJLmN0bDAJICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0Uw X1RJTUlOR19DT01QRU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmZmZmZjBmZiwK KwkuaGRpdl9tYXggICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2NhbGli cmF0ZSwKIAkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9zdGFydCwKIAkuc2Vn bWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJLnNlZ21lbnRfcmVnICAgPSBh c3BlZWRfc3BpX3NlZ21lbnRfcmVnLApAQCAtODQzLDYgKzExMDQsMTAgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgYXN0MjQwMF9zcGlfZGF0YSA9IHsKIAkuaGFzdHlwZSAg ICAgICA9IGZhbHNlLAogCS53ZTAJICAgICAgID0gMCwKIAkuY3RsMAkgICAgICAgPSAweDA0LAor CS50aW1pbmcJICAgICAgID0gMHgxNCwKKwkuaGNsa19tYXNrICAgICA9IDB4ZmZmZmYwZmYsCisJ LmhkaXZfbWF4ICAgICAgPSAxLAorCS5jYWxpYnJhdGUgICAgID0gYXNwZWVkX3NwaV9jYWxpYnJh dGUsCiAJLyogTm8gc2VnbWVudCByZWdpc3RlcnMgKi8KIH07CiAKQEAgLTg1MSw2ICsxMTE2LDEw IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhIGFzdDI1MDBfZm1jX2RhdGEg PSB7CiAJLmhhc3R5cGUgICAgICAgPSB0cnVlLAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJ ICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01Q RU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmZmZmZDBmZiwKKwkuaGRpdl9tYXgg ICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2NhbGlicmF0ZSwKIAkuc2Vn bWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9 IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJLnNlZ21lbnRfcmVnICAgPSBhc3BlZWRfc3BpX3Nl Z21lbnRfcmVnLApAQCAtODYxLDYgKzExMzAsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3Bl ZWRfc3BpX2RhdGEgYXN0MjUwMF9zcGlfZGF0YSA9IHsKIAkuaGFzdHlwZSAgICAgICA9IGZhbHNl LAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50 aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01QRU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sg ICAgID0gMHhmZmZmZDBmZiwKKwkuaGRpdl9tYXggICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAg PSBhc3BlZWRfc3BpX2NhbGlicmF0ZSwKIAkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2Vn bWVudF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJ LnNlZ21lbnRfcmVnICAgPSBhc3BlZWRfc3BpX3NlZ21lbnRfcmVnLApAQCAtODcyLDYgKzExNDUs MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgYXN0MjYwMF9mbWNfZGF0 YSA9IHsKIAkubW9kZV9iaXRzICAgICA9IFNQSV9SWF9RVUFEIHwgU1BJX1JYX1FVQUQsCiAJLndl MAkgICAgICAgPSAxNiwKIAkuY3RsMAkgICAgICAgPSBDRTBfQ1RSTF9SRUcsCisJLnRpbWluZwkg ICAgICAgPSBDRTBfVElNSU5HX0NPTVBFTlNBVElPTl9SRUcsCisJLmhjbGtfbWFzayAgICAgPSAw eGYwZmZmMGZmLAorCS5oZGl2X21heCAgICAgID0gMiwKKwkuY2FsaWJyYXRlICAgICA9IGFzcGVl ZF9zcGlfYXN0MjYwMF9jYWxpYnJhdGUsCiAJLnNlZ21lbnRfc3RhcnQgPSBhc3BlZWRfc3BpX3Nl Z21lbnRfYXN0MjYwMF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVu dF9hc3QyNjAwX2VuZCwKIAkuc2VnbWVudF9yZWcgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9hc3Qy NjAwX3JlZywKQEAgLTg4Myw2ICsxMTYwLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVk X3NwaV9kYXRhIGFzdDI2MDBfc3BpX2RhdGEgPSB7CiAJLm1vZGVfYml0cyAgICAgPSBTUElfUlhf UVVBRCB8IFNQSV9SWF9RVUFELAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJICAgICAgID0g Q0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01QRU5TQVRJT05f UkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmMGZmZjBmZiwKKwkuaGRpdl9tYXggICAgICA9IDIs CisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2FzdDI2MDBfY2FsaWJyYXRlLAogCS5zZWdt ZW50X3N0YXJ0ID0gYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2MDBfc3RhcnQsCiAJLnNlZ21lbnRf ZW5kICAgPSBhc3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9lbmQsCiAJLnNlZ21lbnRfcmVnICAg PSBhc3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9yZWcsCi0tIAoyLjM1LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRp c2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtbXRkLwo=