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: [v3,1/4] usb: chipidea: add flag for imx hsic implementation From: Peter Chen Message-Id: <20181127092824.22756-2-peter.chen@nxp.com> Date: Tue, 27 Nov 2018 09:30:53 +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 bnRzLCBhZGQKc29tZSBmbGFncyBhdCBob3N0IGNvZGUgdG8gaGFuZGxlIHRoZW0uCgpTaWduZWQt b2ZmLWJ5OiBQZXRlciBDaGVuIDxwZXRlci5jaGVuQG54cC5jb20+Ci0tLQogZHJpdmVycy91c2Iv Y2hpcGlkZWEvaG9zdC5jICB8IDE3ICsrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L3Vz Yi9jaGlwaWRlYS5oIHwgIDMgKysrCiAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9ob3N0LmMgYi9kcml2ZXJzL3VzYi9j aGlwaWRlYS9ob3N0LmMKaW5kZXggZDg1OGE4MmM0ZjQ0Li4wMjhhMzU3NDI2NmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2hvc3QuYworKysgYi9kcml2ZXJzL3VzYi9jaGlwaWRl YS9ob3N0LmMKQEAgLTE3MCw2ICsxNzAsMTEgQEAgc3RhdGljIGludCBob3N0X3N0YXJ0KHN0cnVj dCBjaV9oZHJjICpjaSkKIAkJCW90Zy0+aG9zdCA9ICZoY2QtPnNlbGY7CiAJCQloY2QtPnNlbGYu b3RnX3BvcnQgPSAxOwogCQl9CisKKwkJaWYgKGNpLT5wbGF0ZGF0YS0+bm90aWZ5X2V2ZW50ICYm CisJCQkoY2ktPnBsYXRkYXRhLT5mbGFncyAmIENJX0hEUkNfSU1YX0lTX0hTSUMpKQorCQkJY2kt PnBsYXRkYXRhLT5ub3RpZnlfZXZlbnQKKwkJCQkoY2ksIENJX0hEUkNfSU1YX0hTSUNfQUNUSVZF X0VWRU5UKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMjE4LDYgKzIyMyw4IEBAIHZvaWQgY2lf aGRyY19ob3N0X2Rlc3Ryb3koc3RydWN0IGNpX2hkcmMgKmNpKQogc3RhdGljIGludCBjaV9laGNp X2J1c19zdXNwZW5kKHN0cnVjdCB1c2JfaGNkICpoY2QpCiB7CiAJc3RydWN0IGVoY2lfaGNkICpl aGNpID0gaGNkX3RvX2VoY2koaGNkKTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBoY2QtPnNlbGYu Y29udHJvbGxlcjsKKwlzdHJ1Y3QgY2lfaGRyYyAqY2kgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK IAlpbnQgcG9ydDsKIAl1MzIgdG1wOwogCkBAIC0yNDksNiArMjU2LDE2IEBAIHN0YXRpYyBpbnQg Y2lfZWhjaV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogCQkJICogSXQgbmVlZHMg YSBzaG9ydCBkZWxheSBiZXR3ZWVuIHNldCBSUyBiaXQgYW5kIFBIQ0QuCiAJCQkgKi8KIAkJCXVz bGVlcF9yYW5nZSgxNTAsIDIwMCk7CisJCQkvKgorCQkJICogTmVlZCB0byBjbGVhciBXS0NOIGFu ZCBXS09DIGZvciBpbXggSFNJQywKKwkJCSAqIG90aGVyd2lzZSwgdGhlcmUgd2lsbCBiZSB3YWtl dXAgZXZlbnQuCisJCQkgKi8KKwkJCWlmIChjaS0+cGxhdGRhdGEtPmZsYWdzICYgQ0lfSERSQ19J TVhfSVNfSFNJQykgeworCQkJCXRtcCA9IGVoY2lfcmVhZGwoZWhjaSwgcmVnKTsKKwkJCQl0bXAg Jj0gfihQT1JUX1dLRElTQ19FIHwgUE9SVF9XS0NPTk5fRSk7CisJCQkJZWhjaV93cml0ZWwoZWhj aSwgdG1wLCByZWcpOworCQkJfQorCiAJCQlicmVhazsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvdXNiL2NoaXBpZGVhLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9jaGlwaWRlYS5o CmluZGV4IDYzNzU4YzM5OWU0ZS4uOTExZTA1YWY2NzFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L3VzYi9jaGlwaWRlYS5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL2NoaXBpZGVhLmgKQEAg LTYwLDkgKzYwLDEyIEBAIHN0cnVjdCBjaV9oZHJjX3BsYXRmb3JtX2RhdGEgewogI2RlZmluZSBD SV9IRFJDX09WRVJSSURFX1JYX0JVUlNUCUJJVCgxMSkKICNkZWZpbmUgQ0lfSERSQ19PVkVSUklE RV9QSFlfQ09OVFJPTAlCSVQoMTIpIC8qIEdsdWUgbGF5ZXIgbWFuYWdlcyBwaHkgKi8KICNkZWZp bmUgQ0lfSERSQ19SRVFVSVJFU19BTElHTkVEX0RNQQlCSVQoMTMpCisjZGVmaW5lIENJX0hEUkNf SU1YX0lTX0hTSUMJCUJJVCgxNCkKIAllbnVtIHVzYl9kcl9tb2RlCWRyX21vZGU7CiAjZGVmaW5l IENJX0hEUkNfQ09OVFJPTExFUl9SRVNFVF9FVkVOVAkJMAogI2RlZmluZSBDSV9IRFJDX0NPTlRS T0xMRVJfU1RPUFBFRF9FVkVOVAkxCisjZGVmaW5lIENJX0hEUkNfSU1YX0hTSUNfQUNUSVZFX0VW RU5UCQkyCisjZGVmaW5lIENJX0hEUkNfSU1YX0hTSUNfU1VTUEVORF9FVkVOVAkJMwogCWludAko Km5vdGlmeV9ldmVudCkgKHN0cnVjdCBjaV9oZHJjICpjaSwgdW5zaWduZWQgZXZlbnQpOwogCXN0 cnVjdCByZWd1bGF0b3IJKnJlZ192YnVzOwogCXN0cnVjdCB1c2Jfb3RnX2NhcHMJY2lfb3RnX2Nh cHM7Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr60054.outbound.protection.outlook.com ([40.107.6.54]:26834 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728512AbeK0U2Q (ORCPT ); Tue, 27 Nov 2018 15:28:16 -0500 From: PETER CHEN Subject: [PATCH v3 1/4] usb: chipidea: add flag for imx hsic implementation Date: Tue, 27 Nov 2018 09:30:53 +0000 Message-ID: <20181127092824.22756-2-peter.chen@nxp.com> References: <20181127092824.22756-1-peter.chen@nxp.com> In-Reply-To: <20181127092824.22756-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. 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