Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1108000pxa; Thu, 13 Aug 2020 00:10:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwReOhvtdLXPcRdvZ4U2j+tS4EN26NxpNd16Mp4oap1BfOrAz3KUX2x3U7Y/EjcPEr63FNl X-Received: by 2002:a17:907:2067:: with SMTP id qp7mr3414418ejb.378.1597302612680; Thu, 13 Aug 2020 00:10:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597302612; cv=none; d=google.com; s=arc-20160816; b=Q+h1BfBM4UH4Tw43IsHJfvX7woxOu0+kYBNpPVTpwycPNEmvAXubkN+fiPdqBjn4yz Hg/bWj5Z9nfViVosl0c9d4zZIj7zSxBoI/frtFY2B4ty+S23d5eZ4ACvGK9UahWExLiC +0yNAlTvw7BWT/GPkpQVRZokb2wb0BDlzwzEqYDODDCBzMdKqsJMlTdvPSEF6Ogdyu6b hqnKPz2+drEbby6Ou7O0uB+2JnbNzwuG5xmiswHKE2EVVqBbA9LqRNpOPtBLD1ndITmx 8Ku+hqBwadYWxXdeu1WKIx6Z/E4o2J/hnbG8QDLX4ed7eETYh7/uCFrUVBSrBTktf+zn 5Bng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8Io88ZrwIqbKPQHMirxwcd5IeXcfhcyJIWuEIEVMjNY=; b=foxw7XUYJh5Bfipo6s7FQ0nCGscCE5NJzUggqz+4tUQ2aT1blmevjE7gtHN5mU1UaX iH8Ux6/SajudsvviWXS/mzx7/bJ0TeOegHRzUQ9Lkrrspjjtp9BcOmhI6rp7m/drRxBf 3jp3Nsqf4W15Oha3uaK7o41tZZLWwZvb70paWa7GvB70xcs1eHA2yepKI9ujONuSDuSA e0+0LevRewpz70Gkg/zMyLUAcdsP2WspnRfteUE8/pxYqU/T92P8fS9ntVMiRJw4QRx5 ly70UrM7PqfOfa2LmzyXJJfvQksewQYfcEtl9/lYKU6evt5JuG5eRlnKnfAzW9E7y9ew TQBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=qO0nMtjw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id by28si2659302ejc.510.2020.08.13.00.09.42; Thu, 13 Aug 2020 00:10:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=qO0nMtjw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726635AbgHMHIV (ORCPT + 99 others); Thu, 13 Aug 2020 03:08:21 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:10031 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725982AbgHMHIT (ORCPT ); Thu, 13 Aug 2020 03:08:19 -0400 X-UUID: 9ae36feaa2c34bd7acaf6aa25bb0f187-20200813 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=8Io88ZrwIqbKPQHMirxwcd5IeXcfhcyJIWuEIEVMjNY=; b=qO0nMtjwvzbCP0lV+SpnYsusTea+FyYuN+LdPb6Y3c/A+VtE1n+HR+wXtj+1pkmpiMOdfJzxrkSMJTfcGjPAkTfUZCue1wcbsrzW2l5F6hvQmqaVV7v3P43VTvsF9xGq+xa038xigKnXd2Dc6t33sYLQzJcwNfMAId3wJnezRPI=; X-UUID: 9ae36feaa2c34bd7acaf6aa25bb0f187-20200813 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1349050482; Thu, 13 Aug 2020 15:08:07 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 13 Aug 2020 15:08:05 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 13 Aug 2020 15:07:59 +0800 From: Hector Yuan To: , , , , "Rafael J. Wysocki" , Viresh Kumar , Rob Herring , Catalin Marinas , Will Deacon , Matthias Brugger , Bjorn Andersson , Shawn Guo , Li Yang , Vinod Koul , Arnd Bergmann , Anson Huang , Geert Uytterhoeven , Olof Johansson CC: , , Subject: [PATCH v2 1/2] cpufreq: mediatek-hw: Add support for Mediatek cpufreq HW driver Date: Thu, 13 Aug 2020 15:07:54 +0800 Message-ID: <1597302475-15484-2-git-send-email-hector.yuan@mediatek.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1597302475-15484-1-git-send-email-hector.yuan@mediatek.com> References: <1597302475-15484-1-git-send-email-hector.yuan@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain 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 RnJvbTogIkhlY3Rvci5ZdWFuIiA8aGVjdG9yLnl1YW5AbWVkaWF0ZWsuY29tPg0KDQpBZGQgTVQ2 Nzc5IGNwdWZyZXEgSFcgc3VwcG9ydC4NCg0KU2lnbmVkLW9mZi1ieTogSGVjdG9yLll1YW4gPGhl Y3Rvci55dWFuQG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25m aWcgICAgICAgICAgfCAgICAxICsNCiBkcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5hcm0gICAgICAg ICAgIHwgICAxMSArKw0KIGRyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAg ICAxICsNCiBkcml2ZXJzL2NwdWZyZXEvbWVkaWF0ZWstY3B1ZnJlcS1ody5jIHwgIDI1NSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiA0IGZpbGVzIGNoYW5nZWQsIDI2OCBpbnNl cnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY3B1ZnJlcS9tZWRpYXRlay1j cHVmcmVxLWh3LmMNCg0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWcg Yi9hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnDQppbmRleCA4ODNlOGJhLi44NjZhMWJmIDEw MDY0NA0KLS0tIGEvYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZw0KKysrIGIvYXJjaC9hcm02 NC9jb25maWdzL2RlZmNvbmZpZw0KQEAgLTg2LDYgKzg2LDcgQEAgQ09ORklHX0NQVUZSRVFfRFQ9 eQ0KIENPTkZJR19BQ1BJX0NQUENfQ1BVRlJFUT1tDQogQ09ORklHX0FSTV9BTExXSU5ORVJfU1VO NTBJX0NQVUZSRVFfTlZNRU09bQ0KIENPTkZJR19BUk1fQVJNQURBXzM3WFhfQ1BVRlJFUT15DQor Q09ORklHX0FSTV9NRURJQVRFS19DUFVGUkVRX0hXPW0NCiBDT05GSUdfQVJNX1NDUElfQ1BVRlJF UT15DQogQ09ORklHX0FSTV9JTVhfQ1BVRlJFUV9EVD1tDQogQ09ORklHX0FSTV9RQ09NX0NQVUZS RVFfTlZNRU09eQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybSBiL2Ry aXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybQ0KaW5kZXggYzZjYmZjOC4uODFmMWNjMSAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLmFybQ0KKysrIGIvZHJpdmVycy9jcHVmcmVx L0tjb25maWcuYXJtDQpAQCAtMTIxLDYgKzEyMSwxNyBAQCBjb25maWcgQVJNX01FRElBVEVLX0NQ VUZSRVENCiAJaGVscA0KIAkgIFRoaXMgYWRkcyB0aGUgQ1BVRnJlcSBkcml2ZXIgc3VwcG9ydCBm b3IgTWVkaWFUZWsgU29Dcy4NCiANCitjb25maWcgQVJNX01FRElBVEVLX0NQVUZSRVFfSFcNCisJ dHJpc3RhdGUgIk1lZGlhVGVrIENQVUZyZXEgSFcgZHJpdmVyIg0KKwlkZXBlbmRzIG9uIEFSQ0hf TUVESUFURUsgfHwgQ09NUElMRV9URVNUDQorCWhlbHANCisJICBTdXBwb3J0IGZvciB0aGUgQ1BV RnJlcSBIVyBkcml2ZXIuDQorCSAgU29tZSBNZWRpYVRlayBjaGlwc2V0cyBoYXZlIGEgSFcgZW5n aW5lIHRvIG9mZmxvYWQgdGhlIHN0ZXBzDQorCSAgbmVjZXNzYXJ5IGZvciBjaGFuZ2luZyB0aGUg ZnJlcXVlbmN5IG9mIHRoZSBDUFVzLiBGaXJtd2FyZSBsb2FkZWQNCisJICBpbiB0aGlzIGVuZ2lu ZSBleHBvc2VzIGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIHRvIHRoZSBPUy4NCisJICBUaGUgZHJp dmVyIGltcGxlbWVudHMgdGhlIGNwdWZyZXEgaW50ZXJmYWNlIGZvciB0aGlzIEhXIGVuZ2luZS4N CisJICBTYXkgWSBpZiB5b3Ugd2FudCB0byBzdXBwb3J0IENQVUZyZXEgSFcuDQorDQogY29uZmln IEFSTV9PTUFQMlBMVVNfQ1BVRlJFUQ0KIAlib29sICJUSSBPTUFQMisiDQogCWRlcGVuZHMgb24g QVJDSF9PTUFQMlBMVVMNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUgYi9k cml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUNCmluZGV4IGY2NjcwYzQuLmRjMWYzNzEgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvY3B1ZnJlcS9NYWtl ZmlsZQ0KQEAgLTU3LDYgKzU3LDcgQEAgb2JqLSQoQ09ORklHX0FSTV9JTVg2UV9DUFVGUkVRKQkJ Kz0gaW14NnEtY3B1ZnJlcS5vDQogb2JqLSQoQ09ORklHX0FSTV9JTVhfQ1BVRlJFUV9EVCkJKz0g aW14LWNwdWZyZXEtZHQubw0KIG9iai0kKENPTkZJR19BUk1fS0lSS1dPT0RfQ1BVRlJFUSkJKz0g a2lya3dvb2QtY3B1ZnJlcS5vDQogb2JqLSQoQ09ORklHX0FSTV9NRURJQVRFS19DUFVGUkVRKQkr PSBtZWRpYXRlay1jcHVmcmVxLm8NCitvYmotJChDT05GSUdfQVJNX01FRElBVEVLX0NQVUZSRVFf SFcpCSs9IG1lZGlhdGVrLWNwdWZyZXEtaHcubw0KIG9iai0kKENPTkZJR19NQUNIX01WRUJVX1Y3 KQkJKz0gbXZlYnUtY3B1ZnJlcS5vDQogb2JqLSQoQ09ORklHX0FSTV9PTUFQMlBMVVNfQ1BVRlJF USkJKz0gb21hcC1jcHVmcmVxLm8NCiBvYmotJChDT05GSUdfQVJNX1BYQTJ4eF9DUFVGUkVRKQkr PSBweGEyeHgtY3B1ZnJlcS5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL21lZGlhdGVr LWNwdWZyZXEtaHcuYyBiL2RyaXZlcnMvY3B1ZnJlcS9tZWRpYXRlay1jcHVmcmVxLWh3LmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi42NzUyZGI5DQotLS0gL2Rldi9udWxs DQorKysgYi9kcml2ZXJzL2NwdWZyZXEvbWVkaWF0ZWstY3B1ZnJlcS1ody5jDQpAQCAtMCwwICsx LDI1NSBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLyoNCisgKiBD b3B5cmlnaHQgKGMpIDIwMjAgTWVkaWFUZWsgSW5jLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51 eC9iaXRmaWVsZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9jcHVmcmVxLmg+DQorI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQorI2luY2x1ZGUgPGxp bnV4L29mX3BsYXRmb3JtLmg+DQorI2luY2x1ZGUgPGxpbnV4L3BtX29wcC5oPg0KKyNpbmNsdWRl IDxsaW51eC9zbGFiLmg+DQorDQorI2RlZmluZSBMVVRfTUFYX0VOVFJJRVMJCQkzMlUNCisjZGVm aW5lIExVVF9GUkVRCQkJR0VOTUFTSygxMSwgMCkNCisjZGVmaW5lIExVVF9WT0xUCQkJR0VOTUFT SygyOCwgMTIpDQorI2RlZmluZSBMVVRfUk9XX1NJWkUJCQkweDQNCisNCisvKiBSZWdpc3RlciBv ZmZzZXRzICovDQorI2RlZmluZSBSRUdfRU5BQkxFCQkJMHg4NA0KKyNkZWZpbmUgUkVHX1BFUkZf U1RBVEUJCTB4ODgNCisNCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZ2xvYmFsX3Bk ZXY7DQorc3RhdGljIGludCBtdGtfY3B1ZnJlcV9od190YXJnZXRfaW5kZXgoc3RydWN0IGNwdWZy ZXFfcG9saWN5ICpwb2xpY3ksDQorCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXgpDQorew0K Kwl2b2lkIF9faW9tZW0gKnBlcmZfc3RhdGVfcmVnID0gcG9saWN5LT5kcml2ZXJfZGF0YTsNCisJ dW5zaWduZWQgbG9uZyBmcmVxID0gcG9saWN5LT5mcmVxX3RhYmxlW2luZGV4XS5mcmVxdWVuY3k7 DQorDQorCXdyaXRlbF9yZWxheGVkKGluZGV4LCBwZXJmX3N0YXRlX3JlZyk7DQorCWFyY2hfc2V0 X2ZyZXFfc2NhbGUocG9saWN5LT5yZWxhdGVkX2NwdXMsIGZyZXEsDQorCQkJICAgIHBvbGljeS0+ Y3B1aW5mby5tYXhfZnJlcSk7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdW5zaWduZWQg aW50IG10a19jcHVmcmVxX2h3X2dldCh1bnNpZ25lZCBpbnQgY3B1KQ0KK3sNCisJdm9pZCBfX2lv bWVtICpwZXJmX3N0YXRlX3JlZzsNCisJc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3k7DQor CXVuc2lnbmVkIGludCBpbmRleDsNCisNCisJcG9saWN5ID0gY3B1ZnJlcV9jcHVfZ2V0X3Jhdyhj cHUpOw0KKwlpZiAoIXBvbGljeSkNCisJCXJldHVybiAwOw0KKw0KKwlwZXJmX3N0YXRlX3JlZyA9 IHBvbGljeS0+ZHJpdmVyX2RhdGE7DQorDQorCWluZGV4ID0gcmVhZGxfcmVsYXhlZChwZXJmX3N0 YXRlX3JlZyk7DQorCWluZGV4ID0gbWluKGluZGV4LCBMVVRfTUFYX0VOVFJJRVMgLSAxKTsNCisN CisJcmV0dXJuIHBvbGljeS0+ZnJlcV90YWJsZVtpbmRleF0uZnJlcXVlbmN5Ow0KK30NCisNCitz dGF0aWMgaW50IG10a19jcHVmcmVxX2h3X3JlYWRfbHV0KHN0cnVjdCBkZXZpY2UgKmNwdV9kZXYs DQorCQkJCSAgIHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LA0KKwkJCQkgICB2b2lkIF9f aW9tZW0gKmJhc2UpDQorew0KKwl1MzIgZGF0YTsNCisJdTMyIGZyZXEsIHZvbHQsIHByZXZfZnJl cSA9IDA7DQorCWludCBpID0gMDsNCisJc3RydWN0IGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlCSp0 YWJsZTsNCisNCisJdGFibGUgPSBrY2FsbG9jKExVVF9NQVhfRU5UUklFUyArIDEsIHNpemVvZigq dGFibGUpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCF0YWJsZSkNCisJCXJldHVybiAtRU5PTUVNOw0K Kw0KKwlmb3IgKGkgPSAwOyBpIDwgTFVUX01BWF9FTlRSSUVTOyBpKyspIHsNCisJCWRhdGEgPSBy ZWFkbF9yZWxheGVkKGJhc2UgKyAoaSAqIExVVF9ST1dfU0laRSkpOw0KKwkJZnJlcSA9IEZJRUxE X0dFVChMVVRfRlJFUSwgZGF0YSkgKiAxMDAwOw0KKwkJdm9sdCA9IEZJRUxEX0dFVChMVVRfVk9M VCwgZGF0YSk7DQorCQlpZiAoZnJlcSAhPSBwcmV2X2ZyZXEpIHsNCisJCQl0YWJsZVtpXS5mcmVx dWVuY3kgPSBmcmVxOw0KKwkJCWRldl9wbV9vcHBfYWRkKGNwdV9kZXYsIGZyZXEgKiAxMDAwLCB2 b2x0KTsNCisJCQlkZXZfZGJnKGNwdV9kZXYsICJpbmRleD0lZCBmcmVxPSVkLCB2b2x0PSVkXG4i LCBpLA0KKwkJCQlmcmVxLCB2b2x0KTsNCisJCX0gZWxzZSB7DQorCQkJYnJlYWs7DQorCQl9DQor CQlwcmV2X2ZyZXEgPSBmcmVxOw0KKwl9DQorCXRhYmxlW2ldLmZyZXF1ZW5jeSA9IENQVUZSRVFf VEFCTEVfRU5EOw0KKwlwb2xpY3ktPmZyZXFfdGFibGUgPSB0YWJsZTsNCisJZGV2X3BtX29wcF9z ZXRfc2hhcmluZ19jcHVzKGNwdV9kZXYsIHBvbGljeS0+Y3B1cyk7DQorDQorCXJldHVybiAwOw0K K30NCisNCitzdGF0aWMgdm9pZCBtdGtfZ2V0X3JlbGF0ZWRfY3B1cyhpbnQgaW5kZXgsIHN0cnVj dCBjcHVtYXNrICptKQ0KK3sNCisJc3RydWN0IGRldmljZV9ub2RlICpjcHVfbnA7DQorCXN0cnVj dCBvZl9waGFuZGxlX2FyZ3MgYXJnczsNCisJaW50IGNwdSwgcmV0Ow0KKw0KKwlmb3JfZWFjaF9w b3NzaWJsZV9jcHUoY3B1KSB7DQorCQljcHVfbnAgPSBvZl9jcHVfZGV2aWNlX25vZGVfZ2V0KGNw dSk7DQorCQlpZiAoIWNwdV9ucCkNCisJCQljb250aW51ZTsNCisNCisJCXJldCA9IG9mX3BhcnNl X3BoYW5kbGVfd2l0aF9hcmdzKGNwdV9ucCwgIm10ayxmcmVxLWRvbWFpbiIsDQorCQkJCQkJICIj ZnJlcS1kb21haW4tY2VsbHMiLCAwLA0KKwkJCQkJCSAmYXJncyk7DQorCQlvZl9ub2RlX3B1dChj cHVfbnApOw0KKwkJaWYgKHJldCA8IDApDQorCQkJY29udGludWU7DQorDQorCQlpZiAoaW5kZXgg PT0gYXJncy5hcmdzWzBdKQ0KKwkJCWNwdW1hc2tfc2V0X2NwdShjcHUsIG0pOw0KKwl9DQorfQ0K Kw0KK3N0YXRpYyBpbnQgbXRrX2NwdWZyZXFfaHdfY3B1X2luaXQoc3RydWN0IGNwdWZyZXFfcG9s aWN5ICpwb2xpY3kpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmZ2xvYmFsX3BkZXYtPmRl djsNCisJc3RydWN0IG9mX3BoYW5kbGVfYXJncyBhcmdzOw0KKwlzdHJ1Y3QgZGV2aWNlX25vZGUg KmNwdV9ucDsNCisJc3RydWN0IGRldmljZSAqY3B1X2RldjsNCisJc3RydWN0IHJlc291cmNlICpy ZXM7DQorCXZvaWQgX19pb21lbSAqYmFzZTsNCisJaW50IHJldCwgaW5kZXg7DQorDQorCWNwdV9k ZXYgPSBnZXRfY3B1X2RldmljZShwb2xpY3ktPmNwdSk7DQorCWlmICghY3B1X2Rldikgew0KKwkJ cHJfZXJyKCIlczogZmFpbGVkIHRvIGdldCBjcHUlZCBkZXZpY2VcbiIsIF9fZnVuY19fLA0KKwkJ ICAgICAgIHBvbGljeS0+Y3B1KTsNCisJCXJldHVybiAtRU5PREVWOw0KKwl9DQorDQorCWNwdV9u cCA9IG9mX2NwdV9kZXZpY2Vfbm9kZV9nZXQocG9saWN5LT5jcHUpOw0KKwlpZiAoIWNwdV9ucCkN CisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlyZXQgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfYXJn cyhjcHVfbnAsICJtdGssZnJlcS1kb21haW4iLA0KKwkJCQkJICIjZnJlcS1kb21haW4tY2VsbHMi LCAwLCAmYXJncyk7DQorCW9mX25vZGVfcHV0KGNwdV9ucCk7DQorCWlmIChyZXQpDQorCQlyZXR1 cm4gcmV0Ow0KKw0KKwlpbmRleCA9IGFyZ3MuYXJnc1swXTsNCisJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKGdsb2JhbF9wZGV2LCBJT1JFU09VUkNFX01FTSwgaW5kZXgpOw0KKwlpZiAoIXJl cykNCisJCXJldHVybiAtRU5PREVWOw0KKwliYXNlID0gZGV2bV9pb3JlbWFwKGRldiwgcmVzLT5z dGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpKTsNCisJaWYgKCFiYXNlKQ0KKwkJcmV0dXJuIC1FTk9N RU07DQorDQorCW10a19nZXRfcmVsYXRlZF9jcHVzKGluZGV4LCBwb2xpY3ktPmNwdXMpOw0KKwlp ZiAoIWNwdW1hc2tfd2VpZ2h0KHBvbGljeS0+Y3B1cykpIHsNCisJCWRldl9lcnIoZGV2LCAiRG9t YWluLSVkIGZhaWxlZCB0byBnZXQgcmVsYXRlZCBDUFVzXG4iLCBpbmRleCk7DQorCQlyZXQgPSAt RU5PRU5UOw0KKwkJZ290byBlcnJvcjsNCisJfQ0KKw0KKwlwb2xpY3ktPmRyaXZlcl9kYXRhID0g YmFzZSArIFJFR19QRVJGX1NUQVRFOw0KKwlyZXQgPSBtdGtfY3B1ZnJlcV9od19yZWFkX2x1dChj cHVfZGV2LCBwb2xpY3ksIGJhc2UpOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKGRldiwgIkRv bWFpbi0lZCBmYWlsZWQgdG8gcmVhZCBMVVRcbiIsIGluZGV4KTsNCisJCWdvdG8gZXJyb3I7DQor CX0NCisNCisJcmV0ID0gZGV2X3BtX29wcF9nZXRfb3BwX2NvdW50KGNwdV9kZXYpOw0KKwlpZiAo cmV0IDw9IDApIHsNCisJCWRldl9lcnIoY3B1X2RldiwgIkZhaWxlZCB0byBhZGQgT1BQc1xuIik7 DQorCQlyZXQgPSAtRU5PREVWOw0KKwkJZ290byBlcnJvcjsNCisJfQ0KKw0KKwlkZXZfcG1fb3Bw X29mX3JlZ2lzdGVyX2VtKHBvbGljeS0+Y3B1cyk7DQorDQorCS8qIEhXIHNob3VsZCBiZSBpbiBl bmFibGVkIHN0YXRlIHRvIHByb2NlZWQgbm93ICovDQorCXdyaXRlbF9yZWxheGVkKDB4MSwgKGJh c2UgKyBSRUdfRU5BQkxFKSk7DQorCXJldHVybiAwOw0KK2Vycm9yOg0KKwlkZXZtX2lvdW5tYXAo ZGV2LCBiYXNlKTsNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCBtdGtfY3B1ZnJl cV9od19jcHVfZXhpdChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkNCit7DQorCXN0cnVj dCBkZXZpY2UgKmNwdV9kZXYgPSBnZXRfY3B1X2RldmljZShwb2xpY3ktPmNwdSk7DQorCXZvaWQg X19pb21lbSAqYmFzZSA9IHBvbGljeS0+ZHJpdmVyX2RhdGEgLSBSRUdfUEVSRl9TVEFURTsNCisN CisJZGV2X3BtX29wcF9yZW1vdmVfYWxsX2R5bmFtaWMoY3B1X2Rldik7DQorCWtmcmVlKHBvbGlj eS0+ZnJlcV90YWJsZSk7DQorCWRldm1faW91bm1hcCgmZ2xvYmFsX3BkZXYtPmRldiwgYmFzZSk7 DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGZyZXFfYXR0ciAqbXRrX2Nw dWZyZXFfaHdfYXR0cltdID0gew0KKwkmY3B1ZnJlcV9mcmVxX2F0dHJfc2NhbGluZ19hdmFpbGFi bGVfZnJlcXMsDQorCU5VTEwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9kcml2ZXIg Y3B1ZnJlcV9tdGtfaHdfZHJpdmVyID0gew0KKwkuZmxhZ3MJCT0gQ1BVRlJFUV9TVElDS1kgfCBD UFVGUkVRX05FRURfSU5JVElBTF9GUkVRX0NIRUNLIHwNCisJCQkgIENQVUZSRVFfSEFWRV9HT1ZF Uk5PUl9QRVJfUE9MSUNZLA0KKwkudmVyaWZ5CQk9IGNwdWZyZXFfZ2VuZXJpY19mcmVxdWVuY3lf dGFibGVfdmVyaWZ5LA0KKwkudGFyZ2V0X2luZGV4CT0gbXRrX2NwdWZyZXFfaHdfdGFyZ2V0X2lu ZGV4LA0KKwkuZ2V0CQk9IG10a19jcHVmcmVxX2h3X2dldCwNCisJLmluaXQJCT0gbXRrX2NwdWZy ZXFfaHdfY3B1X2luaXQsDQorCS5leGl0CQk9IG10a19jcHVmcmVxX2h3X2NwdV9leGl0LA0KKwku bmFtZQkJPSAibXRrLWNwdWZyZXEtaHciLA0KKwkuYXR0cgkJPSBtdGtfY3B1ZnJlcV9od19hdHRy LA0KK307DQorDQorc3RhdGljIGludCBtdGtfY3B1ZnJlcV9od19kcml2ZXJfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCWludCByZXQ7DQorDQorCWdsb2JhbF9wZGV2 ID0gcGRldjsNCisJcmV0ID0gY3B1ZnJlcV9yZWdpc3Rlcl9kcml2ZXIoJmNwdWZyZXFfbXRrX2h3 X2RyaXZlcik7DQorCWlmIChyZXQpDQorCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDUFVGcmVxIEhX IGRyaXZlciBmYWlsZWQgdG8gcmVnaXN0ZXJcbiIpOw0KKwllbHNlDQorCQlkZXZfZGJnKCZwZGV2 LT5kZXYsICJtdGsgQ1BVRnJlcSBIVyBkcml2ZXIgaW5pdGlhbGl6ZWRcbiIpOw0KKw0KKwlyZXR1 cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IG10a19jcHVmcmVxX2h3X2RyaXZlcl9yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCit7DQorCXJldHVybiBjcHVmcmVxX3VucmVn aXN0ZXJfZHJpdmVyKCZjcHVmcmVxX210a19od19kcml2ZXIpOw0KK30NCisNCitzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfY3B1ZnJlcV9od19tYXRjaFtdID0gew0KKwl7IC5j b21wYXRpYmxlID0gIm1lZGlhdGVrLGNwdWZyZXEtaHciIH0sDQorCXt9DQorfTsNCitNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBtdGtfY3B1ZnJlcV9od19tYXRjaCk7DQorDQorc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2NwdWZyZXFfaHdfZHJpdmVyID0gew0KKwkucHJvYmUgPSBt dGtfY3B1ZnJlcV9od19kcml2ZXJfcHJvYmUsDQorCS5yZW1vdmUgPSBtdGtfY3B1ZnJlcV9od19k cml2ZXJfcmVtb3ZlLA0KKwkuZHJpdmVyID0gew0KKwkJLm5hbWUgPSAibXRrLWNwdWZyZXEtaHci LA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbXRrX2NwdWZyZXFfaHdfbWF0Y2gsDQorCX0sDQorfTsN CisNCitzdGF0aWMgaW50IF9faW5pdCBtdGtfY3B1ZnJlcV9od19pbml0KHZvaWQpDQorew0KKwly ZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZtdGtfY3B1ZnJlcV9od19kcml2ZXIpOw0K K30NCitwb3N0Y29yZV9pbml0Y2FsbChtdGtfY3B1ZnJlcV9od19pbml0KTsNCisNCitzdGF0aWMg dm9pZCBfX2V4aXQgbXRrX2NwdWZyZXFfaHdfZXhpdCh2b2lkKQ0KK3sNCisJcGxhdGZvcm1fZHJp dmVyX3VucmVnaXN0ZXIoJm10a19jcHVmcmVxX2h3X2RyaXZlcik7DQorfQ0KK21vZHVsZV9leGl0 KG10a19jcHVmcmVxX2h3X2V4aXQpOw0KKw0KK01PRFVMRV9ERVNDUklQVElPTigibXRrIENQVUZS RVEgSFcgRHJpdmVyIik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KLS0gDQoxLjcuOS41 DQo=