From: balbi@ti.com (Felipe Balbi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
Date: Mon, 11 May 2015 10:55:47 -0500 [thread overview]
Message-ID: <20150511155547.GG19476@saruman.tx.rr.com> (raw)
In-Reply-To: <554F2CCE.4090906@redhat.com>
Hi,
On Sun, May 10, 2015 at 12:02:54PM +0200, Hans de Goede wrote:
> Hi,
>
> On 08-05-15 18:06, Felipe Balbi wrote:
> >Hi,
> >
> >On Sun, Mar 29, 2015 at 12:50:46PM +0200, Hans de Goede wrote:
> >>The sunxi otg phy has a bug where it wrongly detects a high speed squelch
> >>when reset on the root port gets de-asserted with a lo-speed device.
> >>
> >>The workaround for this is to disable squelch detect before de-asserting
> >>reset, and re-enabling it after the reset de-assert is done. Add a sunxi
> >>specific phy function to allow the sunxi-musb glue to do this.
> >>
> >>Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> >>---
> >> drivers/phy/phy-sun4i-usb.c | 9 +++++++++
> >> include/linux/phy/phy-sun4i-usb.h | 26 ++++++++++++++++++++++++++
> >> 2 files changed, 35 insertions(+)
> >> create mode 100644 include/linux/phy/phy-sun4i-usb.h
> >>
> >>diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
> >>index 221e8ab..01eb08d 100644
> >>--- a/drivers/phy/phy-sun4i-usb.c
> >>+++ b/drivers/phy/phy-sun4i-usb.c
> >>@@ -33,6 +33,7 @@
> >> #include <linux/of_address.h>
> >> #include <linux/of_gpio.h>
> >> #include <linux/phy/phy.h>
> >>+#include <linux/phy/phy-sun4i-usb.h>
> >> #include <linux/platform_device.h>
> >> #include <linux/regulator/consumer.h>
> >> #include <linux/reset.h>
> >>@@ -75,6 +76,7 @@
> >> #define PHY_OTG_FUNC_EN 0x28
> >> #define PHY_VBUS_DET_EN 0x29
> >> #define PHY_DISCON_TH_SEL 0x2a
> >>+#define PHY_SQUELCH_DETECT 0x3c
> >>
> >> #define MAX_PHYS 3
> >>
> >>@@ -322,6 +324,13 @@ static int sun4i_usb_phy_power_off(struct phy *_phy)
> >> return 0;
> >> }
> >>
> >>+void sun4i_usb_phy_set_squelch_detect(struct phy *_phy, bool enabled)
> >>+{
> >>+ struct sun4i_usb_phy *phy = phy_get_drvdata(_phy);
> >>+
> >>+ sun4i_usb_phy_write(phy, PHY_SQUELCH_DETECT, enabled ? 0 : 2, 2);
> >>+}
> >>+
> >> static struct phy_ops sun4i_usb_phy_ops = {
> >> .init = sun4i_usb_phy_init,
> >> .exit = sun4i_usb_phy_exit,
> >>diff --git a/include/linux/phy/phy-sun4i-usb.h b/include/linux/phy/phy-sun4i-usb.h
> >>new file mode 100644
> >>index 0000000..50aed92
> >>--- /dev/null
> >>+++ b/include/linux/phy/phy-sun4i-usb.h
> >>@@ -0,0 +1,26 @@
> >>+/*
> >>+ * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com>
> >>+ *
> >>+ * This program is free software; you can redistribute it and/or modify
> >>+ * it under the terms of the GNU General Public License version 2 and
> >>+ * only version 2 as published by the Free Software Foundation.
> >>+ *
> >>+ * This program is distributed in the hope that it will be useful,
> >>+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >>+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> >>+ * GNU General Public License for more details.
> >>+ */
> >>+
> >>+#ifndef PHY_SUN4I_USB_H_
> >>+#define PHY_SUN4I_USB_H_
> >>+
> >>+#include "phy.h"
> >>+
> >>+/**
> >>+ * sun4i_usb_phy_set_squelch_detect() - Enable/disable squelch detect
> >>+ * @phy: reference to a sun4i usb phy
> >>+ * @enabled: wether to enable or disable squelch detect
> >>+ */
> >>+void sun4i_usb_phy_set_squelch_detect(struct phy *phy, bool enabled);
> >
> >breaks build if MUSB=y and SUN41_PHY=m
>
> Ah, good one. So I assume that it is ok to fix this by doing:
>
> --- a/drivers/usb/musb/Kconfig
> +++ b/drivers/usb/musb/Kconfig
> @@ -66,6 +66,7 @@ config USB_MUSB_SUNXI
> tristate "Allwinner (sunxi)"
> depends on ARCH_SUNXI
> depends on NOP_USB_XCEIV
> + depends on PHY_SUN4I_USB
I would prefer not exporting any function from phy to musb. Perhaps
figure out with Kishon how "set_squelch" can be added to PHY fwk ?
> Also I've not heard anything back from you wrt my other musb
> sunxi preparation patches and the actual musb-sunxi patch? are
> those all ready for merging?
I'm a little iffy with all the function rewriting again because of a new
set of limitations with a new platform. I'll review them more carefully
maybe today or tomorrow.
cheers
--
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150511/4d3fd959/attachment.sig>
WARNING: multiple messages have this Message-ID (diff)
From: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>
To: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: balbi-l0cyMroinI0@public.gmane.org,
Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>,
Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
Roman Byshko <rbyshko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Subject: Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
Date: Mon, 11 May 2015 10:55:47 -0500 [thread overview]
Message-ID: <20150511155547.GG19476@saruman.tx.rr.com> (raw)
In-Reply-To: <554F2CCE.4090906-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 4525 bytes --]
Hi,
On Sun, May 10, 2015 at 12:02:54PM +0200, Hans de Goede wrote:
> Hi,
>
> On 08-05-15 18:06, Felipe Balbi wrote:
> >Hi,
> >
> >On Sun, Mar 29, 2015 at 12:50:46PM +0200, Hans de Goede wrote:
> >>The sunxi otg phy has a bug where it wrongly detects a high speed squelch
> >>when reset on the root port gets de-asserted with a lo-speed device.
> >>
> >>The workaround for this is to disable squelch detect before de-asserting
> >>reset, and re-enabling it after the reset de-assert is done. Add a sunxi
> >>specific phy function to allow the sunxi-musb glue to do this.
> >>
> >>Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> >>---
> >> drivers/phy/phy-sun4i-usb.c | 9 +++++++++
> >> include/linux/phy/phy-sun4i-usb.h | 26 ++++++++++++++++++++++++++
> >> 2 files changed, 35 insertions(+)
> >> create mode 100644 include/linux/phy/phy-sun4i-usb.h
> >>
> >>diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c
> >>index 221e8ab..01eb08d 100644
> >>--- a/drivers/phy/phy-sun4i-usb.c
> >>+++ b/drivers/phy/phy-sun4i-usb.c
> >>@@ -33,6 +33,7 @@
> >> #include <linux/of_address.h>
> >> #include <linux/of_gpio.h>
> >> #include <linux/phy/phy.h>
> >>+#include <linux/phy/phy-sun4i-usb.h>
> >> #include <linux/platform_device.h>
> >> #include <linux/regulator/consumer.h>
> >> #include <linux/reset.h>
> >>@@ -75,6 +76,7 @@
> >> #define PHY_OTG_FUNC_EN 0x28
> >> #define PHY_VBUS_DET_EN 0x29
> >> #define PHY_DISCON_TH_SEL 0x2a
> >>+#define PHY_SQUELCH_DETECT 0x3c
> >>
> >> #define MAX_PHYS 3
> >>
> >>@@ -322,6 +324,13 @@ static int sun4i_usb_phy_power_off(struct phy *_phy)
> >> return 0;
> >> }
> >>
> >>+void sun4i_usb_phy_set_squelch_detect(struct phy *_phy, bool enabled)
> >>+{
> >>+ struct sun4i_usb_phy *phy = phy_get_drvdata(_phy);
> >>+
> >>+ sun4i_usb_phy_write(phy, PHY_SQUELCH_DETECT, enabled ? 0 : 2, 2);
> >>+}
> >>+
> >> static struct phy_ops sun4i_usb_phy_ops = {
> >> .init = sun4i_usb_phy_init,
> >> .exit = sun4i_usb_phy_exit,
> >>diff --git a/include/linux/phy/phy-sun4i-usb.h b/include/linux/phy/phy-sun4i-usb.h
> >>new file mode 100644
> >>index 0000000..50aed92
> >>--- /dev/null
> >>+++ b/include/linux/phy/phy-sun4i-usb.h
> >>@@ -0,0 +1,26 @@
> >>+/*
> >>+ * Copyright (c) 2015 Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> >>+ *
> >>+ * This program is free software; you can redistribute it and/or modify
> >>+ * it under the terms of the GNU General Public License version 2 and
> >>+ * only version 2 as published by the Free Software Foundation.
> >>+ *
> >>+ * This program is distributed in the hope that it will be useful,
> >>+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >>+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> >>+ * GNU General Public License for more details.
> >>+ */
> >>+
> >>+#ifndef PHY_SUN4I_USB_H_
> >>+#define PHY_SUN4I_USB_H_
> >>+
> >>+#include "phy.h"
> >>+
> >>+/**
> >>+ * sun4i_usb_phy_set_squelch_detect() - Enable/disable squelch detect
> >>+ * @phy: reference to a sun4i usb phy
> >>+ * @enabled: wether to enable or disable squelch detect
> >>+ */
> >>+void sun4i_usb_phy_set_squelch_detect(struct phy *phy, bool enabled);
> >
> >breaks build if MUSB=y and SUN41_PHY=m
>
> Ah, good one. So I assume that it is ok to fix this by doing:
>
> --- a/drivers/usb/musb/Kconfig
> +++ b/drivers/usb/musb/Kconfig
> @@ -66,6 +66,7 @@ config USB_MUSB_SUNXI
> tristate "Allwinner (sunxi)"
> depends on ARCH_SUNXI
> depends on NOP_USB_XCEIV
> + depends on PHY_SUN4I_USB
I would prefer not exporting any function from phy to musb. Perhaps
figure out with Kishon how "set_squelch" can be added to PHY fwk ?
> Also I've not heard anything back from you wrt my other musb
> sunxi preparation patches and the actual musb-sunxi patch¸ are
> those all ready for merging?
I'm a little iffy with all the function rewriting again because of a new
set of limitations with a new platform. I'll review them more carefully
maybe today or tomorrow.
cheers
--
balbi
--
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-05-11 15:55 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-29 10:50 [PATCH 0/3] Work around sunxi otg usb phy bug which causes lo-speed devices to not work Hans de Goede
2015-03-29 10:50 ` Hans de Goede
2015-03-29 10:50 ` [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect Hans de Goede
2015-03-29 10:50 ` Hans de Goede
2015-05-08 16:06 ` Felipe Balbi
2015-05-08 16:06 ` Felipe Balbi
2015-05-10 10:02 ` Hans de Goede
2015-05-10 10:02 ` Hans de Goede
2015-05-11 15:55 ` Felipe Balbi [this message]
2015-05-11 15:55 ` Felipe Balbi
2015-05-11 18:13 ` [linux-sunxi] " Hans de Goede
2015-05-11 18:13 ` Hans de Goede
2015-05-13 9:22 ` [linux-sunxi] " Kishon Vijay Abraham I
2015-05-13 9:22 ` Kishon Vijay Abraham I
2015-05-13 9:43 ` [linux-sunxi] " Hans de Goede
2015-05-13 9:43 ` Hans de Goede
2015-05-26 15:38 ` Felipe Balbi
2015-05-26 15:38 ` Felipe Balbi
2015-05-27 12:09 ` Kishon Vijay Abraham I
2015-05-27 12:09 ` Kishon Vijay Abraham I
2015-03-29 10:50 ` [PATCH 2/3] musb: Add pre and post root port reset end callbacks Hans de Goede
2015-03-29 10:50 ` Hans de Goede
2015-03-29 10:50 ` [PATCH 3/3] msub: sunxi: Add pre/post root reset end platform functions Hans de Goede
2015-03-29 10:50 ` Hans de Goede
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=20150511155547.GG19476@saruman.tx.rr.com \
--to=balbi@ti.com \
--cc=linux-arm-kernel@lists.infradead.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.