lkml.org 
[lkml]   [2011]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 2/3] HID: multitouch: use input_register callback
    From
    On Wed, Nov 30, 2011 at 15:37, Jiri Kosina <jkosina@suse.cz> wrote:
    > On Tue, 29 Nov 2011, Benjamin Tissoires wrote:
    >
    >> Use the input_register mechanism to avoid a race in which the device
    >> may emit events before the slots are ready.
    >>
    >> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
    >> ---
    >>  drivers/hid/hid-multitouch.c |   37 ++++++++++++++++++++++++-------------
    >>  1 files changed, 24 insertions(+), 13 deletions(-)
    >>
    >> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
    >> index 91c13bc..bd6e410 100644
    >> --- a/drivers/hid/hid-multitouch.c
    >> +++ b/drivers/hid/hid-multitouch.c
    >> @@ -574,6 +574,29 @@ static void mt_set_input_mode(struct hid_device *hdev)
    >>       }
    >>  }
    >>
    >> +static int mt_input_register(struct hid_device *hdev,
    >> +             struct hid_input *hidinput)
    >> +{
    >> +     int ret;
    >> +     struct mt_device *td = hid_get_drvdata(hdev);
    >> +
    >> +     td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
    >> +                             GFP_KERNEL);
    >> +     if (!td->slots) {
    >> +             dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
    >> +             return -ENOMEM;
    >> +     }
    >> +
    >> +     ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
    >> +     if (ret)
    >> +             hid_warn(hdev,
    >> +                      "can't create sysfs quirks attribute err: %d\n", ret);
    >> +
    >> +     mt_set_input_mode(hdev);
    >> +
    >> +     return 0;
    >> +}
    >> +
    >>  static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
    >>  {
    >>       int ret, i;
    >> @@ -610,19 +633,6 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
    >>       if (ret)
    >>               goto fail;
    >>
    >> -     td->slots = kzalloc(td->maxcontacts * sizeof(struct mt_slot),
    >> -                             GFP_KERNEL);
    >> -     if (!td->slots) {
    >> -             dev_err(&hdev->dev, "cannot allocate multitouch slots\n");
    >> -             hid_hw_stop(hdev);
    >> -             ret = -ENOMEM;
    >> -             goto fail;
    >> -     }
    >> -
    >> -     ret = sysfs_create_group(&hdev->dev.kobj, &mt_attribute_group);
    >> -
    >> -     mt_set_input_mode(hdev);
    >> -
    >>       return 0;
    >>
    >>  fail:
    >> @@ -843,6 +853,7 @@ static struct hid_driver mt_driver = {
    >>       .input_mapping = mt_input_mapping,
    >>       .input_mapped = mt_input_mapped,
    >>       .feature_mapping = mt_feature_mapping,
    >> +     .input_register = mt_input_register,
    >
    > Umm, where does this come from? My memory is famous for not being really
    > excellent, but I don't immediately remember any patchset adding such
    > callback to hid_driver struct.
    >
    > And it's not anywhere in my applied queue anyway.

    Indeed, your memory is perfectly working: I had some hallucinations.
    I was sure you accepted the following patch:
    http://article.gmane.org/gmane.linux.kernel.input/21692

    It was when Jaikumar Ganesh tried to fix a race in the init of hid-magicmouse.

    As the input_register callback is not queued, you can drop this.

    Cheers,
    Benjamin

    >
    >>       .usage_table = mt_grabbed_usages,
    >>       .event = mt_event,
    >>  #ifdef CONFIG_PM
    >> --
    >> 1.7.4.4
    >>
    >
    > --
    > Jiri Kosina
    > SUSE Labs
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-11-30 15:59    [W:0.045 / U:0.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site