diff mbox

[U-Boot,v2,2/6] am33xx: board: Refactor USB initialization into separate function

Message ID 20170207031737.2680-3-alex.g@adaptrum.com
State Accepted
Commit 409a81ddd46f444c2262bb10c921efc6967feff2
Delegated to: Tom Rini
Headers show

Commit Message

Alexandru Gagniuc Feb. 7, 2017, 3:17 a.m. UTC
The declaration of otg*_plat and otg*_board_data is guarded by
CONFIG_USB_MUSB_*, but their use in arch_misc_init is not. The
ifdef flow goes something like:

if (CONFIG_USB_MUSB_* && other_conditions)
	declare usb_data
if (other_conditions)
	use usb_data

Thus when CONFIG_USB_MUSB_* is not declared, we try to use the
data structures, but these structures aren't defined.

To fix this, move the USB initialization code into the same #ifdef
which guards the declaration of the data structures. Since the DM_USB
vs legacy cases are completely different, use two versions of
arch_misc_init(), for readability.

Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>
---
 arch/arm/mach-omap2/am33xx/board.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Tom Rini Feb. 7, 2017, 6:23 p.m. UTC | #1
On Mon, Feb 06, 2017 at 07:17:33PM -0800, Alexandru Gagniuc wrote:

> The declaration of otg*_plat and otg*_board_data is guarded by
> CONFIG_USB_MUSB_*, but their use in arch_misc_init is not. The
> ifdef flow goes something like:
> 
> if (CONFIG_USB_MUSB_* && other_conditions)
> 	declare usb_data
> if (other_conditions)
> 	use usb_data
> 
> Thus when CONFIG_USB_MUSB_* is not declared, we try to use the
> data structures, but these structures aren't defined.
> 
> To fix this, move the USB initialization code into the same #ifdef
> which guards the declaration of the data structures. Since the DM_USB
> vs legacy cases are completely different, use two versions of
> arch_misc_init(), for readability.
> 
> Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Tom Rini July 12, 2017, 12:14 p.m. UTC | #2
On Mon, Feb 06, 2017 at 07:17:33PM -0800, Alexandru Gagniuc wrote:

> The declaration of otg*_plat and otg*_board_data is guarded by
> CONFIG_USB_MUSB_*, but their use in arch_misc_init is not. The
> ifdef flow goes something like:
> 
> if (CONFIG_USB_MUSB_* && other_conditions)
> 	declare usb_data
> if (other_conditions)
> 	use usb_data
> 
> Thus when CONFIG_USB_MUSB_* is not declared, we try to use the
> data structures, but these structures aren't defined.
> 
> To fix this, move the USB initialization code into the same #ifdef
> which guards the declaration of the data structures. Since the DM_USB
> vs legacy cases are completely different, use two versions of
> arch_misc_init(), for readability.
> 
> Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c
index 190310f..422b1a5 100644
--- a/arch/arm/mach-omap2/am33xx/board.c
+++ b/arch/arm/mach-omap2/am33xx/board.c
@@ -190,11 +190,9 @@  static struct musb_hdrc_platform_data otg1_plat = {
 	.board_data	= &otg1_board_data,
 };
 #endif
-#endif
 
 int arch_misc_init(void)
 {
-#ifndef CONFIG_DM_USB
 #ifdef CONFIG_AM335X_USB0
 	musb_register(&otg0_plat, &otg0_board_data,
 		(void *)USB0_OTG_BASE);
@@ -203,7 +201,13 @@  int arch_misc_init(void)
 	musb_register(&otg1_plat, &otg1_board_data,
 		(void *)USB1_OTG_BASE);
 #endif
-#else
+	return 0;
+}
+
+#else	/* CONFIG_USB_MUSB_* && CONFIG_AM335X_USB* && !CONFIG_DM_USB */
+
+int arch_misc_init(void)
+{
 	struct udevice *dev;
 	int ret;
 
@@ -218,10 +222,12 @@  int arch_misc_init(void)
 		return ret;
 	}
 #endif
-#endif
+
 	return 0;
 }
 
+#endif /* CONFIG_USB_MUSB_* && CONFIG_AM335X_USB* && !CONFIG_DM_USB */
+
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /*
  * In the case of non-SPL based booting we'll want to call these