lkml.org 
[lkml]   [2010]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 093/123] USB: xhci: Fix finding extended capabilities registers
    2.6.33-stable review patch.  If anyone has any objections, please let me know.

    -----------------

    From: Edward Shao <laface.tw@gmail.com>

    commit 05197921ff3dad52d99fd1647974c57d9c28d40e upstream.

    According "5.3.6 Capability Parameters (HCCPARAMS)" of xHCI rev0.96 spec,
    value of xECP register indicates a relative offset, in 32-bit words,
    from Base to the beginning of the first extended capability.
    The wrong calculation will cause BIOS handoff fail (not handoff from BIOS)
    in some platform with BIOS USB legacy sup support.

    Signed-off-by: Edward Shao <laface.tw@gmail.com>
    Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/host/xhci-ext-caps.h | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    --- a/drivers/usb/host/xhci-ext-caps.h
    +++ b/drivers/usb/host/xhci-ext-caps.h
    @@ -101,12 +101,15 @@ static inline int xhci_find_next_cap_off

    next = readl(base + ext_offset);

    - if (ext_offset == XHCI_HCC_PARAMS_OFFSET)
    + if (ext_offset == XHCI_HCC_PARAMS_OFFSET) {
    /* Find the first extended capability */
    next = XHCI_HCC_EXT_CAPS(next);
    - else
    + ext_offset = 0;
    + } else {
    /* Find the next extended capability */
    next = XHCI_EXT_CAPS_NEXT(next);
    + }
    +
    if (!next)
    return 0;
    /*



    \
     
     \ /
      Last update: 2010-03-13 01:27    [W:0.019 / U:61.960 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site