From: Jonathan Cameron <jic23@kernel.org>
To: linux-iio@vger.kernel.org
Cc: k.wrona@samsung.com, kbuild-all@01.org
Subject: Re: [PATCH] iio:common:ssp_sensors fix warnings due to 32 bit instead of 64 bit passed to do_div
Date: Fri, 30 Jan 2015 22:10:19 +0000 [thread overview]
Message-ID: <54CC014B.30004@kernel.org> (raw)
In-Reply-To: <54CBFDD2.9020604@kernel.org>
On 30/01/15 21:55, Jonathan Cameron wrote:
> On 30/01/15 18:25, Jonathan Cameron wrote:
>> Fixes warnings with asm-generic/div64.h do_div such as:
>> In file included from drivers/iio/common/ssp_sensors/ssp_iio.c:20:0:
>> drivers/iio/common/ssp_sensors/ssp_iio_sensor.h: In function 'ssp_convert_to_freq':
>>>> drivers/iio/common/ssp_sensors/ssp_iio_sensor.h:56:16: warning: comparison of distinct pointer types lacks a cast [enabled by default]
>> drivers/iio/common/ssp_sensors/ssp_iio_sensor.h:56:2: warning: right shift count >= width of type [enabled by default]
>>>> drivers/iio/common/ssp_sensors/ssp_iio_sensor.h:56:2: warning: passing argument 1 of '__div64_32' from incompatible pointer type [enabled by default]
>> include/asm-generic/div64.h:35:17: note: expected 'uint64_t *' but argument is of type 'int *'
>> drivers/iio/common/ssp_sensors/ssp_iio.c: In function 'ssp_common_process_data':
>> include/linux/iio/buffer.h:142:32: warning: 'calculated_time' may be used uninitialized in this function [-Wuninitialized]
>> drivers/iio/common/ssp_sensors/ssp_iio.c:83:10: note: 'calculated_time' was declared here
>>
>> Fixed by using straight coded version as per the description in the
>> div64.h header, thus ensuring no issue with 32 bit integers.
>>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
> hmm. failed the build tests. I'd missed SSP_INVERTED_SCALING_FACTOR is forced
> to be ULL. Any reason for that?
>
> I can't immediately see that it is necessary. Being rather tired and
> running out of evening, I've pushed a version with the LL dropped out
> to testing to see if that causes any build issues.
>
> What fun,
Had one final look. It looks like we might need that constant to be 64 bit
to force integer promotion when converting the other way.
Hence, perhaps we just need a temporary u64 in this function?
How about... (and I know it is ugly).
Karol, what do you think?
diff --git a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
index dda267c9bd2a..40dac417734e 100644
--- a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
+++ b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
@@ -46,14 +46,17 @@ int ssp_common_process_data(struct iio_dev *indio_dev, void *buf,
static inline void ssp_convert_to_freq(u32 time, int *integer_part,
int *fractional)
{
+ u64 integer_part64;
+
if (time == 0) {
*fractional = 0;
*integer_part = 0;
return;
}
- *integer_part = SSP_FACTOR_WITH_MS / time;
- *fractional = do_div(*integer_part, SSP_INVERTED_SCALING_FACTOR);
+ integer_part64 = SSP_FACTOR_WITH_MS / time;
+ *fractional = do_div(integer_part64, SSP_INVERTED_SCALING_FACTOR);
+ *integer_part = integer_part64;
}
/* Converts frequency to time in ms */
>
> Jonathan
>> ---
>> drivers/iio/common/ssp_sensors/ssp_iio_sensor.h | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
>> index dda267c9bd2a..fdf61a8c499a 100644
>> --- a/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
>> +++ b/drivers/iio/common/ssp_sensors/ssp_iio_sensor.h
>> @@ -53,7 +53,8 @@ static inline void ssp_convert_to_freq(u32 time, int *integer_part,
>> }
>>
>> *integer_part = SSP_FACTOR_WITH_MS / time;
>> - *fractional = do_div(*integer_part, SSP_INVERTED_SCALING_FACTOR);
>> + *fractional = *integer_part % SSP_INVERTED_SCALING_FACTOR;
>> + *integer_part = *integer_part / SSP_INVERTED_SCALING_FACTOR;
>> }
>>
>> /* Converts frequency to time in ms */
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2015-01-30 22:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-30 18:25 [PATCH] iio:common:ssp_sensors fix warnings due to 32 bit instead of 64 bit passed to do_div Jonathan Cameron
2015-01-30 21:55 ` Jonathan Cameron
2015-01-30 22:10 ` Jonathan Cameron [this message]
2015-01-31 1:35 ` Karol Wrona
2015-01-31 9:39 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54CC014B.30004@kernel.org \
--to=jic23@kernel.org \
--cc=k.wrona@samsung.com \
--cc=kbuild-all@01.org \
--cc=linux-iio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.