From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C55CC43387 for ; Tue, 15 Jan 2019 12:40:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6578820657 for ; Tue, 15 Jan 2019 12:40:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729141AbfAOMks (ORCPT ); Tue, 15 Jan 2019 07:40:48 -0500 Received: from mx1.emlix.com ([46.4.235.150]:44194 "EHLO mx1.emlix.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726022AbfAOMks (ORCPT ); Tue, 15 Jan 2019 07:40:48 -0500 X-Greylist: delayed 563 seconds by postgrey-1.27 at vger.kernel.org; Tue, 15 Jan 2019 07:40:46 EST Received: from mailer.emlix.com (unknown [81.20.119.6]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.emlix.com (Postfix) with ESMTPS id DBA7D25F128; Tue, 15 Jan 2019 13:31:22 +0100 (CET) From: Philipp Puschmann To: gregkh@linuxfoundation.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, Peter.Chen@nxp.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, philipp.puschmann@emlix.com Subject: [PATCH 2/2] usb: chipidea: imx: set power polarity Date: Tue, 15 Jan 2019 13:31:13 +0100 Message-Id: <20190115123113.20577-2-philipp.puschmann@emlix.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190115123113.20577-1-philipp.puschmann@emlix.com> References: <20190115123113.20577-1-philipp.puschmann@emlix.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch adds support to set the power line polarity for i.MX6q/dl. To let the USB controller control the power it may be necessary to configure the polarity of the power line. So far the polarity was configured by Bootloader or alternatively the power line was muxed as gpio and driven by a regulator. Signed-off-by: Philipp Puschmann --- drivers/usb/chipidea/ci_hdrc_imx.c | 3 +++ drivers/usb/chipidea/ci_hdrc_imx.h | 1 + drivers/usb/chipidea/usbmisc_imx.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index e81de9ca8729..32dc120680fa 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -152,6 +152,9 @@ static struct imx_usbmisc_data *usbmisc_get_init_data(struct device *dev) dev_warn(dev, "No over current polarity defined\n"); } + if (of_find_property(np, "power-active-high", NULL)) + data->pwr_pol = 1; + if (of_find_property(np, "external-vbus-divider", NULL)) data->evdo = 1; diff --git a/drivers/usb/chipidea/ci_hdrc_imx.h b/drivers/usb/chipidea/ci_hdrc_imx.h index 7cc53e2ce564..c842e03f8767 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.h +++ b/drivers/usb/chipidea/ci_hdrc_imx.h @@ -18,6 +18,7 @@ struct imx_usbmisc_data { /* true if dt specifies polarity */ unsigned int oc_pol_configured:1; + unsigned int pwr_pol:1; /* power polarity */ unsigned int evdo:1; /* set external vbus divider option */ unsigned int ulpi:1; /* connected to an ULPI phy */ unsigned int hsic:1; /* HSIC controlller */ diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 097ffbca0bd9..13e52632aece 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -63,6 +63,7 @@ #define MX6_BM_NON_BURST_SETTING BIT(1) #define MX6_BM_OVER_CUR_DIS BIT(7) #define MX6_BM_OVER_CUR_POLARITY BIT(8) +#define MX6_BM_PWR_POLARITY BIT(9) #define MX6_BM_WAKEUP_ENABLE BIT(10) #define MX6_BM_UTMI_ON_CLOCK BIT(13) #define MX6_BM_ID_WAKEUP BIT(16) @@ -383,6 +384,9 @@ static int usbmisc_imx6q_init(struct imx_usbmisc_data *data) else if (data->oc_pol_configured) reg &= ~MX6_BM_OVER_CUR_POLARITY; } + /* If the polarity is not set keep it as setup by the bootlader */ + if (data->pwr_polarity == 1) + reg |= MX6_BM_PWR_POLARITY; writel(reg, usbmisc->base + data->index * 4); /* SoC non-burst setting */ -- 2.20.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: [2/2] usb: chipidea: imx: set power polarity From: Philipp Puschmann Message-Id: <20190115123113.20577-2-philipp.puschmann@emlix.com> Date: Tue, 15 Jan 2019 13:31:13 +0100 To: gregkh@linuxfoundation.org Cc: robh+dt@kernel.org, mark.rutland@arm.com, Peter.Chen@nxp.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, philipp.puschmann@emlix.com List-ID: VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgdG8gc2V0IHRoZSBwb3dlciBsaW5lIHBvbGFyaXR5IGZv ciBpLk1YNnEvZGwuCgpUbyBsZXQgdGhlIFVTQiBjb250cm9sbGVyIGNvbnRyb2wgdGhlIHBvd2Vy IGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gY29uZmlndXJlCnRoZSBwb2xhcml0eSBvZiB0aGUgcG93 ZXIgbGluZS4gU28gZmFyIHRoZSBwb2xhcml0eSB3YXMgY29uZmlndXJlZApieSBCb290bG9hZGVy IG9yIGFsdGVybmF0aXZlbHkgdGhlIHBvd2VyIGxpbmUgd2FzIG11eGVkIGFzIGdwaW8gYW5kCmRy aXZlbiBieSBhIHJlZ3VsYXRvci4KClNpZ25lZC1vZmYtYnk6IFBoaWxpcHAgUHVzY2htYW5uIDxw aGlsaXBwLnB1c2NobWFubkBlbWxpeC5jb20+Ci0tLQogZHJpdmVycy91c2IvY2hpcGlkZWEvY2lf aGRyY19pbXguYyB8IDMgKysrCiBkcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5oIHwg MSArCiBkcml2ZXJzL3VzYi9jaGlwaWRlYS91c2JtaXNjX2lteC5jIHwgNCArKysrCiAzIGZpbGVz IGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBp ZGVhL2NpX2hkcmNfaW14LmMgYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jCmlu ZGV4IGU4MWRlOWNhODcyOS4uMzJkYzEyMDY4MGZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9j aGlwaWRlYS9jaV9oZHJjX2lteC5jCisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNf aW14LmMKQEAgLTE1Miw2ICsxNTIsOSBAQCBzdGF0aWMgc3RydWN0IGlteF91c2JtaXNjX2RhdGEg KnVzYm1pc2NfZ2V0X2luaXRfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWRldl93YXJuKGRl diwgIk5vIG92ZXIgY3VycmVudCBwb2xhcml0eSBkZWZpbmVkXG4iKTsKIAl9CiAKKwlpZiAob2Zf ZmluZF9wcm9wZXJ0eShucCwgInBvd2VyLWFjdGl2ZS1oaWdoIiwgTlVMTCkpCisJCWRhdGEtPnB3 cl9wb2wgPSAxOworCiAJaWYgKG9mX2ZpbmRfcHJvcGVydHkobnAsICJleHRlcm5hbC12YnVzLWRp dmlkZXIiLCBOVUxMKSkKIAkJZGF0YS0+ZXZkbyA9IDE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmggYi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJj X2lteC5oCmluZGV4IDdjYzUzZTJjZTU2NC4uYzg0MmUwM2Y4NzY3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5oCisrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVh L2NpX2hkcmNfaW14LmgKQEAgLTE4LDYgKzE4LDcgQEAgc3RydWN0IGlteF91c2JtaXNjX2RhdGEg ewogCS8qIHRydWUgaWYgZHQgc3BlY2lmaWVzIHBvbGFyaXR5ICovCiAJdW5zaWduZWQgaW50IG9j X3BvbF9jb25maWd1cmVkOjE7CiAKKwl1bnNpZ25lZCBpbnQgcHdyX3BvbDoxOyAvKiBwb3dlciBw b2xhcml0eSAqLwogCXVuc2lnbmVkIGludCBldmRvOjE7IC8qIHNldCBleHRlcm5hbCB2YnVzIGRp dmlkZXIgb3B0aW9uICovCiAJdW5zaWduZWQgaW50IHVscGk6MTsgLyogY29ubmVjdGVkIHRvIGFu IFVMUEkgcGh5ICovCiAJdW5zaWduZWQgaW50IGhzaWM6MTsgLyogSFNJQyBjb250cm9sbGxlciAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19pbXguYyBiL2RyaXZl cnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMKaW5kZXggMDk3ZmZiY2EwYmQ5Li4xM2U1MjYz MmFlY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL3VzYm1pc2NfaW14LmMKKysr IGIvZHJpdmVycy91c2IvY2hpcGlkZWEvdXNibWlzY19pbXguYwpAQCAtNjMsNiArNjMsNyBAQAog I2RlZmluZSBNWDZfQk1fTk9OX0JVUlNUX1NFVFRJTkcJQklUKDEpCiAjZGVmaW5lIE1YNl9CTV9P VkVSX0NVUl9ESVMJCUJJVCg3KQogI2RlZmluZSBNWDZfQk1fT1ZFUl9DVVJfUE9MQVJJVFkJQklU KDgpCisjZGVmaW5lIE1YNl9CTV9QV1JfUE9MQVJJVFkJCUJJVCg5KQogI2RlZmluZSBNWDZfQk1f V0FLRVVQX0VOQUJMRQkJQklUKDEwKQogI2RlZmluZSBNWDZfQk1fVVRNSV9PTl9DTE9DSwkJQklU KDEzKQogI2RlZmluZSBNWDZfQk1fSURfV0FLRVVQCQlCSVQoMTYpCkBAIC0zODMsNiArMzg0LDkg QEAgc3RhdGljIGludCB1c2JtaXNjX2lteDZxX2luaXQoc3RydWN0IGlteF91c2JtaXNjX2RhdGEg KmRhdGEpCiAJCWVsc2UgaWYgKGRhdGEtPm9jX3BvbF9jb25maWd1cmVkKQogCQkJcmVnICY9IH5N WDZfQk1fT1ZFUl9DVVJfUE9MQVJJVFk7CiAJfQorCS8qIElmIHRoZSBwb2xhcml0eSBpcyBub3Qg c2V0IGtlZXAgaXQgYXMgc2V0dXAgYnkgdGhlIGJvb3RsYWRlciAqLworCWlmIChkYXRhLT5wd3Jf cG9sYXJpdHkgPT0gMSkKKwkJcmVnIHw9IE1YNl9CTV9QV1JfUE9MQVJJVFk7CiAJd3JpdGVsKHJl ZywgdXNibWlzYy0+YmFzZSArIGRhdGEtPmluZGV4ICogNCk7CiAKIAkvKiBTb0Mgbm9uLWJ1cnN0 IHNldHRpbmcgKi8K