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: [v4,07/13] staging: typec: tcpci: register port before request irq From: Jun Li Message-Id: <1522253178-32414-8-git-send-email-jun.li@nxp.com> Date: Thu, 29 Mar 2018 00:06:12 +0800 To: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, linux@roeck-us.net Cc: a.hajda@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-imx@nxp.com, jun.li@nxp.com, devel@driverdev.osuosl.org List-ID: V2l0aCB0aGF0IHdlIGNhbiBjbGVhciBhbnkgcGVuZGluZyBldmVudHMgYW5kIHRoZSBwb3J0IGlz IHJlZ2lzdGVyZWQKc28gZHJpdmVyIGNhbiBiZSByZWFkeSB0byBoYW5kbGUgdHlwZWMgZXZlbnRz IG9uY2Ugd2UgcmVxdWVzdCBpcnEuCgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBDaGVuIDxwZXRlci5j aGVuQG54cC5jb20+ClNpZ25lZC1vZmYtYnk6IExpIEp1biA8anVuLmxpQG54cC5jb20+Ci0tLQog ZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMgfCAxNSArKysrKysrKy0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNw Y2kuYwppbmRleCA0ZjdhZDEwLi45ZTAwMTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcv dHlwZWMvdGNwY2kuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYwpAQCAtNTM3 LDI1ICs1MzcsMjYgQEAgc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50LAogCWlmIChJU19FUlIoY2hpcC0+ZGF0YS5yZWdtYXApKQogCQlyZXR1cm4gUFRSX0VS UihjaGlwLT5kYXRhLnJlZ21hcCk7CiAKKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCBjaGlw KTsKKwogCS8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzIGJlZm9yZSByZXF1ZXN0aW5nIGlycSAq LwogCWVyciA9IHJlZ21hcF9yYXdfd3JpdGUoY2hpcC0+ZGF0YS5yZWdtYXAsIFRDUENfQUxFUlRf TUFTSywgJnZhbCwKIAkJCSAgICAgICBzaXplb2YodTE2KSk7CiAJaWYgKGVyciA8IDApCiAJCXJl dHVybiBlcnI7CiAKKwljaGlwLT50Y3BjaSA9IHRjcGNpX3JlZ2lzdGVyX3BvcnQoJmNsaWVudC0+ ZGV2LCAmY2hpcC0+ZGF0YSk7CisJaWYgKFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkpCisJ CXJldHVybiBQVFJfRVJSKGNoaXAtPnRjcGNpKTsKKwogCWVyciA9IGRldm1fcmVxdWVzdF90aHJl YWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGllbnQtPmlycSwgTlVMTCwKIAkJCQkJX3RjcGNpX2ly cSwKIAkJCQkJSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywKIAkJCQkJZGV2X25hbWUo JmNsaWVudC0+ZGV2KSwgY2hpcCk7CiAJaWYgKGVyciA8IDApCi0JCXJldHVybiBlcnI7CisJCXRj cGNpX3VucmVnaXN0ZXJfcG9ydChjaGlwLT50Y3BjaSk7CiAKLQljaGlwLT50Y3BjaSA9IHRjcGNp X3JlZ2lzdGVyX3BvcnQoJmNsaWVudC0+ZGV2LCAmY2hpcC0+ZGF0YSk7Ci0JaWYgKFBUUl9FUlJf T1JfWkVSTyhjaGlwLT50Y3BjaSkpCi0JCXJldHVybiBQVFJfRVJSKGNoaXAtPnRjcGNpKTsKLQot CWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOwotCXJldHVybiAwOworCXJldHVybiBl cnI7CiB9CiAKIHN0YXRpYyBpbnQgdGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll bnQpCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Li Jun Subject: [PATCH v4 07/13] staging: typec: tcpci: register port before request irq Date: Thu, 29 Mar 2018 00:06:12 +0800 Message-ID: <1522253178-32414-8-git-send-email-jun.li@nxp.com> References: <1522253178-32414-1-git-send-email-jun.li@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1522253178-32414-1-git-send-email-jun.li@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, linux@roeck-us.net Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, peter.chen@nxp.com, linux-usb@vger.kernel.org, a.hajda@samsung.com, linux-imx@nxp.com, jun.li@nxp.com, shufan_lee@richtek.com List-Id: devicetree@vger.kernel.org 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 --- drivers/staging/typec/tcpci.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/staging/typec/tcpci.c b/drivers/staging/typec/tcpci.c index 4f7ad10..9e0014b 100644 --- a/drivers/staging/typec/tcpci.c +++ b/drivers/staging/typec/tcpci.c @@ -537,25 +537,26 @@ 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 (PTR_ERR_OR_ZERO(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) - return err; + tcpci_unregister_port(chip->tcpci); - chip->tcpci = tcpci_register_port(&client->dev, &chip->data); - if (PTR_ERR_OR_ZERO(chip->tcpci)) - return PTR_ERR(chip->tcpci); - - i2c_set_clientdata(client, chip); - return 0; + return err; } static int tcpci_remove(struct i2c_client *client) -- 2.7.4