lkml.org 
[lkml]   [2011]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] xhci: Do not issue device reset when device is not setup
    Date
    Xhci controllers respond to this by returning an error. Instead of
    issuing a command that will fail, just return.

    This fixes the xhci driver not working on asrock P67 Pro/Extreme boards.

    Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
    ---
    drivers/usb/host/xhci.c | 7 +++++++
    1 files changed, 7 insertions(+), 0 deletions(-)

    diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
    index d9660eb..a1f32186 100644
    --- a/drivers/usb/host/xhci.c
    +++ b/drivers/usb/host/xhci.c
    @@ -2467,6 +2467,7 @@ int xhci_discover_or_reset_device(struct usb_hcd *hcd, struct usb_device *udev)
    struct xhci_command *reset_device_cmd;
    int timeleft;
    int last_freed_endpoint;
    + struct xhci_slot_ctx *slot_ctx;

    ret = xhci_check_args(hcd, udev, NULL, 0, false, __func__);
    if (ret <= 0)
    @@ -2499,6 +2500,12 @@ int xhci_discover_or_reset_device(struct usb_hcd *hcd, struct usb_device *udev)
    return -EINVAL;
    }

    + /* If device is not setup, there is no point in resetting it */
    + slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
    + if (GET_SLOT_STATE(le32_to_cpu(slot_ctx->dev_state)) ==
    + SLOT_STATE_DISABLED)
    + return 0;
    +
    xhci_dbg(xhci, "Resetting device with slot ID %u\n", slot_id);
    /* Allocate the command structure that holds the struct completion.
    * Assume we're in process context, since the normal device reset
    --
    1.7.4.1


    \
     
     \ /
      Last update: 2011-06-01 23:31    [W:0.025 / U:67.624 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site