From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: [PATCH] drm/imx: imx-ldb: add drm_panel support
Date: Tue, 24 Feb 2015 13:15:56 +0100
Message-ID: <1424780156-9595-1-git-send-email-p.zabel@pengutronix.de>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: dri-devel@lists.freedesktop.org
Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Eric Nelson , Rob Herring , kernel@pengutronix.de, Kumar Gala , Grant Likely , Russell King
List-Id: devicetree@vger.kernel.org
VGhpcyBwYXRjaCBhbGxvd3MgdG8gb3B0aW9uYWxseSBhdHRhY2ggdGhlIGx2ZHMtY2hhbm5lbCB0
byBhIHBhbmVsCnN1cHBvcnRlZCBieSBhIGRybV9wYW5lbCBkcml2ZXIgdXNpbmcgb2YtZ3JhcGgg
YmluZGluZ3MsIGluc3RlYWQgb2YKc3VwcGx5aW5nIHRoZSBtb2RlcyB2aWEgZGlzcGxheS10aW1p
bmdzIGluIHRoZSBkZXZpY2UgdHJlZS4KClRoaXMgZGVwZW5kcyBvbiBvZl9ncmFwaF9nZXRfcG9y
dF9ieV9pZCBhbmQgdXNlcyB0aGUgT0YgZ3JhcGggdG8KbGluayB0aGUgb3B0aW9uYWwgRFJNIHBh
bmVsIHRvIHRoZSBMREIgbHZkcy1jaGFubmVsLiBUaGUgb3V0cHV0CnBvcnQgbnVtYmVyIGlzIDIg
b24gZGV2aWNlcyB3aXRob3V0IHRoZSBleHRlcm5hbCA0LXBvcnQgaW5wdXQKbXVsdGlwbGV4ZXIg
KGkuTVg1KSBhbmQgNCBvbiBkZXZpY2VzIHdpdGggdGhlIG11eCAoaS5NWDYpLgoKQmVmb3JlOgoK
CWxkYiB7CgkJLi4uCgoJCWx2ZHMtY2hhbm5lbEAwIHsKCQkJLi4uCgoJCQlkaXNwbGF5LXRpbWlu
Z3MgewoJCQkJbmF0aXZlLXRpbWluZyA9IDwmdGltaW5nMT47CgkJCQl0aW1pbmcxOiBldG0wNzAw
ZzBkaDYgewoJCQkJCWhhY3RpdmUgPSA8ODAwPjsKCQkJCQl2YWN0aXZlID0gPDQ4MD47CgkJCQkJ
Y2xvY2stZnJlcXVlbmN5ID0gPDMzMjYwMDAwPjsKCQkJCQloc3luYy1sZW4gPSA8MTI4PjsKCQkJ
CQloYmFjay1wb3JjaCA9IDw4OD47CgkJCQkJaGZyb250LXBvcmNoID0gPDQwPjsKCQkJCQl2c3lu
Yy1sZW4gPSA8Mj47CgkJCQkJdmJhY2stcG9yY2ggPSA8MzM+OwoJCQkJCXZmcm9udC1wb3JjaCA9
IDwxMD47CgkJCQkJaHN5bmMtYWN0aXZlID0gPDA+OwoJCQkJCXZzeW5jLWFjdGl2ZSA9IDwwPjsK
CQkJCQkuLi4KCQkJCX07CgkJCX07CgkJCS4uLgoJCX07Cgl9OwoKQWZ0ZXI6CglsZGIgewoJCS4u
LgoKCQlsdmRzLWNoYW5uZWxAMCB7CgkJCS4uLgoKCQkJcG9ydEA0IHsKCQkJCXJlZyA9IDw0PjsK
CgkJCQlsdmRzX291dDogZW5kcG9pbnQgewoJCQkJCXJlbW90ZV9lbmRwb2ludCA9IDwmcGFuZWxf
aW4+OwoJCQkJfTsKCQkJfTsKCQl9OwoJfTsKCglwYW5lbCB7CgkJY29tcGF0aWJsZSA9ICJlZHQs
ZXRtMDcwMGcwZGg2IiwgInNpbXBsZS1wYW5lbCI7CgkJLi4uCgoJCXBvcnQgewoJCQlwYW5lbF9p
bjogZW5kcG9pbnQgewoJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZsdmRzX291dD47CgkJCX07CgkJ
fTsKCX07CgpTaWduZWQtb2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4
LmRlPgpbRml4ZWQgYnVpbGQgZXJyb3IgZHVlIHRvIG1pc3Npbmcgc2VsZWN0IG9uIERSTV9QQU5F
TCAtLXJta10KU2lnbmVkLW9mZi1ieTogUnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51
eC5vcmcudWs+ClNpZ25lZC1vZmYtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9u
aXguZGU+Ci0tLQpUaGUgIkFkZCBvZi1ncmFwaCBoZWxwZXJzIHRvIGxvb3Agb3ZlciBlbmRwb2lu
dHMgYW5kIGZpbmQgcG9ydHMgYnkgaWQiIHNlcmllcwppcyBhIHByZXJlcXVpc2l0ZSBmb3IgdGhp
cyBwYXRjaCBkdWUgaXRzIHVzZSBvZiB0aGUgbmV3IG9mX2dyYXBoX2dldF9wb3J0X2J5X2lkCmZ1
bmN0aW9uOgoKICAgIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE1LzIvMjMvMTE1CgotLS0KIERv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vaW14L2xkYi50eHQgfCA2MyArKysr
KysrKysrKysrKysrLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnICAgICAgICAg
ICAgICAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxkYi5jICAgICAg
ICAgICAgICAgICAgICAgfCA0NSArKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDg4
IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vaW14L2xkYi50eHQgYi9Eb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvZHJtL2lteC9sZGIudHh0CmluZGV4IDQ0M2JjYjYuLmUxMDEzMDkg
MTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vaW14L2xk
Yi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9pbXgvbGRi
LnR4dApAQCAtNDQsMjMgKzQ0LDMxIEBAIE9wdGlvbmFsIHByb3BlcnRpZXM6CiBMVkRTIENoYW5u
ZWwKID09PT09PT09PT09PQogCi1FYWNoIExWRFMgQ2hhbm5lbCBoYXMgdG8gY29udGFpbiBhIGRp
c3BsYXktdGltaW5ncyBub2RlIHRoYXQgZGVzY3JpYmVzIHRoZQotdmlkZW8gdGltaW5ncyBmb3Ig
dGhlIGNvbm5lY3RlZCBMVkRTIGRpc3BsYXkuIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgYWxz
bwotaGF2ZSBhIGxvb2sgYXQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVv
L2Rpc3BsYXktdGltaW5nLnR4dC4KK0VhY2ggTFZEUyBDaGFubmVsIGhhcyB0byBjb250YWluIGVp
dGhlciBhbiBvZiBncmFwaCBsaW5rIHRvIGEgcGFuZWwgZGV2aWNlIG5vZGUKK29yIGEgZGlzcGxh
eS10aW1pbmdzIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIHZpZGVvIHRpbWluZ3MgZm9yIHRoZSBj
b25uZWN0ZWQKK0xWRFMgZGlzcGxheSBhcyB3ZWxsIGFzIHRoZSBmc2wsZGF0YS1tYXBwaW5nIGFu
ZCBmc2wsZGF0YS13aWR0aCBwcm9wZXJ0aWVzLgorRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uLCBh
bHNvIGhhdmUgYSBsb29rIGF0CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Jh
cGgudHh0IGFuZAorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2Rpc3Bs
YXktdGltaW5nLnR4dC4KIAogUmVxdWlyZWQgcHJvcGVydGllczoKICAtIHJlZyA6IHNob3VsZCBi
ZSA8MD4gb3IgPDE+CisgLSBwb3J0OiBJbnB1dCBhbmQgb3V0cHV0IHBvcnQgbm9kZXMgd2l0aCBl
bmRwb2ludCBkZWZpbml0aW9ucyBhcyBkZWZpbmVkIGluCisgICBEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0LgorICAgT24gaS5NWDUsIHRoZSBpbnRlcm5hbCB0d28t
aW5wdXQtbXVsdGlwbGV4ZXIgaXMgdXNlZC4gRHVlIHRvIGhhcmR3YXJlCisgICBsaW1pdGF0aW9u
cywgb25seSBvbmUgaW5wdXQgcG9ydCAocG9ydEBbMCwxXSkgY2FuIGJlIHVzZWQgZm9yIGVhY2gg
Y2hhbm5lbAorICAgKGx2ZHMtY2hhbm5lbEBbMCwxXSwgcmVzcGVjdGl2ZWx5KS4KKyAgIE9uIGku
TVg2LCB0aGVyZSBzaG91bGQgYmUgZm91ciBpbnB1dCBwb3J0cyAocG9ydEBbMC0zXSkgdGhhdCBj
b3JyZXNwb25kCisgICB0byB0aGUgZm91ciBMVkRTIG11bHRpcGxleGVyIGlucHV0cy4KKyAgIEEg
c2luZ2xlIG91dHB1dCBwb3J0IChwb3J0QDIgb24gaS5NWDUsIHBvcnRANCBvbiBpLk1YNikgbXVz
dCBiZSBjb25uZWN0ZWQKKyAgIHRvIGEgcGFuZWwgaW5wdXQgcG9ydC4gT3B0aW9uYWxseSwgdGhl
IG91dHB1dCBwb3J0IGNhbiBiZSBsZWZ0IG91dCBpZgorICAgZGlzcGxheS10aW1pbmdzIGFyZSB1
c2VkIGluc3RlYWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgKHJlcXVpcmVkIGlmIGRpc3BsYXkt
dGltaW5ncyBhcmUgdXNlZCk6CiAgLSBmc2wsZGF0YS1tYXBwaW5nIDogc2hvdWxkIGJlICJzcHdn
IiBvciAiamVpZGEiCiAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBkZXNjcmliZXMgaG93IHRo
ZSBjb2xvciBiaXRzIGFyZSBsYWlkIG91dCBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICBz
ZXJpYWxpemVkIExWRFMgc2lnbmFsLgogIC0gZnNsLGRhdGEtd2lkdGggOiBzaG91bGQgYmUgPDE4
PiBvciA8MjQ+Ci0gLSBwb3J0OiBBIHBvcnQgbm9kZSB3aXRoIGVuZHBvaW50IGRlZmluaXRpb25z
IGFzIGRlZmluZWQgaW4KLSAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRp
YS92aWRlby1pbnRlcmZhY2VzLnR4dC4KLSAgIE9uIGkuTVg1LCB0aGUgaW50ZXJuYWwgdHdvLWlu
cHV0LW11bHRpcGxleGVyIGlzIHVzZWQuCi0gICBEdWUgdG8gaGFyZHdhcmUgbGltaXRhdGlvbnMs
IG9ubHkgb25lIHBvcnQgKHBvcnRAWzAsMV0pCi0gICBjYW4gYmUgdXNlZCBmb3IgZWFjaCBjaGFu
bmVsIChsdmRzLWNoYW5uZWxAWzAsMV0sIHJlc3BlY3RpdmVseSkKLSAgIE9uIGkuTVg2LCB0aGVy
ZSBzaG91bGQgYmUgZm91ciBwb3J0cyAocG9ydEBbMC0zXSkgdGhhdCBjb3JyZXNwb25kCi0gICB0
byB0aGUgZm91ciBMVkRTIG11bHRpcGxleGVyIGlucHV0cy4KIAogZXhhbXBsZToKIApAQCAtNzMs
MjMgKzgxLDIxIEBAIGxkYjogbGRiQDUzZmE4MDA4IHsKIAkjc2l6ZS1jZWxscyA9IDwwPjsKIAlj
b21wYXRpYmxlID0gImZzbCxpbXg1My1sZGIiOwogCWdwciA9IDwmZ3ByPjsKLQljbG9ja3MgPSA8
JmNsa3MgMTIyPiwgPCZjbGtzIDEyMD4sCi0JCSA8JmNsa3MgMTE1PiwgPCZjbGtzIDExNj4sCi0J
CSA8JmNsa3MgMTIzPiwgPCZjbGtzIDg1PjsKKwljbG9ja3MgPSA8JmNsa3MgSU1YNV9DTEtfTERC
X0RJMF9TRUw+LAorCQkgPCZjbGtzIElNWDVfQ0xLX0xEQl9ESTFfU0VMPiwKKwkJIDwmY2xrcyBJ
TVg1X0NMS19JUFVfREkwX1NFTD4sCisJCSA8JmNsa3MgSU1YNV9DTEtfSVBVX0RJMV9TRUw+LAor
CQkgPCZjbGtzIElNWDVfQ0xLX0xEQl9ESTBfR0FURT4sCisJCSA8JmNsa3MgSU1YNV9DTEtfTERC
X0RJMV9HQVRFPjsKIAljbG9jay1uYW1lcyA9ICJkaTBfcGxsIiwgImRpMV9wbGwiLAogCQkgICAg
ICAiZGkwX3NlbCIsICJkaTFfc2VsIiwKIAkJICAgICAgImRpMCIsICJkaTEiOwogCisJLyogVXNp
bmcgb2YgZ3JhcGggY29ubmVjdGlvbiB0byBwYW5lbCBkZXZpY2UgKi8KIAlsdmRzLWNoYW5uZWxA
MCB7CiAJCSNhZGRyZXNzLWNlbGxzID0gPDE+OwogCQkjc2l6ZS1jZWxscyA9IDwwPjsKIAkJcmVn
ID0gPDA+OwotCQlmc2wsZGF0YS1tYXBwaW5nID0gInNwd2ciOwotCQlmc2wsZGF0YS13aWR0aCA9
IDwyND47Ci0KLQkJZGlzcGxheS10aW1pbmdzIHsKLQkJCS8qIC4uLiAqLwotCQl9OwogCiAJCXBv
cnRAMCB7CiAJCQlyZWcgPSA8MD47CkBAIC05OCw4ICsxMDQsMTcgQEAgbGRiOiBsZGJANTNmYTgw
MDggewogCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXB1X2RpMF9sdmRzMD47CiAJCQl9OwogCQl9
OworCisJCXBvcnRAMiB7CisJCQlyZWcgPSA8Mj47CisKKwkJCWx2ZHMwX291dDogZW5kcG9pbnQg
eworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcGFuZWxfaW4+OworCQkJfTsKKwkJfTsKIAl9Owog
CisJLyogVXNpbmcgZGlzcGxheS10aW1pbmdzIG5vZGUgKi8KIAlsdmRzLWNoYW5uZWxAMSB7CiAJ
CSNhZGRyZXNzLWNlbGxzID0gPDE+OwogCQkjc2l6ZS1jZWxscyA9IDwwPjsKQEAgLTEyMCwzICsx
MzUsMTMgQEAgbGRiOiBsZGJANTNmYTgwMDggewogCQl9OwogCX07CiB9OworCitwYW5lbCB7CisJ
LyogLi4uICovCisKKwlwb3J0QDAgeworCQlwYW5lbF9pbjogZW5kcG9pbnQgeworCQkJcmVtb3Rl
LWVuZHBvaW50ID0gPCZsdmRzMF9vdXQ+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvZHJp
dmVycy9ncHUvZHJtL2lteC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnCmlu
ZGV4IDMzY2RkZGYuLjJiODFhNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvS2Nv
bmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L0tjb25maWcKQEAgLTM2LDYgKzM2LDcgQEAg
Y29uZmlnIERSTV9JTVhfVFZFCiBjb25maWcgRFJNX0lNWF9MREIKIAl0cmlzdGF0ZSAiU3VwcG9y
dCBmb3IgTFZEUyBkaXNwbGF5cyIKIAlkZXBlbmRzIG9uIERSTV9JTVggJiYgTUZEX1NZU0NPTgor
CXNlbGVjdCBEUk1fUEFORUwKIAloZWxwCiAJICBDaG9vc2UgdGhpcyB0byBlbmFibGUgdGhlIGlu
dGVybmFsIExWRFMgRGlzcGxheSBCcmlkZ2UgKExEQikKIAkgIGZvdW5kIG9uIGkuTVg1MyBhbmQg
aS5NWDYgcHJvY2Vzc29ycy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWxk
Yi5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRiLmMKaW5kZXggNzRhZWQ2MS4uNjAzYTg4
YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtbGRiLmMKKysrIGIvZHJpdmVy
cy9ncHUvZHJtL2lteC9pbXgtbGRiLmMKQEAgLTE5LDEwICsxOSwxMSBAQAogI2luY2x1ZGUgPGRy
bS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0v
ZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgogI2luY2x1ZGUg
PGxpbnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uL2lteDZxLWlv
bXV4Yy1ncHIuaD4KLSNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CiAjaW5jbHVkZSA8bGlu
dXgvb2ZfZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KICNpbmNsdWRlIDx2
aWRlby9vZl92aWRlb21vZGUuaD4KICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KICNpbmNsdWRl
IDxsaW51eC92aWRlb2RldjIuaD4KQEAgLTU1LDYgKzU2LDcgQEAgc3RydWN0IGlteF9sZGJfY2hh
bm5lbCB7CiAJc3RydWN0IGlteF9sZGIgKmxkYjsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25u
ZWN0b3I7CiAJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJc3RydWN0IGRybV9wYW5lbCAq
cGFuZWw7CiAJc3RydWN0IGRldmljZV9ub2RlICpjaGlsZDsKIAlpbnQgY2hubzsKIAl2b2lkICpl
ZGlkOwpAQCAtOTEsNiArOTMsMTMgQEAgc3RhdGljIGludCBpbXhfbGRiX2Nvbm5lY3Rvcl9nZXRf
bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3QgaW14X2xkYl9j
aGFubmVsICppbXhfbGRiX2NoID0gY29uX3RvX2lteF9sZGJfY2goY29ubmVjdG9yKTsKIAlpbnQg
bnVtX21vZGVzID0gMDsKIAorCWlmIChpbXhfbGRiX2NoLT5wYW5lbCAmJiBpbXhfbGRiX2NoLT5w
YW5lbC0+ZnVuY3MgJiYKKwkgICAgaW14X2xkYl9jaC0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMp
IHsKKwkJbnVtX21vZGVzID0gaW14X2xkYl9jaC0+cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMoaW14
X2xkYl9jaC0+cGFuZWwpOworCQlpZiAobnVtX21vZGVzID4gMCkKKwkJCXJldHVybiBudW1fbW9k
ZXM7CisJfQorCiAJaWYgKGlteF9sZGJfY2gtPmVkaWQpIHsKIAkJZHJtX21vZGVfY29ubmVjdG9y
X3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwKIAkJCQkJCQlpbXhfbGRiX2NoLT5lZGlk
KTsKQEAgLTIwNSw2ICsyMTQsOCBAQCBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfY29tbWl0
KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAlpbnQgZHVhbCA9IGxkYi0+bGRiX2N0cmwg
JiBMREJfU1BMSVRfTU9ERV9FTjsKIAlpbnQgbXV4ID0gaW14X2RybV9lbmNvZGVyX2dldF9tdXhf
aWQoaW14X2xkYl9jaC0+Y2hpbGQsIGVuY29kZXIpOwogCisJZHJtX3BhbmVsX3ByZXBhcmUoaW14
X2xkYl9jaC0+cGFuZWwpOworCiAJaWYgKGR1YWwpIHsKIAkJY2xrX3ByZXBhcmVfZW5hYmxlKGxk
Yi0+Y2xrWzBdKTsKIAkJY2xrX3ByZXBhcmVfZW5hYmxlKGxkYi0+Y2xrWzFdKTsKQEAgLTIzOCw2
ICsyNDksOCBAQCBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfY29tbWl0KHN0cnVjdCBkcm1f
ZW5jb2RlciAqZW5jb2RlcikKIAl9CiAKIAlyZWdtYXBfd3JpdGUobGRiLT5yZWdtYXAsIElPTVVY
Q19HUFIyLCBsZGItPmxkYl9jdHJsKTsKKworCWRybV9wYW5lbF9lbmFibGUoaW14X2xkYl9jaC0+
cGFuZWwpOwogfQogCiBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0
IGRybV9lbmNvZGVyICplbmNvZGVyLApAQCAtMjg5LDYgKzMwMiw4IEBAIHN0YXRpYyB2b2lkIGlt
eF9sZGJfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIAkJIChs
ZGItPmxkYl9jdHJsICYgTERCX0NIMV9NT0RFX0VOX01BU0spID09IDApCiAJCXJldHVybjsKIAor
CWRybV9wYW5lbF9kaXNhYmxlKGlteF9sZGJfY2gtPnBhbmVsKTsKKwogCWlmIChpbXhfbGRiX2No
ID09ICZsZGItPmNoYW5uZWxbMF0pCiAJCWxkYi0+bGRiX2N0cmwgJj0gfkxEQl9DSDBfTU9ERV9F
Tl9NQVNLOwogCWVsc2UgaWYgKGlteF9sZGJfY2ggPT0gJmxkYi0+Y2hhbm5lbFsxXSkKQEAgLTMw
MCw2ICszMTUsOCBAQCBzdGF0aWMgdm9pZCBpbXhfbGRiX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3Qg
ZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJCWNsa19kaXNhYmxlX3VucHJlcGFyZShsZGItPmNsa1sw
XSk7CiAJCWNsa19kaXNhYmxlX3VucHJlcGFyZShsZGItPmNsa1sxXSk7CiAJfQorCisJZHJtX3Bh
bmVsX3VucHJlcGFyZShpbXhfbGRiX2NoLT5wYW5lbCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZHJt
X2Nvbm5lY3Rvcl9mdW5jcyBpbXhfbGRiX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKQEAgLTM3Myw2ICsz
OTAsOSBAQCBzdGF0aWMgaW50IGlteF9sZGJfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRy
bSwKIAlkcm1fY29ubmVjdG9yX2luaXQoZHJtLCAmaW14X2xkYl9jaC0+Y29ubmVjdG9yLAogCQkJ
ICAgJmlteF9sZGJfY29ubmVjdG9yX2Z1bmNzLCBEUk1fTU9ERV9DT05ORUNUT1JfTFZEUyk7CiAK
KwlpZiAoaW14X2xkYl9jaC0+cGFuZWwpCisJCWRybV9wYW5lbF9hdHRhY2goaW14X2xkYl9jaC0+
cGFuZWwsICZpbXhfbGRiX2NoLT5jb25uZWN0b3IpOworCiAJZHJtX21vZGVfY29ubmVjdG9yX2F0
dGFjaF9lbmNvZGVyKCZpbXhfbGRiX2NoLT5jb25uZWN0b3IsCiAJCQkmaW14X2xkYl9jaC0+ZW5j
b2Rlcik7CiAKQEAgLTQ4Nyw2ICs1MDcsNyBAQCBzdGF0aWMgaW50IGlteF9sZGJfYmluZChzdHJ1
Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAogCWZv
cl9lYWNoX2NoaWxkX29mX25vZGUobnAsIGNoaWxkKSB7CiAJCXN0cnVjdCBpbXhfbGRiX2NoYW5u
ZWwgKmNoYW5uZWw7CisJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydDsKIAogCQlyZXQgPSBvZl9w
cm9wZXJ0eV9yZWFkX3UzMihjaGlsZCwgInJlZyIsICZpKTsKIAkJaWYgKHJldCB8fCBpIDwgMCB8
fCBpID4gMSkKQEAgLTUwNSwxMSArNTI2LDMxIEBAIHN0YXRpYyBpbnQgaW14X2xkYl9iaW5kKHN0
cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQogCQlj
aGFubmVsLT5jaG5vID0gaTsKIAkJY2hhbm5lbC0+Y2hpbGQgPSBjaGlsZDsKIAorCQkvKiBUaGUg
b3V0cHV0IHBvcnQgaXMgcG9ydEA0IG9uIGkuTVg2IG9yIHBvcnRAMiBvbiBpLk1YNTMgKi8KKwkJ
cG9ydCA9IG9mX2dyYXBoX2dldF9wb3J0X2J5X2lkKGNoaWxkLCBpbXhfbGRiLT5sdmRzX211eCA/
IDQgOiAyKTsKKwkJaWYgKHBvcnQpIHsKKwkJCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9pbnQs
ICpyZW1vdGU7CisKKwkJCWVuZHBvaW50ID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocG9ydCwgImVu
ZHBvaW50Iik7CisJCQlpZiAoZW5kcG9pbnQpIHsKKwkJCQlyZW1vdGUgPSBvZl9ncmFwaF9nZXRf
cmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50KTsKKwkJCQlpZiAocmVtb3RlKQorCQkJCQljaGFu
bmVsLT5wYW5lbCA9IG9mX2RybV9maW5kX3BhbmVsKHJlbW90ZSk7CisJCQkJZWxzZQorCQkJCQly
ZXR1cm4gLUVQUk9CRV9ERUZFUjsKKwkJCQlpZiAoIWNoYW5uZWwtPnBhbmVsKSB7CisJCQkJCWRl
dl9lcnIoZGV2LCAicGFuZWwgbm90IGZvdW5kOiAlc1xuIiwKKwkJCQkJCXJlbW90ZS0+ZnVsbF9u
YW1lKTsKKwkJCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisJCQkJfQorCQkJfQorCQl9CisKIAkJ
ZWRpZHAgPSBvZl9nZXRfcHJvcGVydHkoY2hpbGQsICJlZGlkIiwgJmNoYW5uZWwtPmVkaWRfbGVu
KTsKIAkJaWYgKGVkaWRwKSB7CiAJCQljaGFubmVsLT5lZGlkID0ga21lbWR1cChlZGlkcCwgY2hh
bm5lbC0+ZWRpZF9sZW4sCiAJCQkJCQlHRlBfS0VSTkVMKTsKLQkJfSBlbHNlIHsKKwkJfSBlbHNl
IGlmICghY2hhbm5lbC0+cGFuZWwpIHsKIAkJCXJldCA9IG9mX2dldF9kcm1fZGlzcGxheV9tb2Rl
KGNoaWxkLCAmY2hhbm5lbC0+bW9kZSwgMCk7CiAJCQlpZiAoIXJldCkKIAkJCQljaGFubmVsLT5t
b2RlX3ZhbGlkID0gMTsKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m
cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp
bmZvL2RyaS1kZXZlbAo=