From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [04/31] usb: usbssp: Added USBSSP platform driver From: Pawel Laszczak Message-Id: <1532023084-28083-5-git-send-email-pawell@cadence.com> Date: Thu, 19 Jul 2018 18:57:37 +0100 Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, Felipe Balbi , linux-kernel@vger.kernel.org, ltyrala@cadence.com, adouglas@cadence.com, pawell@cadence.com List-ID: VGhpcyBwYXRjaCBhZGRzIHBsYXRmb3JtIGRyaXZlciB0aGF0IGlzIGVudHJ5IHBvaW50IGZvciBs b2FkaW5nIGFuZAp1bmxvYWRpbmcgdXNic3NwLmtvIG1vZHVsZXMuCkl0IGFsc28gYWRkcyBpbmZv cm1hdGlvbiBhYm91dCB0aGlzIGRyaXZlciB0byBkcml2ZXJzL3VzYi9LY29uZmlnCmFuZCBkcml2 ZXJzL3VzYi9NYWtlZmlsZSBmaWxlcyBhbmQgY3JlYXRlIEtjb25maWcgYW5kIE1ha2VmaWxlCmZp bGVzIGluIGRyaXZlcnMvdXNiL3VzYnNzcCBkaXJlY3RvcnkuCgpQYXRjaCBhbHNvIGFkZHMgdGVt cGxhdGUgZm9yIHNvbWUgZnVuY3Rpb24gaXZva2tlZCBmcm9tCnVzYnNzcF9wbGF0LmMgZmlsZS4g VGhlc2UgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBuZXh0IHBhdGNoZXMuCgpUaGlz IHBhdGNoIGFsc28gaW50cm9kdWNlIHVzYnNzcF90cmJfdmlydF90b19kbWEgdGhhdCBjb252ZXJ0 cwp2aXJ0dWFsIGFkZHJlc3Mgb2YgVFJCJ3MgdG8gRE1BIGFkZHJlc3MuIEluIHRoaXMgbW9tZW50 IHRoaXMKZnVuY3Rpb24gaXMgdXNlZCBvbmx5IGluIGdhZGdldC10cmFjZS5oLgoKRnJvbSB0aGlz IG1vbWVudCB0aGUgZHJpdmVyIGNhbiBiZSBjb21waWxlZC4KClNpZ25lZC1vZmYtYnk6IFBhd2Vs IExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+Ci0tLQogZHJpdmVycy91c2IvS2NvbmZpZyAg ICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy91c2IvTWFrZWZpbGUgICAgICAgICAgICAgfCAg IDIgKwogZHJpdmVycy91c2IvdXNic3NwL0tjb25maWcgICAgICAgfCAgMjEgKysrKwogZHJpdmVy cy91c2IvdXNic3NwL01ha2VmaWxlICAgICAgfCAgMTEgKysKIGRyaXZlcnMvdXNiL3VzYnNzcC9n YWRnZXQtcmluZy5jIHwgIDQ4ICsrKysrKysrCiBkcml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LmMg ICAgICB8ICA2NCArKysrKysrKysrKwogZHJpdmVycy91c2IvdXNic3NwL2dhZGdldC5oICAgICAg fCAgMTYgKystCiBkcml2ZXJzL3VzYi91c2Jzc3AvdXNic3NwLXBsYXQuYyB8IDE4NiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM0OSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvdXNic3Nw L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi91c2Jzc3AvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LXJpbmcuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdXNiL3VzYnNzcC91c2Jzc3AtcGxhdC5jCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL0tjb25maWcKaW5kZXggZjY5OWFiYWIxNzg3 Li5kYzA1ZjM4NGMzNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL0tjb25maWcKKysrIGIvZHJp dmVycy91c2IvS2NvbmZpZwpAQCAtMTEwLDYgKzExMCw4IEBAIHNvdXJjZSAiZHJpdmVycy91c2Iv bXR1My9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvdXNiL211c2IvS2NvbmZpZyIKIAorc291 cmNlICJkcml2ZXJzL3VzYi91c2Jzc3AvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL3VzYi9k d2MzL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy91c2IvZHdjMi9LY29uZmlnIgpkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9NYWtlZmlsZQppbmRleCAw NjA2NDNhMWI1YzguLmIxY2Q1ZjgzZDQ0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvTWFrZWZp bGUKKysrIGIvZHJpdmVycy91c2IvTWFrZWZpbGUKQEAgLTgsNiArOCw4IEBACiBvYmotJChDT05G SUdfVVNCKQkJKz0gY29yZS8KIG9iai0kKENPTkZJR19VU0JfU1VQUE9SVCkJKz0gcGh5LwogCitv YmotJChDT05GSUdfVVNCX1VTQlNTUCkJKz0gdXNic3NwLworCiBvYmotJChDT05GSUdfVVNCX0RX QzMpCQkrPSBkd2MzLwogb2JqLSQoQ09ORklHX1VTQl9EV0MyKQkJKz0gZHdjMi8KIG9iai0kKENP TkZJR19VU0JfSVNQMTc2MCkJKz0gaXNwMTc2MC8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3Vz YnNzcC9LY29uZmlnIGIvZHJpdmVycy91c2IvdXNic3NwL0tjb25maWcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTIwYjAxNzUzZGMKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL3VzYi91c2Jzc3AvS2NvbmZpZwpAQCAtMCwwICsxLDIxIEBACitjb25maWcgVVNC X1VTQlNTUAorCXRyaXN0YXRlICJDYWRlbmNlIFVTQlNTUCBEUkQgQ29udHJvbGxlciIKKwlkZXBl bmRzIG9uIChVU0IgfHwgVVNCX0dBREdFVCkgJiYgSEFTX0RNQQorCXNlbGVjdCBVU0JfVVNCU1NQ X0dBREdFVAorCWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91ciBzeXN0ZW0gaGFzIGEgY2FkZW5j ZSBVU0JTU1AgZHVhbC1yb2xlIGNvbnRyb2xsZXIuCisJICBJdCBzdXBwb3J0czogZHVhbC1yb2xl IHN3aXRjaCBIb3N0LW9ubHksIGFuZCBQZXJpcGhlcmFsLW9ubHkuCisKKwkgIElmIHlvdSBjaG9v c2UgdG8gYnVpbGQgdGhpcyBkcml2ZXIgaXMgYSBkeW5hbWljYWxseSBsaW5rZWQKKwkgIG1vZHVs ZSwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2Jzc3Aua28uCisKK2lmIFVTQl9VU0JTU1AK KworY29uZmlnIFVTQl9VU0JTU1BfR0FER0VUCisJdHJpc3RhdGUgIkdhZGdldCBvbmx5IG1vZGUi CisJZGVmYXVsdCBVU0JfVVNCU1NQCisJZGVwZW5kcyBvbiBVU0JfR0FER0VUPXkgfHwgVVNCX0dB REdFVD1VU0JfVVNCU1NQCisJaGVscAorCSAgU2VsZWN0IHRoaXMgd2hlbiB5b3Ugd2FudCB0byB1 c2UgVVNCU1NQIGluIGdhZGdldCBtb2RlIG9ubHksCitlbmRpZgorCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi91c2Jzc3AvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi91c2Jzc3AvTWFrZWZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kODVmMTVhZmI1MWMKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi91c2Jzc3AvTWFrZWZpbGUKQEAgLTAsMCArMSwxMSBA QAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIyBkZWZpbmVfdHJhY2UuaCBu ZWVkcyB0byBrbm93IGhvdyB0byBmaW5kIG91ciBoZWFkZXIKK0NGTEFHU19nYWRnZXQtdHJhY2Uu byA6PSAtSSQoc3JjKQorCitvYmotJChDT05GSUdfVVNCX1VTQlNTUF9HQURHRVQpICs9IHVzYnNz cC5vCit1c2Jzc3AteSAJCQk6PSB1c2Jzc3AtcGxhdC5vIGdhZGdldC1yaW5nLm8gXAorCQkJCSAg IGdhZGdldC5vCisKK2lmbmVxICgkKENPTkZJR19UUkFDSU5HKSwpCisJdXNic3NwLXkJCSs9IGdh ZGdldC10cmFjZS5vCitlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdXNic3NwL2dhZGdl dC1yaW5nLmMgYi9kcml2ZXJzL3VzYi91c2Jzc3AvZ2FkZ2V0LXJpbmcuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQxZGE1OTMwNmQwMgotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQtcmluZy5jCkBAIC0wLDAgKzEsNDggQEAKKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogVVNCU1NQIGRldmljZSBj b250cm9sbGVyIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBDYWRlbmNlLgorICoK KyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsKKyAqCisgKiBBIGxvdCBvZiBjb2RlIGJhc2VkIG9u IExpbnV4IFhIQ0kgZHJpdmVyLgorICogT3JpZ2luOiBDb3B5cmlnaHQgKEMpIDIwMDggSW50ZWwg Q29ycAorICovCisKKyNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxp bnV4L2lycS5oPgorI2luY2x1ZGUgImdhZGdldC10cmFjZS5oIgorI2luY2x1ZGUgImdhZGdldC5o IgorCisvKgorICogUmV0dXJucyB6ZXJvIGlmIHRoZSBUUkIgaXNuJ3QgaW4gdGhpcyBzZWdtZW50 LCBvdGhlcndpc2UgaXQgcmV0dXJucyB0aGUgRE1BCisgKiBhZGRyZXNzIG9mIHRoZSBUUkIuCisg Ki8KK2RtYV9hZGRyX3QgdXNic3NwX3RyYl92aXJ0X3RvX2RtYShzdHJ1Y3QgdXNic3NwX3NlZ21l bnQgKnNlZywKKwkJCQkgIHVuaW9uIHVzYnNzcF90cmIgKnRyYikKK3sKKwl1bnNpZ25lZCBsb25n IHNlZ21lbnRfb2Zmc2V0OworCisJaWYgKCFzZWcgfHwgIXRyYiB8fCB0cmIgPCBzZWctPnRyYnMp CisJCXJldHVybiAwOworCS8qIG9mZnNldCBpbiBUUkJzICovCisJc2VnbWVudF9vZmZzZXQgPSB0 cmIgLSBzZWctPnRyYnM7CisJaWYgKHNlZ21lbnRfb2Zmc2V0ID49IFRSQlNfUEVSX1NFR01FTlQp CisJCXJldHVybiAwOworCXJldHVybiBzZWctPmRtYSArIChzZWdtZW50X29mZnNldCAqIHNpemVv ZigqdHJiKSk7Cit9CisKK2lycXJldHVybl90IHVzYnNzcF9pcnEoaW50IGlycSwgdm9pZCAqcHJp dikKK3sKKwlzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEgPSAoc3RydWN0IHVzYnNzcF91 ZGMgKilwcml2OworCWlycXJldHVybl90IHJldCA9IElSUV9OT05FOworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdXNic3NwX2RhdGEtPmxvY2ssIGZsYWdzKTsK KworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVzYnNzcF9kYXRhLT5sb2NrLCBmbGFncyk7CisJ cmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQuYyBi L2RyaXZlcnMvdXNiL3VzYnNzcC9nYWRnZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjJmNjBkN2RkMWZlNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvdXNi L3VzYnNzcC9nYWRnZXQuYwpAQCAtMCwwICsxLDY0IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAorLyoKKyAqIFVTQlNTUCBkZXZpY2UgY29udHJvbGxlciBkcml2ZXIKKyAq CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZS4KKyAqCisgKiBBdXRob3I6IFBhd2VsIExh c3pjemFrCisgKgorICogQSBsb3Qgb2YgY29kZSBiYXNlZCBvbiBMaW51eCBYSENJIGRyaXZlci4K KyAqIE9yaWdpbjogQ29weXJpZ2h0IChDKSAyMDA4IEludGVsIENvcnAKKyAqLworCisjaW5jbHVk ZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CisjaW5jbHVkZSA8bGludXgv bG9nMi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVs ZXBhcmFtLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2RtaS5o PgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXku aD4KKworI2luY2x1ZGUgImdhZGdldC10cmFjZS5oIgorI2luY2x1ZGUgImdhZGdldC5oIgorCisj aWZkZWYgQ09ORklHX1BNCisvKgorICogU3RvcCBEQyAobm90IGJ1cy1zcGVjaWZpYykKKyAqCisg KiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBtYWNoaW5lIHRyYW5zaXRpb24gaW50byBTMy9TNCBt b2RlLgorICoKKyAqLworaW50IHVzYnNzcF9zdXNwZW5kKHN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jz c3BfZGF0YSwgYm9vbCBkb193YWtldXApCit7CisJLypUT0RPKi8KKwlyZXR1cm4gLUVOT1NZUzsK K30KKworLyoKKyAqIHN0YXJ0IERDIChub3QgYnVzLXNwZWNpZmljKQorICoKKyAqIFRoaXMgaXMg Y2FsbGVkIHdoZW4gdGhlIG1hY2hpbmUgdHJhbnNpdGlvbiBmcm9tIFMzL1M0IG1vZGUuCisgKgor ICovCitpbnQgdXNic3NwX3Jlc3VtZShzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEsIGJv b2wgaGliZXJuYXRlZCkKK3sKKwkvKlRPRE8qLworCXJldHVybiAtRU5PU1lTOworfQorCisjZW5k aWYJLyogQ09ORklHX1BNICovCisKK2ludCB1c2Jzc3BfZ2FkZ2V0X2luaXQoc3RydWN0IHVzYnNz cF91ZGMgKnVzYnNzcF9kYXRhKQoreworCWludCByZXQ7CisJcmV0dXJuIHJldDsKK30KKworaW50 IHVzYnNzcF9nYWRnZXRfZXhpdChzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEpCit7CisJ aW50IHJldCA9IDA7CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Iv dXNic3NwL2dhZGdldC5oIGIvZHJpdmVycy91c2IvdXNic3NwL2dhZGdldC5oCmluZGV4IGI1YzE3 NjAzYWY3OC4uNTVlMjA3OTVkOTAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi91c2Jzc3AvZ2Fk Z2V0LmgKKysrIGIvZHJpdmVycy91c2IvdXNic3NwL2dhZGdldC5oCkBAIC05LDcgKzksNiBAQAog ICogQSBsb3Qgb2YgY29kZSBiYXNlZCBvbiBMaW51eCBYSENJIGRyaXZlci4KICAqIE9yaWdpbjog Q29weXJpZ2h0IChDKSAyMDA4IEludGVsIENvcnAuCiAgKi8KLQogI2lmbmRlZiBfX0xJTlVYX1VT QlNTUF9HQURHRVRfSAogI2RlZmluZSBfX0xJTlVYX1VTQlNTUF9HQURHRVRfSAogCkBAIC0xNjc2 LDYgKzE2NzUsMjEgQEAgc3RhdGljIGlubGluZSB2b2lkIHVzYnNzcF93cml0ZV82NChzdHJ1Y3Qg dXNic3NwX3VkYyAqdXNic3NwX2RhdGEsCiB7CiAJbG9faGlfd3JpdGVxKHZhbCwgcmVncyk7CiB9 CisKKy8qIFVTQlNTUCBEZXZpY2UgY29udHJvbGxlciBnbHVlICovCitpbnQgdXNic3NwX3N1c3Bl bmQoc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9kYXRhLCBib29sIGRvX3dha2V1cCk7CitpbnQg dXNic3NwX3Jlc3VtZShzdHJ1Y3QgdXNic3NwX3VkYyAqdXNic3NwX2RhdGEsIGJvb2wgaGliZXJu YXRlZCk7CisKK2lycXJldHVybl90IHVzYnNzcF9pcnEoaW50IGlycSwgdm9pZCAqcHJpdik7CisK Ky8qIFVTQlNTUCByaW5nLCBzZWdtZW50LCBUUkIsIGFuZCBURCBmdW5jdGlvbnMgKi8KK2RtYV9h ZGRyX3QgdXNic3NwX3RyYl92aXJ0X3RvX2RtYShzdHJ1Y3QgdXNic3NwX3NlZ21lbnQgKnNlZywK KwkJCQl1bmlvbiB1c2Jzc3BfdHJiICp0cmIpOworCisvKiBVU0JTU1AgZ2FkZ2V0IGludGVyZmFj ZSovCitpbnQgdXNic3NwX2dhZGdldF9pbml0KHN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0 YSk7CitpbnQgdXNic3NwX2dhZGdldF9leGl0KHN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0 YSk7CisKIHN0YXRpYyBpbmxpbmUgY2hhciAqdXNic3NwX3Nsb3Rfc3RhdGVfc3RyaW5nKHUzMiBz dGF0ZSkKIHsKIAlzd2l0Y2ggKHN0YXRlKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi91c2Jz c3AvdXNic3NwLXBsYXQuYyBiL2RyaXZlcnMvdXNiL3VzYnNzcC91c2Jzc3AtcGxhdC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzA0ODA0NDE0OGFhCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy91c2IvdXNic3NwL3VzYnNzcC1wbGF0LmMKQEAgLTAsMCArMSwx ODYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogVVNCU1NQ IGRldmljZSBjb250cm9sbGVyIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBDYWRl bmNlLgorICoKKyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsKKyAqCisgKi8KKworI2luY2x1ZGUg PGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgv b2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvcGh5Lmg+CisjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKworI2luY2x1ZGUgImdhZGdldC5o IgorCisjZGVmaW5lIERSSVZFUl9BVVRIT1IgIlBhd2VsIExhc3pjemFrIgorI2RlZmluZSBEUklW RVJfREVTQyAiVVNCU1NQIERldmljZSBDb250cm9sbGVyIChVU0JTU1ApIERyaXZlciIKKworI2lm ZGVmIENPTkZJR19PRgorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB1c2Jzc3Bf ZGV2X29mX21hdGNoW10gPSB7CisJeworCQkuY29tcGF0aWJsZSA9ICJDYWRlbmNlLCB1c2Jzc3At ZGV2IiwKKwl9LAorCXt9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHVzYnNzcF9kZXZf b2ZfbWF0Y2gpOworI2VuZGlmCisKK2ludCB1c2Jzc3BfaXNfcGxhdGZvcm0odm9pZCkKK3sKKwly ZXR1cm4gMTsKK30KKworc3RhdGljIGludCB1c2Jzc3BfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJ c3RydWN0IHJlc291cmNlICpyZXM7CisJc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9kYXRhOwor CWludCByZXQgPSAwOworCWludCBpcnE7CisJc3RydWN0IGRldmljZSAqc3lzZGV2OworCisJaXJx ID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAoaXJxIDwgMCkgeworCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJJbmNvcnJlY3QgSVJRIG51bWJlclxuIik7CisJCXJldHVybiAtRU5PREVW OworCX0KKworCXVzYnNzcF9kYXRhID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp1c2Jzc3Bf ZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghdXNic3NwX2RhdGEpCisJCXJldHVybiAtRU5PTUVN OworCisJZm9yIChzeXNkZXYgPSAmcGRldi0+ZGV2OyBzeXNkZXY7IHN5c2RldiA9IHN5c2Rldi0+ cGFyZW50KSB7CisJCWlmIChpc19vZl9ub2RlKHN5c2Rldi0+Zndub2RlKSB8fAorCQkgICAgaXNf YWNwaV9kZXZpY2Vfbm9kZShzeXNkZXYtPmZ3bm9kZSkpCisJCQlicmVhazsKKyNpZmRlZiBDT05G SUdfUENJCisJCWVsc2UgaWYgKHN5c2Rldi0+YnVzID09ICZwY2lfYnVzX3R5cGUpCisJCQlicmVh azsKKyNlbmRpZgorCX0KKworCWlmICghc3lzZGV2KQorCQlzeXNkZXYgPSAmcGRldi0+ZGV2Owor CisJLyogVHJ5IHRvIHNldCA2NC1iaXQgRE1BIGZpcnN0ICovCisJaWYgKFdBUk5fT04oIWRldi0+ ZG1hX21hc2spKQorCQkvKiBQbGF0Zm9ybSBkaWQgbm90IGluaXRpYWxpemUgZG1hX21hc2sgKi8K KwkJcmV0ID0gZG1hX2NvZXJjZV9tYXNrX2FuZF9jb2hlcmVudChkZXYsCisJCQkJRE1BX0JJVF9N QVNLKDY0KSk7CisJZWxzZQorCQlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwg RE1BX0JJVF9NQVNLKDY0KSk7CisKKwkvKiBJZiBzZXRpbmcgNjQtYml0IERNQSBtYXNrIGZhaWxz LCBmYWxsIGJhY2sgdG8gMzItYml0IERNQSBtYXNrICovCisJaWYgKHJldCkgeworCQlyZXQgPSBk bWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShw ZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7CisJdXNic3NwX2RhdGEtPnJlZ3MgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoZGV2LCByZXMpOworCisJaWYgKElTX0VSUih1c2Jzc3BfZGF0YS0+cmVncykp IHsKKwkJcmV0ID0gUFRSX0VSUih1c2Jzc3BfZGF0YS0+cmVncyk7CisJCXJldHVybiByZXQ7CisJ fQorCisJdXNic3NwX2RhdGEtPnJzcmNfc3RhcnQgPSByZXMtPnN0YXJ0OworCXVzYnNzcF9kYXRh LT5yc3JjX2xlbiA9IHJlc291cmNlX3NpemUocmVzKTsKKworCXJldCA9IGRldm1fcmVxdWVzdF9p cnEoZGV2LCBpcnEsIHVzYnNzcF9pcnEsIElSUUZfU0hBUkVELAorCQkJZGV2X25hbWUoZGV2KSwg dXNic3NwX2RhdGEpOworCisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwl1c2Jzc3Bf ZGF0YS0+aXJxID0gaXJxOworCXVzYnNzcF9kYXRhLT5kZXYgPSBkZXY7CisJcGxhdGZvcm1fc2V0 X2RydmRhdGEocGRldiwgdXNic3NwX2RhdGEpOworCXJldCA9IHVzYnNzcF9nYWRnZXRfaW5pdCh1 c2Jzc3BfZGF0YSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHVzYnNzcF9wbGF0 X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWludCByZXQgPSAwOwor CXN0cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0YTsKKworCXVzYnNzcF9kYXRhID0gKHN0cnVj dCB1c2Jzc3BfdWRjICopcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJcmV0ID0gdXNic3Nw X2dhZGdldF9leGl0KHVzYnNzcF9kYXRhKTsKKwlyZXR1cm4gcmV0OworCit9CisKK3N0YXRpYyBp bnQgX19tYXliZV91bnVzZWQgdXNic3NwX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYp Cit7CisJc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9kYXRhID0gZGV2X2dldF9kcnZkYXRhKGRl dik7CisKKwlyZXR1cm4gdXNic3NwX3N1c3BlbmQodXNic3NwX2RhdGEsIGRldmljZV9tYXlfd2Fr ZXVwKGRldikpOworfQorCitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHVzYnNzcF9wbGF0X3Jl c3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHVzYnNzcF91ZGMgKnVzYnNzcF9k YXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlyZXR1cm4gdXNic3NwX3Jlc3VtZSh1c2Jz c3BfZGF0YSwgMCk7Cit9CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgdXNic3NwX3BsYXRf cnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdXNic3NwX3Vk YyAqdXNic3NwX2RhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXJldHVybiB1c2Jzc3Bf c3VzcGVuZCh1c2Jzc3BfZGF0YSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVz ZWQgdXNic3NwX3BsYXRfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0 cnVjdCB1c2Jzc3BfdWRjICp1c2Jzc3BfZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJ cmV0dXJuIHVzYnNzcF9yZXN1bWUodXNic3NwX2RhdGEsIDApOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRldl9wbV9vcHMgdXNic3NwX3BsYXRfcG1fb3BzID0geworCVNFVF9TWVNURU1fU0xF RVBfUE1fT1BTKHVzYnNzcF9wbGF0X3N1c3BlbmQsIHVzYnNzcF9wbGF0X3Jlc3VtZSkKKworCVNF VF9SVU5USU1FX1BNX09QUyh1c2Jzc3BfcGxhdF9ydW50aW1lX3N1c3BlbmQsCisJCQl1c2Jzc3Bf cGxhdF9ydW50aW1lX3Jlc3VtZSwKKwkJCU5VTEwpCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RyaXZlciB1c2Jzc3BfZHJpdmVyID0geworCS5wcm9iZQk9IHVzYnNzcF9wbGF0X3Byb2Jl LAorCS5yZW1vdmUJPSB1c2Jzc3BfcGxhdF9yZW1vdmUsCisJLmRyaXZlcgk9IHsKKwkJLm5hbWUg PSAidXNic3NwLWRldiIsCisJCS5wbSA9ICZ1c2Jzc3BfcGxhdF9wbV9vcHMsCisJCS5vZl9tYXRj aF90YWJsZSA9IG9mX21hdGNoX3B0cih1c2Jzc3BfZGV2X29mX21hdGNoKSwKKwl9LAorfTsKKwor c3RhdGljIGludCBfX2luaXQgdXNic3NwX3BsYXRfaW5pdCh2b2lkKQoreworCXJldHVybiBwbGF0 Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnVzYnNzcF9kcml2ZXIpOworfQorbW9kdWxlX2luaXQodXNi c3NwX3BsYXRfaW5pdCk7CisKK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2Jzc3BfcGxhdF9leGl0KHZv aWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnVzYnNzcF9kcml2ZXIpOworfQor bW9kdWxlX2V4aXQodXNic3NwX3BsYXRfZXhpdCk7CisKK01PRFVMRV9BTElBUygicGxhdGZvcm06 dXNic3MtZ2FkZ2V0Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlVTQlNTUCcgRGV2aWNlIENvbnRy b2xsZXIgKFVTQlNTUCkgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cg==