• Stephen Warren's avatar
    Implement "pci enum" command for CONFIG_DM_PCI · e578b92c
    Stephen Warren authored
    With CONFIG_DM_PCI enabled, PCI buses are not enumerated at boot, as they
    are without that config option enabled. No command exists to enumerate the
    PCI buses. Hence, unless some board-specific code causes PCI enumeration,
    PCI-based Ethernet devices are not detected, and network access is not
    available.
    
    This patch implements "pci enum" in the CONFIG_DM_PCI case, thus giving a
    mechanism whereby PCI can be enumerated.
    
    do_pci()'s handling of case 'e' is moved into a single location before the
    dev variable is assigned, in order to skip calculation of dev. The enum
    sub-command doesn't need the dev value, and skipping its calculation
    avoids an irrelevant error being printed.
    
    Using a command to initialize PCI like this has a disadvantage relative to
    enumerating PCI at boot. In particular, Ethernet devices are not probed
    during PCI enumeration, but only when used. This defers setting variables
    such as ethact, ethaddr, etc. until the first network-related command is
    executed. Hopefully this will not cause further issues. Perhaps in the
    long term, we need a "net start/enum" command too?
    Signed-off-by: 's avatarStephen Warren <swarren@nvidia.com>
    Reviewed-by: 's avatarSimon Glass <sjg@chromium.org>
    Reviewed-by: 's avatarBin Meng <bmeng.cn@gmail.com>
    e578b92c
pci.c 17.6 KB