]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Merge branch 'for-3.12/sensor-hub' into for-linus
authorJiri Kosina <jkosina@suse.cz>
Fri, 6 Sep 2013 09:59:53 +0000 (11:59 +0200)
committerJiri Kosina <jkosina@suse.cz>
Fri, 6 Sep 2013 09:59:53 +0000 (11:59 +0200)
Conflicts:
drivers/hid/hid-sensor-hub.c

1  2 
drivers/hid/hid-sensor-hub.c

index 6fca30eb377d671c3e967860b34abae22e597e5f,e46e0134b0f979b5a77c8576e77a819f98ee9108..10e1581022cfdea4acd4e5431ea43155e83898f0
@@@ -103,8 -103,7 +103,7 @@@ static int sensor_hub_get_physical_devi
  
        list_for_each_entry(report, &report_enum->report_list, list) {
                field = report->field[0];
-               if (report->maxfield && field &&
-                                       field->physical)
+               if (report->maxfield && field && field->physical)
                        cnt++;
        }
  
@@@ -192,12 -191,12 +191,12 @@@ int sensor_hub_set_feature(struct hid_s
                                u32 field_index, s32 value)
  {
        struct hid_report *report;
-       struct sensor_hub_data *data =  hid_get_drvdata(hsdev->hdev);
+       struct sensor_hub_data *data = hid_get_drvdata(hsdev->hdev);
        int ret = 0;
  
        mutex_lock(&data->mutex);
        report = sensor_hub_report(report_id, hsdev->hdev, HID_FEATURE_REPORT);
-       if (!report || (field_index >=  report->maxfield)) {
+       if (!report || (field_index >= report->maxfield)) {
                ret = -EINVAL;
                goto done_proc;
        }
@@@ -216,13 -215,12 +215,13 @@@ int sensor_hub_get_feature(struct hid_s
                                u32 field_index, s32 *value)
  {
        struct hid_report *report;
-       struct sensor_hub_data *data =  hid_get_drvdata(hsdev->hdev);
+       struct sensor_hub_data *data = hid_get_drvdata(hsdev->hdev);
        int ret = 0;
  
        mutex_lock(&data->mutex);
        report = sensor_hub_report(report_id, hsdev->hdev, HID_FEATURE_REPORT);
-       if (!report || (field_index >=  report->maxfield) ||
 -      if (!report || (field_index >= report->maxfield)) {
++      if (!report || (field_index >= report->maxfield) ||
 +          report->field[field_index]->report_count < 1) {
                ret = -EINVAL;
                goto done_proc;
        }
@@@ -242,7 -240,7 +241,7 @@@ int sensor_hub_input_attr_get_raw_value
                                        u32 usage_id,
                                        u32 attr_usage_id, u32 report_id)
  {
-       struct sensor_hub_data *data =  hid_get_drvdata(hsdev->hdev);
+       struct sensor_hub_data *data = hid_get_drvdata(hsdev->hdev);
        unsigned long flags;
        struct hid_report *report;
        int ret_val = 0;
@@@ -303,7 -301,7 +302,7 @@@ int sensor_hub_input_get_attribute_info
  
        /* Initialize with defaults */
        info->usage_id = usage_id;
-       info->attrib_id =  attr_usage_id;
+       info->attrib_id = attr_usage_id;
        info->report_id = -1;
        info->index = -1;
        info->units = -1;
                                        if (field->usage[j].hid ==
                                        attr_usage_id &&
                                        field->usage[j].collection_index ==
-                                       collection_index)  {
+                                       collection_index) {
                                                sensor_hub_fill_attr_info(info,
                                                        i, report->id,
                                                        field->unit,
@@@ -358,7 -356,7 +357,7 @@@ EXPORT_SYMBOL_GPL(sensor_hub_input_get_
  #ifdef CONFIG_PM
  static int sensor_hub_suspend(struct hid_device *hdev, pm_message_t message)
  {
-       struct sensor_hub_data *pdata =  hid_get_drvdata(hdev);
+       struct sensor_hub_data *pdata = hid_get_drvdata(hdev);
        struct hid_sensor_hub_callbacks_list *callback;
  
        hid_dbg(hdev, " sensor_hub_suspend\n");
  
  static int sensor_hub_resume(struct hid_device *hdev)
  {
-       struct sensor_hub_data *pdata =  hid_get_drvdata(hdev);
+       struct sensor_hub_data *pdata = hid_get_drvdata(hdev);
        struct hid_sensor_hub_callbacks_list *callback;
  
        hid_dbg(hdev, " sensor_hub_resume\n");
@@@ -395,6 -393,7 +394,7 @@@ static int sensor_hub_reset_resume(stru
        return 0;
  }
  #endif
  /*
   * Handle raw report as sent by device
   */
@@@ -417,12 -416,11 +417,11 @@@ static int sensor_hub_raw_event(struct 
                return 1;
  
        ptr = raw_data;
 -      ptr++; /*Skip report id*/
 +      ptr++; /* Skip report id */
  
        spin_lock_irqsave(&pdata->lock, flags);
  
        for (i = 0; i < report->maxfield; ++i) {
                hid_dbg(hdev, "%d collection_index:%x hid:%x sz:%x\n",
                                i, report->field[i]->usage->collection_index,
                                report->field[i]->usage->hid,
                if (pdata->pending.status && pdata->pending.attr_usage_id ==
                                report->field[i]->usage->hid) {
                        hid_dbg(hdev, "data was pending ...\n");
-                       pdata->pending.raw_data = kmalloc(sz, GFP_ATOMIC);
-                       if (pdata->pending.raw_data) {
-                               memcpy(pdata->pending.raw_data, ptr, sz);
-                               pdata->pending.raw_size  = sz;
-                       } else
+                       pdata->pending.raw_data = kmemdup(ptr, sz, GFP_ATOMIC);
+                       if (pdata->pending.raw_data)
+                               pdata->pending.raw_size = sz;
+                       else
                                pdata->pending.raw_size = 0;
                        complete(&pdata->pending.ready);
                }
@@@ -479,16 -476,15 +477,15 @@@ static int sensor_hub_probe(struct hid_
        struct hid_field *field;
        int dev_cnt;
  
-       sd = kzalloc(sizeof(struct sensor_hub_data), GFP_KERNEL);
+       sd = devm_kzalloc(&hdev->dev, sizeof(*sd), GFP_KERNEL);
        if (!sd) {
                hid_err(hdev, "cannot allocate Sensor data\n");
                return -ENOMEM;
        }
-       sd->hsdev = kzalloc(sizeof(struct hid_sensor_hub_device), GFP_KERNEL);
+       sd->hsdev = devm_kzalloc(&hdev->dev, sizeof(*sd->hsdev), GFP_KERNEL);
        if (!sd->hsdev) {
                hid_err(hdev, "cannot allocate hid_sensor_hub_device\n");
-               ret = -ENOMEM;
-               goto err_free_hub;
+               return -ENOMEM;
        }
        hid_set_drvdata(hdev, sd);
        sd->hsdev->hdev = hdev;
        ret = hid_parse(hdev);
        if (ret) {
                hid_err(hdev, "parse failed\n");
-               goto err_free;
+               return ret;
        }
        INIT_LIST_HEAD(&hdev->inputs);
  
        ret = hid_hw_start(hdev, 0);
        if (ret) {
                hid_err(hdev, "hw start failed\n");
-               goto err_free;
+               return ret;
        }
        ret = hid_hw_open(hdev);
        if (ret) {
                                        field->physical) {
                        name = kasprintf(GFP_KERNEL, "HID-SENSOR-%x",
                                                field->physical);
-                       if (name  == NULL) {
+                       if (name == NULL) {
                                hid_err(hdev, "Failed MFD device name\n");
                                        ret = -ENOMEM;
                                        goto err_free_names;
@@@ -572,10 -568,6 +569,6 @@@ err_close
        hid_hw_close(hdev);
  err_stop_hw:
        hid_hw_stop(hdev);
- err_free:
-       kfree(sd->hsdev);
- err_free_hub:
-       kfree(sd);
  
        return ret;
  }
@@@ -599,8 -591,6 +592,6 @@@ static void sensor_hub_remove(struct hi
        kfree(data->hid_sensor_hub_client_devs);
        hid_set_drvdata(hdev, NULL);
        mutex_destroy(&data->mutex);
-       kfree(data->hsdev);
-       kfree(data);
  }
  
  static const struct hid_device_id sensor_hub_devices[] = {
@@@ -618,8 -608,8 +609,8 @@@ static struct hid_driver sensor_hub_dri
        .raw_event = sensor_hub_raw_event,
  #ifdef CONFIG_PM
        .suspend = sensor_hub_suspend,
-       .resume =  sensor_hub_resume,
-       .reset_resume =  sensor_hub_reset_resume,
+       .resume = sensor_hub_resume,
+       .reset_resume = sensor_hub_reset_resume,
  #endif
  };
  module_hid_driver(sensor_hub_driver);