All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Bresticker <abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
To: Tomeu Vizoso <tomeu-XCtybt49RKsYaV1qd6yewg@public.gmane.org>,
	Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Andrew Bresticker
	<abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Subject: [PATCH 10/9] pinctrl: tegra-xusb: Support adjusted HS_CURR_LEVEL
Date: Fri, 22 Aug 2014 11:28:08 -0700	[thread overview]
Message-ID: <1408732088-28010-1-git-send-email-abrestic@chromium.org> (raw)
In-Reply-To: <1408381705-3623-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>

On some boards, e.g. Blaze, the fused per-UTMI pad HS_CURR_LEVEL value
must be adjusted before being applied.  Add support for a new pinconfig
property "nvidia,otg-hs-curr-level-offset" which will apply the specified
offset to the fused HS_CURR_LEVEL value.

Signed-off-by: Andrew Bresticker <abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
---
On Blaze, the OTG pads should be configured like this:
...
	otgp0 {
		nvidia,lanes = "otg-0";
		nvidia,function = "xusb";
		nvidia,otg-hs-curr-level-offset = <4>;
	};
	otgp1 {
		nvidia,lanes = "otg-1";
		nvidia,function = "xusb";
	};
	otgp2 {
		nvidia,lanes = "otg-2";
		nvidia,function = "xusb";
		nvidia,otg-hs-curr-level-offset = <2>;
	};
...
It is otherwise compatible with the Venice2 XUSB/XHCI DT bits.
---
 .../pinctrl/nvidia,tegra124-xusb-padctl.txt        |  4 ++-
 drivers/pinctrl/pinctrl-tegra-xusb.c               | 36 +++++++++++++++++++++-
 2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
index 606a5db..23df0bc 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
@@ -69,6 +69,8 @@ Optional properties:
 - nvidia,hsic-tx-slew-n: HSIC TX SLEWN value.
 - nvidia,hsic-tx-slew-p: HSIC TX SLEWP value.
 - nvidia,hsic-auto-term: Enables HSIC AUTO_TERM. (0: no, 1: yes)
+- nvidia,otg-hs-curr-level-offset: Offset to be applied to the pad's fused
+  HS_CURR_LEVEL value.
 
 Note that not all of these properties are valid for all lanes. Lanes can be
 divided into three groups:
@@ -77,7 +79,7 @@ divided into three groups:
 
     Valid functions for this group are: "snps", "xusb", "uart", "rsvd".
 
-    None of the other properties apply to this group.
+    The nvidia,otg-hs-curr-level-offset property only applies.
 
   - ulpi-0, hsic-0, hsic-1:
 
diff --git a/drivers/pinctrl/pinctrl-tegra-xusb.c b/drivers/pinctrl/pinctrl-tegra-xusb.c
index 1091ce7..46ee0f1 100644
--- a/drivers/pinctrl/pinctrl-tegra-xusb.c
+++ b/drivers/pinctrl/pinctrl-tegra-xusb.c
@@ -282,6 +282,7 @@ struct tegra_xusb_padctl {
 
 	struct tegra_xusb_usb3_port usb3_ports[TEGRA_XUSB_USB3_PHYS];
 	unsigned int utmi_enable;
+	unsigned int hs_curr_level_offset[TEGRA_XUSB_UTMI_PHYS];
 	struct regulator *vbus[TEGRA_XUSB_UTMI_PHYS];
 	struct regulator *vddio_hsic;
 };
@@ -298,6 +299,12 @@ static inline u32 padctl_readl(struct tegra_xusb_padctl *padctl,
 	return readl(padctl->regs + offset);
 }
 
+static inline bool is_otg_lane(unsigned int lane)
+{
+	return lane >= TEGRA_XUSB_PADCTL_PIN_OTG_0 &&
+		lane <= TEGRA_XUSB_PADCTL_PIN_OTG_2;
+}
+
 static inline bool is_hsic_lane(unsigned int lane)
 {
 	return lane >= TEGRA_XUSB_PADCTL_PIN_HSIC_0 &&
@@ -349,6 +356,7 @@ enum tegra_xusb_padctl_param {
 	TEGRA_XUSB_PADCTL_HSIC_TX_RSLEWN,
 	TEGRA_XUSB_PADCTL_HSIC_TX_RSLEWP,
 	TEGRA_XUSB_PADCTL_HSIC_AUTO_TERM,
+	TEGRA_XUSB_PADCTL_OTG_HS_CURR_LEVEL_OFFSET,
 };
 
 static const struct tegra_xusb_padctl_property {
@@ -365,6 +373,8 @@ static const struct tegra_xusb_padctl_property {
 	{ "nvidia,hsic-tx-rslew-n", TEGRA_XUSB_PADCTL_HSIC_TX_RSLEWN },
 	{ "nvidia,hsic-tx-rslew-p", TEGRA_XUSB_PADCTL_HSIC_TX_RSLEWP },
 	{ "nvidia,hsic-auto-term", TEGRA_XUSB_PADCTL_HSIC_AUTO_TERM },
+	{ "nvidia,otg-hs-curr-level-offset",
+	  TEGRA_XUSB_PADCTL_OTG_HS_CURR_LEVEL_OFFSET },
 };
 
 #define TEGRA_XUSB_PADCTL_PACK(param, value) ((param) << 16 | (value))
@@ -678,6 +688,17 @@ static int tegra_xusb_padctl_pinconf_group_get(struct pinctrl_dev *pinctrl,
 			value = 0;
 		break;
 
+	case TEGRA_XUSB_PADCTL_OTG_HS_CURR_LEVEL_OFFSET:
+		if (!is_otg_lane(group)) {
+			dev_err(padctl->dev, "Pin %d is not an OTG pad\n",
+				group);
+			return -EINVAL;
+		}
+
+		port = group - TEGRA_XUSB_PADCTL_PIN_OTG_0;
+		value = padctl->hs_curr_level_offset[port];
+		break;
+
 	default:
 		dev_err(padctl->dev, "invalid configuration parameter: %04x\n",
 			param);
@@ -895,6 +916,18 @@ static int tegra_xusb_padctl_pinconf_group_set(struct pinctrl_dev *pinctrl,
 				      XUSB_PADCTL_HSIC_PADX_CTL1(port));
 			break;
 
+		case TEGRA_XUSB_PADCTL_OTG_HS_CURR_LEVEL_OFFSET:
+			if (!is_otg_lane(group)) {
+				dev_err(padctl->dev,
+					"Pin %d is not an OTG pad\n", group);
+				return -EINVAL;
+			}
+
+			port = group - TEGRA_XUSB_PADCTL_PIN_OTG_0;
+			value &= XUSB_PADCTL_USB2_OTG_PAD_CTL0_HS_CURR_LEVEL_MASK;
+			padctl->hs_curr_level_offset[port] = value;
+			break;
+
 		default:
 			dev_err(padctl->dev,
 				"invalid configuration parameter: %04x\n",
@@ -1485,7 +1518,8 @@ static int utmi_phy_power_on(struct phy *phy)
 		   XUSB_PADCTL_USB2_OTG_PAD_CTL0_PD |
 		   XUSB_PADCTL_USB2_OTG_PAD_CTL0_PD2 |
 		   XUSB_PADCTL_USB2_OTG_PAD_CTL0_PD_ZI);
-	value |= padctl->calib.hs_curr_level[port] <<
+	value |= (padctl->calib.hs_curr_level[port] +
+		  padctl->hs_curr_level_offset[port]) <<
 		XUSB_PADCTL_USB2_OTG_PAD_CTL0_HS_CURR_LEVEL_SHIFT;
 	value |= padctl->soc->hs_slew <<
 		XUSB_PADCTL_USB2_OTG_PAD_CTL0_HS_SLEW_SHIFT;
-- 
2.1.0.rc2.206.gedb03e5

  parent reply	other threads:[~2014-08-22 18:28 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-18 17:08 [PATCH v2 0/9] Tegra xHCI support Andrew Bresticker
2014-08-18 17:08 ` Andrew Bresticker
2014-08-18 17:08 ` Andrew Bresticker
2014-08-18 17:08 ` [PATCH v2 2/9] mailbox: Add NVIDIA Tegra XUSB mailbox driver Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
     [not found]   ` <1408381705-3623-3-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:01     ` Stephen Warren
2014-08-25 19:01       ` Stephen Warren
2014-08-25 19:01       ` Stephen Warren
     [not found]       ` <53FB8820.4010202-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-26  6:57         ` Thierry Reding
2014-08-26  6:57           ` Thierry Reding
2014-08-26  6:57           ` Thierry Reding
2014-08-26  7:43           ` Arnd Bergmann
2014-08-26  7:43             ` Arnd Bergmann
2014-08-26  7:43             ` Arnd Bergmann
2014-08-26  7:50             ` Thierry Reding
2014-08-26  7:50               ` Thierry Reding
2014-08-26  7:50               ` Thierry Reding
2014-08-26  8:09               ` Arnd Bergmann
2014-08-26  8:09                 ` Arnd Bergmann
2014-08-26  8:09                 ` Arnd Bergmann
2014-08-26  9:08                 ` Thierry Reding
2014-08-26  9:08                   ` Thierry Reding
2014-08-26  9:54                   ` Arnd Bergmann
2014-08-26  9:54                     ` Arnd Bergmann
2014-08-26  9:54                     ` Arnd Bergmann
2014-08-26 10:20                     ` Thierry Reding
2014-08-26 10:20                       ` Thierry Reding
2014-08-26 10:20                       ` Thierry Reding
2014-08-26 11:35                       ` Arnd Bergmann
2014-08-26 11:35                         ` Arnd Bergmann
2014-08-26 11:35                         ` Arnd Bergmann
2014-08-26 11:45                         ` Thierry Reding
2014-08-26 11:45                           ` Thierry Reding
2014-08-26 11:45                           ` Thierry Reding
2014-08-26  8:54           ` David Laight
2014-08-26  8:54             ` David Laight
2014-08-26  8:54             ` David Laight
2014-08-26 10:04             ` Arnd Bergmann
2014-08-26 10:04               ` Arnd Bergmann
2014-08-26 10:04               ` Arnd Bergmann
2014-08-27 17:38       ` Andrew Bresticker
2014-08-27 17:38         ` Andrew Bresticker
2014-08-27 17:38         ` Andrew Bresticker
2014-08-27 17:50         ` Stephen Warren
2014-08-27 17:50           ` Stephen Warren
2014-08-27 17:50           ` Stephen Warren
     [not found]           ` <53FE1A7A.4010906-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-27 18:13             ` Andrew Bresticker
2014-08-27 18:13               ` Andrew Bresticker
2014-08-27 18:13               ` Andrew Bresticker
     [not found]               ` <CAL1qeaGPr=BeYL1-=ddRL7rSuvYdQcd6vCEEHDrNA-KYst6bnw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-27 18:19                 ` Stephen Warren
2014-08-27 18:19                   ` Stephen Warren
2014-08-27 18:19                   ` Stephen Warren
2014-08-27 21:56                   ` Andrew Bresticker
2014-08-27 21:56                     ` Andrew Bresticker
2014-08-27 21:56                     ` Andrew Bresticker
     [not found]                     ` <CAL1qeaGHz1+L8r-AXetw422ZWSJX1h025YOx9kB+EE4yJpOowQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-27 22:30                       ` Stephen Warren
2014-08-27 22:30                         ` Stephen Warren
2014-08-27 22:30                         ` Stephen Warren
     [not found]         ` <CAL1qeaERHeKKNpqh9qHOppgT7ymvntisdjVvZheP78U6NaPz-A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-27 19:26           ` Jassi Brar
2014-08-27 19:26             ` Jassi Brar
2014-08-27 19:26             ` Jassi Brar
2014-08-18 17:08 ` [PATCH v2 3/9] of: Update Tegra XUSB pad controller binding for USB Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
     [not found]   ` <1408381705-3623-4-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:12     ` Stephen Warren
2014-08-25 19:12       ` Stephen Warren
2014-08-25 19:12       ` Stephen Warren
     [not found]       ` <53FB8A8C.8040107-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-27 16:36         ` Andrew Bresticker
2014-08-27 16:36           ` Andrew Bresticker
2014-08-27 16:36           ` Andrew Bresticker
     [not found]           ` <CAL1qeaGHuMegpeyumD8GrFRmeufkiiUygAdqu1ECHrfSkixwOQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-27 16:42             ` Stephen Warren
2014-08-27 16:42               ` Stephen Warren
2014-08-27 16:42               ` Stephen Warren
2014-08-18 17:08 ` [PATCH v2 4/9] pinctrl: tegra-xusb: Add USB PHY support Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
     [not found]   ` <1408381705-3623-5-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:22     ` Stephen Warren
2014-08-25 19:22       ` Stephen Warren
2014-08-25 19:22       ` Stephen Warren
2014-08-26  7:29       ` Mikko Perttunen
2014-08-26  7:29         ` Mikko Perttunen
2014-08-26  7:29         ` Mikko Perttunen
     [not found]       ` <53FB8CFE.3090007-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-27 16:44         ` Andrew Bresticker
2014-08-27 16:44           ` Andrew Bresticker
2014-08-27 16:44           ` Andrew Bresticker
2014-08-29 13:36         ` Linus Walleij
2014-08-29 13:36           ` Linus Walleij
2014-08-29 13:36           ` Linus Walleij
2014-08-18 17:08 ` [PATCH v2 5/9] of: Add NVIDIA Tegra xHCI controller binding Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
     [not found]   ` <1408381705-3623-6-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:26     ` Stephen Warren
2014-08-25 19:26       ` Stephen Warren
2014-08-25 19:26       ` Stephen Warren
2014-08-18 17:08 ` [PATCH v2 6/9] usb: xhci: Add NVIDIA Tegra xHCI host-controller driver Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
     [not found]   ` <1408381705-3623-7-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:36     ` Stephen Warren
2014-08-25 19:36       ` Stephen Warren
2014-08-25 19:36       ` Stephen Warren
2014-08-30 21:15   ` Greg Kroah-Hartman
2014-08-30 21:15     ` Greg Kroah-Hartman
     [not found]     ` <20140830211558.GA13814-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-08-31 19:04       ` Andrew Bresticker
2014-08-31 19:04         ` Andrew Bresticker
2014-08-31 19:04         ` Andrew Bresticker
2014-08-18 17:08 ` [PATCH v2 7/9] ARM: tegra: Add Tegra124 XUSB mailbox and xHCI controller Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08 ` [PATCH v2 8/9] ARM: tegra: jetson-tk1: Add xHCI support Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-18 17:08   ` Andrew Bresticker
2014-08-21 13:34 ` [PATCH v2 0/9] Tegra " Tomeu Vizoso
2014-08-21 13:34   ` Tomeu Vizoso
     [not found]   ` <CAAObsKDT4BV=fGAFkMxieQnC3HX=zm8G_qJ44yay4qG8inxoPQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-21 17:26     ` Andrew Bresticker
2014-08-21 17:26       ` Andrew Bresticker
2014-08-21 17:26       ` Andrew Bresticker
     [not found]       ` <CAL1qeaH=8Fgw6Zia3DuBL8wrrYMjZ8pqC2NanYtb5-YVJwmtsg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-08-22 11:23         ` Tomeu Vizoso
2014-08-22 11:23           ` Tomeu Vizoso
2014-08-22 11:23           ` Tomeu Vizoso
     [not found] ` <1408381705-3623-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-18 17:08   ` [PATCH v2 1/9] of: Add NVIDIA Tegra XUSB mailbox binding Andrew Bresticker
2014-08-18 17:08     ` Andrew Bresticker
2014-08-18 17:08     ` Andrew Bresticker
     [not found]     ` <1408381705-3623-2-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 18:48       ` Stephen Warren
2014-08-25 18:48         ` Stephen Warren
2014-08-25 18:48         ` Stephen Warren
     [not found]         ` <53FB84F7.8030509-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-25 19:06           ` Stephen Warren
2014-08-25 19:06             ` Stephen Warren
2014-08-25 19:06             ` Stephen Warren
2014-08-27 16:33           ` Andrew Bresticker
2014-08-27 16:33             ` Andrew Bresticker
2014-08-27 16:33             ` Andrew Bresticker
2014-08-18 17:08   ` [PATCH v2 9/9] ARM: tegra: venice2: Add xHCI support Andrew Bresticker
2014-08-18 17:08     ` Andrew Bresticker
2014-08-18 17:08     ` Andrew Bresticker
2014-08-18 17:30   ` [PATCH v2 0/9] Tegra " Stephen Warren
2014-08-18 17:30     ` Stephen Warren
2014-08-18 17:30     ` Stephen Warren
     [not found]     ` <53F2381B.8020801-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-18 19:35       ` Andrew Bresticker
2014-08-18 19:35         ` Andrew Bresticker
2014-08-18 19:35         ` Andrew Bresticker
2014-08-22 18:28   ` Andrew Bresticker [this message]
     [not found]     ` <1408732088-28010-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2014-08-25 19:39       ` [PATCH 10/9] pinctrl: tegra-xusb: Support adjusted HS_CURR_LEVEL Stephen Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1408732088-28010-1-git-send-email-abrestic@chromium.org \
    --to=abrestic-f7+t8e8rja9g9huczpvpmw@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=tomeu-XCtybt49RKsYaV1qd6yewg@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.