From: javier.martinez@collabora.co.uk (Javier Martinez Canillas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v10 5/6] rtc: max77686: Use ffs() to calculate tm_wday
Date: Fri, 19 Sep 2014 21:27:07 +0200 [thread overview]
Message-ID: <541C838B.7070207@collabora.co.uk> (raw)
In-Reply-To: <1411137561.24444.5.camel@joe-AO725>
Hello Joe,
On 09/19/2014 04:39 PM, Joe Perches wrote:
> On Fri, 2014-09-19 at 12:26 +0200, Javier Martinez Canillas wrote:
>> The function max77686_rtc_calculate_wday() is used to
>> calculate the day of the week to be filled in struct
>> rtc_time but that function only calculates the number
>> of bits shifted. So the ffs() function can be used to
>> find the first bit set instead of a special function.
>
> This isn't the same logic. Perhaps you want fls.
>
Right, the removed function has the same logic than fls() - 1 but the value
stored in data[RTC_WEEKDAY] is:
data[RTC_WEEKDAY] = 1 << tm->tm_wday;
so for this particular case, it doesn't matter since ffs() == fls() always.
>> diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c
> []
>> -static inline int max77686_rtc_calculate_wday(u8 shifted)
>> -{
>> - int counter = -1;
>> - while (shifted) {
>> - shifted >>= 1;
>> - counter++;
>> - }
>> - return counter;
>> -}
>> -
>> static void max77686_rtc_data_to_tm(u8 *data, struct rtc_time *tm,
>> int rtc_24hr_mode)
>> {
>> @@ -93,7 +83,7 @@ static void max77686_rtc_data_to_tm(u8 *data, struct rtc_time *tm,
>> tm->tm_hour += 12;
>> }
>>
>> - tm->tm_wday = max77686_rtc_calculate_wday(data[RTC_WEEKDAY] & 0x7f);
>> + tm->tm_wday = ffs(data[RTC_WEEKDAY] & 0x7f) - 1;
I did wonder which function to use and the question is when you want to know
the number of shifted bits, do you look for the first or the last bit set?
Of course is the same for powers of two but I did a naive search to have an
usage count:
$ git grep "shift = ffs(" | wc -l
39
$ git grep "shift = fls(" | wc -l
17
so it seems that ffs() is twice more popular than fls() for this case so I
decided to use ffs() but I don't have a strong opinion tbh.
Best regards,
Javier
next prev parent reply other threads:[~2014-09-19 19:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-19 10:26 [PATCH v10 0/6] Add Maxim 77802 RTC support Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 1/6] rtc: max77686: Allow the max77686 rtc to wakeup the system Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 2/6] rtc: max77686: Remove dead code for SMPL and WTSR Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 3/6] rtc: max77686: Fail to probe if no RTC regmap irqchip is set Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 4/6] rtc: max77686: Remove unneded info log Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 5/6] rtc: max77686: Use ffs() to calculate tm_wday Javier Martinez Canillas
2014-09-19 14:39 ` Joe Perches
2014-09-19 19:27 ` Javier Martinez Canillas [this message]
2014-09-19 19:52 ` Joe Perches
2014-09-19 21:44 ` Javier Martinez Canillas
2014-09-19 10:26 ` [PATCH v10 6/6] rtc: Add driver for Maxim 77802 PMIC Real-Time-Clock Javier Martinez Canillas
2014-09-20 0:14 ` [PATCH v10 0/6] Add Maxim 77802 RTC support Doug Anderson
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=541C838B.7070207@collabora.co.uk \
--to=javier.martinez@collabora.co.uk \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).