From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 11 Jun 2018 15:35:21 +0300 From: Heikki Krogerus Subject: Re: [PATCH v6 09/15] staging: typec: tcpci: register port before request irq Message-ID: <20180611123521.GO17155@kuha.fi.intel.com> References: <1527475967-15201-1-git-send-email-jun.li@nxp.com> <1527475967-15201-10-git-send-email-jun.li@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1527475967-15201-10-git-send-email-jun.li@nxp.com> To: Li Jun Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org, linux@roeck-us.net, cw00.choi@samsung.com, a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, garsilva@embeddedor.com, gsomlo@gmail.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-imx@nxp.com List-ID: On Mon, May 28, 2018 at 10:52:41AM +0800, Li Jun wrote: > From: Peter Chen > > With that we can clear any pending events and the port is registered > so driver can be ready to handle typec events once we request irq. > > Signed-off-by: Peter Chen > Signed-off-by: Li Jun FWIW: Reviewed-by: Heikki Krogerus > --- > drivers/staging/typec/tcpci.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c > index b63f147..3b35fce 100644 > --- a/drivers/staging/typec/tcpci.c > +++ b/drivers/staging/typec/tcpci.c > @@ -537,24 +537,27 @@ static int tcpci_probe(struct i2c_client *client, > if (IS_ERR(chip->data.regmap)) > return PTR_ERR(chip->data.regmap); > > + i2c_set_clientdata(client, chip); > + > /* Disable chip interrupts before requesting irq */ > err = regmap_raw_write(chip->data.regmap, TCPC_ALERT_MASK, &val, > sizeof(u16)); > if (err < 0) > return err; > > + chip->tcpci = tcpci_register_port(&client->dev, &chip->data); > + if (IS_ERR(chip->tcpci)) > + return PTR_ERR(chip->tcpci); > + > err = devm_request_threaded_irq(&client->dev, client->irq, NULL, > _tcpci_irq, > IRQF_ONESHOT | IRQF_TRIGGER_LOW, > dev_name(&client->dev), chip); > - if (err < 0) > + if (err < 0) { > + tcpci_unregister_port(chip->tcpci); > return err; > + } > > - chip->tcpci = tcpci_register_port(&client->dev, &chip->data); > - if (IS_ERR(chip->tcpci)) > - return PTR_ERR(chip->tcpci); > - > - i2c_set_clientdata(client, chip); > return 0; > } Thanks, -- heikki 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: [v6,09/15] staging: typec: tcpci: register port before request irq From: Heikki Krogerus Message-Id: <20180611123521.GO17155@kuha.fi.intel.com> Date: Mon, 11 Jun 2018 15:35:21 +0300 To: Li Jun Cc: robh+dt@kernel.org, gregkh@linuxfoundation.org, linux@roeck-us.net, cw00.choi@samsung.com, a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, garsilva@embeddedor.com, gsomlo@gmail.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-imx@nxp.com List-ID: T24gTW9uLCBNYXkgMjgsIDIwMTggYXQgMTA6NTI6NDFBTSArMDgwMCwgTGkgSnVuIHdyb3RlOgo+ IEZyb206IFBldGVyIENoZW4gPHBldGVyLmNoZW5AbnhwLmNvbT4KPiAKPiBXaXRoIHRoYXQgd2Ug Y2FuIGNsZWFyIGFueSBwZW5kaW5nIGV2ZW50cyBhbmQgdGhlIHBvcnQgaXMgcmVnaXN0ZXJlZAo+ IHNvIGRyaXZlciBjYW4gYmUgcmVhZHkgdG8gaGFuZGxlIHR5cGVjIGV2ZW50cyBvbmNlIHdlIHJl cXVlc3QgaXJxLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFBldGVyIENoZW4gPHBldGVyLmNoZW5Abnhw LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMaSBKdW4gPGp1bi5saUBueHAuY29tPgoKRldJVzoKClJl dmlld2VkLWJ5OiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5j b20+Cgo+IC0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyB8IDE1ICsrKysrKysr Ky0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBiL2RyaXZl cnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jCj4gaW5kZXggYjYzZjE0Ny4uM2IzNWZjZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYwo+ICsrKyBiL2RyaXZlcnMvc3Rh Z2luZy90eXBlYy90Y3BjaS5jCj4gQEAgLTUzNywyNCArNTM3LDI3IEBAIHN0YXRpYyBpbnQgdGNw Y2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiAgCWlmIChJU19FUlIoY2hpcC0+ ZGF0YS5yZWdtYXApKQo+ICAJCXJldHVybiBQVFJfRVJSKGNoaXAtPmRhdGEucmVnbWFwKTsKPiAg Cj4gKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBjaGlwKTsKPiArCj4gIAkvKiBEaXNhYmxl IGNoaXAgaW50ZXJydXB0cyBiZWZvcmUgcmVxdWVzdGluZyBpcnEgKi8KPiAgCWVyciA9IHJlZ21h cF9yYXdfd3JpdGUoY2hpcC0+ZGF0YS5yZWdtYXAsIFRDUENfQUxFUlRfTUFTSywgJnZhbCwKPiAg CQkJICAgICAgIHNpemVvZih1MTYpKTsKPiAgCWlmIChlcnIgPCAwKQo+ICAJCXJldHVybiBlcnI7 Cj4gIAo+ICsJY2hpcC0+dGNwY2kgPSB0Y3BjaV9yZWdpc3Rlcl9wb3J0KCZjbGllbnQtPmRldiwg JmNoaXAtPmRhdGEpOwo+ICsJaWYgKElTX0VSUihjaGlwLT50Y3BjaSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoY2hpcC0+dGNwY2kpOwo+ICsKPiAgCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9p cnEoJmNsaWVudC0+ZGV2LCBjbGllbnQtPmlycSwgTlVMTCwKPiAgCQkJCQlfdGNwY2lfaXJxLAo+ ICAJCQkJCUlSUUZfT05FU0hPVCB8IElSUUZfVFJJR0dFUl9MT1csCj4gIAkJCQkJZGV2X25hbWUo JmNsaWVudC0+ZGV2KSwgY2hpcCk7Cj4gLQlpZiAoZXJyIDwgMCkKPiArCWlmIChlcnIgPCAwKSB7 Cj4gKwkJdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KGNoaXAtPnRjcGNpKTsKPiAgCQlyZXR1cm4gZXJy Owo+ICsJfQo+ICAKPiAtCWNoaXAtPnRjcGNpID0gdGNwY2lfcmVnaXN0ZXJfcG9ydCgmY2xpZW50 LT5kZXYsICZjaGlwLT5kYXRhKTsKPiAtCWlmIChJU19FUlIoY2hpcC0+dGNwY2kpKQo+IC0JCXJl dHVybiBQVFJfRVJSKGNoaXAtPnRjcGNpKTsKPiAtCj4gLQlpMmNfc2V0X2NsaWVudGRhdGEoY2xp ZW50LCBjaGlwKTsKPiAgCXJldHVybiAwOwo+ICB9CgpUaGFua3MsCg==