Skip to contentSkip to conversation

toradex: imx6: Move g_dnl_bind_fixup() into common SPL code

RFC In review Fabio Estevam 3 participants 4 messages Sep 3, 2017 – Sep 5, 2017

Subsystems (4)
lore
Share & tools
lore

Fabio Estevam

author reviewer
#0 lore raw

RFC 1/1 toradex: imx6: Move g_dnl_bind_fixup() into common SPL code

From: Fabio Estevam <[email protected]>

Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.

---
Stefan,

I don't have access to Toradex board to test it, hence marking it as RFC.

I have tested it with imx6q-sabresd and it works fine on this board.

 arch/arm/mach-imx/spl.c                   | 10 ++++++++++
 board/toradex/apalis_imx6/apalis_imx6.c   | 13 -------------
 board/toradex/colibri_imx6/colibri_imx6.c | 13 -------------
 board/toradex/common/tdx-common.c         | 13 -------------
 4 files changed, 10 insertions(+), 39 deletions(-)
arch/arm/mach-imx/spl.c +10 -0
index 8e8e2f7..e350bc9 100644
@@ -14,6 +14,7 @@
 #include <asm/spl.h>
 #include <spl.h>
 #include <asm/mach-imx/hab.h>
+#include <g_dnl.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -86,6 +87,15 @@ u32 spl_boot_device(void)
 	}
 	return BOOT_DEVICE_NONE;
 }
+
+#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
+int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
+{
+	put_unaligned(CONFIG_G_DNL_PRODUCT_NUM + 0xfff, &dev->idProduct);
+
+	return 0;
+}
+#endif
 #endif
 
 #if defined(CONFIG_SPL_MMC_SUPPORT)
board/toradex/apalis_imx6/apalis_imx6.c +0 -13
index ebc6c12..628a61d 100644
@@ -29,7 +29,6 @@
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
 #include <fsl_esdhc.h>
-#include <g_dnl.h>
 #include <i2c.h>
 #include <imx_thermal.h>
 #include <linux/errno.h>
@@ -1224,18 +1223,6 @@ void reset_cpu(ulong addr)
 {
 }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
 #endif
 
 static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/colibri_imx6/colibri_imx6.c +0 -13
index 669d912..756e3f3 100644
@@ -28,7 +28,6 @@
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
 #include <fsl_esdhc.h>
-#include <g_dnl.h>
 #include <i2c.h>
 #include <imx_thermal.h>
 #include <linux/errno.h>
@@ -1108,18 +1107,6 @@ void reset_cpu(ulong addr)
 {
 }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
 #endif
 
 static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/common/tdx-common.c +0 -13
index b4e4727..a7efeb8 100644
@@ -5,7 +5,6 @@
  */
 
 #include <common.h>
-#include <g_dnl.h>
 #include <libfdt.h>
 
 #include "tdx-cfg-block.h"
@@ -109,18 +108,6 @@ int show_board_info(void)
 	return 0;
 }
 
-#ifdef CONFIG_USB_GADGET_DOWNLOAD
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + tdx_hw_tag.prodid;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
 #if defined(CONFIG_OF_LIBFDT)
 int ft_common_board_setup(void *blob, bd_t *bd)
 {
Signature · 1 line
2.7.4
Reviewed-by on v1 1/1
#1 lore raw
Quoted 5 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.

Quoted 137 lines

---
Stefan,

I don't have access to Toradex board to test it, hence marking it as RFC.

I have tested it with imx6q-sabresd and it works fine on this board.

  arch/arm/mach-imx/spl.c                   | 10 ++++++++++
  board/toradex/apalis_imx6/apalis_imx6.c   | 13 -------------
  board/toradex/colibri_imx6/colibri_imx6.c | 13 -------------
  board/toradex/common/tdx-common.c         | 13 -------------
  4 files changed, 10 insertions(+), 39 deletions(-)
arch/arm/mach-imx/spl.c +10 -0
index 8e8e2f7..e350bc9 100644
@@ -14,6 +14,7 @@
  #include <asm/spl.h>
  #include <spl.h>
  #include <asm/mach-imx/hab.h>
+#include <g_dnl.h>
 
  DECLARE_GLOBAL_DATA_PTR;
 
@@ -86,6 +87,15 @@ u32 spl_boot_device(void)
  	}
  	return BOOT_DEVICE_NONE;
  }
+
+#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
+int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
+{
+	put_unaligned(CONFIG_G_DNL_PRODUCT_NUM + 0xfff, &dev->idProduct);
+
+	return 0;
+}
+#endif
  #endif
 
  #if defined(CONFIG_SPL_MMC_SUPPORT)
board/toradex/apalis_imx6/apalis_imx6.c +0 -13
index ebc6c12..628a61d 100644
@@ -29,7 +29,6 @@
  #include <dm/platform_data/serial_mxc.h>
  #include <dm/platdata.h>
  #include <fsl_esdhc.h>
-#include <g_dnl.h>
  #include <i2c.h>
  #include <imx_thermal.h>
  #include <linux/errno.h>
@@ -1224,18 +1223,6 @@ void reset_cpu(ulong addr)
  {
  }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
  #endif
 
  static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/colibri_imx6/colibri_imx6.c +0 -13
index 669d912..756e3f3 100644
@@ -28,7 +28,6 @@
  #include <dm/platform_data/serial_mxc.h>
  #include <dm/platdata.h>
  #include <fsl_esdhc.h>
-#include <g_dnl.h>
  #include <i2c.h>
  #include <imx_thermal.h>
  #include <linux/errno.h>
@@ -1108,18 +1107,6 @@ void reset_cpu(ulong addr)
  {
  }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
  #endif
 
  static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/common/tdx-common.c +0 -13
index b4e4727..a7efeb8 100644
@@ -5,7 +5,6 @@
   */
 
  #include <common.h>
-#include <g_dnl.h>
  #include <libfdt.h>
 
  #include "tdx-cfg-block.h"
@@ -109,18 +108,6 @@ int show_board_info(void)
  	return 0;
  }
 
-#ifdef CONFIG_USB_GADGET_DOWNLOAD
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + tdx_hw_tag.prodid;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
  #if defined(CONFIG_OF_LIBFDT)
  int ft_common_board_setup(void *blob, bd_t *bd)
  {
Signature · 9 lines
Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
#2 lore raw
In reply to Fabio Estevam
Quoted 33 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.

---
Stefan,

I don't have access to Toradex board to test it, hence marking it as RFC.

I have tested it with imx6q-sabresd and it works fine on this board.

 arch/arm/mach-imx/spl.c                   | 10 ++++++++++
 board/toradex/apalis_imx6/apalis_imx6.c   | 13 -------------
 board/toradex/colibri_imx6/colibri_imx6.c | 13 -------------
 board/toradex/common/tdx-common.c         | 13 -------------
 4 files changed, 10 insertions(+), 39 deletions(-)
arch/arm/mach-imx/spl.c +1 -0
index 8e8e2f7..e350bc9 100644
@@ -14,6 +14,7 @@
 #include <asm/spl.h>
 #include <spl.h>
 #include <asm/mach-imx/hab.h>
+#include <g_dnl.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 

arch/arm/mach-imx/spl.c u32 spl_boot_device(void) · line 94

Quoted 8 lines
arch/arm/mach-imx/spl.c +5 -0
@@ -86,6 +87,15 @@ u32 spl_boot_device(void)
 	}
 	return BOOT_DEVICE_NONE;
 }
+
+#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
+int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
+{
+	put_unaligned(CONFIG_G_DNL_PRODUCT_NUM + 0xfff, &dev->idProduct);

Note that 0xfff was a rather randomly picked offset, not sure if we want that in common code.

Quoted 86 lines
arch/arm/mach-imx/spl.c +4 -0
+
+	return 0;
+}
+#endif
 #endif
 
 #if defined(CONFIG_SPL_MMC_SUPPORT)
board/toradex/apalis_imx6/apalis_imx6.c +0 -13
index ebc6c12..628a61d 100644
@@ -29,7 +29,6 @@
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
 #include <fsl_esdhc.h>
-#include <g_dnl.h>
 #include <i2c.h>
 #include <imx_thermal.h>
 #include <linux/errno.h>
@@ -1224,18 +1223,6 @@ void reset_cpu(ulong addr)
 {
 }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
 #endif
 
 static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/colibri_imx6/colibri_imx6.c +0 -13
index 669d912..756e3f3 100644
@@ -28,7 +28,6 @@
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
 #include <fsl_esdhc.h>
-#include <g_dnl.h>
 #include <i2c.h>
 #include <imx_thermal.h>
 #include <linux/errno.h>
@@ -1108,18 +1107,6 @@ void reset_cpu(ulong addr)
 {
 }
 
-#ifdef CONFIG_SPL_USB_GADGET_SUPPORT
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + 0xfff;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif
-
 #endif
 
 static struct mxc_serial_platdata mxc_serial_plat = {
board/toradex/common/tdx-common.c +0 -2
index b4e4727..a7efeb8 100644
@@ -5,7 +5,6 @@
  */
 
 #include <common.h>
-#include <g_dnl.h>
 #include <libfdt.h>
 
 #include "tdx-cfg-block.h"
@@ -109,18 +108,6 @@ int show_board_info(void)
 	return 0;
 }
 
-#ifdef CONFIG_USB_GADGET_DOWNLOAD

board/toradex/common/tdx-common.c int show_board_info(void) · line 122

Quoted 10 lines
board/toradex/common/tdx-common.c +0 -10
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-	unsigned short usb_pid;
-
-	usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + tdx_hw_tag.prodid;
-	put_unaligned(usb_pid, &dev->idProduct);
-
-	return 0;
-}
-#endif

Nack to this part, this is U-Boot only (not used in SPL) and reads the product ID from eMMC to generate the officially assigned Toradex USB Product ID.

--
Stefan

Quoted 4 lines
board/toradex/common/tdx-common.c +0 -1
-
 #if defined(CONFIG_OF_LIBFDT)
 int ft_common_board_setup(void *blob, bd_t *bd)
 {
author reviewer
#3 lore raw
Quoted 1 line · Stefan Agner

Note that 0xfff was a rather randomly picked offset, not sure if we want that in common code.

Yes, I noticed that. I am inclined to go with 0xfff and then later we can even introduce a CONFIG option for the offset if needed.

Quoted 5 lines
Quoted 5 lines
board/toradex/common/tdx-common.c +0 -5
-#ifdef CONFIG_USB_GADGET_DOWNLOAD
-int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
-{
-     unsigned short usb_pid;
-
Quoted 8 lines

board/toradex/common/tdx-common.c int show_board_info(void) · line 122

Quoted 6 lines
board/toradex/common/tdx-common.c +0 -6
-     usb_pid = TORADEX_USB_PRODUCT_NUM_OFFSET + tdx_hw_tag.prodid;
-     put_unaligned(usb_pid, &dev->idProduct);
-
-     return 0;
-}
-#endif

Nack to this part, this is U-Boot only (not used in SPL) and reads the product ID from eMMC to generate the officially assigned Toradex USB Product ID.

Ok, will prepare another version that keeps the non-SPL code then.

Thanks