All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 0/2] Add usb ethernet support for Arndale
@ 2014-01-02  9:41 Inderpal Singh
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys Inderpal Singh
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support Inderpal Singh
  0 siblings, 2 replies; 14+ messages in thread
From: Inderpal Singh @ 2014-01-02  9:41 UTC (permalink / raw)
  To: u-boot

Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
controller, connected to HSIC Phy of USB host controller via USB3503 hub.

This patchset adds support for this usb ethernet controllor.

Changes in v2:
	- removed setting preboot environment in patch 2

Inderpal Singh (2):
  usb: ehci: exynos: set/reset hsic phys
  usb: exynos5: arndale: Add network support

 arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++
 board/samsung/arndale/arndale.c         |   13 ++++++++
 drivers/usb/host/ehci-exynos.c          |   49 +++++++++++++++++++++++++++++++
 include/configs/arndale.h               |    4 +++
 4 files changed, 80 insertions(+)

-- 
1.7.9.5

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-02  9:41 [U-Boot] [PATCH v2 0/2] Add usb ethernet support for Arndale Inderpal Singh
@ 2014-01-02  9:41 ` Inderpal Singh
  2014-01-03  0:54   ` Marek Vasut
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support Inderpal Singh
  1 sibling, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-02  9:41 UTC (permalink / raw)
  To: u-boot

From: Inderpal Singh <chander.kashyap@linaro.org>

The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and port2
are for HSIC phys. The usb 2.0 phy is already being setup. This patch
sets up the hsic phys.

Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
---
 arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
 drivers/usb/host/ehci-exynos.c          |   39 +++++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git a/arch/arm/include/asm/arch-exynos/ehci.h b/arch/arm/include/asm/arch-exynos/ehci.h
index d79f25c..d2d70bd 100644
--- a/arch/arm/include/asm/arch-exynos/ehci.h
+++ b/arch/arm/include/asm/arch-exynos/ehci.h
@@ -29,6 +29,20 @@
 #define EHCICTRL_ENAINCR8			(1 << 27)
 #define EHCICTRL_ENAINCR16			(1 << 26)
 
+#define HSIC_CTRL_REFCLKSEL                     (0x2)
+#define HSIC_CTRL_REFCLKSEL_MASK                (0x3)
+#define HSIC_CTRL_REFCLKSEL_SHIFT               (23)
+
+#define HSIC_CTRL_REFCLKDIV_12                  (0x24)
+#define HSIC_CTRL_REFCLKDIV_MASK                (0x7f)
+#define HSIC_CTRL_REFCLKDIV_SHIFT               (16)
+
+#define HSIC_CTRL_SIDDQ                         (0x1 << 6)
+#define HSIC_CTRL_FORCESLEEP                    (0x1 << 5)
+#define HSIC_CTRL_FORCESUSPEND                  (0x1 << 4)
+#define HSIC_CTRL_UTMISWRST                     (0x1 << 2)
+#define HSIC_CTRL_PHYSWRST                      (0x1 << 0)
+
 /* Register map for PHY control */
 struct exynos_usb_phy {
 	unsigned int usbphyctrl0;
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 66b4de0..88e6466 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -88,6 +88,8 @@ static int exynos_usb_parse_dt(const void *blob, struct exynos_ehci *exynos)
 /* Setup the EHCI host controller. */
 static void setup_usb_phy(struct exynos_usb_phy *usb)
 {
+	u32 hsic_ctrl;
+
 	set_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN);
 
 	set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_EN);
@@ -112,6 +114,32 @@ static void setup_usb_phy(struct exynos_usb_phy *usb)
 	clrbits_le32(&usb->usbphyctrl0,
 			HOST_CTRL0_LINKSWRST |
 			HOST_CTRL0_UTMISWRST);
+
+	/* HSIC Phy Setting */
+	hsic_ctrl = (HSIC_CTRL_FORCESUSPEND |
+			HSIC_CTRL_FORCESLEEP |
+			HSIC_CTRL_SIDDQ);
+
+	clrbits_le32(&usb->hsicphyctrl1, hsic_ctrl);
+	clrbits_le32(&usb->hsicphyctrl2, hsic_ctrl);
+
+	hsic_ctrl = (((HSIC_CTRL_REFCLKDIV_12 & HSIC_CTRL_REFCLKDIV_MASK)
+				<< HSIC_CTRL_REFCLKDIV_SHIFT)
+			| ((HSIC_CTRL_REFCLKSEL & HSIC_CTRL_REFCLKSEL_MASK)
+				<< HSIC_CTRL_REFCLKSEL_SHIFT)
+			| HSIC_CTRL_UTMISWRST);
+
+	setbits_le32(&usb->hsicphyctrl1, hsic_ctrl);
+	setbits_le32(&usb->hsicphyctrl2, hsic_ctrl);
+
+	udelay(10);
+
+	clrbits_le32(&usb->hsicphyctrl1, HSIC_CTRL_PHYSWRST |
+					HSIC_CTRL_UTMISWRST);
+
+	clrbits_le32(&usb->hsicphyctrl2, HSIC_CTRL_PHYSWRST |
+					HSIC_CTRL_UTMISWRST);
+
 	udelay(20);
 
 	/* EHCI Ctrl setting */
@@ -125,6 +153,8 @@ static void setup_usb_phy(struct exynos_usb_phy *usb)
 /* Reset the EHCI host controller. */
 static void reset_usb_phy(struct exynos_usb_phy *usb)
 {
+	u32 hsic_ctrl;
+
 	/* HOST_PHY reset */
 	setbits_le32(&usb->usbphyctrl0,
 			HOST_CTRL0_PHYSWRST |
@@ -133,6 +163,15 @@ static void reset_usb_phy(struct exynos_usb_phy *usb)
 			HOST_CTRL0_FORCESUSPEND |
 			HOST_CTRL0_FORCESLEEP);
 
+	/* HSIC Phy reset */
+	hsic_ctrl = (HSIC_CTRL_FORCESUSPEND |
+			HSIC_CTRL_FORCESLEEP |
+			HSIC_CTRL_SIDDQ |
+			HSIC_CTRL_PHYSWRST);
+
+	setbits_le32(&usb->hsicphyctrl1, hsic_ctrl);
+	setbits_le32(&usb->hsicphyctrl2, hsic_ctrl);
+
 	set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
 }
 
-- 
1.7.9.5

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-02  9:41 [U-Boot] [PATCH v2 0/2] Add usb ethernet support for Arndale Inderpal Singh
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys Inderpal Singh
@ 2014-01-02  9:41 ` Inderpal Singh
  2014-01-03  0:56   ` Marek Vasut
  1 sibling, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-02  9:41 UTC (permalink / raw)
  To: u-boot

Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
controller, connected to HSIC Phy of USB host controller via USB3503 hub.

This patch implements a board specific board_usb_init function in ehci driver
to perform reset sequence for USB3503 hub and enables the relevant config
options for network to work.

Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
---
 board/samsung/arndale/arndale.c |   13 +++++++++++++
 drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
 include/configs/arndale.h       |    4 ++++
 3 files changed, 27 insertions(+)

diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c
index 052fecd..deca348 100644
--- a/board/samsung/arndale/arndale.c
+++ b/board/samsung/arndale/arndale.c
@@ -7,10 +7,23 @@
 #include <common.h>
 #include <asm/arch/pinmux.h>
 #include <asm/arch/dwmmc.h>
+#include <asm/arch/gpio.h>
 #include <asm/arch/power.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_USB_EHCI_EXYNOS
+void exynos_board_usb_init(int value)
+{
+	struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
+						samsung_get_base_gpio_part1();
+
+	/* Configure gpios for usb 3503 hub's reset and connect */
+	s5p_gpio_direction_output(&gpio->x3, 5, value);
+	s5p_gpio_direction_output(&gpio->d1, 7, value);
+}
+#endif
+
 int board_init(void)
 {
 	gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 88e6466..4be6a60 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -175,6 +175,12 @@ static void reset_usb_phy(struct exynos_usb_phy *usb)
 	set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
 }
 
+inline void __exynos_board_usb_init(int value)
+{
+}
+void exynos_board_usb_init(int)
+	 __attribute__((weak, alias("__exynos_board_usb_init")));
+
 /*
  * EHCI-initialization
  * Create the appropriate control structures to manage
@@ -201,8 +207,12 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 		gpio_direction_output(ctx->vbus_gpio.gpio, 1);
 #endif
 
+	exynos_board_usb_init(0);
+
 	setup_usb_phy(ctx->usb);
 
+	exynos_board_usb_init(1);
+
 	*hccr = ctx->hcd;
 	*hcor = (struct ehci_hcor *)((uint32_t) *hccr
 				+ HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
diff --git a/include/configs/arndale.h b/include/configs/arndale.h
index b7fb29e..eda0e4f 100644
--- a/include/configs/arndale.h
+++ b/include/configs/arndale.h
@@ -116,6 +116,10 @@
 #define CONFIG_USB_EHCI_EXYNOS
 #define CONFIG_USB_STORAGE
 
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS	3
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+
 /* MMC SPL */
 #define CONFIG_EXYNOS_SPL
 #define CONFIG_SPL
-- 
1.7.9.5

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys Inderpal Singh
@ 2014-01-03  0:54   ` Marek Vasut
  2014-01-03  5:03     ` Inderpal Singh
  0 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2014-01-03  0:54 UTC (permalink / raw)
  To: u-boot

On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
> From: Inderpal Singh <chander.kashyap@linaro.org>
> 
> The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and port2
> are for HSIC phys. The usb 2.0 phy is already being setup. This patch
> sets up the hsic phys.
> 
> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> ---
>  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
>  drivers/usb/host/ehci-exynos.c          |   39
> +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
> 

Is it OK to set all the ports up unconditionally ? I am not sure about exynos of 
course, but is it possible there are some machines which don't use the HSIC 
ports and this would have some kind of adverse effects on those?

Best regards,
Marek Vasut

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-02  9:41 ` [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support Inderpal Singh
@ 2014-01-03  0:56   ` Marek Vasut
  2014-01-03  5:14     ` Inderpal Singh
  0 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2014-01-03  0:56 UTC (permalink / raw)
  To: u-boot

On Thursday, January 02, 2014 at 10:41:59 AM, Inderpal Singh wrote:
> Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
> controller, connected to HSIC Phy of USB host controller via USB3503 hub.
> 
> This patch implements a board specific board_usb_init function in ehci
> driver to perform reset sequence for USB3503 hub and enables the relevant
> config options for network to work.
> 
> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> ---
>  board/samsung/arndale/arndale.c |   13 +++++++++++++
>  drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
>  include/configs/arndale.h       |    4 ++++
>  3 files changed, 27 insertions(+)
> 
> diff --git a/board/samsung/arndale/arndale.c
> b/board/samsung/arndale/arndale.c index 052fecd..deca348 100644
> --- a/board/samsung/arndale/arndale.c
> +++ b/board/samsung/arndale/arndale.c
> @@ -7,10 +7,23 @@
>  #include <common.h>
>  #include <asm/arch/pinmux.h>
>  #include <asm/arch/dwmmc.h>
> +#include <asm/arch/gpio.h>
>  #include <asm/arch/power.h>
> 
>  DECLARE_GLOBAL_DATA_PTR;
> 
> +#ifdef CONFIG_USB_EHCI_EXYNOS
> +void exynos_board_usb_init(int value)
> +{
> +	struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> +						samsung_get_base_gpio_part1();
> +
> +	/* Configure gpios for usb 3503 hub's reset and connect */
> +	s5p_gpio_direction_output(&gpio->x3, 5, value);
> +	s5p_gpio_direction_output(&gpio->d1, 7, value);
> +}
> +#endif
> +
>  int board_init(void)
>  {
>  	gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> diff --git a/drivers/usb/host/ehci-exynos.c
> b/drivers/usb/host/ehci-exynos.c index 88e6466..4be6a60 100644
> --- a/drivers/usb/host/ehci-exynos.c
> +++ b/drivers/usb/host/ehci-exynos.c
> @@ -175,6 +175,12 @@ static void reset_usb_phy(struct exynos_usb_phy *usb)
>  	set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
>  }
> 
> +inline void __exynos_board_usb_init(int value)
> +{
> +}
> +void exynos_board_usb_init(int)
> +	 __attribute__((weak, alias("__exynos_board_usb_init")));
> +

Sorry, this is not happening. Why can you not use the existing board_usb_init() 
and instead have to invent new stuff ?

[..]

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-03  0:54   ` Marek Vasut
@ 2014-01-03  5:03     ` Inderpal Singh
  2014-01-04  7:16       ` Marek Vasut
  0 siblings, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-03  5:03 UTC (permalink / raw)
  To: u-boot

Hi Marek,

Thanks for the review.


On 3 January 2014 06:24, Marek Vasut <marex@denx.de> wrote:

> On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
> > From: Inderpal Singh <chander.kashyap@linaro.org>
> >
> > The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and port2
> > are for HSIC phys. The usb 2.0 phy is already being setup. This patch
> > sets up the hsic phys.
> >
> > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > ---
> >  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
> >  drivers/usb/host/ehci-exynos.c          |   39
> > +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
> >
>
> Is it OK to set all the ports up unconditionally ? I am not sure about
> exynos of
> course, but is it possible there are some machines which don't use the HSIC
> ports and this would have some kind of adverse effects on those?
>
>
I feel it should not cause any side effect as it wont interfere with the
normal USB 2.0 phy port. Also, its being done along the same lines as
kernel driver at drivers/usb/phy/phy-samsung-usb2.c, which also sets up all
ports unconditionally.

Regards,
Inder


> Best regards,
> Marek Vasut
>

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-03  0:56   ` Marek Vasut
@ 2014-01-03  5:14     ` Inderpal Singh
  2014-01-04  7:19       ` Marek Vasut
  0 siblings, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-03  5:14 UTC (permalink / raw)
  To: u-boot

Hi Marek,

Thanks for review.


On 3 January 2014 06:26, Marek Vasut <marex@denx.de> wrote:

> On Thursday, January 02, 2014 at 10:41:59 AM, Inderpal Singh wrote:
> > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet Combo
> > controller, connected to HSIC Phy of USB host controller via USB3503 hub.
> >
> > This patch implements a board specific board_usb_init function in ehci
> > driver to perform reset sequence for USB3503 hub and enables the relevant
> > config options for network to work.
> >
> > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > ---
> >  board/samsung/arndale/arndale.c |   13 +++++++++++++
> >  drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
> >  include/configs/arndale.h       |    4 ++++
> >  3 files changed, 27 insertions(+)
> >
> > diff --git a/board/samsung/arndale/arndale.c
> > b/board/samsung/arndale/arndale.c index 052fecd..deca348 100644
> > --- a/board/samsung/arndale/arndale.c
> > +++ b/board/samsung/arndale/arndale.c
> > @@ -7,10 +7,23 @@
> >  #include <common.h>
> >  #include <asm/arch/pinmux.h>
> >  #include <asm/arch/dwmmc.h>
> > +#include <asm/arch/gpio.h>
> >  #include <asm/arch/power.h>
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > +void exynos_board_usb_init(int value)
> > +{
> > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > +
> samsung_get_base_gpio_part1();
> > +
> > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > +}
> > +#endif
> > +
> >  int board_init(void)
> >  {
> >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > diff --git a/drivers/usb/host/ehci-exynos.c
> > b/drivers/usb/host/ehci-exynos.c index 88e6466..4be6a60 100644
> > --- a/drivers/usb/host/ehci-exynos.c
> > +++ b/drivers/usb/host/ehci-exynos.c
> > @@ -175,6 +175,12 @@ static void reset_usb_phy(struct exynos_usb_phy
> *usb)
> >       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
> >  }
> >
> > +inline void __exynos_board_usb_init(int value)
> > +{
> > +}
> > +void exynos_board_usb_init(int)
> > +      __attribute__((weak, alias("__exynos_board_usb_init")));
> > +
>
> Sorry, this is not happening. Why can you not use the existing
> board_usb_init()
> and instead have to invent new stuff ?
>

I did not use board_usb_init because it has 2 parameters which may not be
used as described in usb.h for my use case, which is to only configure
gpios for reset and connect of usb 3503 hub.

Let me know if you still feel that board_usb_init should be used. In that
case I will have to utilize index parameter in my own way.

Regards,
Inder


>
> [..]
>

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-03  5:03     ` Inderpal Singh
@ 2014-01-04  7:16       ` Marek Vasut
  2014-01-06  6:20         ` Inderpal Singh
  0 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2014-01-04  7:16 UTC (permalink / raw)
  To: u-boot

On Friday, January 03, 2014 at 06:03:47 AM, Inderpal Singh wrote:
> Hi Marek,
> 
> Thanks for the review.
> 
> On 3 January 2014 06:24, Marek Vasut <marex@denx.de> wrote:
> > On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
> > > From: Inderpal Singh <chander.kashyap@linaro.org>
> > > 
> > > The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and
> > > port2 are for HSIC phys. The usb 2.0 phy is already being setup. This
> > > patch sets up the hsic phys.
> > > 
> > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > ---
> > > 
> > >  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
> > >  drivers/usb/host/ehci-exynos.c          |   39
> > > 
> > > +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
> > 
> > Is it OK to set all the ports up unconditionally ? I am not sure about
> > exynos of
> > course, but is it possible there are some machines which don't use the
> > HSIC ports and this would have some kind of adverse effects on those?
> 
> I feel it should not cause any side effect as it wont interfere with the
> normal USB 2.0 phy port. Also, its being done along the same lines as
> kernel driver at drivers/usb/phy/phy-samsung-usb2.c, which also sets up all
> ports unconditionally.

OK, I won't fight this. I would be much more inclined to being able to 
conditionally select which ports get configured. Especially, since you do know 
that information from DT, dont you?

Best regards,
Marek Vasut

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-03  5:14     ` Inderpal Singh
@ 2014-01-04  7:19       ` Marek Vasut
  2014-01-06  6:22         ` Inderpal Singh
  0 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2014-01-04  7:19 UTC (permalink / raw)
  To: u-boot

On Friday, January 03, 2014 at 06:14:38 AM, Inderpal Singh wrote:
> Hi Marek,
> 
> Thanks for review.
> 
> On 3 January 2014 06:26, Marek Vasut <marex@denx.de> wrote:
> > On Thursday, January 02, 2014 at 10:41:59 AM, Inderpal Singh wrote:
> > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > Combo controller, connected to HSIC Phy of USB host controller via
> > > USB3503 hub.
> > > 
> > > This patch implements a board specific board_usb_init function in ehci
> > > driver to perform reset sequence for USB3503 hub and enables the
> > > relevant config options for network to work.
> > > 
> > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > ---
> > > 
> > >  board/samsung/arndale/arndale.c |   13 +++++++++++++
> > >  drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
> > >  include/configs/arndale.h       |    4 ++++
> > >  3 files changed, 27 insertions(+)
> > > 
> > > diff --git a/board/samsung/arndale/arndale.c
> > > b/board/samsung/arndale/arndale.c index 052fecd..deca348 100644
> > > --- a/board/samsung/arndale/arndale.c
> > > +++ b/board/samsung/arndale/arndale.c
> > > @@ -7,10 +7,23 @@
> > > 
> > >  #include <common.h>
> > >  #include <asm/arch/pinmux.h>
> > >  #include <asm/arch/dwmmc.h>
> > > 
> > > +#include <asm/arch/gpio.h>
> > > 
> > >  #include <asm/arch/power.h>
> > >  
> > >  DECLARE_GLOBAL_DATA_PTR;
> > > 
> > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > +void exynos_board_usb_init(int value)
> > > +{
> > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > > +
> > 
> > samsung_get_base_gpio_part1();
> > 
> > > +
> > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > +}
> > > +#endif
> > > +
> > > 
> > >  int board_init(void)
> > >  {
> > >  
> > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > 
> > > diff --git a/drivers/usb/host/ehci-exynos.c
> > > b/drivers/usb/host/ehci-exynos.c index 88e6466..4be6a60 100644
> > > --- a/drivers/usb/host/ehci-exynos.c
> > > +++ b/drivers/usb/host/ehci-exynos.c
> > > @@ -175,6 +175,12 @@ static void reset_usb_phy(struct exynos_usb_phy
> > 
> > *usb)
> > 
> > >       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
> > >  
> > >  }
> > > 
> > > +inline void __exynos_board_usb_init(int value)
> > > +{
> > > +}
> > > +void exynos_board_usb_init(int)
> > > +      __attribute__((weak, alias("__exynos_board_usb_init")));
> > > +
> > 
> > Sorry, this is not happening. Why can you not use the existing
> > board_usb_init()
> > and instead have to invent new stuff ?
> 
> I did not use board_usb_init because it has 2 parameters which may not be
> used as described in usb.h for my use case, which is to only configure
> gpios for reset and connect of usb 3503 hub.
> 
> Let me know if you still feel that board_usb_init should be used. In that
> case I will have to utilize index parameter in my own way.

Shall I read that as "I will abuse API" ? You know that this will not happen ;-)

Why can you not reset the USB HUB in regular board_usb_init() simply by toggling 
the switch's reset gpio as done on the rest of the boards ?

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-04  7:16       ` Marek Vasut
@ 2014-01-06  6:20         ` Inderpal Singh
  2014-01-06 15:45           ` Marek Vasut
  0 siblings, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-06  6:20 UTC (permalink / raw)
  To: u-boot

On 4 January 2014 12:46, Marek Vasut <marex@denx.de> wrote:

> On Friday, January 03, 2014 at 06:03:47 AM, Inderpal Singh wrote:
> > Hi Marek,
> >
> > Thanks for the review.
> >
> > On 3 January 2014 06:24, Marek Vasut <marex@denx.de> wrote:
> > > On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
> > > > From: Inderpal Singh <chander.kashyap@linaro.org>
> > > >
> > > > The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and
> > > > port2 are for HSIC phys. The usb 2.0 phy is already being setup. This
> > > > patch sets up the hsic phys.
> > > >
> > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > ---
> > > >
> > > >  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
> > > >  drivers/usb/host/ehci-exynos.c          |   39
> > > >
> > > > +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
> > >
> > > Is it OK to set all the ports up unconditionally ? I am not sure about
> > > exynos of
> > > course, but is it possible there are some machines which don't use the
> > > HSIC ports and this would have some kind of adverse effects on those?
> >
> > I feel it should not cause any side effect as it wont interfere with the
> > normal USB 2.0 phy port. Also, its being done along the same lines as
> > kernel driver at drivers/usb/phy/phy-samsung-usb2.c, which also sets up
> all
> > ports unconditionally.
>
> OK, I won't fight this. I would be much more inclined to being able to
> conditionally select which ports get configured. Especially, since you do
> know
> that information from DT, dont you?
>

Ok, Thanks Marek.
As of now DT is not providing port information.

Regards,
Inder


> Best regards,
> Marek Vasut
>

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-04  7:19       ` Marek Vasut
@ 2014-01-06  6:22         ` Inderpal Singh
  2014-01-06 15:46           ` Marek Vasut
  0 siblings, 1 reply; 14+ messages in thread
From: Inderpal Singh @ 2014-01-06  6:22 UTC (permalink / raw)
  To: u-boot

On 4 January 2014 12:49, Marek Vasut <marex@denx.de> wrote:

> On Friday, January 03, 2014 at 06:14:38 AM, Inderpal Singh wrote:
> > Hi Marek,
> >
> > Thanks for review.
> >
> > On 3 January 2014 06:26, Marek Vasut <marex@denx.de> wrote:
> > > On Thursday, January 02, 2014 at 10:41:59 AM, Inderpal Singh wrote:
> > > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > > Combo controller, connected to HSIC Phy of USB host controller via
> > > > USB3503 hub.
> > > >
> > > > This patch implements a board specific board_usb_init function in
> ehci
> > > > driver to perform reset sequence for USB3503 hub and enables the
> > > > relevant config options for network to work.
> > > >
> > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > > ---
> > > >
> > > >  board/samsung/arndale/arndale.c |   13 +++++++++++++
> > > >  drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
> > > >  include/configs/arndale.h       |    4 ++++
> > > >  3 files changed, 27 insertions(+)
> > > >
> > > > diff --git a/board/samsung/arndale/arndale.c
> > > > b/board/samsung/arndale/arndale.c index 052fecd..deca348 100644
> > > > --- a/board/samsung/arndale/arndale.c
> > > > +++ b/board/samsung/arndale/arndale.c
> > > > @@ -7,10 +7,23 @@
> > > >
> > > >  #include <common.h>
> > > >  #include <asm/arch/pinmux.h>
> > > >  #include <asm/arch/dwmmc.h>
> > > >
> > > > +#include <asm/arch/gpio.h>
> > > >
> > > >  #include <asm/arch/power.h>
> > > >
> > > >  DECLARE_GLOBAL_DATA_PTR;
> > > >
> > > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > > +void exynos_board_usb_init(int value)
> > > > +{
> > > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1 *)
> > > > +
> > >
> > > samsung_get_base_gpio_part1();
> > >
> > > > +
> > > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > > +}
> > > > +#endif
> > > > +
> > > >
> > > >  int board_init(void)
> > > >  {
> > > >
> > > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > >
> > > > diff --git a/drivers/usb/host/ehci-exynos.c
> > > > b/drivers/usb/host/ehci-exynos.c index 88e6466..4be6a60 100644
> > > > --- a/drivers/usb/host/ehci-exynos.c
> > > > +++ b/drivers/usb/host/ehci-exynos.c
> > > > @@ -175,6 +175,12 @@ static void reset_usb_phy(struct exynos_usb_phy
> > >
> > > *usb)
> > >
> > > >       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
> > > >
> > > >  }
> > > >
> > > > +inline void __exynos_board_usb_init(int value)
> > > > +{
> > > > +}
> > > > +void exynos_board_usb_init(int)
> > > > +      __attribute__((weak, alias("__exynos_board_usb_init")));
> > > > +
> > >
> > > Sorry, this is not happening. Why can you not use the existing
> > > board_usb_init()
> > > and instead have to invent new stuff ?
> >
> > I did not use board_usb_init because it has 2 parameters which may not be
> > used as described in usb.h for my use case, which is to only configure
> > gpios for reset and connect of usb 3503 hub.
> >
> > Let me know if you still feel that board_usb_init should be used. In that
> > case I will have to utilize index parameter in my own way.
>
> Shall I read that as "I will abuse API" ? You know that this will not
> happen ;-)
>

Yes, thats an abuse and have not done that yet :-)


>
> Why can you not reset the USB HUB in regular board_usb_init() simply by
> toggling
> the switch's reset gpio as done on the rest of the boards ?
>

Ok, let me try this. If it works I will send the updated patch.

Regards,
Inder

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-06  6:20         ` Inderpal Singh
@ 2014-01-06 15:45           ` Marek Vasut
  2014-01-07  5:19             ` Minkyu Kang
  0 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2014-01-06 15:45 UTC (permalink / raw)
  To: u-boot

On Monday, January 06, 2014 at 07:20:20 AM, Inderpal Singh wrote:
> On 4 January 2014 12:46, Marek Vasut <marex@denx.de> wrote:
> > On Friday, January 03, 2014 at 06:03:47 AM, Inderpal Singh wrote:
> > > Hi Marek,
> > > 
> > > Thanks for the review.
> > > 
> > > On 3 January 2014 06:24, Marek Vasut <marex@denx.de> wrote:
> > > > On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
> > > > > From: Inderpal Singh <chander.kashyap@linaro.org>
> > > > > 
> > > > > The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and
> > > > > port2 are for HSIC phys. The usb 2.0 phy is already being setup.
> > > > > This patch sets up the hsic phys.
> > > > > 
> > > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > > ---
> > > > > 
> > > > >  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
> > > > >  drivers/usb/host/ehci-exynos.c          |   39
> > > > > 
> > > > > +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
> > > > 
> > > > Is it OK to set all the ports up unconditionally ? I am not sure
> > > > about exynos of
> > > > course, but is it possible there are some machines which don't use
> > > > the HSIC ports and this would have some kind of adverse effects on
> > > > those?
> > > 
> > > I feel it should not cause any side effect as it wont interfere with
> > > the normal USB 2.0 phy port. Also, its being done along the same lines
> > > as kernel driver at drivers/usb/phy/phy-samsung-usb2.c, which also
> > > sets up
> > 
> > all
> > 
> > > ports unconditionally.
> > 
> > OK, I won't fight this. I would be much more inclined to being able to
> > conditionally select which ports get configured. Especially, since you do
> > know
> > that information from DT, dont you?
> 
> Ok, Thanks Marek.
> As of now DT is not providing port information.

Bah, I'd expect -- especially in case of exynos, which is targetting the mobile 
segment -- to focus on power consumption very much. Anyway, like I said, I won't 
fight this. Minkyu, what's your take on this one please?

Best regards,
Marek Vasut

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

* [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support
  2014-01-06  6:22         ` Inderpal Singh
@ 2014-01-06 15:46           ` Marek Vasut
  0 siblings, 0 replies; 14+ messages in thread
From: Marek Vasut @ 2014-01-06 15:46 UTC (permalink / raw)
  To: u-boot

On Monday, January 06, 2014 at 07:22:11 AM, Inderpal Singh wrote:
> On 4 January 2014 12:49, Marek Vasut <marex@denx.de> wrote:
> > On Friday, January 03, 2014 at 06:14:38 AM, Inderpal Singh wrote:
> > > Hi Marek,
> > > 
> > > Thanks for review.
> > > 
> > > On 3 January 2014 06:26, Marek Vasut <marex@denx.de> wrote:
> > > > On Thursday, January 02, 2014 at 10:41:59 AM, Inderpal Singh wrote:
> > > > > Arndale board has AX88760, which is USB 2.0 Hub & USB 2.0 Ethernet
> > > > > Combo controller, connected to HSIC Phy of USB host controller via
> > > > > USB3503 hub.
> > > > > 
> > > > > This patch implements a board specific board_usb_init function in
> > 
> > ehci
> > 
> > > > > driver to perform reset sequence for USB3503 hub and enables the
> > > > > relevant config options for network to work.
> > > > > 
> > > > > Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
> > > > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
> > > > > ---
> > > > > 
> > > > >  board/samsung/arndale/arndale.c |   13 +++++++++++++
> > > > >  drivers/usb/host/ehci-exynos.c  |   10 ++++++++++
> > > > >  include/configs/arndale.h       |    4 ++++
> > > > >  3 files changed, 27 insertions(+)
> > > > > 
> > > > > diff --git a/board/samsung/arndale/arndale.c
> > > > > b/board/samsung/arndale/arndale.c index 052fecd..deca348 100644
> > > > > --- a/board/samsung/arndale/arndale.c
> > > > > +++ b/board/samsung/arndale/arndale.c
> > > > > @@ -7,10 +7,23 @@
> > > > > 
> > > > >  #include <common.h>
> > > > >  #include <asm/arch/pinmux.h>
> > > > >  #include <asm/arch/dwmmc.h>
> > > > > 
> > > > > +#include <asm/arch/gpio.h>
> > > > > 
> > > > >  #include <asm/arch/power.h>
> > > > >  
> > > > >  DECLARE_GLOBAL_DATA_PTR;
> > > > > 
> > > > > +#ifdef CONFIG_USB_EHCI_EXYNOS
> > > > > +void exynos_board_usb_init(int value)
> > > > > +{
> > > > > +     struct exynos5_gpio_part1 *gpio = (struct exynos5_gpio_part1
> > > > > *) +
> > > > 
> > > > samsung_get_base_gpio_part1();
> > > > 
> > > > > +
> > > > > +     /* Configure gpios for usb 3503 hub's reset and connect */
> > > > > +     s5p_gpio_direction_output(&gpio->x3, 5, value);
> > > > > +     s5p_gpio_direction_output(&gpio->d1, 7, value);
> > > > > +}
> > > > > +#endif
> > > > > +
> > > > > 
> > > > >  int board_init(void)
> > > > >  {
> > > > >  
> > > > >       gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
> > > > > 
> > > > > diff --git a/drivers/usb/host/ehci-exynos.c
> > > > > b/drivers/usb/host/ehci-exynos.c index 88e6466..4be6a60 100644
> > > > > --- a/drivers/usb/host/ehci-exynos.c
> > > > > +++ b/drivers/usb/host/ehci-exynos.c
> > > > > @@ -175,6 +175,12 @@ static void reset_usb_phy(struct
> > > > > exynos_usb_phy
> > > > 
> > > > *usb)
> > > > 
> > > > >       set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
> > > > >  
> > > > >  }
> > > > > 
> > > > > +inline void __exynos_board_usb_init(int value)
> > > > > +{
> > > > > +}
> > > > > +void exynos_board_usb_init(int)
> > > > > +      __attribute__((weak, alias("__exynos_board_usb_init")));
> > > > > +
> > > > 
> > > > Sorry, this is not happening. Why can you not use the existing
> > > > board_usb_init()
> > > > and instead have to invent new stuff ?
> > > 
> > > I did not use board_usb_init because it has 2 parameters which may not
> > > be used as described in usb.h for my use case, which is to only
> > > configure gpios for reset and connect of usb 3503 hub.
> > > 
> > > Let me know if you still feel that board_usb_init should be used. In
> > > that case I will have to utilize index parameter in my own way.
> > 
> > Shall I read that as "I will abuse API" ? You know that this will not
> > happen ;-)
> 
> Yes, thats an abuse and have not done that yet :-)
> 
> > Why can you not reset the USB HUB in regular board_usb_init() simply by
> > toggling
> > the switch's reset gpio as done on the rest of the boards ?
> 
> Ok, let me try this. If it works I will send the updated patch.

Thank you!

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

* [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys
  2014-01-06 15:45           ` Marek Vasut
@ 2014-01-07  5:19             ` Minkyu Kang
  0 siblings, 0 replies; 14+ messages in thread
From: Minkyu Kang @ 2014-01-07  5:19 UTC (permalink / raw)
  To: u-boot

On 07/01/14 00:45, Marek Vasut wrote:
> On Monday, January 06, 2014 at 07:20:20 AM, Inderpal Singh wrote:
>> On 4 January 2014 12:46, Marek Vasut <marex@denx.de> wrote:
>>> On Friday, January 03, 2014 at 06:03:47 AM, Inderpal Singh wrote:
>>>> Hi Marek,
>>>>
>>>> Thanks for the review.
>>>>
>>>> On 3 January 2014 06:24, Marek Vasut <marex@denx.de> wrote:
>>>>> On Thursday, January 02, 2014 at 10:41:58 AM, Inderpal Singh wrote:
>>>>>> From: Inderpal Singh <chander.kashyap@linaro.org>
>>>>>>
>>>>>> The controller has 3 ports. The port0 is for USB 2.0 Phy, port1 and
>>>>>> port2 are for HSIC phys. The usb 2.0 phy is already being setup.
>>>>>> This patch sets up the hsic phys.
>>>>>>
>>>>>> Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
>>>>>> ---
>>>>>>
>>>>>>  arch/arm/include/asm/arch-exynos/ehci.h |   14 +++++++++++
>>>>>>  drivers/usb/host/ehci-exynos.c          |   39
>>>>>>
>>>>>> +++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+)
>>>>>
>>>>> Is it OK to set all the ports up unconditionally ? I am not sure
>>>>> about exynos of
>>>>> course, but is it possible there are some machines which don't use
>>>>> the HSIC ports and this would have some kind of adverse effects on
>>>>> those?
>>>>
>>>> I feel it should not cause any side effect as it wont interfere with
>>>> the normal USB 2.0 phy port. Also, its being done along the same lines
>>>> as kernel driver at drivers/usb/phy/phy-samsung-usb2.c, which also
>>>> sets up
>>>
>>> all
>>>
>>>> ports unconditionally.
>>>
>>> OK, I won't fight this. I would be much more inclined to being able to
>>> conditionally select which ports get configured. Especially, since you do
>>> know
>>> that information from DT, dont you?
>>
>> Ok, Thanks Marek.
>> As of now DT is not providing port information.
> 
> Bah, I'd expect -- especially in case of exynos, which is targetting the mobile 
> segment -- to focus on power consumption very much. Anyway, like I said, I won't 
> fight this. Minkyu, what's your take on this one please?

I agree with Marek.

Thanks,
Minkyu Kang.

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

end of thread, other threads:[~2014-01-07  5:19 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-02  9:41 [U-Boot] [PATCH v2 0/2] Add usb ethernet support for Arndale Inderpal Singh
2014-01-02  9:41 ` [U-Boot] [PATCH v2 1/2] usb: ehci: exynos: set/reset hsic phys Inderpal Singh
2014-01-03  0:54   ` Marek Vasut
2014-01-03  5:03     ` Inderpal Singh
2014-01-04  7:16       ` Marek Vasut
2014-01-06  6:20         ` Inderpal Singh
2014-01-06 15:45           ` Marek Vasut
2014-01-07  5:19             ` Minkyu Kang
2014-01-02  9:41 ` [U-Boot] [PATCH v2 2/2] usb: exynos5: arndale: Add network support Inderpal Singh
2014-01-03  0:56   ` Marek Vasut
2014-01-03  5:14     ` Inderpal Singh
2014-01-04  7:19       ` Marek Vasut
2014-01-06  6:22         ` Inderpal Singh
2014-01-06 15:46           ` Marek Vasut

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.