From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Zhong Subject: [PATCH 2/2] drm/panel: add innolux,p079zca panel driver Date: Fri, 3 Mar 2017 09:01:49 +0800 Message-ID: <1488502909-22160-2-git-send-email-zyw@rock-chips.com> References: <1488502909-22160-1-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488502909-22160-1-git-send-email-zyw@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-rockchip@lists.infradead.org Cc: Chris Zhong , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-rockchip.vger.kernel.org U3VwcG9ydCBJbm5vbHV4IFAwNzlaQ0EgNy44NSIgNzY4eDEwMjQgVEZUIExDRCBwYW5lbCwgaXQg aXMgYSBNSVBJIERTSQpwYW5lbC4KClNpZ25lZC1vZmYtYnk6IENocmlzIFpob25nIDx6eXdAcm9j ay1jaGlwcy5jb20+Ci0tLQoKIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAg ICAgICAgICB8ICAxMSArCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWlubm9sdXgtcDA3OXpj YS5jIHwgMzIyICsrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDMz NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVs L3BhbmVsLWlubm9sdXgtcDA3OXpjYS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwppbmRleCA2MmFiYTk3 Li45OWRkMDEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtMTgsNiArMTgsMTcgQEAgY29uZmln IERSTV9QQU5FTF9TSU1QTEUKIAkgIHRoYXQgaXQgY2FuIGJlIGF1dG9tYXRpY2FsbHkgdHVybmVk IG9mZiB3aGVuIHRoZSBwYW5lbCBnb2VzIGludG8gYQogCSAgbG93IHBvd2VyIHN0YXRlLgogCitj b25maWcgRFJNX1BBTkVMX0lOTk9MVVhfUDA3OVpDQQorCXRyaXN0YXRlICJJbm5vbHV4IFAwNzla Q0EgcGFuZWwiCisJZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMgb24gRFJNX01JUElfRFNJCisJZGVw ZW5kcyBvbiBCQUNLTElHSFRfQ0xBU1NfREVWSUNFCisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5 b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgSW5ub2x1eCBQMDc5WkNBCisJICBURlQtTENE IG1vZHVsZXMuIFRoZSBwYW5lbCBoYXMgYSAxMDI0eDc2OCByZXNvbHV0aW9uIGFuZCB1c2VzCisJ ICAyNCBiaXQgUkdCIHBlciBwaXhlbC4gSXQgcHJvdmlkZXMgYSBNSVBJIERTSSBpbnRlcmZhY2Ug dG8KKwkgIHRoZSBob3N0IGFuZCBoYXMgYSBidWlsdC1pbiBMRUQgYmFja2xpZ2h0LgorCiBjb25m aWcgRFJNX1BBTkVMX0pESV9MVDA3ME1FMDUwMDAKIAl0cmlzdGF0ZSAiSkRJIExUMDcwTUUwNTAw MCBXVVhHQSBEU0kgcGFuZWwiCiAJZGVwZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCmlu ZGV4IGE1YzdlYzAuLmJkYTJhYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKQEAgLTEsNCArMSw1 IEBACiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJTVBMRSkgKz0gcGFuZWwtc2ltcGxlLm8KK29i ai0kKENPTkZJR19EUk1fUEFORUxfSU5OT0xVWF9QMDc5WkNBKSArPSBwYW5lbC1pbm5vbHV4LXAw Nzl6Y2Eubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9KRElfTFQwNzBNRTA1MDAwKSArPSBwYW5l bC1qZGktbHQwNzBtZTA1MDAwLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfTEdfTEc0NTczKSAr PSBwYW5lbC1sZy1sZzQ1NzMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9QQU5BU09OSUNfVlZY MTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAwLm8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1pbm5vbHV4LXAwNzl6Y2EuYyBiL2RyaXZlcnMv Z3B1L2RybS9wYW5lbC9wYW5lbC1pbm5vbHV4LXAwNzl6Y2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41ZDE2NzA1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL3BhbmVsLWlubm9sdXgtcDA3OXpjYS5jCkBAIC0wLDAgKzEsMzIyIEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDE3LCBGdXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uLCBM dGQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51 eC9iYWNrbGlnaHQuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1 ZGUgPGRybS9kcm1fcGFuZWwuaD4KKworI2luY2x1ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgor CitzdHJ1Y3QgaW5ub2x1eF9wYW5lbCB7CisJc3RydWN0IGRybV9wYW5lbCBiYXNlOworCXN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmxpbms7CisKKwlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmFj a2xpZ2h0OworCXN0cnVjdCByZWd1bGF0b3IgKnN1cHBseTsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpl bmFibGVfZ3BpbzsKKworCWJvb2wgcHJlcGFyZWQ7CisJYm9vbCBlbmFibGVkOworfTsKKworc3Rh dGljIGlubGluZSBzdHJ1Y3QgaW5ub2x1eF9wYW5lbCAqdG9faW5ub2x1eF9wYW5lbChzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHBhbmVsLCBzdHJ1Y3Qg aW5ub2x1eF9wYW5lbCwgYmFzZSk7Cit9CisKK3N0YXRpYyBpbnQgaW5ub2x1eF9wYW5lbF9kaXNh YmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBpbm5vbHV4X3BhbmVsICpp bm5vbHV4ID0gdG9faW5ub2x1eF9wYW5lbChwYW5lbCk7CisJaW50IGVycjsKKworCWlmICghaW5u b2x1eC0+ZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaW5ub2x1eC0+YmFja2xpZ2h0KSB7 CisJCWlubm9sdXgtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047 CisJCWJhY2tsaWdodF91cGRhdGVfc3RhdHVzKGlubm9sdXgtPmJhY2tsaWdodCk7CisJfQorCisJ aW5ub2x1eC0+bGluay0+bW9kZV9mbGFncyAmPSB+TUlQSV9EU0lfTU9ERV9MUE07CisKKwllcnIg PSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGlubm9sdXgtPmxpbmspOworCWlmIChlcnIg PCAwKQorCQlkZXZfZXJyKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgb2ZmOiAl ZFxuIiwgZXJyKTsKKworCWlubm9sdXgtPmVuYWJsZWQgPSBmYWxzZTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGlubm9sdXhfcGFuZWxfdW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwg KnBhbmVsKQoreworCXN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4ID0gdG9faW5ub2x1eF9w YW5lbChwYW5lbCk7CisJaW50IGVycjsKKworCWlmICghaW5ub2x1eC0+cHJlcGFyZWQpCisJCXJl dHVybiAwOworCisJaW5ub2x1eC0+bGluay0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQ TTsKKworCWVyciA9IG1pcGlfZHNpX2Rjc19lbnRlcl9zbGVlcF9tb2RlKGlubm9sdXgtPmxpbmsp OworCWlmIChlcnIgPCAwKQorCQlkZXZfZXJyKHBhbmVsLT5kZXYsICJmYWlsZWQgdG8gZW50ZXIg c2xlZXAgbW9kZTogJWRcbiIsIGVycik7CisKKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoaW5u b2x1eC0+ZW5hYmxlX2dwaW8sIDApOworCW1zbGVlcCgxMjApOworCisJcmVndWxhdG9yX2Rpc2Fi bGUoaW5ub2x1eC0+c3VwcGx5KTsKKworCWlubm9sdXgtPnByZXBhcmVkID0gZmFsc2U7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbm5vbHV4X3BhbmVsX3ByZXBhcmUoc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGlubm9sdXhfcGFuZWwgKmlubm9sdXggPSB0b19p bm5vbHV4X3BhbmVsKHBhbmVsKTsKKwlpbnQgZXJyOworCisJaWYgKGlubm9sdXgtPnByZXBhcmVk KQorCQlyZXR1cm4gMDsKKworCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChpbm5vbHV4LT5lbmFi bGVfZ3BpbywgMCk7CisKKwllcnIgPSByZWd1bGF0b3JfZW5hYmxlKGlubm9sdXgtPnN1cHBseSk7 CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwl1c2xlZXBfcmFuZ2UoMTYwMDAsIDE3 MDAwKTsKKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoaW5ub2x1eC0+ZW5hYmxlX2dwaW8sIDEp OworCXVzbGVlcF9yYW5nZSgxNTAwMCwgMTYwMDApOworCisJaW5ub2x1eC0+bGluay0+bW9kZV9m bGFncyB8PSBNSVBJX0RTSV9NT0RFX0xQTTsKKworCWVyciA9IG1pcGlfZHNpX2Rjc19leGl0X3Ns ZWVwX21vZGUoaW5ub2x1eC0+bGluayk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihwYW5l bC0+ZGV2LCAiZmFpbGVkIHRvIGV4aXQgc2xlZXAgbW9kZTogJWRcbiIsIGVycik7CisJCWdvdG8g cG93ZXJvZmY7CisJfQorCisJbXNsZWVwKDEyMCk7CisKKwllcnIgPSBtaXBpX2RzaV9kY3Nfc2V0 X2Rpc3BsYXlfb24oaW5ub2x1eC0+bGluayk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2Vycihw YW5lbC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBkaXNwbGF5IG9uOiAlZFxuIiwgZXJyKTsKKwkJZ290 byBwb3dlcm9mZjsKKwl9CisKKwl1c2xlZXBfcmFuZ2UoNTAwMCwgNjAwMCk7CisKKwlpbm5vbHV4 LT5wcmVwYXJlZCA9IHRydWU7CisKKwlyZXR1cm4gMDsKKworcG93ZXJvZmY6CisJcmVndWxhdG9y X2Rpc2FibGUoaW5ub2x1eC0+c3VwcGx5KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50 IGlubm9sdXhfcGFuZWxfZW5hYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVj dCBpbm5vbHV4X3BhbmVsICppbm5vbHV4ID0gdG9faW5ub2x1eF9wYW5lbChwYW5lbCk7CisKKwlp ZiAoaW5ub2x1eC0+ZW5hYmxlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaW5ub2x1eC0+YmFja2xp Z2h0KSB7CisJCWlubm9sdXgtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJM QU5LOworCQliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhpbm5vbHV4LT5iYWNrbGlnaHQpOworCX0K KworCWlubm9sdXgtPmVuYWJsZWQgPSB0cnVlOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7CisJLmNsb2NrID0g NTY5MDAsCisJLmhkaXNwbGF5ID0gNzY4LAorCS5oc3luY19zdGFydCA9IDc2OCArIDQwLAorCS5o c3luY19lbmQgPSA3NjggKyA0MCArIDQwLAorCS5odG90YWwgPSA3NjggKyA0MCArIDQwICsgNDAs CisJLnZkaXNwbGF5ID0gMTAyNCwKKwkudnN5bmNfc3RhcnQgPSAxMDI0ICsgMjAsCisJLnZzeW5j X2VuZCA9IDEwMjQgKyAyMCArIDQsCisJLnZ0b3RhbCA9IDEwMjQgKyAyMCArIDQgKyAyMCwKKwku dnJlZnJlc2ggPSA2MCwKK307CisKK3N0YXRpYyBpbnQgaW5ub2x1eF9wYW5lbF9nZXRfbW9kZXMo c3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGU7CisKKwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21v ZGUpOworCWlmICghbW9kZSkgeworCQlkZXZfZXJyKHBhbmVsLT5kcm0tPmRldiwgImZhaWxlZCB0 byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQlkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRlZmF1 bHRfbW9kZS52ZGlzcGxheSwKKwkJCWRlZmF1bHRfbW9kZS52cmVmcmVzaCk7CisJCXJldHVybiAt RU5PTUVNOworCX0KKworCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOworCisJZHJtX21vZGVfcHJv YmVkX2FkZChwYW5lbC0+Y29ubmVjdG9yLCBtb2RlKTsKKworCXBhbmVsLT5jb25uZWN0b3ItPmRp c3BsYXlfaW5mby53aWR0aF9tbSA9IDEyMDsKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2lu Zm8uaGVpZ2h0X21tID0gMTYwOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3BhbmVsX2Z1bmNzIGlubm9sdXhfcGFuZWxfZnVuY3MgPSB7CisJLmRpc2FibGUgPSBp bm5vbHV4X3BhbmVsX2Rpc2FibGUsCisJLnVucHJlcGFyZSA9IGlubm9sdXhfcGFuZWxfdW5wcmVw YXJlLAorCS5wcmVwYXJlID0gaW5ub2x1eF9wYW5lbF9wcmVwYXJlLAorCS5lbmFibGUgPSBpbm5v bHV4X3BhbmVsX2VuYWJsZSwKKwkuZ2V0X21vZGVzID0gaW5ub2x1eF9wYW5lbF9nZXRfbW9kZXMs Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbm5vbHV4X29mX21hdGNo W10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJpbm5vbHV4LHAwNzl6Y2EiLCB9LAorCXsgfQorfTsK K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlubm9sdXhfb2ZfbWF0Y2gpOworCitzdGF0aWMgaW50 IGlubm9sdXhfcGFuZWxfYWRkKHN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4KQoreworCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZpbm5vbHV4LT5saW5rLT5kZXY7CisJc3RydWN0IGRldmljZV9u b2RlICpucDsKKwlpbnQgZXJyOworCisJaW5ub2x1eC0+c3VwcGx5ID0gZGV2bV9yZWd1bGF0b3Jf Z2V0KGRldiwgInBvd2VyIik7CisJaWYgKElTX0VSUihpbm5vbHV4LT5zdXBwbHkpKQorCQlyZXR1 cm4gUFRSX0VSUihpbm5vbHV4LT5zdXBwbHkpOworCisJaW5ub2x1eC0+ZW5hYmxlX2dwaW8gPSBk ZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJlbmFibGUiLAorCQkJCQkJICAgICAgIEdQSU9E X09VVF9ISUdIKTsKKwlpZiAoSVNfRVJSKGlubm9sdXgtPmVuYWJsZV9ncGlvKSkgeworCQllcnIg PSBQVFJfRVJSKGlubm9sdXgtPmVuYWJsZV9ncGlvKTsKKwkJZGV2X2RiZyhkZXYsICJmYWlsZWQg dG8gZ2V0IGVuYWJsZSBncGlvOiAlZFxuIiwgZXJyKTsKKwkJaW5ub2x1eC0+ZW5hYmxlX2dwaW8g PSBOVUxMOworCX0KKworCW5wID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9mX25vZGUsICJiYWNr bGlnaHQiLCAwKTsKKwlpZiAobnApIHsKKwkJaW5ub2x1eC0+YmFja2xpZ2h0ID0gb2ZfZmluZF9i YWNrbGlnaHRfYnlfbm9kZShucCk7CisJCW9mX25vZGVfcHV0KG5wKTsKKworCQlpZiAoIWlubm9s dXgtPmJhY2tsaWdodCkKKwkJCXJldHVybiAtRVBST0JFX0RFRkVSOworCX0KKworCWRybV9wYW5l bF9pbml0KCZpbm5vbHV4LT5iYXNlKTsKKwlpbm5vbHV4LT5iYXNlLmZ1bmNzID0gJmlubm9sdXhf cGFuZWxfZnVuY3M7CisJaW5ub2x1eC0+YmFzZS5kZXYgPSAmaW5ub2x1eC0+bGluay0+ZGV2Owor CisJZXJyID0gZHJtX3BhbmVsX2FkZCgmaW5ub2x1eC0+YmFzZSk7CisJaWYgKGVyciA8IDApCisJ CWdvdG8gcHV0X2JhY2tsaWdodDsKKworCXJldHVybiAwOworCitwdXRfYmFja2xpZ2h0OgorCWlm IChpbm5vbHV4LT5iYWNrbGlnaHQpCisJCXB1dF9kZXZpY2UoJmlubm9sdXgtPmJhY2tsaWdodC0+ ZGV2KTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGlubm9sdXhfcGFuZWxfZGVs KHN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4KQoreworCWlmIChpbm5vbHV4LT5iYXNlLmRl dikKKwkJZHJtX3BhbmVsX3JlbW92ZSgmaW5ub2x1eC0+YmFzZSk7CisKKwlpZiAoaW5ub2x1eC0+ YmFja2xpZ2h0KQorCQlwdXRfZGV2aWNlKCZpbm5vbHV4LT5iYWNrbGlnaHQtPmRldik7Cit9CisK K3N0YXRpYyBpbnQgaW5ub2x1eF9wYW5lbF9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2kpCit7CisJc3RydWN0IGlubm9sdXhfcGFuZWwgKmlubm9sdXg7CisJaW50IGVycjsKKworCWRz aS0+bGFuZXMgPSA0OworCWRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKKwlkc2kt Pm1vZGVfZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPIHwgTUlQSV9EU0lfTU9ERV9WSURFT19T WU5DX1BVTFNFIHwKKwkJCSAgTUlQSV9EU0lfTU9ERV9MUE07CisKKwlpbm5vbHV4ID0gZGV2bV9r emFsbG9jKCZkc2ktPmRldiwgc2l6ZW9mKCppbm5vbHV4KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFp bm5vbHV4KQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwg aW5ub2x1eCk7CisKKwlpbm5vbHV4LT5saW5rID0gZHNpOworCisJZXJyID0gaW5ub2x1eF9wYW5l bF9hZGQoaW5ub2x1eCk7CisJaWYgKGVyciA8IDApCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBt aXBpX2RzaV9hdHRhY2goZHNpKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IGlubm9s dXhfcGFuZWxfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3Qg aW5ub2x1eF9wYW5lbCAqaW5ub2x1eCA9IG1pcGlfZHNpX2dldF9kcnZkYXRhKGRzaSk7CisJaW50 IGVycjsKKworCWVyciA9IGlubm9sdXhfcGFuZWxfdW5wcmVwYXJlKCZpbm5vbHV4LT5iYXNlKTsK KwlpZiAoZXJyIDwgMCkKKwkJZGV2X2VycigmZHNpLT5kZXYsICJmYWlsZWQgdG8gdW5wcmVwYXJl IHBhbmVsOiAlZFxuIiwgZXJyKTsKKworCWVyciA9IGlubm9sdXhfcGFuZWxfZGlzYWJsZSgmaW5u b2x1eC0+YmFzZSk7CisJaWYgKGVyciA8IDApCisJCWRldl9lcnIoJmRzaS0+ZGV2LCAiZmFpbGVk IHRvIGRpc2FibGUgcGFuZWw6ICVkXG4iLCBlcnIpOworCisJZXJyID0gbWlwaV9kc2lfZGV0YWNo KGRzaSk7CisJaWYgKGVyciA8IDApCisJCWRldl9lcnIoJmRzaS0+ZGV2LCAiZmFpbGVkIHRvIGRl dGFjaCBmcm9tIERTSSBob3N0OiAlZFxuIiwgZXJyKTsKKworCWRybV9wYW5lbF9kZXRhY2goJmlu bm9sdXgtPmJhc2UpOworCWlubm9sdXhfcGFuZWxfZGVsKGlubm9sdXgpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGlubm9sdXhfcGFuZWxfc2h1dGRvd24oc3RydWN0IG1pcGlfZHNp X2RldmljZSAqZHNpKQoreworCXN0cnVjdCBpbm5vbHV4X3BhbmVsICppbm5vbHV4ID0gbWlwaV9k c2lfZ2V0X2RydmRhdGEoZHNpKTsKKworCWlubm9sdXhfcGFuZWxfdW5wcmVwYXJlKCZpbm5vbHV4 LT5iYXNlKTsKKwlpbm5vbHV4X3BhbmVsX2Rpc2FibGUoJmlubm9sdXgtPmJhc2UpOworfQorCitz dGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBpbm5vbHV4X3BhbmVsX2RyaXZlciA9IHsKKwku ZHJpdmVyID0geworCQkubmFtZSA9ICJwYW5lbC1pbm5vbHV4LXAwNzl6Y2EiLAorCQkub2ZfbWF0 Y2hfdGFibGUgPSBpbm5vbHV4X29mX21hdGNoLAorCX0sCisJLnByb2JlID0gaW5ub2x1eF9wYW5l bF9wcm9iZSwKKwkucmVtb3ZlID0gaW5ub2x1eF9wYW5lbF9yZW1vdmUsCisJLnNodXRkb3duID0g aW5ub2x1eF9wYW5lbF9zaHV0ZG93biwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKGlubm9s dXhfcGFuZWxfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiQ2hyaXMgWmhvbmcgPHp5d0Byb2Nr LWNoaXBzLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiSW5ub2x1eCBQMDc5WkNBIHBhbmVs IGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAKMi42LjMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=