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=-11.1 required=3.0 tests=BAYES_00,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,URIBL_BLOCKED,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 30E0AC2D0A3 for ; Mon, 26 Oct 2020 08:19:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C9D2A20878 for ; Mon, 26 Oct 2020 08:19:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="ovn6pY5E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1771250AbgJZITV (ORCPT ); Mon, 26 Oct 2020 04:19:21 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:54768 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1736795AbgJZITU (ORCPT ); Mon, 26 Oct 2020 04:19:20 -0400 X-UUID: 9c217e4e00ed4016bac869981d3b571c-20201026 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=s89f08KvBYl1d0htgXzsoi2iHSJgKoDYNXWWA86n02U=; b=ovn6pY5E+F82H1yQbNWyr8o2VmqfzwIx3CU48BW9rbg3XC/GxG56ith9s1UJI1RU3myCJYrusWgJvFE40+PzRC9r499Wnq/+g8Vvi35C9saIltpdIfV1sIyMDsE05ndGHLBdgHer92liH9bYFsLOIPdB9KjzHq27zV6bIcRgVjU=; X-UUID: 9c217e4e00ed4016bac869981d3b571c-20201026 Received: from mtkcas11.mediatek.inc [(172.21.101.40)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1006871668; Mon, 26 Oct 2020 16:19:15 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 26 Oct 2020 16:19:14 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 26 Oct 2020 16:19:13 +0800 From: Hector Yuan To: , , , Rob Herring , Sudeep Holla , "Rafael J. Wysocki" , Viresh Kumar , Maxime Ripard , Santosh Shilimkar , Amit Kucheria , Stephen Boyd , Ulf Hansson , Dave Gerlach , Florian Fainelli , Robin Murphy , Lorenzo Pieralisi , CC: , , Subject: [PATCH v8 1/3] cpufreq: mediatek-hw: Add support for CPUFREQ HW Date: Mon, 26 Oct 2020 16:19:07 +0800 Message-ID: <1603700349-5922-2-git-send-email-hector.yuan@mediatek.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1603700349-5922-1-git-send-email-hector.yuan@mediatek.com> References: <1603700349-5922-1-git-send-email-hector.yuan@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogIkhlY3Rvci5ZdWFuIiA8aGVjdG9yLnl1YW5AbWVkaWF0ZWsuY29tPg0KDQpBZGQgY3B1 ZnJlcSBIVyBzdXBwb3J0Lg0KDQpTaWduZWQtb2ZmLWJ5OiBIZWN0b3IuWXVhbiA8aGVjdG9yLnl1 YW5AbWVkaWF0ZWsuY29tPg0KLS0tDQogZHJpdmVycy9jcHVmcmVxL0tjb25maWcuYXJtICAgICAg ICAgICB8ICAgMTIgKysNCiBkcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUgICAgICAgICAgICAgIHwg ICAgMSArDQogZHJpdmVycy9jcHVmcmVxL21lZGlhdGVrLWNwdWZyZXEtaHcuYyB8ICAzNDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBmaWxlcyBjaGFuZ2VkLCAzNTYgaW5z ZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2NwdWZyZXEvbWVkaWF0ZWst Y3B1ZnJlcS1ody5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0g Yi9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0NCmluZGV4IGNiNzJmYjUuLmI5ZDE3YzUgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0NCisrKyBiL2RyaXZlcnMvY3B1 ZnJlcS9LY29uZmlnLmFybQ0KQEAgLTEyMyw2ICsxMjMsMTggQEAgY29uZmlnIEFSTV9NRURJQVRF S19DUFVGUkVRDQogCWhlbHANCiAJICBUaGlzIGFkZHMgdGhlIENQVUZyZXEgZHJpdmVyIHN1cHBv cnQgZm9yIE1lZGlhVGVrIFNvQ3MuDQogDQorY29uZmlnIEFSTV9NRURJQVRFS19DUFVGUkVRX0hX DQorCXRyaXN0YXRlICJNZWRpYVRlayBDUFVGcmVxIEhXIGRyaXZlciINCisJZGVwZW5kcyBvbiBB UkNIX01FRElBVEVLIHx8IENPTVBJTEVfVEVTVA0KKwlkZWZhdWx0IG0NCisJaGVscA0KKwkgIFN1 cHBvcnQgZm9yIHRoZSBDUFVGcmVxIEhXIGRyaXZlci4NCisJICBTb21lIE1lZGlhVGVrIGNoaXBz ZXRzIGhhdmUgYSBIVyBlbmdpbmUgdG8gb2ZmbG9hZCB0aGUgc3RlcHMNCisJICBuZWNlc3Nhcnkg Zm9yIGNoYW5naW5nIHRoZSBmcmVxdWVuY3kgb2YgdGhlIENQVXMuIEZpcm13YXJlIGxvYWRlZA0K KwkgIGluIHRoaXMgZW5naW5lIGV4cG9zZXMgYSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdGhl IE9TLg0KKwkgIFRoZSBkcml2ZXIgaW1wbGVtZW50cyB0aGUgY3B1ZnJlcSBpbnRlcmZhY2UgZm9y IHRoaXMgSFcgZW5naW5lLg0KKwkgIFNheSBZIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgQ1BVRnJl cSBIVy4NCisNCiBjb25maWcgQVJNX09NQVAyUExVU19DUFVGUkVRDQogCWJvb2wgIlRJIE9NQVAy KyINCiAJZGVwZW5kcyBvbiBBUkNIX09NQVAyUExVUw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1 ZnJlcS9NYWtlZmlsZSBiL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQ0KaW5kZXggZjFiN2UzZC4u ZmZjNjFjZCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQ0KKysrIGIvZHJp dmVycy9jcHVmcmVxL01ha2VmaWxlDQpAQCAtNTcsNiArNTcsNyBAQCBvYmotJChDT05GSUdfQVJN X0lNWDZRX0NQVUZSRVEpCQkrPSBpbXg2cS1jcHVmcmVxLm8NCiBvYmotJChDT05GSUdfQVJNX0lN WF9DUFVGUkVRX0RUKQkrPSBpbXgtY3B1ZnJlcS1kdC5vDQogb2JqLSQoQ09ORklHX0FSTV9LSVJL V09PRF9DUFVGUkVRKQkrPSBraXJrd29vZC1jcHVmcmVxLm8NCiBvYmotJChDT05GSUdfQVJNX01F RElBVEVLX0NQVUZSRVEpCSs9IG1lZGlhdGVrLWNwdWZyZXEubw0KK29iai0kKENPTkZJR19BUk1f TUVESUFURUtfQ1BVRlJFUV9IVykJKz0gbWVkaWF0ZWstY3B1ZnJlcS1ody5vDQogb2JqLSQoQ09O RklHX01BQ0hfTVZFQlVfVjcpCQkrPSBtdmVidS1jcHVmcmVxLm8NCiBvYmotJChDT05GSUdfQVJN X09NQVAyUExVU19DUFVGUkVRKQkrPSBvbWFwLWNwdWZyZXEubw0KIG9iai0kKENPTkZJR19BUk1f UFhBMnh4X0NQVUZSRVEpCSs9IHB4YTJ4eC1jcHVmcmVxLm8NCmRpZmYgLS1naXQgYS9kcml2ZXJz L2NwdWZyZXEvbWVkaWF0ZWstY3B1ZnJlcS1ody5jIGIvZHJpdmVycy9jcHVmcmVxL21lZGlhdGVr LWNwdWZyZXEtaHcuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjNhZjM2 YjANCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9tZWRpYXRlay1jcHVmcmVx LWh3LmMNCkBAIC0wLDAgKzEsMzQzIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjANCisvKg0KKyAqIENvcHlyaWdodCAoYykgMjAyMCBNZWRpYVRlayBJbmMuDQorICovDQor DQorI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+DQorI2luY2x1ZGUgPGxpbnV4L2NwdWZyZXEu aD4NCisjaW5jbHVkZSA8bGludXgvZW5lcmd5X21vZGVsLmg+DQorI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4NCisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+DQorI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfYWRk cmVzcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KKyNpbmNsdWRlIDxsaW51 eC9wbV9xb3MuaD4NCisjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KKw0KKyNkZWZpbmUgTFVUX01B WF9FTlRSSUVTCQkJMzJVDQorI2RlZmluZSBMVVRfRlJFUQkJCUdFTk1BU0soMTEsIDApDQorI2Rl ZmluZSBMVVRfUk9XX1NJWkUJCQkweDQNCisjZGVmaW5lIENQVUZSRVFfSFdfU1RBVFVTCQlCSVQo MCkNCisjZGVmaW5lIFNWU19IV19TVEFUVVMJCQlCSVQoMSkNCisjZGVmaW5lIFBPTExfVVNFQwkJ CTEwMDANCisjZGVmaW5lIFRJTUVPVVRfVVNFQwkJCTMwMDAwMA0KKw0KK2VudW0gew0KKwlSRUdf RlJFUV9MVVRfVEFCTEUsDQorCVJFR19GUkVRX0VOQUJMRSwNCisJUkVHX0ZSRVFfUEVSRl9TVEFU RSwNCisJUkVHX0ZSRVFfSFdfU1RBVEUsDQorCVJFR19FTV9QT1dFUl9UQkwsDQorDQorCVJFR19B UlJBWV9TSVpFLA0KK307DQorDQorc3RydWN0IGNwdWZyZXFfbXRrIHsNCisJc3RydWN0IGNwdWZy ZXFfZnJlcXVlbmN5X3RhYmxlICp0YWJsZTsNCisJdm9pZCBfX2lvbWVtICpyZWdfYmFzZXNbUkVH X0FSUkFZX1NJWkVdOw0KKwlpbnQgbnJfb3BwOw0KKwljcHVtYXNrX3QgcmVsYXRlZF9jcHVzOw0K K307DQorDQorc3RhdGljIGNvbnN0IHUxNiBjcHVmcmVxX210a19vZmZzZXRzW1JFR19BUlJBWV9T SVpFXSA9IHsNCisJW1JFR19GUkVRX0xVVF9UQUJMRV0JPSAweDAsDQorCVtSRUdfRlJFUV9FTkFC TEVdCT0gMHg4NCwNCisJW1JFR19GUkVRX1BFUkZfU1RBVEVdCT0gMHg4OCwNCisJW1JFR19GUkVR X0hXX1NUQVRFXQk9IDB4OGMsDQorCVtSRUdfRU1fUE9XRVJfVEJMXQk9IDB4M0QwLA0KK307DQor DQorc3RhdGljIHN0cnVjdCBjcHVmcmVxX210ayAqbXRrX2ZyZXFfZG9tYWluX21hcFtOUl9DUFVT XTsNCisNCitzdGF0aWMgaW50IG10a19jcHVmcmVxX2dldF9jcHVfcG93ZXIodW5zaWduZWQgbG9u ZyAqbVcsDQorCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqS0h6LCBzdHJ1Y3QgZGV2aWNlICpjcHVf ZGV2KQ0KK3sNCisJc3RydWN0IGNwdWZyZXFfbXRrICpjID0gbXRrX2ZyZXFfZG9tYWluX21hcFtj cHVfZGV2LT5pZF07DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgYy0+bnJfb3BwOyBp KyspIHsNCisJCWlmIChjLT50YWJsZVtpXS5mcmVxdWVuY3kgPCAqS0h6KQ0KKwkJCWJyZWFrOw0K Kwl9DQorCWktLTsNCisNCisJKktIeiA9IGMtPnRhYmxlW2ldLmZyZXF1ZW5jeTsNCisJKm1XID0g cmVhZGxfcmVsYXhlZChjLT5yZWdfYmFzZXNbUkVHX0VNX1BPV0VSX1RCTF0gKw0KKwkJCSAgICBp ICogTFVUX1JPV19TSVpFKSAvIDEwMDA7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg aW50IG10a19jcHVmcmVxX2h3X3RhcmdldF9pbmRleChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBv bGljeSwNCisJCQkJICAgICAgIHVuc2lnbmVkIGludCBpbmRleCkNCit7DQorCXN0cnVjdCBjcHVm cmVxX210ayAqYyA9IHBvbGljeS0+ZHJpdmVyX2RhdGE7DQorDQorCXdyaXRlbF9yZWxheGVkKGlu ZGV4LCBjLT5yZWdfYmFzZXNbUkVHX0ZSRVFfUEVSRl9TVEFURV0pOw0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIHVuc2lnbmVkIGludCBtdGtfY3B1ZnJlcV9od19nZXQodW5zaWduZWQg aW50IGNwdSkNCit7DQorCXN0cnVjdCBjcHVmcmVxX210ayAqYzsNCisJdW5zaWduZWQgaW50IGlu ZGV4Ow0KKw0KKwljID0gbXRrX2ZyZXFfZG9tYWluX21hcFtjcHVdOw0KKw0KKwlpbmRleCA9IHJl YWRsX3JlbGF4ZWQoYy0+cmVnX2Jhc2VzW1JFR19GUkVRX1BFUkZfU1RBVEVdKTsNCisJaW5kZXgg PSBtaW4oaW5kZXgsIExVVF9NQVhfRU5UUklFUyAtIDEpOw0KKw0KKwlyZXR1cm4gYy0+dGFibGVb aW5kZXhdLmZyZXF1ZW5jeTsNCit9DQorDQorc3RhdGljIGludCBtdGtfY3B1ZnJlcV9od19jcHVf aW5pdChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkNCit7DQorCXN0cnVjdCBjcHVmcmVx X210ayAqYzsNCisJc3RydWN0IGRldmljZSAqY3B1X2RldjsNCisJc3RydWN0IGVtX2RhdGFfY2Fs bGJhY2sgZW1fY2IgPSBFTV9EQVRBX0NCKG10a19jcHVmcmVxX2dldF9jcHVfcG93ZXIpOw0KKwlz dHJ1Y3QgcG1fcW9zX3JlcXVlc3QgKnFvc19yZXF1ZXN0Ow0KKwlpbnQgc2lnLCBwd3JfaHcgPSBD UFVGUkVRX0hXX1NUQVRVUyB8IFNWU19IV19TVEFUVVM7DQorDQorCXFvc19yZXF1ZXN0ID0ga3ph bGxvYyhzaXplb2YoKnFvc19yZXF1ZXN0KSwgR0ZQX0tFUk5FTCk7DQorCWlmICghcW9zX3JlcXVl c3QpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJY3B1X2RldiA9IGdldF9jcHVfZGV2aWNlKHBv bGljeS0+Y3B1KTsNCisJaWYgKCFjcHVfZGV2KSB7DQorCQlwcl9lcnIoImZhaWxlZCB0byBnZXQg Y3B1JWQgZGV2aWNlXG4iLCBwb2xpY3ktPmNwdSk7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0K Kw0KKwljID0gbXRrX2ZyZXFfZG9tYWluX21hcFtwb2xpY3ktPmNwdV07DQorCWlmICghYykgew0K KwkJcHJfZXJyKCJObyBzY2FsaW5nIHN1cHBvcnQgZm9yIENQVSVkXG4iLCBwb2xpY3ktPmNwdSk7 DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwljcHVtYXNrX2NvcHkocG9saWN5LT5jcHVz LCAmYy0+cmVsYXRlZF9jcHVzKTsNCisNCisJcG9saWN5LT5mcmVxX3RhYmxlID0gYy0+dGFibGU7 DQorCXBvbGljeS0+ZHJpdmVyX2RhdGEgPSBjOw0KKw0KKwkvKiBMZXQgQ1BVcyBsZWF2ZSBpZGxl LW9mZiBzdGF0ZSBmb3IgU1ZTIENQVSBpbml0aWFsaXppbmcgKi8NCisJY3B1X2xhdGVuY3lfcW9z X2FkZF9yZXF1ZXN0KHFvc19yZXF1ZXN0LCAwKTsNCisNCisJLyogSFcgc2hvdWxkIGJlIGluIGVu YWJsZWQgc3RhdGUgdG8gcHJvY2VlZCBub3cgKi8NCisJd3JpdGVsX3JlbGF4ZWQoMHgxLCBjLT5y ZWdfYmFzZXNbUkVHX0ZSRVFfRU5BQkxFXSk7DQorDQorCWlmIChyZWFkbF9wb2xsX3RpbWVvdXQo Yy0+cmVnX2Jhc2VzW1JFR19GUkVRX0hXX1NUQVRFXSwgc2lnLA0KKwkJCSAgICAgICAoc2lnICYg cHdyX2h3KSA9PSBwd3JfaHcsIFBPTExfVVNFQywNCisJCQkgICAgICAgVElNRU9VVF9VU0VDKSkg ew0KKwkJaWYgKCEoc2lnICYgQ1BVRlJFUV9IV19TVEFUVVMpKSB7DQorCQkJcHJfaW5mbygiY3B1 ZnJlcSBoYXJkd2FyZSBvZiBDUFUlZCBpcyBub3QgZW5hYmxlZFxuIiwNCisJCQkJcG9saWN5LT5j cHUpOw0KKwkJCXJldHVybiAtRU5PREVWOw0KKwkJfQ0KKw0KKwkJcHJfaW5mbygiU1ZTIG9mIENQ VSVkIGlzIG5vdCBlbmFibGVkXG4iLCBwb2xpY3ktPmNwdSk7DQorCX0NCisNCisJZW1fZGV2X3Jl Z2lzdGVyX3BlcmZfZG9tYWluKGNwdV9kZXYsIGMtPm5yX29wcCwgJmVtX2NiLCBwb2xpY3ktPmNw dXMpOw0KKw0KKwljcHVfbGF0ZW5jeV9xb3NfcmVtb3ZlX3JlcXVlc3QocW9zX3JlcXVlc3QpOw0K KwlrZnJlZShxb3NfcmVxdWVzdCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50 IG10a19jcHVmcmVxX2h3X2NwdV9leGl0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQ0K K3sNCisJc3RydWN0IGNwdWZyZXFfbXRrICpjOw0KKw0KKwljID0gbXRrX2ZyZXFfZG9tYWluX21h cFtwb2xpY3ktPmNwdV07DQorCWlmICghYykgew0KKwkJcHJfZXJyKCJObyBzY2FsaW5nIHN1cHBv cnQgZm9yIENQVSVkXG4iLCBwb2xpY3ktPmNwdSk7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0K Kw0KKwkvKiBIVyBzaG91bGQgYmUgaW4gcGF1c2VkIHN0YXRlIG5vdyAqLw0KKwl3cml0ZWxfcmVs YXhlZCgweDAsIGMtPnJlZ19iYXNlc1tSRUdfRlJFUV9FTkFCTEVdKTsNCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9kcml2ZXIgY3B1ZnJlcV9tdGtfaHdfZHJp dmVyID0gew0KKwkuZmxhZ3MJCT0gQ1BVRlJFUV9TVElDS1kgfCBDUFVGUkVRX05FRURfSU5JVElB TF9GUkVRX0NIRUNLIHwNCisJCQkgIENQVUZSRVFfSEFWRV9HT1ZFUk5PUl9QRVJfUE9MSUNZIHwN CisJCQkgIENQVUZSRVFfSVNfQ09PTElOR19ERVYsDQorCS52ZXJpZnkJCT0gY3B1ZnJlcV9nZW5l cmljX2ZyZXF1ZW5jeV90YWJsZV92ZXJpZnksDQorCS50YXJnZXRfaW5kZXgJPSBtdGtfY3B1ZnJl cV9od190YXJnZXRfaW5kZXgsDQorCS5nZXQJCT0gbXRrX2NwdWZyZXFfaHdfZ2V0LA0KKwkuaW5p dAkJPSBtdGtfY3B1ZnJlcV9od19jcHVfaW5pdCwNCisJLmV4aXQJCT0gbXRrX2NwdWZyZXFfaHdf Y3B1X2V4aXQsDQorCS5uYW1lCQk9ICJtdGstY3B1ZnJlcS1odyIsDQorCS5hdHRyCQk9IGNwdWZy ZXFfZ2VuZXJpY19hdHRyLA0KK307DQorDQorc3RhdGljIGludCBtdGtfY3B1X2NyZWF0ZV9mcmVx X3RhYmxlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQorCQkJCSAgICAgc3RydWN0IGNw dWZyZXFfbXRrICpjKQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCisJ dm9pZCBfX2lvbWVtICpiYXNlX3RhYmxlOw0KKwl1MzIgZGF0YSwgaSwgZnJlcSwgcHJldl9mcmVx ID0gMDsNCisNCisJYy0+dGFibGUgPSBkZXZtX2tjYWxsb2MoZGV2LCBMVVRfTUFYX0VOVFJJRVMg KyAxLA0KKwkJCQlzaXplb2YoKmMtPnRhYmxlKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghYy0+dGFi bGUpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJYmFzZV90YWJsZSA9IGMtPnJlZ19iYXNlc1tS RUdfRlJFUV9MVVRfVEFCTEVdOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTFVUX01BWF9FTlRSSUVT OyBpKyspIHsNCisJCWRhdGEgPSByZWFkbF9yZWxheGVkKGJhc2VfdGFibGUgKyAoaSAqIExVVF9S T1dfU0laRSkpOw0KKwkJZnJlcSA9IEZJRUxEX0dFVChMVVRfRlJFUSwgZGF0YSkgKiAxMDAwOw0K Kw0KKwkJaWYgKGZyZXEgPT0gcHJldl9mcmVxKQ0KKwkJCWJyZWFrOw0KKw0KKwkJYy0+dGFibGVb aV0uZnJlcXVlbmN5ID0gZnJlcTsNCisNCisJCWRldl9kYmcoZGV2LCAiaW5kZXg9JWQgZnJlcT0l ZFxuIiwNCisJCQlpLCBjLT50YWJsZVtpXS5mcmVxdWVuY3kpOw0KKw0KKwkJcHJldl9mcmVxID0g ZnJlcTsNCisJfQ0KKw0KKwljLT50YWJsZVtpXS5mcmVxdWVuY3kgPSBDUFVGUkVRX1RBQkxFX0VO RDsNCisJYy0+bnJfb3BwID0gaTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQg bXRrX2dldF9yZWxhdGVkX2NwdXMoaW50IGluZGV4LCBzdHJ1Y3QgY3B1ZnJlcV9tdGsgKmMpDQor ew0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNwdV9ucDsNCisJc3RydWN0IG9mX3BoYW5kbGVfYXJn cyBhcmdzOw0KKwlpbnQgY3B1LCByZXQ7DQorDQorCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUp IHsNCisJCWNwdV9ucCA9IG9mX2NwdV9kZXZpY2Vfbm9kZV9nZXQoY3B1KTsNCisJCWlmICghY3B1 X25wKQ0KKwkJCWNvbnRpbnVlOw0KKw0KKwkJcmV0ID0gb2ZfcGFyc2VfcGhhbmRsZV93aXRoX2Fy Z3MoY3B1X25wLCAibWVkaWF0ZWssZnJlcS1kb21haW4iLA0KKwkJCQkJCSAiI2ZyZXEtZG9tYWlu LWNlbGxzIiwgMCwNCisJCQkJCQkgJmFyZ3MpOw0KKwkJb2Zfbm9kZV9wdXQoY3B1X25wKTsNCisJ CWlmIChyZXQgPCAwKQ0KKwkJCWNvbnRpbnVlOw0KKw0KKwkJaWYgKGluZGV4ID09IGFyZ3MuYXJn c1swXSkgew0KKwkJCWNwdW1hc2tfc2V0X2NwdShjcHUsICZjLT5yZWxhdGVkX2NwdXMpOw0KKwkJ CW10a19mcmVxX2RvbWFpbl9tYXBbY3B1XSA9IGM7DQorCQl9DQorCX0NCisNCisJcmV0dXJuIDA7 DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX2NwdV9yZXNvdXJjZXNfaW5pdChzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2LA0KKwkJCQkgIHVuc2lnbmVkIGludCBjcHUsIGludCBpbmRleCwNCisJ CQkJICBjb25zdCB1MTYgKm9mZnNldHMpDQorew0KKwlzdHJ1Y3QgY3B1ZnJlcV9tdGsgKmM7DQor CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQorCWludCByZXQsIGk7DQorCXZvaWQg X19pb21lbSAqYmFzZTsNCisNCisJaWYgKG10a19mcmVxX2RvbWFpbl9tYXBbY3B1XSkNCisJCXJl dHVybiAwOw0KKw0KKwljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjKSwgR0ZQX0tFUk5F TCk7DQorCWlmICghYykNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwliYXNlID0gZGV2bV9wbGF0 Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIGluZGV4KTsNCisJaWYgKElTX0VSUihiYXNlKSkN CisJCXJldHVybiBQVFJfRVJSKGJhc2UpOw0KKw0KKwlmb3IgKGkgPSBSRUdfRlJFUV9MVVRfVEFC TEU7IGkgPCBSRUdfQVJSQVlfU0laRTsgaSsrKQ0KKwkJYy0+cmVnX2Jhc2VzW2ldID0gYmFzZSAr IG9mZnNldHNbaV07DQorDQorCXJldCA9IG10a19nZXRfcmVsYXRlZF9jcHVzKGluZGV4LCBjKTsN CisJaWYgKHJldCkgew0KKwkJZGV2X2VycihkZXYsICJEb21haW4tJWQgZmFpbGVkIHRvIGdldCBy ZWxhdGVkIENQVXNcbiIsIGluZGV4KTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJcmV0ID0g bXRrX2NwdV9jcmVhdGVfZnJlcV90YWJsZShwZGV2LCBjKTsNCisJaWYgKHJldCkgew0KKwkJZGV2 X2VycihkZXYsICJEb21haW4tJWQgZmFpbGVkIHRvIGNyZWF0ZSBmcmVxIHRhYmxlXG4iLCBpbmRl eCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg aW50IG10a19jcHVmcmVxX2h3X2RyaXZlcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KK3sNCisJc3RydWN0IGRldmljZV9ub2RlICpjcHVfbnA7DQorCXN0cnVjdCBvZl9waGFu ZGxlX2FyZ3MgYXJnczsNCisJY29uc3QgdTE2ICpvZmZzZXRzOw0KKwl1bnNpZ25lZCBpbnQgY3B1 Ow0KKwlpbnQgcmV0Ow0KKw0KKwlvZmZzZXRzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZw ZGV2LT5kZXYpOw0KKwlpZiAoIW9mZnNldHMpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJZm9y X2VhY2hfcG9zc2libGVfY3B1KGNwdSkgew0KKwkJY3B1X25wID0gb2ZfY3B1X2RldmljZV9ub2Rl X2dldChjcHUpOw0KKwkJaWYgKCFjcHVfbnApIHsNCisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJG YWlsZWQgdG8gZ2V0IGNwdSAlZCBkZXZpY2VcbiIsDQorCQkJCWNwdSk7DQorCQkJcmV0dXJuIC1F Tk9ERVY7DQorCQl9DQorDQorCQlyZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJncyhjcHVf bnAsICJtZWRpYXRlayxmcmVxLWRvbWFpbiIsDQorCQkJCQkJICIjZnJlcS1kb21haW4tY2VsbHMi LCAwLA0KKwkJCQkJCSAmYXJncyk7DQorCQlpZiAocmV0IDwgMCkNCisJCQlyZXR1cm4gcmV0Ow0K Kw0KKwkJLyogR2V0IHRoZSBiYXNlcyBvZiBjcHVmcmVxIGZvciBkb21haW5zICovDQorCQlyZXQg PSBtdGtfY3B1X3Jlc291cmNlc19pbml0KHBkZXYsIGNwdSwgYXJncy5hcmdzWzBdLCBvZmZzZXRz KTsNCisJCWlmIChyZXQpIHsNCisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDUFVGcmVxIHJlc291 cmNlIGluaXQgZmFpbGVkXG4iKTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwl9DQorDQorCXJl dCA9IGNwdWZyZXFfcmVnaXN0ZXJfZHJpdmVyKCZjcHVmcmVxX210a19od19kcml2ZXIpOw0KKwlp ZiAocmV0KSB7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDUFVGcmVxIEhXIGRyaXZlciBmYWls ZWQgdG8gcmVnaXN0ZXJcbiIpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludCBtdGtfY3B1ZnJlcV9od19kcml2ZXJfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0KKwlyZXR1cm4gY3B1ZnJlcV91bnJlZ2lzdGVyX2Ry aXZlcigmY3B1ZnJlcV9tdGtfaHdfZHJpdmVyKTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgbXRrX2NwdWZyZXFfaHdfbWF0Y2hbXSA9IHsNCisJeyAuY29tcGF0aWJs ZSA9ICJtZWRpYXRlayxjcHVmcmVxLWh3IiwgLmRhdGEgPSAmY3B1ZnJlcV9tdGtfb2Zmc2V0cyB9 LA0KKwl7fQ0KK307DQorDQorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2NwdWZy ZXFfaHdfZHJpdmVyID0gew0KKwkucHJvYmUgPSBtdGtfY3B1ZnJlcV9od19kcml2ZXJfcHJvYmUs DQorCS5yZW1vdmUgPSBtdGtfY3B1ZnJlcV9od19kcml2ZXJfcmVtb3ZlLA0KKwkuZHJpdmVyID0g ew0KKwkJLm5hbWUgPSAibXRrLWNwdWZyZXEtaHciLA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbXRr X2NwdWZyZXFfaHdfbWF0Y2gsDQorCX0sDQorfTsNCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10 a19jcHVmcmVxX2h3X2RyaXZlcik7DQorDQorTU9EVUxFX0RFU0NSSVBUSU9OKCJNZWRpYXRlayBj cHVmcmVxLWh3IGRyaXZlciIpOw0KK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCi0tIA0KMS43 LjkuNQ0K