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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, 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 8758FC4BA0B for ; Wed, 26 Feb 2020 05:13:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3A546222C2 for ; Wed, 26 Feb 2020 05:13:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="WWhziTCG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727025AbgBZFNe (ORCPT ); Wed, 26 Feb 2020 00:13:34 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:55509 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725916AbgBZFN2 (ORCPT ); Wed, 26 Feb 2020 00:13:28 -0500 X-UUID: f4371a772188448f8b3a006146ab3bde-20200226 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=DuV7mTzvMY/R1SC/6qPWzNUb/M2nXWcHc3YDd6kdvLU=; b=WWhziTCGJ/UsFRaGwCR3lYVRoDssOpCDlq7PNmM9AFXEmPnqvUEEABVLeAF1Qwj9hmU/OMccS652z1Nan+xU/F94K1F9C42pf6SvzeevmNnKqogI0vmmdSdfBlJhZ2IIZTXaUZz85sCHRCIpXMaZzpUI3A6fyzh1Zyfo+jl0alE=; X-UUID: f4371a772188448f8b3a006146ab3bde-20200226 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1795520357; Wed, 26 Feb 2020 13:13:20 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 26 Feb 2020 13:09:11 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 26 Feb 2020 13:13:25 +0800 From: Ran Bi To: Alexandre Belloni , Rob Herring , Matthias Brugger CC: Alessandro Zummo , Mark Rutland , Mauro Carvalho Chehab , "David S . Miller" , Greg Kroah-Hartman , Jonathan Cameron , Linus Walleij , Nicolas Ferre , , , , , , , YT Shen , Eddie Huang , Yingjoe Chen , Flora Fu , Sean Wang , Ran Bi Subject: [PATCH v3 2/4] rtc: add support for the MediaTek MT2712 RTC Date: Wed, 26 Feb 2020 13:13:01 +0800 Message-ID: <20200226051303.22560-3-ran.bi@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200226051303.22560-1-ran.bi@mediatek.com> References: <20200226051303.22560-1-ran.bi@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 5E48E4219BF1F7E42CFB405BCFEA4DAC90F39100BED726D22D012C5B8FE0CCA12000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBhZGQgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UMjcxMiBSVEMuIEl0IHdhcyBTb0Mg YmFzZWQgUlRDLCBidXQNCmhhZCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlIGNvbXBhcmVkIHdpdGgg TVQ3NjIyIFJUQy4NCg0KU2lnbmVkLW9mZi1ieTogUmFuIEJpIDxyYW4uYmlAbWVkaWF0ZWsuY29t Pg0KLS0tDQogZHJpdmVycy9ydGMvS2NvbmZpZyAgICAgIHwgIDEwICsNCiBkcml2ZXJzL3J0Yy9N YWtlZmlsZSAgICAgfCAgIDEgKw0KIGRyaXZlcnMvcnRjL3J0Yy1tdDI3MTIuYyB8IDQyMiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiAzIGZpbGVzIGNoYW5nZWQsIDQz MyBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcnRjL3J0Yy1tdDI3 MTIuYw0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvS2NvbmZpZyBiL2RyaXZlcnMvcnRjL0tj b25maWcNCmluZGV4IDM0YzhiNmM3ZTA5NS4uNjg1ZmIwMGJmZGExIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ydGMvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9ydGMvS2NvbmZpZw0KQEAgLTE4MDYsNiAr MTgwNiwxNiBAQCBjb25maWcgUlRDX0RSVl9NT1hBUlQNCiAJICAgVGhpcyBkcml2ZXIgY2FuIGFs c28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlDQogCSAgIHdpbGwgYmUg Y2FsbGVkIHJ0Yy1tb3hhcnQNCiANCitjb25maWcgUlRDX0RSVl9NVDI3MTINCisJdHJpc3RhdGUg Ik1lZGlhVGVrIE1UMjcxMiBTb0MgYmFzZWQgUlRDIg0KKwlkZXBlbmRzIG9uIEFSQ0hfTUVESUFU RUsgfHwgQ09NUElMRV9URVNUDQorCWhlbHANCisJICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3Ig dGhlIHJlYWwgdGltZSBjbG9jayBidWlsdCBpbiB0aGUgTWVkaWFUZWsNCisJICBTb0NzIGZvciBN VDI3MTIuDQorDQorCSAgVGhpcyBkcml2ZSBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4g SWYgc28sIHRoZSBtb2R1bGUNCisJICB3aWxsIGJlIGNhbGxlZCBydGMtbXQyNzEyLg0KKw0KIGNv bmZpZyBSVENfRFJWX01UNjM5Nw0KIAl0cmlzdGF0ZSAiTWVkaWFUZWsgUE1JQyBiYXNlZCBSVEMi DQogCWRlcGVuZHMgb24gTUZEX01UNjM5NyB8fCAoQ09NUElMRV9URVNUICYmIElSUV9ET01BSU4p DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvTWFrZWZpbGUgYi9kcml2ZXJzL3J0Yy9NYWtlZmls ZQ0KaW5kZXggNGFjOGYxOWZiNjMxLi42YzNlOTNhYTM2ZGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L3J0Yy9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9ydGMvTWFrZWZpbGUNCkBAIC0xMTAsNiArMTEw LDcgQEAgb2JqLSQoQ09ORklHX1JUQ19EUlZfTUVTT04pCSs9IHJ0Yy1tZXNvbi5vDQogb2JqLSQo Q09ORklHX1JUQ19EUlZfTU9YQVJUKQkrPSBydGMtbW94YXJ0Lm8NCiBvYmotJChDT05GSUdfUlRD X0RSVl9NUEM1MTIxKQkrPSBydGMtbXBjNTEyMS5vDQogb2JqLSQoQ09ORklHX1JUQ19EUlZfTVNN NjI0MikJKz0gcnRjLW1zbTYyNDIubw0KK29iai0kKENPTkZJR19SVENfRFJWX01UMjcxMikJKz0g cnRjLW10MjcxMi5vDQogb2JqLSQoQ09ORklHX1JUQ19EUlZfTVQ2Mzk3KQkrPSBydGMtbXQ2Mzk3 Lm8NCiBvYmotJChDT05GSUdfUlRDX0RSVl9NVDc2MjIpCSs9IHJ0Yy1tdDc2MjIubw0KIG9iai0k KENPTkZJR19SVENfRFJWX01WKQkrPSBydGMtbXYubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRj L3J0Yy1tdDI3MTIuYyBiL2RyaXZlcnMvcnRjL3J0Yy1tdDI3MTIuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMmNiOTM5MmExY2RkDQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL3J0Yy9ydGMtbXQyNzEyLmMNCkBAIC0wLDAgKzEsNDIyIEBADQorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAx OSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBSYW4gQmkgPHJhbi5iaUBtZWRpYXRlay5jb20+ DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4NCisjaW5jbHVkZSA8bGludXgvaW8uaD4NCisjaW5jbHVkZSA8bGludXgvaXJxZG9tYWlu Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRy ZXNzLmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcnRjLmg+DQorDQorI2RlZmluZSBNVDI3 MTJfQkJQVQkJMHgwMDAwDQorI2RlZmluZSBNVDI3MTJfQkJQVV9DTFJQS1kJQklUKDQpDQorI2Rl ZmluZSBNVDI3MTJfQkJQVV9SRUxPQUQJQklUKDUpDQorI2RlZmluZSBNVDI3MTJfQkJQVV9DQlVT WQlCSVQoNikNCisjZGVmaW5lIE1UMjcxMl9CQlBVX0tFWQkJKDB4NDMgPDwgOCkNCisNCisjZGVm aW5lIE1UMjcxMl9JUlFfU1RBCQkweDAwMDQNCisjZGVmaW5lIE1UMjcxMl9JUlFfU1RBX0FMCUJJ VCgwKQ0KKyNkZWZpbmUgTVQyNzEyX0lSUV9TVEFfVEMJQklUKDEpDQorDQorI2RlZmluZSBNVDI3 MTJfSVJRX0VOCQkweDAwMDgNCisjZGVmaW5lIE1UMjcxMl9JUlFfRU5fQUwJQklUKDApDQorI2Rl ZmluZSBNVDI3MTJfSVJRX0VOX1RDCUJJVCgxKQ0KKyNkZWZpbmUgTVQyNzEyX0lSUV9FTl9PTkVT SE9UCUJJVCgyKQ0KKw0KKyNkZWZpbmUgTVQyNzEyX0NJSV9FTgkJMHgwMDBjDQorDQorI2RlZmlu ZSBNVDI3MTJfQUxfTUFTSwkJMHgwMDEwDQorI2RlZmluZSBNVDI3MTJfQUxfTUFTS19ET1cJQklU KDQpDQorDQorI2RlZmluZSBNVDI3MTJfVENfU0VDCQkweDAwMTQNCisjZGVmaW5lIE1UMjcxMl9U Q19NSU4JCTB4MDAxOA0KKyNkZWZpbmUgTVQyNzEyX1RDX0hPVQkJMHgwMDFjDQorI2RlZmluZSBN VDI3MTJfVENfRE9NCQkweDAwMjANCisjZGVmaW5lIE1UMjcxMl9UQ19ET1cJCTB4MDAyNA0KKyNk ZWZpbmUgTVQyNzEyX1RDX01USAkJMHgwMDI4DQorI2RlZmluZSBNVDI3MTJfVENfWUVBCQkweDAw MmMNCisNCisjZGVmaW5lIE1UMjcxMl9BTF9TRUMJCTB4MDAzMA0KKyNkZWZpbmUgTVQyNzEyX0FM X01JTgkJMHgwMDM0DQorI2RlZmluZSBNVDI3MTJfQUxfSE9VCQkweDAwMzgNCisjZGVmaW5lIE1U MjcxMl9BTF9ET00JCTB4MDAzYw0KKyNkZWZpbmUgTVQyNzEyX0FMX0RPVwkJMHgwMDQwDQorI2Rl ZmluZSBNVDI3MTJfQUxfTVRICQkweDAwNDQNCisjZGVmaW5lIE1UMjcxMl9BTF9ZRUEJCTB4MDA0 OA0KKw0KKyNkZWZpbmUgTVQyNzEyX1NFQ19NQVNLCQkweDAwM2YNCisjZGVmaW5lIE1UMjcxMl9N SU5fTUFTSwkJMHgwMDNmDQorI2RlZmluZSBNVDI3MTJfSE9VX01BU0sJCTB4MDAxZg0KKyNkZWZp bmUgTVQyNzEyX0RPTV9NQVNLCQkweDAwMWYNCisjZGVmaW5lIE1UMjcxMl9ET1dfTUFTSwkJMHgw MDA3DQorI2RlZmluZSBNVDI3MTJfTVRIX01BU0sJCTB4MDAwZg0KKyNkZWZpbmUgTVQyNzEyX1lF QV9NQVNLCQkweDAwN2YNCisNCisjZGVmaW5lIE1UMjcxMl9QT1dFUktFWTEJMHgwMDRjDQorI2Rl ZmluZSBNVDI3MTJfUE9XRVJLRVkyCTB4MDA1MA0KKyNkZWZpbmUgTVQyNzEyX1BPV0VSS0VZMV9L RVkJMHhhMzU3DQorI2RlZmluZSBNVDI3MTJfUE9XRVJLRVkyX0tFWQkweDY3ZDINCisNCisjZGVm aW5lIE1UMjcxMl9DT04wCQkweDAwNWMNCisjZGVmaW5lIE1UMjcxMl9DT04xCQkweDAwNjANCisN CisjZGVmaW5lIE1UMjcxMl9QUk9UCQkweDAwNzANCisjZGVmaW5lIE1UMjcxMl9QUk9UX1VOTE9D SzEJMHg5MTM2DQorI2RlZmluZSBNVDI3MTJfUFJPVF9VTkxPQ0syCTB4NTg2YQ0KKw0KKyNkZWZp bmUgTVQyNzEyX1dSVEdSCQkweDAwNzgNCisNCisjZGVmaW5lIE1UMjcxMl9SVENfVElNRVNUQU1Q X0VORF8yMTI3CTQ5ODU5NzExOTlMTA0KKw0KK3N0cnVjdCBtdDI3MTJfcnRjIHsNCisJc3RydWN0 IHJ0Y19kZXZpY2UJKnJ0YzsNCisJdm9pZCBfX2lvbWVtCQkqYmFzZTsNCisJaW50CQkJaXJxOw0K Kwl1OAkJCWlycV93YWtlX2VuYWJsZWQ7DQorCXU4CQkJcG93ZXJsb3N0Ow0KK307DQorDQorc3Rh dGljIGlubGluZSB1MzIgbXQyNzEyX3JlYWRsKHN0cnVjdCBtdDI3MTJfcnRjICptdDI3MTJfcnRj LCB1MzIgcmVnKQ0KK3sNCisJcmV0dXJuIHJlYWRsKG10MjcxMl9ydGMtPmJhc2UgKyByZWcpOw0K K30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQgbXQyNzEyX3dyaXRlbChzdHJ1Y3QgbXQyNzEyX3J0 YyAqbXQyNzEyX3J0YywNCisJCQkJIHUzMiByZWcsIHUzMiB2YWwpDQorew0KKwl3cml0ZWwodmFs LCBtdDI3MTJfcnRjLT5iYXNlICsgcmVnKTsNCit9DQorDQorc3RhdGljIHZvaWQgbXQyNzEyX3J0 Y193cml0ZV90cmlnZ2VyKHN0cnVjdCBtdDI3MTJfcnRjICptdDI3MTJfcnRjKQ0KK3sNCisJdW5z aWduZWQgbG9uZyB0aW1lb3V0ID0gamlmZmllcyArIEhaIC8gMTA7DQorDQorCW10MjcxMl93cml0 ZWwobXQyNzEyX3J0YywgTVQyNzEyX1dSVEdSLCAxKTsNCisJd2hpbGUgKDEpIHsNCisJCWlmICgh KG10MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfQkJQVSkNCisJCQkJCSYgTVQyNzEyX0JC UFVfQ0JVU1kpKQ0KKwkJCWJyZWFrOw0KKw0KKwkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGlt ZW91dCkpIHsNCisJCQlkZXZfZXJyKCZtdDI3MTJfcnRjLT5ydGMtPmRldiwNCisJCQkJIiVzIHRp bWUgb3V0IVxuIiwgX19mdW5jX18pOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJY3B1X3JlbGF4KCk7 DQorCX0NCit9DQorDQorc3RhdGljIHZvaWQgbXQyNzEyX3J0Y193cml0ZWlmX3VubG9jayhzdHJ1 Y3QgbXQyNzEyX3J0YyAqbXQyNzEyX3J0YykNCit7DQorCW10MjcxMl93cml0ZWwobXQyNzEyX3J0 YywgTVQyNzEyX1BST1QsIE1UMjcxMl9QUk9UX1VOTE9DSzEpOw0KKwltdDI3MTJfcnRjX3dyaXRl X3RyaWdnZXIobXQyNzEyX3J0Yyk7DQorCW10MjcxMl93cml0ZWwobXQyNzEyX3J0YywgTVQyNzEy X1BST1QsIE1UMjcxMl9QUk9UX1VOTE9DSzIpOw0KKwltdDI3MTJfcnRjX3dyaXRlX3RyaWdnZXIo bXQyNzEyX3J0Yyk7DQorfQ0KKw0KK3N0YXRpYyBpcnFyZXR1cm5fdCBydGNfaXJxX2hhbmRsZXJf dGhyZWFkKGludCBpcnEsIHZvaWQgKmRhdGEpDQorew0KKwlzdHJ1Y3QgbXQyNzEyX3J0YyAqbXQy NzEyX3J0YyA9IGRhdGE7DQorCXUxNiBpcnFzdGE7DQorDQorCS8qIENsZWFyIGludGVycnVwdCAq Lw0KKwlpcnFzdGEgPSBtdDI3MTJfcmVhZGwobXQyNzEyX3J0YywgTVQyNzEyX0lSUV9TVEEpOw0K KwlpZiAoaXJxc3RhICYgTVQyNzEyX0lSUV9TVEFfQUwpIHsNCisJCXJ0Y191cGRhdGVfaXJxKG10 MjcxMl9ydGMtPnJ0YywgMSwgUlRDX0lSUUYgfCBSVENfQUYpOw0KKwkJcmV0dXJuIElSUV9IQU5E TEVEOw0KKwl9DQorDQorCXJldHVybiBJUlFfTk9ORTsNCit9DQorDQorc3RhdGljIHZvaWQgX19t dDI3MTJfcnRjX3JlYWRfdGltZShzdHJ1Y3QgbXQyNzEyX3J0YyAqbXQyNzEyX3J0YywNCisJCQkJ ICAgc3RydWN0IHJ0Y190aW1lICp0bSwgaW50ICpzZWMpDQorew0KKwl0bS0+dG1fc2VjICA9IG10 MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfVENfU0VDKQ0KKwkJCSYgTVQyNzEyX1NFQ19N QVNLOw0KKwl0bS0+dG1fbWluICA9IG10MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfVENf TUlOKQ0KKwkJCSYgTVQyNzEyX01JTl9NQVNLOw0KKwl0bS0+dG1faG91ciA9IG10MjcxMl9yZWFk bChtdDI3MTJfcnRjLCBNVDI3MTJfVENfSE9VKQ0KKwkJCSYgTVQyNzEyX0hPVV9NQVNLOw0KKwl0 bS0+dG1fbWRheSA9IG10MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfVENfRE9NKQ0KKwkJ CSYgTVQyNzEyX0RPTV9NQVNLOw0KKwl0bS0+dG1fbW9uICA9IChtdDI3MTJfcmVhZGwobXQyNzEy X3J0YywgTVQyNzEyX1RDX01USCkgLSAxKQ0KKwkJCSYgTVQyNzEyX01USF9NQVNLOw0KKwl0bS0+ dG1feWVhciA9IChtdDI3MTJfcmVhZGwobXQyNzEyX3J0YywgTVQyNzEyX1RDX1lFQSkgKyAxMDAp DQorCQkJJiBNVDI3MTJfWUVBX01BU0s7DQorDQorCSpzZWMgPSBtdDI3MTJfcmVhZGwobXQyNzEy X3J0YywgTVQyNzEyX1RDX1NFQykgJiBNVDI3MTJfU0VDX01BU0s7DQorfQ0KKw0KK3N0YXRpYyBp bnQgbXQyNzEyX3J0Y19yZWFkX3RpbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcnRjX3Rp bWUgKnRtKQ0KK3sNCisJc3RydWN0IG10MjcxMl9ydGMgKm10MjcxMl9ydGMgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsNCisJaW50IHNlYzsNCisNCisJaWYgKG10MjcxMl9ydGMtPnBvd2VybG9zdCkN CisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlkbyB7DQorCQlfX210MjcxMl9ydGNfcmVhZF90aW1l KG10MjcxMl9ydGMsIHRtLCAmc2VjKTsNCisJfSB3aGlsZSAoc2VjIDwgdG0tPnRtX3NlYyk7CS8q IFNFQyBoYXMgY2FycmllZCAqLw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBt dDI3MTJfcnRjX3NldF90aW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJ0Y190aW1lICp0 bSkNCit7DQorCXN0cnVjdCBtdDI3MTJfcnRjICptdDI3MTJfcnRjID0gZGV2X2dldF9kcnZkYXRh KGRldik7DQorDQorCW10MjcxMl93cml0ZWwobXQyNzEyX3J0YywgTVQyNzEyX1RDX1NFQywgdG0t PnRtX3NlYyAgJiBNVDI3MTJfU0VDX01BU0spOw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9ydGMs IE1UMjcxMl9UQ19NSU4sIHRtLT50bV9taW4gICYgTVQyNzEyX01JTl9NQVNLKTsNCisJbXQyNzEy X3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfVENfSE9VLCB0bS0+dG1faG91ciAmIE1UMjcxMl9I T1VfTUFTSyk7DQorCW10MjcxMl93cml0ZWwobXQyNzEyX3J0YywgTVQyNzEyX1RDX0RPTSwgdG0t PnRtX21kYXkgJiBNVDI3MTJfRE9NX01BU0spOw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9ydGMs IE1UMjcxMl9UQ19NVEgsDQorCQkgICAgICAodG0tPnRtX21vbiArIDEpICYgTVQyNzEyX01USF9N QVNLKTsNCisJbXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfVENfWUVBLA0KKwkJICAg ICAgKHRtLT50bV95ZWFyIC0gMTAwKSAmIE1UMjcxMl9ZRUFfTUFTSyk7DQorDQorCW10MjcxMl9y dGNfd3JpdGVfdHJpZ2dlcihtdDI3MTJfcnRjKTsNCisNCisJaWYgKG10MjcxMl9ydGMtPnBvd2Vy bG9zdCkNCisJCW10MjcxMl9ydGMtPnBvd2VybG9zdCA9IGZhbHNlOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCBtdDI3MTJfcnRjX3JlYWRfYWxhcm0oc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgcnRjX3drYWxybSAqYWxtKQ0KK3sNCisJc3RydWN0IG10MjcxMl9ydGMgKm10 MjcxMl9ydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0IHJ0Y190aW1lICp0bSA9 ICZhbG0tPnRpbWU7DQorCXUxNiBpcnFlbjsNCisNCisJaXJxZW4gPSBtdDI3MTJfcmVhZGwobXQy NzEyX3J0YywgTVQyNzEyX0lSUV9FTik7DQorCWFsbS0+ZW5hYmxlZCA9ICEhKGlycWVuICYgTVQy NzEyX0lSUV9FTl9BTCk7DQorDQorCXRtLT50bV9zZWMgID0gbXQyNzEyX3JlYWRsKG10MjcxMl9y dGMsIE1UMjcxMl9BTF9TRUMpICYgTVQyNzEyX1NFQ19NQVNLOw0KKwl0bS0+dG1fbWluICA9IG10 MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfQUxfTUlOKSAmIE1UMjcxMl9NSU5fTUFTSzsN CisJdG0tPnRtX2hvdXIgPSBtdDI3MTJfcmVhZGwobXQyNzEyX3J0YywgTVQyNzEyX0FMX0hPVSkg JiBNVDI3MTJfSE9VX01BU0s7DQorCXRtLT50bV9tZGF5ID0gbXQyNzEyX3JlYWRsKG10MjcxMl9y dGMsIE1UMjcxMl9BTF9ET00pICYgTVQyNzEyX0RPTV9NQVNLOw0KKwl0bS0+dG1fbW9uICA9ICht dDI3MTJfcmVhZGwobXQyNzEyX3J0YywgTVQyNzEyX0FMX01USCkgLSAxKQ0KKwkJICAgICAgJiBN VDI3MTJfTVRIX01BU0s7DQorCXRtLT50bV95ZWFyID0gKG10MjcxMl9yZWFkbChtdDI3MTJfcnRj LCBNVDI3MTJfQUxfWUVBKSArIDEwMCkNCisJCSAgICAgICYgTVQyNzEyX1lFQV9NQVNLOw0KKw0K KwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdDI3MTJfcnRjX2FsYXJtX2lycV9lbmFi bGUoc3RydWN0IGRldmljZSAqZGV2LA0KKwkJCQkgICAgICAgdW5zaWduZWQgaW50IGVuYWJsZWQp DQorew0KKwlzdHJ1Y3QgbXQyNzEyX3J0YyAqbXQyNzEyX3J0YyA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOw0KKwl1MTYgaXJxZW47DQorDQorCWlycWVuID0gbXQyNzEyX3JlYWRsKG10MjcxMl9ydGMs IE1UMjcxMl9JUlFfRU4pOw0KKwlpZiAoZW5hYmxlZCkNCisJCWlycWVuIHw9IE1UMjcxMl9JUlFf RU5fQUw7DQorCWVsc2UNCisJCWlycWVuICY9IH5NVDI3MTJfSVJRX0VOX0FMOw0KKwltdDI3MTJf d3JpdGVsKG10MjcxMl9ydGMsIE1UMjcxMl9JUlFfRU4sIGlycWVuKTsNCisJbXQyNzEyX3J0Y193 cml0ZV90cmlnZ2VyKG10MjcxMl9ydGMpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGlj IGludCBtdDI3MTJfcnRjX3NldF9hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBydGNf d2thbHJtICphbG0pDQorew0KKwlzdHJ1Y3QgbXQyNzEyX3J0YyAqbXQyNzEyX3J0YyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOw0KKwlzdHJ1Y3QgcnRjX3RpbWUgKnRtID0gJmFsbS0+dGltZTsNCisJ dTE2IGlycWVuOw0KKw0KKwlkZXZfZGJnKCZtdDI3MTJfcnRjLT5ydGMtPmRldiwgInNldCBhbCB0 aW1lOiAlcHRSLCBhbG0gZW46ICVkXG4iLA0KKwkJdG0sIGFsbS0+ZW5hYmxlZCk7DQorDQorCW10 MjcxMl93cml0ZWwobXQyNzEyX3J0YywgTVQyNzEyX0FMX1NFQywNCisJCSAgICAgIChtdDI3MTJf cmVhZGwobXQyNzEyX3J0YywgTVQyNzEyX0FMX1NFQykNCisJCSAgICAgICAmIH4oTVQyNzEyX1NF Q19NQVNLKSkgfCAodG0tPnRtX3NlYyAgJiBNVDI3MTJfU0VDX01BU0spKTsNCisJbXQyNzEyX3dy aXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfQUxfTUlOLA0KKwkJICAgICAgKG10MjcxMl9yZWFkbCht dDI3MTJfcnRjLCBNVDI3MTJfQUxfTUlOKQ0KKwkJICAgICAgICYgfihNVDI3MTJfTUlOX01BU0sp KSB8ICh0bS0+dG1fbWluICAmIE1UMjcxMl9NSU5fTUFTSykpOw0KKwltdDI3MTJfd3JpdGVsKG10 MjcxMl9ydGMsIE1UMjcxMl9BTF9IT1UsDQorCQkgICAgICAobXQyNzEyX3JlYWRsKG10MjcxMl9y dGMsIE1UMjcxMl9BTF9IT1UpDQorCQkgICAgICAgJiB+KE1UMjcxMl9IT1VfTUFTSykpIHwgKHRt LT50bV9ob3VyICYgTVQyNzEyX0hPVV9NQVNLKSk7DQorCW10MjcxMl93cml0ZWwobXQyNzEyX3J0 YywgTVQyNzEyX0FMX0RPTSwNCisJCSAgICAgIChtdDI3MTJfcmVhZGwobXQyNzEyX3J0YywgTVQy NzEyX0FMX0RPTSkNCisJCSAgICAgICAmIH4oTVQyNzEyX0RPTV9NQVNLKSkgfCAodG0tPnRtX21k YXkgJiBNVDI3MTJfRE9NX01BU0spKTsNCisJbXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3 MTJfQUxfTVRILA0KKwkJICAgICAgKG10MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfQUxf TVRIKQ0KKwkJICAgICAgICYgfihNVDI3MTJfTVRIX01BU0spKQ0KKwkJICAgICAgfCAoKHRtLT50 bV9tb24gKyAxKSAmIE1UMjcxMl9NVEhfTUFTSykpOw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9y dGMsIE1UMjcxMl9BTF9ZRUEsDQorCQkgICAgICAobXQyNzEyX3JlYWRsKG10MjcxMl9ydGMsIE1U MjcxMl9BTF9ZRUEpDQorCQkgICAgICAgJiB+KE1UMjcxMl9ZRUFfTUFTSykpDQorCQkgICAgICB8 ICgodG0tPnRtX3llYXIgLSAxMDApICYgTVQyNzEyX1lFQV9NQVNLKSk7DQorDQorCS8qIG1hc2sg ZGF5IG9mIHdlZWsgKi8NCisJbXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfQUxfTUFT SywgTVQyNzEyX0FMX01BU0tfRE9XKTsNCisJbXQyNzEyX3J0Y193cml0ZV90cmlnZ2VyKG10Mjcx Ml9ydGMpOw0KKw0KKwltdDI3MTJfcnRjX2FsYXJtX2lycV9lbmFibGUoZGV2LCBhbG0tPmVuYWJs ZWQpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogSW5pdCBSVEMgcmVnaXN0ZXIgKi8NCitz dGF0aWMgdm9pZCBtdDI3MTJfcnRjX2h3X2luaXQoc3RydWN0IG10MjcxMl9ydGMgKm10MjcxMl9y dGMpDQorew0KKwl1MzIgcDEsIHAyOw0KKw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9ydGMsIE1U MjcxMl9CQlBVLA0KKwkJICAgICAgTVQyNzEyX0JCUFVfS0VZIHwgTVQyNzEyX0JCUFVfUkVMT0FE KTsNCisNCisJbXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfQ0lJX0VOLCAwKTsNCisJ bXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBNVDI3MTJfQUxfTUFTSywgMCk7DQorCS8qIG5lY2Vz c2FyeSBiZWZvcmUgc2V0IE1UMjcxMl9QT1dFUktFWSAqLw0KKwltdDI3MTJfd3JpdGVsKG10Mjcx Ml9ydGMsIE1UMjcxMl9DT04wLCAweDQ4NDgpOw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9ydGMs IE1UMjcxMl9DT04xLCAweDAwNDgpOw0KKw0KKwltdDI3MTJfcnRjX3dyaXRlX3RyaWdnZXIobXQy NzEyX3J0Yyk7DQorDQorCXAxID0gbXQyNzEyX3JlYWRsKG10MjcxMl9ydGMsIE1UMjcxMl9QT1dF UktFWTEpOw0KKwlwMiA9IG10MjcxMl9yZWFkbChtdDI3MTJfcnRjLCBNVDI3MTJfUE9XRVJLRVky KTsNCisJaWYgKHAxICE9IE1UMjcxMl9QT1dFUktFWTFfS0VZIHx8IHAyICE9IE1UMjcxMl9QT1dF UktFWTJfS0VZKSB7DQorCQltdDI3MTJfcnRjLT5wb3dlcmxvc3QgPSB0cnVlOw0KKwkJZGV2X2Ri ZygmbXQyNzEyX3J0Yy0+cnRjLT5kZXYsDQorCQkJInBvd2Vya2V5IG5vdCBzZXQgKGxvc3QgcG93 ZXIpXG4iKTsNCisJfSBlbHNlIHsNCisJCW10MjcxMl9ydGMtPnBvd2VybG9zdCA9IGZhbHNlOw0K Kwl9DQorDQorCS8qIFJUQyBuZWVkIFBPV0VSS0VZMS8yIG1hdGNoLCB0aGVuIGdvdG8gbm9ybWFs IHdvcmsgbW9kZSAqLw0KKwltdDI3MTJfd3JpdGVsKG10MjcxMl9ydGMsIE1UMjcxMl9QT1dFUktF WTEsIE1UMjcxMl9QT1dFUktFWTFfS0VZKTsNCisJbXQyNzEyX3dyaXRlbChtdDI3MTJfcnRjLCBN VDI3MTJfUE9XRVJLRVkyLCBNVDI3MTJfUE9XRVJLRVkyX0tFWSk7DQorCW10MjcxMl9ydGNfd3Jp dGVfdHJpZ2dlcihtdDI3MTJfcnRjKTsNCisNCisJbXQyNzEyX3J0Y193cml0ZWlmX3VubG9jayht dDI3MTJfcnRjKTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBydGNfY2xhc3Nfb3BzIG10 MjcxMl9ydGNfb3BzID0gew0KKwkucmVhZF90aW1lCT0gbXQyNzEyX3J0Y19yZWFkX3RpbWUsDQor CS5zZXRfdGltZQk9IG10MjcxMl9ydGNfc2V0X3RpbWUsDQorCS5yZWFkX2FsYXJtCT0gbXQyNzEy X3J0Y19yZWFkX2FsYXJtLA0KKwkuc2V0X2FsYXJtCT0gbXQyNzEyX3J0Y19zZXRfYWxhcm0sDQor CS5hbGFybV9pcnFfZW5hYmxlID0gbXQyNzEyX3J0Y19hbGFybV9pcnFfZW5hYmxlLA0KK307DQor DQorc3RhdGljIGludCBtdDI3MTJfcnRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQorew0KKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCisJc3RydWN0IG10MjcxMl9ydGMgKm10 MjcxMl9ydGM7DQorCWludCByZXQ7DQorDQorCW10MjcxMl9ydGMgPSBkZXZtX2t6YWxsb2MoJnBk ZXYtPmRldiwNCisJCQkJICBzaXplb2Yoc3RydWN0IG10MjcxMl9ydGMpLCBHRlBfS0VSTkVMKTsN CisJaWYgKCFtdDI3MTJfcnRjKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCXJlcyA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQorCW10MjcxMl9ydGMt PmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCisJaWYgKElT X0VSUihtdDI3MTJfcnRjLT5iYXNlKSkNCisJCXJldHVybiBQVFJfRVJSKG10MjcxMl9ydGMtPmJh c2UpOw0KKw0KKwkvKiBydGMgaHcgaW5pdCAqLw0KKwltdDI3MTJfcnRjX2h3X2luaXQobXQyNzEy X3J0Yyk7DQorDQorCW10MjcxMl9ydGMtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7 DQorCWlmIChtdDI3MTJfcnRjLT5pcnEgPCAwKSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJO byBJUlEgcmVzb3VyY2VcbiIpOw0KKwkJcmV0dXJuIG10MjcxMl9ydGMtPmlycTsNCisJfQ0KKw0K KwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBtdDI3MTJfcnRjKTsNCisNCisJbXQyNzEyX3J0 Yy0+cnRjID0gZGV2bV9ydGNfYWxsb2NhdGVfZGV2aWNlKCZwZGV2LT5kZXYpOw0KKwlpZiAoSVNf RVJSKG10MjcxMl9ydGMtPnJ0YykpDQorCQlyZXR1cm4gUFRSX0VSUihtdDI3MTJfcnRjLT5ydGMp Ow0KKw0KKwlyZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZwZGV2LT5kZXYsIG10Mjcx Ml9ydGMtPmlycSwgTlVMTCwNCisJCQkJCXJ0Y19pcnFfaGFuZGxlcl90aHJlYWQsDQorCQkJCQlJ UlFGX09ORVNIT1QgfCBJUlFGX1RSSUdHRVJfTE9XLA0KKwkJCQkJZGV2X25hbWUoJm10MjcxMl9y dGMtPnJ0Yy0+ZGV2KSwNCisJCQkJCW10MjcxMl9ydGMpOw0KKwlpZiAocmV0KSB7DQorCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBhbGFybSBJUlE6ICVkOiAlZFxuIiwN CisJCQltdDI3MTJfcnRjLT5pcnEsIHJldCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCWRl dmljZV9pbml0X3dha2V1cCgmcGRldi0+ZGV2LCB0cnVlKTsNCisNCisJbXQyNzEyX3J0Yy0+cnRj LT5vcHMgPSAmbXQyNzEyX3J0Y19vcHM7DQorCW10MjcxMl9ydGMtPnJ0Yy0+cmFuZ2VfbWluID0g UlRDX1RJTUVTVEFNUF9CRUdJTl8yMDAwOw0KKwltdDI3MTJfcnRjLT5ydGMtPnJhbmdlX21heCA9 IE1UMjcxMl9SVENfVElNRVNUQU1QX0VORF8yMTI3Ow0KKw0KKwlyZXQgPSBydGNfcmVnaXN0ZXJf ZGV2aWNlKG10MjcxMl9ydGMtPnJ0Yyk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoJnBkZXYt PmRldiwgInJlZ2lzdGVyIHJ0YyBkZXZpY2UgZmFpbGVkXG4iKTsNCisJCXJldHVybiByZXQ7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KKyNpZmRlZiBDT05GSUdfUE1fU0xFRVANCitzdGF0 aWMgaW50IG10MjcxMl9ydGNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQorew0KKwlpbnQg d2FrZV9zdGF0dXMgPSAwOw0KKwlzdHJ1Y3QgbXQyNzEyX3J0YyAqbXQyNzEyX3J0YyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOw0KKw0KKwlpZiAoZGV2aWNlX21heV93YWtldXAoZGV2KSkgew0KKwkJ d2FrZV9zdGF0dXMgPSBlbmFibGVfaXJxX3dha2UobXQyNzEyX3J0Yy0+aXJxKTsNCisJCWlmICgh d2FrZV9zdGF0dXMpDQorCQkJbXQyNzEyX3J0Yy0+aXJxX3dha2VfZW5hYmxlZCA9IHRydWU7DQor CX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQyNzEyX3J0Y19yZXN1bWUo c3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJaW50IHdha2Vfc3RhdHVzID0gMDsNCisJc3RydWN0 IG10MjcxMl9ydGMgKm10MjcxMl9ydGMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisNCisJaWYg KGRldmljZV9tYXlfd2FrZXVwKGRldikgJiYgbXQyNzEyX3J0Yy0+aXJxX3dha2VfZW5hYmxlZCkg ew0KKwkJd2FrZV9zdGF0dXMgPSBkaXNhYmxlX2lycV93YWtlKG10MjcxMl9ydGMtPmlycSk7DQor CQlpZiAoIXdha2Vfc3RhdHVzKQ0KKwkJCW10MjcxMl9ydGMtPmlycV93YWtlX2VuYWJsZWQgPSBm YWxzZTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIFNJTVBMRV9ERVZfUE1f T1BTKG10MjcxMl9wbV9vcHMsIG10MjcxMl9ydGNfc3VzcGVuZCwNCisJCQkgbXQyNzEyX3J0Y19y ZXN1bWUpOw0KKyNlbmRpZg0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10 MjcxMl9ydGNfb2ZfbWF0Y2hbXSA9IHsNCisJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDI3 MTItcnRjIiwgfSwNCisJeyB9LA0KK307DQorDQorTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQy NzEyX3J0Y19vZl9tYXRjaCkNCisNCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDI3 MTJfcnRjX2RyaXZlciA9IHsNCisJLmRyaXZlciA9IHsNCisJCS5uYW1lID0gIm10MjcxMi1ydGMi LA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbXQyNzEyX3J0Y19vZl9tYXRjaCwNCisJCS5wbSA9ICZt dDI3MTJfcG1fb3BzLA0KKwl9LA0KKwkucHJvYmUgID0gbXQyNzEyX3J0Y19wcm9iZSwNCit9Ow0K Kw0KK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXQyNzEyX3J0Y19kcml2ZXIpOw0KKw0KK01PRFVM RV9ERVNDUklQVElPTigiTWVkaWFUZWsgTVQyNzEyIFNvQyBiYXNlZCBSVEMgRHJpdmVyIik7DQor TU9EVUxFX0FVVEhPUigiUmFuIEJpIDxyYW4uYmlAbWVkaWF0ZWsuY29tPiIpOw0KK01PRFVMRV9M SUNFTlNFKCJHUEwiKTsNCi0tIA0KMi4yNS4wDQo=