Skip to content
Snippets Groups Projects
Commit 7d83b79c authored by Zhicheng Fan's avatar Zhicheng Fan Committed by Andy Fleming
Browse files

qoriq/p1_p2_rdb_pc: USB device-tree fixups for P1020


Resolve P1020 second USB controller multiplexing with eLBC
         - mandatory to mention USB2 in hwconfig string to select it
           over eLBC, otherwise USB2 node is removed
         - works only for SPI and SD boot

Signed-off-by: default avatarRamneek Mehresh <ramneek.mehresh@freescale.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
Signed-off-by: default avatarZhicheng Fan <B32736@freescale.com>
Signed-off-by: default avatarAndy Fleming <afleming@freescale.com>
parent 56376c42
No related branches found
No related tags found
No related merge requests found
...@@ -421,6 +421,8 @@ void ft_board_setup(void *blob, bd_t *bd) ...@@ -421,6 +421,8 @@ void ft_board_setup(void *blob, bd_t *bd)
{ {
phys_addr_t base; phys_addr_t base;
phys_size_t size; phys_size_t size;
const char *soc_usb_compat = "fsl-usb2-dr";
int err, usb1_off, usb2_off;
ft_cpu_setup(blob, bd); ft_cpu_setup(blob, bd);
...@@ -442,5 +444,50 @@ void ft_board_setup(void *blob, bd_t *bd) ...@@ -442,5 +444,50 @@ void ft_board_setup(void *blob, bd_t *bd)
#if defined(CONFIG_HAS_FSL_DR_USB) #if defined(CONFIG_HAS_FSL_DR_USB)
fdt_fixup_dr_usb(blob, bd); fdt_fixup_dr_usb(blob, bd);
#endif #endif
#if defined(CONFIG_SDCARD) || defined(CONFIG_SPIFLASH)
/* Delete eLBC node as it is muxed with USB2 controller */
if (hwconfig("usb2")) {
const char *soc_elbc_compat = "fsl,p1020-elbc";
int off = fdt_node_offset_by_compatible(blob, -1,
soc_elbc_compat);
if (off < 0) {
printf("WARNING: could not find compatible node %s: %s.\n",
soc_elbc_compat,
fdt_strerror(off));
return;
}
err = fdt_del_node(blob, off);
if (err < 0) {
printf("WARNING: could not remove %s: %s.\n",
soc_elbc_compat, fdt_strerror(err));
}
return;
}
#endif
/* Delete USB2 node as it is muxed with eLBC */
usb1_off = fdt_node_offset_by_compatible(blob, -1,
soc_usb_compat);
if (usb1_off < 0) {
printf("WARNING: could not find compatible node %s: %s.\n",
soc_usb_compat,
fdt_strerror(usb1_off));
return;
}
usb2_off = fdt_node_offset_by_compatible(blob, usb1_off,
soc_usb_compat);
if (usb2_off < 0) {
printf("WARNING: could not find compatible node %s: %s.\n",
soc_usb_compat,
fdt_strerror(usb2_off));
return;
}
err = fdt_del_node(blob, usb2_off);
if (err < 0) {
printf("WARNING: could not remove %s: %s.\n",
soc_usb_compat, fdt_strerror(err));
}
} }
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment