* [PATCH 0/3] add support for RV8063 SPI rtc
@ 2025-04-07 19:35 Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 1/3] rtc: pcf85063: create pcf85063_i2c_probe Antoni Pokusinski
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-07 19:35 UTC (permalink / raw)
To: alexandre.belloni, krzk+dt, conor+dt, robh, alexander.stein
Cc: linux-rtc, linux-kernel, devicetree, Antoni Pokusinski
This patch series adds support for the Microcrystal RV8063 real time
clock module with SPI interface. This device is very similar to RV8263
(which however uses I2C), so I decided to extend the existing driver instead
of creating a new one.
RV8063 datasheet: https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV-8063-C7_App-Manual.pdf
Antoni Pokusinski (3):
rtc: pcf85063: create pcf85063_i2c_probe
rtc: pcf85063: add support for RV8063
dt-bindings: rtc: add binding for RV8063
.../devicetree/bindings/rtc/nxp,pcf85063.yaml | 33 +++-
drivers/rtc/Kconfig | 21 ++-
drivers/rtc/rtc-pcf85063.c | 169 +++++++++++++++---
3 files changed, 186 insertions(+), 37 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] rtc: pcf85063: create pcf85063_i2c_probe
2025-04-07 19:35 [PATCH 0/3] add support for RV8063 SPI rtc Antoni Pokusinski
@ 2025-04-07 19:35 ` Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 2/3] rtc: pcf85063: add support for RV8063 Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 3/3] dt-bindings: rtc: add binding " Antoni Pokusinski
2 siblings, 0 replies; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-07 19:35 UTC (permalink / raw)
To: alexandre.belloni, krzk+dt, conor+dt, robh, alexander.stein
Cc: linux-rtc, linux-kernel, devicetree, Antoni Pokusinski
Move the i2c-specific code from pcf85063_probe to the newly created
function.
This is a preparation for introducing the support for RV8063 real-time
clock with SPI interface.
Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
---
drivers/rtc/rtc-pcf85063.c | 97 +++++++++++++++++++++++++++-----------
1 file changed, 70 insertions(+), 27 deletions(-)
diff --git a/drivers/rtc/rtc-pcf85063.c b/drivers/rtc/rtc-pcf85063.c
index 4fa5c4ecdd5a..03dfc58f4cd7 100644
--- a/drivers/rtc/rtc-pcf85063.c
+++ b/drivers/rtc/rtc-pcf85063.c
@@ -559,12 +559,12 @@ static const struct pcf85063_config config_rv8263 = {
.force_cap_7000 = 1,
};
-static int pcf85063_probe(struct i2c_client *client)
+static int pcf85063_probe(struct device *dev, struct regmap *regmap, int irq,
+ const struct pcf85063_config *config)
{
struct pcf85063 *pcf85063;
unsigned int tmp;
int err;
- const struct pcf85063_config *config;
struct nvmem_config nvmem_cfg = {
.name = "pcf85063_nvram",
.reg_read = pcf85063_nvmem_read,
@@ -573,28 +573,22 @@ static int pcf85063_probe(struct i2c_client *client)
.size = 1,
};
- dev_dbg(&client->dev, "%s\n", __func__);
+ dev_dbg(dev, "%s\n", __func__);
- pcf85063 = devm_kzalloc(&client->dev, sizeof(struct pcf85063),
+ pcf85063 = devm_kzalloc(dev, sizeof(struct pcf85063),
GFP_KERNEL);
if (!pcf85063)
return -ENOMEM;
- config = i2c_get_match_data(client);
- if (!config)
- return -ENODEV;
-
- pcf85063->regmap = devm_regmap_init_i2c(client, &config->regmap);
- if (IS_ERR(pcf85063->regmap))
- return PTR_ERR(pcf85063->regmap);
+ pcf85063->regmap = regmap;
- i2c_set_clientdata(client, pcf85063);
+ dev_set_drvdata(dev, pcf85063);
err = regmap_read(pcf85063->regmap, PCF85063_REG_SC, &tmp);
if (err)
- return dev_err_probe(&client->dev, err, "RTC chip is not present\n");
+ return dev_err_probe(dev, err, "RTC chip is not present\n");
- pcf85063->rtc = devm_rtc_allocate_device(&client->dev);
+ pcf85063->rtc = devm_rtc_allocate_device(dev);
if (IS_ERR(pcf85063->rtc))
return PTR_ERR(pcf85063->rtc);
@@ -605,19 +599,17 @@ static int pcf85063_probe(struct i2c_client *client)
* of the registers after the automatic power-on reset...
*/
if (tmp & PCF85063_REG_SC_OS) {
- dev_warn(&client->dev,
- "POR issue detected, sending a SW reset\n");
+ dev_warn(dev, "POR issue detected, sending a SW reset\n");
err = regmap_write(pcf85063->regmap, PCF85063_REG_CTRL1,
PCF85063_REG_CTRL1_SWR);
if (err < 0)
- dev_warn(&client->dev,
- "SW reset failed, trying to continue\n");
+ dev_warn(dev, "SW reset failed, trying to continue\n");
}
- err = pcf85063_load_capacitance(pcf85063, client->dev.of_node,
+ err = pcf85063_load_capacitance(pcf85063, dev->of_node,
config->force_cap_7000 ? 7000 : 0);
if (err < 0)
- dev_warn(&client->dev, "failed to set xtal load capacitance: %d",
+ dev_warn(dev, "failed to set xtal load capacitance: %d",
err);
pcf85063->rtc->ops = &pcf85063_rtc_ops;
@@ -627,13 +619,13 @@ static int pcf85063_probe(struct i2c_client *client)
clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf85063->rtc->features);
clear_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features);
- if (config->has_alarms && client->irq > 0) {
+ if (config->has_alarms && irq > 0) {
unsigned long irqflags = IRQF_TRIGGER_LOW;
- if (dev_fwnode(&client->dev))
+ if (dev_fwnode(dev))
irqflags = 0;
- err = devm_request_threaded_irq(&client->dev, client->irq,
+ err = devm_request_threaded_irq(dev, irq,
NULL, pcf85063_rtc_handle_irq,
irqflags | IRQF_ONESHOT,
"pcf85063", pcf85063);
@@ -642,8 +634,8 @@ static int pcf85063_probe(struct i2c_client *client)
"unable to request IRQ, alarms disabled\n");
} else {
set_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features);
- device_init_wakeup(&client->dev, true);
- err = dev_pm_set_wake_irq(&client->dev, client->irq);
+ device_init_wakeup(dev, true);
+ err = dev_pm_set_wake_irq(dev, irq);
if (err)
dev_err(&pcf85063->rtc->dev,
"failed to enable irq wake\n");
@@ -661,6 +653,8 @@ static int pcf85063_probe(struct i2c_client *client)
return devm_rtc_register_device(pcf85063->rtc);
}
+#if IS_ENABLED(CONFIG_I2C)
+
static const struct i2c_device_id pcf85063_ids[] = {
{ "pca85073a", .driver_data = (kernel_ulong_t)&config_pcf85063a },
{ "pcf85063", .driver_data = (kernel_ulong_t)&config_pcf85063 },
@@ -683,16 +677,65 @@ static const struct of_device_id pcf85063_of_match[] = {
MODULE_DEVICE_TABLE(of, pcf85063_of_match);
#endif
+static int pcf85063_i2c_probe(struct i2c_client *client)
+{
+ const struct pcf85063_config *config;
+ struct regmap *regmap;
+
+ config = i2c_get_match_data(client);
+ if (!config)
+ return -ENODEV;
+
+ regmap = devm_regmap_init_i2c(client, &config->regmap);
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ return pcf85063_probe(&client->dev, regmap, client->irq, config);
+}
+
static struct i2c_driver pcf85063_driver = {
.driver = {
.name = "rtc-pcf85063",
.of_match_table = of_match_ptr(pcf85063_of_match),
},
- .probe = pcf85063_probe,
+ .probe = pcf85063_i2c_probe,
.id_table = pcf85063_ids,
};
-module_i2c_driver(pcf85063_driver);
+static int pcf85063_register_driver(void)
+{
+ return i2c_add_driver(&pcf85063_driver);
+}
+
+static void pcf85063_unregister_driver(void)
+{
+ i2c_del_driver(&pcf85063_driver);
+}
+
+#else
+
+static int pcf85063_register_driver(void)
+{
+ return 0;
+}
+
+static void pcf85063_unregister_driver(void)
+{
+}
+
+#endif /* IS_ENABLED(CONFIG_I2C) */
+
+static int __init pcf85063_init(void)
+{
+ return pcf85063_register_driver();
+}
+module_init(pcf85063_init);
+
+static void __exit pcf85063_exit(void)
+{
+ pcf85063_unregister_driver();
+}
+module_exit(pcf85063_exit);
MODULE_AUTHOR("Søren Andersen <san@rosetechnology.dk>");
MODULE_DESCRIPTION("PCF85063 RTC driver");
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] rtc: pcf85063: add support for RV8063
2025-04-07 19:35 [PATCH 0/3] add support for RV8063 SPI rtc Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 1/3] rtc: pcf85063: create pcf85063_i2c_probe Antoni Pokusinski
@ 2025-04-07 19:35 ` Antoni Pokusinski
2025-04-08 6:14 ` Krzysztof Kozlowski
2025-04-07 19:35 ` [PATCH 3/3] dt-bindings: rtc: add binding " Antoni Pokusinski
2 siblings, 1 reply; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-07 19:35 UTC (permalink / raw)
To: alexandre.belloni, krzk+dt, conor+dt, robh, alexander.stein
Cc: linux-rtc, linux-kernel, devicetree, Antoni Pokusinski
Microcrystal RV8063 is a real-time clock with SPI interface. Its
functionality is very similar to the RV8263 rtc.
Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
---
drivers/rtc/Kconfig | 21 ++++++-----
drivers/rtc/rtc-pcf85063.c | 74 +++++++++++++++++++++++++++++++++++++-
2 files changed, 85 insertions(+), 10 deletions(-)
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 838bdc138ffe..1b9be96faa13 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -483,15 +483,6 @@ config RTC_DRV_PCF8523
This driver can also be built as a module. If so, the module
will be called rtc-pcf8523.
-config RTC_DRV_PCF85063
- tristate "NXP PCF85063"
- select REGMAP_I2C
- help
- If you say yes here you get support for the PCF85063 RTC chip
-
- This driver can also be built as a module. If so, the module
- will be called rtc-pcf85063.
-
config RTC_DRV_PCF85363
tristate "NXP PCF85363"
select REGMAP_I2C
@@ -971,6 +962,18 @@ config RTC_DRV_PCF2127
This driver can also be built as a module. If so, the module
will be called rtc-pcf2127.
+config RTC_DRV_PCF85063
+ tristate "NXP PCF85063"
+ depends on RTC_I2C_AND_SPI
+ select REGMAP_I2C if I2C
+ select REGMAP_SPI if SPI_MASTER
+ help
+ If you say yes here you get support for the PCF85063 and RV8063
+ RTC chips.
+
+ This driver can also be built as a module. If so, the module
+ will be called rtc-pcf85063.
+
config RTC_DRV_RV3029C2
tristate "Micro Crystal RV3029/3049"
depends on RTC_I2C_AND_SPI
diff --git a/drivers/rtc/rtc-pcf85063.c b/drivers/rtc/rtc-pcf85063.c
index 03dfc58f4cd7..512933479dd5 100644
--- a/drivers/rtc/rtc-pcf85063.c
+++ b/drivers/rtc/rtc-pcf85063.c
@@ -17,6 +17,7 @@
#include <linux/of.h>
#include <linux/pm_wakeirq.h>
#include <linux/regmap.h>
+#include <linux/spi/spi.h>
/*
* Information for this driver was pulled from the following datasheets.
@@ -29,6 +30,9 @@
*
* https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV-8263-C7_App-Manual.pdf
* RV8263 -- Rev. 1.0 — January 2019
+ *
+ * https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV-8063-C7_App-Manual.pdf
+ * RV8063 -- Rev. 1.1 - October 2018
*/
#define PCF85063_REG_CTRL1 0x00 /* status */
@@ -559,6 +563,18 @@ static const struct pcf85063_config config_rv8263 = {
.force_cap_7000 = 1,
};
+static const struct pcf85063_config config_rv8063 = {
+ .regmap = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = 0x11,
+ .read_flag_mask = BIT(7) | BIT(5),
+ .write_flag_mask = BIT(5),
+ },
+ .has_alarms = 1,
+ .force_cap_7000 = 1,
+};
+
static int pcf85063_probe(struct device *dev, struct regmap *regmap, int irq,
const struct pcf85063_config *config)
{
@@ -725,14 +741,69 @@ static void pcf85063_unregister_driver(void)
#endif /* IS_ENABLED(CONFIG_I2C) */
+#if IS_ENABLED(CONFIG_SPI_MASTER)
+
+static int rv8063_probe(struct spi_device *spi)
+{
+ const struct pcf85063_config *config = &config_rv8063;
+ struct regmap *regmap;
+
+ regmap = devm_regmap_init_spi(spi, &config->regmap);
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ return pcf85063_probe(&spi->dev, regmap, spi->irq, config);
+}
+
+static struct spi_driver rv8063_driver = {
+ .driver = {
+ .name = "rv8063",
+ },
+ .probe = rv8063_probe,
+};
+
+static int __init rv8063_register_driver(void)
+{
+ return spi_register_driver(&rv8063_driver);
+}
+
+static void __exit rv8063_unregister_driver(void)
+{
+ spi_unregister_driver(&rv8063_driver);
+}
+
+#else
+
+static int __init rv8063_register_driver(void)
+{
+ return 0;
+}
+
+static void __exit rv8063_unregister_driver(void)
+{
+}
+
+#endif /* IS_ENABLED(CONFIG_SPI_MASTER) */
+
static int __init pcf85063_init(void)
{
- return pcf85063_register_driver();
+ int ret;
+
+ ret = pcf85063_register_driver();
+ if (ret)
+ return ret;
+
+ ret = rv8063_register_driver();
+ if (ret)
+ pcf85063_unregister_driver();
+
+ return ret;
}
module_init(pcf85063_init);
static void __exit pcf85063_exit(void)
{
+ rv8063_unregister_driver();
pcf85063_unregister_driver();
}
module_exit(pcf85063_exit);
@@ -740,3 +811,4 @@ module_exit(pcf85063_exit);
MODULE_AUTHOR("Søren Andersen <san@rosetechnology.dk>");
MODULE_DESCRIPTION("PCF85063 RTC driver");
MODULE_LICENSE("GPL");
+MODULE_ALIAS("spi:rv8063");
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] dt-bindings: rtc: add binding for RV8063
2025-04-07 19:35 [PATCH 0/3] add support for RV8063 SPI rtc Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 1/3] rtc: pcf85063: create pcf85063_i2c_probe Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 2/3] rtc: pcf85063: add support for RV8063 Antoni Pokusinski
@ 2025-04-07 19:35 ` Antoni Pokusinski
2025-04-10 21:13 ` Rob Herring
2 siblings, 1 reply; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-07 19:35 UTC (permalink / raw)
To: alexandre.belloni, krzk+dt, conor+dt, robh, alexander.stein
Cc: linux-rtc, linux-kernel, devicetree, Antoni Pokusinski
Microcrystal RV8063 is a real-time clock module with SPI interface.
Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
---
.../devicetree/bindings/rtc/nxp,pcf85063.yaml | 33 ++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
index 2f892f8640d1..cb31c7619d66 100644
--- a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
+++ b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
@@ -12,6 +12,7 @@ maintainers:
properties:
compatible:
enum:
+ - microcrystal,rv8063
- microcrystal,rv8263
- nxp,pcf85063
- nxp,pcf85063a
@@ -44,7 +45,12 @@ properties:
wakeup-source: true
+ spi-cs-high: true
+
+ spi-3wire: true
+
allOf:
+ - $ref: /schemas/spi/spi-peripheral-props.yaml#
- $ref: rtc.yaml#
- if:
properties:
@@ -52,6 +58,7 @@ allOf:
contains:
enum:
- microcrystal,rv8263
+ - microcrystal,rv8063
then:
properties:
quartz-load-femtofarads: false
@@ -65,12 +72,23 @@ allOf:
properties:
quartz-load-femtofarads:
const: 7000
+ - if:
+ properties:
+ compatible:
+ not:
+ contains:
+ enum:
+ - microcrystal,rv8063
+ then:
+ properties:
+ spi-cs-high: false
+ spi-3wire: false
required:
- compatible
- reg
-additionalProperties: false
+unevaluatedProperties: false
examples:
- |
@@ -90,3 +108,16 @@ examples:
};
};
};
+
+ - |
+ spi {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rtc@0 {
+ compatible = "microcrystal,rv8063";
+ reg = <0>;
+ spi-cs-high;
+ spi-3wire;
+ };
+ };
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] rtc: pcf85063: add support for RV8063
2025-04-07 19:35 ` [PATCH 2/3] rtc: pcf85063: add support for RV8063 Antoni Pokusinski
@ 2025-04-08 6:14 ` Krzysztof Kozlowski
2025-04-08 7:36 ` Alexandre Belloni
2025-04-08 19:00 ` Antoni Pokusinski
0 siblings, 2 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2025-04-08 6:14 UTC (permalink / raw)
To: Antoni Pokusinski, alexandre.belloni, krzk+dt, conor+dt, robh,
alexander.stein
Cc: linux-rtc, linux-kernel, devicetree
On 07/04/2025 21:35, Antoni Pokusinski wrote:
> Microcrystal RV8063 is a real-time clock with SPI interface. Its
> functionality is very similar to the RV8263 rtc.
>
> Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
> ---
> drivers/rtc/Kconfig | 21 ++++++-----
> drivers/rtc/rtc-pcf85063.c | 74 +++++++++++++++++++++++++++++++++++++-
> 2 files changed, 85 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 838bdc138ffe..1b9be96faa13 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -483,15 +483,6 @@ config RTC_DRV_PCF8523
> This driver can also be built as a module. If so, the module
> will be called rtc-pcf8523.
>
> -config RTC_DRV_PCF85063
> - tristate "NXP PCF85063"
> - select REGMAP_I2C
> - help
> - If you say yes here you get support for the PCF85063 RTC chip
> -
> - This driver can also be built as a module. If so, the module
> - will be called rtc-pcf85063.
> -
> config RTC_DRV_PCF85363
> tristate "NXP PCF85363"
> select REGMAP_I2C
> @@ -971,6 +962,18 @@ config RTC_DRV_PCF2127
> This driver can also be built as a module. If so, the module
> will be called rtc-pcf2127.
>
> +config RTC_DRV_PCF85063
Why? This breaks the order.
> + tristate "NXP PCF85063"
> + depends on RTC_I2C_AND_SPI
> + select REGMAP_I2C if I2C
> + select REGMAP_SPI if SPI_MASTER
> + help
> + If you say yes here you get support for the PCF85063 and RV8063
> + RTC chips.
> +
> + This driver can also be built as a module. If so, the module
> + will be called rtc-pcf85063.
> +
...
> module_exit(pcf85063_exit);
> @@ -740,3 +811,4 @@ module_exit(pcf85063_exit);
> MODULE_AUTHOR("Søren Andersen <san@rosetechnology.dk>");
> MODULE_DESCRIPTION("PCF85063 RTC driver");
> MODULE_LICENSE("GPL");
> +MODULE_ALIAS("spi:rv8063");
Drop and use proper ID tables.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] rtc: pcf85063: add support for RV8063
2025-04-08 6:14 ` Krzysztof Kozlowski
@ 2025-04-08 7:36 ` Alexandre Belloni
2025-04-08 19:00 ` Antoni Pokusinski
1 sibling, 0 replies; 9+ messages in thread
From: Alexandre Belloni @ 2025-04-08 7:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Antoni Pokusinski, krzk+dt, conor+dt, robh, alexander.stein,
linux-rtc, linux-kernel, devicetree
On 08/04/2025 08:14:36+0200, Krzysztof Kozlowski wrote:
> On 07/04/2025 21:35, Antoni Pokusinski wrote:
> > Microcrystal RV8063 is a real-time clock with SPI interface. Its
> > functionality is very similar to the RV8263 rtc.
> >
> > Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
> > ---
> > drivers/rtc/Kconfig | 21 ++++++-----
> > drivers/rtc/rtc-pcf85063.c | 74 +++++++++++++++++++++++++++++++++++++-
> > 2 files changed, 85 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> > index 838bdc138ffe..1b9be96faa13 100644
> > --- a/drivers/rtc/Kconfig
> > +++ b/drivers/rtc/Kconfig
> > @@ -483,15 +483,6 @@ config RTC_DRV_PCF8523
> > This driver can also be built as a module. If so, the module
> > will be called rtc-pcf8523.
> >
> > -config RTC_DRV_PCF85063
> > - tristate "NXP PCF85063"
> > - select REGMAP_I2C
> > - help
> > - If you say yes here you get support for the PCF85063 RTC chip
> > -
> > - This driver can also be built as a module. If so, the module
> > - will be called rtc-pcf85063.
> > -
> > config RTC_DRV_PCF85363
> > tristate "NXP PCF85363"
> > select REGMAP_I2C
> > @@ -971,6 +962,18 @@ config RTC_DRV_PCF2127
> > This driver can also be built as a module. If so, the module
> > will be called rtc-pcf2127.
> >
> > +config RTC_DRV_PCF85063
>
> Why? This breaks the order.
>
I don't think it does but you can't see it from the diff.
> > + tristate "NXP PCF85063"
> > + depends on RTC_I2C_AND_SPI
> > + select REGMAP_I2C if I2C
> > + select REGMAP_SPI if SPI_MASTER
> > + help
> > + If you say yes here you get support for the PCF85063 and RV8063
> > + RTC chips.
> > +
> > + This driver can also be built as a module. If so, the module
> > + will be called rtc-pcf85063.
> > +
>
>
> ...
>
> > module_exit(pcf85063_exit);
> > @@ -740,3 +811,4 @@ module_exit(pcf85063_exit);
> > MODULE_AUTHOR("Søren Andersen <san@rosetechnology.dk>");
> > MODULE_DESCRIPTION("PCF85063 RTC driver");
> > MODULE_LICENSE("GPL");
> > +MODULE_ALIAS("spi:rv8063");
>
> Drop and use proper ID tables.
>
>
> Best regards,
> Krzysztof
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] rtc: pcf85063: add support for RV8063
2025-04-08 6:14 ` Krzysztof Kozlowski
2025-04-08 7:36 ` Alexandre Belloni
@ 2025-04-08 19:00 ` Antoni Pokusinski
1 sibling, 0 replies; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-08 19:00 UTC (permalink / raw)
To: Krzysztof Kozlowski, linux-rtc, linux-kernel, devicetree
Cc: alexandre.belloni
On Tue, Apr 08, 2025 at 08:14:36AM +0200, Krzysztof Kozlowski wrote:
> On 07/04/2025 21:35, Antoni Pokusinski wrote:
> > Microcrystal RV8063 is a real-time clock with SPI interface. Its
> > functionality is very similar to the RV8263 rtc.
> >
> > Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
> > ---
> > drivers/rtc/Kconfig | 21 ++++++-----
> > drivers/rtc/rtc-pcf85063.c | 74 +++++++++++++++++++++++++++++++++++++-
> > 2 files changed, 85 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> > index 838bdc138ffe..1b9be96faa13 100644
> > --- a/drivers/rtc/Kconfig
> > +++ b/drivers/rtc/Kconfig
> > @@ -483,15 +483,6 @@ config RTC_DRV_PCF8523
> > This driver can also be built as a module. If so, the module
> > will be called rtc-pcf8523.
> >
> > -config RTC_DRV_PCF85063
> > - tristate "NXP PCF85063"
> > - select REGMAP_I2C
> > - help
> > - If you say yes here you get support for the PCF85063 RTC chip
> > -
> > - This driver can also be built as a module. If so, the module
> > - will be called rtc-pcf85063.
> > -
> > config RTC_DRV_PCF85363
> > tristate "NXP PCF85363"
> > select REGMAP_I2C
> > @@ -971,6 +962,18 @@ config RTC_DRV_PCF2127
> > This driver can also be built as a module. If so, the module
> > will be called rtc-pcf2127.
> >
> > +config RTC_DRV_PCF85063
>
> Why? This breaks the order.
>
I moved this config entry to the "SPI and I2C RTC drivers" section,
because the driver supports now both I2C and SPI devices.
> > + tristate "NXP PCF85063"
> > + depends on RTC_I2C_AND_SPI
> > + select REGMAP_I2C if I2C
> > + select REGMAP_SPI if SPI_MASTER
> > + help
> > + If you say yes here you get support for the PCF85063 and RV8063
> > + RTC chips.
> > +
> > + This driver can also be built as a module. If so, the module
> > + will be called rtc-pcf85063.
> > +
>
>
> ...
>
> > module_exit(pcf85063_exit);
> > @@ -740,3 +811,4 @@ module_exit(pcf85063_exit);
> > MODULE_AUTHOR("Søren Andersen <san@rosetechnology.dk>");
> > MODULE_DESCRIPTION("PCF85063 RTC driver");
> > MODULE_LICENSE("GPL");
> > +MODULE_ALIAS("spi:rv8063");
>
> Drop and use proper ID tables.
>
Will fix that in v2, thanks.
>
> Best regards,
> Krzysztof
Kind regards,
Antoni
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] dt-bindings: rtc: add binding for RV8063
2025-04-07 19:35 ` [PATCH 3/3] dt-bindings: rtc: add binding " Antoni Pokusinski
@ 2025-04-10 21:13 ` Rob Herring
2025-04-11 7:11 ` Antoni Pokusinski
0 siblings, 1 reply; 9+ messages in thread
From: Rob Herring @ 2025-04-10 21:13 UTC (permalink / raw)
To: Antoni Pokusinski
Cc: alexandre.belloni, krzk+dt, conor+dt, alexander.stein, linux-rtc,
linux-kernel, devicetree
On Mon, Apr 07, 2025 at 09:35:21PM +0200, Antoni Pokusinski wrote:
> Microcrystal RV8063 is a real-time clock module with SPI interface.
>
> Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
> ---
> .../devicetree/bindings/rtc/nxp,pcf85063.yaml | 33 ++++++++++++++++++-
> 1 file changed, 32 insertions(+), 1 deletion(-)
Bindings come before users (driver).
>
> diff --git a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> index 2f892f8640d1..cb31c7619d66 100644
> --- a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> +++ b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> @@ -12,6 +12,7 @@ maintainers:
> properties:
> compatible:
> enum:
> + - microcrystal,rv8063
> - microcrystal,rv8263
> - nxp,pcf85063
> - nxp,pcf85063a
> @@ -44,7 +45,12 @@ properties:
>
> wakeup-source: true
>
> + spi-cs-high: true
> +
> + spi-3wire: true
> +
> allOf:
> + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> - $ref: rtc.yaml#
> - if:
> properties:
> @@ -52,6 +58,7 @@ allOf:
> contains:
> enum:
> - microcrystal,rv8263
> + - microcrystal,rv8063
> then:
> properties:
> quartz-load-femtofarads: false
> @@ -65,12 +72,23 @@ allOf:
> properties:
> quartz-load-femtofarads:
> const: 7000
> + - if:
> + properties:
> + compatible:
> + not:
> + contains:
> + enum:
> + - microcrystal,rv8063
> + then:
> + properties:
> + spi-cs-high: false
> + spi-3wire: false
>
> required:
> - compatible
> - reg
>
> -additionalProperties: false
> +unevaluatedProperties: false
>
> examples:
> - |
> @@ -90,3 +108,16 @@ examples:
> };
> };
> };
> +
> + - |
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + rtc@0 {
> + compatible = "microcrystal,rv8063";
> + reg = <0>;
> + spi-cs-high;
> + spi-3wire;
> + };
> + };
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] dt-bindings: rtc: add binding for RV8063
2025-04-10 21:13 ` Rob Herring
@ 2025-04-11 7:11 ` Antoni Pokusinski
0 siblings, 0 replies; 9+ messages in thread
From: Antoni Pokusinski @ 2025-04-11 7:11 UTC (permalink / raw)
To: Rob Herring
Cc: alexandre.belloni, krzk+dt, conor+dt, alexander.stein, linux-rtc,
linux-kernel, devicetree
On Thu, Apr 10, 2025 at 04:13:51PM -0500, Rob Herring wrote:
> On Mon, Apr 07, 2025 at 09:35:21PM +0200, Antoni Pokusinski wrote:
> > Microcrystal RV8063 is a real-time clock module with SPI interface.
> >
> > Signed-off-by: Antoni Pokusinski <apokusinski01@gmail.com>
> > ---
> > .../devicetree/bindings/rtc/nxp,pcf85063.yaml | 33 ++++++++++++++++++-
> > 1 file changed, 32 insertions(+), 1 deletion(-)
>
> Bindings come before users (driver).
>
Fixed in v3 already.
Kind regards,
Antoni
> >
> > diff --git a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> > index 2f892f8640d1..cb31c7619d66 100644
> > --- a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> > +++ b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml
> > @@ -12,6 +12,7 @@ maintainers:
> > properties:
> > compatible:
> > enum:
> > + - microcrystal,rv8063
> > - microcrystal,rv8263
> > - nxp,pcf85063
> > - nxp,pcf85063a
> > @@ -44,7 +45,12 @@ properties:
> >
> > wakeup-source: true
> >
> > + spi-cs-high: true
> > +
> > + spi-3wire: true
> > +
> > allOf:
> > + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > - $ref: rtc.yaml#
> > - if:
> > properties:
> > @@ -52,6 +58,7 @@ allOf:
> > contains:
> > enum:
> > - microcrystal,rv8263
> > + - microcrystal,rv8063
> > then:
> > properties:
> > quartz-load-femtofarads: false
> > @@ -65,12 +72,23 @@ allOf:
> > properties:
> > quartz-load-femtofarads:
> > const: 7000
> > + - if:
> > + properties:
> > + compatible:
> > + not:
> > + contains:
> > + enum:
> > + - microcrystal,rv8063
> > + then:
> > + properties:
> > + spi-cs-high: false
> > + spi-3wire: false
> >
> > required:
> > - compatible
> > - reg
> >
> > -additionalProperties: false
> > +unevaluatedProperties: false
> >
> > examples:
> > - |
> > @@ -90,3 +108,16 @@ examples:
> > };
> > };
> > };
> > +
> > + - |
> > + spi {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + rtc@0 {
> > + compatible = "microcrystal,rv8063";
> > + reg = <0>;
> > + spi-cs-high;
> > + spi-3wire;
> > + };
> > + };
> > --
> > 2.25.1
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-04-11 7:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-07 19:35 [PATCH 0/3] add support for RV8063 SPI rtc Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 1/3] rtc: pcf85063: create pcf85063_i2c_probe Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 2/3] rtc: pcf85063: add support for RV8063 Antoni Pokusinski
2025-04-08 6:14 ` Krzysztof Kozlowski
2025-04-08 7:36 ` Alexandre Belloni
2025-04-08 19:00 ` Antoni Pokusinski
2025-04-07 19:35 ` [PATCH 3/3] dt-bindings: rtc: add binding " Antoni Pokusinski
2025-04-10 21:13 ` Rob Herring
2025-04-11 7:11 ` Antoni Pokusinski
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).