• Mathias Nyman's avatar
    xhci: Create new structures to store xhci port information · bcaa9d5c
    Mathias Nyman authored
    Current way of having one array telling only the port speed,
    and then two separate arrays with mmio addresses for usb2 and usb3 ports
    requeres helper functions to transate  hw to hcd, and hcd to hw port
    numbers, and is hard to expand.
    
    Instead create a structure describing a port, including the mmio address,
    the port hardware index, hcd port index, and a pointer to the roothub
    it belongs to.
    
    Create one array containing all port structures in the same order the
    hardware controller sees them. Then add an array of port pointers to
    each xhci hub structure pointing to the ports that belonging to the
    roothub.
    
    This way we can easily convert hw indexed port events to usb core
    hcd port numbers, and vice versa usb core hub hcd port numbers
    to hw index and mmio address.
    
    Other benefit is that we can easily find the parent hcd and xhci
    structure of a port structure. This is useful in debugfs where
    we can give one port structure pointer as parameter and get both
    the correct mmio address and xhci lock needed to set some port
    parameter.
    Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    bcaa9d5c
xhci.h 82.4 KB