From: Alexandre Belloni <alexandre.belloni@bootlin.com>
To: Hugo Villeneuve <hugo@hugovil.com>
Cc: a.zummo@towertech.it, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, linux-rtc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
Hugo Villeneuve <hvilleneuve@dimonoff.com>
Subject: Re: [PATCH v3 03/14] rtc: pcf2127: adapt for alarm registers at any offset
Date: Fri, 20 Jan 2023 18:10:36 +0100 [thread overview]
Message-ID: <Y8rLDHBgaULi+PBt@mail.local> (raw)
In-Reply-To: <20221215150214.1109074-4-hugo@hugovil.com>
On 15/12/2022 10:02:04-0500, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
>
> This will simplify the implementation of new variants into this driver.
>
> Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
> ---
> drivers/rtc/rtc-pcf2127.c | 42 ++++++++++++++++++++++-----------------
> 1 file changed, 24 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
> index fb0caacaabee..db0cb784c0c9 100644
> --- a/drivers/rtc/rtc-pcf2127.c
> +++ b/drivers/rtc/rtc-pcf2127.c
> @@ -56,11 +56,14 @@
> /* Time and date registers bits */
> #define PCF2127_BIT_SC_OSF BIT(7)
> /* Alarm registers */
> -#define PCF2127_REG_ALARM_SC 0x0A
> -#define PCF2127_REG_ALARM_MN 0x0B
> -#define PCF2127_REG_ALARM_HR 0x0C
> -#define PCF2127_REG_ALARM_DM 0x0D
> -#define PCF2127_REG_ALARM_DW 0x0E
> +#define PCF2127_REG_ALARM_BASE 0x0A
> +/* Alarm registers offsets (starting from base register) */
> +#define PCF2127_OFFSET_ALARM_SC 0
> +#define PCF2127_OFFSET_ALARM_MN 1
> +#define PCF2127_OFFSET_ALARM_HR 2
> +#define PCF2127_OFFSET_ALARM_DM 3
> +#define PCF2127_OFFSET_ALARM_DW 4
> +/* Alarm bits */
> #define PCF2127_BIT_ALARM_AE BIT(7)
> /* CLKOUT control register */
> #define PCF2127_REG_CLKOUT 0x0f
> @@ -110,6 +113,7 @@ struct pcf21xx_config {
> unsigned int has_nvmem:1;
> unsigned int has_bit_wd_ctl_cd0:1;
> u8 regs_td_base; /* Time/data base registers. */
> + u8 regs_alarm_base; /* Alarm function base registers. */
> };
>
> struct pcf2127 {
> @@ -402,18 +406,18 @@ static int pcf2127_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
> if (ret)
> return ret;
>
> - ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_ALARM_SC, buf,
> - sizeof(buf));
> + ret = regmap_bulk_read(pcf2127->regmap, pcf2127->cfg->regs_alarm_base,
> + buf, sizeof(buf));
> if (ret)
> return ret;
>
> alrm->enabled = ctrl2 & PCF2127_BIT_CTRL2_AIE;
> alrm->pending = ctrl2 & PCF2127_BIT_CTRL2_AF;
>
> - alrm->time.tm_sec = bcd2bin(buf[0] & 0x7F);
> - alrm->time.tm_min = bcd2bin(buf[1] & 0x7F);
> - alrm->time.tm_hour = bcd2bin(buf[2] & 0x3F);
> - alrm->time.tm_mday = bcd2bin(buf[3] & 0x3F);
> + alrm->time.tm_sec = bcd2bin(buf[PCF2127_OFFSET_ALARM_SC] & 0x7F);
> + alrm->time.tm_min = bcd2bin(buf[PCF2127_OFFSET_ALARM_MN] & 0x7F);
> + alrm->time.tm_hour = bcd2bin(buf[PCF2127_OFFSET_ALARM_HR] & 0x3F);
> + alrm->time.tm_mday = bcd2bin(buf[PCF2127_OFFSET_ALARM_DM] & 0x3F);
I feel like this is adding defines for the sake of having defines. I
don't think this is particularly useful.
>
> return 0;
> }
> @@ -447,14 +451,14 @@ static int pcf2127_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
> if (ret)
> return ret;
>
> - buf[0] = bin2bcd(alrm->time.tm_sec);
> - buf[1] = bin2bcd(alrm->time.tm_min);
> - buf[2] = bin2bcd(alrm->time.tm_hour);
> - buf[3] = bin2bcd(alrm->time.tm_mday);
> - buf[4] = PCF2127_BIT_ALARM_AE; /* Do not match on week day */
> + buf[PCF2127_OFFSET_ALARM_SC] = bin2bcd(alrm->time.tm_sec);
> + buf[PCF2127_OFFSET_ALARM_MN] = bin2bcd(alrm->time.tm_min);
> + buf[PCF2127_OFFSET_ALARM_HR] = bin2bcd(alrm->time.tm_hour);
> + buf[PCF2127_OFFSET_ALARM_DM] = bin2bcd(alrm->time.tm_mday);
> + buf[PCF2127_OFFSET_ALARM_DW] = PCF2127_BIT_ALARM_AE; /* Do not match on week day */
>
> - ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_ALARM_SC, buf,
> - sizeof(buf));
> + ret = regmap_bulk_write(pcf2127->regmap, pcf2127->cfg->regs_alarm_base,
> + buf, sizeof(buf));
> if (ret)
> return ret;
>
> @@ -659,12 +663,14 @@ static struct pcf21xx_config pcf21xx_cfg[] = {
> .has_nvmem = 1,
> .has_bit_wd_ctl_cd0 = 1,
> .regs_td_base = PCF2127_REG_TIME_DATE_BASE,
> + .regs_alarm_base = PCF2127_REG_ALARM_BASE,
> },
> [PCF2129] = {
> .max_register = 0x19,
> .has_nvmem = 0,
> .has_bit_wd_ctl_cd0 = 0,
> .regs_td_base = PCF2127_REG_TIME_DATE_BASE,
> + .regs_alarm_base = PCF2127_REG_ALARM_BASE,
> },
> };
>
> --
> 2.30.2
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2023-01-20 17:10 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-15 15:02 [PATCH v3 00/14] rtc: pcf2127: add PCF2131 driver Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 01/14] rtc: pcf2127: add variant-specific configuration structure Hugo Villeneuve
2022-12-19 9:05 ` Bruno Thomsen
2022-12-19 15:15 ` Hugo Villeneuve
2022-12-19 17:17 ` Bruno Thomsen
2022-12-19 18:30 ` Hugo Villeneuve
2023-01-07 16:52 ` Bruno Thomsen
2022-12-15 15:02 ` [PATCH v3 02/14] rtc: pcf2127: adapt for time/date registers at any offset Hugo Villeneuve
2022-12-19 9:34 ` Bruno Thomsen
2022-12-19 16:27 ` Hugo Villeneuve
2023-01-07 16:49 ` Bruno Thomsen
2023-01-20 18:47 ` Alexandre Belloni
2023-01-23 15:54 ` Hugo Villeneuve
2023-06-21 18:18 ` Alexandre Belloni
2022-12-15 15:02 ` [PATCH v3 03/14] rtc: pcf2127: adapt for alarm " Hugo Villeneuve
2023-01-07 16:57 ` Bruno Thomsen
2023-01-20 17:10 ` Alexandre Belloni [this message]
2023-01-23 16:02 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 04/14] rtc: pcf2127: adapt for WD " Hugo Villeneuve
2023-01-07 16:59 ` Bruno Thomsen
2022-12-15 15:02 ` [PATCH v3 05/14] rtc: pcf2127: adapt for CLKOUT register " Hugo Villeneuve
2023-01-07 17:01 ` Bruno Thomsen
2022-12-15 15:02 ` [PATCH v3 06/14] rtc: pcf2127: add support for multiple TS functions Hugo Villeneuve
2023-01-07 17:58 ` Bruno Thomsen
2023-01-23 20:41 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 07/14] rtc: pcf2127: add support for PCF2131 RTC Hugo Villeneuve
2023-01-07 18:15 ` Bruno Thomsen
2023-01-23 19:06 ` Hugo Villeneuve
2023-01-20 18:57 ` Alexandre Belloni
2023-01-23 17:27 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 08/14] rtc: pcf2127: add support for PCF2131 interrupts on output INT_A Hugo Villeneuve
2023-01-07 18:17 ` Bruno Thomsen
2023-01-20 16:56 ` Alexandre Belloni
2023-01-23 20:52 ` Hugo Villeneuve
2023-05-11 17:19 ` Hugo Villeneuve
2023-06-21 19:24 ` Alexandre Belloni
2023-06-21 19:26 ` Alexandre Belloni
2023-06-22 14:21 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 09/14] rtc: pcf2127: set PWRMNG value for PCF2131 Hugo Villeneuve
2023-01-07 18:36 ` Bruno Thomsen
2023-01-20 16:39 ` Alexandre Belloni
2023-01-23 22:07 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 10/14] rtc: pcf2127: read and validate PCF2131 device signature Hugo Villeneuve
2023-01-20 17:01 ` Alexandre Belloni
2023-01-23 17:31 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 11/14] rtc: pcf2127: adapt time/date registers write sequence for PCF2131 Hugo Villeneuve
2023-01-07 18:44 ` Bruno Thomsen
2023-01-23 20:55 ` Hugo Villeneuve
2023-01-20 17:09 ` Alexandre Belloni
2023-01-23 21:57 ` Hugo Villeneuve
2023-06-21 19:36 ` Alexandre Belloni
2022-12-15 15:02 ` [PATCH v3 12/14] rtc: pcf2127: support generic watchdog timing configuration Hugo Villeneuve
2023-01-18 13:23 ` Philipp Rosenberger
2023-01-19 17:48 ` Hugo Villeneuve
2023-01-20 8:06 ` Philipp Rosenberger
2023-01-20 14:44 ` Hugo Villeneuve
2022-12-15 15:02 ` [PATCH v3 13/14] rtc: pcf2127: add flag for watchdog register value read support Hugo Villeneuve
2023-01-07 18:47 ` Bruno Thomsen
2022-12-15 15:02 ` [PATCH v3 14/14] dt-bindings: rtc: pcf2127: add PCF2131 Hugo Villeneuve
2022-12-16 13:24 ` Krzysztof Kozlowski
2022-12-19 9:14 ` Bruno Thomsen
2022-12-19 16:25 ` Hugo Villeneuve
2022-12-19 17:18 ` Bruno Thomsen
2022-12-19 18:31 ` Hugo Villeneuve
2023-01-20 19:05 ` [PATCH v3 00/14] rtc: pcf2127: add PCF2131 driver Alexandre Belloni
2023-01-23 15:51 ` Hugo Villeneuve
2023-06-21 14:14 ` Hugo Villeneuve
2023-06-21 16:59 ` Hugo Villeneuve
2023-06-21 18:14 ` Alexandre Belloni
2023-06-21 18:28 ` Hugo Villeneuve
2023-07-05 13:40 ` Hugo Villeneuve
2023-07-07 14:16 ` Alexandre Belloni
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=Y8rLDHBgaULi+PBt@mail.local \
--to=alexandre.belloni@bootlin.com \
--cc=a.zummo@towertech.it \
--cc=devicetree@vger.kernel.org \
--cc=hugo@hugovil.com \
--cc=hvilleneuve@dimonoff.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rtc@vger.kernel.org \
--cc=robh+dt@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.