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: [RFC,v1,13/14] usb:cdns3: Adds debugging function. From: Roger Quadros Message-Id: <5BE40331.90107@ti.com> Date: Thu, 8 Nov 2018 11:34:41 +0200 To: Pawel Laszczak , gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, adouglas@cadence.com, jbergsagel@ti.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com List-ID: SGksCgpPbiAwMy8xMS8xOCAxOTo1MSwgUGF3ZWwgTGFzemN6YWsgd3JvdGU6Cj4gUGF0Y2ggaW1w bGVtZW50cyBzb21lIGZ1bmN0aW9uIHVzZWQgZm9yIGRlYnVnZ2luZyBkcml2ZXIuCj4gCj4gU2ln bmVkLW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgfCAgIDIgKy0KPiAgZHJpdmVycy91c2IvY2RuczMv ZGVidWcuYyAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBk cml2ZXJzL3VzYi9jZG5zMy9lcDAuYyAgICB8ICAgMyArCj4gIGRyaXZlcnMvdXNiL2NkbnMzL2dh ZGdldC5jIHwgIDEyICsrKysKPiAgZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmggfCAgMTMgKysr LQo+ICA1IGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvZGVidWcuYwo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL2NkbnMzL01h a2VmaWxlCj4gaW5kZXggZjRjZmM5Nzg2MjZmLi4zNGU2MGQwM2M0ZWMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9NYWtl ZmlsZQo+IEBAIC0yLDYgKzIsNiBAQCBvYmotJChDT05GSUdfVVNCX0NETlMzKQkJCSs9IGNkbnMz Lm8KPiAgb2JqLSQoQ09ORklHX1VTQl9DRE5TM19QQ0lfV1JBUCkJKz0gY2RuczMtcGNpLm8KPiAg Cj4gIGNkbnMzLXkJCQkJCTo9IGNvcmUubyBkcmQubwo+IC1jZG5zMy0kKENPTkZJR19VU0JfQ0RO UzNfR0FER0VUKQkrPSBnYWRnZXQubyBlcDAubwo+ICtjZG5zMy0kKENPTkZJR19VU0JfQ0ROUzNf R0FER0VUKQkrPSBnYWRnZXQubyBlcDAubyBkZWJ1Zy5vCj4gIGNkbnMzLSQoQ09ORklHX1VTQl9D RE5TM19IT1NUKQkJKz0gaG9zdC5vCj4gIGNkbnMzLXBjaS15CQkgCQk6PSBjZG5zMy1wY2ktd3Jh cC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2RlYnVnLmMgYi9kcml2ZXJzL3Vz Yi9jZG5zMy9kZWJ1Zy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAw MDAuLmJlYmYyMmM0ZDE4ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3VzYi9jZG5z My9kZWJ1Zy5jCj4gQEAgLTAsMCArMSwxMjggQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ2FkZW5jZSBVU0JTUyBEUkQgRHJpdmVyLgo+ICsgKgo+ ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggQ2FkZW5jZS4KPiArICoKPiArICogQXV0aG9yOiBQYXdl bCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJn YWRnZXQuaCIKPiArCj4gK3N0YXRpYyBpbmxpbmUgY2hhciAqY2RuczNfZGVjb2RlX2VwX2lycSh1 MzIgZXBfc3RzLCBjb25zdCBjaGFyICplcF9uYW1lKQo+ICt7Cj4gKwlzdGF0aWMgY2hhciBzdHJb MjU2XTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gc3ByaW50ZihzdHIsICJJUlEgZm9yICVz OiAlMDh4ICIsIGVwX25hbWUsIGVwX3N0cyk7Cj4gKwo+ICsJaWYgKGVwX3N0cyAmIEVQX1NUU19T RVRVUCkKPiArCQlyZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJTRVRVUCAiKTsKPiArCWlmIChl cF9zdHMgJiBFUF9TVFNfSU9DKQo+ICsJCXJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIklPQyAi KTsKPiArCWlmIChlcF9zdHMgJiBFUF9TVFNfSVNQKQo+ICsJCXJldCArPSBzcHJpbnRmKHN0ciAr IHJldCwgIklTUCAiKTsKPiArCWlmIChlcF9zdHMgJiBFUF9TVFNfREVTQ01JUykKPiArCQlyZXQg Kz0gc3ByaW50ZihzdHIgKyByZXQsICJERVNDTUlTICIpOwo+ICsJaWYgKGVwX3N0cyAmIEVQX1NU U19TVFJFQU1SKQo+ICsJCXJldCArPSBzcHJpbnRmKHN0ciArIHJldCwgIlNUUkVBTVIgIik7Cj4g KwlpZiAoZXBfc3RzICYgRVBfU1RTX01EX0VYSVQpCj4gKwkJcmV0ICs9IHNwcmludGYoc3RyICsg cmV0LCAiTURfRVhJVCAiKTsKPiArCWlmIChlcF9zdHMgJiBFUF9TVFNfVFJCRVJSKQo+ICsJCXJl dCArPSBzcHJpbnRmKHN0ciArIHJldCwgIlRSQkVSUiAiKTsKPiArCWlmIChlcF9zdHMgJiBFUF9T VFNfTlJEWSkKPiArCQlyZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJOUkRZICIpOwo+ICsJaWYg KGVwX3N0cyAmIEVQX1NUU19QUklNRSkKPiArCQlyZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJQ UklNRSAiKTsKPiArCWlmIChlcF9zdHMgJiBFUF9TVFNfU0lERVJSKQo+ICsJCXJldCArPSBzcHJp bnRmKHN0ciArIHJldCwgIlNJREVSUlQgIik7Cj4gKwlpZiAoZXBfc3RzICYgRVBfU1RTX09VVFNN TSkKPiArCQlyZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJPVVRTTU0gIik7Cj4gKwlpZiAoZXBf c3RzICYgRVBfU1RTX0lTT0VSUikKPiArCQlyZXQgKz0gc3ByaW50ZihzdHIgKyByZXQsICJJU09F UlIgIik7Cj4gKwlpZiAoZXBfc3RzICYgRVBfU1RTX0lPVCkKPiArCQlyZXQgKz0gc3ByaW50Zihz dHIgKyByZXQsICJJT1QgIik7Cj4gKwo+ICsJcmV0dXJuIHN0cjsKPiArfQo+ICsKPiArY2hhciAq Y2RuczNfZGVjb2RlX2VweF9pcnEoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQo+ICt7 Cj4gKwlzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiA9IHByaXZfZXAtPmNkbnMzX2RldjsK PiArCj4gKwlyZXR1cm4gY2RuczNfZGVjb2RlX2VwX2lycShyZWFkbCgmcHJpdl9kZXYtPnJlZ3Mt PmVwX3N0cyksCj4gKwkJCQkgICBwcml2X2VwLT5uYW1lKTsKPiArfQo+ICsKPiArY2hhciAqY2Ru czNfZGVjb2RlX2VwMF9pcnEoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIGludCBkaXIp Cj4gK3sKPiArCWlmIChkaXIpCj4gKwkJcmV0dXJuIGNkbnMzX2RlY29kZV9lcF9pcnEocmVhZGwo JnByaXZfZGV2LT5yZWdzLT5lcF9zdHMpLAo+ICsJCQkJCSAgICJlcDBJTiIpOwo+ICsJZWxzZQo+ ICsJCXJldHVybiBjZG5zM19kZWNvZGVfZXBfaXJxKHJlYWRsKCZwcml2X2Rldi0+cmVncy0+ZXBf c3RzKSwKPiArCQkJCQkgICAiZXAwT1VUIik7Cj4gK30KPiArCj4gK3ZvaWQgY2RuczNfZGJnX3Nl dHVwKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdXNiX2N0 cmxyZXF1ZXN0ICpzZXR1cCA9IHByaXZfZGV2LT5zZXR1cDsKPiArCj4gKwlkZXZfZGJnKCZwcml2 X2Rldi0+ZGV2LAo+ICsJCSJTRVRVUCBCUlQ6ICUwMnggQlI6ICUwMnggVjogJTA0eCBJOiAlMDR4 IEw6ICUwNHhcbiIsCj4gKwkJc2V0dXAtPmJSZXF1ZXN0VHlwZSwKPiArCQlzZXR1cC0+YlJlcXVl c3QsCj4gKwkJbGUxNl90b19jcHUoc2V0dXAtPndWYWx1ZSksCj4gKwkJbGUxNl90b19jcHUoc2V0 dXAtPndJbmRleCksCj4gKwkJbGUxNl90b19jcHUoc2V0dXAtPndMZW5ndGgpKTsKPiArfQo+ICsK PiArLyoqCj4gKyAqIERlYnVnIGEgdHJhbnNmZXIgcmluZy4KPiArICoKPiArICogUHJpbnRzIG91 dCBhbGwgVFJCcyBpbiB0aGUgZW5kcG9pbnQgcmluZywgZXZlbiB0aG9zZSBhZnRlciB0aGUgTGlu ayBUUkIuCj4gKyAqLgo+ICsgKi8KPiArdm9pZCBjZG5zM19kYmdfcmluZyhzdHJ1Y3QgY2RuczNf ZGV2aWNlICpwcml2X2RldiwKPiArCQkgICAgc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2Vw KQo+ICt7Cj4gKwl1NjQgYWRkciA9IHByaXZfZXAtPnRyYl9wb29sX2RtYTsKPiArCXN0cnVjdCBj ZG5zM190cmIgKnRyYjsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBUUkJTX1BF Ul9TRUdNRU5UOyArK2kpIHsKPiArCQl0cmIgPSAmcHJpdl9lcC0+dHJiX3Bvb2xbaV07Cj4gKwkJ ZGV2X2RiZygmcHJpdl9kZXYtPmRldiwgIkAlMDE2bGx4ICUwOHggJTA4eCAlMDh4XG4iLCBhZGRy LAo+ICsJCQlsZTMyX3RvX2NwdSh0cmItPmJ1ZmZlciksCj4gKwkJCWxlMzJfdG9fY3B1KHRyYi0+ bGVuZ3RoKSwKPiArCQkJbGUzMl90b19jcHUodHJiLT5jb250cm9sKSk7Cj4gKwkJYWRkciArPSBz aXplb2YoKnRyYik7Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgY2RuczNfZGJnX3JpbmdfcHRycyhz dHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwKPiArCQkJIHN0cnVjdCBjZG5zM19lbmRwb2lu dCAqcHJpdl9lcCkKPiArewo+ICsJc3RydWN0IGNkbnMzX3RyYiAqdHJiOwo+ICsKPiArCXRyYiA9 ICZwcml2X2VwLT50cmJfcG9vbFtwcml2X2VwLT5kZXF1ZXVlXTsKPiArCWRldl9kYmcoJnByaXZf ZGV2LT5kZXYsCj4gKwkJIlJpbmcgZGVxIGluZGV4OiAlZCwgdHJiOiAlcCAodmlydCksIDB4JWxs eCAoZG1hKVxuIiwKPiArCQlwcml2X2VwLT5kZXF1ZXVlLCB0cmIsCj4gKwkJY2RuczNfdHJiX3Zp cnRfdG9fZG1hKHByaXZfZXAsIHRyYikpOwo+ICsKPiArCXRyYiA9ICZwcml2X2VwLT50cmJfcG9v bFtwcml2X2VwLT5lbnF1ZXVlXTsKPiArCWRldl9kYmcoJnByaXZfZGV2LT5kZXYsCj4gKwkJIlJp bmcgZW5xIGluZGV4OiAlZCwgdHJiOiAlcCAodmlydCksIDB4JWxseCAoZG1hKVxuIiwKPiArCQlw cml2X2VwLT5lbnF1ZXVlLCB0cmIsCj4gKwkJY2RuczNfdHJiX3ZpcnRfdG9fZG1hKHByaXZfZXAs IHRyYikpOwo+ICt9Cj4gKwo+ICt2b2lkIGNkbnMzX2RiZ19lcF9yaW5ncyhzdHJ1Y3QgY2RuczNf ZGV2aWNlICpwcml2X2RldiwKPiArCQkJc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKQo+ ICt7Cj4gKwlkZXZfZGJnKCZwcml2X2Rldi0+ZGV2LCAiRW5kcG9pbnQgcmluZyAlczpcbiIsIHBy aXZfZXAtPm5hbWUpOwo+ICsKPiArCWNkbnMzX2RiZ19yaW5nX3B0cnMocHJpdl9kZXYsIHByaXZf ZXApOwo+ICsJY2RuczNfZGJnX3JpbmcocHJpdl9kZXYsIHByaXZfZXApOwo+ICt9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2VwMC5jIGIvZHJpdmVycy91c2IvY2RuczMvZXAwLmMK PiBpbmRleCA1NTVhYzdmNjg0MmUuLjQ2Yzk0M2E3NGY3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3VzYi9jZG5zMy9lcDAuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2VwMC5jCj4gQEAgLTYw NCwxMiArNjA0LDE1IEBAIHZvaWQgY2RuczNfY2hlY2tfZXAwX2ludGVycnVwdF9wcm9jZWVkKHN0 cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LCBpbnQgZGlyKQo+ICAJY2RuczNfc2VsZWN0X2Vw KHByaXZfZGV2LCAwIHwgKGRpciA/IFVTQl9ESVJfSU4gOiBVU0JfRElSX09VVCkpOwo+ICAJZXBf c3RzX3JlZyA9IHJlYWRsKCZyZWdzLT5lcF9zdHMpOwo+ICAKPiArCWRldl9kYmcoJnByaXZfZGV2 LT5kZXYsICIlc1xuIiwgY2RuczNfZGVjb2RlX2VwMF9pcnEocHJpdl9kZXYsIGRpcikpOwo+ICsK PiAgCV9fcGVuZGluZ19zZXR1cF9zdGF0dXNfaGFuZGxlcihwcml2X2Rldik7Cj4gIAo+ICAJaWYg KChlcF9zdHNfcmVnICYgRVBfU1RTX1NFVFVQKSAmJiBkaXIgPT0gMCkgewo+ICAJCXN0cnVjdCB1 c2JfY3RybHJlcXVlc3QgKnNldHVwID0gcHJpdl9kZXYtPnNldHVwOwo+ICAKPiAgCQl3cml0ZWwo RVBfU1RTX1NFVFVQIHwgRVBfU1RTX0lPQyB8IEVQX1NUU19JU1AsICZyZWdzLT5lcF9zdHMpOwo+ ICsJCWNkbnMzX2RiZ19zZXR1cChwcml2X2Rldik7Cj4gIAo+ICAJCXByaXZfZGV2LT5lcDBfZGF0 YV9kaXIgPSBzZXR1cC0+YlJlcXVlc3RUeXBlICYgVVNCX0RJUl9JTjsKPiAgCQljZG5zM19lcDBf c2V0dXBfcGhhc2UocHJpdl9kZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9n YWRnZXQuYyBiL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5jCj4gaW5kZXggOTA1Y2FkMWE4MjI5 Li5iYTRhMzZjZTZlOWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmMK PiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9nYWRnZXQuYwo+IEBAIC0xMjQsNiArMTI0LDE0IEBA IHZvaWQgY2RuczNfc2VsZWN0X2VwKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LCB1MzIg ZXApCj4gIAl3bWIoKTsKPiAgfQo+ICAKPiArZG1hX2FkZHJfdCBjZG5zM190cmJfdmlydF90b19k bWEoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLAo+ICsJCQkJIHN0cnVjdCBjZG5zM190 cmIgKnRyYikKPiArewo+ICsJdTMyIG9mZnNldCA9IChjaGFyICopdHJiIC0gKGNoYXIgKilwcml2 X2VwLT50cmJfcG9vbDsKPiArCj4gKwlyZXR1cm4gcHJpdl9lcC0+dHJiX3Bvb2xfZG1hICsgb2Zm c2V0Owo+ICt9Cj4gKwo+ICAvKioKPiAgICogY2RuczNfYWxsb2NhdGVfdHJiX3Bvb2wgLSBBbGxv Y2F0ZXMgVFJCJ3MgcG9vbCBmb3Igc2VsZWN0ZWQgZW5kcG9pbnQKPiAgICogQHByaXZfZXA6ICBl bmRwb2ludCBvYmplY3QKPiBAQCAtNDI4LDYgKzQzNiw4IEBAIGludCBjZG5zM19lcF9ydW5fdHJh bnNmZXIoc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwLAo+ICAJCXRyYi0+Y29udHJvbCB8 PSBmaXJzdF9wY3M7Cj4gIAo+ICAJcHJpdl9yZXEtPm9uX3JpbmcgPSAxOwo+ICsKPiArCWNkbnMz X2RiZ19lcF9yaW5ncyhwcml2X2RldiwgcHJpdl9lcCk7Cj4gIGFybToKPiAgCS8qIGFybSB0cmFu c2ZlciBvbiBzZWxlY3RlZCBlbmRwb2ludCAqLwo+ICAJY2RuczNfc2VsZWN0X2VwKHByaXZfZXAt PmNkbnMzX2RldiwgYWRkcmVzcyk7Cj4gQEAgLTUzNyw2ICs1NDcsOCBAQCBzdGF0aWMgaW50IGNk bnMzX2NoZWNrX2VwX2ludGVycnVwdF9wcm9jZWVkKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJp dl9lcCkKPiAgCWNkbnMzX3NlbGVjdF9lcChwcml2X2RldiwgcHJpdl9lcC0+ZW5kcG9pbnQuYWRk cmVzcyk7Cj4gIAllcF9zdHNfcmVnID0gcmVhZGwoJnJlZ3MtPmVwX3N0cyk7Cj4gIAo+ICsJZGV2 X2RiZygmcHJpdl9kZXYtPmRldiwgIiVzXG4iLCBjZG5zM19kZWNvZGVfZXB4X2lycShwcml2X2Vw KSk7Cj4gKwo+ICAJaWYgKGVwX3N0c19yZWcgJiBFUF9TVFNfVFJCRVJSKQo+ICAJCXdyaXRlbChF UF9TVFNfVFJCRVJSLCAmcmVncy0+ZXBfc3RzKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2NkbnMzL2dhZGdldC5oIGIvZHJpdmVycy91c2IvY2RuczMvZ2FkZ2V0LmgKPiBpbmRleCAz ZjY3ZWYxZTVjZGEuLjNiMmMwMWZmNjU1YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5z My9nYWRnZXQuaAo+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMzL2dhZGdldC5oCj4gQEAgLTEwODUs NSArMTA4NSwxNiBAQCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKmNkbnMzX2dhZGdldF9lcF9hbGxvY19y ZXF1ZXN0KHN0cnVjdCB1c2JfZXAgKmVwLAo+ICB2b2lkIGNkbnMzX2dhZGdldF9lcF9mcmVlX3Jl cXVlc3Qoc3RydWN0IHVzYl9lcCAqZXAsCj4gIAkJCQkgIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVx dWVzdCk7Cj4gIGludCBjZG5zM19nYWRnZXRfZXBfZGVxdWV1ZShzdHJ1Y3QgdXNiX2VwICplcCwg c3RydWN0IHVzYl9yZXF1ZXN0ICpyZXF1ZXN0KTsKPiAtCj4gK2RtYV9hZGRyX3QgY2RuczNfdHJi X3ZpcnRfdG9fZG1hKHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJpdl9lcCwKPiArCQkJCSBzdHJ1 Y3QgY2RuczNfdHJiICp0cmIpOwo+ICsKPiArY2hhciAqY2RuczNfZGVjb2RlX2VweF9pcnEoc3Ry dWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKTsKPiArY2hhciAqY2RuczNfZGVjb2RlX2VwMF9p cnEoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsIGludCBkaXIpOwo+ICt2b2lkIGNkbnMz X2RiZ19yaW5nKHN0cnVjdCBjZG5zM19kZXZpY2UgKnByaXZfZGV2LAo+ICsJCSAgICBzdHJ1Y3Qg Y2RuczNfZW5kcG9pbnQgKnByaXZfZXApOwo+ICt2b2lkIGNkbnMzX2RiZ19yaW5nX3B0cnMoc3Ry dWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYsCj4gKwkJCSBzdHJ1Y3QgY2RuczNfZW5kcG9pbnQg KnByaXZfZXApOwo+ICt2b2lkIGNkbnMzX2RiZ19lcF9yaW5ncyhzdHJ1Y3QgY2RuczNfZGV2aWNl ICpwcml2X2RldiwKPiArCQkJc3RydWN0IGNkbnMzX2VuZHBvaW50ICpwcml2X2VwKTsKPiArdm9p ZCBjZG5zM19kYmdfc2V0dXAoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYpOwo+ICAjZW5k aWYgLyogX19MSU5VWF9DRE5TM19HQURHRVQgKi8KPiAKCkhvdyBvZnRlbiBhcmUgdGhlc2UgaW52 b2tlZD8KCkZvciBJL08gaW50ZW5zaXZlIGNhc2VzIGRldl9kYmcoKSB3aWxsIG5vdCBiZSB1c2Vm dWwgYXMgaXQgd2lsbCBhZmZlY3QgdGltaW5nIGFkdmVyc2VseQpiZWNhdXNlIG9mIHdoaWNoIGl0 IG1pZ2h0IHByZXZlbnQgdGhlIGlzc3VlIGZyb20gaGFwcGVuaW5nIHdoZW4gZGVidWcgaXMgZW5h YmxlZC4KCkhvdyBhYm91dCB1c2luZyB0cmFjZXBvaW50cyBpbnN0ZWFkPwoKY2hlZXJzLAotcm9n ZXIK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CDFD2C32789 for ; Thu, 8 Nov 2018 09:34:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 76E1420825 for ; Thu, 8 Nov 2018 09:34:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="nkO+/Rty" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 76E1420825 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726799AbeKHTJa (ORCPT ); Thu, 8 Nov 2018 14:09:30 -0500 Received: from lelv0143.ext.ti.com ([198.47.23.248]:35974 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726133AbeKHTJa (ORCPT ); Thu, 8 Nov 2018 14:09:30 -0500 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id wA89YjQw104326; Thu, 8 Nov 2018 03:34:45 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1541669685; bh=rh3audeCQVmE2bkfPsfjpvKyyaUO8akqIsCB+xCWhvU=; h=Subject:To:References:CC:From:Date:In-Reply-To; b=nkO+/Rty6Zs8MkMVLXZwcQ+iekMCoDqW/YB4RKRLmfzslQg6l5ohENao6ndEDqCGP 4CY+NGy0ZgTRdXt2MqA1fzIsL34vLA0ljtZ42rJWDGaaJ22LLT4cmEndwPTLcVSEaq qhMaMxD1hIiB+8BLF3J0D70WCWBIvY2QfOLEMduY= Received: from DLEE107.ent.ti.com (dlee107.ent.ti.com [157.170.170.37]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id wA89YjLZ041056 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 8 Nov 2018 03:34:45 -0600 Received: from DLEE110.ent.ti.com (157.170.170.21) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Thu, 8 Nov 2018 03:34:44 -0600 Received: from dlep33.itg.ti.com (157.170.170.75) by DLEE110.ent.ti.com (157.170.170.21) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Thu, 8 Nov 2018 03:34:44 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep33.itg.ti.com (8.14.3/8.13.8) with ESMTP id wA89YfKl005046; Thu, 8 Nov 2018 03:34:42 -0600 Subject: Re: [RFC PATCH v1 13/14] usb:cdns3: Adds debugging function. To: Pawel Laszczak , References: <1541267487-3664-1-git-send-email-pawell@cadence.com> <1541267487-3664-14-git-send-email-pawell@cadence.com> CC: , , , , , , From: Roger Quadros Message-ID: <5BE40331.90107@ti.com> Date: Thu, 8 Nov 2018 11:34:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <1541267487-3664-14-git-send-email-pawell@cadence.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 03/11/18 19:51, Pawel Laszczak wrote: > Patch implements some function used for debugging driver. > > Signed-off-by: Pawel Laszczak > --- > drivers/usb/cdns3/Makefile | 2 +- > drivers/usb/cdns3/debug.c | 128 +++++++++++++++++++++++++++++++++++++ > drivers/usb/cdns3/ep0.c | 3 + > drivers/usb/cdns3/gadget.c | 12 ++++ > drivers/usb/cdns3/gadget.h | 13 +++- > 5 files changed, 156 insertions(+), 2 deletions(-) > create mode 100644 drivers/usb/cdns3/debug.c > > diff --git a/drivers/usb/cdns3/Makefile b/drivers/usb/cdns3/Makefile > index f4cfc978626f..34e60d03c4ec 100644 > --- a/drivers/usb/cdns3/Makefile > +++ b/drivers/usb/cdns3/Makefile > @@ -2,6 +2,6 @@ obj-$(CONFIG_USB_CDNS3) += cdns3.o > obj-$(CONFIG_USB_CDNS3_PCI_WRAP) += cdns3-pci.o > > cdns3-y := core.o drd.o > -cdns3-$(CONFIG_USB_CDNS3_GADGET) += gadget.o ep0.o > +cdns3-$(CONFIG_USB_CDNS3_GADGET) += gadget.o ep0.o debug.o > cdns3-$(CONFIG_USB_CDNS3_HOST) += host.o > cdns3-pci-y := cdns3-pci-wrap.o > diff --git a/drivers/usb/cdns3/debug.c b/drivers/usb/cdns3/debug.c > new file mode 100644 > index 000000000000..bebf22c4d18e > --- /dev/null > +++ b/drivers/usb/cdns3/debug.c > @@ -0,0 +1,128 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Cadence USBSS DRD Driver. > + * > + * Copyright (C) 2018 Cadence. > + * > + * Author: Pawel Laszczak > + */ > + > +#include "gadget.h" > + > +static inline char *cdns3_decode_ep_irq(u32 ep_sts, const char *ep_name) > +{ > + static char str[256]; > + int ret; > + > + ret = sprintf(str, "IRQ for %s: %08x ", ep_name, ep_sts); > + > + if (ep_sts & EP_STS_SETUP) > + ret += sprintf(str + ret, "SETUP "); > + if (ep_sts & EP_STS_IOC) > + ret += sprintf(str + ret, "IOC "); > + if (ep_sts & EP_STS_ISP) > + ret += sprintf(str + ret, "ISP "); > + if (ep_sts & EP_STS_DESCMIS) > + ret += sprintf(str + ret, "DESCMIS "); > + if (ep_sts & EP_STS_STREAMR) > + ret += sprintf(str + ret, "STREAMR "); > + if (ep_sts & EP_STS_MD_EXIT) > + ret += sprintf(str + ret, "MD_EXIT "); > + if (ep_sts & EP_STS_TRBERR) > + ret += sprintf(str + ret, "TRBERR "); > + if (ep_sts & EP_STS_NRDY) > + ret += sprintf(str + ret, "NRDY "); > + if (ep_sts & EP_STS_PRIME) > + ret += sprintf(str + ret, "PRIME "); > + if (ep_sts & EP_STS_SIDERR) > + ret += sprintf(str + ret, "SIDERRT "); > + if (ep_sts & EP_STS_OUTSMM) > + ret += sprintf(str + ret, "OUTSMM "); > + if (ep_sts & EP_STS_ISOERR) > + ret += sprintf(str + ret, "ISOERR "); > + if (ep_sts & EP_STS_IOT) > + ret += sprintf(str + ret, "IOT "); > + > + return str; > +} > + > +char *cdns3_decode_epx_irq(struct cdns3_endpoint *priv_ep) > +{ > + struct cdns3_device *priv_dev = priv_ep->cdns3_dev; > + > + return cdns3_decode_ep_irq(readl(&priv_dev->regs->ep_sts), > + priv_ep->name); > +} > + > +char *cdns3_decode_ep0_irq(struct cdns3_device *priv_dev, int dir) > +{ > + if (dir) > + return cdns3_decode_ep_irq(readl(&priv_dev->regs->ep_sts), > + "ep0IN"); > + else > + return cdns3_decode_ep_irq(readl(&priv_dev->regs->ep_sts), > + "ep0OUT"); > +} > + > +void cdns3_dbg_setup(struct cdns3_device *priv_dev) > +{ > + struct usb_ctrlrequest *setup = priv_dev->setup; > + > + dev_dbg(&priv_dev->dev, > + "SETUP BRT: %02x BR: %02x V: %04x I: %04x L: %04x\n", > + setup->bRequestType, > + setup->bRequest, > + le16_to_cpu(setup->wValue), > + le16_to_cpu(setup->wIndex), > + le16_to_cpu(setup->wLength)); > +} > + > +/** > + * Debug a transfer ring. > + * > + * Prints out all TRBs in the endpoint ring, even those after the Link TRB. > + *. > + */ > +void cdns3_dbg_ring(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep) > +{ > + u64 addr = priv_ep->trb_pool_dma; > + struct cdns3_trb *trb; > + int i; > + > + for (i = 0; i < TRBS_PER_SEGMENT; ++i) { > + trb = &priv_ep->trb_pool[i]; > + dev_dbg(&priv_dev->dev, "@%016llx %08x %08x %08x\n", addr, > + le32_to_cpu(trb->buffer), > + le32_to_cpu(trb->length), > + le32_to_cpu(trb->control)); > + addr += sizeof(*trb); > + } > +} > + > +void cdns3_dbg_ring_ptrs(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep) > +{ > + struct cdns3_trb *trb; > + > + trb = &priv_ep->trb_pool[priv_ep->dequeue]; > + dev_dbg(&priv_dev->dev, > + "Ring deq index: %d, trb: %p (virt), 0x%llx (dma)\n", > + priv_ep->dequeue, trb, > + cdns3_trb_virt_to_dma(priv_ep, trb)); > + > + trb = &priv_ep->trb_pool[priv_ep->enqueue]; > + dev_dbg(&priv_dev->dev, > + "Ring enq index: %d, trb: %p (virt), 0x%llx (dma)\n", > + priv_ep->enqueue, trb, > + cdns3_trb_virt_to_dma(priv_ep, trb)); > +} > + > +void cdns3_dbg_ep_rings(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep) > +{ > + dev_dbg(&priv_dev->dev, "Endpoint ring %s:\n", priv_ep->name); > + > + cdns3_dbg_ring_ptrs(priv_dev, priv_ep); > + cdns3_dbg_ring(priv_dev, priv_ep); > +} > diff --git a/drivers/usb/cdns3/ep0.c b/drivers/usb/cdns3/ep0.c > index 555ac7f6842e..46c943a74f77 100644 > --- a/drivers/usb/cdns3/ep0.c > +++ b/drivers/usb/cdns3/ep0.c > @@ -604,12 +604,15 @@ void cdns3_check_ep0_interrupt_proceed(struct cdns3_device *priv_dev, int dir) > cdns3_select_ep(priv_dev, 0 | (dir ? USB_DIR_IN : USB_DIR_OUT)); > ep_sts_reg = readl(®s->ep_sts); > > + dev_dbg(&priv_dev->dev, "%s\n", cdns3_decode_ep0_irq(priv_dev, dir)); > + > __pending_setup_status_handler(priv_dev); > > if ((ep_sts_reg & EP_STS_SETUP) && dir == 0) { > struct usb_ctrlrequest *setup = priv_dev->setup; > > writel(EP_STS_SETUP | EP_STS_IOC | EP_STS_ISP, ®s->ep_sts); > + cdns3_dbg_setup(priv_dev); > > priv_dev->ep0_data_dir = setup->bRequestType & USB_DIR_IN; > cdns3_ep0_setup_phase(priv_dev); > diff --git a/drivers/usb/cdns3/gadget.c b/drivers/usb/cdns3/gadget.c > index 905cad1a8229..ba4a36ce6e9a 100644 > --- a/drivers/usb/cdns3/gadget.c > +++ b/drivers/usb/cdns3/gadget.c > @@ -124,6 +124,14 @@ void cdns3_select_ep(struct cdns3_device *priv_dev, u32 ep) > wmb(); > } > > +dma_addr_t cdns3_trb_virt_to_dma(struct cdns3_endpoint *priv_ep, > + struct cdns3_trb *trb) > +{ > + u32 offset = (char *)trb - (char *)priv_ep->trb_pool; > + > + return priv_ep->trb_pool_dma + offset; > +} > + > /** > * cdns3_allocate_trb_pool - Allocates TRB's pool for selected endpoint > * @priv_ep: endpoint object > @@ -428,6 +436,8 @@ int cdns3_ep_run_transfer(struct cdns3_endpoint *priv_ep, > trb->control |= first_pcs; > > priv_req->on_ring = 1; > + > + cdns3_dbg_ep_rings(priv_dev, priv_ep); > arm: > /* arm transfer on selected endpoint */ > cdns3_select_ep(priv_ep->cdns3_dev, address); > @@ -537,6 +547,8 @@ static int cdns3_check_ep_interrupt_proceed(struct cdns3_endpoint *priv_ep) > cdns3_select_ep(priv_dev, priv_ep->endpoint.address); > ep_sts_reg = readl(®s->ep_sts); > > + dev_dbg(&priv_dev->dev, "%s\n", cdns3_decode_epx_irq(priv_ep)); > + > if (ep_sts_reg & EP_STS_TRBERR) > writel(EP_STS_TRBERR, ®s->ep_sts); > > diff --git a/drivers/usb/cdns3/gadget.h b/drivers/usb/cdns3/gadget.h > index 3f67ef1e5cda..3b2c01ff655b 100644 > --- a/drivers/usb/cdns3/gadget.h > +++ b/drivers/usb/cdns3/gadget.h > @@ -1085,5 +1085,16 @@ struct usb_request *cdns3_gadget_ep_alloc_request(struct usb_ep *ep, > void cdns3_gadget_ep_free_request(struct usb_ep *ep, > struct usb_request *request); > int cdns3_gadget_ep_dequeue(struct usb_ep *ep, struct usb_request *request); > - > +dma_addr_t cdns3_trb_virt_to_dma(struct cdns3_endpoint *priv_ep, > + struct cdns3_trb *trb); > + > +char *cdns3_decode_epx_irq(struct cdns3_endpoint *priv_ep); > +char *cdns3_decode_ep0_irq(struct cdns3_device *priv_dev, int dir); > +void cdns3_dbg_ring(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep); > +void cdns3_dbg_ring_ptrs(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep); > +void cdns3_dbg_ep_rings(struct cdns3_device *priv_dev, > + struct cdns3_endpoint *priv_ep); > +void cdns3_dbg_setup(struct cdns3_device *priv_dev); > #endif /* __LINUX_CDNS3_GADGET */ > How often are these invoked? For I/O intensive cases dev_dbg() will not be useful as it will affect timing adversely because of which it might prevent the issue from happening when debug is enabled. How about using tracepoints instead? cheers, -roger -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki