[U-Boot] [RFC] toradex: imx6: Move g_dnl_bind_fixup() into common SPL code

From: Fabio Estevam fabio.estevam@nxp.com
Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com --- 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(-)
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index 8e8e2f7..e350bc9 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -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) diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c index ebc6c12..628a61d 100644 --- a/board/toradex/apalis_imx6/apalis_imx6.c +++ b/board/toradex/apalis_imx6/apalis_imx6.c @@ -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 = { diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c index 669d912..756e3f3 100644 --- a/board/toradex/colibri_imx6/colibri_imx6.c +++ b/board/toradex/colibri_imx6/colibri_imx6.c @@ -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 = { diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index b4e4727..a7efeb8 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -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) {

On 09/03/2017 04:56 PM, Fabio Estevam wrote:
From: Fabio Estevam fabio.estevam@nxp.com
Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.
Reviewed-by: Łukasz Majewski lukma@denx.de
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
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(-)
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index 8e8e2f7..e350bc9 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -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) diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c index ebc6c12..628a61d 100644 --- a/board/toradex/apalis_imx6/apalis_imx6.c +++ b/board/toradex/apalis_imx6/apalis_imx6.c @@ -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 = {
diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c index 669d912..756e3f3 100644 --- a/board/toradex/colibri_imx6/colibri_imx6.c +++ b/board/toradex/colibri_imx6/colibri_imx6.c @@ -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 = {
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index b4e4727..a7efeb8 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -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) {

On 03.09.2017 07:56, Fabio Estevam wrote:
From: Fabio Estevam fabio.estevam@nxp.com
Instead of having every board file to add its own g_dnl_bind_fixup() implementation, move it to the common imx6 SPL code.
Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
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(-)
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c index 8e8e2f7..e350bc9 100644 --- a/arch/arm/mach-imx/spl.c +++ b/arch/arm/mach-imx/spl.c @@ -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);
Note that 0xfff was a rather randomly picked offset, not sure if we want that in common code.
- return 0;
+} +#endif #endif
#if defined(CONFIG_SPL_MMC_SUPPORT) diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c index ebc6c12..628a61d 100644 --- a/board/toradex/apalis_imx6/apalis_imx6.c +++ b/board/toradex/apalis_imx6/apalis_imx6.c @@ -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 = { diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c index 669d912..756e3f3 100644 --- a/board/toradex/colibri_imx6/colibri_imx6.c +++ b/board/toradex/colibri_imx6/colibri_imx6.c @@ -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 = { diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index b4e4727..a7efeb8 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -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
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
#if defined(CONFIG_OF_LIBFDT) int ft_common_board_setup(void *blob, bd_t *bd) {

On Tue, Sep 5, 2017 at 6:18 PM, Stefan Agner stefan.agner@toradex.com wrote:
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.
-#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
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
participants (3)
-
Fabio Estevam
-
Stefan Agner
-
Łukasz Majewski