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 93DB5C433F5 for ; Mon, 14 Feb 2022 10:36:53 +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=wYvsx23tDRWfYyst5p6oLeONxSV5zfh8TuR99UbBj8M=; b=mQD8dYPiibjo0s kZJbsfS5k8rMmTWn1Rt/N4CZPnvDgnHzuUBnRnfbmkeHjUQPKexGRsdIGlA/Jbu4ChaTVc5C9DLMR msCkAH3PV2HLpbMKN3oWDeZN08b69WOH55IpPkiOaDLCyJ3EG4L9deKvP5370RYYkcwJypSKTbOiJ 5Sf3WkJHbN3gsR28qVzPvc8Kq/5cPE1m/bsU4ACczdoEgXwjUjA/OR08j3Cd6Xw8ZO58WIWnyaY0N TZUyUSHOv+gN2VnR4yD7elONzUAQu72/eQT1/XHoF9fw2THZydNrpKSrnSUZN8Wz5WWzY7+K1vsFW mWz3/GIHghOY73ak2zfw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJYgc-00EXTo-7W; Mon, 14 Feb 2022 10:34:28 +0000 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nJXt5-00EJ5q-Ot; Mon, 14 Feb 2022 09:43:19 +0000 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 21E6xHvJ019148; Mon, 14 Feb 2022 09:42:55 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 3e71jvjy18-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 14 Feb 2022 09:42:54 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 21E9dnvj001480; Mon, 14 Feb 2022 09:42:52 GMT Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by ppma03ams.nl.ibm.com with ESMTP id 3e64h9kgmd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 14 Feb 2022 09:42:52 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 21E9goYJ32309750 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Feb 2022 09:42:50 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3935EAE063; Mon, 14 Feb 2022 09:42:50 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9386BAE058; Mon, 14 Feb 2022 09:42:49 +0000 (GMT) Received: from smtp.tlslab.ibm.com (unknown [9.101.4.1]) by d06av26.portsmouth.uk.ibm.com (Postfix) with SMTP; Mon, 14 Feb 2022 09:42:49 +0000 (GMT) Received: from yukon.ibmuc.com (unknown [9.171.60.190]) by smtp.tlslab.ibm.com (Postfix) with ESMTP id 2EF672201DE; Mon, 14 Feb 2022 10:42:48 +0100 (CET) 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?= Subject: [PATCH 08/10] spi: aspeed: Calibrate read timings Date: Mon, 14 Feb 2022 10:42:29 +0100 Message-Id: <20220214094231.3753686-9-clg@kaod.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220214094231.3753686-1-clg@kaod.org> References: <20220214094231.3753686-1-clg@kaod.org> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: c4xQS6wqhs9W4Phka2h_uKnU39BjKZZA X-Proofpoint-GUID: c4xQS6wqhs9W4Phka2h_uKnU39BjKZZA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-14_01,2022-02-14_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxlogscore=999 bulkscore=0 clxscore=1034 spamscore=0 priorityscore=1501 mlxscore=0 suspectscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202140058 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220214_014315_923131_9D643A42 X-CRM114-Status: GOOD ( 29.82 ) 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 VG8gYWNjb21tb2RhdGUgdGhlIGRpZmZlcmVudCByZXNwb25zZSB0aW1lIG9mIFNQSSB0cmFuc2Zl cnMgb24gZGlmZmVyZW50CmJvYXJkcyBhbmQgZGlmZmVyZW50IFNQSSBOT1IgZGV2aWNlcywgdGhl IEFzcGVlZCBjb250cm9sbGVycyBwcm92aWRlIGEKc2V0IG9mIFJlYWQgVGltaW5nIENvbXBlbnNh dGlvbiByZWdpc3RlcnMgdG8gdHVuZSB0aGUgdGltaW5nIGRlbGF5cwpkZXBlbmRpbmcgb24gdGhl IGZyZXF1ZW5jeSBiZWluZyB1c2VkLiBUaGUgQVNUMjYwMCBTb0MgaGFzIG9uZSBvZgp0aGVzZSBy ZWdpc3RlcnMgcGVyIGRldmljZS4gT24gdGhlIEFTVDI1MDAgYW5kIEFTVDI0MDAgU29DcywgdGhl CnRpbWluZyByZWdpc3RlciBpcyBzaGFyZWQgYnkgYWxsIGRldmljZXMgd2hpY2ggaXMgYSBiaXQg cHJvYmxlbWF0aWMgdG8KZ2V0IGdvb2QgcmVzdWx0cyBvdGhlciB0aGFuIGZvciBvbmUgZGV2aWNl LgoKVGhlIGFsZ29yaXRobSBmaXJzdCByZWFkcyBhIGdvbGRlbiBidWZmZXIgYXQgbG93IHNwZWVk IGFuZCB0aGVuIHBlcmZvcm1zCnJlYWRzIHdpdGggZGlmZmVyZW50IGNsb2NrcyBhbmQgZGVsYXkg Y3ljbGUgc2V0dGluZ3MgdG8gZmluZCBhIGJyZWFraW5nCnBvaW50LiBUaGlzIHNlbGVjdHMgYSBk ZWZhdWx0IGdvb2QgZnJlcXVlbmN5IGZvciB0aGUgQ0V4IGNvbnRyb2wgcmVnaXN0ZXIuClRoZSBj dXJyZW50IHNldHRpbmdzIGFyZSBiaXQgb3B0aW1pc3RpYyBhcyB3ZSBwaWNrIHRoZSBmaXJzdCBk ZWxheSBnaXZpbmcKZ29vZCByZXN1bHRzLiBBIHNhZmVyIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGRl dGVybWluZSBhbiBpbnRlcnZhbCBhbmQKY2hvb3NlIHRoZSBtaWRkbGUgdmFsdWUuCgpEdWUgdG8g dGhlIGxhY2sgb2YgQVBJLCBjYWxpYnJhdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgZGlyZWN0 IG1hcHBpbmcKZm9yIHJlYWRzIGlzIGNyZWF0ZWQuCgpDYzogUHJhdHl1c2ggWWFkYXYgPHAueWFk YXZAdGkuY29tPgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3Jn PgotLS0KIGRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgfCAyODEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgYi9kcml2ZXJzL3NwaS9z cGktYXNwZWVkLXNtYy5jCmluZGV4IGU0NGU4MGJhYjUwZi4uYTA4YzIwMzA4NDA0IDEwMDY0NAot LS0gYS9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaS1h c3BlZWQtc21jLmMKQEAgLTM1LDYgKzM1LDggQEAKICNkZWZpbmUgICBDVFJMX0lPX0FERFJFU1Nf NEIJCUJJVCgxMykJLyogQVNUMjQwMCBTUEkgb25seSAqLwogI2RlZmluZSAgIENUUkxfSU9fRFVN TVlfU0VUKGR1bW15KQkJCQkJXAogCSgoKCgoZHVtbXkpID4+IDIpICYgMHgxKSA8PCAxNCkgfCAo KChkdW1teSkgJiAweDMpIDw8IDYpKQorI2RlZmluZSAgIENUUkxfRlJFUV9TRUxfU0hJRlQJCTgK KyNkZWZpbmUgICBDVFJMX0ZSRVFfU0VMX01BU0sJCUdFTk1BU0soMTEsIENUUkxfRlJFUV9TRUxf U0hJRlQpCiAjZGVmaW5lICAgQ1RSTF9DRV9TVE9QX0FDVElWRQkJQklUKDIpCiAjZGVmaW5lICAg Q1RSTF9JT19NT0RFX0NNRF9NQVNLCQlHRU5NQVNLKDEsIDApCiAjZGVmaW5lICAgQ1RSTF9JT19N T0RFX05PUk1BTAkJMHgwCkBAIC00Nyw2ICs0OSw5IEBACiAvKiBDRXggQWRkcmVzcyBEZWNvZGlu ZyBSYW5nZSBSZWdpc3RlciAqLwogI2RlZmluZSBDRTBfU0VHTUVOVF9BRERSX1JFRwkJMHgzMAog CisvKiBDRXggUmVhZCB0aW1pbmcgY29tcGVuc2F0aW9uIHJlZ2lzdGVyICovCisjZGVmaW5lIENF MF9USU1JTkdfQ09NUEVOU0FUSU9OX1JFRwkweDk0CisKIGVudW0gYXNwZWVkX3NwaV9jdGxfcmVn X3ZhbHVlIHsKIAlBU1BFRURfU1BJX0JBU0UsCiAJQVNQRUVEX1NQSV9SRUFELApAQCAtNzIsMTAg Kzc3LDE1IEBAIHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgewogCWJvb2wJaGFzdHlwZTsKIAl1MzIJ bW9kZV9iaXRzOwogCXUzMgl3ZTA7CisJdTMyCXRpbWluZzsKKwl1MzIJaGNsa19tYXNrOworCXUz MgloZGl2X21heDsKIAogCXUzMiAoKnNlZ21lbnRfc3RhcnQpKHN0cnVjdCBhc3BlZWRfc3BpICph c3BpLCB1MzIgcmVnKTsKIAl1MzIgKCpzZWdtZW50X2VuZCkoc3RydWN0IGFzcGVlZF9zcGkgKmFz cGksIHUzMiByZWcpOwogCXUzMiAoKnNlZ21lbnRfcmVnKShzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNw aSwgdTMyIHN0YXJ0LCB1MzIgZW5kKTsKKwlpbnQgKCpjYWxpYnJhdGUpKHN0cnVjdCBhc3BlZWRf c3BpX2NoaXAgKmNoaXAsIHUzMiBoZGl2LAorCQkJIGNvbnN0IHU4ICpnb2xkZW5fYnVmLCB1OCAq dGVzdF9idWYpOwogfTsKIAogI2RlZmluZSBBU1BFRURfU1BJX01BWF9OVU1fQ1MJNQpAQCAtNTQw LDYgKzU1MCw4IEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NwaV9jaGlwX2FkanVzdF93aW5kb3coc3Ry dWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBh c3BlZWRfc3BpX2RvX2NhbGlicmF0aW9uKHN0cnVjdCBhc3BlZWRfc3BpX2NoaXAgKmNoaXApOwor CiBzdGF0aWMgaW50IGFzcGVlZF9zcGlfZGlybWFwX2NyZWF0ZShzdHJ1Y3Qgc3BpX21lbV9kaXJt YXBfZGVzYyAqZGVzYykKIHsKIAlzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSA9IHNwaV9jb250cm9s bGVyX2dldF9kZXZkYXRhKGRlc2MtPm1lbS0+c3BpLT5tYXN0ZXIpOwpAQCAtNTg4LDYgKzYwMCw4 IEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NwaV9kaXJtYXBfY3JlYXRlKHN0cnVjdCBzcGlfbWVtX2Rp cm1hcF9kZXNjICpkZXNjKQogCWNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSA9IGN0bF92 YWw7CiAJd3JpdGVsKGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSwgY2hpcC0+Y3RsKTsK IAorCXJldCA9IGFzcGVlZF9zcGlfZG9fY2FsaWJyYXRpb24oY2hpcCk7CisKIAlkZXZfaW5mbyhh c3BpLT5kZXYsICJDRSVkIHJlYWQgYnVzd2lkdGg6JWQgWzB4JTA4eF1cbiIsCiAJCSBjaGlwLT5j cywgb3AtPmRhdGEuYnVzd2lkdGgsIGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSk7CiAK QEAgLTg2OSw2ICs4ODMsMjQ5IEBAIHN0YXRpYyB1MzIgYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2 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 CXJldHVybiAtMTsKK30KKwogLyoKICAqIFBsYXRmb3JtIGRlZmluaXRpb25zCiAgKi8KQEAgLTg3 Nyw2ICsxMTM0LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhIGFzdDI0 MDBfZm1jX2RhdGEgPSB7CiAJLmhhc3R5cGUgICAgICAgPSB0cnVlLAogCS53ZTAJICAgICAgID0g MTYsCiAJLmN0bDAJICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0Uw X1RJTUlOR19DT01QRU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmZmZmZjBmZiwK KwkuaGRpdl9tYXggICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2NhbGli cmF0ZSwKIAkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9zdGFydCwKIAkuc2Vn bWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJLnNlZ21lbnRfcmVnICAgPSBh c3BlZWRfc3BpX3NlZ21lbnRfcmVnLApAQCAtODg3LDYgKzExNDgsMTAgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgYXN0MjQwMF9zcGlfZGF0YSA9IHsKIAkuaGFzdHlwZSAg ICAgICA9IGZhbHNlLAogCS53ZTAJICAgICAgID0gMCwKIAkuY3RsMAkgICAgICAgPSAweDA0LAor CS50aW1pbmcJICAgICAgID0gMHgxNCwKKwkuaGNsa19tYXNrICAgICA9IDB4ZmZmZmYwZmYsCisJ LmhkaXZfbWF4ICAgICAgPSAxLAorCS5jYWxpYnJhdGUgICAgID0gYXNwZWVkX3NwaV9jYWxpYnJh dGUsCiAJLyogTm8gc2VnbWVudCByZWdpc3RlcnMgKi8KIH07CiAKQEAgLTg5NSw2ICsxMTYwLDEw IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhIGFzdDI1MDBfZm1jX2RhdGEg PSB7CiAJLmhhc3R5cGUgICAgICAgPSB0cnVlLAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJ ICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01Q RU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmZmZmZjBmZiwKKwkuaGRpdl9tYXgg ICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2NhbGlicmF0ZSwKIAkuc2Vn bWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9 IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJLnNlZ21lbnRfcmVnICAgPSBhc3BlZWRfc3BpX3Nl Z21lbnRfcmVnLApAQCAtOTA1LDYgKzExNzQsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3Bl ZWRfc3BpX2RhdGEgYXN0MjUwMF9zcGlfZGF0YSA9IHsKIAkuaGFzdHlwZSAgICAgICA9IGZhbHNl LAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJICAgICAgID0gQ0UwX0NUUkxfUkVHLAorCS50 aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01QRU5TQVRJT05fUkVHLAorCS5oY2xrX21hc2sg ICAgID0gMHhmZmZmZjBmZiwKKwkuaGRpdl9tYXggICAgICA9IDEsCisJLmNhbGlicmF0ZSAgICAg PSBhc3BlZWRfc3BpX2NhbGlicmF0ZSwKIAkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2Vn bWVudF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCiAJ LnNlZ21lbnRfcmVnICAgPSBhc3BlZWRfc3BpX3NlZ21lbnRfcmVnLApAQCAtOTE2LDYgKzExODks MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgYXN0MjYwMF9mbWNfZGF0 YSA9IHsKIAkubW9kZV9iaXRzICAgICA9IFNQSV9SWF9RVUFEIHwgU1BJX1JYX1FVQUQsCiAJLndl MAkgICAgICAgPSAxNiwKIAkuY3RsMAkgICAgICAgPSBDRTBfQ1RSTF9SRUcsCisJLnRpbWluZwkg ICAgICAgPSBDRTBfVElNSU5HX0NPTVBFTlNBVElPTl9SRUcsCisJLmhjbGtfbWFzayAgICAgPSAw eGYwZmZmMGZmLAorCS5oZGl2X21heCAgICAgID0gMiwKKwkuY2FsaWJyYXRlICAgICA9IGFzcGVl ZF9zcGlfYXN0MjYwMF9jYWxpYnJhdGUsCiAJLnNlZ21lbnRfc3RhcnQgPSBhc3BlZWRfc3BpX3Nl Z21lbnRfYXN0MjYwMF9zdGFydCwKIAkuc2VnbWVudF9lbmQgICA9IGFzcGVlZF9zcGlfc2VnbWVu dF9hc3QyNjAwX2VuZCwKIAkuc2VnbWVudF9yZWcgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9hc3Qy NjAwX3JlZywKQEAgLTkyNyw2ICsxMjA0LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVk X3NwaV9kYXRhIGFzdDI2MDBfc3BpX2RhdGEgPSB7CiAJLm1vZGVfYml0cyAgICAgPSBTUElfUlhf UVVBRCB8IFNQSV9SWF9RVUFELAogCS53ZTAJICAgICAgID0gMTYsCiAJLmN0bDAJICAgICAgID0g Q0UwX0NUUkxfUkVHLAorCS50aW1pbmcJICAgICAgID0gQ0UwX1RJTUlOR19DT01QRU5TQVRJT05f UkVHLAorCS5oY2xrX21hc2sgICAgID0gMHhmMGZmZjBmZiwKKwkuaGRpdl9tYXggICAgICA9IDIs CisJLmNhbGlicmF0ZSAgICAgPSBhc3BlZWRfc3BpX2FzdDI2MDBfY2FsaWJyYXRlLAogCS5zZWdt ZW50X3N0YXJ0ID0gYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2MDBfc3RhcnQsCiAJLnNlZ21lbnRf ZW5kICAgPSBhc3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9lbmQsCiAJLnNlZ21lbnRfcmVnICAg PSBhc3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9yZWcsCi0tIAoyLjM0LjEKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1h aWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==