From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sylwester Nawrocki Subject: [PATCH RFC 4/7] drm: exynos: Add driver for HDMI audio interface Date: Fri, 21 Apr 2017 19:19:48 +0200 Message-ID: <1492795191-31298-5-git-send-email-s.nawrocki@samsung.com> References: <1492795191-31298-1-git-send-email-s.nawrocki@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1492795191-31298-1-git-send-email-s.nawrocki@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-samsung-soc@vger.kernel.org, linux-clk@vger.kernel.org, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org, devicetree@vger.kernel.org Cc: javier@osg.samsung.com, b.zolnierkie@samsung.com, sw0312.kim@samsung.com, krzk@kernel.org, cw00.choi@samsung.com, broonie@kernel.org, Sylwester Nawrocki , robh+dt@kernel.org List-Id: devicetree@vger.kernel.org VGhlIGhkbWktY29kZWMgaW50ZXJmYWNlIGFkZGVkIGluIHRoaXMgcGF0Y2ggaXMgcmVxdWlyZWQg dG8gcHJvcGVybHkKc3VwcG9ydCBIRE1JIGF1ZGlvLiBDdXJyZW50bHkgdGhlIGF1ZGlvIHBhcnQg b2YgdGhlIFNvQyBpbnRlcm5hbApIRE1JIHRyYW5zbWl0dGVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBm aXhlZCB2YWx1ZXMsIHdoaWNoIG1ha2VzIEhETUkKYXVkaW8gd29ya2luZyBieSBjaGFuY2UsIG9u bHkgb24gYm9hcmRzIGVxdWlwcGVkIHdpdGggZXh0ZXJuYWwgYXVkaW8KY29kZWMgY29ubmVjdGVk IGluIHBhcmFsbGVsIHdpdGggdGhlIEhETUkgYXVkaW8gdHJhbnNtaXR0ZXIgSTJTIGlucHV0Cmlu dGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6IFN5bHdlc3RlciBOYXdyb2NraSA8cy5uYXdyb2NraUBz YW1zdW5nLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcgICAgICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfaGRtaS5jIHwgMjIwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRp b25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcKaW5kZXggMWQxODUz NC4uYTZlZGJiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9LY29uZmlnCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZwpAQCAtMyw2ICszLDcgQEAgY29uZmln IERSTV9FWFlOT1MKIAlkZXBlbmRzIG9uIE9GICYmIERSTSAmJiAoQVJDSF9TM0M2NFhYIHx8IEFS Q0hfRVhZTk9TIHx8IEFSQ0hfTVVMVElQTEFURk9STSkKIAlzZWxlY3QgRFJNX0tNU19IRUxQRVIK IAlzZWxlY3QgVklERU9NT0RFX0hFTFBFUlMKKwlzZWxlY3QgU05EX1NPQ19IRE1JX0NPREVDIGlm IFNORF9TT0MKIAloZWxwCiAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTYW1z dW5nIFNvQyBFWFlOT1MgY2hpcHNldC4KIAkgIElmIE0gaXMgc2VsZWN0ZWQgdGhlIG1vZHVsZSB3 aWxsIGJlIGNhbGxlZCBleHlub3Nkcm0uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19oZG1pLmMK aW5kZXggODhjY2MwNC4uYmUxODAyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2hkbWku YwpAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgogI2luY2x1 ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KLQorI2lu Y2x1ZGUgPHNvdW5kL2hkbWktY29kZWMuaD4KICNpbmNsdWRlIDxkcm0vZXh5bm9zX2RybS5oPgog CiAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKQEAgLTExMCwxMyArMTEwLDIzIEBAIHN0cnVj dCBoZG1pX2RyaXZlcl9kYXRhIHsKIAlzdHJ1Y3Qgc3RyaW5nX2FycmF5X3NwZWMgY2xrX211eGVz OwogfTsKIAorc3RydWN0IGhkbWlfYXVkaW8geworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXY7CisJc3RydWN0IGhkbWlfYXVkaW9faW5mb2ZyYW1lIGluZm9mcmFtZTsKKwl1bnNpZ25lZCBp bnQgc2FtcGxlX3JhdGU7CisJdW5zaWduZWQgaW50IHNhbXBsZV93aWR0aDsKKwl1OCBlbmFibGU7 Cit9OworCiBzdHJ1Y3QgaGRtaV9jb250ZXh0IHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIJCWVuY29k ZXI7CiAJc3RydWN0IGRldmljZQkJCSpkZXY7CiAJc3RydWN0IGRybV9kZXZpY2UJCSpkcm1fZGV2 OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yCQljb25uZWN0b3I7CisJc3RydWN0IGhkbWlfYXVkaW8J CWF1ZGlvOwogCWJvb2wJCQkJcG93ZXJlZDsKIAlib29sCQkJCWR2aV9tb2RlOworCXN0cnVjdCBt dXRleAkJCW11dGV4OwogCXN0cnVjdCBkZWxheWVkX3dvcmsJCWhvdHBsdWdfd29yazsKIAlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZQkJY3VycmVudF9tb2RlOwogCWNvbnN0IHN0cnVjdCBoZG1pX2Ry aXZlcl9kYXRhCSpkcnZfZGF0YTsKQEAgLTc2Niw2ICs3NzYsMjIgQEAgc3RhdGljIGludCBoZG1p X2Nsa19zZXRfcGFyZW50cyhzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSwgYm9vbCB0b19waHkp CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBoZG1pX2F1ZGlvX2luZm9mcmFtZV9hcHBs eShzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSkKK3sKKwlzdHJ1Y3QgaGRtaV9hdWRpb19pbmZv ZnJhbWUgKmluZm9mcmFtZSA9ICZoZGF0YS0+YXVkaW8uaW5mb2ZyYW1lOworCXU4IGJ1ZltIRE1J X0lORk9GUkFNRV9TSVpFKEFVRElPKV07CisJaW50IGxlbjsKKworCWxlbiA9IGhkbWlfYXVkaW9f aW5mb2ZyYW1lX3BhY2soaW5mb2ZyYW1lLCBidWYsIHNpemVvZihidWYpKTsKKwlpZiAobGVuIDwg MCkKKwkJcmV0dXJuIGxlbjsKKworCWhkbWlfcmVnX3dyaXRlYihoZGF0YSwgSERNSV9BVUlfQ09O LCBIRE1JX0FVSV9DT05fRVZFUllfVlNZTkMpOworCWhkbWlfcmVnX3dyaXRlX2J1ZihoZGF0YSwg SERNSV9BVUlfSEVBREVSMCwgYnVmLCBsZW4pOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2 b2lkIGhkbWlfcmVnX2luZm9mcmFtZXMoc3RydWN0IGhkbWlfY29udGV4dCAqaGRhdGEpCiB7CiAJ dW5pb24gaGRtaV9pbmZvZnJhbWUgZnJtOwpAQCAtODAzLDE1ICs4MjksNyBAQCBzdGF0aWMgdm9p ZCBoZG1pX3JlZ19pbmZvZnJhbWVzKHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhKQogCQloZG1p X3JlZ193cml0ZV9idWYoaGRhdGEsIEhETUlfVlNJX0RBVEEoMCksIGJ1ZiArIDMsIHJldCAtIDMp OwogCX0KIAotCXJldCA9IGhkbWlfYXVkaW9faW5mb2ZyYW1lX2luaXQoJmZybS5hdWRpbyk7Ci0J aWYgKCFyZXQpIHsKLQkJZnJtLmF1ZGlvLmNoYW5uZWxzID0gMjsKLQkJcmV0ID0gaGRtaV9hdWRp b19pbmZvZnJhbWVfcGFjaygmZnJtLmF1ZGlvLCBidWYsIHNpemVvZihidWYpKTsKLQl9Ci0JaWYg KHJldCA+IDApIHsKLQkJaGRtaV9yZWdfd3JpdGViKGhkYXRhLCBIRE1JX0FVSV9DT04sIEhETUlf QVVJX0NPTl9FVkVSWV9WU1lOQyk7Ci0JCWhkbWlfcmVnX3dyaXRlX2J1ZihoZGF0YSwgSERNSV9B VUlfSEVBREVSMCwgYnVmLCByZXQpOwotCX0KKwloZG1pX2F1ZGlvX2luZm9mcmFtZV9hcHBseSho ZGF0YSk7CiB9CiAKIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIGhkbWlfZGV0ZWN0 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCkBAIC05OTMsMjMgKzEwMTEsMTggQEAg c3RhdGljIHZvaWQgaGRtaV9yZWdfYWNyKHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhLCB1MzIg ZnJlcSkKIAloZG1pX3JlZ193cml0ZWIoaGRhdGEsIEhETUlfQUNSX0NPTiwgNCk7CiB9CiAKLXN0 YXRpYyB2b2lkIGhkbWlfYXVkaW9faW5pdChzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSkKK3N0 YXRpYyB2b2lkIGhkbWlfYXVkaW9fY29uZmlnKHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhKQog ewotCXUzMiBzYW1wbGVfcmF0ZSwgYml0c19wZXJfc2FtcGxlOwotCXUzMiBkYXRhX251bSwgYml0 X2NoLCBzYW1wbGVfZnJxOwotCXUzMiB2YWw7CisJdTMyIGRhdGFfbnVtLCBzYW1wbGVfZnJlcSwg dmFsOworCXUzMiBiaXRfY2ggPSAxOwogCi0Jc2FtcGxlX3JhdGUgPSA0NDEwMDsKLQliaXRzX3Bl cl9zYW1wbGUgPSAxNjsKIAotCXN3aXRjaCAoYml0c19wZXJfc2FtcGxlKSB7CisJc3dpdGNoICho ZGF0YS0+YXVkaW8uc2FtcGxlX3dpZHRoKSB7CiAJY2FzZSAyMDoKIAkJZGF0YV9udW0gPSAyOwot CQliaXRfY2ggPSAxOwogCQlicmVhazsKIAljYXNlIDI0OgogCQlkYXRhX251bSA9IDM7Ci0JCWJp dF9jaCA9IDE7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWRhdGFfbnVtID0gMTsKQEAgLTEwMTcs NyArMTAzMCw3IEBAIHN0YXRpYyB2b2lkIGhkbWlfYXVkaW9faW5pdChzdHJ1Y3QgaGRtaV9jb250 ZXh0ICpoZGF0YSkKIAkJYnJlYWs7CiAJfQogCi0JaGRtaV9yZWdfYWNyKGhkYXRhLCBzYW1wbGVf cmF0ZSk7CisJaGRtaV9yZWdfYWNyKGhkYXRhLCBoZGF0YS0+YXVkaW8uc2FtcGxlX3JhdGUpOwog CiAJaGRtaV9yZWdfd3JpdGViKGhkYXRhLCBIRE1JX0kyU19NVVhfQ09OLCBIRE1JX0kyU19JTl9E SVNBQkxFCiAJCQkJfCBIRE1JX0kyU19BVURfSTJTIHwgSERNSV9JMlNfQ1VWX0kyU19FTkFCTEUK QEAgLTEwMjgsMTAgKzEwNDEsMjEgQEAgc3RhdGljIHZvaWQgaGRtaV9hdWRpb19pbml0KHN0cnVj dCBoZG1pX2NvbnRleHQgKmhkYXRhKQogCiAJaGRtaV9yZWdfd3JpdGViKGhkYXRhLCBIRE1JX0ky U19NVVhfQ1VWLCBIRE1JX0kyU19DVVZfUkxfRU4pOwogCi0Jc2FtcGxlX2ZycSA9IChzYW1wbGVf cmF0ZSA9PSA0NDEwMCkgPyAwIDoKLQkJCShzYW1wbGVfcmF0ZSA9PSA0ODAwMCkgPyAyIDoKLQkJ CShzYW1wbGVfcmF0ZSA9PSAzMjAwMCkgPyAzIDoKLQkJCShzYW1wbGVfcmF0ZSA9PSA5NjAwMCkg PyAweGEgOiAweDA7CisJc3dpdGNoKGhkYXRhLT5hdWRpby5zYW1wbGVfcmF0ZSkgeworCWNhc2Ug MzIwMDA6CisJCXNhbXBsZV9mcmVxID0gMHgzOworCQlicmVhazsKKwljYXNlIDQ4MDAwOgorCQlz YW1wbGVfZnJlcSA9IDB4MjsKKwkJYnJlYWs7CisJY2FzZSA5NjAwMDoKKwkJc2FtcGxlX2ZyZXEg PSAweGE7CisJCWJyZWFrOworCWNhc2UgNDQxMDA6CisJZGVmYXVsdDoKKwkJc2FtcGxlX2ZyZXEg PSAwOworCQlicmVhazsKKwl9CiAKIAloZG1pX3JlZ193cml0ZWIoaGRhdGEsIEhETUlfSTJTX0NM S19DT04sIEhETUlfSTJTX0NMS19ESVMpOwogCWhkbWlfcmVnX3dyaXRlYihoZGF0YSwgSERNSV9J MlNfQ0xLX0NPTiwgSERNSV9JMlNfQ0xLX0VOKTsKQEAgLTEwNjUsNyArMTA4OSw3IEBAIHN0YXRp YyB2b2lkIGhkbWlfYXVkaW9faW5pdChzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSkKIAloZG1p X3JlZ193cml0ZWIoaGRhdGEsIEhETUlfSTJTX0NIX1NUXzEsIEhETUlfSTJTX0NEX1BMQVlFUik7 CiAJaGRtaV9yZWdfd3JpdGViKGhkYXRhLCBIRE1JX0kyU19DSF9TVF8yLCBIRE1JX0kyU19TRVRf U09VUkNFX05VTSgwKSk7CiAJaGRtaV9yZWdfd3JpdGViKGhkYXRhLCBIRE1JX0kyU19DSF9TVF8z LCBIRE1JX0kyU19DTEtfQUNDVVJfTEVWRUxfMgotCQkJfCBIRE1JX0kyU19TRVRfU01QX0ZSRVEo c2FtcGxlX2ZycSkpOworCQkJfCBIRE1JX0kyU19TRVRfU01QX0ZSRVEoc2FtcGxlX2ZyZXEpKTsK IAloZG1pX3JlZ193cml0ZWIoaGRhdGEsIEhETUlfSTJTX0NIX1NUXzQsCiAJCQlIRE1JX0kyU19P UkdfU01QX0ZSRVFfNDRfMQogCQkJfCBIRE1JX0kyU19XT1JEX0xFTl9NQVgyNF8yNEJJVFMKQEAg LTEwNzQsMTMgKzEwOTgsMTUgQEAgc3RhdGljIHZvaWQgaGRtaV9hdWRpb19pbml0KHN0cnVjdCBo ZG1pX2NvbnRleHQgKmhkYXRhKQogCWhkbWlfcmVnX3dyaXRlYihoZGF0YSwgSERNSV9JMlNfQ0hf U1RfQ09OLCBIRE1JX0kyU19DSF9TVEFUVVNfUkVMT0FEKTsKIH0KIAotc3RhdGljIHZvaWQgaGRt aV9hdWRpb19jb250cm9sKHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhLCBib29sIG9ub2ZmKQor c3RhdGljIHZvaWQgaGRtaV9hdWRpb19jb250cm9sKHN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRh KQogeworCWJvb2wgZW5hYmxlID0gaGRhdGEtPmF1ZGlvLmVuYWJsZTsKKwogCWlmIChoZGF0YS0+ ZHZpX21vZGUpCiAJCXJldHVybjsKIAotCWhkbWlfcmVnX3dyaXRlYihoZGF0YSwgSERNSV9BVUlf Q09OLCBvbm9mZiA/IDIgOiAwKTsKLQloZG1pX3JlZ193cml0ZW1hc2soaGRhdGEsIEhETUlfQ09O XzAsIG9ub2ZmID8KKwloZG1pX3JlZ193cml0ZWIoaGRhdGEsIEhETUlfQVVJX0NPTiwgZW5hYmxl ID8gMiA6IDApOworCWhkbWlfcmVnX3dyaXRlbWFzayhoZGF0YSwgSERNSV9DT05fMCwgZW5hYmxl ID8KIAkJCUhETUlfQVNQX0VOIDogSERNSV9BU1BfRElTLCBIRE1JX0FTUF9NQVNLKTsKIH0KIApA QCAtMTQwMCw5ICsxNDI2LDkgQEAgc3RhdGljIHZvaWQgaGRtaV9jb25mX2FwcGx5KHN0cnVjdCBo ZG1pX2NvbnRleHQgKmhkYXRhKQogewogCWhkbWlfc3RhcnQoaGRhdGEsIGZhbHNlKTsKIAloZG1p X2NvbmZfaW5pdChoZGF0YSk7Ci0JaGRtaV9hdWRpb19pbml0KGhkYXRhKTsKKwloZG1pX2F1ZGlv X2NvbmZpZyhoZGF0YSk7CiAJaGRtaV9tb2RlX2FwcGx5KGhkYXRhKTsKLQloZG1pX2F1ZGlvX2Nv bnRyb2woaGRhdGEsIHRydWUpOworCWhkbWlfYXVkaW9fY29udHJvbChoZGF0YSk7CiB9CiAKIHN0 YXRpYyB2b2lkIGhkbWlfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLApAQCAt MTQ3Niw4ICsxNTAyLDEyIEBAIHN0YXRpYyB2b2lkIGhkbWlfZW5hYmxlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSA9IGVuY29kZXJf dG9faGRtaShlbmNvZGVyKTsKIAorCW11dGV4X2xvY2soJmhkYXRhLT5tdXRleCk7CisKIAloZG1p cGh5X2VuYWJsZShoZGF0YSk7CiAJaGRtaV9jb25mX2FwcGx5KGhkYXRhKTsKKworCW11dGV4X3Vu bG9jaygmaGRhdGEtPm11dGV4KTsKIH0KIAogc3RhdGljIHZvaWQgaGRtaV9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKQEAgLTE0ODYsNiArMTUxNiw4IEBAIHN0YXRpYyB2b2lk IGhkbWlfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGRybV9j cnRjICpjcnRjID0gZW5jb2Rlci0+Y3J0YzsKIAljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVy X2Z1bmNzICpmdW5jcyA9IE5VTEw7CiAKKwltdXRleF9sb2NrKCZoZGF0YS0+bXV0ZXgpOworCiAJ aWYgKCFoZGF0YS0+cG93ZXJlZCkKIAkJcmV0dXJuOwogCkBAIC0xNTA2LDYgKzE1MzgsOCBAQCBz dGF0aWMgdm9pZCBoZG1pX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCWNh bmNlbF9kZWxheWVkX3dvcmsoJmhkYXRhLT5ob3RwbHVnX3dvcmspOwogCiAJaGRtaXBoeV9kaXNh YmxlKGhkYXRhKTsKKworCW11dGV4X3VubG9jaygmaGRhdGEtPm11dGV4KTsKIH0KIAogc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2hkbWlfZW5jb2Rl cl9oZWxwZXJfZnVuY3MgPSB7CkBAIC0xNTE5LDYgKzE1NTMsMTA5IEBAIHN0YXRpYyB2b2lkIGhk bWlfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJLmRlc3Ryb3kgPSBkcm1f ZW5jb2Rlcl9jbGVhbnVwLAogfTsKIAorc3RhdGljIHZvaWQgaGRtaV9hdWRpb19zaHV0ZG93bihz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGhkbWlfY29udGV4dCAq aGRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCW11dGV4X2xvY2soJmhkYXRhLT5tdXRl eCk7CisKKwloZGF0YS0+YXVkaW8uZW5hYmxlID0gZmFsc2U7CisKKwlpZiAoaGRhdGEtPnBvd2Vy ZWQpCisJCWhkbWlfYXVkaW9fY29udHJvbChoZGF0YSk7CisKKwltdXRleF91bmxvY2soJmhkYXRh LT5tdXRleCk7Cit9CisKK3N0YXRpYyBpbnQgaGRtaV9hdWRpb19od19wYXJhbXMoc3RydWN0IGRl dmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCXN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFp Zm10LAorCQkJCXN0cnVjdCBoZG1pX2NvZGVjX3BhcmFtcyAqcGFyYW1zKQoreworCXN0cnVjdCBo ZG1pX2NvbnRleHQgKmhkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlpZiAoZGFpZm10 LT5mbXQgIT0gSERNSV9JMlMgfHwgZGFpZm10LT5iaXRfY2xrX2ludiB8fAorCSAgICBkYWlmbXQt PmZyYW1lX2Nsa19pbnYgfHwgZGFpZm10LT5iaXRfY2xrX21hc3RlciB8fAorCSAgICBkYWlmbXQt PmZyYW1lX2Nsa19tYXN0ZXIpIHsKKwkJZGV2X2VycihkZXYsICIlczogQmFkIGZsYWdzICVkICVk ICVkICVkXG4iLCBfX2Z1bmNfXywKKwkJCWRhaWZtdC0+Yml0X2Nsa19pbnYsIGRhaWZtdC0+ZnJh bWVfY2xrX2ludiwKKwkJCWRhaWZtdC0+Yml0X2Nsa19tYXN0ZXIsCisJCQlkYWlmbXQtPmZyYW1l X2Nsa19tYXN0ZXIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltdXRleF9sb2NrKCZoZGF0 YS0+bXV0ZXgpOworCisJaGRhdGEtPmF1ZGlvLnNhbXBsZV9yYXRlID0gcGFyYW1zLT5zYW1wbGVf cmF0ZTsKKwloZGF0YS0+YXVkaW8uc2FtcGxlX3dpZHRoID0gcGFyYW1zLT5zYW1wbGVfd2lkdGg7 CisJaGRhdGEtPmF1ZGlvLmluZm9mcmFtZSA9IHBhcmFtcy0+Y2VhOworCisJaWYgKGhkYXRhLT5w b3dlcmVkKSB7CisJCWhkbWlfYXVkaW9fY29uZmlnKGhkYXRhKTsKKwkJaGRtaV9hdWRpb19pbmZv ZnJhbWVfYXBwbHkoaGRhdGEpOworCX0KKworCW11dGV4X3VubG9jaygmaGRhdGEtPm11dGV4KTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhkbWlfYXVkaW9fZGlnaXRhbF9tdXRlKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgYm9vbCBtdXRlKQoreworCXN0cnVjdCBoZG1p X2NvbnRleHQgKmhkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwltdXRleF9sb2NrKCZo ZGF0YS0+bXV0ZXgpOworCisJaGRhdGEtPmF1ZGlvLmVuYWJsZSA9ICFtdXRlOworCisJaWYgKGhk YXRhLT5wb3dlcmVkKQorCQloZG1pX2F1ZGlvX2NvbnRyb2woaGRhdGEpOworCisJbXV0ZXhfdW5s b2NrKCZoZGF0YS0+bXV0ZXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGRtaV9h dWRpb19nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgdWludDhfdCAqYnVm LAorCQkJICAgICAgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ig PSAmaGRhdGEtPmNvbm5lY3RvcjsKKworCW1lbWNweShidWYsIGNvbm5lY3Rvci0+ZWxkLCBtaW4o c2l6ZW9mKGNvbm5lY3Rvci0+ZWxkKSwgbGVuKSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBoZG1pX2NvZGVjX29wcyBhdWRpb19jb2RlY19vcHMgPSB7CisJLmh3X3Bh cmFtcyA9IGhkbWlfYXVkaW9faHdfcGFyYW1zLAorCS5hdWRpb19zaHV0ZG93biA9IGhkbWlfYXVk aW9fc2h1dGRvd24sCisJLmRpZ2l0YWxfbXV0ZSA9IGhkbWlfYXVkaW9fZGlnaXRhbF9tdXRlLAor CS5nZXRfZWxkID0gaGRtaV9hdWRpb19nZXRfZWxkLAorfTsKKworc3RhdGljIGludCBoZG1pX3Jl Z2lzdGVyX2F1ZGlvX2RldmljZShzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSkKK3sKKwlzdHJ1 Y3QgaGRtaV9jb2RlY19wZGF0YSBjb2RlY19kYXRhID0geworCQkub3BzID0gJmF1ZGlvX2NvZGVj X29wcywKKwkJLm1heF9pMnNfY2hhbm5lbHMgPSA2LAorCQkuaTJzID0gMSwKKwl9OworCisJaGRh dGEtPmF1ZGlvLnBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKKwkJaGRhdGEt PmRldiwgSERNSV9DT0RFQ19EUlZfTkFNRSwgUExBVEZPUk1fREVWSURfQVVUTywKKwkJJmNvZGVj X2RhdGEsIHNpemVvZihjb2RlY19kYXRhKSk7CisKKwlpZiAoSVNfRVJSKGhkYXRhLT5hdWRpby5w ZGV2KSkKKwkJcmV0dXJuIFBUUl9FUlIoaGRhdGEtPmF1ZGlvLnBkZXYpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGhkbWlfdW5yZWdpc3Rlcl9hdWRpb19kZXZpY2Uoc3RydWN0IGhk bWlfY29udGV4dCAqaGRhdGEpCit7CisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoaGRhdGEt PmF1ZGlvLnBkZXYpOworfQorCiBzdGF0aWMgdm9pZCBoZG1pX2hvdHBsdWdfd29ya19mdW5jKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YTsK QEAgLTE3MDMsNiArMTg0MCw3IEBAIHN0YXRpYyBpbnQgaGRtaV9iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2ID0gZGF0YTsKIAlzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZoZGF0YS0+ ZW5jb2RlcjsKKwlzdHJ1Y3QgaGRtaV9hdWRpb19pbmZvZnJhbWUgKmF1ZGlvX2luZm9mcmFtZSA9 ICZoZGF0YS0+YXVkaW8uaW5mb2ZyYW1lOwogCWludCByZXQsIHBpcGU7CiAKIAloZGF0YS0+ZHJt X2RldiA9IGRybV9kZXY7CkBAIC0xNzIwLDYgKzE4NTgsMTIgQEAgc3RhdGljIGludCBoZG1pX2Jp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEp CiAKIAlEUk1fREVCVUdfS01TKCJwb3NzaWJsZV9jcnRjcyA9IDB4JXhcbiIsIGVuY29kZXItPnBv c3NpYmxlX2NydGNzKTsKIAorCWhkbWlfYXVkaW9faW5mb2ZyYW1lX2luaXQoYXVkaW9faW5mb2Zy YW1lKTsKKwlhdWRpb19pbmZvZnJhbWUtPmNvZGluZ190eXBlID0gSERNSV9BVURJT19DT0RJTkdf VFlQRV9TVFJFQU07CisJYXVkaW9faW5mb2ZyYW1lLT5zYW1wbGVfc2l6ZSA9IEhETUlfQVVESU9f U0FNUExFX1NJWkVfU1RSRUFNOworCWF1ZGlvX2luZm9mcmFtZS0+c2FtcGxlX2ZyZXF1ZW5jeSA9 IEhETUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV9TVFJFQU07CisJYXVkaW9faW5mb2ZyYW1lLT5j aGFubmVscyA9IDI7CisKIAlkcm1fZW5jb2Rlcl9pbml0KGRybV9kZXYsIGVuY29kZXIsICZleHlu b3NfaGRtaV9lbmNvZGVyX2Z1bmNzLAogCQkJIERSTV9NT0RFX0VOQ09ERVJfVE1EUywgTlVMTCk7 CiAKQEAgLTE4MjIsMTEgKzE5NjYsMTEgQEAgc3RhdGljIGludCBoZG1pX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJaGRhdGEtPmRydl9k YXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7Ci0KIAlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBoZGF0YSk7Ci0KIAloZGF0YS0+ZGV2ID0gZGV2OwogCisJbXV0ZXhfaW5pdCgm aGRhdGEtPm11dGV4KTsKKwogCXJldCA9IGhkbWlfcmVzb3VyY2VzX2luaXQoaGRhdGEpOwogCWlm IChyZXQpIHsKIAkJaWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQpAQCAtMTg4MCwxMiArMjAyNCwx OSBAQCBzdGF0aWMgaW50IGhkbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAogCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7CiAKLQlyZXQgPSBjb21wb25lbnRfYWRkKCZwZGV2 LT5kZXYsICZoZG1pX2NvbXBvbmVudF9vcHMpOworCXJldCA9IGhkbWlfcmVnaXN0ZXJfYXVkaW9f ZGV2aWNlKGhkYXRhKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9kaXNhYmxlX3BtX3J1bnRpbWU7 CiAKKwlyZXQgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZoZG1pX2NvbXBvbmVudF9vcHMp OworCWlmIChyZXQpCisJCWdvdG8gZXJyX3VucmVnaXN0ZXJfYXVkaW87CisKIAlyZXR1cm4gcmV0 OwogCitlcnJfdW5yZWdpc3Rlcl9hdWRpbzoKKwloZG1pX3VucmVnaXN0ZXJfYXVkaW9fZGV2aWNl KGhkYXRhKTsKKwogZXJyX2Rpc2FibGVfcG1fcnVudGltZToKIAlwbV9ydW50aW1lX2Rpc2FibGUo ZGV2KTsKIApAQCAtMTkwNiw2ICsyMDU3LDcgQEAgc3RhdGljIGludCBoZG1pX3JlbW92ZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZo ZGF0YS0+aG90cGx1Z193b3JrKTsKIAorCWhkbWlfdW5yZWdpc3Rlcl9hdWRpb19kZXZpY2UoaGRh dGEpOwogCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmhkbWlfY29tcG9uZW50X29wcyk7CiAK IAlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7CkBAIC0xOTIxLDYgKzIwNzMsOCBAQCBz dGF0aWMgaW50IGhkbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAlw dXRfZGV2aWNlKCZoZGF0YS0+ZGRjX2FkcHQtPmRldik7CiAKKwltdXRleF9kZXN0cm95KCZoZGF0 YS0+bXV0ZXgpOworCiAJcmV0dXJuIDA7CiB9CiAKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK