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: [v5,1/4] usb: chipidea: add flag for imx hsic implementation From: Peter Chen Message-Id: <20181211020624.9433-2-peter.chen@nxp.com> Date: Tue, 11 Dec 2018 02:08:54 +0000 To: "linux-usb@vger.kernel.org" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "frieder.schrempf@exceet.de" , "festevam@gmail.com" , Peter Chen List-ID: TlhQIChGcmVlY2FsZSkgaW14IEhTSUMgZGVzaWduIGhhcyBzb21lIHNwZWNpYWwgcmVxdWlyZW1l bnRzLCBhZGQKc29tZSBmbGFncyBhdCBob3N0IGNvZGUgdG8gaGFuZGxlIHRoZW0uCgpSZXZpZXdl ZC1ieTogRnJpZWRlciBTY2hyZW1wZiA8ZnJpZWRlci5zY2hyZW1wZkBrb250cm9uLmRlPgpUZXN0 ZWQtYnk6IEZyaWVkZXIgU2NocmVtcGYgPGZyaWVkZXIuc2NocmVtcGZAa29udHJvbi5kZT4KU2ln bmVkLW9mZi1ieTogUGV0ZXIgQ2hlbiA8cGV0ZXIuY2hlbkBueHAuY29tPgotLS0KIGRyaXZlcnMv dXNiL2NoaXBpZGVhL2hvc3QuYyAgfCAxNyArKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51 eC91c2IvY2hpcGlkZWEuaCB8ICAzICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvaG9zdC5jIGIvZHJpdmVycy91 c2IvY2hpcGlkZWEvaG9zdC5jCmluZGV4IGQ4NThhODJjNGY0NC4uMDI4YTM1NzQyNjZhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9ob3N0LmMKKysrIGIvZHJpdmVycy91c2IvY2hp cGlkZWEvaG9zdC5jCkBAIC0xNzAsNiArMTcwLDExIEBAIHN0YXRpYyBpbnQgaG9zdF9zdGFydChz dHJ1Y3QgY2lfaGRyYyAqY2kpCiAJCQlvdGctPmhvc3QgPSAmaGNkLT5zZWxmOwogCQkJaGNkLT5z ZWxmLm90Z19wb3J0ID0gMTsKIAkJfQorCisJCWlmIChjaS0+cGxhdGRhdGEtPm5vdGlmeV9ldmVu dCAmJgorCQkJKGNpLT5wbGF0ZGF0YS0+ZmxhZ3MgJiBDSV9IRFJDX0lNWF9JU19IU0lDKSkKKwkJ CWNpLT5wbGF0ZGF0YS0+bm90aWZ5X2V2ZW50CisJCQkJKGNpLCBDSV9IRFJDX0lNWF9IU0lDX0FD VElWRV9FVkVOVCk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTIxOCw2ICsyMjMsOCBAQCB2b2lk IGNpX2hkcmNfaG9zdF9kZXN0cm95KHN0cnVjdCBjaV9oZHJjICpjaSkKIHN0YXRpYyBpbnQgY2lf ZWhjaV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogewogCXN0cnVjdCBlaGNpX2hj ZCAqZWhjaSA9IGhjZF90b19laGNpKGhjZCk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gaGNkLT5z ZWxmLmNvbnRyb2xsZXI7CisJc3RydWN0IGNpX2hkcmMgKmNpID0gZGV2X2dldF9kcnZkYXRhKGRl dik7CiAJaW50IHBvcnQ7CiAJdTMyIHRtcDsKIApAQCAtMjQ5LDYgKzI1NiwxNiBAQCBzdGF0aWMg aW50IGNpX2VoY2lfYnVzX3N1c3BlbmQoc3RydWN0IHVzYl9oY2QgKmhjZCkKIAkJCSAqIEl0IG5l ZWRzIGEgc2hvcnQgZGVsYXkgYmV0d2VlbiBzZXQgUlMgYml0IGFuZCBQSENELgogCQkJICovCiAJ CQl1c2xlZXBfcmFuZ2UoMTUwLCAyMDApOworCQkJLyoKKwkJCSAqIE5lZWQgdG8gY2xlYXIgV0tD TiBhbmQgV0tPQyBmb3IgaW14IEhTSUMsCisJCQkgKiBvdGhlcndpc2UsIHRoZXJlIHdpbGwgYmUg d2FrZXVwIGV2ZW50LgorCQkJICovCisJCQlpZiAoY2ktPnBsYXRkYXRhLT5mbGFncyAmIENJX0hE UkNfSU1YX0lTX0hTSUMpIHsKKwkJCQl0bXAgPSBlaGNpX3JlYWRsKGVoY2ksIHJlZyk7CisJCQkJ dG1wICY9IH4oUE9SVF9XS0RJU0NfRSB8IFBPUlRfV0tDT05OX0UpOworCQkJCWVoY2lfd3JpdGVs KGVoY2ksIHRtcCwgcmVnKTsKKwkJCX0KKwogCQkJYnJlYWs7CiAJCX0KIAl9CmRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L3VzYi9jaGlwaWRlYS5oIGIvaW5jbHVkZS9saW51eC91c2IvY2hpcGlk ZWEuaAppbmRleCA2Mzc1OGMzOTllNGUuLjkxMWUwNWFmNjcxZSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC91c2IvY2hpcGlkZWEuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jaGlwaWRlYS5o CkBAIC02MCw5ICs2MCwxMiBAQCBzdHJ1Y3QgY2lfaGRyY19wbGF0Zm9ybV9kYXRhIHsKICNkZWZp bmUgQ0lfSERSQ19PVkVSUklERV9SWF9CVVJTVAlCSVQoMTEpCiAjZGVmaW5lIENJX0hEUkNfT1ZF UlJJREVfUEhZX0NPTlRST0wJQklUKDEyKSAvKiBHbHVlIGxheWVyIG1hbmFnZXMgcGh5ICovCiAj ZGVmaW5lIENJX0hEUkNfUkVRVUlSRVNfQUxJR05FRF9ETUEJQklUKDEzKQorI2RlZmluZSBDSV9I RFJDX0lNWF9JU19IU0lDCQlCSVQoMTQpCiAJZW51bSB1c2JfZHJfbW9kZQlkcl9tb2RlOwogI2Rl ZmluZSBDSV9IRFJDX0NPTlRST0xMRVJfUkVTRVRfRVZFTlQJCTAKICNkZWZpbmUgQ0lfSERSQ19D T05UUk9MTEVSX1NUT1BQRURfRVZFTlQJMQorI2RlZmluZSBDSV9IRFJDX0lNWF9IU0lDX0FDVElW RV9FVkVOVAkJMgorI2RlZmluZSBDSV9IRFJDX0lNWF9IU0lDX1NVU1BFTkRfRVZFTlQJCTMKIAlp bnQJKCpub3RpZnlfZXZlbnQpIChzdHJ1Y3QgY2lfaGRyYyAqY2ksIHVuc2lnbmVkIGV2ZW50KTsK IAlzdHJ1Y3QgcmVndWxhdG9yCSpyZWdfdmJ1czsKIAlzdHJ1Y3QgdXNiX290Z19jYXBzCWNpX290 Z19jYXBzOwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr00088.outbound.protection.outlook.com ([40.107.0.88]:11072 "EHLO EUR02-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729474AbeLKCI6 (ORCPT ); Mon, 10 Dec 2018 21:08:58 -0500 From: Peter Chen Subject: [PATCH v5 1/4] usb: chipidea: add flag for imx hsic implementation Date: Tue, 11 Dec 2018 02:08:54 +0000 Message-ID: <20181211020624.9433-2-peter.chen@nxp.com> References: <20181211020624.9433-1-peter.chen@nxp.com> In-Reply-To: <20181211020624.9433-1-peter.chen@nxp.com> Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: devicetree-owner@vger.kernel.org To: "linux-usb@vger.kernel.org" Cc: dl-linux-imx , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , "frieder.schrempf@exceet.de" , "festevam@gmail.com" , Peter Chen List-ID: NXP (Freecale) imx HSIC design has some special requirements, add some flags at host code to handle them. Reviewed-by: Frieder Schrempf Tested-by: Frieder Schrempf Signed-off-by: Peter Chen --- drivers/usb/chipidea/host.c | 17 +++++++++++++++++ include/linux/usb/chipidea.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index d858a82c4f44..028a3574266a 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -170,6 +170,11 @@ static int host_start(struct ci_hdrc *ci) otg->host =3D &hcd->self; hcd->self.otg_port =3D 1; } + + if (ci->platdata->notify_event && + (ci->platdata->flags & CI_HDRC_IMX_IS_HSIC)) + ci->platdata->notify_event + (ci, CI_HDRC_IMX_HSIC_ACTIVE_EVENT); } =20 return ret; @@ -218,6 +223,8 @@ void ci_hdrc_host_destroy(struct ci_hdrc *ci) static int ci_ehci_bus_suspend(struct usb_hcd *hcd) { struct ehci_hcd *ehci =3D hcd_to_ehci(hcd); + struct device *dev =3D hcd->self.controller; + struct ci_hdrc *ci =3D dev_get_drvdata(dev); int port; u32 tmp; =20 @@ -249,6 +256,16 @@ static int ci_ehci_bus_suspend(struct usb_hcd *hcd) * It needs a short delay between set RS bit and PHCD. */ usleep_range(150, 200); + /* + * Need to clear WKCN and WKOC for imx HSIC, + * otherwise, there will be wakeup event. + */ + if (ci->platdata->flags & CI_HDRC_IMX_IS_HSIC) { + tmp =3D ehci_readl(ehci, reg); + tmp &=3D ~(PORT_WKDISC_E | PORT_WKCONN_E); + ehci_writel(ehci, tmp, reg); + } + break; } } diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h index 63758c399e4e..911e05af671e 100644 --- a/include/linux/usb/chipidea.h +++ b/include/linux/usb/chipidea.h @@ -60,9 +60,12 @@ struct ci_hdrc_platform_data { #define CI_HDRC_OVERRIDE_RX_BURST BIT(11) #define CI_HDRC_OVERRIDE_PHY_CONTROL BIT(12) /* Glue layer manages phy */ #define CI_HDRC_REQUIRES_ALIGNED_DMA BIT(13) +#define CI_HDRC_IMX_IS_HSIC BIT(14) enum usb_dr_mode dr_mode; #define CI_HDRC_CONTROLLER_RESET_EVENT 0 #define CI_HDRC_CONTROLLER_STOPPED_EVENT 1 +#define CI_HDRC_IMX_HSIC_ACTIVE_EVENT 2 +#define CI_HDRC_IMX_HSIC_SUSPEND_EVENT 3 int (*notify_event) (struct ci_hdrc *ci, unsigned event); struct regulator *reg_vbus; struct usb_otg_caps ci_otg_caps; --=20 2.14.1