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,01/14] usb:cdns3: add pci to platform driver wrapper. From: Roger Quadros Message-Id: <5BE19BB5.3030006@ti.com> Date: Tue, 6 Nov 2018 15:48:37 +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: SGkgUGF3ZWwsCgpPbiAwMy8xMS8xOCAxOTo1MSwgUGF3ZWwgTGFzemN6YWsgd3JvdGU6Cj4gUGF0 Y2ggYWRkcyBQQ0kgc3BlY2lmaWMgZ2x1ZSBkcml2aWVyIHRoYXQgY3JlYXRpZXMgYW5kIHJlZ2lz dGVycyBpbgoKcy9kcml2aWVyL2RyaXZlcgpzL2NyZWF0aWVzL2NyZWF0ZXMKcy9pbiBzeXN0ZW0v aW4tc3lzdGVtCgo+IHN5c3RlbSBjZG5zLXVzYjMgcGxhdGZvcm0gZGV2aWNlLiBUaGFua3MgdG8g dGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gdXNlCj4gdGhlIGNkbnMtdXNiMyBwbGF0Zm9ybSBkcml2 ZXIgZm9yIFVTQlNTLURFViBjb250cm9sbGVyCj4gYnVpbGQgb24gUENJIGJvYXJkCj4gCj4gU2ln bmVkLW9mZi1ieTogUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBjYWRlbmNlLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy91c2IvS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvdXNi L01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL3VzYi9jZG5zMy9LY29u ZmlnICAgICAgICAgIHwgIDI0ICsrKysrCj4gIGRyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlICAg ICAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3JhcC5jIHwgMTYy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTkzIGlu c2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL0tjb25m aWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3JhcC5jCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL0tjb25maWcgYi9kcml2ZXJzL3VzYi9LY29uZmlnCj4g aW5kZXggOTg3ZmM1YmE2MzIxLi41ZjkzMzQwMTlkMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91 c2IvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvdXNiL0tjb25maWcKPiBAQCAtMTEyLDYgKzExMiw4 IEBAIHNvdXJjZSAiZHJpdmVycy91c2IvdXNiaXAvS2NvbmZpZyIKPiAgCj4gIGVuZGlmCj4gIAo+ ICtzb3VyY2UgImRyaXZlcnMvdXNiL2NkbnMzL0tjb25maWciCj4gKwo+ICBzb3VyY2UgImRyaXZl cnMvdXNiL210dTMvS2NvbmZpZyIKPiAgCj4gIHNvdXJjZSAiZHJpdmVycy91c2IvbXVzYi9LY29u ZmlnIgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL01h a2VmaWxlCj4gaW5kZXggN2QxYjhjODJiMjA4Li44MjA5M2E2MGVhMmMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy91c2IvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3VzYi9NYWtlZmlsZQo+IEBAIC04 LDYgKzgsOCBAQAo+ICBvYmotJChDT05GSUdfVVNCKQkJKz0gY29yZS8KPiAgb2JqLSQoQ09ORklH X1VTQl9TVVBQT1JUKQkrPSBwaHkvCj4gIAo+ICtvYmotJChDT05GSUdfVVNCX0NETlMzKQkJKz0g Y2RuczMvCj4gKwo+ICBvYmotJChDT05GSUdfVVNCX0RXQzMpCQkrPSBkd2MzLwo+ICBvYmotJChD T05GSUdfVVNCX0RXQzIpCQkrPSBkd2MyLwo+ICBvYmotJChDT05GSUdfVVNCX0lTUDE3NjApCSs9 IGlzcDE3NjAvCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL0tjb25maWcgYi9kcml2 ZXJzL3VzYi9jZG5zMy9LY29uZmlnCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwMDAwMDAuLjg4ODQ1ODM3MmFkYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3Vz Yi9jZG5zMy9LY29uZmlnCj4gQEAgLTAsMCArMSwyNCBAQAo+ICtjb25maWcgVVNCX0NETlMzCj4g Kwl0cmlzdGF0ZSAiQ2FkZW5jZSBVU0IzIER1YWwtUm9sZSBDb250cm9sbGVyIgo+ICsJZGVwZW5k cyBvbiAoKFVTQl9YSENJX0hDRCAmJiBVU0JfR0FER0VUKSB8fCAoVVNCX1hIQ0lfSENEICYmICFV U0JfR0FER0VUKSB8fCAoIVVTQl9YSENJX0hDRCAmJiBVU0JfR0FER0VUKSkgJiYgSEFTX0RNQQoK V2h5IG5vdCBkZXBlbmQgb24gVVNCIGluc3RlYWQgb2YgVVNCX1hIQ0lfSENEPwoKPiArCWhlbHAK PiArCSAgU2F5IFkgaGVyZSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBjYWRlbmNlIFVTQjMgZHVhbC1y b2xlIGNvbnRyb2xsZXIuCj4gKwkgIEl0IHN1cHBvcnRzOiBkdWFsLXJvbGUgc3dpdGNoIEhvc3Qt b25seSwgYW5kIFBlcmlwaGVyYWwtb25seS4KCk5lZWQgYSBjb21hIGJldHdlZW4gc3dpdGNoIGFu ZCBIb3N0LW9ubHkuCgo+ICsKPiArCSAgSWYgeW91IGNob29zZSB0byBidWlsZCB0aGlzIGRyaXZl ciBpcyBhIGR5bmFtaWNhbGx5IGxpbmtlZAo+ICsJICBtb2R1bGUsIHRoZSBtb2R1bGUgd2lsbCBi ZSBjYWxsZWQgY2RuczMua28uCj4gKwo+ICtpZiBVU0JfQ0ROUzMKPiArCj4gK2NvbmZpZyBVU0Jf Q0ROUzNfUENJX1dSQVAKPiArCXRyaXN0YXRlICJQQ0llLWJhc2VkIFBsYXRmb3JtcyIKPiArCWRl cGVuZHMgb24gVVNCX1BDSSAmJiBBQ1BJCj4gKwlkZWZhdWx0IFVTQl9DRE5TMwo+ICsJaGVscAo+ ICsJICBJZiB5b3UncmUgdXNpbmcgdGhlIFVTQlNTIENvcmUgSVAgd2l0aCBhIFBDSWUsIHBsZWFz ZSBzYXkKPiArCSAgJ1knIG9yICdNJyBoZXJlLgo+ICsKPiArCSAgSWYgeW91IGNob29zZSB0byBi dWlsZCB0aGlzIGRyaXZlciBhcyBtb2R1bGUgaXQgd2lsbAo+ICsJICBiZSBkeW5hbWljYWxseSBs aW5rZWQgYW5kIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjZG5zMy1wY2kua28KPiArCj4gK2VuZGlm Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlIGIvZHJpdmVycy91c2Iv Y2RuczMvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAw MC4uZGNkZDYyMDAzYzZhCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvdXNiL2NkbnMz L01ha2VmaWxlCj4gQEAgLTAsMCArMSwzIEBACj4gK29iai0kKENPTkZJR19VU0JfQ0ROUzNfUENJ X1dSQVApCSs9IGNkbnMzLXBjaS5vCj4gKwo+ICtjZG5zMy1wY2kteQkJIAkJOj0gY2RuczMtcGNp LXdyYXAubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3JhcC5j IGIvZHJpdmVycy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42YzIyOWFiNmRmZmIKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYwo+IEBAIC0wLDAgKzEsMTYy IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIENh ZGVuY2UgVVNCU1MgUENJIEdsdWUgZHJpdmVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAx OCBDYWRlbmNlLgo+ICsgKgo+ICsgKiBBdXRob3I6IFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2Fk ZW5jZS5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiArI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBp bmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArCj4gK3N0cnVjdCBjZG5zM193cmFw IHsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRfZGV2Owo+ICsJc3RydWN0IHBjaV9k ZXYgKmhnX2RldjsKPiArCXN0cnVjdCByZXNvdXJjZSBkZXZfcmVzWzRdOwo+ICt9Owo+ICsKPiAr c3RydWN0IGNkbnMzX3dyYXAgd3JhcDsKPiArCj4gKyNkZWZpbmUgUkVTX0lSUV9JRAkJMAo+ICsj ZGVmaW5lIFJFU19IT1NUX0lECQkxCj4gKyNkZWZpbmUgUkVTX0RFVl9JRAkJMgo+ICsjZGVmaW5l IFJFU19EUkRfSUQJCTMKPiArCj4gKyNkZWZpbmUgUENJX0JBUl9IT1NUCQkwCj4gKyNkZWZpbmUg UENJX0JBUl9ERVYJCTIKPiArI2RlZmluZSBQQ0lfQkFSX09URwkJNAo+ICsKPiArI2RlZmluZSBQ Q0lfREVWX0ZOX0hPU1RfREVWSUNFCTAKPiArI2RlZmluZSBQQ0lfREVWX0ZOX09URwkJMQo+ICsK PiArI2RlZmluZSBQQ0lfRFJJVkVSX05BTUUJCSJjZG5zMy1wY2ktdXNic3MiCj4gKyNkZWZpbmUg UExBVF9EUklWRVJfTkFNRQkiY2Rucy11c2IzIgo+ICsKPiArI2RlZmluZSBDRE5TX1ZFTkRPUl9J RCAweDE3Y2QKPiArI2RlZmluZSBDRE5TX0RFVklDRV9JRCAweDAxMDAKPiArCj4gKy8qKgo+ICsg KiBjZG5zM19wY2lfcHJvYmUgLSBQcm9iZSBmdW5jdGlvbiBmb3IgQ2FkZW5jZSBVU0Igd3JhcHBl ciBkcml2ZXIKPiArICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBvYmplY3QKPiArICogQGlkOiBw Y2kgZGV2aWNlIGlkCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG90aGVyd2lzZSBu ZWdhdGl2ZSBlcnJubwo+ICsgKi8KPiArc3RhdGljIGludCBjZG5zM19wY2lfcHJvYmUoc3RydWN0 IHBjaV9kZXYgKnBkZXYsCj4gKwkJCSAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkK PiArewo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvIHBsYXRfaW5mbzsKPiArCXN0cnVj dCBjZG5zM193cmFwICp3cmFwOwo+ICsJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gKwlpbnQgZXJy Owo+ICsKPiArCS8qCj4gKwkgKiBmb3IgR0FER0VUL0hPU1QgUENJIChkZXZmbikgZnVuY3Rpb24g bnVtYmVyIGlzIDAsCj4gKwkgKiBmb3IgT1RHIFBDSSAoZGV2Zm4pIGZ1bmN0aW9uIG51bWJlciBp cyAxCj4gKwkgKi8KPiArCWlmICghaWQgfHwgcGRldi0+ZGV2Zm4gIT0gUENJX0RFVl9GTl9IT1NU X0RFVklDRSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwllcnIgPSBwY2ltX2VuYWJsZV9k ZXZpY2UocGRldik7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRW5h YmxpbmcgUENJIGRldmljZSBoYXMgZmFpbGVkICVkXG4iLCBlcnIpOwo+ICsJCXJldHVybiBlcnI7 Cj4gKwl9Cj4gKwo+ICsJcGNpX3NldF9tYXN0ZXIocGRldik7Cj4gKwl3cmFwID0gZGV2bV9remFs bG9jKCZwZGV2LT5kZXYsIHNpemVvZigqd3JhcCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCF3cmFw KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGxvYWQgUENJIG1vZHVsZVxu Iik7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICsJLyogZnVuY3Rpb24gMDogaG9z dChCQVJfMCkgKyBkZXZpY2UoQkFSXzEpICsgb3RnKEJBUl8yKSkuICovCj4gKwltZW1zZXQod3Jh cC0+ZGV2X3JlcywgMHgwMCwKPiArCSAgICAgICBzaXplb2Yoc3RydWN0IHJlc291cmNlKSAqIEFS UkFZX1NJWkUod3JhcC0+ZGV2X3JlcykpOwo+ICsJZGV2X2luZm8oJnBkZXYtPmRldiwgIkluaXRp YWxpemUgRGV2aWNlIHJlc291cmNlc1xuIik7Cj4gKwlyZXMgPSB3cmFwLT5kZXZfcmVzOwo+ICsK PiArI2lmIElTX0VOQUJMRUQoQ09ORklHX1VTQl9DRE5TM19HQURHRVQpCgpXaHkgZGVwZW5kIG9u IENvbmZpZyBvcHRpb25zIHRvIHBvcHVsYXRlIHJlc291cmNlcz8gVGhlIHJlc291cmNlcyBzaG91 bGQgYmUgdGhlcmUgcmVnYXJkbGVzcy4KSXQgaXMgYSBsb3Qgc2ltcGxlciB0aGF0IHdheSBhcyBp dCByZWZsZWN0cyB0aGUgaGFyZHdhcmUgYXMtaXMuCgo+ICsJcmVzW1JFU19ERVZfSURdLnN0YXJ0 ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIFBDSV9CQVJfREVWKTsKPiArCXJlc1tSRVNfREVW X0lEXS5lbmQgPSAgIHBjaV9yZXNvdXJjZV9lbmQocGRldiwgUENJX0JBUl9ERVYpOwo+ICsJcmVz W1JFU19ERVZfSURdLm5hbWUgPSAiY2RuczMtZGV2LXJlZ3MiOwo+ICsJcmVzW1JFU19ERVZfSURd LmZsYWdzID0gSU9SRVNPVVJDRV9NRU07Cj4gKwlkZXZfaW5mbygmcGRldi0+ZGV2LCAiVVNCU1Mt REVWIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXG4iLAo+ICsJCSAmcmVzW1JFU19ERVZfSURdLnN0 YXJ0KTsKPiArCgpkZXZfZGJnKCkgZm9yIHRoaXMgYW5kIGFsbCBvY2N1cnJlbmNlcyBiZWxvdz8K Cj4gKyNlbmRpZgo+ICsKPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX1VTQl9DRE5TM19IT1NUKQo+ ICsJcmVzW1JFU19IT1NUX0lEXS5zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBQQ0lf QkFSX0hPU1QpOwo+ICsJcmVzW1JFU19IT1NUX0lEXS5lbmQgPSBwY2lfcmVzb3VyY2VfZW5kKHBk ZXYsIFBDSV9CQVJfSE9TVCk7Cj4gKwlyZXNbUkVTX0hPU1RfSURdLm5hbWUgPSAiY2RuczMteGhj aS1yZWdzIjsKPiArCXJlc1tSRVNfSE9TVF9JRF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKPiAr CWRldl9pbmZvKCZwZGV2LT5kZXYsICJVU0JTUy1YSENJIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBh XG4iLAo+ICsJCSAmcmVzW1JFU19IT1NUX0lEXS5zdGFydCk7Cj4gKyNlbmRpZgo+ICsKPiArCXJl c1tSRVNfRFJEX0lEXS5zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCBQQ0lfQkFSX09U Ryk7Cj4gKwlyZXNbUkVTX0RSRF9JRF0uZW5kID0gICBwY2lfcmVzb3VyY2VfZW5kKHBkZXYsIFBD SV9CQVJfT1RHKTsKPiArCXJlc1tSRVNfRFJEX0lEXS5uYW1lID0gImNkbnMzLW90ZyI7Cj4gKwly ZXNbUkVTX0RSRF9JRF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTsKPiArCWRldl9pbmZvKCZwZGV2 LT5kZXYsICJVU0JTUy1EUkQgcGh5c2ljYWwgYmFzZSBhZGRyOiAlcGFcbiIsCj4gKwkJICZyZXNb UkVTX0RSRF9JRF0uc3RhcnQpOwo+ICsKPiArCS8qIEludGVycnVwdCBjb21tb24gZm9yIGJvdGgg ZGV2aWNlIGFuZCBYSENJICovCj4gKwl3cmFwLT5kZXZfcmVzW1JFU19JUlFfSURdLnN0YXJ0ID0g cGRldi0+aXJxOwo+ICsJd3JhcC0+ZGV2X3Jlc1tSRVNfSVJRX0lEXS5uYW1lID0gImNkbnMzLWly cSI7Cj4gKwl3cmFwLT5kZXZfcmVzW1JFU19JUlFfSURdLmZsYWdzID0gSU9SRVNPVVJDRV9JUlE7 Cj4gKwo+ICsJLyogc2V0IHVwIHBsYXRmb3JtIGRldmljZSBpbmZvICovCj4gKwltZW1zZXQoJnBs YXRfaW5mbywgMCwgc2l6ZW9mKHBsYXRfaW5mbykpOwo+ICsJcGxhdF9pbmZvLnBhcmVudCA9ICZw ZGV2LT5kZXY7Cj4gKwlwbGF0X2luZm8uZndub2RlID0gcGRldi0+ZGV2LmZ3bm9kZTsKPiArCXBs YXRfaW5mby5uYW1lID0gUExBVF9EUklWRVJfTkFNRTsKPiArCXBsYXRfaW5mby5pZCA9IHBkZXYt PmRldmZuOwo+ICsJcGxhdF9pbmZvLnJlcyA9IHdyYXAtPmRldl9yZXM7Cj4gKwlwbGF0X2luZm8u bnVtX3JlcyA9IEFSUkFZX1NJWkUod3JhcC0+ZGV2X3Jlcyk7Cj4gKwlwbGF0X2luZm8uZG1hX21h c2sgPSBwZGV2LT5kbWFfbWFzazsKPiArCj4gKwkvKiByZWdpc3RlciBwbGF0Zm9ybSBkZXZpY2Ug Ki8KPiArCXdyYXAtPnBsYXRfZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoJnBs YXRfaW5mbyk7Cj4gKwlpZiAoSVNfRVJSKHdyYXAtPnBsYXRfZGV2KSkgewo+ICsJCWVyciA9IFBU Ul9FUlIod3JhcC0+cGxhdF9kZXYpOwo+ICsJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJcGNp X3NldF9kcnZkYXRhKHBkZXYsIHdyYXApOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4g K3ZvaWQgY2RuczNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiArewo+ICsJc3Ry dWN0IGNkbnMzX3dyYXAgKndyYXAgPSAoc3RydWN0IGNkbnMzX3dyYXAgKilwY2lfZ2V0X2RydmRh dGEocGRldik7Cj4gKwo+ICsJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIod3JhcC0+cGxhdF9k ZXYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2RuczNf cGNpX2lkc1tdID0gewo+ICsJeyBQQ0lfREVWSUNFKENETlNfVkVORE9SX0lELCBDRE5TX0RFVklD RV9JRCksIH0sCj4gKwl7IDAsIH0KPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZl ciBjZG5zM19wY2lfZHJpdmVyID0gewo+ICsJLm5hbWUgPSBQQ0lfRFJJVkVSX05BTUUsCj4gKwku aWRfdGFibGUgPSBjZG5zM19wY2lfaWRzLAo+ICsJLnByb2JlID0gY2RuczNfcGNpX3Byb2JlLAo+ ICsJLnJlbW92ZSA9IGNkbnMzX3BjaV9yZW1vdmUsCj4gK307Cj4gKwo+ICttb2R1bGVfcGNpX2Ry aXZlcihjZG5zM19wY2lfZHJpdmVyKTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGNkbnMz X3BjaV9pZHMpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiUGF3ZWwgTGFzemN6YWsgPHBhd2VsbEBj YWRlbmNlLmNvbT4iKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+ICtNT0RVTEVfREVT Q1JJUFRJT04oIkNhZGVuY2UgVVNCU1MgUENJIHdyYXBwZXJyIik7Cj4gKwo+IAoKY2hlZXJzLAot cm9nZXIK 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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS 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 753D1C32789 for ; Tue, 6 Nov 2018 13:48:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3B14F2086A for ; Tue, 6 Nov 2018 13:48:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3B14F2086A 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 S2388489AbeKFXOG (ORCPT ); Tue, 6 Nov 2018 18:14:06 -0500 Received: from fllv0015.ext.ti.com ([198.47.19.141]:50310 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388029AbeKFXOF (ORCPT ); Tue, 6 Nov 2018 18:14:05 -0500 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id wA6Dmf1W044122; Tue, 6 Nov 2018 07:48:41 -0600 Received: from DFLE100.ent.ti.com (dfle100.ent.ti.com [10.64.6.21]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id wA6DmeHa130563 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 6 Nov 2018 07:48:41 -0600 Received: from DFLE113.ent.ti.com (10.64.6.34) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Tue, 6 Nov 2018 07:48:40 -0600 Received: from dflp33.itg.ti.com (10.64.6.16) by DFLE113.ent.ti.com (10.64.6.34) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Tue, 6 Nov 2018 07:48:40 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp33.itg.ti.com (8.14.3/8.13.8) with ESMTP id wA6Dmbcb014993; Tue, 6 Nov 2018 07:48:38 -0600 Subject: Re: [RFC PATCH v1 01/14] usb:cdns3: add pci to platform driver wrapper. To: Pawel Laszczak , References: <1541267487-3664-1-git-send-email-pawell@cadence.com> <1541267487-3664-2-git-send-email-pawell@cadence.com> CC: , , , , , , From: Roger Quadros Message-ID: <5BE19BB5.3030006@ti.com> Date: Tue, 6 Nov 2018 15:48:37 +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-2-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 Pawel, On 03/11/18 19:51, Pawel Laszczak wrote: > Patch adds PCI specific glue drivier that creaties and registers in s/drivier/driver s/creaties/creates s/in system/in-system > system cdns-usb3 platform device. Thanks to that we will be able to use > the cdns-usb3 platform driver for USBSS-DEV controller > build on PCI board > > Signed-off-by: Pawel Laszczak > --- > drivers/usb/Kconfig | 2 + > drivers/usb/Makefile | 2 + > drivers/usb/cdns3/Kconfig | 24 +++++ > drivers/usb/cdns3/Makefile | 3 + > drivers/usb/cdns3/cdns3-pci-wrap.c | 162 +++++++++++++++++++++++++++++ > 5 files changed, 193 insertions(+) > create mode 100644 drivers/usb/cdns3/Kconfig > create mode 100644 drivers/usb/cdns3/Makefile > create mode 100644 drivers/usb/cdns3/cdns3-pci-wrap.c > > diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig > index 987fc5ba6321..5f9334019d04 100644 > --- a/drivers/usb/Kconfig > +++ b/drivers/usb/Kconfig > @@ -112,6 +112,8 @@ source "drivers/usb/usbip/Kconfig" > > endif > > +source "drivers/usb/cdns3/Kconfig" > + > source "drivers/usb/mtu3/Kconfig" > > source "drivers/usb/musb/Kconfig" > diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile > index 7d1b8c82b208..82093a60ea2c 100644 > --- a/drivers/usb/Makefile > +++ b/drivers/usb/Makefile > @@ -8,6 +8,8 @@ > obj-$(CONFIG_USB) += core/ > obj-$(CONFIG_USB_SUPPORT) += phy/ > > +obj-$(CONFIG_USB_CDNS3) += cdns3/ > + > obj-$(CONFIG_USB_DWC3) += dwc3/ > obj-$(CONFIG_USB_DWC2) += dwc2/ > obj-$(CONFIG_USB_ISP1760) += isp1760/ > diff --git a/drivers/usb/cdns3/Kconfig b/drivers/usb/cdns3/Kconfig > new file mode 100644 > index 000000000000..888458372adb > --- /dev/null > +++ b/drivers/usb/cdns3/Kconfig > @@ -0,0 +1,24 @@ > +config USB_CDNS3 > + tristate "Cadence USB3 Dual-Role Controller" > + depends on ((USB_XHCI_HCD && USB_GADGET) || (USB_XHCI_HCD && !USB_GADGET) || (!USB_XHCI_HCD && USB_GADGET)) && HAS_DMA Why not depend on USB instead of USB_XHCI_HCD? > + help > + Say Y here if your system has a cadence USB3 dual-role controller. > + It supports: dual-role switch Host-only, and Peripheral-only. Need a coma between switch and Host-only. > + > + If you choose to build this driver is a dynamically linked > + module, the module will be called cdns3.ko. > + > +if USB_CDNS3 > + > +config USB_CDNS3_PCI_WRAP > + tristate "PCIe-based Platforms" > + depends on USB_PCI && ACPI > + default USB_CDNS3 > + help > + If you're using the USBSS Core IP with a PCIe, please say > + 'Y' or 'M' here. > + > + If you choose to build this driver as module it will > + be dynamically linked and module will be called cdns3-pci.ko > + > +endif > diff --git a/drivers/usb/cdns3/Makefile b/drivers/usb/cdns3/Makefile > new file mode 100644 > index 000000000000..dcdd62003c6a > --- /dev/null > +++ b/drivers/usb/cdns3/Makefile > @@ -0,0 +1,3 @@ > +obj-$(CONFIG_USB_CDNS3_PCI_WRAP) += cdns3-pci.o > + > +cdns3-pci-y := cdns3-pci-wrap.o > diff --git a/drivers/usb/cdns3/cdns3-pci-wrap.c b/drivers/usb/cdns3/cdns3-pci-wrap.c > new file mode 100644 > index 000000000000..6c229ab6dffb > --- /dev/null > +++ b/drivers/usb/cdns3/cdns3-pci-wrap.c > @@ -0,0 +1,162 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Cadence USBSS PCI Glue driver > + * > + * Copyright (C) 2018 Cadence. > + * > + * Author: Pawel Laszczak > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +struct cdns3_wrap { > + struct platform_device *plat_dev; > + struct pci_dev *hg_dev; > + struct resource dev_res[4]; > +}; > + > +struct cdns3_wrap wrap; > + > +#define RES_IRQ_ID 0 > +#define RES_HOST_ID 1 > +#define RES_DEV_ID 2 > +#define RES_DRD_ID 3 > + > +#define PCI_BAR_HOST 0 > +#define PCI_BAR_DEV 2 > +#define PCI_BAR_OTG 4 > + > +#define PCI_DEV_FN_HOST_DEVICE 0 > +#define PCI_DEV_FN_OTG 1 > + > +#define PCI_DRIVER_NAME "cdns3-pci-usbss" > +#define PLAT_DRIVER_NAME "cdns-usb3" > + > +#define CDNS_VENDOR_ID 0x17cd > +#define CDNS_DEVICE_ID 0x0100 > + > +/** > + * cdns3_pci_probe - Probe function for Cadence USB wrapper driver > + * @pdev: platform device object > + * @id: pci device id > + * > + * Returns 0 on success otherwise negative errno > + */ > +static int cdns3_pci_probe(struct pci_dev *pdev, > + const struct pci_device_id *id) > +{ > + struct platform_device_info plat_info; > + struct cdns3_wrap *wrap; > + struct resource *res; > + int err; > + > + /* > + * for GADGET/HOST PCI (devfn) function number is 0, > + * for OTG PCI (devfn) function number is 1 > + */ > + if (!id || pdev->devfn != PCI_DEV_FN_HOST_DEVICE) > + return -EINVAL; > + > + err = pcim_enable_device(pdev); > + if (err) { > + dev_err(&pdev->dev, "Enabling PCI device has failed %d\n", err); > + return err; > + } > + > + pci_set_master(pdev); > + wrap = devm_kzalloc(&pdev->dev, sizeof(*wrap), GFP_KERNEL); > + if (!wrap) { > + dev_err(&pdev->dev, "Failed to load PCI module\n"); > + return -ENOMEM; > + } > + > + /* function 0: host(BAR_0) + device(BAR_1) + otg(BAR_2)). */ > + memset(wrap->dev_res, 0x00, > + sizeof(struct resource) * ARRAY_SIZE(wrap->dev_res)); > + dev_info(&pdev->dev, "Initialize Device resources\n"); > + res = wrap->dev_res; > + > +#if IS_ENABLED(CONFIG_USB_CDNS3_GADGET) Why depend on Config options to populate resources? The resources should be there regardless. It is a lot simpler that way as it reflects the hardware as-is. > + res[RES_DEV_ID].start = pci_resource_start(pdev, PCI_BAR_DEV); > + res[RES_DEV_ID].end = pci_resource_end(pdev, PCI_BAR_DEV); > + res[RES_DEV_ID].name = "cdns3-dev-regs"; > + res[RES_DEV_ID].flags = IORESOURCE_MEM; > + dev_info(&pdev->dev, "USBSS-DEV physical base addr: %pa\n", > + &res[RES_DEV_ID].start); > + dev_dbg() for this and all occurrences below? > +#endif > + > +#if IS_ENABLED(CONFIG_USB_CDNS3_HOST) > + res[RES_HOST_ID].start = pci_resource_start(pdev, PCI_BAR_HOST); > + res[RES_HOST_ID].end = pci_resource_end(pdev, PCI_BAR_HOST); > + res[RES_HOST_ID].name = "cdns3-xhci-regs"; > + res[RES_HOST_ID].flags = IORESOURCE_MEM; > + dev_info(&pdev->dev, "USBSS-XHCI physical base addr: %pa\n", > + &res[RES_HOST_ID].start); > +#endif > + > + res[RES_DRD_ID].start = pci_resource_start(pdev, PCI_BAR_OTG); > + res[RES_DRD_ID].end = pci_resource_end(pdev, PCI_BAR_OTG); > + res[RES_DRD_ID].name = "cdns3-otg"; > + res[RES_DRD_ID].flags = IORESOURCE_MEM; > + dev_info(&pdev->dev, "USBSS-DRD physical base addr: %pa\n", > + &res[RES_DRD_ID].start); > + > + /* Interrupt common for both device and XHCI */ > + wrap->dev_res[RES_IRQ_ID].start = pdev->irq; > + wrap->dev_res[RES_IRQ_ID].name = "cdns3-irq"; > + wrap->dev_res[RES_IRQ_ID].flags = IORESOURCE_IRQ; > + > + /* set up platform device info */ > + memset(&plat_info, 0, sizeof(plat_info)); > + plat_info.parent = &pdev->dev; > + plat_info.fwnode = pdev->dev.fwnode; > + plat_info.name = PLAT_DRIVER_NAME; > + plat_info.id = pdev->devfn; > + plat_info.res = wrap->dev_res; > + plat_info.num_res = ARRAY_SIZE(wrap->dev_res); > + plat_info.dma_mask = pdev->dma_mask; > + > + /* register platform device */ > + wrap->plat_dev = platform_device_register_full(&plat_info); > + if (IS_ERR(wrap->plat_dev)) { > + err = PTR_ERR(wrap->plat_dev); > + return err; > + } > + > + pci_set_drvdata(pdev, wrap); > + > + return err; > +} > + > +void cdns3_pci_remove(struct pci_dev *pdev) > +{ > + struct cdns3_wrap *wrap = (struct cdns3_wrap *)pci_get_drvdata(pdev); > + > + platform_device_unregister(wrap->plat_dev); > +} > + > +static const struct pci_device_id cdns3_pci_ids[] = { > + { PCI_DEVICE(CDNS_VENDOR_ID, CDNS_DEVICE_ID), }, > + { 0, } > +}; > + > +static struct pci_driver cdns3_pci_driver = { > + .name = PCI_DRIVER_NAME, > + .id_table = cdns3_pci_ids, > + .probe = cdns3_pci_probe, > + .remove = cdns3_pci_remove, > +}; > + > +module_pci_driver(cdns3_pci_driver); > +MODULE_DEVICE_TABLE(pci, cdns3_pci_ids); > + > +MODULE_AUTHOR("Pawel Laszczak "); > +MODULE_LICENSE("GPL v2"); > +MODULE_DESCRIPTION("Cadence USBSS PCI wrapperr"); > + > cheers, -roger -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki