[PATCH v8 11/13] phy: tegra: xusb: Add wake/sleepwalk for Tegra186
Vinod Koul
vkoul at kernel.org
Thu Apr 1 07:49:11 BST 2021
On 25-03-21, 17:40, Thierry Reding wrote:
> From: JC Kuo <jckuo at nvidia.com>
>
> This commit implements Tegra186/Tegra194 XUSB PADCTL/AO wake and
> sleepwalk operations.
>
> Signed-off-by: JC Kuo <jckuo at nvidia.com>
> Signed-off-by: Thierry Reding <treding at nvidia.com>
> ---
> drivers/phy/tegra/xusb-tegra186.c | 558 +++++++++++++++++++++++++++++-
> 1 file changed, 557 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
> index 5d64f69b39a9..6378bf722745 100644
> --- a/drivers/phy/tegra/xusb-tegra186.c
> +++ b/drivers/phy/tegra/xusb-tegra186.c
> @@ -1,6 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> /*
> - * Copyright (c) 2016-2019, NVIDIA CORPORATION. All rights reserved.
> + * Copyright (c) 2016-2020, NVIDIA CORPORATION. All rights reserved.
> */
>
> #include <linux/delay.h>
> @@ -113,6 +113,117 @@
> #define ID_OVERRIDE_FLOATING ID_OVERRIDE(8)
> #define ID_OVERRIDE_GROUNDED ID_OVERRIDE(0)
>
> +/* XUSB AO registers */
> +#define XUSB_AO_USB_DEBOUNCE_DEL (0x4)
> +#define UHSIC_LINE_DEB_CNT(x) (((x) & 0xf) << 4)
> +#define UTMIP_LINE_DEB_CNT(x) ((x) & 0xf)
> +
> +#define XUSB_AO_UTMIP_TRIGGERS(x) (0x40 + (x) * 4)
> +#define CLR_WALK_PTR (1 << 0)
> +#define CAP_CFG (1 << 1)
> +#define CLR_WAKE_ALARM (1 << 3)
> +
> +#define XUSB_AO_UHSIC_TRIGGERS(x) (0x60 + (x) * 4)
> +#define HSIC_CLR_WALK_PTR (1 << 0)
> +#define HSIC_CLR_WAKE_ALARM (1 << 3)
> +#define HSIC_CAP_CFG (1 << 4)
> +
> +#define XUSB_AO_UTMIP_SAVED_STATE(x) (0x70 + (x) * 4)
> +#define SPEED(x) ((x) & 0x3)
> +#define UTMI_HS SPEED(0)
> +#define UTMI_FS SPEED(1)
> +#define UTMI_LS SPEED(2)
> +#define UTMI_RST SPEED(3)
> +
> +#define XUSB_AO_UHSIC_SAVED_STATE(x) (0x90 + (x) * 4)
> +#define MODE(x) ((x) & 0x1)
> +#define MODE_HS MODE(0)
> +#define MODE_RST MODE(1)
> +
> +#define XUSB_AO_UTMIP_SLEEPWALK_CFG(x) (0xd0 + (x) * 4)
> +#define XUSB_AO_UHSIC_SLEEPWALK_CFG(x) (0xf0 + (x) * 4)
> +#define FAKE_USBOP_VAL (1 << 0)
> +#define FAKE_USBON_VAL (1 << 1)
> +#define FAKE_USBOP_EN (1 << 2)
> +#define FAKE_USBON_EN (1 << 3)
> +#define FAKE_STROBE_VAL (1 << 0)
> +#define FAKE_DATA_VAL (1 << 1)
> +#define FAKE_STROBE_EN (1 << 2)
> +#define FAKE_DATA_EN (1 << 3)
> +#define WAKE_WALK_EN (1 << 14)
> +#define MASTER_ENABLE (1 << 15)
> +#define LINEVAL_WALK_EN (1 << 16)
BIT() or GENMASK() please
> +static inline void ao_writel(struct tegra186_xusb_padctl *priv, u32 value, unsigned int offset)
> +{
> + dev_dbg(priv->base.dev, "ao %08x < %08x\n", offset, value);
Too many debug prints in this patch as well...
With the nits fixed:
Acked-By: Vinod Koul <vkoul at kernel.org>
--
~Vinod
More information about the linux-phy
mailing list