From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr10066.outbound.protection.outlook.com ([40.107.1.66]:36974 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726784AbeJVOAC (ORCPT ); Mon, 22 Oct 2018 10:00:02 -0400 From: Peter Chen Subject: [PATCH v2 1/4] usb: chipidea: add flag for imx hsic implementation Date: Mon, 22 Oct 2018 05:42:56 +0000 Message-ID: <20181022054031.14027-2-peter.chen@nxp.com> References: <20181022054031.14027-1-peter.chen@nxp.com> In-Reply-To: <20181022054031.14027-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 | 24 ++++++++++++++++++++++++ include/linux/usb/chipidea.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index d858a82c4f44..d74a13d7c21c 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -28,6 +28,20 @@ struct ehci_ci_priv { struct regulator *reg_vbus; }; =20 +/* This function is used to override WKCN, WKDN, and WKOC */ +static void ci_ehci_override_wakeup_flag(struct ehci_hcd *ehci, + u32 __iomem *reg, u32 flags, bool set) +{ + u32 val =3D ehci_readl(ehci, reg); + + if (set) + val |=3D flags; + else + val &=3D ~flags; + + ehci_writel(ehci, val, reg); +} + static int ehci_ci_portpower(struct usb_hcd *hcd, int portnum, bool enable= ) { struct ehci_hcd *ehci =3D hcd_to_ehci(hcd); @@ -170,6 +184,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 +237,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 +270,9 @@ 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); + if (ci->platdata->flags & CI_HDRC_IMX_IS_HSIC) + ci_ehci_override_wakeup_flag(ehci, reg, + PORT_WKDISC_E | PORT_WKCONN_E, false); 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 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: [v2,1/4] usb: chipidea: add flag for imx hsic implementation From: Peter Chen Message-Id: <20181022054031.14027-2-peter.chen@nxp.com> Date: Mon, 22 Oct 2018 05:42:56 +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 Y2hpcGlkZWEvaG9zdC5jICB8IDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9s aW51eC91c2IvY2hpcGlkZWEuaCB8ICAzICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvaG9zdC5jIGIvZHJpdmVy cy91c2IvY2hpcGlkZWEvaG9zdC5jCmluZGV4IGQ4NThhODJjNGY0NC4uZDc0YTEzZDdjMjFjIDEw MDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRlYS9ob3N0LmMKKysrIGIvZHJpdmVycy91c2Iv Y2hpcGlkZWEvaG9zdC5jCkBAIC0yOCw2ICsyOCwyMCBAQCBzdHJ1Y3QgZWhjaV9jaV9wcml2IHsK IAlzdHJ1Y3QgcmVndWxhdG9yICpyZWdfdmJ1czsKIH07CiAKKy8qIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBvdmVycmlkZSBXS0NOLCBXS0ROLCBhbmQgV0tPQyAqLworc3RhdGljIHZvaWQgY2lf ZWhjaV9vdmVycmlkZV93YWtldXBfZmxhZyhzdHJ1Y3QgZWhjaV9oY2QgKmVoY2ksCisJCXUzMiBf X2lvbWVtICpyZWcsIHUzMiBmbGFncywgYm9vbCBzZXQpCit7CisJdTMyIHZhbCA9IGVoY2lfcmVh ZGwoZWhjaSwgcmVnKTsKKworCWlmIChzZXQpCisJCXZhbCB8PSBmbGFnczsKKwllbHNlCisJCXZh bCAmPSB+ZmxhZ3M7CisKKwllaGNpX3dyaXRlbChlaGNpLCB2YWwsIHJlZyk7Cit9CisKIHN0YXRp YyBpbnQgZWhjaV9jaV9wb3J0cG93ZXIoc3RydWN0IHVzYl9oY2QgKmhjZCwgaW50IHBvcnRudW0s IGJvb2wgZW5hYmxlKQogewogCXN0cnVjdCBlaGNpX2hjZCAqZWhjaSA9IGhjZF90b19laGNpKGhj ZCk7CkBAIC0xNzAsNiArMTg0LDExIEBAIHN0YXRpYyBpbnQgaG9zdF9zdGFydChzdHJ1Y3QgY2lf aGRyYyAqY2kpCiAJCQlvdGctPmhvc3QgPSAmaGNkLT5zZWxmOwogCQkJaGNkLT5zZWxmLm90Z19w b3J0ID0gMTsKIAkJfQorCisJCWlmIChjaS0+cGxhdGRhdGEtPm5vdGlmeV9ldmVudCAmJgorCQkJ KGNpLT5wbGF0ZGF0YS0+ZmxhZ3MgJiBDSV9IRFJDX0lNWF9JU19IU0lDKSkKKwkJCWNpLT5wbGF0 ZGF0YS0+bm90aWZ5X2V2ZW50CisJCQkJKGNpLCBDSV9IRFJDX0lNWF9IU0lDX0FDVElWRV9FVkVO VCk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTIxOCw2ICsyMzcsOCBAQCB2b2lkIGNpX2hkcmNf aG9zdF9kZXN0cm95KHN0cnVjdCBjaV9oZHJjICpjaSkKIHN0YXRpYyBpbnQgY2lfZWhjaV9idXNf c3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogewogCXN0cnVjdCBlaGNpX2hjZCAqZWhjaSA9 IGhjZF90b19laGNpKGhjZCk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gaGNkLT5zZWxmLmNvbnRy b2xsZXI7CisJc3RydWN0IGNpX2hkcmMgKmNpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJaW50 IHBvcnQ7CiAJdTMyIHRtcDsKIApAQCAtMjQ5LDYgKzI3MCw5IEBAIHN0YXRpYyBpbnQgY2lfZWhj aV9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2hjZCAqaGNkKQogCQkJICogSXQgbmVlZHMgYSBzaG9y dCBkZWxheSBiZXR3ZWVuIHNldCBSUyBiaXQgYW5kIFBIQ0QuCiAJCQkgKi8KIAkJCXVzbGVlcF9y YW5nZSgxNTAsIDIwMCk7CisJCQlpZiAoY2ktPnBsYXRkYXRhLT5mbGFncyAmIENJX0hEUkNfSU1Y X0lTX0hTSUMpCisJCQkJY2lfZWhjaV9vdmVycmlkZV93YWtldXBfZmxhZyhlaGNpLCByZWcsCisJ CQkJCVBPUlRfV0tESVNDX0UgfCBQT1JUX1dLQ09OTl9FLCBmYWxzZSk7CiAJCQlicmVhazsKIAkJ fQogCX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2NoaXBpZGVhLmggYi9pbmNsdWRl L2xpbnV4L3VzYi9jaGlwaWRlYS5oCmluZGV4IDYzNzU4YzM5OWU0ZS4uOTExZTA1YWY2NzFlIDEw MDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jaGlwaWRlYS5oCisrKyBiL2luY2x1ZGUvbGlu dXgvdXNiL2NoaXBpZGVhLmgKQEAgLTYwLDkgKzYwLDEyIEBAIHN0cnVjdCBjaV9oZHJjX3BsYXRm b3JtX2RhdGEgewogI2RlZmluZSBDSV9IRFJDX09WRVJSSURFX1JYX0JVUlNUCUJJVCgxMSkKICNk ZWZpbmUgQ0lfSERSQ19PVkVSUklERV9QSFlfQ09OVFJPTAlCSVQoMTIpIC8qIEdsdWUgbGF5ZXIg bWFuYWdlcyBwaHkgKi8KICNkZWZpbmUgQ0lfSERSQ19SRVFVSVJFU19BTElHTkVEX0RNQQlCSVQo MTMpCisjZGVmaW5lIENJX0hEUkNfSU1YX0lTX0hTSUMJCUJJVCgxNCkKIAllbnVtIHVzYl9kcl9t b2RlCWRyX21vZGU7CiAjZGVmaW5lIENJX0hEUkNfQ09OVFJPTExFUl9SRVNFVF9FVkVOVAkJMAog I2RlZmluZSBDSV9IRFJDX0NPTlRST0xMRVJfU1RPUFBFRF9FVkVOVAkxCisjZGVmaW5lIENJX0hE UkNfSU1YX0hTSUNfQUNUSVZFX0VWRU5UCQkyCisjZGVmaW5lIENJX0hEUkNfSU1YX0hTSUNfU1VT UEVORF9FVkVOVAkJMwogCWludAkoKm5vdGlmeV9ldmVudCkgKHN0cnVjdCBjaV9oZHJjICpjaSwg dW5zaWduZWQgZXZlbnQpOwogCXN0cnVjdCByZWd1bGF0b3IJKnJlZ192YnVzOwogCXN0cnVjdCB1 c2Jfb3RnX2NhcHMJY2lfb3RnX2NhcHM7Cg==