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,v2,01/15] usb:cdns3: add pci to platform driver wrapper. From: Roger Quadros Message-Id: <5BF7DA00.7070002@ti.com> Date: Fri, 23 Nov 2018 12:44:16 +0200 To: Pawel Laszczak , devicetree@vger.kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, adouglas@cadence.com, jbergsagel@ti.com, nsekhar@ti.com, nm@ti.com, sureshp@cadence.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com List-ID: SGkgUGF3ZWwsCgpPbiAxOC8xMS8xOCAxMjowOCwgUGF3ZWwgTGFzemN6YWsgd3JvdGU6Cj4gUGF0 Y2ggYWRkcyBQQ0kgc3BlY2lmaWMgZ2x1ZSBkcml2ZXIgdGhhdCBjcmVhdGVzIGFuZCByZWdpc3Rl cnMgaW4tc3lzdGVtCj4gY2Rucy11c2IzIHBsYXRmb3JtIGRldmljZS4gVGhhbmtzIHRvIHRoYXQg d2Ugd2lsbCBiZSBhYmxlIHRvIHVzZQo+IHRoZSBjZG5zLXVzYjMgcGxhdGZvcm0gZHJpdmVyIGZv ciBVU0JTUy1ERVYgY29udHJvbGxlcgo+IGJ1aWxkIG9uIFBDSSBib2FyZAo+IAo+IFNpZ25lZC1v ZmYtYnk6IFBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvdXNiL0tjb25maWcgICAgICAgICAgICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL3VzYi9NYWtl ZmlsZSAgICAgICAgICAgICAgIHwgICAyICsKPiAgZHJpdmVycy91c2IvY2RuczMvS2NvbmZpZyAg ICAgICAgICB8ICAyNCArKysrKwo+ICBkcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZSAgICAgICAg IHwgICAzICsKPiAgZHJpdmVycy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYyB8IDE1NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDE4OCBpbnNlcnRp b25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvY2RuczMtcGNpLXdyYXAuYwo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9LY29uZmlnIGIvZHJpdmVycy91c2IvS2NvbmZpZwo+IGluZGV4 IDk4N2ZjNWJhNjMyMS4uNWY5MzM0MDE5ZDA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL0tj b25maWcKPiArKysgYi9kcml2ZXJzL3VzYi9LY29uZmlnCj4gQEAgLTExMiw2ICsxMTIsOCBAQCBz b3VyY2UgImRyaXZlcnMvdXNiL3VzYmlwL0tjb25maWciCj4gIAo+ICBlbmRpZgo+ICAKPiArc291 cmNlICJkcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnIgo+ICsKPiAgc291cmNlICJkcml2ZXJzL3Vz Yi9tdHUzL0tjb25maWciCj4gIAo+ICBzb3VyY2UgImRyaXZlcnMvdXNiL211c2IvS2NvbmZpZyIK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9NYWtlZmls ZQo+IGluZGV4IDdkMWI4YzgyYjIwOC4uODIwOTNhNjBlYTJjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvdXNiL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy91c2IvTWFrZWZpbGUKPiBAQCAtOCw2ICs4 LDggQEAKPiAgb2JqLSQoQ09ORklHX1VTQikJCSs9IGNvcmUvCj4gIG9iai0kKENPTkZJR19VU0Jf U1VQUE9SVCkJKz0gcGh5Lwo+ICAKPiArb2JqLSQoQ09ORklHX1VTQl9DRE5TMykJCSs9IGNkbnMz Lwo+ICsKPiAgb2JqLSQoQ09ORklHX1VTQl9EV0MzKQkJKz0gZHdjMy8KPiAgb2JqLSQoQ09ORklH X1VTQl9EV0MyKQkJKz0gZHdjMi8KPiAgb2JqLSQoQ09ORklHX1VTQl9JU1AxNzYwKQkrPSBpc3Ax NzYwLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9LY29uZmlnIGIvZHJpdmVycy91 c2IvY2RuczMvS2NvbmZpZwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MDAwLi5lYjIyYTg2OTI5OTEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy91c2IvY2Ru czMvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMjQgQEAKPiArY29uZmlnIFVTQl9DRE5TMwo+ICsJdHJp c3RhdGUgIkNhZGVuY2UgVVNCMyBEdWFsLVJvbGUgQ29udHJvbGxlciIKPiArCWRlcGVuZHMgb24g VVNCX1NVUFBPUlQgJiYgKFVTQiB8fCBVU0JfR0FER0VUKSAmJiBIQVNfRE1BCj4gKwloZWxwCj4g KwkgIFNheSBZIGhlcmUgaWYgeW91ciBzeXN0ZW0gaGFzIGEgY2FkZW5jZSBVU0IzIGR1YWwtcm9s ZSBjb250cm9sbGVyLgo+ICsJICBJdCBzdXBwb3J0czogZHVhbC1yb2xlIHN3aXRjaCwgSG9zdC1v bmx5LCBhbmQgUGVyaXBoZXJhbC1vbmx5Lgo+ICsKPiArCSAgSWYgeW91IGNob29zZSB0byBidWls ZCB0aGlzIGRyaXZlciBpcyBhIGR5bmFtaWNhbGx5IGxpbmtlZAo+ICsJICBtb2R1bGUsIHRoZSBt b2R1bGUgd2lsbCBiZSBjYWxsZWQgY2RuczMua28uCj4gKwo+ICtpZiBVU0JfQ0ROUzMKPiArCj4g K2NvbmZpZyBVU0JfQ0ROUzNfUENJX1dSQVAKPiArCXRyaXN0YXRlICJQQ0llLWJhc2VkIFBsYXRm b3JtcyIKCiJDYWRlbmNlIFVTQjMgc3VwcG9ydCBvbiBQQ0llLWJhc2VkIHBsYXRmb3JtcyI/Cgo+ ICsJZGVwZW5kcyBvbiBVU0JfUENJICYmIEFDUEkKPiArCWRlZmF1bHQgVVNCX0NETlMzCj4gKwlo ZWxwCj4gKwkgIElmIHlvdSdyZSB1c2luZyB0aGUgVVNCU1MgQ29yZSBJUCB3aXRoIGEgUENJZSwg cGxlYXNlIHNheQo+ICsJICAnWScgb3IgJ00nIGhlcmUuCj4gKwo+ICsJICBJZiB5b3UgY2hvb3Nl IHRvIGJ1aWxkIHRoaXMgZHJpdmVyIGFzIG1vZHVsZSBpdCB3aWxsCj4gKwkgIGJlIGR5bmFtaWNh bGx5IGxpbmtlZCBhbmQgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGNkbnMzLXBjaS5rbwo+ICsKPiAr ZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgYi9kcml2ZXJz L3VzYi9jZG5zMy9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5kY2RkNjIwMDNjNmEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy91c2Iv Y2RuczMvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDMgQEAKPiArb2JqLSQoQ09ORklHX1VTQl9DRE5T M19QQ0lfV1JBUCkJKz0gY2RuczMtcGNpLm8KPiArCj4gK2NkbnMzLXBjaS15CQkgCQk6PSBjZG5z My1wY2ktd3JhcC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2NkbnMzLXBjaS13 cmFwLmMgYi9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3JhcC5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQwYTE1Y2MwYjczOAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9jZG5zMy1wY2ktd3JhcC5jCj4gQEAgLTAsMCAr MSwxNTcgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiAr ICogQ2FkZW5jZSBVU0JTUyBQQ0kgR2x1ZSBkcml2ZXIKPiArICoKPiArICogQ29weXJpZ2h0IChD KSAyMDE4IENhZGVuY2UuCj4gKyAqCj4gKyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsgPHBhd2Vs bEBjYWRlbmNlLmNvbT4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEt bWFwcGluZy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsKPiArc3RydWN0IGNkbnMz X3dyYXAgewo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdF9kZXY7Cj4gKwlzdHJ1Y3Qg cGNpX2RldiAqaGdfZGV2Owo+ICsJc3RydWN0IHJlc291cmNlIGRldl9yZXNbNF07Cj4gK307Cj4g Kwo+ICtzdHJ1Y3QgY2RuczNfd3JhcCB3cmFwOwo+ICsKPiArI2RlZmluZSBSRVNfSVJRX0lECQkw Cj4gKyNkZWZpbmUgUkVTX0hPU1RfSUQJCTEKPiArI2RlZmluZSBSRVNfREVWX0lECQkyCj4gKyNk ZWZpbmUgUkVTX0RSRF9JRAkJMwo+ICsKPiArI2RlZmluZSBQQ0lfQkFSX0hPU1QJCTAKPiArI2Rl ZmluZSBQQ0lfQkFSX0RFVgkJMgo+ICsjZGVmaW5lIFBDSV9CQVJfT1RHCQk0Cj4gKwo+ICsjZGVm aW5lIFBDSV9ERVZfRk5fSE9TVF9ERVZJQ0UJMAo+ICsjZGVmaW5lIFBDSV9ERVZfRk5fT1RHCQkx Cj4gKwo+ICsjZGVmaW5lIFBDSV9EUklWRVJfTkFNRQkJImNkbnMzLXBjaS11c2JzcyIKPiArI2Rl ZmluZSBQTEFUX0RSSVZFUl9OQU1FCSJjZG5zLXVzYjMiCj4gKwo+ICsjZGVmaW5lIENETlNfVkVO RE9SX0lEIDB4MTdjZAo+ICsjZGVmaW5lIENETlNfREVWSUNFX0lEIDB4MDEwMAo+ICsKPiArLyoq Cj4gKyAqIGNkbnMzX3BjaV9wcm9iZSAtIFByb2JlIGZ1bmN0aW9uIGZvciBDYWRlbmNlIFVTQiB3 cmFwcGVyIGRyaXZlcgo+ICsgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIG9iamVjdAo+ICsgKiBA aWQ6IHBjaSBkZXZpY2UgaWQKPiArICoKPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3RoZXJ3 aXNlIG5lZ2F0aXZlIGVycm5vCj4gKyAqLwo+ICtzdGF0aWMgaW50IGNkbnMzX3BjaV9wcm9iZShz dHJ1Y3QgcGNpX2RldiAqcGRldiwKPiArCQkJICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQg KmlkKQo+ICt7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2luZm8gcGxhdF9pbmZvOwo+ICsJ c3RydWN0IGNkbnMzX3dyYXAgKndyYXA7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCWlu dCBlcnI7Cj4gKwo+ICsJLyoKPiArCSAqIGZvciBHQURHRVQvSE9TVCBQQ0kgKGRldmZuKSBmdW5j dGlvbiBudW1iZXIgaXMgMCwKPiArCSAqIGZvciBPVEcgUENJIChkZXZmbikgZnVuY3Rpb24gbnVt YmVyIGlzIDEKPiArCSAqLwo+ICsJaWYgKCFpZCB8fCBwZGV2LT5kZXZmbiAhPSBQQ0lfREVWX0ZO X0hPU1RfREVWSUNFKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWVyciA9IHBjaW1fZW5h YmxlX2RldmljZShwZGV2KTsKPiArCWlmIChlcnIpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJFbmFibGluZyBQQ0kgZGV2aWNlIGhhcyBmYWlsZWQgJWRcbiIsIGVycik7Cj4gKwkJcmV0dXJu IGVycjsKPiArCX0KPiArCj4gKwlwY2lfc2V0X21hc3RlcihwZGV2KTsKPiArCXdyYXAgPSBkZXZt X2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp3cmFwKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IXdyYXApIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gbG9hZCBQQ0kgbW9k dWxlXG4iKTsKCiJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IiA/CgpSZXN0IG9mIHBhdGNoIGxv b2tzIGdvb2QgdG8gbWUuCgo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCS8qIGZ1 bmN0aW9uIDA6IGhvc3QoQkFSXzApICsgZGV2aWNlKEJBUl8xKSArIG90ZyhCQVJfMikpLiAqLwo+ ICsJbWVtc2V0KHdyYXAtPmRldl9yZXMsIDB4MDAsCj4gKwkgICAgICAgc2l6ZW9mKHN0cnVjdCBy ZXNvdXJjZSkgKiBBUlJBWV9TSVpFKHdyYXAtPmRldl9yZXMpKTsKPiArCWRldl9kYmcoJnBkZXYt PmRldiwgIkluaXRpYWxpemUgRGV2aWNlIHJlc291cmNlc1xuIik7Cj4gKwlyZXMgPSB3cmFwLT5k ZXZfcmVzOwo+ICsKPiArCXJlc1tSRVNfREVWX0lEXS5zdGFydCA9IHBjaV9yZXNvdXJjZV9zdGFy dChwZGV2LCBQQ0lfQkFSX0RFVik7Cj4gKwlyZXNbUkVTX0RFVl9JRF0uZW5kID0gICBwY2lfcmVz b3VyY2VfZW5kKHBkZXYsIFBDSV9CQVJfREVWKTsKPiArCXJlc1tSRVNfREVWX0lEXS5uYW1lID0g ImNkbnMzLWRldi1yZWdzIjsKPiArCXJlc1tSRVNfREVWX0lEXS5mbGFncyA9IElPUkVTT1VSQ0Vf TUVNOwo+ICsJZGV2X2RiZygmcGRldi0+ZGV2LCAiVVNCU1MtREVWIHBoeXNpY2FsIGJhc2UgYWRk cjogJXBhXG4iLAo+ICsJCSZyZXNbUkVTX0RFVl9JRF0uc3RhcnQpOwo+ICsKPiArCXJlc1tSRVNf SE9TVF9JRF0uc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgUENJX0JBUl9IT1NUKTsK PiArCXJlc1tSRVNfSE9TVF9JRF0uZW5kID0gcGNpX3Jlc291cmNlX2VuZChwZGV2LCBQQ0lfQkFS X0hPU1QpOwo+ICsJcmVzW1JFU19IT1NUX0lEXS5uYW1lID0gImNkbnMzLXhoY2ktcmVncyI7Cj4g KwlyZXNbUkVTX0hPU1RfSURdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07Cj4gKwlkZXZfZGJnKCZw ZGV2LT5kZXYsICJVU0JTUy1YSENJIHBoeXNpY2FsIGJhc2UgYWRkcjogJXBhXG4iLAo+ICsJCSZy ZXNbUkVTX0hPU1RfSURdLnN0YXJ0KTsKPiArCj4gKwlyZXNbUkVTX0RSRF9JRF0uc3RhcnQgPSBw Y2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgUENJX0JBUl9PVEcpOwo+ICsJcmVzW1JFU19EUkRfSURd LmVuZCA9ICAgcGNpX3Jlc291cmNlX2VuZChwZGV2LCBQQ0lfQkFSX09URyk7Cj4gKwlyZXNbUkVT X0RSRF9JRF0ubmFtZSA9ICJjZG5zMy1vdGciOwo+ICsJcmVzW1JFU19EUkRfSURdLmZsYWdzID0g SU9SRVNPVVJDRV9NRU07Cj4gKwlkZXZfZGJnKCZwZGV2LT5kZXYsICJVU0JTUy1EUkQgcGh5c2lj YWwgYmFzZSBhZGRyOiAlcGFcbiIsCj4gKwkJJnJlc1tSRVNfRFJEX0lEXS5zdGFydCk7Cj4gKwo+ ICsJLyogSW50ZXJydXB0IGNvbW1vbiBmb3IgYm90aCBkZXZpY2UgYW5kIFhIQ0kgKi8KPiArCXdy YXAtPmRldl9yZXNbUkVTX0lSUV9JRF0uc3RhcnQgPSBwZGV2LT5pcnE7Cj4gKwl3cmFwLT5kZXZf cmVzW1JFU19JUlFfSURdLm5hbWUgPSAiY2RuczMtaXJxIjsKPiArCXdyYXAtPmRldl9yZXNbUkVT X0lSUV9JRF0uZmxhZ3MgPSBJT1JFU09VUkNFX0lSUTsKPiArCj4gKwkvKiBzZXQgdXAgcGxhdGZv cm0gZGV2aWNlIGluZm8gKi8KPiArCW1lbXNldCgmcGxhdF9pbmZvLCAwLCBzaXplb2YocGxhdF9p bmZvKSk7Cj4gKwlwbGF0X2luZm8ucGFyZW50ID0gJnBkZXYtPmRldjsKPiArCXBsYXRfaW5mby5m d25vZGUgPSBwZGV2LT5kZXYuZndub2RlOwo+ICsJcGxhdF9pbmZvLm5hbWUgPSBQTEFUX0RSSVZF Ul9OQU1FOwo+ICsJcGxhdF9pbmZvLmlkID0gcGRldi0+ZGV2Zm47Cj4gKwlwbGF0X2luZm8ucmVz ID0gd3JhcC0+ZGV2X3JlczsKPiArCXBsYXRfaW5mby5udW1fcmVzID0gQVJSQVlfU0laRSh3cmFw LT5kZXZfcmVzKTsKPiArCXBsYXRfaW5mby5kbWFfbWFzayA9IHBkZXYtPmRtYV9tYXNrOwo+ICsK PiArCS8qIHJlZ2lzdGVyIHBsYXRmb3JtIGRldmljZSAqLwo+ICsJd3JhcC0+cGxhdF9kZXYgPSBw bGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbCgmcGxhdF9pbmZvKTsKPiArCWlmIChJU19FUlIo d3JhcC0+cGxhdF9kZXYpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUih3cmFwLT5wbGF0X2Rldik7Cj4g KwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlwY2lfc2V0X2RydmRhdGEocGRldiwgd3JhcCk7 Cj4gKwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArdm9pZCBjZG5zM19wY2lfcmVtb3ZlKHN0 cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgY2RuczNfd3JhcCAqd3JhcCA9IChz dHJ1Y3QgY2RuczNfd3JhcCAqKXBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCj4gKwlwbGF0Zm9y bV9kZXZpY2VfdW5yZWdpc3Rlcih3cmFwLT5wbGF0X2Rldik7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBjZG5zM19wY2lfaWRzW10gPSB7Cj4gKwl7IFBDSV9E RVZJQ0UoQ0ROU19WRU5ET1JfSUQsIENETlNfREVWSUNFX0lEKSwgfSwKPiArCXsgMCwgfQo+ICt9 Owo+ICsKPiArc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNkbnMzX3BjaV9kcml2ZXIgPSB7Cj4g KwkubmFtZSA9IFBDSV9EUklWRVJfTkFNRSwKPiArCS5pZF90YWJsZSA9IGNkbnMzX3BjaV9pZHMs Cj4gKwkucHJvYmUgPSBjZG5zM19wY2lfcHJvYmUsCj4gKwkucmVtb3ZlID0gY2RuczNfcGNpX3Jl bW92ZSwKPiArfTsKPiArCj4gK21vZHVsZV9wY2lfZHJpdmVyKGNkbnMzX3BjaV9kcml2ZXIpOwo+ ICtNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgY2RuczNfcGNpX2lkcyk7Cj4gKwo+ICtNT0RVTEVf QVVUSE9SKCJQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPiIpOwo+ICtNT0RVTEVf TElDRU5TRSgiR1BMIHYyIik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiQ2FkZW5jZSBVU0JTUyBQ Q0kgd3JhcHBlcnIiKTsKPiArCj4gCgpjaGVlcnMsCi1yb2dlcgo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Quadros Subject: Re: [RFC PATCH v2 01/15] usb:cdns3: add pci to platform driver wrapper. Date: Fri, 23 Nov 2018 12:44:16 +0200 Message-ID: <5BF7DA00.7070002@ti.com> References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-2-git-send-email-pawell@cadence.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1542535751-16079-2-git-send-email-pawell@cadence.com> Sender: linux-kernel-owner@vger.kernel.org To: Pawel Laszczak , devicetree@vger.kernel.org Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, adouglas@cadence.com, jbergsagel@ti.com, nsekhar@ti.com, nm@ti.com, sureshp@cadence.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com List-Id: devicetree@vger.kernel.org Hi Pawel, On 18/11/18 12:08, Pawel Laszczak wrote: > Patch adds PCI specific glue driver that creates and registers in-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 | 157 +++++++++++++++++++++++++++++ > 5 files changed, 188 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..eb22a8692991 > --- /dev/null > +++ b/drivers/usb/cdns3/Kconfig > @@ -0,0 +1,24 @@ > +config USB_CDNS3 > + tristate "Cadence USB3 Dual-Role Controller" > + depends on USB_SUPPORT && (USB || USB_GADGET) && HAS_DMA > + help > + Say Y here if your system has a cadence USB3 dual-role controller. > + It supports: dual-role switch, Host-only, and Peripheral-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" "Cadence USB3 support on 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..d0a15cc0b738 > --- /dev/null > +++ b/drivers/usb/cdns3/cdns3-pci-wrap.c > @@ -0,0 +1,157 @@ > +// 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"); "Failed to allocate memory" ? Rest of patch looks good to me. > + 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_dbg(&pdev->dev, "Initialize Device resources\n"); > + res = wrap->dev_res; > + > + 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_dbg(&pdev->dev, "USBSS-DEV physical base addr: %pa\n", > + &res[RES_DEV_ID].start); > + > + 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_dbg(&pdev->dev, "USBSS-XHCI physical base addr: %pa\n", > + &res[RES_HOST_ID].start); > + > + 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_dbg(&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 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.6 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 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 C2878C43441 for ; Fri, 23 Nov 2018 10:44:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 675EC20820 for ; Fri, 23 Nov 2018 10:44:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="DAsRN8RM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 675EC20820 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 S2409480AbeKWV2N (ORCPT ); Fri, 23 Nov 2018 16:28:13 -0500 Received: from lelv0142.ext.ti.com ([198.47.23.249]:41526 "EHLO lelv0142.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387625AbeKWV2N (ORCPT ); Fri, 23 Nov 2018 16:28:13 -0500 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id wANAiLpA002740; Fri, 23 Nov 2018 04:44:21 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1542969861; bh=jiDzKVE9g1BKFYaT0Bqcg9AuyVZix/X2w2efE406NNc=; h=Subject:To:References:CC:From:Date:In-Reply-To; b=DAsRN8RMyxoRxD/bTz4VQojkq1lRwzU9SOLuM31PGgQuu0FvczUQZLDuP6zx6T550 xm50yeZ8HddjckXEAHhjSa3rlASNgu5l3HjAzc6JGx6YaccbUi7zzcSDDE2zh/bk4B 7NWXDE/hEgRcJ6mAkYOqLi+h2ryxej0J89EPvFSY= Received: from DLEE113.ent.ti.com (dlee113.ent.ti.com [157.170.170.24]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id wANAiLbU010750 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 23 Nov 2018 04:44:21 -0600 Received: from DLEE112.ent.ti.com (157.170.170.23) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Fri, 23 Nov 2018 04:44:19 -0600 Received: from dlep33.itg.ti.com (157.170.170.75) by DLEE112.ent.ti.com (157.170.170.23) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1591.10 via Frontend Transport; Fri, 23 Nov 2018 04:44:19 -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 wANAiGMg010907; Fri, 23 Nov 2018 04:44:17 -0600 Subject: Re: [RFC PATCH v2 01/15] usb:cdns3: add pci to platform driver wrapper. To: Pawel Laszczak , References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-2-git-send-email-pawell@cadence.com> CC: , , , , , , , , , , From: Roger Quadros Message-ID: <5BF7DA00.7070002@ti.com> Date: Fri, 23 Nov 2018 12:44:16 +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: <1542535751-16079-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 18/11/18 12:08, Pawel Laszczak wrote: > Patch adds PCI specific glue driver that creates and registers in-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 | 157 +++++++++++++++++++++++++++++ > 5 files changed, 188 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..eb22a8692991 > --- /dev/null > +++ b/drivers/usb/cdns3/Kconfig > @@ -0,0 +1,24 @@ > +config USB_CDNS3 > + tristate "Cadence USB3 Dual-Role Controller" > + depends on USB_SUPPORT && (USB || USB_GADGET) && HAS_DMA > + help > + Say Y here if your system has a cadence USB3 dual-role controller. > + It supports: dual-role switch, Host-only, and Peripheral-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" "Cadence USB3 support on 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..d0a15cc0b738 > --- /dev/null > +++ b/drivers/usb/cdns3/cdns3-pci-wrap.c > @@ -0,0 +1,157 @@ > +// 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"); "Failed to allocate memory" ? Rest of patch looks good to me. > + 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_dbg(&pdev->dev, "Initialize Device resources\n"); > + res = wrap->dev_res; > + > + 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_dbg(&pdev->dev, "USBSS-DEV physical base addr: %pa\n", > + &res[RES_DEV_ID].start); > + > + 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_dbg(&pdev->dev, "USBSS-XHCI physical base addr: %pa\n", > + &res[RES_HOST_ID].start); > + > + 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_dbg(&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