From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH 1/3] drm/rockchip: inno_hdmi: add audio support Date: Thu, 4 Aug 2016 10:01:27 +0800 Message-ID: <57A2A1F7.2080405@rock-chips.com> References: <1465997312-17777-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1465997312-17777-1-git-send-email-ykk@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: Yakir Yang , Heiko Stuebner Cc: Mark Rutland , devicetree@vger.kernel.org, Zheng Yang , Pawel Moll , Ian Campbell , Ken Mixte , Russell King , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Rob Herring , Kumar Gala , Thierry Reding , linux-arm-kernel@lists.infradead.org, Ben Chan List-Id: devicetree@vger.kernel.org SGkgWWFraXIKCkFmdGVyIGFwcGx5IHlvdXIgcGF0Y2gsIEkgZ290IGZvbGxvd2luZyB3YXJuaW5n IG1lc3NnZToKCmRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9pbm5vX2hkbWkuYzo4MTg6Mjogd2Fy bmluZzogaW5pdGlhbGl6YXRpb24gZnJvbSAKaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbZW5h YmxlZCBieSBkZWZhdWx0XQpkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvaW5ub19oZG1pLmM6ODE4 OjI6IHdhcm5pbmc6IChuZWFyIAppbml0aWFsaXphdGlvbiBmb3IgJ2F1ZGlvX2NvZGVjX29wcy5o d19wYXJhbXMnKSBbZW5hYmxlZCBieSBkZWZhdWx0XQpkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv aW5ub19oZG1pLmM6ODE5OjI6IHdhcm5pbmc6IGluaXRpYWxpemF0aW9uIGZyb20gCmluY29tcGF0 aWJsZSBwb2ludGVyIHR5cGUgW2VuYWJsZWQgYnkgZGVmYXVsdF0KZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL2lubm9faGRtaS5jOjgxOToyOiB3YXJuaW5nOiAobmVhciAKaW5pdGlhbGl6YXRpb24g Zm9yICdhdWRpb19jb2RlY19vcHMuYXVkaW9fc2h1dGRvd24nKSBbZW5hYmxlZCBieSBkZWZhdWx0 XQpkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvaW5ub19oZG1pLmM6ODIwOjI6IHdhcm5pbmc6IGlu aXRpYWxpemF0aW9uIGZyb20gCmluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgW2VuYWJsZWQgYnkg ZGVmYXVsdF0KZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2lubm9faGRtaS5jOjgyMDoyOiB3YXJu aW5nOiAobmVhciAKaW5pdGlhbGl6YXRpb24gZm9yICdhdWRpb19jb2RlY19vcHMuZGlnaXRhbF9t dXRlJykgW2VuYWJsZWQgYnkgZGVmYXVsdF0KZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2lubm9f aGRtaS5jOjgyMToyOiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBmcm9tIAppbmNvbXBhdGlibGUg cG9pbnRlciB0eXBlIFtlbmFibGVkIGJ5IGRlZmF1bHRdCmRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9pbm5vX2hkbWkuYzo4MjE6Mjogd2FybmluZzogKG5lYXIgCmluaXRpYWxpemF0aW9uIGZvciAn YXVkaW9fY29kZWNfb3BzLmdldF9lbGQnKSBbZW5hYmxlZCBieSBkZWZhdWx0XQoKc2luY2UgdGhl IGNvbW1pdCAiZWZjOTE5NCBBU29DOiBoZG1pLWNvZGVjOiBjYWxsYmFjayBmdW5jdGlvbiB3aWxs IGJlIApjYWxsZWQgd2l0aCBwcml2YXRlIGRhdGEiLAp0aGUgaGRtaV9jb2RlY19vcHMgaGFkIHNv bWUgY2hhbmdlcy4KQ2FuIHlvdSByZWJhc2UgeW91ciBwYXRjaCB0byB0aGUgbmV3ZXN0IGtlcm5l bD8KClRoYW5rcy4KT24gMjAxNuW5tDA25pyIMTXml6UgMjE6MjgsIFlha2lyIFlhbmcgd3JvdGU6 Cj4gVXNpbmcgdGhlIGNvbW1vbiBoZG1pLWNvZGVjIGRyaXZlciB0byBzdXBwb3J0IGhkbWkgYXVk aW8gZnVuY3Rpb24uCj4KPiBTaWduZWQtb2ZmLWJ5OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlw cy5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvaW5ub19oZG1pLmMgfCAy MzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9pbm5vX2hkbWkuaCB8ICAgMiArCj4gICAyIGZpbGVzIGNoYW5nZWQsIDIzNyBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9pbm5vX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9pbm5v X2hkbWkuYwo+IGluZGV4IGY4YjRmZWIuLmMzMWRjMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2lubm9faGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL2lubm9faGRtaS5jCj4gQEAgLTI5LDYgKzI5LDggQEAKPiAgICNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2RybV9lZGlkLmg+Cj4gICAKPiArI2lu Y2x1ZGUgPHNvdW5kL2hkbWktY29kZWMuaD4KPiArCj4gICAjaW5jbHVkZSAicm9ja2NoaXBfZHJt X2Rydi5oIgo+ICAgI2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIKPiAgIAo+IEBAIC0zNiw2 ICszOCwxMiBAQAo+ICAgCj4gICAjZGVmaW5lIHRvX2lubm9faGRtaSh4KQljb250YWluZXJfb2Yo eCwgc3RydWN0IGlubm9faGRtaSwgeCkKPiAgIAo+ICtzdHJ1Y3QgYXVkaW9faW5mbyB7Cj4gKwlp bnQgc2FtcGxlX3JhdGU7Cj4gKwlpbnQgY2hhbm5lbHM7Cj4gKwlpbnQgc2FtcGxlX3dpZHRoOwo+ ICt9Owo+ICsKPiAgIHN0cnVjdCBoZG1pX2RhdGFfaW5mbyB7Cj4gICAJaW50IHZpYzsKPiAgIAli b29sIHNpbmtfaXNfaGRtaTsKPiBAQCAtNzEsNiArNzksOSBAQCBzdHJ1Y3QgaW5ub19oZG1pIHsK PiAgIAo+ICAgCXVuc2lnbmVkIGludCB0bWRzX3JhdGU7Cj4gICAKPiArCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKmF1ZGlvX3BkZXY7Cj4gKwlib29sIGF1ZGlvX2VuYWJsZTsKPiArCj4gICAJc3Ry dWN0IGhkbWlfZGF0YV9pbmZvCWhkbWlfZGF0YTsKPiAgIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSBwcmV2aW91c19tb2RlOwo+ICAgfTsKPiBAQCAtMzA2LDYgKzMxNyw1NyBAQCBzdGF0aWMgaW50 IGlubm9faGRtaV9jb25maWdfdmlkZW9fYXZpKHN0cnVjdCBpbm5vX2hkbWkgKmhkbWksCj4gICAJ cmV0dXJuIGlubm9faGRtaV91cGxvYWRfZnJhbWUoaGRtaSwgcmMsICZmcmFtZSwgSU5GT0ZSQU1F X0FWSSwgMCwgMCwgMCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCBpbm5vX2hkbWlfY29uZmln X2F1ZGlvX2FhaShzdHJ1Y3QgaW5ub19oZG1pICpoZG1pLAo+ICsJCQkJICAgICAgc3RydWN0IGF1 ZGlvX2luZm8gKmF1ZGlvKQo+ICt7Cj4gKwlzdHJ1Y3QgaGRtaV9hdWRpb19pbmZvZnJhbWUgKmZh dWRpbzsKPiArCXVuaW9uIGhkbWlfaW5mb2ZyYW1lIGZyYW1lOwo+ICsJaW50IHJjOwo+ICsKPiAr CXJjID0gaGRtaV9hdWRpb19pbmZvZnJhbWVfaW5pdCgmZnJhbWUuYXVkaW8pOwo+ICsJZmF1ZGlv ID0gKHN0cnVjdCBoZG1pX2F1ZGlvX2luZm9mcmFtZSAqKSZmcmFtZTsKPiArCj4gKwlmYXVkaW8t PmNoYW5uZWxzID0gYXVkaW8tPmNoYW5uZWxzOwo+ICsKPiArCXN3aXRjaCAoYXVkaW8tPnNhbXBs ZV93aWR0aCkgewo+ICsJY2FzZSAxNjoKPiArCQlmYXVkaW8tPnNhbXBsZV9zaXplID0gSERNSV9B VURJT19TQU1QTEVfU0laRV8xNjsKPiArCQlicmVhazsKPiArCWNhc2UgMjA6Cj4gKwkJZmF1ZGlv LT5zYW1wbGVfc2l6ZSA9IEhETUlfQVVESU9fU0FNUExFX1NJWkVfMjA7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIDI0Ogo+ICsJCWZhdWRpby0+c2FtcGxlX3NpemUgPSBIRE1JX0FVRElPX1NBTVBMRV9T SVpFXzI0Owo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXN3aXRjaCAoYXVkaW8tPnNhbXBsZV9y YXRlKSB7Cj4gKwljYXNlIDMyMDAwOgo+ICsJCWZhdWRpby0+c2FtcGxlX2ZyZXF1ZW5jeSA9IEhE TUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV8zMjAwMDsKPiArCQlicmVhazsKPiArCWNhc2UgNDQx MDA6Cj4gKwkJZmF1ZGlvLT5zYW1wbGVfZnJlcXVlbmN5ID0gSERNSV9BVURJT19TQU1QTEVfRlJF UVVFTkNZXzQ0MTAwOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSA0ODAwMDoKPiArCQlmYXVkaW8tPnNh bXBsZV9mcmVxdWVuY3kgPSBIRE1JX0FVRElPX1NBTVBMRV9GUkVRVUVOQ1lfNDgwMDA7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIDg4MjAwOgo+ICsJCWZhdWRpby0+c2FtcGxlX2ZyZXF1ZW5jeSA9IEhE TUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV84ODIwMDsKPiArCQlicmVhazsKPiArCWNhc2UgOTYw MDA6Cj4gKwkJZmF1ZGlvLT5zYW1wbGVfZnJlcXVlbmN5ID0gSERNSV9BVURJT19TQU1QTEVfRlJF UVVFTkNZXzk2MDAwOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAxNzY0MDA6Cj4gKwkJZmF1ZGlvLT5z YW1wbGVfZnJlcXVlbmN5ID0gSERNSV9BVURJT19TQU1QTEVfRlJFUVVFTkNZXzE3NjQwMDsKPiAr CQlicmVhazsKPiArCWNhc2UgMTkyMDAwOgo+ICsJCWZhdWRpby0+c2FtcGxlX2ZyZXF1ZW5jeSA9 IEhETUlfQVVESU9fU0FNUExFX0ZSRVFVRU5DWV8xOTIwMDA7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIGlubm9faGRtaV91cGxvYWRfZnJhbWUoaGRtaSwgcmMsICZmcmFtZSwgSU5G T0ZSQU1FX0FBSSwgMCwgMCwgMCk7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50IGlubm9faGRtaV9j b25maWdfdmlkZW9fY3NjKHN0cnVjdCBpbm5vX2hkbWkgKmhkbWkpCj4gICB7Cj4gICAJc3RydWN0 IGhkbWlfZGF0YV9pbmZvICpkYXRhID0gJmhkbWktPmhkbWlfZGF0YTsKPiBAQCAtNDc4LDggKzU0 MCw5IEBAIHN0YXRpYyBpbnQgaW5ub19oZG1pX3NldHVwKHN0cnVjdCBpbm5vX2hkbWkgKmhkbWks Cj4gICAJaW5ub19oZG1pX2kyY19pbml0KGhkbWkpOwo+ICAgCj4gICAJLyogVW5tdXRlIHZpZGVv IGFuZCBhdWRpbyBvdXRwdXQgKi8KPiAtCWhkbWlfbW9kYihoZG1pLCBIRE1JX0FWX01VVEUsIG1f QVVESU9fTVVURSB8IG1fVklERU9fQkxBQ0ssCj4gLQkJICB2X0FVRElPX01VVEUoMCkgfCB2X1ZJ REVPX01VVEUoMCkpOwo+ICsJaGRtaV9tb2RiKGhkbWksIEhETUlfQVZfTVVURSwgbV9WSURFT19C TEFDSywgdl9WSURFT19NVVRFKDApKTsKPiArCWlmIChoZG1pLT5hdWRpb19lbmFibGUpCj4gKwkJ aGRtaV9tb2RiKGhkbWksIEhETUlfQVZfTVVURSwgbV9BVURJT19NVVRFLCB2X0FVRElPX01VVEUo MCkpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTYxNiw2ICs2NzksMTc0IEBAIHN0 YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgaW5ub19oZG1pX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MgPSB7Cj4gICAJLmJlc3RfZW5jb2RlciA9IGlubm9faGRtaV9jb25uZWN0 b3JfYmVzdF9lbmNvZGVyLAo+ICAgfTsKPiAgIAo+ICtpbnQgaW5ub19oZG1pX2F1ZGlvX2NvbmZp Z19zZXQoc3RydWN0IGlubm9faGRtaSAqaGRtaSwgc3RydWN0IGF1ZGlvX2luZm8gKmF1ZGlvKQo+ ICt7Cj4gKwlpbnQgcmF0ZSwgTiwgY2hhbm5lbDsKPiArCj4gKwlpZiAoYXVkaW8tPmNoYW5uZWxz IDwgMykKPiArCQljaGFubmVsID0gSTJTX0NIQU5ORUxfMV8yOwo+ICsJZWxzZSBpZiAoYXVkaW8t PmNoYW5uZWxzIDwgNSkKPiArCQljaGFubmVsID0gSTJTX0NIQU5ORUxfM180Owo+ICsJZWxzZSBp ZiAoYXVkaW8tPmNoYW5uZWxzIDwgNykKPiArCQljaGFubmVsID0gSTJTX0NIQU5ORUxfNV82Owo+ ICsJZWxzZQo+ICsJCWNoYW5uZWwgPSBJMlNfQ0hBTk5FTF83Xzg7Cj4gKwo+ICsJc3dpdGNoIChh dWRpby0+c2FtcGxlX3JhdGUpIHsKPiArCWNhc2UgMzIwMDA6Cj4gKwkJcmF0ZSA9IEFVRElPXzMy SzsKPiArCQlOID0gTl8zMks7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDQ0MTAwOgo+ICsJCXJhdGUg PSBBVURJT180NDFLOwo+ICsJCU4gPSBOXzQ0MUs7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDQ4MDAw Ogo+ICsJCXJhdGUgPSBBVURJT180OEs7Cj4gKwkJTiA9IE5fNDhLOwo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSA4ODIwMDoKPiArCQlyYXRlID0gQVVESU9fODgySzsKPiArCQlOID0gTl84ODJLOwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSA5NjAwMDoKPiArCQlyYXRlID0gQVVESU9fOTZLOwo+ICsJCU4gPSBO Xzk2SzsKPiArCQlicmVhazsKPiArCWNhc2UgMTc2NDAwOgo+ICsJCXJhdGUgPSBBVURJT18xNzY0 SzsKPiArCQlOID0gTl8xNzY0SzsKPiArCQlicmVhazsKPiArCWNhc2UgMTkyMDAwOgo+ICsJCXJh dGUgPSBBVURJT18xOTJLOwo+ICsJCU4gPSBOXzE5Mks7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0 Ogo+ICsJCWRldl9lcnIoaGRtaS0+ZGV2LCAiWyVzXSBub3Qgc3VwcG9ydCBzdWNoIHNhbXBsZSBy YXRlICVkXG4iLAo+ICsJCQlfX2Z1bmNfXywgYXVkaW8tPnNhbXBsZV9yYXRlKTsKPiArCQlyZXR1 cm4gLUVOT0VOVDsKPiArCX0KPiArCj4gKwkvKiBzZXRfYXVkaW8gc291cmNlIEkyUyAqLwo+ICsJ aGRtaV93cml0ZWIoaGRtaSwgSERNSV9BVURJT19DVFJMMSwgMHgwMSk7Cj4gKwloZG1pX3dyaXRl YihoZG1pLCBBVURJT19TQU1QTEVfUkFURSwgcmF0ZSk7Cj4gKwloZG1pX3dyaXRlYihoZG1pLCBB VURJT19JMlNfTU9ERSwgdl9JMlNfTU9ERShJMlNfU1RBTkRBUkQpIHwKPiArCQkgICAgdl9JMlNf Q0hBTk5FTChjaGFubmVsKSk7Cj4gKwo+ICsJaGRtaV93cml0ZWIoaGRtaSwgQVVESU9fSTJTX01B UCwgMHgwMCk7Cj4gKwloZG1pX3dyaXRlYihoZG1pLCBBVURJT19JMlNfU1dBUFNfU1BESUYsIDAp Owo+ICsKPiArCS8qIFNldCBOIHZhbHVlICovCj4gKwloZG1pX3dyaXRlYihoZG1pLCBBVURJT19O X0gsIChOID4+IDE2KSAmIDB4MEYpOwo+ICsJaGRtaV93cml0ZWIoaGRtaSwgQVVESU9fTl9NLCAo TiA+PiA4KSAmIDB4RkYpOwo+ICsJaGRtaV93cml0ZWIoaGRtaSwgQVVESU9fTl9MLCBOICYgMHhG Rik7Cj4gKwo+ICsJLypTZXQgaGRtaSBubHBjbSBtb2RlIHRvIHN1cHBvcnQgaGRtaSBiaXRzdHJl YW0qLwo+ICsJaGRtaV93cml0ZWIoaGRtaSwgSERNSV9BVURJT19DSEFOTkVMX1NUQVRVUywgdl9B VURJT19TVEFUVVNfTkxQQ00oMCkpOwo+ICsKPiArCXJldHVybiBpbm5vX2hkbWlfY29uZmlnX2F1 ZGlvX2FhaShoZG1pLCBhdWRpbyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaW5ub19oZG1pX2F1 ZGlvX2h3X3BhcmFtcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgIHN0cnVjdCBoZG1p X2NvZGVjX2RhaWZtdCAqZGFpZm10LAo+ICsJCQkJICAgICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJh bXMgKnBhcmFtcykKPiArewo+ICsJc3RydWN0IGlubm9faGRtaSAqaGRtaSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwo+ICsJc3RydWN0IGF1ZGlvX2luZm8gYXVkaW8gPSB7Cj4gKwkJLnNhbXBsZV93 aWR0aCA9IHBhcmFtcy0+c2FtcGxlX3dpZHRoLAo+ICsJCS5zYW1wbGVfcmF0ZSA9IHBhcmFtcy0+ c2FtcGxlX3JhdGUsCj4gKwkJLmNoYW5uZWxzID0gcGFyYW1zLT5jaGFubmVscywKPiArCX07Cj4g Kwo+ICsJaWYgKCFoZG1pLT5oZG1pX2RhdGEuc2lua19oYXNfYXVkaW8pIHsKPiArCQlkZXZfZXJy KGhkbWktPmRldiwgIlNpbmsgZG8gbm90IHN1cHBvcnQgYXVkaW8hXG4iKTsKPiArCQlyZXR1cm4g LUVOT0RFVjsKPiArCX0KPiArCj4gKwlpZiAoIWhkbWktPmVuY29kZXIuY3J0YykKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCj4gKwlzd2l0Y2ggKGRhaWZtdC0+Zm10KSB7Cj4gKwljYXNlIEhETUlf STJTOgo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlkZXZfZXJyKGRldiwgIiVzOiBJbnZh bGlkIGZvcm1hdCAlZFxuIiwgX19mdW5jX18sIGRhaWZtdC0+Zm10KTsKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCX0KPiArCj4gKwlyZXR1cm4gaW5ub19oZG1pX2F1ZGlvX2NvbmZpZ19zZXQoaGRt aSwgJmF1ZGlvKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW5ub19oZG1pX2F1ZGlvX3NodXRk b3duKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJLyogZG8gbm90aGluZyAqLwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGlubm9faGRtaV9hdWRpb19kaWdpdGFsX211dGUoc3RydWN0IGRldmlj ZSAqZGV2LCBib29sIG11dGUpCj4gK3sKPiArCXN0cnVjdCBpbm5vX2hkbWkgKmhkbWkgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKwlpZiAoIWhkbWktPmhkbWlfZGF0YS5zaW5rX2hhc19h dWRpbykgewo+ICsJCWRldl9lcnIoaGRtaS0+ZGV2LCAiU2luayBkbyBub3Qgc3VwcG9ydCBhdWRp byFcbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCWhkbWktPmF1ZGlvX2Vu YWJsZSA9ICFtdXRlOwo+ICsKPiArCWlmIChtdXRlKQo+ICsJCWhkbWlfbW9kYihoZG1pLCBIRE1J X0FWX01VVEUsIG1fQVVESU9fTVVURSB8IG1fQVVESU9fUEQsCj4gKwkJCSAgdl9BVURJT19NVVRF KDEpIHwgdl9BVURJT19QRCgxKSk7Cj4gKwllbHNlCj4gKwkJaGRtaV9tb2RiKGhkbWksIEhETUlf QVZfTVVURSwgbV9BVURJT19NVVRFIHwgbV9BVURJT19QRCwKPiArCQkJICB2X0FVRElPX01VVEUo MCkgfCB2X0FVRElPX1BEKDApKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludCBpbm5vX2hkbWlfYXVkaW9fZ2V0X2VsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHVpbnQ4X3Qg KmJ1Ziwgc2l6ZV90IGxlbikKPiArewo+ICsJc3RydWN0IGlubm9faGRtaSAqaGRtaSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmhk bWktPmVuY29kZXIuZGV2LT5tb2RlX2NvbmZpZzsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3I7Cj4gKwlpbnQgcmV0ID0gLUVOT0RFVjsKPiArCj4gKwltdXRleF9sb2NrKCZjb25m aWctPm11dGV4KTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmY29uZmlnLT5j b25uZWN0b3JfbGlzdCwgaGVhZCkgewo+ICsJCWlmICgmaGRtaS0+ZW5jb2RlciA9PSBjb25uZWN0 b3ItPmVuY29kZXIpIHsKPiArCQkJbWVtY3B5KGJ1ZiwgY29ubmVjdG9yLT5lbGQsCj4gKwkJCSAg ICAgICBtaW4oc2l6ZW9mKGNvbm5lY3Rvci0+ZWxkKSwgbGVuKSk7Cj4gKwkJCXJldCA9IDA7Cj4g KwkJfQo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZjb25maWctPm11dGV4KTsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGhkbWlfY29kZWNfb3BzIGF1 ZGlvX2NvZGVjX29wcyA9IHsKPiArCS5od19wYXJhbXMgPSBpbm5vX2hkbWlfYXVkaW9faHdfcGFy YW1zLAo+ICsJLmF1ZGlvX3NodXRkb3duID0gaW5ub19oZG1pX2F1ZGlvX3NodXRkb3duLAo+ICsJ LmRpZ2l0YWxfbXV0ZSA9IGlubm9faGRtaV9hdWRpb19kaWdpdGFsX211dGUsCj4gKwkuZ2V0X2Vs ZCA9IGlubm9faGRtaV9hdWRpb19nZXRfZWxkLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBpbm5v X2hkbWlfYXVkaW9fY29kZWNfaW5pdChzdHJ1Y3QgaW5ub19oZG1pICpoZG1pLAo+ICsJCQkJICAg ICAgc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRtaV9jb2RlY19wZGF0YSBj b2RlY19kYXRhID0gewo+ICsJCS5pMnMgPSAxLAo+ICsJCS5vcHMgPSAmYXVkaW9fY29kZWNfb3Bz LAo+ICsJCS5tYXhfaTJzX2NoYW5uZWxzID0gOCwKPiArCX07Cj4gKwo+ICsJaGRtaS0+YXVkaW9f ZW5hYmxlID0gZmFsc2U7Cj4gKwloZG1pLT5hdWRpb19wZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3Jl Z2lzdGVyX2RhdGEoCj4gKwkJCQlkZXYsIEhETUlfQ09ERUNfRFJWX05BTUUsIFBMQVRGT1JNX0RF VklEX05PTkUsCj4gKwkJCQkmY29kZWNfZGF0YSwgc2l6ZW9mKGNvZGVjX2RhdGEpKTsKPiArCj4g KwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGhkbWktPmF1ZGlvX3BkZXYpOwo+ICt9Cj4gKwo+ICAg c3RhdGljIGludCBpbm5vX2hkbWlfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3Ry dWN0IGlubm9faGRtaSAqaGRtaSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIgPSAmaGRtaS0+ZW5jb2RlcjsKPiBAQCAtNjQ1LDYgKzg3Niw4IEBAIHN0YXRpYyBpbnQgaW5u b19oZG1pX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBpbm5vX2hkbWkg KmhkbWkpCj4gICAKPiAgIAlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoJmhkbWkt PmNvbm5lY3RvciwgZW5jb2Rlcik7Cj4gICAKPiArCWlubm9faGRtaV9hdWRpb19jb2RlY19pbml0 KGhkbWksIGRldik7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9pbm5vX2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9pbm5vX2hkbWkuaAo+IGluZGV4IGFhN2M0MTUuLjhiMjMwMzcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2lubm9faGRtaS5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2lubm9faGRtaS5oCj4gQEAgLTEwNCwxMSArMTA0LDEzIEBAIGVudW0g ewo+ICAgI2RlZmluZSBIRE1JX0FWX01VVEUJCQkweDA1Cj4gICAjZGVmaW5lIG1fQVZNVVRFX0NM RUFSCQkJKDEgPDwgNykKPiAgICNkZWZpbmUgbV9BVk1VVEVfRU5BQkxFCQkJKDEgPDwgNikKPiAr I2RlZmluZSBtX0FVRElPX1BECQkJKDEgPDwgMikKPiAgICNkZWZpbmUgbV9BVURJT19NVVRFCQkJ KDEgPDwgMSkKPiAgICNkZWZpbmUgbV9WSURFT19CTEFDSwkJCSgxIDw8IDApCj4gICAjZGVmaW5l IHZfQVZNVVRFX0NMRUFSKG4pCQkobiA8PCA3KQo+ICAgI2RlZmluZSB2X0FWTVVURV9FTkFCTEUo bikJCShuIDw8IDYpCj4gICAjZGVmaW5lIHZfQVVESU9fTVVURShuKQkJCShuIDw8IDEpCj4gKyNk ZWZpbmUgdl9BVURJT19QRChuKQkJCShuIDw8IDIpCj4gICAjZGVmaW5lIHZfVklERU9fTVVURShu KQkJCShuIDw8IDApCj4gICAKPiAgICNkZWZpbmUgSERNSV9WSURFT19USU1JTkdfQ1RMCQkweDA4 CgoKLS0gCu+8rWFyayBZYW8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK