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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 174AAC47404 for ; Fri, 4 Oct 2019 12:02:33 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id C239A20862 for ; Fri, 4 Oct 2019 12:02:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Yz0DKPC8" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C239A20862 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kaod.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FRU5Pq+99umF5ty/m9EdQAtkjPRf9G2RlST4J3D+dLc=; b=Yz0DKPC8cB0pb+ VjdcNKPe2MfOdBhUN7srNFCaksFtUZ8kLA2kljU5x25AXWD5BmJIQ14sjdyZqLmOSY3Njfr0DvNE4 e7Fe0NbsBB7uM8uRpLpUbFsbG9bc86eNrirObVyiTdqHY4Ie+HKfdoX9+Xi0+lNnTwx3HzO3DxOqy noqk2PFdfoqzMDPv90Dik4yoG3muApRybaoiQnJKem5CaAXVY7Q4BedxcqJvuFQNdnp42c2oDZt/T +cOroIrFSVmViC9T5/hBt2L50b0/VUu3wttteDBTUt4gTE75Nv9EQVI1vnnKXYDtFhOJU4MKUV612 h107rdLnLLfAXkWyNG4g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iGMI2-0008G9-Ui; Fri, 04 Oct 2019 12:02:30 +0000 Received: from 20.mo5.mail-out.ovh.net ([91.121.55.239]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iGMGV-0006mO-Hi for linux-mtd@lists.infradead.org; Fri, 04 Oct 2019 12:01:00 +0000 Received: from player792.ha.ovh.net (unknown [10.108.57.49]) by mo5.mail-out.ovh.net (Postfix) with ESMTP id F1A90251955 for ; Fri, 4 Oct 2019 14:00:51 +0200 (CEST) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player792.ha.ovh.net (Postfix) with ESMTPSA id 6AEC0AA65B5F; Fri, 4 Oct 2019 12:00:36 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: linux-mtd@lists.infradead.org, Tudor Ambarus Subject: [PATCH 04/16] mtd: spi-nor: aspeed: Add read training Date: Fri, 4 Oct 2019 13:59:07 +0200 Message-Id: <20191004115919.20788-5-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191004115919.20788-1-clg@kaod.org> References: <20191004115919.20788-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 3779364513022446515 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrhedugdegudcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191004_050055_927768_BBCA7119 X-CRM114-Status: GOOD ( 23.78 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Vignesh Raghavendra , linux-aspeed@lists.ozlabs.org, Andrew Jeffery , Richard Weinberger , Marek Vasut , Joel Stanley , Miquel Raynal , Brian Norris , David Woodhouse , linux-arm-kernel@lists.infradead.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= 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 VGhlIHJlYWQgdHJhaW5pbmcgYWxnb3JpdGhtIGZpcnN0IHJlYWRzIGEgZ29sZGVuIGJ1ZmZlciBh dCBsb3cgc3BlZWQKYW5kIHRoZW4gcGVyZm9ybXMgcmVhZHMgd2l0aCBkaWZmZXJlbnQgY2xvY2tz IGFuZCBkZWxheSBjeWNsZXMKc2V0dGluZ3MgdG8gZmluZCB0aGUgZmFzdGVzdCBjb25maWd1cmF0 aW9uIGZvciB0aGUgY2hpcC4gVGhlIGN1cnJlbnQKaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24g dGhlIE9wZW5QT1dFUiBwZmxhc2ggdG9vbC4KCkZvciB0aGUgbW9tZW50LCByZWFkIHRyYWluaW5n IGlzIG9ubHkgYWN0aXZhdGVkIGZvciBTUEkgY29udHJvbGxlcnMgYXMKVS1Cb290IHNob3VsZCBo YXZlIGRvbmUgdGhlIHJlYWQgdHJhaW5pbmcgZm9yIHRoZSBGTUMgY29udHJvbGxlciB1c2luZwp0 aGUgRE1BIGludGVyZmFjZS4gV2UgYWxzbyBkb24ndCBsaW1pdCB5ZXQgdGhlIG1heCBmcmVxdWVu Y3ksIHNvIGl0J3MKc2FmZXIgbm90IHRvIGJlIHRvbyBvcHRpbWlzdGljIG9uIHRoZSBjYXBhYmls aXRpZXMgb2YgdGhlIGJvb3QgZmxhc2guCgpJdCBjYW4gYmUgZGVhY3RpdmF0ZWQgYXQgYm9vdCB0 aW1lIHdpdGggdGhlIGtlcm5lbCBwYXJhbWV0ZXIgOgoKCWFzcGVlZF9zbWMub3B0aW1pemVfcmVh ZD0wCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3JnPgotLS0K IGRyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jIHwgMjA0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jIGIvZHJpdmVycy9tdGQvc3Bp LW5vci9hc3BlZWQtc21jLmMKaW5kZXggZmFjZDhmYzE2Y2EzLi4xNTVjNDA3YzJiZGYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jCisrKyBiL2RyaXZlcnMvbXRk L3NwaS1ub3IvYXNwZWVkLXNtYy5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8bGludXgv b2YuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPGxpbnV4L3Np emVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+ CiAKICNkZWZpbmUgREVWSUNFX05BTUUJImFzcGVlZC1zbWMiCkBAIC0zOCwxMiArMzksMTYgQEAg c3RydWN0IGFzcGVlZF9zbWNfaW5mbyB7CiAJYm9vbCBoYXN0eXBlOwkJLyogZmxhc2ggdHlwZSBm aWVsZCBleGlzdHMgaW4gY29uZmlnIHJlZyAqLwogCXU4IHdlMDsJCQkvKiBzaGlmdCBmb3Igd3Jp dGUgZW5hYmxlIGJpdCBmb3IgQ0UwICovCiAJdTggY3RsMDsJCS8qIG9mZnNldCBpbiByZWdzIG9m IGN0bCBmb3IgQ0UwICovCisJdTggdGltaW5nOwkJLyogb2Zmc2V0IGluIHJlZ3Mgb2YgdGltaW5n ICovCiAKIAl2b2lkICgqc2V0XzRiKShzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKTsKKwlp bnQgKCpvcHRpbWl6ZV9yZWFkKShzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwLCB1MzIgbWF4 X2ZyZXEpOwogfTsKIAogc3RhdGljIHZvaWQgYXNwZWVkX3NtY19jaGlwX3NldF80Yl9zcGlfMjQw MChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKTsKIHN0YXRpYyB2b2lkIGFzcGVlZF9zbWNf Y2hpcF9zZXRfNGIoc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCk7CitzdGF0aWMgaW50IGFz cGVlZF9zbWNfb3B0aW1pemVfcmVhZChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwLAorCQkJ CSAgICB1MzIgbWF4X2ZyZXEpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGFzcGVlZF9zbWNfaW5m byBmbWNfMjQwMF9pbmZvID0gewogCS5tYXhzaXplID0gNjQgKiAxMDI0ICogMTAyNCwKQEAgLTUx LDYgKzU2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc21jX2luZm8gZm1jXzI0MDBf aW5mbyA9IHsKIAkuaGFzdHlwZSA9IHRydWUsCiAJLndlMCA9IDE2LAogCS5jdGwwID0gMHgxMCwK KwkudGltaW5nID0gMHg5NCwKIAkuc2V0XzRiID0gYXNwZWVkX3NtY19jaGlwX3NldF80YiwKIH07 CiAKQEAgLTYwLDcgKzY2LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc21jX2luZm8g c3BpXzI0MDBfaW5mbyA9IHsKIAkuaGFzdHlwZSA9IGZhbHNlLAogCS53ZTAgPSAwLAogCS5jdGww ID0gMHgwNCwKKwkudGltaW5nID0gMHgxNCwKIAkuc2V0XzRiID0gYXNwZWVkX3NtY19jaGlwX3Nl dF80Yl9zcGlfMjQwMCwKKwkub3B0aW1pemVfcmVhZCA9IGFzcGVlZF9zbWNfb3B0aW1pemVfcmVh ZCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19pbmZvIGZtY18yNTAwX2lu Zm8gPSB7CkBAIC02OSw2ICs3Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19p bmZvIGZtY18yNTAwX2luZm8gPSB7CiAJLmhhc3R5cGUgPSB0cnVlLAogCS53ZTAgPSAxNiwKIAku Y3RsMCA9IDB4MTAsCisJLnRpbWluZyA9IDB4OTQsCiAJLnNldF80YiA9IGFzcGVlZF9zbWNfY2hp cF9zZXRfNGIsCiB9OwogCkBAIC03OCw3ICs4Nyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNw ZWVkX3NtY19pbmZvIHNwaV8yNTAwX2luZm8gPSB7CiAJLmhhc3R5cGUgPSBmYWxzZSwKIAkud2Uw ID0gMTYsCiAJLmN0bDAgPSAweDEwLAorCS50aW1pbmcgPSAweDk0LAogCS5zZXRfNGIgPSBhc3Bl ZWRfc21jX2NoaXBfc2V0XzRiLAorCS5vcHRpbWl6ZV9yZWFkID0gYXNwZWVkX3NtY19vcHRpbWl6 ZV9yZWFkLAogfTsKIAogZW51bSBhc3BlZWRfc21jX2N0bF9yZWdfdmFsdWUgewpAQCAtMjAwLDYg KzIxMSwxMiBAQCBzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyIHsKICNkZWZpbmUgU0VHTUVO VF9BRERSX1JFRyhjb250cm9sbGVyLCBjcykJXAogCSgoY29udHJvbGxlciktPnJlZ3MgKyBTRUdN RU5UX0FERFJfUkVHMCArIChjcykgKiA0KQogCisvKgorICogU3dpdGNoIHRvIHR1cm4gb2ZmIHJl YWQgb3B0aW1pc2F0aW9uIGlmIG5lZWRlZAorICovCitzdGF0aWMgYm9vbCBvcHRpbWl6ZV9yZWFk ID0gdHJ1ZTsKK21vZHVsZV9wYXJhbShvcHRpbWl6ZV9yZWFkLCBib29sLCAwNjQ0KTsKKwogLyoK ICAqIEluIHVzZXIgbW9kZSBhbGwgZGF0YSBieXRlcyByZWFkIG9yIHdyaXR0ZW4gdG8gdGhlIGNo aXAgZGVjb2RlIGFkZHJlc3MKICAqIHJhbmdlIGFyZSB0cmFuc2ZlcnJlZCB0byBvciBmcm9tIHRo ZSBTUEkgYnVzLiBUaGUgcmFuZ2UgaXMgdHJlYXRlZCBhcyBhCkBAIC03NjEsNiArNzc4LDE4NyBA QCBzdGF0aWMgaW50IGFzcGVlZF9zbWNfY2hpcF9zZXR1cF9pbml0KHN0cnVjdCBhc3BlZWRfc21j X2NoaXAgKmNoaXAsCiAJcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgQ0FMSUJSQVRFX0JVRl9TSVpF IDE2Mzg0CisKK3N0YXRpYyBib29sIGFzcGVlZF9zbWNfY2hlY2tfcmVhZHMoc3RydWN0IGFzcGVl ZF9zbWNfY2hpcCAqY2hpcCwKKwkJCQkgICBjb25zdCB1OCAqZ29sZGVuX2J1ZiwgdTggKnRlc3Rf YnVmKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJbWVtY3B5 X2Zyb21pbyh0ZXN0X2J1ZiwgY2hpcC0+YWhiX2Jhc2UsIENBTElCUkFURV9CVUZfU0laRSk7CisJ CWlmIChtZW1jbXAodGVzdF9idWYsIGdvbGRlbl9idWYsIENBTElCUkFURV9CVUZfU0laRSkgIT0g MCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbnQg YXNwZWVkX3NtY19jYWxpYnJhdGVfcmVhZHMoc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCwg dTMyIGhkaXYsCisJCQkJICAgICAgY29uc3QgdTggKmdvbGRlbl9idWYsIHU4ICp0ZXN0X2J1ZikK K3sKKwlzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyICpjb250cm9sbGVyID0gY2hpcC0+Y29u dHJvbGxlcjsKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19pbmZvICppbmZvID0gY29udHJvbGxl ci0+aW5mbzsKKwlpbnQgaTsKKwlpbnQgZ29vZF9wYXNzID0gLTEsIHBhc3NfY291bnQgPSAwOwor CXUzMiBzaGlmdCA9IChoZGl2IC0gMSkgPDwgMjsKKwl1MzIgbWFzayA9IH4oMHhmdSA8PCBzaGlm dCk7CisJdTMyIGZyZWFkX3RpbWluZ192YWwgPSAwOworCisjZGVmaW5lIEZSRUFEX1RQQVNTKGkp CSgoKGkpIC8gMikgfCAoKChpKSAmIDEpID8gMCA6IDgpKQorCisJLyogVHJ5IEhDTEsgZGVsYXkg MC4uNSwgZWFjaCBvbmUgd2l0aC93aXRob3V0IGRlbGF5IGFuZCBsb29rIGZvciBhCisJICogZ29v ZCBwYWlyLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CisJCWJvb2wgcGFzczsK KworCQlmcmVhZF90aW1pbmdfdmFsICY9IG1hc2s7CisJCWZyZWFkX3RpbWluZ192YWwgfD0gRlJF QURfVFBBU1MoaSkgPDwgc2hpZnQ7CisKKwkJd3JpdGVsKGZyZWFkX3RpbWluZ192YWwsIGNvbnRy b2xsZXItPnJlZ3MgKyBpbmZvLT50aW1pbmcpOworCQlwYXNzID0gYXNwZWVkX3NtY19jaGVja19y ZWFkcyhjaGlwLCBnb2xkZW5fYnVmLCB0ZXN0X2J1Zik7CisJCWRldl9kYmcoY2hpcC0+bm9yLmRl diwKKwkJCSIgICogWyUwOHhdICVkIEhDTEsgZGVsYXksICVkbnMgREkgZGVsYXkgOiAlcyIsCisJ CQlmcmVhZF90aW1pbmdfdmFsLCBpIC8gMiwgKGkgJiAxKSA/IDAgOiA0LAorCQkJcGFzcyA/ICJQ QVNTIiA6ICJGQUlMIik7CisJCWlmIChwYXNzKSB7CisJCQlwYXNzX2NvdW50Kys7CisJCQlpZiAo cGFzc19jb3VudCA9PSAzKSB7CisJCQkJZ29vZF9wYXNzID0gaSAtIDE7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0gZWxzZSB7CisJCQlwYXNzX2NvdW50ID0gMDsKKwkJfQorCX0KKworCS8qIE5vIGdv b2Qgc2V0dGluZyBmb3IgdGhpcyBmcmVxdWVuY3kgKi8KKwlpZiAoZ29vZF9wYXNzIDwgMCkKKwkJ cmV0dXJuIC0xOworCisJLyogV2UgaGF2ZSBhdCBsZWFzdCBvbmUgcGFzcyBvZiBtYXJnaW4sIGxl dCdzIHVzZSBmaXJzdCBwYXNzICovCisJZnJlYWRfdGltaW5nX3ZhbCAmPSBtYXNrOworCWZyZWFk X3RpbWluZ192YWwgfD0gRlJFQURfVFBBU1MoZ29vZF9wYXNzKSA8PCBzaGlmdDsKKwl3cml0ZWwo ZnJlYWRfdGltaW5nX3ZhbCwgY29udHJvbGxlci0+cmVncyArIGluZm8tPnRpbWluZyk7CisJZGV2 X2RiZyhjaGlwLT5ub3IuZGV2LCAiICogLT4gZ29vZCBpcyBwYXNzICVkIFsweCUwOHhdIiwKKwkJ Z29vZF9wYXNzLCBmcmVhZF90aW1pbmdfdmFsKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGJv b2wgYXNwZWVkX3NtY19jaGVja19jYWxpYl9kYXRhKGNvbnN0IHU4ICp0ZXN0X2J1ZiwgdTMyIHNp emUpCit7CisJY29uc3QgdTMyICp0YjMyID0gKGNvbnN0IHUzMiAqKXRlc3RfYnVmOworCXUzMiBp LCBjbnQgPSAwOworCisJLyogV2UgY2hlY2sgaWYgd2UgaGF2ZSBlbm91Z2ggd29yZHMgdGhhdCBh cmUgbmVpdGhlciBhbGwgMAorCSAqIG5vciBhbGwgMSdzIHNvIHRoZSBjYWxpYnJhdGlvbiBjYW4g YmUgY29uc2lkZXJlZCB2YWxpZC4KKwkgKgorCSAqIEkgdXNlIGFuIGFyYml0cmFyeSB0aHJlc2hv bGQgZm9yIG5vdyBvZiA2NAorCSAqLworCXNpemUgPj49IDI7CisJZm9yIChpID0gMDsgaSA8IHNp emU7IGkrKykgeworCQlpZiAodGIzMltpXSAhPSAwICYmIHRiMzJbaV0gIT0gMHhmZmZmZmZmZikK KwkJCWNudCsrOworCX0KKwlyZXR1cm4gY250ID49IDY0OworfQorCitzdGF0aWMgY29uc3QgdTMy IGFzcGVlZF9zbWNfaGNsa19kaXZzW10gPSB7CisJMHhmLCAvKiBIQ0xLICovCisJMHg3LCAvKiBI Q0xLLzIgKi8KKwkweGUsIC8qIEhDTEsvMyAqLworCTB4NiwgLyogSENMSy80ICovCisJMHhkLCAv KiBIQ0xLLzUgKi8KK307CisKKyNkZWZpbmUgQVNQRUVEX1NNQ19IQ0xLX0RJVihpKSBcCisJKGFz cGVlZF9zbWNfaGNsa19kaXZzWyhpKSAtIDFdIDw8IENPTlRST0xfQ0xPQ0tfRlJFUV9TRUxfU0hJ RlQpCisKK3N0YXRpYyB1MzIgYXNwZWVkX3NtY19kZWZhdWx0X3JlYWQoc3RydWN0IGFzcGVlZF9z bWNfY2hpcCAqY2hpcCkKK3sKKwkvKgorCSAqIEtlZXAgdGhlIDRCeXRlIGFkZHJlc3MgbW9kZSBv biB0aGUgQVNUMjQwMCBTUEkgY29udHJvbGxlci4KKwkgKiBPdGhlciBjb250cm9sbGVycyBzZXQg dGhlIDRCeXRlIG1vZGUgaW4gdGhlIENFIENvbnRyb2wKKwkgKiBSZWdpc3RlcgorCSAqLworCXUz MiBjdGxfbWFzayA9IGNoaXAtPmNvbnRyb2xsZXItPmluZm8gPT0gJnNwaV8yNDAwX2luZm8gPwor CQkgQ09OVFJPTF9JT19BRERSRVNTXzRCIDogMDsKKworCXJldHVybiAoY2hpcC0+Y3RsX3ZhbFtz bWNfcmVhZF0gJiBjdGxfbWFzaykgfAorCQkoMHgwMCA8PCAyOCkgfCAvKiBTaW5nbGUgYml0ICov CisJCSgweDAwIDw8IDI0KSB8IC8qIENFIyBtYXggKi8KKwkJKDB4MDMgPDwgMTYpIHwgLyogdXNl IG5vcm1hbCByZWFkcyAqLworCQkoMHgwMCA8PCAgOCkgfCAvKiBIQ0xLLzE2ICovCisJCSgweDAw IDw8ICA2KSB8IC8qIG5vIGR1bW15IGN5Y2xlICovCisJCSgweDAwKTsgICAgICAgIC8qIG5vcm1h bCBtb2RlICovCit9CisKK3N0YXRpYyBpbnQgYXNwZWVkX3NtY19vcHRpbWl6ZV9yZWFkKHN0cnVj dCBhc3BlZWRfc21jX2NoaXAgKmNoaXAsCisJCQkJICAgIHUzMiBtYXhfZnJlcSkKK3sKKwl1OCAq Z29sZGVuX2J1ZiwgKnRlc3RfYnVmOworCWludCBpLCByYywgYmVzdF9kaXYgPSAtMTsKKwl1MzIg c2F2ZV9yZWFkX3ZhbCA9IGNoaXAtPmN0bF92YWxbc21jX3JlYWRdOworCXUzMiBhaGJfZnJlcSA9 IGNoaXAtPmNvbnRyb2xsZXItPmNsa19mcmVxdWVuY3k7CisKKwlkZXZfZGJnKGNoaXAtPm5vci5k ZXYsICJBSEIgZnJlcXVlbmN5OiAlZCBNSHoiLCBhaGJfZnJlcSAvIDEwMDAwMDApOworCisJdGVz dF9idWYgPSBrbWFsbG9jKENBTElCUkFURV9CVUZfU0laRSAqIDIsIEdGUF9LRVJORUwpOworCWdv bGRlbl9idWYgPSB0ZXN0X2J1ZiArIENBTElCUkFURV9CVUZfU0laRTsKKworCS8qIFdlIHN0YXJ0 IHdpdGggdGhlIGR1bWJlc3Qgc2V0dGluZyAoa2VlcCA0Qnl0ZSBiaXQpIGFuZCByZWFkCisJICog c29tZSBkYXRhCisJICovCisJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0gPSBhc3BlZWRfc21jX2Rl ZmF1bHRfcmVhZChjaGlwKTsKKworCXdyaXRlbChjaGlwLT5jdGxfdmFsW3NtY19yZWFkXSwgY2hp cC0+Y3RsKTsKKworCW1lbWNweV9mcm9taW8oZ29sZGVuX2J1ZiwgY2hpcC0+YWhiX2Jhc2UsIENB TElCUkFURV9CVUZfU0laRSk7CisKKwkvKiBFc3RhYmxpc2ggb3VyIHJlYWQgbW9kZSB3aXRoIGZy ZXEgZmllbGQgc2V0IHRvIDAgKEhDTEsvMTYpICovCisJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0g PSBzYXZlX3JlYWRfdmFsICYgMHhmZmZmZjBmZjsKKworCS8qIENoZWNrIGlmIGNhbGlicmF0aW9u IGRhdGEgaXMgc3VpdGFibGUgKi8KKwlpZiAoIWFzcGVlZF9zbWNfY2hlY2tfY2FsaWJfZGF0YShn b2xkZW5fYnVmLCBDQUxJQlJBVEVfQlVGX1NJWkUpKSB7CisJCWRldl9pbmZvKGNoaXAtPm5vci5k ZXYsCisJCQkgIkNhbGlicmF0aW9uIGFyZWEgdG9vIHVuaWZvcm0sIHVzaW5nIGxvdyBzcGVlZCIp OworCQl3cml0ZWwoY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0sIGNoaXAtPmN0bCk7CisJCWtmcmVl KHRlc3RfYnVmKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogTm93IHdlIGl0ZXJhdGUgdGhlIEhD TEsgZGl2aWRlcnMgdW50aWwgd2UgZmluZCBvdXIgYnJlYWtpbmcgcG9pbnQgKi8KKwlmb3IgKGkg PSBBUlJBWV9TSVpFKGFzcGVlZF9zbWNfaGNsa19kaXZzKTsgaSA+IDA7IGktLSkgeworCQl1MzIg dHYsIGZyZXE7CisKKwkJLyogQ29tcGFyZSB0aW1pbmcgdG8gbWF4ICovCisJCWZyZXEgPSBhaGJf ZnJlcSAvIGk7CisJCWlmIChmcmVxID4gbWF4X2ZyZXEpCisJCQljb250aW51ZTsKKworCQkvKiBT ZXQgdGhlIHRpbWluZyAqLworCQl0diA9IGNoaXAtPmN0bF92YWxbc21jX3JlYWRdIHwgQVNQRUVE X1NNQ19IQ0xLX0RJVihpKTsKKwkJd3JpdGVsKHR2LCBjaGlwLT5jdGwpOworCQlkZXZfZGJnKGNo aXAtPm5vci5kZXYsICJUcnlpbmcgSENMSy8lZC4uLiIsIGkpOworCQlyYyA9IGFzcGVlZF9zbWNf Y2FsaWJyYXRlX3JlYWRzKGNoaXAsIGksIGdvbGRlbl9idWYsIHRlc3RfYnVmKTsKKwkJaWYgKHJj ID09IDApCisJCQliZXN0X2RpdiA9IGk7CisJfQorCWtmcmVlKHRlc3RfYnVmKTsKKworCS8qIE5v dGhpbmcgZm91bmQgPyAqLworCWlmIChiZXN0X2RpdiA8IDApIHsKKwkJZGV2X3dhcm4oY2hpcC0+ bm9yLmRldiwgIk5vIGdvb2QgZnJlcXVlbmN5LCB1c2luZyBkdW1iIHNsb3ciKTsKKwl9IGVsc2Ug eworCQlkZXZfZGJnKGNoaXAtPm5vci5kZXYsICJGb3VuZCBnb29kIHJlYWQgdGltaW5ncyBhdCBI Q0xLLyVkIiwKKwkJCWJlc3RfZGl2KTsKKwkJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0gfD0gQVNQ RUVEX1NNQ19IQ0xLX0RJVihiZXN0X2Rpdik7CisJfQorCisJd3JpdGVsKGNoaXAtPmN0bF92YWxb c21jX3JlYWRdLCBjaGlwLT5jdGwpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGFzcGVl ZF9zbWNfY2hpcF9zZXR1cF9maW5pc2goc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCkKIHsK IAlzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyICpjb250cm9sbGVyID0gY2hpcC0+Y29udHJv bGxlcjsKQEAgLTgwMyw2ICsxMDAxLDEyIEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NtY19jaGlwX3Nl dHVwX2ZpbmlzaChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKQogCiAJZGV2X2luZm8oY29u dHJvbGxlci0+ZGV2LCAicmVhZCBjb250cm9sIHJlZ2lzdGVyOiAlMDh4XG4iLAogCQkgY2hpcC0+ Y3RsX3ZhbFtzbWNfcmVhZF0pOworCisJLyoKKwkgKiBUT0RPOiBnZXQgbWF4IGZyZXEgZnJvbSBj aGlwCisJICovCisJaWYgKG9wdGltaXplX3JlYWQgJiYgaW5mby0+b3B0aW1pemVfcmVhZCkKKwkJ aW5mby0+b3B0aW1pemVfcmVhZChjaGlwLCAxMDQwMDAwMDApOwogCXJldHVybiAwOwogfQogCi0t IAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbXRkLwo= 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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9A10C4360C for ; Fri, 4 Oct 2019 12:02:10 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 87E8220862 for ; Fri, 4 Oct 2019 12:02:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AZpWzlK4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 87E8220862 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kaod.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Imwm1FG3hIQLNPlwoGXGGlm6oQ7hs7KtCR8DSKC962w=; b=AZpWzlK4lbtRev X5FrlJDM7B5jlQqSz9RzTsUoawv6CUCuVLSzhbGKP+59m3523oDd38gz/SUJ9Ury+qpwYeCmNOcit +3VUw0Q9jAeqnTCfLOS7x3d4Nrlq06GcbpeXNls04wBU97DFQ2KliXmKKXJFi5CeE1MV5UiMZW7Sl hGKFivbXMut5lfopaHpUjBuaFL28z8X86XdCRgGfWVDxANIewERJsgG2ydC16rXpb7IpVnpbW6YYV pOx2nP+plhzmEsA82yBDEL8NHIavdYhkwgF7Jx4qmTQCytzpl6WVTSNgFH8b4HpVIoq5YkM+/Wiwt QukYOcyeQVJJWEs9WhZQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iGMHi-0007x1-0o; Fri, 04 Oct 2019 12:02:10 +0000 Received: from 4.mo173.mail-out.ovh.net ([46.105.34.219]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iGMGV-0006nV-Ua for linux-arm-kernel@lists.infradead.org; Fri, 04 Oct 2019 12:01:00 +0000 Received: from player792.ha.ovh.net (unknown [10.108.35.59]) by mo173.mail-out.ovh.net (Postfix) with ESMTP id 31E3011B852 for ; Fri, 4 Oct 2019 14:00:51 +0200 (CEST) Received: from kaod.org (lfbn-1-2229-223.w90-76.abo.wanadoo.fr [90.76.50.223]) (Authenticated sender: clg@kaod.org) by player792.ha.ovh.net (Postfix) with ESMTPSA id 6AEC0AA65B5F; Fri, 4 Oct 2019 12:00:36 +0000 (UTC) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: linux-mtd@lists.infradead.org, Tudor Ambarus Subject: [PATCH 04/16] mtd: spi-nor: aspeed: Add read training Date: Fri, 4 Oct 2019 13:59:07 +0200 Message-Id: <20191004115919.20788-5-clg@kaod.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191004115919.20788-1-clg@kaod.org> References: <20191004115919.20788-1-clg@kaod.org> MIME-Version: 1.0 X-Ovh-Tracer-Id: 3779364513022446515 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrhedugdegudcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191004_050056_384462_98533AE2 X-CRM114-Status: GOOD ( 24.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Vignesh Raghavendra , linux-aspeed@lists.ozlabs.org, Andrew Jeffery , Richard Weinberger , Marek Vasut , Joel Stanley , Miquel Raynal , Brian Norris , David Woodhouse , linux-arm-kernel@lists.infradead.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIHJlYWQgdHJhaW5pbmcgYWxnb3JpdGhtIGZpcnN0IHJlYWRzIGEgZ29sZGVuIGJ1ZmZlciBh dCBsb3cgc3BlZWQKYW5kIHRoZW4gcGVyZm9ybXMgcmVhZHMgd2l0aCBkaWZmZXJlbnQgY2xvY2tz IGFuZCBkZWxheSBjeWNsZXMKc2V0dGluZ3MgdG8gZmluZCB0aGUgZmFzdGVzdCBjb25maWd1cmF0 aW9uIGZvciB0aGUgY2hpcC4gVGhlIGN1cnJlbnQKaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24g dGhlIE9wZW5QT1dFUiBwZmxhc2ggdG9vbC4KCkZvciB0aGUgbW9tZW50LCByZWFkIHRyYWluaW5n IGlzIG9ubHkgYWN0aXZhdGVkIGZvciBTUEkgY29udHJvbGxlcnMgYXMKVS1Cb290IHNob3VsZCBo YXZlIGRvbmUgdGhlIHJlYWQgdHJhaW5pbmcgZm9yIHRoZSBGTUMgY29udHJvbGxlciB1c2luZwp0 aGUgRE1BIGludGVyZmFjZS4gV2UgYWxzbyBkb24ndCBsaW1pdCB5ZXQgdGhlIG1heCBmcmVxdWVu Y3ksIHNvIGl0J3MKc2FmZXIgbm90IHRvIGJlIHRvbyBvcHRpbWlzdGljIG9uIHRoZSBjYXBhYmls aXRpZXMgb2YgdGhlIGJvb3QgZmxhc2guCgpJdCBjYW4gYmUgZGVhY3RpdmF0ZWQgYXQgYm9vdCB0 aW1lIHdpdGggdGhlIGtlcm5lbCBwYXJhbWV0ZXIgOgoKCWFzcGVlZF9zbWMub3B0aW1pemVfcmVh ZD0wCgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qub3JnPgotLS0K IGRyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jIHwgMjA0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jIGIvZHJpdmVycy9tdGQvc3Bp LW5vci9hc3BlZWQtc21jLmMKaW5kZXggZmFjZDhmYzE2Y2EzLi4xNTVjNDA3YzJiZGYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbXRkL3NwaS1ub3IvYXNwZWVkLXNtYy5jCisrKyBiL2RyaXZlcnMvbXRk L3NwaS1ub3IvYXNwZWVkLXNtYy5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSA8bGludXgv b2YuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPGxpbnV4L3Np emVzLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+ CiAKICNkZWZpbmUgREVWSUNFX05BTUUJImFzcGVlZC1zbWMiCkBAIC0zOCwxMiArMzksMTYgQEAg c3RydWN0IGFzcGVlZF9zbWNfaW5mbyB7CiAJYm9vbCBoYXN0eXBlOwkJLyogZmxhc2ggdHlwZSBm aWVsZCBleGlzdHMgaW4gY29uZmlnIHJlZyAqLwogCXU4IHdlMDsJCQkvKiBzaGlmdCBmb3Igd3Jp dGUgZW5hYmxlIGJpdCBmb3IgQ0UwICovCiAJdTggY3RsMDsJCS8qIG9mZnNldCBpbiByZWdzIG9m IGN0bCBmb3IgQ0UwICovCisJdTggdGltaW5nOwkJLyogb2Zmc2V0IGluIHJlZ3Mgb2YgdGltaW5n ICovCiAKIAl2b2lkICgqc2V0XzRiKShzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKTsKKwlp bnQgKCpvcHRpbWl6ZV9yZWFkKShzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwLCB1MzIgbWF4 X2ZyZXEpOwogfTsKIAogc3RhdGljIHZvaWQgYXNwZWVkX3NtY19jaGlwX3NldF80Yl9zcGlfMjQw MChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKTsKIHN0YXRpYyB2b2lkIGFzcGVlZF9zbWNf Y2hpcF9zZXRfNGIoc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCk7CitzdGF0aWMgaW50IGFz cGVlZF9zbWNfb3B0aW1pemVfcmVhZChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwLAorCQkJ CSAgICB1MzIgbWF4X2ZyZXEpOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGFzcGVlZF9zbWNfaW5m byBmbWNfMjQwMF9pbmZvID0gewogCS5tYXhzaXplID0gNjQgKiAxMDI0ICogMTAyNCwKQEAgLTUx LDYgKzU2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc21jX2luZm8gZm1jXzI0MDBf aW5mbyA9IHsKIAkuaGFzdHlwZSA9IHRydWUsCiAJLndlMCA9IDE2LAogCS5jdGwwID0gMHgxMCwK KwkudGltaW5nID0gMHg5NCwKIAkuc2V0XzRiID0gYXNwZWVkX3NtY19jaGlwX3NldF80YiwKIH07 CiAKQEAgLTYwLDcgKzY2LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc21jX2luZm8g c3BpXzI0MDBfaW5mbyA9IHsKIAkuaGFzdHlwZSA9IGZhbHNlLAogCS53ZTAgPSAwLAogCS5jdGww ID0gMHgwNCwKKwkudGltaW5nID0gMHgxNCwKIAkuc2V0XzRiID0gYXNwZWVkX3NtY19jaGlwX3Nl dF80Yl9zcGlfMjQwMCwKKwkub3B0aW1pemVfcmVhZCA9IGFzcGVlZF9zbWNfb3B0aW1pemVfcmVh ZCwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19pbmZvIGZtY18yNTAwX2lu Zm8gPSB7CkBAIC02OSw2ICs3Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19p bmZvIGZtY18yNTAwX2luZm8gPSB7CiAJLmhhc3R5cGUgPSB0cnVlLAogCS53ZTAgPSAxNiwKIAku Y3RsMCA9IDB4MTAsCisJLnRpbWluZyA9IDB4OTQsCiAJLnNldF80YiA9IGFzcGVlZF9zbWNfY2hp cF9zZXRfNGIsCiB9OwogCkBAIC03OCw3ICs4Nyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXNw ZWVkX3NtY19pbmZvIHNwaV8yNTAwX2luZm8gPSB7CiAJLmhhc3R5cGUgPSBmYWxzZSwKIAkud2Uw ID0gMTYsCiAJLmN0bDAgPSAweDEwLAorCS50aW1pbmcgPSAweDk0LAogCS5zZXRfNGIgPSBhc3Bl ZWRfc21jX2NoaXBfc2V0XzRiLAorCS5vcHRpbWl6ZV9yZWFkID0gYXNwZWVkX3NtY19vcHRpbWl6 ZV9yZWFkLAogfTsKIAogZW51bSBhc3BlZWRfc21jX2N0bF9yZWdfdmFsdWUgewpAQCAtMjAwLDYg KzIxMSwxMiBAQCBzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyIHsKICNkZWZpbmUgU0VHTUVO VF9BRERSX1JFRyhjb250cm9sbGVyLCBjcykJXAogCSgoY29udHJvbGxlciktPnJlZ3MgKyBTRUdN RU5UX0FERFJfUkVHMCArIChjcykgKiA0KQogCisvKgorICogU3dpdGNoIHRvIHR1cm4gb2ZmIHJl YWQgb3B0aW1pc2F0aW9uIGlmIG5lZWRlZAorICovCitzdGF0aWMgYm9vbCBvcHRpbWl6ZV9yZWFk ID0gdHJ1ZTsKK21vZHVsZV9wYXJhbShvcHRpbWl6ZV9yZWFkLCBib29sLCAwNjQ0KTsKKwogLyoK ICAqIEluIHVzZXIgbW9kZSBhbGwgZGF0YSBieXRlcyByZWFkIG9yIHdyaXR0ZW4gdG8gdGhlIGNo aXAgZGVjb2RlIGFkZHJlc3MKICAqIHJhbmdlIGFyZSB0cmFuc2ZlcnJlZCB0byBvciBmcm9tIHRo ZSBTUEkgYnVzLiBUaGUgcmFuZ2UgaXMgdHJlYXRlZCBhcyBhCkBAIC03NjEsNiArNzc4LDE4NyBA QCBzdGF0aWMgaW50IGFzcGVlZF9zbWNfY2hpcF9zZXR1cF9pbml0KHN0cnVjdCBhc3BlZWRfc21j X2NoaXAgKmNoaXAsCiAJcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgQ0FMSUJSQVRFX0JVRl9TSVpF IDE2Mzg0CisKK3N0YXRpYyBib29sIGFzcGVlZF9zbWNfY2hlY2tfcmVhZHMoc3RydWN0IGFzcGVl ZF9zbWNfY2hpcCAqY2hpcCwKKwkJCQkgICBjb25zdCB1OCAqZ29sZGVuX2J1ZiwgdTggKnRlc3Rf YnVmKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKKwkJbWVtY3B5 X2Zyb21pbyh0ZXN0X2J1ZiwgY2hpcC0+YWhiX2Jhc2UsIENBTElCUkFURV9CVUZfU0laRSk7CisJ CWlmIChtZW1jbXAodGVzdF9idWYsIGdvbGRlbl9idWYsIENBTElCUkFURV9CVUZfU0laRSkgIT0g MCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBpbnQg YXNwZWVkX3NtY19jYWxpYnJhdGVfcmVhZHMoc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCwg dTMyIGhkaXYsCisJCQkJICAgICAgY29uc3QgdTggKmdvbGRlbl9idWYsIHU4ICp0ZXN0X2J1ZikK K3sKKwlzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyICpjb250cm9sbGVyID0gY2hpcC0+Y29u dHJvbGxlcjsKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3NtY19pbmZvICppbmZvID0gY29udHJvbGxl ci0+aW5mbzsKKwlpbnQgaTsKKwlpbnQgZ29vZF9wYXNzID0gLTEsIHBhc3NfY291bnQgPSAwOwor CXUzMiBzaGlmdCA9IChoZGl2IC0gMSkgPDwgMjsKKwl1MzIgbWFzayA9IH4oMHhmdSA8PCBzaGlm dCk7CisJdTMyIGZyZWFkX3RpbWluZ192YWwgPSAwOworCisjZGVmaW5lIEZSRUFEX1RQQVNTKGkp CSgoKGkpIC8gMikgfCAoKChpKSAmIDEpID8gMCA6IDgpKQorCisJLyogVHJ5IEhDTEsgZGVsYXkg MC4uNSwgZWFjaCBvbmUgd2l0aC93aXRob3V0IGRlbGF5IGFuZCBsb29rIGZvciBhCisJICogZ29v ZCBwYWlyLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7CisJCWJvb2wgcGFzczsK KworCQlmcmVhZF90aW1pbmdfdmFsICY9IG1hc2s7CisJCWZyZWFkX3RpbWluZ192YWwgfD0gRlJF QURfVFBBU1MoaSkgPDwgc2hpZnQ7CisKKwkJd3JpdGVsKGZyZWFkX3RpbWluZ192YWwsIGNvbnRy b2xsZXItPnJlZ3MgKyBpbmZvLT50aW1pbmcpOworCQlwYXNzID0gYXNwZWVkX3NtY19jaGVja19y ZWFkcyhjaGlwLCBnb2xkZW5fYnVmLCB0ZXN0X2J1Zik7CisJCWRldl9kYmcoY2hpcC0+bm9yLmRl diwKKwkJCSIgICogWyUwOHhdICVkIEhDTEsgZGVsYXksICVkbnMgREkgZGVsYXkgOiAlcyIsCisJ CQlmcmVhZF90aW1pbmdfdmFsLCBpIC8gMiwgKGkgJiAxKSA/IDAgOiA0LAorCQkJcGFzcyA/ICJQ QVNTIiA6ICJGQUlMIik7CisJCWlmIChwYXNzKSB7CisJCQlwYXNzX2NvdW50Kys7CisJCQlpZiAo cGFzc19jb3VudCA9PSAzKSB7CisJCQkJZ29vZF9wYXNzID0gaSAtIDE7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0gZWxzZSB7CisJCQlwYXNzX2NvdW50ID0gMDsKKwkJfQorCX0KKworCS8qIE5vIGdv b2Qgc2V0dGluZyBmb3IgdGhpcyBmcmVxdWVuY3kgKi8KKwlpZiAoZ29vZF9wYXNzIDwgMCkKKwkJ cmV0dXJuIC0xOworCisJLyogV2UgaGF2ZSBhdCBsZWFzdCBvbmUgcGFzcyBvZiBtYXJnaW4sIGxl dCdzIHVzZSBmaXJzdCBwYXNzICovCisJZnJlYWRfdGltaW5nX3ZhbCAmPSBtYXNrOworCWZyZWFk X3RpbWluZ192YWwgfD0gRlJFQURfVFBBU1MoZ29vZF9wYXNzKSA8PCBzaGlmdDsKKwl3cml0ZWwo ZnJlYWRfdGltaW5nX3ZhbCwgY29udHJvbGxlci0+cmVncyArIGluZm8tPnRpbWluZyk7CisJZGV2 X2RiZyhjaGlwLT5ub3IuZGV2LCAiICogLT4gZ29vZCBpcyBwYXNzICVkIFsweCUwOHhdIiwKKwkJ Z29vZF9wYXNzLCBmcmVhZF90aW1pbmdfdmFsKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGJv b2wgYXNwZWVkX3NtY19jaGVja19jYWxpYl9kYXRhKGNvbnN0IHU4ICp0ZXN0X2J1ZiwgdTMyIHNp emUpCit7CisJY29uc3QgdTMyICp0YjMyID0gKGNvbnN0IHUzMiAqKXRlc3RfYnVmOworCXUzMiBp LCBjbnQgPSAwOworCisJLyogV2UgY2hlY2sgaWYgd2UgaGF2ZSBlbm91Z2ggd29yZHMgdGhhdCBh cmUgbmVpdGhlciBhbGwgMAorCSAqIG5vciBhbGwgMSdzIHNvIHRoZSBjYWxpYnJhdGlvbiBjYW4g YmUgY29uc2lkZXJlZCB2YWxpZC4KKwkgKgorCSAqIEkgdXNlIGFuIGFyYml0cmFyeSB0aHJlc2hv bGQgZm9yIG5vdyBvZiA2NAorCSAqLworCXNpemUgPj49IDI7CisJZm9yIChpID0gMDsgaSA8IHNp emU7IGkrKykgeworCQlpZiAodGIzMltpXSAhPSAwICYmIHRiMzJbaV0gIT0gMHhmZmZmZmZmZikK KwkJCWNudCsrOworCX0KKwlyZXR1cm4gY250ID49IDY0OworfQorCitzdGF0aWMgY29uc3QgdTMy IGFzcGVlZF9zbWNfaGNsa19kaXZzW10gPSB7CisJMHhmLCAvKiBIQ0xLICovCisJMHg3LCAvKiBI Q0xLLzIgKi8KKwkweGUsIC8qIEhDTEsvMyAqLworCTB4NiwgLyogSENMSy80ICovCisJMHhkLCAv KiBIQ0xLLzUgKi8KK307CisKKyNkZWZpbmUgQVNQRUVEX1NNQ19IQ0xLX0RJVihpKSBcCisJKGFz cGVlZF9zbWNfaGNsa19kaXZzWyhpKSAtIDFdIDw8IENPTlRST0xfQ0xPQ0tfRlJFUV9TRUxfU0hJ RlQpCisKK3N0YXRpYyB1MzIgYXNwZWVkX3NtY19kZWZhdWx0X3JlYWQoc3RydWN0IGFzcGVlZF9z bWNfY2hpcCAqY2hpcCkKK3sKKwkvKgorCSAqIEtlZXAgdGhlIDRCeXRlIGFkZHJlc3MgbW9kZSBv biB0aGUgQVNUMjQwMCBTUEkgY29udHJvbGxlci4KKwkgKiBPdGhlciBjb250cm9sbGVycyBzZXQg dGhlIDRCeXRlIG1vZGUgaW4gdGhlIENFIENvbnRyb2wKKwkgKiBSZWdpc3RlcgorCSAqLworCXUz MiBjdGxfbWFzayA9IGNoaXAtPmNvbnRyb2xsZXItPmluZm8gPT0gJnNwaV8yNDAwX2luZm8gPwor CQkgQ09OVFJPTF9JT19BRERSRVNTXzRCIDogMDsKKworCXJldHVybiAoY2hpcC0+Y3RsX3ZhbFtz bWNfcmVhZF0gJiBjdGxfbWFzaykgfAorCQkoMHgwMCA8PCAyOCkgfCAvKiBTaW5nbGUgYml0ICov CisJCSgweDAwIDw8IDI0KSB8IC8qIENFIyBtYXggKi8KKwkJKDB4MDMgPDwgMTYpIHwgLyogdXNl IG5vcm1hbCByZWFkcyAqLworCQkoMHgwMCA8PCAgOCkgfCAvKiBIQ0xLLzE2ICovCisJCSgweDAw IDw8ICA2KSB8IC8qIG5vIGR1bW15IGN5Y2xlICovCisJCSgweDAwKTsgICAgICAgIC8qIG5vcm1h bCBtb2RlICovCit9CisKK3N0YXRpYyBpbnQgYXNwZWVkX3NtY19vcHRpbWl6ZV9yZWFkKHN0cnVj dCBhc3BlZWRfc21jX2NoaXAgKmNoaXAsCisJCQkJICAgIHUzMiBtYXhfZnJlcSkKK3sKKwl1OCAq Z29sZGVuX2J1ZiwgKnRlc3RfYnVmOworCWludCBpLCByYywgYmVzdF9kaXYgPSAtMTsKKwl1MzIg c2F2ZV9yZWFkX3ZhbCA9IGNoaXAtPmN0bF92YWxbc21jX3JlYWRdOworCXUzMiBhaGJfZnJlcSA9 IGNoaXAtPmNvbnRyb2xsZXItPmNsa19mcmVxdWVuY3k7CisKKwlkZXZfZGJnKGNoaXAtPm5vci5k ZXYsICJBSEIgZnJlcXVlbmN5OiAlZCBNSHoiLCBhaGJfZnJlcSAvIDEwMDAwMDApOworCisJdGVz dF9idWYgPSBrbWFsbG9jKENBTElCUkFURV9CVUZfU0laRSAqIDIsIEdGUF9LRVJORUwpOworCWdv bGRlbl9idWYgPSB0ZXN0X2J1ZiArIENBTElCUkFURV9CVUZfU0laRTsKKworCS8qIFdlIHN0YXJ0 IHdpdGggdGhlIGR1bWJlc3Qgc2V0dGluZyAoa2VlcCA0Qnl0ZSBiaXQpIGFuZCByZWFkCisJICog c29tZSBkYXRhCisJICovCisJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0gPSBhc3BlZWRfc21jX2Rl ZmF1bHRfcmVhZChjaGlwKTsKKworCXdyaXRlbChjaGlwLT5jdGxfdmFsW3NtY19yZWFkXSwgY2hp cC0+Y3RsKTsKKworCW1lbWNweV9mcm9taW8oZ29sZGVuX2J1ZiwgY2hpcC0+YWhiX2Jhc2UsIENB TElCUkFURV9CVUZfU0laRSk7CisKKwkvKiBFc3RhYmxpc2ggb3VyIHJlYWQgbW9kZSB3aXRoIGZy ZXEgZmllbGQgc2V0IHRvIDAgKEhDTEsvMTYpICovCisJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0g PSBzYXZlX3JlYWRfdmFsICYgMHhmZmZmZjBmZjsKKworCS8qIENoZWNrIGlmIGNhbGlicmF0aW9u IGRhdGEgaXMgc3VpdGFibGUgKi8KKwlpZiAoIWFzcGVlZF9zbWNfY2hlY2tfY2FsaWJfZGF0YShn b2xkZW5fYnVmLCBDQUxJQlJBVEVfQlVGX1NJWkUpKSB7CisJCWRldl9pbmZvKGNoaXAtPm5vci5k ZXYsCisJCQkgIkNhbGlicmF0aW9uIGFyZWEgdG9vIHVuaWZvcm0sIHVzaW5nIGxvdyBzcGVlZCIp OworCQl3cml0ZWwoY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0sIGNoaXAtPmN0bCk7CisJCWtmcmVl KHRlc3RfYnVmKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogTm93IHdlIGl0ZXJhdGUgdGhlIEhD TEsgZGl2aWRlcnMgdW50aWwgd2UgZmluZCBvdXIgYnJlYWtpbmcgcG9pbnQgKi8KKwlmb3IgKGkg PSBBUlJBWV9TSVpFKGFzcGVlZF9zbWNfaGNsa19kaXZzKTsgaSA+IDA7IGktLSkgeworCQl1MzIg dHYsIGZyZXE7CisKKwkJLyogQ29tcGFyZSB0aW1pbmcgdG8gbWF4ICovCisJCWZyZXEgPSBhaGJf ZnJlcSAvIGk7CisJCWlmIChmcmVxID4gbWF4X2ZyZXEpCisJCQljb250aW51ZTsKKworCQkvKiBT ZXQgdGhlIHRpbWluZyAqLworCQl0diA9IGNoaXAtPmN0bF92YWxbc21jX3JlYWRdIHwgQVNQRUVE X1NNQ19IQ0xLX0RJVihpKTsKKwkJd3JpdGVsKHR2LCBjaGlwLT5jdGwpOworCQlkZXZfZGJnKGNo aXAtPm5vci5kZXYsICJUcnlpbmcgSENMSy8lZC4uLiIsIGkpOworCQlyYyA9IGFzcGVlZF9zbWNf Y2FsaWJyYXRlX3JlYWRzKGNoaXAsIGksIGdvbGRlbl9idWYsIHRlc3RfYnVmKTsKKwkJaWYgKHJj ID09IDApCisJCQliZXN0X2RpdiA9IGk7CisJfQorCWtmcmVlKHRlc3RfYnVmKTsKKworCS8qIE5v dGhpbmcgZm91bmQgPyAqLworCWlmIChiZXN0X2RpdiA8IDApIHsKKwkJZGV2X3dhcm4oY2hpcC0+ bm9yLmRldiwgIk5vIGdvb2QgZnJlcXVlbmN5LCB1c2luZyBkdW1iIHNsb3ciKTsKKwl9IGVsc2Ug eworCQlkZXZfZGJnKGNoaXAtPm5vci5kZXYsICJGb3VuZCBnb29kIHJlYWQgdGltaW5ncyBhdCBI Q0xLLyVkIiwKKwkJCWJlc3RfZGl2KTsKKwkJY2hpcC0+Y3RsX3ZhbFtzbWNfcmVhZF0gfD0gQVNQ RUVEX1NNQ19IQ0xLX0RJVihiZXN0X2Rpdik7CisJfQorCisJd3JpdGVsKGNoaXAtPmN0bF92YWxb c21jX3JlYWRdLCBjaGlwLT5jdGwpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGFzcGVl ZF9zbWNfY2hpcF9zZXR1cF9maW5pc2goc3RydWN0IGFzcGVlZF9zbWNfY2hpcCAqY2hpcCkKIHsK IAlzdHJ1Y3QgYXNwZWVkX3NtY19jb250cm9sbGVyICpjb250cm9sbGVyID0gY2hpcC0+Y29udHJv bGxlcjsKQEAgLTgwMyw2ICsxMDAxLDEyIEBAIHN0YXRpYyBpbnQgYXNwZWVkX3NtY19jaGlwX3Nl dHVwX2ZpbmlzaChzdHJ1Y3QgYXNwZWVkX3NtY19jaGlwICpjaGlwKQogCiAJZGV2X2luZm8oY29u dHJvbGxlci0+ZGV2LCAicmVhZCBjb250cm9sIHJlZ2lzdGVyOiAlMDh4XG4iLAogCQkgY2hpcC0+ Y3RsX3ZhbFtzbWNfcmVhZF0pOworCisJLyoKKwkgKiBUT0RPOiBnZXQgbWF4IGZyZXEgZnJvbSBj aGlwCisJICovCisJaWYgKG9wdGltaXplX3JlYWQgJiYgaW5mby0+b3B0aW1pemVfcmVhZCkKKwkJ aW5mby0+b3B0aW1pemVfcmVhZChjaGlwLCAxMDQwMDAwMDApOwogCXJldHVybiAwOwogfQogCi0t IAoyLjIxLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hcm0ta2VybmVsCg==