iio: proximity: vcnl3020: add DMA safe buffer
authorIvan Mikhaylov <i.mikhaylov@yadro.com>
Thu, 22 Jul 2021 15:44:18 +0000 (18:44 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 24 Jul 2021 15:00:55 +0000 (16:00 +0100)
Add DMA safe buffer for bulk transfers.

Signed-off-by: Ivan Mikhaylov <i.mikhaylov@yadro.com>
Link: https://lore.kernel.org/r/20210722154420.915082-2-i.mikhaylov@yadro.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/proximity/vcnl3020.c

index 43817f6b3086678c5e4eaa1a06778f1fe37e837f..c90f9c6e9e975e0f72b7416cfa62448020d51c5a 100644 (file)
@@ -57,12 +57,14 @@ static const int vcnl3020_prox_sampling_frequency[][2] = {
  * @dev:       vcnl3020 device.
  * @rev:       revision id.
  * @lock:      lock for protecting access to device hardware registers.
+ * @buf:       DMA safe __be16 buffer.
  */
 struct vcnl3020_data {
        struct regmap *regmap;
        struct device *dev;
        u8 rev;
        struct mutex lock;
+       __be16 buf ____cacheline_aligned;
 };
 
 /**
@@ -144,7 +146,6 @@ static int vcnl3020_measure_proximity(struct vcnl3020_data *data, int *val)
 {
        int rc;
        unsigned int reg;
-       __be16 res;
 
        mutex_lock(&data->lock);
 
@@ -163,12 +164,12 @@ static int vcnl3020_measure_proximity(struct vcnl3020_data *data, int *val)
        }
 
        /* high & low result bytes read */
-       rc = regmap_bulk_read(data->regmap, VCNL_PS_RESULT_HI, &res,
-                             sizeof(res));
+       rc = regmap_bulk_read(data->regmap, VCNL_PS_RESULT_HI, &data->buf,
+                             sizeof(data->buf));
        if (rc)
                goto err_unlock;
 
-       *val = be16_to_cpu(res);
+       *val = be16_to_cpu(data->buf);
 
 err_unlock:
        mutex_unlock(&data->lock);