From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Griffin Subject: [PATCH v5 1/3] usb: dwc3: add ST dwc3 glue layer to manage dwc3 HC Date: Tue, 2 Sep 2014 18:08:47 +0100 Message-ID: <1409677729-6922-2-git-send-email-peter.griffin@linaro.org> References: <1409677729-6922-1-git-send-email-peter.griffin@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1409677729-6922-1-git-send-email-peter.griffin@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, balbi@ti.com, maxime.coquelin@st.com, patrice.chotard@st.com, srinivas.kandagatla@gmail.com, devicetree@vger.kernel.org, lee.jones@linaro.org, linux-usb@vger.kernel.org, linux-omap@vger.kernel.org, peppe.cavallaro@st.com Cc: peter.griffin@linaro.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHRoZSBTVCBnbHVlIGxvZ2ljIHRvIG1hbmFnZSB0aGUgRFdDMyBIQwpv biBTVGlINDA3IFNvQyBmYW1pbHkuIEl0IG1hbmFnZXMgdGhlIHBvd2VyZG93biBzaWduYWwsCmFu ZCBjb25maWd1cmVzIHRoZSBpbnRlcm5hbCBnbHVlIGxvZ2ljIGFuZCBzeXNjZmcgcmVnaXN0ZXJz LgoKU2lnbmVkLW9mZi1ieTogR2l1c2VwcGUgQ2F2YWxsYXJvIDxwZXBwZS5jYXZhbGxhcm9Ac3Qu Y29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBHcmlmZmluIDxwZXRlci5ncmlmZmluQGxpbmFyby5v cmc+CkFja2VkLWJ5OiBMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPgotLS0KIGRyaXZl cnMvdXNiL2R3YzMvS2NvbmZpZyAgIHwgICA5ICsrCiBkcml2ZXJzL3VzYi9kd2MzL01ha2VmaWxl ICB8ICAgMSArCiBkcml2ZXJzL3VzYi9kd2MzL2R3YzMtc3QuYyB8IDM3NyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzg3IGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9kd2MzL2R3YzMtc3Qu YwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzMvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL2R3 YzMvS2NvbmZpZwppbmRleCA3ODU1MTBhLi41MjM4MjUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9kd2MzL0tjb25maWcKKysrIGIvZHJpdmVycy91c2IvZHdjMy9LY29uZmlnCkBAIC04MCw2ICs4 MCwxNSBAQCBjb25maWcgVVNCX0RXQzNfS0VZU1RPTkUKIAkgIFN1cHBvcnQgb2YgVVNCMi8zIGZ1 bmN0aW9uYWxpdHkgaW4gVEkgS2V5c3RvbmUyIHBsYXRmb3Jtcy4KIAkgIFNheSAnWScgb3IgJ00n IGhlcmUgaWYgeW91IGhhdmUgb25lIHN1Y2ggZGV2aWNlCiAKK2NvbmZpZyBVU0JfRFdDM19TVAor CXRyaXN0YXRlICJTVE1pY3JvZWxlY3Ryb25pY3MgUGxhdGZvcm1zIgorCWRlcGVuZHMgb24gQVJD SF9TVEkgJiYgT0YKKwlkZWZhdWx0IFVTQl9EV0MzCisJaGVscAorCSAgU1RNaWNyb2VsZWN0cm9u aWNzIFNvQ3Mgd2l0aCBvbmUgRGVzaWduV2FyZSBDb3JlIFVTQjMgSVAKKwkgIGluc2lkZSAoaS5l LiBTVGlINDA3KS4KKwkgIFNheSAnWScgb3IgJ00nIGlmIHlvdSBoYXZlIG9uZSBzdWNoIGRldmlj ZS4KKwogY29tbWVudCAiRGVidWdnaW5nIGZlYXR1cmVzIgogCiBjb25maWcgVVNCX0RXQzNfREVC VUcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2R3YzMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9k d2MzL01ha2VmaWxlCmluZGV4IDEwYWMzZTcuLjExYzlmNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dXNiL2R3YzMvTWFrZWZpbGUKKysrIGIvZHJpdmVycy91c2IvZHdjMy9NYWtlZmlsZQpAQCAtMzMs MyArMzMsNCBAQCBvYmotJChDT05GSUdfVVNCX0RXQzNfT01BUCkJCSs9IGR3YzMtb21hcC5vCiBv YmotJChDT05GSUdfVVNCX0RXQzNfRVhZTk9TKQkJKz0gZHdjMy1leHlub3Mubwogb2JqLSQoQ09O RklHX1VTQl9EV0MzX1BDSSkJCSs9IGR3YzMtcGNpLm8KIG9iai0kKENPTkZJR19VU0JfRFdDM19L RVlTVE9ORSkJCSs9IGR3YzMta2V5c3RvbmUubworb2JqLSQoQ09ORklHX1VTQl9EV0MzX1NUKQkJ Kz0gZHdjMy1zdC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL2R3YzMtc3QuYyBiL2Ry aXZlcnMvdXNiL2R3YzMvZHdjMy1zdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM0YzE3MTcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9kd2MzL2R3YzMtc3Qu YwpAQCAtMCwwICsxLDM3NyBAQAorLyoqCisgKiBkd2MzLXN0LmMgU3VwcG9ydCBmb3IgZHdjMyBw bGF0Zm9ybSBkZXZpY2VzIG9uIFNUIE1pY3JvZWxlY3Ryb25pY3MgcGxhdGZvcm1zCisgKgorICog VGhpcyBpcyBhIHNtYWxsIGRyaXZlciBmb3IgdGhlIGR3YzMgdG8gcHJvdmlkZSB0aGUgZ2x1ZSBs b2dpYworICogdG8gY29uZmlndXJlIHRoZSBjb250cm9sbGVyLiBUZXN0ZWQgb24gU1RpIHBsYXRm b3Jtcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU3RtaWNyb2VsZWN0cm9uaWNzCisgKgor ICogQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gPHBlcHBlLmNhdmFsbGFyb0BzdC5jb20+Cisg KiBDb250cmlidXRvcnM6IEF5bWVuIEJvdWF0dGF5IDxheW1lbi5ib3VhdHRheUBzdC5jb20+Cisg KiAgICAgICAgICAgICAgIFBldGVyIEdyaWZmaW4gPHBldGVyLmdyaWZmaW5AbGluYXJvLm9yZz4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEluc3BpcmVkIGJ5IGR3YzMt b21hcC5jIGFuZCBkd2MzLWV4eW5vcy5jLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9kZWxheS5o PgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cisj aW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5j bHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cisj aW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KKyNpbmNs dWRlIDxsaW51eC91c2Ivb2YuaD4KKworI2luY2x1ZGUgImNvcmUuaCIKKyNpbmNsdWRlICJpby5o IgorCisvKiBnbHVlIHJlZ2lzdGVycyAqLworI2RlZmluZSBDTEtSU1RfQ1RSTAkJMHgwMAorI2Rl ZmluZSBBVVhfQ0xLX0VOCQlCSVQoMCkKKyNkZWZpbmUgU1dfUElQRVdfUkVTRVRfTglCSVQoNCkK KyNkZWZpbmUgRVhUX0NGR19SRVNFVF9OCQlCSVQoOCkKKy8qCisgKiAxJ2IwIDogVGhlIGhvc3Qg Y29udHJvbGxlciBjb21wbGllcyB3aXRoIHRoZSB4SENJIHJldmlzaW9uIDAuOTYKKyAqIDEnYjEg OiBUaGUgaG9zdCBjb250cm9sbGVyIGNvbXBsaWVzIHdpdGggdGhlIHhIQ0kgcmV2aXNpb24gMS4w CisgKi8KKyNkZWZpbmUgWEhDSV9SRVZJU0lPTgkJQklUKDEyKQorCisjZGVmaW5lIFVTQjJfVkJV U19NTkdNTlRfU0VMMQkweDJDCisvKgorICogRm9yIGFsbCBmaWVsZHMgaW4gVVNCMl9WQlVTX01O R01OVF9TRUwxCisgKiAy4oCZYjAwIDogT3ZlcnJpZGUgdmFsdWUgZnJvbSBSZWcgMHgzMCBpcyBz ZWxlY3RlZAorICogMuKAmWIwMSA6IHV0bWlvdGdfPHNpZ25hbF9uYW1lPiBmcm9tIHVzYjNfdG9w IGlzIHNlbGVjdGVkCisgKiAy4oCZYjEwIDogcGlwZXdfPHNpZ25hbF9uYW1lPiBmcm9tIFBJUEVX IGluc3RhbmNlIGlzIHNlbGVjdGVkCisgKiAy4oCZYjExIDogdmFsdWUgaXMgMSdiMAorICovCisj ZGVmaW5lIFVTQjJfVkJVU19SRUczMAkJMHgwCisjZGVmaW5lIFVTQjJfVkJVU19VVE1JT1RHCTB4 MQorI2RlZmluZSBVU0IyX1ZCVVNfUElQRVcJCTB4MgorI2RlZmluZSBVU0IyX1ZCVVNfWkVSTwkJ MHgzCisKKyNkZWZpbmUgU0VMX09WRVJSSURFX1ZCVVNWQUxJRChuKQkobiA8PCAwKQorI2RlZmlu ZSBTRUxfT1ZFUlJJREVfUE9XRVJQUkVTRU5UKG4pCShuIDw8IDQpCisjZGVmaW5lIFNFTF9PVkVS UklERV9CVkFMSUQobikJCShuIDw8IDgpCisKKy8qIFN0YXRpYyBEUkQgY29uZmlndXJhdGlvbiAq LworI2RlZmluZSBVU0IzX0NPTlRST0xfTUFTSwkJMHhmNzcKKworI2RlZmluZSBVU0IzX0RFVklD RV9OT1RfSE9TVAkJQklUKDApCisjZGVmaW5lIFVTQjNfRk9SQ0VfVkJVU1ZBTElECQlCSVQoMSkK KyNkZWZpbmUgVVNCM19ERUxBWV9WQlVTVkFMSUQJCUJJVCgyKQorI2RlZmluZSBVU0IzX1NFTF9G T1JDRV9PUE1PREUJCUJJVCg0KQorI2RlZmluZSBVU0IzX0ZPUkNFX09QTU9ERShuKQkJKG4gPDwg NSkKKyNkZWZpbmUgVVNCM19TRUxfRk9SQ0VfRFBQVUxMRE9XTjIJQklUKDgpCisjZGVmaW5lIFVT QjNfRk9SQ0VfRFBQVUxMRE9XTjIJCUJJVCg5KQorI2RlZmluZSBVU0IzX1NFTF9GT1JDRV9ETVBV TExET1dOMglCSVQoMTApCisjZGVmaW5lIFVTQjNfRk9SQ0VfRE1QVUxMRE9XTjIJCUJJVCgxMSkK KworLyoqCisgKiBzdHJ1Y3Qgc3RfZHdjMyAtIGR3YzMtc3QgZHJpdmVyIHByaXZhdGUgc3RydWN0 dXJlCisgKiBAZGV2OgkJZGV2aWNlIHBvaW50ZXIKKyAqIEBnbHVlX2Jhc2U6CQlpb2FkZHIgZm9y IHRoZSBnbHVlIHJlZ2lzdGVycworICogQHJlZ21hcDoJCXJlZ21hcCBwb2ludGVyIGZvciBnZXR0 aW5nIHN5c2NmZworICogQHN5c2NmZ19yZWdfb2ZmOgl1c2Igc3lzY2ZnIGNvbnRyb2wgb2Zmc2V0 CisgKiBAZHJfbW9kZToJCWRyZCBzdGF0aWMgaG9zdC9kZXZpY2UgY29uZmlnCisgKiBAcnN0Y19w d3JkbjoJCXJlc3QgY29udHJvbGxlciBmb3IgcG93ZXJkb3duIHNpZ25hbAorICogQHJzdGNfcnN0 OgkJcmVzZXQgY29udHJvbGxlciBmb3Igc29mdHJlc2V0IHNpZ25hbAorICovCisKK3N0cnVjdCBz dF9kd2MzIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJdm9pZCBfX2lvbWVtICpnbHVlX2Jhc2U7 CisJc3RydWN0IHJlZ21hcCAqcmVnbWFwOworCWludCBzeXNjZmdfcmVnX29mZjsKKwllbnVtIHVz Yl9kcl9tb2RlIGRyX21vZGU7CisJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdGNfcHdyZG47CisJ c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdGNfcnN0OworfTsKKworc3RhdGljIGlubGluZSB1MzIg c3RfZHdjM19yZWFkbCh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQpCit7CisJcmV0dXJu IHJlYWRsX3JlbGF4ZWQoYmFzZSArIG9mZnNldCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBz dF9kd2MzX3dyaXRlbCh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBvZmZzZXQsIHUzMiB2YWx1ZSkK K3sKKwl3cml0ZWxfcmVsYXhlZCh2YWx1ZSwgYmFzZSArIG9mZnNldCk7Cit9CisKKy8qKgorICog c3RfZHdjM19kcmRfaW5pdDogcHJvZ3JhbSB0aGUgcG9ydAorICogQGR3YzNfZGF0YTogZHJpdmVy IHByaXZhdGUgc3RydWN0dXJlCisgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBpcyB0byBw cm9ncmFtIHRoZSBwb3J0IGFzIGVpdGhlciBob3N0IG9yIGRldmljZQorICogYWNjb3JkaW5nIHRv IHRoZSBzdGF0aWMgY29uZmlndXJhdGlvbiBwYXNzZWQgZnJvbSBkZXZpY2V0cmVlLgorICogT1RH IGFuZCBkdWFsIHJvbGUgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIQorICovCitzdGF0aWMgaW50IHN0 X2R3YzNfZHJkX2luaXQoc3RydWN0IHN0X2R3YzMgKmR3YzNfZGF0YSkKK3sKKwl1MzIgdmFsOwor CWludCBlcnI7CisKKwllcnIgPSByZWdtYXBfcmVhZChkd2MzX2RhdGEtPnJlZ21hcCwgZHdjM19k YXRhLT5zeXNjZmdfcmVnX29mZiwgJnZhbCk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwor CXZhbCAmPSBVU0IzX0NPTlRST0xfTUFTSzsKKworCXN3aXRjaCAoZHdjM19kYXRhLT5kcl9tb2Rl KSB7CisJY2FzZSBVU0JfRFJfTU9ERV9QRVJJUEhFUkFMOgorCisJCXZhbCAmPSB+KFVTQjNfRk9S Q0VfVkJVU1ZBTElEIHwgVVNCM19ERUxBWV9WQlVTVkFMSUQKKwkJCXwgVVNCM19TRUxfRk9SQ0Vf T1BNT0RFIHwgVVNCM19GT1JDRV9PUE1PREUoMHgzKQorCQkJfCBVU0IzX1NFTF9GT1JDRV9EUFBV TExET1dOMiB8IFVTQjNfRk9SQ0VfRFBQVUxMRE9XTjIKKwkJCXwgVVNCM19TRUxfRk9SQ0VfRE1Q VUxMRE9XTjIgfCBVU0IzX0ZPUkNFX0RNUFVMTERPV04yKTsKKworCQl2YWwgfD0gVVNCM19ERVZJ Q0VfTk9UX0hPU1Q7CisKKwkJZGV2X2RiZyhkd2MzX2RhdGEtPmRldiwgIkNvbmZpZ3VyaW5nIGFz IERldmljZVxuIik7CisJCWJyZWFrOworCisJY2FzZSBVU0JfRFJfTU9ERV9IT1NUOgorCisJCXZh bCAmPSB+KFVTQjNfREVWSUNFX05PVF9IT1NUIHwgVVNCM19GT1JDRV9WQlVTVkFMSUQKKwkJCXwg VVNCM19TRUxfRk9SQ0VfT1BNT0RFCXwgVVNCM19GT1JDRV9PUE1PREUoMHgzKQorCQkJfCBVU0Iz X1NFTF9GT1JDRV9EUFBVTExET1dOMiB8IFVTQjNfRk9SQ0VfRFBQVUxMRE9XTjIKKwkJCXwgVVNC M19TRUxfRk9SQ0VfRE1QVUxMRE9XTjIgfCBVU0IzX0ZPUkNFX0RNUFVMTERPV04yKTsKKworCQkv KgorCQkgKiBVU0IzX0RFTEFZX1ZCVVNWQUxJRCBpcyBBTkRlZCB3aXRoIFVTQl9DX1ZCVVNWQUxJ RC4gVGh1cywKKwkJICogd2hlbiBzZXQgdG8g4oCYMOKAmCwgaXQgY2FuIGRlbGF5IHRoZSBhcnJp dmFsIG9mIFZCVVNWQUxJRAorCQkgKiBpbmZvcm1hdGlvbiB0byBWQlVTVkxERVhUMiBpbnB1dCBv ZiB0aGUgcGljbyBQSFkuCisJCSAqIFdlIGRvbid0IHdhbnQgdG8gZG8gdGhhdCBzbyB3ZSBzZXQg dGhlIGJpdCB0byAnMScuCisJCSAqLworCisJCXZhbCB8PSBVU0IzX0RFTEFZX1ZCVVNWQUxJRDsK KworCQlkZXZfZGJnKGR3YzNfZGF0YS0+ZGV2LCAiQ29uZmlndXJpbmcgYXMgSG9zdFxuIik7CisJ CWJyZWFrOworCisJZGVmYXVsdDoKKwkJZGV2X2Vycihkd2MzX2RhdGEtPmRldiwgIlVuc3VwcG9y dGVkIG1vZGUgb2Ygb3BlcmF0aW9uICVkXG4iLAorCQkJZHdjM19kYXRhLT5kcl9tb2RlKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIHJlZ21hcF93cml0ZShkd2MzX2RhdGEtPnJl Z21hcCwgZHdjM19kYXRhLT5zeXNjZmdfcmVnX29mZiwgdmFsKTsKK30KKworLyoqCisgKiBzdF9k d2MzX2luaXQ6IGluaXQgdGhlIGNvbnRyb2xsZXIgdmlhIGdsdWUgbG9naWMKKyAqIEBkd2MzX2Rh dGE6IGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZQorICovCitzdGF0aWMgdm9pZCBzdF9kd2MzX2lu aXQoc3RydWN0IHN0X2R3YzMgKmR3YzNfZGF0YSkKK3sKKwl1MzIgcmVnID0gc3RfZHdjM19yZWFk bChkd2MzX2RhdGEtPmdsdWVfYmFzZSwgQ0xLUlNUX0NUUkwpOworCisJcmVnIHw9IEFVWF9DTEtf RU4gfCBFWFRfQ0ZHX1JFU0VUX04gfCBYSENJX1JFVklTSU9OOworCXJlZyAmPSB+U1dfUElQRVdf UkVTRVRfTjsKKwlzdF9kd2MzX3dyaXRlbChkd2MzX2RhdGEtPmdsdWVfYmFzZSwgQ0xLUlNUX0NU UkwsIHJlZyk7CisKKwkvKiBjb25maWd1cmUgbXV4IGZvciB2YnVzLCBwb3dlcnByZXNlbnQgYW5k IGJ2YWxpZCBzaWduYWxzICovCisJcmVnID0gc3RfZHdjM19yZWFkbChkd2MzX2RhdGEtPmdsdWVf YmFzZSwgVVNCMl9WQlVTX01OR01OVF9TRUwxKTsKKworCXJlZyB8PSBTRUxfT1ZFUlJJREVfVkJV U1ZBTElEKFVTQjJfVkJVU19VVE1JT1RHKSB8CisJCVNFTF9PVkVSUklERV9QT1dFUlBSRVNFTlQo VVNCMl9WQlVTX1VUTUlPVEcpIHwKKwkJU0VMX09WRVJSSURFX0JWQUxJRChVU0IyX1ZCVVNfVVRN SU9URyk7CisKKwlzdF9kd2MzX3dyaXRlbChkd2MzX2RhdGEtPmdsdWVfYmFzZSwgVVNCMl9WQlVT X01OR01OVF9TRUwxLCByZWcpOworCisJcmVnID0gc3RfZHdjM19yZWFkbChkd2MzX2RhdGEtPmds dWVfYmFzZSwgQ0xLUlNUX0NUUkwpOworCXJlZyB8PSBTV19QSVBFV19SRVNFVF9OOworCXN0X2R3 YzNfd3JpdGVsKGR3YzNfZGF0YS0+Z2x1ZV9iYXNlLCBDTEtSU1RfQ1RSTCwgcmVnKTsKK30KKwor c3RhdGljIGludCBzdF9kd2MzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJc3RydWN0IHN0X2R3YzMgKmR3YzNfZGF0YTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9k ZSA9IGRldi0+b2Zfbm9kZSwgKmNoaWxkOworCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKKwlpbnQg cmV0OworCisJZHdjM19kYXRhID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpkd2MzX2RhdGEp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWR3YzNfZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwly ZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAi cmVnLWdsdWUiKTsKKwlkd2MzX2RhdGEtPmdsdWVfYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUihkd2MzX2RhdGEtPmdsdWVfYmFzZSkpCisJCXJldHVy biBQVFJfRVJSKGR3YzNfZGF0YS0+Z2x1ZV9iYXNlKTsKKworCXJlZ21hcCA9IHN5c2Nvbl9yZWdt YXBfbG9va3VwX2J5X3BoYW5kbGUobm9kZSwgInN0LHN5c2NmZyIpOworCWlmIChJU19FUlIocmVn bWFwKSkKKwkJcmV0dXJuIFBUUl9FUlIocmVnbWFwKTsKKworCWRtYV9zZXRfY29oZXJlbnRfbWFz ayhkZXYsIGRldi0+Y29oZXJlbnRfZG1hX21hc2spOworCWR3YzNfZGF0YS0+ZGV2ID0gZGV2Owor CWR3YzNfZGF0YS0+cmVnbWFwID0gcmVnbWFwOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291 cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwgInN5c2NmZy1yZWciKTsKKwlpZiAoIXJl cykgeworCQlyZXQgPSAtRU5YSU87CisJCWdvdG8gdW5kb19wbGF0Zm9ybV9kZXZfYWxsb2M7CisJ fQorCisJZHdjM19kYXRhLT5zeXNjZmdfcmVnX29mZiA9IHJlcy0+c3RhcnQ7CisKKwlkZXZfdmRi ZygmcGRldi0+ZGV2LCAiZ2x1ZS1sb2dpYyBhZGRyIDB4JXAsIHN5c2NmZy1yZWcgb2Zmc2V0IDB4 JXhcbiIsCisJCSBkd2MzX2RhdGEtPmdsdWVfYmFzZSwgZHdjM19kYXRhLT5zeXNjZmdfcmVnX29m Zik7CisKKwlkd2MzX2RhdGEtPnJzdGNfcHdyZG4gPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRl diwgInBvd2VyZG93biIpOworCWlmIChJU19FUlIoZHdjM19kYXRhLT5yc3RjX3B3cmRuKSkgewor CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjb3VsZCBub3QgZ2V0IHBvd2VyIGNvbnRyb2xsZXJcbiIp OworCQlyZXQgPSBQVFJfRVJSKGR3YzNfZGF0YS0+cnN0Y19wd3Jkbik7CisJCWdvdG8gdW5kb19w bGF0Zm9ybV9kZXZfYWxsb2M7CisJfQorCisJLyogTWFuYWdlIFBvd2VyRG93biAqLworCXJlc2V0 X2NvbnRyb2xfZGVhc3NlcnQoZHdjM19kYXRhLT5yc3RjX3B3cmRuKTsKKworCWR3YzNfZGF0YS0+ cnN0Y19yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRldiwgInNvZnRyZXNldCIpOworCWlm IChJU19FUlIoZHdjM19kYXRhLT5yc3RjX3JzdCkpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAi Y291bGQgbm90IGdldCByZXNldCBjb250cm9sbGVyXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihkd2Mz X2RhdGEtPnJzdGNfcHdyZG4pOworCQlnb3RvIHVuZG9fcG93ZXJkb3duOworCX0KKworCS8qIE1h bmFnZSBTb2Z0UmVzZXQgKi8KKwlyZXNldF9jb250cm9sX2RlYXNzZXJ0KGR3YzNfZGF0YS0+cnN0 Y19yc3QpOworCisJY2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShub2RlLCAiZHdjMyIpOwor CWlmICghY2hpbGQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGZpbmQgZHdj MyBjb3JlIG5vZGVcbiIpOworCQlyZXQgPSAtRU5PREVWOworCQlnb3RvIHVuZG9fc29mdHJlc2V0 OworCX0KKworCWR3YzNfZGF0YS0+ZHJfbW9kZSA9IG9mX3VzYl9nZXRfZHJfbW9kZShjaGlsZCk7 CisKKwkvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29yZSAqLworCXJldCA9IG9mX3Bs YXRmb3JtX3BvcHVsYXRlKG5vZGUsIE5VTEwsIE5VTEwsIGRldik7CisJaWYgKHJldCkgeworCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBhZGQgZHdjMyBjb3JlXG4iKTsKKwkJZ290byB1bmRvX3Nv ZnRyZXNldDsKKwl9CisKKwkvKgorCSAqIENvbmZpZ3VyZSB0aGUgVVNCIHBvcnQgYXMgZGV2aWNl IG9yIGhvc3QgYWNjb3JkaW5nIHRvIHRoZSBzdGF0aWMKKwkgKiBjb25maWd1cmF0aW9uIHBhc3Nl ZCBmcm9tIERULgorCSAqIERSRCBpcyB0aGUgb25seSBtb2RlIGN1cnJlbnRseSBzdXBwb3J0ZWQg c28gdGhpcyB3aWxsIGJlIGVuaGFuY2VkCisJICogYXMgc29vbiBhcyBPVEcgaXMgYXZhaWxhYmxl LgorCSAqLworCXJldCA9IHN0X2R3YzNfZHJkX2luaXQoZHdjM19kYXRhKTsKKwlpZiAocmV0KSB7 CisJCWRldl9lcnIoZGV2LCAiZHJkIGluaXRpYWxpc2F0aW9uIGZhaWxlZFxuIik7CisJCWdvdG8g dW5kb19zb2Z0cmVzZXQ7CisJfQorCisJLyogU1QgZ2x1ZSBsb2dpYyBpbml0ICovCisJc3RfZHdj M19pbml0KGR3YzNfZGF0YSk7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkd2MzX2Rh dGEpOworCXJldHVybiAwOworCit1bmRvX3NvZnRyZXNldDoKKwlyZXNldF9jb250cm9sX2Fzc2Vy dChkd2MzX2RhdGEtPnJzdGNfcnN0KTsKK3VuZG9fcG93ZXJkb3duOgorCXJlc2V0X2NvbnRyb2xf YXNzZXJ0KGR3YzNfZGF0YS0+cnN0Y19wd3Jkbik7Cit1bmRvX3BsYXRmb3JtX2Rldl9hbGxvYzoK KwlwbGF0Zm9ybV9kZXZpY2VfcHV0KHBkZXYpOworCXJldHVybiByZXQ7Cit9CisKKworc3RhdGlj IGludCBzdF9kd2MzX3JlbW92ZV9jaGlsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmMpCit7 CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYp OworCisJb2ZfZGV2aWNlX3VucmVnaXN0ZXIocGRldik7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBzdF9kd2MzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQorewor CXN0cnVjdCBzdF9kd2MzICpkd2MzX2RhdGEgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK KworCWRldmljZV9mb3JfZWFjaF9jaGlsZCgmcGRldi0+ZGV2LCBOVUxMLCBzdF9kd2MzX3JlbW92 ZV9jaGlsZCk7CisKKwlyZXNldF9jb250cm9sX2Fzc2VydChkd2MzX2RhdGEtPnJzdGNfcHdyZG4p OworCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGR3YzNfZGF0YS0+cnN0Y19yc3QpOworCisJcmV0dXJu IDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0YXRpYyBpbnQgc3RfZHdjM19zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgc3RfZHdjMyAqZHdjM19kYXRhID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlyZXNldF9jb250cm9sX2Fzc2VydChkd2MzX2RhdGEt PnJzdGNfcHdyZG4pOworCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGR3YzNfZGF0YS0+cnN0Y19yc3Qp OworCisJcGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUoZGV2KTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHN0X2R3YzNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlz dHJ1Y3Qgc3RfZHdjMyAqZHdjM19kYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJl dDsKKworCXBpbmN0cmxfcG1fc2VsZWN0X2RlZmF1bHRfc3RhdGUoZGV2KTsKKworCXJlc2V0X2Nv bnRyb2xfZGVhc3NlcnQoZHdjM19kYXRhLT5yc3RjX3B3cmRuKTsKKwlyZXNldF9jb250cm9sX2Rl YXNzZXJ0KGR3YzNfZGF0YS0+cnN0Y19yc3QpOworCisJcmV0ID0gc3RfZHdjM19kcmRfaW5pdChk d2MzX2RhdGEpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJkcmQgaW5pdGlhbGlzYXRp b24gZmFpbGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBTVCBnbHVlIGxvZ2ljIGlu aXQgKi8KKwlzdF9kd2MzX2luaXQoZHdjM19kYXRhKTsKKworCXJldHVybiAwOworfQorI2VuZGlm IC8qIENPTkZJR19QTV9TTEVFUCAqLworCitzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoc3RfZHdj M19kZXZfcG1fb3BzLCBzdF9kd2MzX3N1c3BlbmQsIHN0X2R3YzNfcmVzdW1lKTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgc3RfZHdjM19tYXRjaFtdID0geworCXsgLmNvbXBh dGlibGUgPSAic3Qsc3RpaDQwNy1kd2MzIiB9LAorCXsgLyogc2VudGluZWwgKi8gfSwKK307CisK K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0X2R3YzNfbWF0Y2gpOworCitzdGF0aWMgc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBzdF9kd2MzX2RyaXZlciA9IHsKKwkucHJvYmUgPSBzdF9kd2MzX3By b2JlLAorCS5yZW1vdmUgPSBzdF9kd2MzX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9 ICJ1c2Itc3QtZHdjMyIsCisJCS5vZl9tYXRjaF90YWJsZSA9IHN0X2R3YzNfbWF0Y2gsCisJCS5w bSA9ICZzdF9kd2MzX2Rldl9wbV9vcHMsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2 ZXIoc3RfZHdjM19kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJHaXVzZXBwZSBDYXZhbGxhcm8g PHBlcHBlLmNhdmFsbGFyb0BzdC5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkRlc2lnbldh cmUgVVNCMyBTVGkgR2x1ZSBMYXllciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotLSAK MS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg==