All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Work around sunxi otg usb phy bug which causes lo-speed devices to not work
@ 2015-03-29 10:50 ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard
  Cc: Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi All,

Here is a patch-set to work around sunxi otg usb phy bug which causes
some lo-speed devices to not work (they get disconnected at there first reset).

This patch set uses a private sunxi phy function, I know that this is not
ideal, but given the rather perculiar nature of this bug / the needed
workaround I believe that a private sunxi phy function is the best solution
here.

This patch-set applies on top of my existing sun4i-usb-phy / musb-sunxi-glue
patches.

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 0/3] Work around sunxi otg usb phy bug which causes lo-speed devices to not work
@ 2015-03-29 10:50 ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: linux-arm-kernel

Hi All,

Here is a patch-set to work around sunxi otg usb phy bug which causes
some lo-speed devices to not work (they get disconnected at there first reset).

This patch set uses a private sunxi phy function, I know that this is not
ideal, but given the rather perculiar nature of this bug / the needed
workaround I believe that a private sunxi phy function is the best solution
here.

This patch-set applies on top of my existing sun4i-usb-phy / musb-sunxi-glue
patches.

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-03-29 10:50 ` Hans de Goede
@ 2015-03-29 10:50     ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard
  Cc: Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Hans de Goede

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);
+
+#endif
-- 
2.3.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-03-29 10:50     ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: linux-arm-kernel

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);
+
+#endif
-- 
2.3.4

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 2/3] musb: Add pre and post root port reset end callbacks
  2015-03-29 10:50 ` Hans de Goede
@ 2015-03-29 10:50     ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard
  Cc: Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Hans de Goede

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.

Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
 drivers/usb/musb/musb_core.h    | 16 ++++++++++++++++
 drivers/usb/musb/musb_virthub.c |  2 ++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index 444b936..19d7b8c 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -163,6 +163,8 @@ struct musb_io;
  * @vbus_status: returns vbus status if possible
  * @set_vbus:	forces vbus status
  * @adjust_channel_params: pre check for standard dma channel_program func
+ * @pre_root_reset_end: called before the root usb port reset flag gets cleared
+ * @post_root_reset_end: called after the root usb port reset flag gets cleared
  */
 struct musb_platform_ops {
 
@@ -205,6 +207,8 @@ struct musb_platform_ops {
 	int	(*adjust_channel_params)(struct dma_channel *channel,
 				u16 packet_sz, u8 *mode,
 				dma_addr_t *dma_addr, u32 *len);
+	void	(*pre_root_reset_end)(struct musb *musb);
+	void	(*post_root_reset_end)(struct musb *musb);
 };
 
 /*
@@ -592,4 +596,16 @@ static inline int musb_platform_exit(struct musb *musb)
 	return musb->ops->exit(musb);
 }
 
+static inline void musb_platform_pre_root_reset_end(struct musb *musb)
+{
+	if (musb->ops->pre_root_reset_end)
+		musb->ops->pre_root_reset_end(musb);
+}
+
+static inline void musb_platform_post_root_reset_end(struct musb *musb)
+{
+	if (musb->ops->post_root_reset_end)
+		musb->ops->post_root_reset_end(musb);
+}
+
 #endif	/* __MUSB_CORE_H__ */
diff --git a/drivers/usb/musb/musb_virthub.c b/drivers/usb/musb/musb_virthub.c
index 3c87fd7..e613f8c 100644
--- a/drivers/usb/musb/musb_virthub.c
+++ b/drivers/usb/musb/musb_virthub.c
@@ -195,8 +195,10 @@ void musb_port_reset(struct musb *musb, bool do_reset)
 				      msecs_to_jiffies(50));
 	} else {
 		dev_dbg(musb->controller, "root port reset stopped\n");
+		musb_platform_pre_root_reset_end(musb);
 		musb_writeb(mbase, MUSB_POWER,
 				power & ~MUSB_POWER_RESET);
+		musb_platform_post_root_reset_end(musb);
 
 		power = musb_readb(mbase, MUSB_POWER);
 		if (power & MUSB_POWER_HSMODE) {
-- 
2.3.4

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 2/3] musb: Add pre and post root port reset end callbacks
@ 2015-03-29 10:50     ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: linux-arm-kernel

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.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/usb/musb/musb_core.h    | 16 ++++++++++++++++
 drivers/usb/musb/musb_virthub.c |  2 ++
 2 files changed, 18 insertions(+)

diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index 444b936..19d7b8c 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -163,6 +163,8 @@ struct musb_io;
  * @vbus_status: returns vbus status if possible
  * @set_vbus:	forces vbus status
  * @adjust_channel_params: pre check for standard dma channel_program func
+ * @pre_root_reset_end: called before the root usb port reset flag gets cleared
+ * @post_root_reset_end: called after the root usb port reset flag gets cleared
  */
 struct musb_platform_ops {
 
@@ -205,6 +207,8 @@ struct musb_platform_ops {
 	int	(*adjust_channel_params)(struct dma_channel *channel,
 				u16 packet_sz, u8 *mode,
 				dma_addr_t *dma_addr, u32 *len);
+	void	(*pre_root_reset_end)(struct musb *musb);
+	void	(*post_root_reset_end)(struct musb *musb);
 };
 
 /*
@@ -592,4 +596,16 @@ static inline int musb_platform_exit(struct musb *musb)
 	return musb->ops->exit(musb);
 }
 
+static inline void musb_platform_pre_root_reset_end(struct musb *musb)
+{
+	if (musb->ops->pre_root_reset_end)
+		musb->ops->pre_root_reset_end(musb);
+}
+
+static inline void musb_platform_post_root_reset_end(struct musb *musb)
+{
+	if (musb->ops->post_root_reset_end)
+		musb->ops->post_root_reset_end(musb);
+}
+
 #endif	/* __MUSB_CORE_H__ */
diff --git a/drivers/usb/musb/musb_virthub.c b/drivers/usb/musb/musb_virthub.c
index 3c87fd7..e613f8c 100644
--- a/drivers/usb/musb/musb_virthub.c
+++ b/drivers/usb/musb/musb_virthub.c
@@ -195,8 +195,10 @@ void musb_port_reset(struct musb *musb, bool do_reset)
 				      msecs_to_jiffies(50));
 	} else {
 		dev_dbg(musb->controller, "root port reset stopped\n");
+		musb_platform_pre_root_reset_end(musb);
 		musb_writeb(mbase, MUSB_POWER,
 				power & ~MUSB_POWER_RESET);
+		musb_platform_post_root_reset_end(musb);
 
 		power = musb_readb(mbase, MUSB_POWER);
 		if (power & MUSB_POWER_HSMODE) {
-- 
2.3.4

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 3/3] msub: sunxi: Add pre/post root reset end platform functions
  2015-03-29 10:50 ` Hans de Goede
@ 2015-03-29 10:50     ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard
  Cc: Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Hans de Goede

Add pre/post root reset end platform functions and make them call
sun4i_usb_phy_set_squelch_detect() to work around the sunxi usb otg phy
workaround.

Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
 drivers/usb/musb/sunxi.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c
index ef91548..774312f 100644
--- a/drivers/usb/musb/sunxi.c
+++ b/drivers/usb/musb/sunxi.c
@@ -24,6 +24,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/phy/phy-sun4i-usb.h>
 #include <linux/platform_device.h>
 #include <linux/soc/sunxi/sunxi_sram.h>
 #include <linux/usb/musb.h>
@@ -147,6 +148,20 @@ static void sunxi_musb_set_vbus(struct musb *musb, int is_on)
 	schedule_work(&glue->work);
 }
 
+void sunxi_musb_pre_root_reset_end(struct musb *musb)
+{
+	struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
+
+	sun4i_usb_phy_set_squelch_detect(glue->phy, false);
+}
+
+void sunxi_musb_post_root_reset_end(struct musb *musb)
+{
+	struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
+
+	sun4i_usb_phy_set_squelch_detect(glue->phy, true);
+}
+
 static irqreturn_t sunxi_musb_interrupt(int irq, void *__hci)
 {
 	struct musb *musb = __hci;
@@ -515,6 +530,8 @@ static const struct musb_platform_ops sunxi_musb_ops = {
 	.readw		= sunxi_musb_readw,
 	.writew		= sunxi_musb_writew,
 	.set_vbus	= sunxi_musb_set_vbus,
+	.pre_root_reset_end = sunxi_musb_pre_root_reset_end,
+	.post_root_reset_end = sunxi_musb_post_root_reset_end,
 };
 
 /* Allwinner OTG supports up to 5 endpoints */
-- 
2.3.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 3/3] msub: sunxi: Add pre/post root reset end platform functions
@ 2015-03-29 10:50     ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-03-29 10:50 UTC (permalink / raw)
  To: linux-arm-kernel

Add pre/post root reset end platform functions and make them call
sun4i_usb_phy_set_squelch_detect() to work around the sunxi usb otg phy
workaround.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/usb/musb/sunxi.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/usb/musb/sunxi.c b/drivers/usb/musb/sunxi.c
index ef91548..774312f 100644
--- a/drivers/usb/musb/sunxi.c
+++ b/drivers/usb/musb/sunxi.c
@@ -24,6 +24,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/phy/phy-sun4i-usb.h>
 #include <linux/platform_device.h>
 #include <linux/soc/sunxi/sunxi_sram.h>
 #include <linux/usb/musb.h>
@@ -147,6 +148,20 @@ static void sunxi_musb_set_vbus(struct musb *musb, int is_on)
 	schedule_work(&glue->work);
 }
 
+void sunxi_musb_pre_root_reset_end(struct musb *musb)
+{
+	struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
+
+	sun4i_usb_phy_set_squelch_detect(glue->phy, false);
+}
+
+void sunxi_musb_post_root_reset_end(struct musb *musb)
+{
+	struct sunxi_glue *glue = dev_get_drvdata(musb->controller->parent);
+
+	sun4i_usb_phy_set_squelch_detect(glue->phy, true);
+}
+
 static irqreturn_t sunxi_musb_interrupt(int irq, void *__hci)
 {
 	struct musb *musb = __hci;
@@ -515,6 +530,8 @@ static const struct musb_platform_ops sunxi_musb_ops = {
 	.readw		= sunxi_musb_readw,
 	.writew		= sunxi_musb_writew,
 	.set_vbus	= sunxi_musb_set_vbus,
+	.pre_root_reset_end = sunxi_musb_pre_root_reset_end,
+	.post_root_reset_end = sunxi_musb_post_root_reset_end,
 };
 
 /* Allwinner OTG supports up to 5 endpoints */
-- 
2.3.4

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-03-29 10:50     ` Hans de Goede
@ 2015-05-08 16:06         ` Felipe Balbi
  -1 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-08 16:06 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard,
	Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

[-- Attachment #1: Type: text/plain, Size: 2995 bytes --]

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

-- 
balbi

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-08 16:06         ` Felipe Balbi
  0 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-08 16:06 UTC (permalink / raw)
  To: linux-arm-kernel

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

-- 
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/20150508/60352e85/attachment.sig>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-08 16:06         ` Felipe Balbi
@ 2015-05-10 10:02             ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-10 10:02 UTC (permalink / raw)
  To: balbi-l0cyMroinI0
  Cc: Kishon Vijay Abraham I, Maxime Ripard, Chen-Yu Tsai,
	Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

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
         select EXTCON
         select GENERIC_PHY
         select SUNXI_SRAM

?

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?

Regards,

Hans

-- 
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.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-10 10:02             ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-10 10:02 UTC (permalink / raw)
  To: linux-arm-kernel

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
         select EXTCON
         select GENERIC_PHY
         select SUNXI_SRAM

?

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?

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-10 10:02             ` Hans de Goede
@ 2015-05-11 15:55                 ` Felipe Balbi
  -1 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-11 15:55 UTC (permalink / raw)
  To: Hans de Goede
  Cc: balbi-l0cyMroinI0, Kishon Vijay Abraham I, Maxime Ripard,
	Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

[-- 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 --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-11 15:55                 ` Felipe Balbi
  0 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-11 15:55 UTC (permalink / raw)
  To: linux-arm-kernel

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>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-11 15:55                 ` Felipe Balbi
@ 2015-05-11 18:13                     ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-11 18:13 UTC (permalink / raw)
  To: balbi-l0cyMroinI0
  Cc: Kishon Vijay Abraham I, Maxime Ripard, Chen-Yu Tsai,
	Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi,

On 11-05-15 17:55, Felipe Balbi wrote:
> 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 ?

Normally one would never want to mess with these phy settings, this
is just needed on sunxi because the otg phy there is quirky, so I
really do believe that having platform specific phy functions is
the most sensible solution here. As for adding the depends on, that
is needed at a functional level anyways because the musb code cannot
work with the phy code. All the platform specific phy functions do
is add a link time dependency to the already present functional
dependency.

>
>> 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 actually have done my best to avoid to touching the core code were possible,
e.g. I'm done the translating for the sunxi registers being at different
addresses at the musb_read* / musb_write* level so as to avoid invasive
surgery in the musb-core for this.

Also note that some of the bits of core code which I do change were using a
very non orthogonal API before my changes, and my changes are actually a
nice cleanup.

Regards,

Hans

-- 
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.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [linux-sunxi] Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-11 18:13                     ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-11 18:13 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On 11-05-15 17:55, Felipe Balbi wrote:
> 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 ?

Normally one would never want to mess with these phy settings, this
is just needed on sunxi because the otg phy there is quirky, so I
really do believe that having platform specific phy functions is
the most sensible solution here. As for adding the depends on, that
is needed at a functional level anyways because the musb code cannot
work with the phy code. All the platform specific phy functions do
is add a link time dependency to the already present functional
dependency.

>
>> 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 actually have done my best to avoid to touching the core code were possible,
e.g. I'm done the translating for the sunxi registers being at different
addresses at the musb_read* / musb_write* level so as to avoid invasive
surgery in the musb-core for this.

Also note that some of the bits of core code which I do change were using a
very non orthogonal API before my changes, and my changes are actually a
nice cleanup.

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-11 18:13                     ` [linux-sunxi] " Hans de Goede
@ 2015-05-13  9:22                         ` Kishon Vijay Abraham I
  -1 siblings, 0 replies; 24+ messages in thread
From: Kishon Vijay Abraham I @ 2015-05-13  9:22 UTC (permalink / raw)
  To: Hans de Goede, balbi-l0cyMroinI0
  Cc: Maxime Ripard, Chen-Yu Tsai, Roman Byshko,
	linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi Felipe,

On Monday 11 May 2015 11:43 PM, Hans de Goede wrote:
> Hi,
>
> On 11-05-15 17:55, Felipe Balbi wrote:
>> 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 ?

We don't want to be adding platform specific hooks in PHY framework. While 
exporting a function from PHY to MUSB is not the best thing, it's still okay 
since it is from musb sunxi glue only no?

Thanks
Kishon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [linux-sunxi] Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-13  9:22                         ` Kishon Vijay Abraham I
  0 siblings, 0 replies; 24+ messages in thread
From: Kishon Vijay Abraham I @ 2015-05-13  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Felipe,

On Monday 11 May 2015 11:43 PM, Hans de Goede wrote:
> Hi,
>
> On 11-05-15 17:55, Felipe Balbi wrote:
>> 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 ?

We don't want to be adding platform specific hooks in PHY framework. While 
exporting a function from PHY to MUSB is not the best thing, it's still okay 
since it is from musb sunxi glue only no?

Thanks
Kishon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-13  9:22                         ` [linux-sunxi] " Kishon Vijay Abraham I
@ 2015-05-13  9:43                             ` Hans de Goede
  -1 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-13  9:43 UTC (permalink / raw)
  To: kishon-l0cyMroinI0, balbi-l0cyMroinI0
  Cc: Maxime Ripard, Chen-Yu Tsai, Roman Byshko,
	linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi,

On 13-05-15 11:22, Kishon Vijay Abraham I wrote:
> Hi Felipe,
>
> On Monday 11 May 2015 11:43 PM, Hans de Goede wrote:
>> Hi,
>>
>> On 11-05-15 17:55, Felipe Balbi wrote:
>>> 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 ?
>
> We don't want to be adding platform specific hooks in PHY framework. While exporting a function from PHY to MUSB is not the best thing, it's still okay since it is from musb sunxi glue only no?

Correct this only gets used by drivers/usb/musb/sunxi.c calling
directly into drivers/phy/phy-sun4i-usb.c

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [linux-sunxi] Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-13  9:43                             ` Hans de Goede
  0 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2015-05-13  9:43 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On 13-05-15 11:22, Kishon Vijay Abraham I wrote:
> Hi Felipe,
>
> On Monday 11 May 2015 11:43 PM, Hans de Goede wrote:
>> Hi,
>>
>> On 11-05-15 17:55, Felipe Balbi wrote:
>>> 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 ?
>
> We don't want to be adding platform specific hooks in PHY framework. While exporting a function from PHY to MUSB is not the best thing, it's still okay since it is from musb sunxi glue only no?

Correct this only gets used by drivers/usb/musb/sunxi.c calling
directly into drivers/phy/phy-sun4i-usb.c

Regards,

Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-03-29 10:50     ` Hans de Goede
@ 2015-05-26 15:38         ` Felipe Balbi
  -1 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-26 15:38 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Felipe Balbi, Kishon Vijay Abraham I, Maxime Ripard,
	Chen-Yu Tsai, Roman Byshko, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

[-- Attachment #1: Type: text/plain, Size: 564 bytes --]

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>

Kishon, do you want to take this patch?

-- 
balbi

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-26 15:38         ` Felipe Balbi
  0 siblings, 0 replies; 24+ messages in thread
From: Felipe Balbi @ 2015-05-26 15:38 UTC (permalink / raw)
  To: linux-arm-kernel

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>

Kishon, do you want to take this patch?

-- 
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/20150526/757cfc83/attachment.sig>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
  2015-05-26 15:38         ` Felipe Balbi
@ 2015-05-27 12:09             ` Kishon Vijay Abraham I
  -1 siblings, 0 replies; 24+ messages in thread
From: Kishon Vijay Abraham I @ 2015-05-27 12:09 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, Hans de Goede
  Cc: Maxime Ripard, Chen-Yu Tsai, Roman Byshko,
	linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Felipe,

On Tuesday 26 May 2015 09:08 PM, Felipe Balbi wrote:
> 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>
>
> Kishon, do you want to take this patch?

This patch should go along with the other patch in the series. So I think it's 
better you take this series along with the musb sunxi patch series.

Acked-by: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>

Thanks
Kishon

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 1/3] phy-sun4i-usb: Add a sunxi specific function for setting squelch-detect
@ 2015-05-27 12:09             ` Kishon Vijay Abraham I
  0 siblings, 0 replies; 24+ messages in thread
From: Kishon Vijay Abraham I @ 2015-05-27 12:09 UTC (permalink / raw)
  To: linux-arm-kernel

Felipe,

On Tuesday 26 May 2015 09:08 PM, Felipe Balbi wrote:
> 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>
>
> Kishon, do you want to take this patch?

This patch should go along with the other patch in the series. So I think it's 
better you take this series along with the musb sunxi patch series.

Acked-by: Kishon Vijay Abraham I <kishon@ti.com>

Thanks
Kishon

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2015-05-27 12:09 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
     [not found] ` <1427626248-6257-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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
     [not found]     ` <1427626248-6257-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-08 16:06       ` Felipe Balbi
2015-05-08 16:06         ` Felipe Balbi
     [not found]         ` <20150508160636.GD16571-HgARHv6XitJaoMGHk7MhZQC/G2K4zDHf@public.gmane.org>
2015-05-10 10:02           ` Hans de Goede
2015-05-10 10:02             ` Hans de Goede
     [not found]             ` <554F2CCE.4090906-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-11 15:55               ` Felipe Balbi
2015-05-11 15:55                 ` Felipe Balbi
     [not found]                 ` <20150511155547.GG19476-HgARHv6XitJaoMGHk7MhZQC/G2K4zDHf@public.gmane.org>
2015-05-11 18:13                   ` Hans de Goede
2015-05-11 18:13                     ` [linux-sunxi] " Hans de Goede
     [not found]                     ` <5550F14F.5050906-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-05-13  9:22                       ` Kishon Vijay Abraham I
2015-05-13  9:22                         ` [linux-sunxi] " Kishon Vijay Abraham I
     [not found]                         ` <555317D5.3050003-l0cyMroinI0@public.gmane.org>
2015-05-13  9:43                           ` Hans de Goede
2015-05-13  9:43                             ` [linux-sunxi] " Hans de Goede
2015-05-26 15:38       ` Felipe Balbi
2015-05-26 15:38         ` Felipe Balbi
     [not found]         ` <20150526153816.GK26599-HgARHv6XitJaoMGHk7MhZQC/G2K4zDHf@public.gmane.org>
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

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.