This patch introduces the use of function put_unaligned_le32.
This is done using Coccinelle and semantic patch used is as follows:
@@ identifier tmp; expression ptr; expression y,e; type T; @@
- tmp = cpu_to_le32(y);
<+... when != tmp
- memcpy(ptr, (T)&tmp, ...);
+ put_unaligned_le32(y,ptr);
...+>
? tmp = e
@@ type T; identifier tmp; @@
- T tmp;
...when != tmp
Signed-off-by: Vaishali Thakkar <[email protected]>
---
drivers/iio/light/gp2ap020a00f.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a00f.c
index 221ed16..650c05f 100644
--- a/drivers/iio/light/gp2ap020a00f.c
+++ b/drivers/iio/light/gp2ap020a00f.c
@@ -966,7 +966,6 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
struct iio_dev *indio_dev = pf->indio_dev;
struct gp2ap020a00f_data *priv = iio_priv(indio_dev);
size_t d_size = 0;
- __le32 light_lux;
int i, out_val, ret;
for_each_set_bit(i, indio_dev->active_scan_mask,
@@ -981,8 +980,8 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
i == GP2AP020A00F_SCAN_MODE_LIGHT_IR) {
out_val = le16_to_cpup((__le16 *)&priv->buffer[d_size]);
gp2ap020a00f_output_to_lux(priv, &out_val);
- light_lux = cpu_to_le32(out_val);
- memcpy(&priv->buffer[d_size], (u8 *)&light_lux, 4);
+
+ put_unaligned_le32(out_val, &priv->buffer[d_size]);
d_size += 4;
} else {
d_size += 2;
--
1.9.1
On 11/02/15 09:17, Vaishali Thakkar wrote:
> This patch introduces the use of function put_unaligned_le32.
>
> This is done using Coccinelle and semantic patch used is as follows:
>
> @@ identifier tmp; expression ptr; expression y,e; type T; @@
>
> - tmp = cpu_to_le32(y);
>
> <+... when != tmp
> - memcpy(ptr, (T)&tmp, ...);
> + put_unaligned_le32(y,ptr);
> ...+>
> ? tmp = e
>
> @@ type T; identifier tmp; @@
>
> - T tmp;
> ...when != tmp
>
> Signed-off-by: Vaishali Thakkar <[email protected]>
Applied to togreg branch of iio.git. Will be initially pushed out as
testing for the autobuilders to play with it.
Thanks,
> ---
> drivers/iio/light/gp2ap020a00f.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a00f.c
> index 221ed16..650c05f 100644
> --- a/drivers/iio/light/gp2ap020a00f.c
> +++ b/drivers/iio/light/gp2ap020a00f.c
> @@ -966,7 +966,6 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
> struct iio_dev *indio_dev = pf->indio_dev;
> struct gp2ap020a00f_data *priv = iio_priv(indio_dev);
> size_t d_size = 0;
> - __le32 light_lux;
> int i, out_val, ret;
>
> for_each_set_bit(i, indio_dev->active_scan_mask,
> @@ -981,8 +980,8 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
> i == GP2AP020A00F_SCAN_MODE_LIGHT_IR) {
> out_val = le16_to_cpup((__le16 *)&priv->buffer[d_size]);
> gp2ap020a00f_output_to_lux(priv, &out_val);
> - light_lux = cpu_to_le32(out_val);
> - memcpy(&priv->buffer[d_size], (u8 *)&light_lux, 4);
> +
> + put_unaligned_le32(out_val, &priv->buffer[d_size]);
> d_size += 4;
> } else {
> d_size += 2;
>
On 14/02/15 11:59, Jonathan Cameron wrote:
> On 11/02/15 09:17, Vaishali Thakkar wrote:
>> This patch introduces the use of function put_unaligned_le32.
>>
>> This is done using Coccinelle and semantic patch used is as follows:
>>
>> @@ identifier tmp; expression ptr; expression y,e; type T; @@
>>
>> - tmp = cpu_to_le32(y);
>>
>> <+... when != tmp
>> - memcpy(ptr, (T)&tmp, ...);
>> + put_unaligned_le32(y,ptr);
>> ...+>
>> ? tmp = e
>>
>> @@ type T; identifier tmp; @@
>>
>> - T tmp;
>> ...when != tmp
>>
>> Signed-off-by: Vaishali Thakkar <[email protected]>
> Applied to togreg branch of iio.git. Will be initially pushed out as
> testing for the autobuilders to play with it.
>
This needs an include - probably asm/unaligned.h so I'll add that.
> Thanks,
>> ---
>> drivers/iio/light/gp2ap020a00f.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a00f.c
>> index 221ed16..650c05f 100644
>> --- a/drivers/iio/light/gp2ap020a00f.c
>> +++ b/drivers/iio/light/gp2ap020a00f.c
>> @@ -966,7 +966,6 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
>> struct iio_dev *indio_dev = pf->indio_dev;
>> struct gp2ap020a00f_data *priv = iio_priv(indio_dev);
>> size_t d_size = 0;
>> - __le32 light_lux;
>> int i, out_val, ret;
>>
>> for_each_set_bit(i, indio_dev->active_scan_mask,
>> @@ -981,8 +980,8 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
>> i == GP2AP020A00F_SCAN_MODE_LIGHT_IR) {
>> out_val = le16_to_cpup((__le16 *)&priv->buffer[d_size]);
>> gp2ap020a00f_output_to_lux(priv, &out_val);
>> - light_lux = cpu_to_le32(out_val);
>> - memcpy(&priv->buffer[d_size], (u8 *)&light_lux, 4);
>> +
>> + put_unaligned_le32(out_val, &priv->buffer[d_size]);
>> d_size += 4;
>> } else {
>> d_size += 2;
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>