On 12/12/2014 10:50 AM, Hans de Goede wrote:
When using usb-keyboard support, typically usb will already get started from
preboot. In this case doing it again in the bootcmd is undesirable.

Allow the user of config_distro_bootcmd to indicate that usb is inited in
preboot through the user setting BOOTENV_PREBOOT_INITS_USB.

Sorry, I don't recall seeing this whenever it was posted before.

Conceptually this seems fine. One issue it has is with the following sequence:

PREBOOT inits USB, no USB drive found (not plugged in)
User CTRL-Cs boot sequence
User plugs in USB drive
User runs "boot" or "run bootcmd"
-> USB not re-detected, so system doesn't boot from USB.

Perhaps the best way to solve this is to have a flag controlling whether BOOTENV_SET_USB_NEED_INIT sets $usb_need_init?

preboot:
setenv usb_do_set_usb_need_init false

BOOTENV_SET_USB_NEED_INIT:
# Normally unset -> true
# In your case, preboot sets this to false
if ${usb_do_set_usb_need_init}; then
    setenv usb_need_init
else
    # Next time $boot is run, this will be unset -> true
    # so we will re-init USB
    setenv usb_do_set_usb_need_init
    # This time through, we skip USB init
    setenv usb_need_init false
endif

Of course, that doesn't solve the problem of the user aborting auto-boot before it's ever run once. Perhaps better would be a flag that BOOTENV_SET_USB_NEED_INIT can use to distinguish auto-boot and manual invocation, i.e.:

preboot:
setenv usb_do_set_usb_need_init false

BOOTENV_SET_USB_NEED_INIT:
# U-Boot C code sets this appropriatelyL
if ${auto_boot}; then
    # Auto case: Init USB unless preboot set a flag
    if ${usb_do_set_usb_need_init}; then
        setenv usb_need_init
    else
        # Next time $boot is run, this will be unset -> true
        # so we will re-init USB
        setenv usb_do_set_usb_need_init
        # This time through, we skip USB init
        setenv usb_need_init false
    endif
else
    # Manual case: Always init USB
    setenv usb_need_init
endif

Or do we just assume that if the user plugs in a new USB device after boot, they must manually run USB initialization? If so, we cam simplify the existing $usb_need_init a bit...
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to