lkml.org 
[lkml]   [2012]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1/2] HID: hid-sensor-hub: Clear HID_CLAIMED_INPUT bit earlier
    From
    Date
    Clear HID_CLAIMED_INPUT bit of hdev->claimed, this prevents calling
    hidinput_disconnect() in hid_disconnect(), which is called by hid_hw_stop().

    We need to clear HID_CLAIMED_INPUT bit earlier rather than in
    sensor_hub_remove() because we also call hid_hw_stop() in sensor_hub_probe
    error handling.

    Also adds comments for why we set hdev->claimed = HID_CLAIMED_INPUT.

    Signed-off-by: Axel Lin <axel.lin@gmail.com>
    ---
    Hi srinivas,
    I don't have this hardware, I'd appreciate if you can test these patches.
    Axel

    drivers/hid/hid-sensor-hub.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c
    index 4ac759c..50bc8c7 100644
    --- a/drivers/hid/hid-sensor-hub.c
    +++ b/drivers/hid/hid-sensor-hub.c
    @@ -539,8 +539,11 @@ static int sensor_hub_probe(struct hid_device *hdev,
    }
    INIT_LIST_HEAD(&hdev->inputs);

    + /* We don't use hidinput but hid_hw_start() fails if nothing is
    + * claimed. So spoof claimed input. */
    hdev->claimed = HID_CLAIMED_INPUT;
    ret = hid_hw_start(hdev, 0);
    + hdev->claimed &= ~HID_CLAIMED_INPUT;
    if (ret) {
    hid_err(hdev, "hw start failed\n");
    goto err_free;
    @@ -627,7 +630,6 @@ static void sensor_hub_remove(struct hid_device *hdev)
    int i;

    hid_dbg(hdev, " hardware removed\n");
    - hdev->claimed &= ~HID_CLAIMED_INPUT;
    hid_hw_stop(hdev);
    hid_hw_close(hdev);
    spin_lock_irqsave(&data->lock, flags);
    --
    1.7.9.5




    \
     
     \ /
      Last update: 2012-09-13 04:21    [W:6.932 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site