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,05/15] usb:cdns3: Added DRD support From: Roger Quadros Message-Id: <5BFBC7B8.5020004@ti.com> Date: Mon, 26 Nov 2018 12:15:20 +0200 To: Pawel Laszczak , "devicetree@vger.kernel.org" Cc: "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Alan Douglas , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Pawel Jez , Rahul Kumar List-ID: T24gMjYvMTEvMTggMTI6MDksIFBhd2VsIExhc3pjemFrIHdyb3RlOgo+Pj4+Cj4+Pj4gUGF3ZWws Cj4+Pj4KPj4+PiBPbiAyNi8xMS8xOCAwOToyMywgUGF3ZWwgTGFzemN6YWsgd3JvdGU6Cj4+Pj4+ IEhpIFJvZ2VyLAo+Pj4+Pgo+Pj4+Pj4gT24gMTgvMTEvMTggMTI6MDksIFBhd2VsIExhc3pjemFr IHdyb3RlOgo+Pj4+Pj4+IFBhdGNoIGFkZHMgc3VwcG9ydHMgZm9yIGRldGVjdGluZyBIb3N0L0Rl dmljZSBtb2RlLgo+Pj4+Pj4+IENvbnRyb2xsZXIgaGFzIGFkZGl0aW9uYWwgT1RHIHJlZ2lzdGVy IHRoYXQgYWxsb3cKPj4+Pj4+PiBpbXBsZW1lbnQgZXZlbiB3aG9sZSBPVEcgZnVuY3Rpb25hbGl0 eS4KPj4+Pj4+PiBBdCB0aGlzIG1vbWVudCBwYXRjaCBhZGRzIHN1cHBvcnQgb25seSBmb3IgZGV0 ZWN0aW5nCj4+Pj4+Pj4gdGhlIGFwcHJvcHJpYXRlIG1vZGUgYmFzZWQgb24gc3RyYXAgcGlucyBh bmQgSUQgcGluLgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUGF3ZWwgTGFzemN6YWsg PHBhd2VsbEBjYWRlbmNlLmNvbT4KPj4+Pj4+PiAtLS0KPj4+Pj4+PiAgZHJpdmVycy91c2IvY2Ru czMvTWFrZWZpbGUgfCAgIDIgKy0KPj4+Pj4+PiAgZHJpdmVycy91c2IvY2RuczMvY29yZS5jICAg fCAgMjcgKysrLS0KPj4+Pj4+PiAgZHJpdmVycy91c2IvY2RuczMvZHJkLmMgICAgfCAyMjkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+Pj4+ICBkcml2ZXJzL3VzYi9j ZG5zMy9kcmQuaCAgICB8IDEyMiArKysrKysrKysrKysrKysrKysrKwo+Pj4+Pj4+ICA0IGZpbGVz IGNoYW5nZWQsIDM3MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+Pj4+Pj4+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvZHJkLmMKPj4+Pj4+PiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NkbnMzL2RyZC5oCj4+Pj4+Pj4KPj4+Pj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy91c2IvY2RuczMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9jZG5zMy9NYWtl ZmlsZQo+Pj4+Pj4+IGluZGV4IDAyZDI1YjIzYzVkMy4uZTc3OWIyYTJmOGViIDEwMDY0NAo+Pj4+ Pj4+IC0tLSBhL2RyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlCj4+Pj4+Pj4gKysrIGIvZHJpdmVy cy91c2IvY2RuczMvTWFrZWZpbGUKPj4+Pj4+PiBAQCAtMSw1ICsxLDUgQEAKPj4+Pj4+PiAgb2Jq LSQoQ09ORklHX1VTQl9DRE5TMykJCQkrPSBjZG5zMy5vCj4+Pj4+Pj4gIG9iai0kKENPTkZJR19V U0JfQ0ROUzNfUENJX1dSQVApCSs9IGNkbnMzLXBjaS5vCj4+Pj4+Pj4KPj4+Pj4+PiAtY2RuczMt eQkJCQkJOj0gY29yZS5vCj4+Pj4+Pj4gK2NkbnMzLXkJCQkJCTo9IGNvcmUubyBkcmQubwo+Pj4+ Pj4+ICBjZG5zMy1wY2kteQkJIAkJOj0gY2RuczMtcGNpLXdyYXAubwo+Pj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMgYi9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMK Pj4+Pj4+PiBpbmRleCBmOTA1NWQ0ZGE2N2YuLmRiZWU0MzI1ZGE3ZiAxMDA2NDQKPj4+Pj4+PiAt LS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL3VzYi9j ZG5zMy9jb3JlLmMKPj4+Pj4+PiBAQCAtMTcsNiArMTcsNyBAQAo+Pj4+Pj4+Cj4+Pj4+Pj4gICNp bmNsdWRlICJnYWRnZXQuaCIKPj4+Pj4+PiAgI2luY2x1ZGUgImNvcmUuaCIKPj4+Pj4+PiArI2lu Y2x1ZGUgImRyZC5oIgo+Pj4+Pj4+Cj4+Pj4+Pj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGNkbnMz X3JvbGVfZHJpdmVyICpjZG5zM19nZXRfY3VycmVudF9yb2xlX2RyaXZlcihzdHJ1Y3QgY2RuczMg KmNkbnMpCj4+Pj4+Pj4gIHsKPj4+Pj4+PiBAQCAtNTcsOCArNTgsMTAgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGNkbnMzX3JvbGVfc3RvcChzdHJ1Y3QgY2RuczMgKmNkbnMpCj4+Pj4+Pj4gIHN0YXRp YyBlbnVtIGNkbnMzX3JvbGVzIGNkbnMzX2dldF9yb2xlKHN0cnVjdCBjZG5zMyAqY2RucykKPj4+ Pj4+PiAgewo+Pj4+Pj4+ICAJaWYgKGNkbnMtPnJvbGVzW0NETlMzX1JPTEVfSE9TVF0gJiYgY2Ru cy0+cm9sZXNbQ0ROUzNfUk9MRV9HQURHRVRdKSB7Cj4+Pj4+Pj4gLQkJLy9UT0RPOiBpbXBsZW1l bnRzIHNlbGVjdGluZyBkZXZpY2UvaG9zdCBtb2RlCj4+Pj4+Pj4gLQkJcmV0dXJuIENETlMzX1JP TEVfSE9TVDsKPj4+Pj4+PiArCQlpZiAoY2RuczNfaXNfaG9zdChjZG5zKSkKPj4+Pj4+PiArCQkJ cmV0dXJuIENETlMzX1JPTEVfSE9TVDsKPj4+Pj4+PiArCQlpZiAoY2RuczNfaXNfZGV2aWNlKGNk bnMpKQo+Pj4+Pj4+ICsJCQlyZXR1cm4gQ0ROUzNfUk9MRV9HQURHRVQ7Cj4+Pj4+Pj4gIAl9Cj4+ Pj4+Pj4gIAlyZXR1cm4gY2Rucy0+cm9sZXNbQ0ROUzNfUk9MRV9IT1NUXQo+Pj4+Pj4+ICAJCT8g Q0ROUzNfUk9MRV9IT1NUCj4+Pj4+Pj4gQEAgLTEyNCw2ICsxMjcsMTIgQEAgc3RhdGljIGlycXJl dHVybl90IGNkbnMzX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKQo+Pj4+Pj4+ICAJc3RydWN0IGNk bnMzICpjZG5zID0gZGF0YTsKPj4+Pj4+PiAgCWlycXJldHVybl90IHJldCA9IElSUV9OT05FOwo+ Pj4+Pj4+Cj4+Pj4+Pj4gKwlpZiAoY2Rucy0+ZHJfbW9kZSA9PSBVU0JfRFJfTU9ERV9PVEcpIHsK Pj4+Pj4+PiArCQlyZXQgPSBjZG5zM19kcmRfaXJxKGNkbnMpOwo+Pj4+Pj4+ICsJCWlmIChyZXQg PT0gSVJRX0hBTkRMRUQpCj4+Pj4+Pj4gKwkJCXJldHVybiByZXQ7Cj4+Pj4+Pj4gKwl9Cj4+Pj4+ Pgo+Pj4+Pj4gVGhlIGtlcm5lbCdzIHNoYXJlZCBJUlEgbW9kZWwgdGFrZXMgY2FyZSBvZiBzaGFy aW5nIHRoZSBzYW1lIGludGVycnVwdAo+Pj4+Pj4gYmV0d2VlbiBkaWZmZXJlbnQgZGV2aWNlcyBh bmQgdGhlaXIgZHJpdmVycy4gWW91IGRvbid0IG5lZWQgdG8gbWFudWFsbHkKPj4+Pj4+IGhhbmRs ZSBpdCBoZXJlLiBKdXN0IGxldCBhbGwgMyBkcml2ZXJzIGRvIGEgcmVxdWVzdF9pcnEoKSBhbmQg aGF2ZQo+Pj4+Pj4gaGFuZGxlcnMgY2hlY2sgaWYgdGhlIElSUSB3YXMgdGhlaXJzIG9yIG5vdCBh bmQgcmV0dXJuIElSUV9IQU5ETEVEIG9yCj4+Pj4+PiBJUlFfTk9ORSBhY2NvcmRpbmdseS4KPj4+ Pj4+Cj4+Pj4+PiBMb29rcyBsaWtlIHlvdSBjYW4gZG8gYXdheSB3aXRoIGlycSBtZW1iZXIgb2Yg dGhlIHJvbGUgZHJpdmVyIHN0cnVjdC4KPj4+Pj4KPj4+Pj4gT2ssIEkgd2lsbCBzcGxpdCBpdCBp bnRvIDMgc2VwYXJhdGUgcGFydCwgYnV0IGluIHRoaXMgY2FzZSwgSSBhZGRpdGlvbmFsbHkgaGF2 ZSB0byBjaGVjayB0aGUgY3VycmVudAo+Pj4+PiByb2xlIGluIElTUiBmdW5jdGlvbi4gRHJpdmVy IGNhbid0IHJlYWQgaG9zdCBzaWRlIHJlZ2lzdGVycyB3aGVuIGNvbnRyb2xsZXIgd29ya3MgaW4g ZGV2aWNlIHJvbGUKPj4+Pj4gYW5kIHZpY2UgdmVyc2EuIE9uZSBwYXJ0IG9mIGNvbnRyb2xsZXIg aXMga2VwdCBpbiByZXNldC4gT25seSBEUkQgcmVnaXN0ZXJzIGFyZSBjb21tb24gYW5kIGFyZSBh bGwgYWNjZXNzaWJsZS4KPj4+Pj4KPj4+Pgo+Pj4+IEluIHdoaWNoIElTUiBkbyB5b3UgbmVlZCB0 byBjaGVjayBjdXJyZW50IHJvbGU/Cj4+Pj4KPj4+PiBJJ20gbm90IHN1cmUgaWYgd2UgYXJlIG9u IHRoZSBzYW1lIHBhZ2UuCj4+Pj4gQ29yZSAoZHJkKSBkcml2ZXIgc2hvdWxkbid0IHJlYWQgaG9z dC9kZXZpY2Ugc2lkZSByZWdpc3RlcnMuIEFsbCAzIGRyaXZlcnMsCj4+Pj4gaS5lLiBEUkQoY29y ZSksIEhvc3QgKHhoY2kpIGFuZCBkZXZpY2UgKGNkbnMzKSBzaG91bGQgZG8gYSByZXF1ZXN0X2ly cSgpCj4+Pj4gYW5kIHByb2Nlc3MgdGhlaXIgcmVzcGVjdGl2ZSBJUlEgZXZlbnRzLgo+Pj4KPj4+ IFllcywgSSB1bmRlcnN0YW5kLgo+Pj4gSSBuZWVkIHRvIGNoZWNrIHRoaXMgaW4gY2RuczNfaXJx X2hhbmRsZXJfdGhyZWFkIGFuZCBjZG5zM19ob3N0X2lycS4KPj4+Cj4+PiBDb3JlIChkcmQpIGhh cyByZWdpc3RlciB0aGF0IGFyZSBhbHdheXMgYWNjZXNzaWJsZS4KPj4+IENvcmUgKGRldmljZSkg IC0gcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUgYWxzbyBpbiBkZXZpY2UgbW9kZQo+Pj4gQ29yZSAo aG9zdCkgIC0gcmVnaXN0ZXJzICBhcmUgYXZhaWxhYmxlIG9ubHkgaW4gaG9zdCBtb2RlCj4+Pgo+ Pj4gU28gd2UgY2FuIHVzZSBzZXBhcmF0ZSByZXF1ZXN0X2lycSAgZm9yIGRyZCwgZGV2aWNlIGFu ZCBob3N0IHNpZGUsIGJ1dAo+Pj4gd2UgbmVlZCBlbnN1cmUgdGhhdCBpbiBob3N0IHNpZGUgZHJp dmVyIHdpbGwgbm90IHRvdWNoIHRoZSBkZXZpY2UgcmVnaXN0ZXIuCj4+Cj4+IFRoYXQgc2hvdWxk IG5ldmVyIGhhcHBlbiBhcyBob3N0IHNpZGUgZG9lc24ndCBoYXZlIHZpc2liaWxpdHkgdG8gZGV2 aWNlIHJlZ2lzdGVycy4KPiAKPiBJIG1lYW50IHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86Cj4gQXNz dW1lIHRoYXQgY29udHJvbGxlciB3b3JrIGluIERldmljZSByb2xlIGFuZCBpdCByYWlzZSBpbnRl cnJ1cHQgZm9yIERldmljZSBwYXJ0LiAKPiBOb3cgaG9zdCBpcyBrZXB0IGluIHJlc2V0LiAKPiAx LiBTeXN0ZW0gcmVjZWl2ZSBpbnRlcnJ1cHQgCj4gMi4gIEtlcm5lbCBjYWxsIGRyZF9pcnEgYnV0 IHRoaXMgZnVuY3Rpb24gcmV0dXJuIElSUV9OT05FCj4gMy4gIEtlcm5lbCBjYWxsIGNkbnMzX2hv c3RfaXJxIGFuZCBkcml2ZXIgaGFzIHRvIHJlYWQgc29tZSBpbnRlcnJ1cHQgcmVnaXN0ZXIgdG8g Y2hlY2sgaWYgCj4gICAgICB0aGlzIGV2ZW50IGlzIGFkZHJlc3NlZCB0byBoaW0uIEluIHRoaXMg bW9tZW50IHdlIGNhbiBoYXZlIHVua25vd24gYmVoYXZpb3IuIAoKVGhpcyBpcyB0aGUgcHJvYmxl bS4gSWYgZGV2aWNlIGlzIG5vdCBhYmxlIHRvIGZpZ3VyZSBvdXQgaXRzIGludGVycnVwdCBldmVu dCB0aGVuCml0IG11c3QgdW5yZWdpc3RlciB0aGUgSVNSLgoKPiA0LiAgS2VybmVsIGNhbGwgY2Ru czNfaXJxX2hhbmRsZXIgIChkZXZpY2UpLiBUaGlzIHBvaW50IHByb2JhYmx5IHdpbGwgbm90IGhh cHBlbiBiZWNhdXNlIAo+ICAgICBJdCBjb3VsZCBoYXZlIHN0dWNrIGF0IHBvaW50IDMuIAo+IAo+ IE9rLCBJIHRoaW5rIEkgdW5kZXJzdG9vZC4gQWZ0ZXIgY2hhbmdpbmcgcm9sZSwgdGhlIGRyaXZl ciB1bnJlZ2lzdGVycyB0aGUgaW50ZXJydXB0IGZ1bmN0aW9uCj4gdXNlZCBieSBwcmV2aW91cyBy b2xlIHNvIHBvaW50IDMgbmV2ZXIgaGFwcGVuLiAKPiAKPiBJIHdpbGwgdHJ5IHRvIGNoZWNrIGhv dyBpdCB3b3Jrcy4gIAo+IAoKQ29vbCEgVGhhbmtzLgoKPj4+Cj4+PiBXZSBkb2Vzbid0IGtub3cg dGhlIG9yZGVyIGluIHdoaWNoICB0aGUgc3lzdGVtIHdpbGwgY2FsbCBpbnRlcnJ1cHRzIGZ1bmN0 aW9uIHJlbGF0ZWQgdG8KPj4+ICB0aGUgc2hhcmVkIGludGVycnVwdCBsaW5lLgo+Pgo+PiBPcmRl ciBzaG91bGRuJ3QgbWF0dGVyLiBFYWNoIHVzZXIgd2lsbCBjaGVjayBpdHMgb3duIGV2ZW50cyBy ZXR1cm4gSVJRX05PTkUgaWYgdGhleQo+PiBkaWRuJ3QgY2F1c2UgdGhlIElSUS4KPj4+Cj4+Cj4+ IDxzbmlwPgo+PgoKY2hlZXJzLAotcm9nZXIK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Quadros Subject: Re: [RFC PATCH v2 05/15] usb:cdns3: Added DRD support Date: Mon, 26 Nov 2018 12:15:20 +0200 Message-ID: <5BFBC7B8.5020004@ti.com> References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-6-git-send-email-pawell@cadence.com> <5BF8140C.7000605@ti.com> <5BFBA9BC.20306@ti.com> <5BFBBF65.7090204@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: 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" , Alan Douglas , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Pawel Jez , Rahul Kumar List-Id: devicetree@vger.kernel.org On 26/11/18 12:09, Pawel Laszczak wrote: >>>> >>>> Pawel, >>>> >>>> On 26/11/18 09:23, Pawel Laszczak wrote: >>>>> Hi Roger, >>>>> >>>>>> On 18/11/18 12:09, Pawel Laszczak wrote: >>>>>>> Patch adds supports for detecting Host/Device mode. >>>>>>> Controller has additional OTG register that allow >>>>>>> implement even whole OTG functionality. >>>>>>> At this moment patch adds support only for detecting >>>>>>> the appropriate mode based on strap pins and ID pin. >>>>>>> >>>>>>> Signed-off-by: Pawel Laszczak >>>>>>> --- >>>>>>> drivers/usb/cdns3/Makefile | 2 +- >>>>>>> drivers/usb/cdns3/core.c | 27 +++-- >>>>>>> drivers/usb/cdns3/drd.c | 229 +++++++++++++++++++++++++++++++++++++ >>>>>>> drivers/usb/cdns3/drd.h | 122 ++++++++++++++++++++ >>>>>>> 4 files changed, 372 insertions(+), 8 deletions(-) >>>>>>> create mode 100644 drivers/usb/cdns3/drd.c >>>>>>> create mode 100644 drivers/usb/cdns3/drd.h >>>>>>> >>>>>>> diff --git a/drivers/usb/cdns3/Makefile b/drivers/usb/cdns3/Makefile >>>>>>> index 02d25b23c5d3..e779b2a2f8eb 100644 >>>>>>> --- a/drivers/usb/cdns3/Makefile >>>>>>> +++ b/drivers/usb/cdns3/Makefile >>>>>>> @@ -1,5 +1,5 @@ >>>>>>> obj-$(CONFIG_USB_CDNS3) += cdns3.o >>>>>>> obj-$(CONFIG_USB_CDNS3_PCI_WRAP) += cdns3-pci.o >>>>>>> >>>>>>> -cdns3-y := core.o >>>>>>> +cdns3-y := core.o drd.o >>>>>>> cdns3-pci-y := cdns3-pci-wrap.o >>>>>>> diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c >>>>>>> index f9055d4da67f..dbee4325da7f 100644 >>>>>>> --- a/drivers/usb/cdns3/core.c >>>>>>> +++ b/drivers/usb/cdns3/core.c >>>>>>> @@ -17,6 +17,7 @@ >>>>>>> >>>>>>> #include "gadget.h" >>>>>>> #include "core.h" >>>>>>> +#include "drd.h" >>>>>>> >>>>>>> static inline struct cdns3_role_driver *cdns3_get_current_role_driver(struct cdns3 *cdns) >>>>>>> { >>>>>>> @@ -57,8 +58,10 @@ static inline void cdns3_role_stop(struct cdns3 *cdns) >>>>>>> static enum cdns3_roles cdns3_get_role(struct cdns3 *cdns) >>>>>>> { >>>>>>> if (cdns->roles[CDNS3_ROLE_HOST] && cdns->roles[CDNS3_ROLE_GADGET]) { >>>>>>> - //TODO: implements selecting device/host mode >>>>>>> - return CDNS3_ROLE_HOST; >>>>>>> + if (cdns3_is_host(cdns)) >>>>>>> + return CDNS3_ROLE_HOST; >>>>>>> + if (cdns3_is_device(cdns)) >>>>>>> + return CDNS3_ROLE_GADGET; >>>>>>> } >>>>>>> return cdns->roles[CDNS3_ROLE_HOST] >>>>>>> ? CDNS3_ROLE_HOST >>>>>>> @@ -124,6 +127,12 @@ static irqreturn_t cdns3_irq(int irq, void *data) >>>>>>> struct cdns3 *cdns = data; >>>>>>> irqreturn_t ret = IRQ_NONE; >>>>>>> >>>>>>> + if (cdns->dr_mode == USB_DR_MODE_OTG) { >>>>>>> + ret = cdns3_drd_irq(cdns); >>>>>>> + if (ret == IRQ_HANDLED) >>>>>>> + return ret; >>>>>>> + } >>>>>> >>>>>> The kernel's shared IRQ model takes care of sharing the same interrupt >>>>>> between different devices and their drivers. You don't need to manually >>>>>> handle it here. Just let all 3 drivers do a request_irq() and have >>>>>> handlers check if the IRQ was theirs or not and return IRQ_HANDLED or >>>>>> IRQ_NONE accordingly. >>>>>> >>>>>> Looks like you can do away with irq member of the role driver struct. >>>>> >>>>> Ok, I will split it into 3 separate part, but in this case, I additionally have to check the current >>>>> role in ISR function. Driver can't read host side registers when controller works in device role >>>>> and vice versa. One part of controller is kept in reset. Only DRD registers are common and are all accessible. >>>>> >>>> >>>> In which ISR do you need to check current role? >>>> >>>> I'm not sure if we are on the same page. >>>> Core (drd) driver shouldn't read host/device side registers. All 3 drivers, >>>> i.e. DRD(core), Host (xhci) and device (cdns3) should do a request_irq() >>>> and process their respective IRQ events. >>> >>> Yes, I understand. >>> I need to check this in cdns3_irq_handler_thread and cdns3_host_irq. >>> >>> Core (drd) has register that are always accessible. >>> Core (device) - registers are available also in device mode >>> Core (host) - registers are available only in host mode >>> >>> So we can use separate request_irq for drd, device and host side, but >>> we need ensure that in host side driver will not touch the device register. >> >> That should never happen as host side doesn't have visibility to device registers. > > I meant the following scenario: > Assume that controller work in Device role and it raise interrupt for Device part. > Now host is kept in reset. > 1. System receive interrupt > 2. Kernel call drd_irq but this function return IRQ_NONE > 3. Kernel call cdns3_host_irq and driver has to read some interrupt register to check if > this event is addressed to him. In this moment we can have unknown behavior. This is the problem. If device is not able to figure out its interrupt event then it must unregister the ISR. > 4. Kernel call cdns3_irq_handler (device). This point probably will not happen because > It could have stuck at point 3. > > Ok, I think I understood. After changing role, the driver unregisters the interrupt function > used by previous role so point 3 never happen. > > I will try to check how it works. > Cool! Thanks. >>> >>> We doesn't know the order in which the system will call interrupts function related to >>> the shared interrupt line. >> >> Order shouldn't matter. Each user will check its own events return IRQ_NONE if they >> didn't cause the IRQ. >>> >> >> >> cheers, -roger -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki