Hi everybody,
we have some problems regarding USB on our custom base board.
Using our custom board with Parker Enineering Samples and L4T 27.1-EA: USB and PCIe work. So physically the board is fine. If we reproduce the test with Parker Qualification Samples and L4T 27.1 USB and PCIe do not work.
We found out that it could be somehow related to cboot’s plugin manager:
[0001.807] I> Updated bootarg info to DTB
[0001.812] I> eeprom_get_mac_addr: MAC (type: 0): 00:04:4b:81:c7:b0
[0001.818] I> eeprom_get_mac_addr: MAC (type: 1): 00:04:4b:81:c7:b1
[0001.824] I> eeprom_get_mac_addr: MAC (type: 2): 00:04:4b:81:c7:b2
[0001.830] E> "ids" doesn't exist, creating
[0001.834] E> "connection" doesn't exist, creating
[0001.839] E> "configs" doesn't exist, creating
[0001.843] I> create_pm_ids: id: 3310-1000-B00-B, len: 15
[0001.848] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0001.859] I> create_pm_ids: id: XXXX-XXXX-XXX-X, len: 15
[0001.864] I> config: mem-type:ff,power-config:ff,misc-config:ff,modem-config:ff,touch-config:ff,display-config:ff,, len: 93
[0001.875] I> Adding plugin-manager/ids/3310-1000-B00=/i2c@c250000:module@0x50
[0001.882] E> "i2c@c250000" doesn't exist, creating
[0001.887] E> "module@0x50" doesn't exist, creating
[0001.892] I> Adding plugin-manager/ids/XXXX-XXXX-XXX=/i2c@3160000:module@0x50
[0001.899] E> "i2c@3160000" doesn't exist, creating
[0001.904] E> "module@0x50" doesn't exist, creating
[0001.910] I> Adding plugin-manager/ids/3310-1000-B00-B
[0001.917] I> Adding plugin-manager/configs/3310-mem-type 00
[0001.923] I> Adding plugin-manager/configs/3310-power-config 00
[0001.929] I> Adding plugin-manager/configs/3310-misc-config 00
[0001.934] I> Adding plugin-manager/configs/3310-modem-config 00
[0001.940] I> Adding plugin-manager/configs/3310-touch-config 00
[0001.946] I> Adding plugin-manager/configs/3310-display-config 00
[0001.952] E> "chip-id" doesn't exist, creating
[0001.956] I> Adding plugin-manager/chip-id/A02P
[0001.963] I> Updated memory info to DTB
[0001.968] E> "reset" doesn't exist, creating
[0001.973] E> "pmc-reset-reason" doesn't exist, creating
[0001.978] E> "pmic-reset-reason" doesn't exist, creating
[0001.983] I> disabled_core_mask: 0xffffff0c
[0001.994] I> tegrabl_load_kernel_and_dtb: Done
After that the USB controller can neither be enabled in U-Boot or Linux:
Tegra186 (xxxxx) # usb start
starting USB...
No controllers found
For comparison: Here is a working trace on a TX2 base board:
[0001.891] I> Updated bootarg info to DTB
[0001.896] I> eeprom_get_mac_addr: MAC (type: 0): 00:04:4b:81:c7:20
[0001.903] I> eeprom_get_mac_addr: MAC (type: 1): 00:04:4b:81:c7:21
[0001.909] I> eeprom_get_mac_addr: MAC (type: 2): 00:04:4b:81:c7:22
[0001.915] E> "ids" doesn't exist, creating
[0001.919] E> "connection" doesn't exist, creating
[0001.923] E> "configs" doesn't exist, creating
[0001.928] I> create_pm_ids: id: 3310-1000-B00-B, len: 15
[0001.933] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0001.944] I> create_pm_ids: id: 2597-0000-500-C, len: 15
[0001.949] I> config: mem-type:00,power-config:00,misc-config:00,modem-config:00,touch-config:00,display-config:00,, len: 93
[0001.960] I> create_pm_ids: id: 3326-1000-000-M, len: 15
[0001.965] I> config: mem-type:ff,power-config:ff,misc-config:ff,modem-config:ff,touch-config:ff,display-config:ff,, len: 93
[0001.976] I> Adding plugin-manager/ids/3310-1000-B00=/i2c@c250000:module@0x50
[0001.983] E> "i2c@c250000" doesn't exist, creating
[0001.988] E> "module@0x50" doesn't exist, creating
[0001.993] I> Adding plugin-manager/ids/2597-0000-500=/i2c@c250000:module@0x57
[0002.000] E> "module@0x57" doesn't exist, creating
[0002.004] I> Adding plugin-manager/ids/3326-1000-000=/i2c@3180000:module@0x54
[0002.011] E> "i2c@3180000" doesn't exist, creating
[0002.016] E> "module@0x54" doesn't exist, creating
[0002.023] I> Adding plugin-manager/ids/3310-1000-B00-B
[0002.030] I> Adding plugin-manager/configs/3310-mem-type 00
[0002.035] I> Adding plugin-manager/configs/3310-power-config 00
[0002.041] I> Adding plugin-manager/configs/3310-misc-config 00
[0002.047] I> Adding plugin-manager/configs/3310-modem-config 00
[0002.053] I> Adding plugin-manager/configs/3310-touch-config 00
[0002.058] I> Adding plugin-manager/configs/3310-display-config 00
[0002.064] E> "chip-id" doesn't exist, creating
[0002.069] I> Adding plugin-manager/chip-id/A02P
[0002.075] I> Updated memory info to DTB
[0002.081] E> "reset" doesn't exist, creating
[0002.085] E> "pmc-reset-reason" doesn't exist, creating
[0002.090] E> "pmic-reset-reason" doesn't exist, creating
[0002.096] I> disabled_core_mask: 0xffffff0c
[0002.106] I> tegrabl_load_kernel_and_dtb: Done
We guess it has to do with the plugin manager which does not find a suitable EEPROM on our custom board. We did not populate such an EEPROM as we did not find any documentation on this requirement.
Can you please provide us with information on how to disable the plugin manager in cboot or how to enable USB and PCIe manually for U-Boot and Linux?
For your information: the plugin manager also seems to access the 2 GPIO expanders on the base board which we also do not have.
Best regards,
Olaf