Skip to contentSkip to conversation

odroid: Update README with USB host information

PATCH Superseded Suriyan Ramasami 3 participants 10 messages Nov 19, 2014 – Nov 20, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 odroid: Update README with USB host information

Add information wrt the USB host side of things for the Odroid-U2/U3 and the Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

 doc/README.odroid | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
doc/README.odroid +48 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
 - boot_fit - if "Image.itb" exists
 - boot_zimg - if "zImage" exists
 - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514 Ethernet
+			|		|
+			|		+-------Host1---------> USB port
+			|		|
+			|		+-------Host2---------> USB port
+			|		|
+			|		+-------Host3---------> USB port
+			|		|
+			|		+-------Host4---------> USB port
+			|
+			+-------------------------------------> USB port
+			|
+			+-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514 Ethernet
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB port
+			|
+			+-----------------------Host2---------> USB port
+			|
+			+-----------------------HOst3---------> USB port (U3)
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the SoC
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with exysno4412*
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code to
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec sheet.
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 2/2 odroid: usbhost - Add missing gpio_request call

The USB host code was missing gpio_request() calls before using the gpio functions, causing errors to be printed out.

---

Changes in v1:
- Added gpio_request() call in board_gpio_init()

 board/samsung/odroid/odroid.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
board/samsung/odroid/odroid.c +11 -2
index f7396ab..a2c008e 100644
@@ -382,6 +382,17 @@ static void board_gpio_init(void)
 	gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
 	gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
 	gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+#ifdef CONFIG_CMD_USB
+	/* USB3503A Reference frequency */
+	gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+	/* USB3503A Connect */
+	gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+	/* USB3503A Reset */
+	gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
 }
 
 static int pmic_init_max77686(void)
@@ -489,10 +500,8 @@ int board_usb_init(int index, enum usb_init_type init)
 
 	p_pmic = pmic_get("MAX77686_PMIC");
 	if (p_pmic && !pmic_probe(p_pmic)) {
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_OFF);
 		max77686_set_buck_voltage(p_pmic, 8, 750000);
 		max77686_set_buck_voltage(p_pmic, 8, 3300000);
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_ON);
 	}
 
 #endif
Signature · 1 line
1.8.3.1
#2 lore raw

PATCH 2/2 odroid: usbhost - Add missing gpio_request call

Hello,

Quoted 37 lines · Suriyan Ramasami

The USB host code was missing gpio_request() calls before using the gpio functions, causing errors to be printed out.

---

Changes in v1:
- Added gpio_request() call in board_gpio_init()

  board/samsung/odroid/odroid.c | 13 +++++++++++--
  1 file changed, 11 insertions(+), 2 deletions(-)
board/samsung/odroid/odroid.c +11 -0
index f7396ab..a2c008e 100644
@@ -382,6 +382,17 @@ static void board_gpio_init(void)
  	gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
  	gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
  	gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+#ifdef CONFIG_CMD_USB
+	/* USB3503A Reference frequency */
+	gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+	/* USB3503A Connect */
+	gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+	/* USB3503A Reset */
+	gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
  }
 
  static int pmic_init_max77686(void)

board/samsung/odroid/odroid.c int board_usb_init(int index, enum usb_init_type init) · line 507

Quoted 10 lines
board/samsung/odroid/odroid.c +0 -2
@@ -489,10 +500,8 @@ int board_usb_init(int index, enum usb_init_type init)
 
  	p_pmic = pmic_get("MAX77686_PMIC");
  	if (p_pmic && !pmic_probe(p_pmic)) {
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_OFF);
  		max77686_set_buck_voltage(p_pmic, 8, 750000);
  		max77686_set_buck_voltage(p_pmic, 8, 3300000);
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_ON);
  	}
 
  #endif

The first commit needs to be changed but for this one:

Best regards,

Signature · 4 lines
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
#3 lore raw

PATCH 2/2 odroid: usbhost - Add missing gpio_request call

In reply to Suriyan Ramasami

Dear Suriyan Ramasami,

Quoted 36 lines · Suriyan Ramasami

The USB host code was missing gpio_request() calls before using the gpio functions, causing errors to be printed out.

---

Changes in v1:
- Added gpio_request() call in board_gpio_init()

 board/samsung/odroid/odroid.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
board/samsung/odroid/odroid.c +11 -0
index f7396ab..a2c008e 100644
@@ -382,6 +382,17 @@ static void board_gpio_init(void)
 	gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
 	gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
 	gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+#ifdef CONFIG_CMD_USB
+	/* USB3503A Reference frequency */
+	gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+	/* USB3503A Connect */
+	gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+	/* USB3503A Reset */
+	gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
 }
 
 static int pmic_init_max77686(void)

board/samsung/odroid/odroid.c int board_usb_init(int index, enum usb_init_type init) · line 495

Quoted 7 lines
board/samsung/odroid/odroid.c +0 -2
@@ -489,10 +500,8 @@ int board_usb_init(int index, enum usb_init_type init)
 
 	p_pmic = pmic_get("MAX77686_PMIC");
 	if (p_pmic && !pmic_probe(p_pmic)) {
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_OFF);
 		max77686_set_buck_voltage(p_pmic, 8, 750000);
 		max77686_set_buck_voltage(p_pmic, 8, 3300000);
-		max77686_set_buck_mode(p_pmic, 8, OPMODE_ON);

why you remove those two lines?
This patch is for adding gpio_request call, and there's no explain for this change.

Thanks,
Minkyu Kang.

#4 lore raw

PATCH 2/2 odroid: usbhost - Add missing gpio_request call

Hello Minkyu Kang,

Quoted 40 lines · Minkyu Kang

Dear Suriyan Ramasami,

Quoted 37 lines · Suriyan Ramasami

The USB host code was missing gpio_request() calls before using the gpio functions, causing errors to be printed out.

---

Changes in v1:
- Added gpio_request() call in board_gpio_init()

 board/samsung/odroid/odroid.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
board/samsung/odroid/odroid.c +11 -0
index f7396ab..a2c008e 100644
@@ -382,6 +382,17 @@ static void board_gpio_init(void)
      gpio_set_pull(EXYNOS4X12_GPIO_X31, S5P_GPIO_PULL_UP);
      gpio_set_drv(EXYNOS4X12_GPIO_X31, S5P_GPIO_DRV_4X);
      gpio_direction_input(EXYNOS4X12_GPIO_X31);
+
+#ifdef CONFIG_CMD_USB
+     /* USB3503A Reference frequency */
+     gpio_request(EXYNOS4X12_GPIO_X30, "USB3503A RefFreq");
+
+     /* USB3503A Connect */
+     gpio_request(EXYNOS4X12_GPIO_X34, "USB3503A Connect");
+
+     /* USB3503A Reset */
+     gpio_request(EXYNOS4X12_GPIO_X35, "USB3503A Reset");
+#endif
 }
 
 static int pmic_init_max77686(void)
@@ -489,10 +500,8 @@ int board_usb_init(int index, enum usb_init_type init)
 
Quoted 10 lines

board/samsung/odroid/odroid.c int board_usb_init(int index, enum usb_init_type init) · line 495

Quoted 6 lines
board/samsung/odroid/odroid.c +0 -2
      p_pmic = pmic_get("MAX77686_PMIC");
      if (p_pmic && !pmic_probe(p_pmic)) {
-             max77686_set_buck_mode(p_pmic, 8, OPMODE_OFF);
              max77686_set_buck_voltage(p_pmic, 8, 750000);
              max77686_set_buck_voltage(p_pmic, 8, 3300000);
-             max77686_set_buck_mode(p_pmic, 8, OPMODE_ON);

why you remove those two lines?
This patch is for adding gpio_request call, and there's no explain for this change.

Sorry about the confusion caused. This topic was discussed in another thread, and I shall add the comments (from Przemyslaw) in the next version as to why the BUCK OFF and ON does not work as expected on the Odroid boards.

Regards
- Suriyan

Quoted 2 lines

Thanks,
Minkyu Kang.

#5 lore raw

PATCH 1/2 odroid: Update README with USB host information

In reply to Suriyan Ramasami

Hello,

Quoted 59 lines · Suriyan Ramasami

Add information wrt the USB host side of things for the Odroid-U2/U3 and the Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

  doc/README.odroid | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
doc/README.odroid +38 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
  - boot_fit - if "Image.itb" exists
  - boot_zimg - if "zImage" exists
  - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514 Ethernet
+			|		|
+			|		+-------Host1---------> USB port
+			|		|
+			|		+-------Host2---------> USB port
+			|		|
+			|		+-------Host3---------> USB port
+			|		|
+			|		+-------Host4---------> USB port
+			|
+			+-------------------------------------> USB port
+			|
+			+-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514 Ethernet
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB port
+			|
+			+-----------------------Host2---------> USB port
+			|
+			+-----------------------HOst3---------> USB port (U3)
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the SoC
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with exysno4412*
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code to
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec sheet.

doc/README.odroid And the boot sequence is: · line 191

Quoted 10 lines
doc/README.odroid +10 -0
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)

Suriyan, you quite misunderstand my intention. You added really useful part of code - now user can read/write data to USB mass storage or boot over the Ethernet. Probably you are using this feature. And this is a usage of the USB for the user.

For the user - it's not important how it works in the hardware - I would like to get some simple instructions, e.g. How to boot Odroid over the Ethernet, or how to write data to USB stick. I believe that users read this documentation when they starting use of Odroid with the mainline U-Boot, and a description of another boot option is welcome here. It should be "How to start with this board", rather than how to develop USB hub driver on it.

Best regards,

Signature · 4 lines
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
#6 lore raw

PATCH 1/2 odroid: Update README with USB host information

Hello Przemyslaw,

Quoted 88 lines · Przemyslaw Marczak

Hello,

Quoted 72 lines · Suriyan Ramasami

Add information wrt the USB host side of things for the Odroid-U2/U3 and the
Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

  doc/README.odroid | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
doc/README.odroid +6 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
  - boot_fit - if "Image.itb" exists
  - boot_zimg - if "zImage" exists
  - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514

Ethernet

doc/README.odroid +16 -0
+                       |               |
+                       |               +-------Host1---------> USB port
+                       |               |
+                       |               +-------Host2---------> USB port
+                       |               |
+                       |               +-------Host3---------> USB port
+                       |               |
+                       |               +-------Host4---------> USB port
+                       |
+                       +-------------------------------------> USB port
+                       |
+                       +-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514

Ethernet

doc/README.odroid +6 -0
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB port
+                       |
+                       +-----------------------Host2---------> USB port
+                       |
+                       +-----------------------HOst3---------> USB port

(U3)

doc/README.odroid +2 -0
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the

SoC

doc/README.odroid +3 -0
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with

exysno4412*

doc/README.odroid +5 -0
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code to
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec

sheet.

doc/README.odroid +2 -0
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so

that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid

doc/README.odroid And the boot sequence is: · line 191

Quoted 7 lines
doc/README.odroid +7 -0
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)

Suriyan, you quite misunderstand my intention. You added really useful part of code - now user can read/write data to USB mass storage or boot over the Ethernet. Probably you are using this feature. And this is a usage of the USB for the user.

Quoted 8 lines

For the user - it's not important how it works in the hardware - I would like to get some simple instructions, e.g. How to boot Odroid over the Ethernet, or how to write data to USB stick. I believe that users read this documentation when they starting use of Odroid with the mainline U-Boot, and a description of another boot option is welcome here.
It should be "How to start with this board", rather than how to develop USB hub driver on it.

Ah! I see. You are right, I totally misunderstood you. I shall get rid of the hardware part of things, and add the sections that you have mentioned, viz:
- How to boot Odroid over Ethernet
- How to boot Odroid over USB storage etc

Thanks
- Suriyan

Quoted 6 lines

Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

#7 lore raw

PATCH 1/2 odroid: Update README with USB host information

Hi,

Quoted 101 lines · Suriyan Ramasami

Hello Przemyslaw,

Quoted 88 lines · Przemyslaw Marczak

Hello,

Quoted 72 lines · Suriyan Ramasami

Add information wrt the USB host side of things for the Odroid-U2/U3 and the
Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

   doc/README.odroid | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
   1 file changed, 48 insertions(+)
doc/README.odroid +6 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
   - boot_fit - if "Image.itb" exists
   - boot_zimg - if "zImage" exists
   - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514

Ethernet

doc/README.odroid +16 -0
+                       |               |
+                       |               +-------Host1---------> USB port
+                       |               |
+                       |               +-------Host2---------> USB port
+                       |               |
+                       |               +-------Host3---------> USB port
+                       |               |
+                       |               +-------Host4---------> USB port
+                       |
+                       +-------------------------------------> USB port
+                       |
+                       +-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514

Ethernet

doc/README.odroid +6 -0
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB port
+                       |
+                       +-----------------------Host2---------> USB port
+                       |
+                       +-----------------------HOst3---------> USB port

(U3)

doc/README.odroid +2 -0
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the

SoC

doc/README.odroid +3 -0
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with

exysno4412*

doc/README.odroid +5 -0
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code to
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec

sheet.

doc/README.odroid +2 -0
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so

that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid

doc/README.odroid And the boot sequence is: · line 191

Quoted 7 lines
doc/README.odroid +7 -0
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)

Suriyan, you quite misunderstand my intention. You added really useful part of code - now user can read/write data to USB mass storage or boot over the Ethernet. Probably you are using this feature. And this is a usage of the USB for the user.

Quoted 8 lines

For the user - it's not important how it works in the hardware - I would like to get some simple instructions, e.g. How to boot Odroid over the Ethernet, or how to write data to USB stick. I believe that users read this documentation when they starting use of Odroid with the mainline U-Boot, and a description of another boot option is welcome here.
It should be "How to start with this board", rather than how to develop USB hub driver on it.

Quoted 5 lines

Ah! I see. You are right, I totally misunderstood you. I shall get rid of the hardware part of things, and add the sections that you have mentioned, viz:
- How to boot Odroid over Ethernet
- How to boot Odroid over USB storage etc

Yes, this will be full enough, but I'm not sure if those both cases will not require additional environment variables, like setting special bootargs?

Quoted 11 lines

Thanks
- Suriyan

Quoted 6 lines

Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

Thank you,

Signature · 4 lines
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com
#8 lore raw

PATCH 1/2 odroid: Update README with USB host information

Hello Przemyslaw,

Quoted 123 lines · Przemyslaw Marczak

Hi,

Quoted 112 lines · Suriyan Ramasami

Hello Przemyslaw,

Quoted 95 lines · Przemyslaw Marczak

Hello,

Quoted 76 lines · Suriyan Ramasami

Add information wrt the USB host side of things for the Odroid-U2/U3 and the
Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

   doc/README.odroid | 48
++++++++++++++++++++++++++++++++++++++++++++++++
   1 file changed, 48 insertions(+)
doc/README.odroid +6 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
   - boot_fit - if "Image.itb" exists
   - boot_zimg - if "zImage" exists
   - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514

Ethernet

doc/README.odroid +16 -0
+                       |               |
+                       |               +-------Host1---------> USB port
+                       |               |
+                       |               +-------Host2---------> USB port
+                       |               |
+                       |               +-------Host3---------> USB port
+                       |               |
+                       |               +-------Host4---------> USB port
+                       |
+                       +-------------------------------------> USB port
+                       |
+                       +-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514

Ethernet

doc/README.odroid +2 -0
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB

port

doc/README.odroid +4 -0
+                       |
+                       +-----------------------Host2---------> USB port
+                       |
+                       +-----------------------HOst3---------> USB port

(U3)

doc/README.odroid +2 -0
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the

SoC

doc/README.odroid +3 -0
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with

exysno4412*

doc/README.odroid +3 -0
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code

to

doc/README.odroid +2 -0
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec

sheet.

doc/README.odroid +2 -0
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so

that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid

doc/README.odroid And the boot sequence is: · line 191

Quoted 7 lines
doc/README.odroid +7 -0
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)

Suriyan, you quite misunderstand my intention. You added really useful part
of code - now user can read/write data to USB mass storage or boot over the
Ethernet. Probably you are using this feature. And this is a usage of the USB for the user.

Quoted 11 lines

For the user - it's not important how it works in the hardware - I would like to get some simple instructions, e.g. How to boot Odroid over the Ethernet, or how to write data to USB stick. I believe that users read this
documentation when they starting use of Odroid with the mainline U-Boot, and
a description of another boot option is welcome here.
It should be "How to start with this board", rather than how to develop USB
hub driver on it.

Quoted 5 lines

Ah! I see. You are right, I totally misunderstood you. I shall get rid of the hardware part of things, and add the sections that you have mentioned, viz:
- How to boot Odroid over Ethernet
- How to boot Odroid over USB storage etc

Quoted 3 lines

Yes, this will be full enough, but I'm not sure if those both cases will not require additional environment variables, like setting special bootargs?

I shall go through the whole setup including bootarg changes if any to accomplish the said method of booting.
For example I could walk through an example of just getting ping to work:

Odroid # usb start
(Re)start USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 3 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found scanning usb for ethernet devices... 1 Ethernet Device(s) found
Odroid # setenv autoload no
Odroid # setenv usbethaddr 02:de:ad:be:ef:ff
Odroid # dhcp
Waiting for Ethernet connection... done.
BOOTP broadcast 1
DHCP client bound to address 192.168.1.10 (507 ms)
Odroid # ping 192.168.1.1
Waiting for Ethernet connection... done.
Using sms0 device
host 192.168.1.1 is alive
Odroid #

And go on from there to get tftp loading the linux kernel etc.

Thanks
- Suriyan

Quoted 20 lines
Quoted 12 lines

Thanks
- Suriyan

Quoted 6 lines

Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

Thank you,

--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

#9 lore raw

PATCH 1/2 odroid: Update README with USB host information

Hello,

Quoted 152 lines · Suriyan Ramasami

Hello Przemyslaw,

Quoted 123 lines · Przemyslaw Marczak

Hi,

Quoted 112 lines · Suriyan Ramasami

Hello Przemyslaw,

Quoted 95 lines · Przemyslaw Marczak

Hello,

Quoted 76 lines · Suriyan Ramasami

Add information wrt the USB host side of things for the Odroid-U2/U3 and the
Odroid-X/X2

---

Changes in v1:
- Add USB host notes for the Odroid

    doc/README.odroid | 48
++++++++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 48 insertions(+)
doc/README.odroid +6 -0
index 528bb95..0eaf3ff 100644
@@ -141,3 +141,51 @@ And the boot sequence is:
    - boot_fit - if "Image.itb" exists
    - boot_zimg - if "zImage" exists
    - boot_uimg - if "uImage" exists
+
+11. USB host support
+====================
+The Odroid-X/X2 have the below schematics wrt USB:
+
+Exynos USB_HOST1 -> USB3503 HUB ----> LAN9514 USB HUB -----> LAN9514

Ethernet

doc/README.odroid +16 -0
+                       |               |
+                       |               +-------Host1---------> USB port
+                       |               |
+                       |               +-------Host2---------> USB port
+                       |               |
+                       |               +-------Host3---------> USB port
+                       |               |
+                       |               +-------Host4---------> USB port
+                       |
+                       +-------------------------------------> USB port
+                       |
+                       +-------------------------------------> USB port
+
+The Odroid-U2/U3 have the below schematics wrt USB:
+
+Exynos HSIC1 -----------------------------------------------> LAN9514

Ethernet

doc/README.odroid +2 -0
+
+Exynos HSIC2 -----> USB3503A HUB ---------------Host1---------> USB

port

doc/README.odroid +4 -0
+                       |
+                       +-----------------------Host2---------> USB port
+                       |
+                       +-----------------------HOst3---------> USB port

(U3)

doc/README.odroid +2 -0
+
+The HSICs are used in the case of the Odroid-Us and the USB Host in the

SoC

doc/README.odroid +3 -0
+is used in the case of the Odroid-Xs.
+
+In drivers/usb/host/ehci-exynos.c, function names starting with

exysno4412*

doc/README.odroid +3 -0
+have been added to initialize the HSICs and the PHYs.
+
+In board/samsung/odroid/odroid.c, function board_usb_init() adds code

to

doc/README.odroid +2 -0
+initialize the USB3503 hub.
+The initializing of the USB3503 hub is as defined in the USB3503A spec

sheet.

doc/README.odroid +2 -0
+Please refer to Figure 4.1 in the Datasheet.
+a) Set the INT_N (X30) low (Odroid-Us) or high (Odroid-Xs). This is so

that the
+correct REFCLK frequency is selected. 24MHz for Odroid Us and 26MHz for Odroid

doc/README.odroid And the boot sequence is: · line 191

Quoted 7 lines
doc/README.odroid +7 -0
+Xs.
+b) Disconnect the HUB (Set HUB_CONNECT (X34) to 0)
+c) Reset the HUB (Set RESET_N (X35) to 0 and then to 1)
+d) HUB waits for REF_CLK (which we have set appropriately)
+e) Timeout waiting for HUB configuration stage
+f) Connect the HUB (Set HUB_CONNECT (X34) to 1)
+g) Power recycle the LAN9730 which is connected to BUCK8 (Odroid Us)

Suriyan, you quite misunderstand my intention. You added really useful part
of code - now user can read/write data to USB mass storage or boot over the
Ethernet. Probably you are using this feature. And this is a usage of the USB for the user.

Quoted 11 lines

For the user - it's not important how it works in the hardware - I would like to get some simple instructions, e.g. How to boot Odroid over the Ethernet, or how to write data to USB stick. I believe that users read this
documentation when they starting use of Odroid with the mainline U-Boot, and
a description of another boot option is welcome here.
It should be "How to start with this board", rather than how to develop USB
hub driver on it.

Quoted 5 lines

Ah! I see. You are right, I totally misunderstood you. I shall get rid of the hardware part of things, and add the sections that you have mentioned, viz:
- How to boot Odroid over Ethernet
- How to boot Odroid over USB storage etc

Quoted 3 lines

Yes, this will be full enough, but I'm not sure if those both cases will not require additional environment variables, like setting special bootargs?

I shall go through the whole setup including bootarg changes if any to accomplish the said method of booting.
For example I could walk through an example of just getting ping to work:

Odroid # usb start
(Re)start USB...
USB0: USB EHCI 1.00
scanning bus 0 for devices... 3 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found scanning usb for ethernet devices... 1 Ethernet Device(s) found
Odroid # setenv autoload no
Odroid # setenv usbethaddr 02:de:ad:be:ef:ff
Odroid # dhcp
Waiting for Ethernet connection... done.
BOOTP broadcast 1
DHCP client bound to address 192.168.1.10 (507 ms)
Odroid # ping 192.168.1.1
Waiting for Ethernet connection... done.
Using sms0 device
host 192.168.1.1 is alive
Odroid #

Quoted 5 lines

And go on from there to get tftp loading the linux kernel etc.

Thanks
- Suriyan

That's great. And if you have a time for it, then you could add required changes to CONFIG_EXTRA_ENV_SETTINGS or if no, then the above example of usage is also helpful.

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines

Thanks
- Suriyan

Quoted 6 lines

Best regards,
--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

Quoted 8 lines
Quoted 7 lines

Thank you,

--
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

Best regards,

Signature · 4 lines
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com