Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
[firefly-linux-kernel-4.4.55.git] / drivers / iio / accel / hid-sensor-accel-3d.c
index bbcbd7101f337cae06f458eb73f6420ce230fd8f..46d22f3fb1a9bb0c3fb2259b6399fd1642d107d7 100644 (file)
 #include <linux/iio/triggered_buffer.h>
 #include "../common/hid-sensors/hid-sensor-trigger.h"
 
-/*Format: HID-SENSOR-usage_id_in_hex*/
-/*Usage ID from spec for Accelerometer-3D: 0x200073*/
-#define DRIVER_NAME "HID-SENSOR-200073"
-
 enum accel_3d_channel {
        CHANNEL_SCAN_INDEX_X,
        CHANNEL_SCAN_INDEX_Y,
@@ -179,18 +175,10 @@ static int accel_3d_write_raw(struct iio_dev *indio_dev,
        return ret;
 }
 
-static int accel_3d_write_raw_get_fmt(struct iio_dev *indio_dev,
-                              struct iio_chan_spec const *chan,
-                              long mask)
-{
-       return IIO_VAL_INT_PLUS_MICRO;
-}
-
 static const struct iio_info accel_3d_info = {
        .driver_module = THIS_MODULE,
        .read_raw = &accel_3d_read_raw,
        .write_raw = &accel_3d_write_raw,
-       .write_raw_get_fmt = &accel_3d_write_raw_get_fmt,
 };
 
 /* Function to push data to buffer */
@@ -286,11 +274,11 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
        struct hid_sensor_hub_device *hsdev = pdev->dev.platform_data;
        struct iio_chan_spec *channels;
 
-       indio_dev = iio_device_alloc(sizeof(struct accel_3d_state));
-       if (indio_dev == NULL) {
-               ret = -ENOMEM;
-               goto error_ret;
-       }
+       indio_dev = devm_iio_device_alloc(&pdev->dev,
+                                         sizeof(struct accel_3d_state));
+       if (indio_dev == NULL)
+               return -ENOMEM;
+
        platform_set_drvdata(pdev, indio_dev);
 
        accel_state = iio_priv(indio_dev);
@@ -302,15 +290,14 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
                                        &accel_state->common_attributes);
        if (ret) {
                dev_err(&pdev->dev, "failed to setup common attributes\n");
-               goto error_free_dev;
+               return ret;
        }
 
        channels = kmemdup(accel_3d_channels, sizeof(accel_3d_channels),
                           GFP_KERNEL);
        if (!channels) {
-               ret = -ENOMEM;
                dev_err(&pdev->dev, "failed to duplicate channels\n");
-               goto error_free_dev;
+               return -ENOMEM;
        }
 
        ret = accel_3d_parse_report(pdev, hsdev, channels,
@@ -367,9 +354,6 @@ error_unreg_buffer_funcs:
        iio_triggered_buffer_cleanup(indio_dev);
 error_free_dev_mem:
        kfree(indio_dev->channels);
-error_free_dev:
-       iio_device_free(indio_dev);
-error_ret:
        return ret;
 }
 
@@ -384,14 +368,23 @@ static int hid_accel_3d_remove(struct platform_device *pdev)
        hid_sensor_remove_trigger(indio_dev);
        iio_triggered_buffer_cleanup(indio_dev);
        kfree(indio_dev->channels);
-       iio_device_free(indio_dev);
 
        return 0;
 }
 
+static struct platform_device_id hid_accel_3d_ids[] = {
+       {
+               /* Format: HID-SENSOR-usage_id_in_hex_lowercase */
+               .name = "HID-SENSOR-200073",
+       },
+       { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(platform, hid_accel_3d_ids);
+
 static struct platform_driver hid_accel_3d_platform_driver = {
+       .id_table = hid_accel_3d_ids,
        .driver = {
-               .name   = DRIVER_NAME,
+               .name   = KBUILD_MODNAME,
                .owner  = THIS_MODULE,
        },
        .probe          = hid_accel_3d_probe,