mbox series

[v4,0/3] Add RTC for MStar SoCs

Message ID 20210823171613.18941-1-romain.perier@gmail.com (mailing list archive)
Headers show
Series Add RTC for MStar SoCs | expand

Message

Romain Perier Aug. 23, 2021, 5:16 p.m. UTC
This patches series adds a new driver for the RTC found in the Mstar
MSC313e SoCs and newer. It adds a basic rtc driver, the corresponding
devicetree bindings and its documentation.

The rtctest (from selftests) has been passed on this driver, with the
following output:
$ rtctest 
TAP version 13
1..7
# Starting 7 tests from 2 test cases.
#  RUN           rtc.date_read ...
# rtctest.c:47:date_read:Current RTC date/time is 01/01/1970 00:02:03.
#            OK  rtc.date_read
ok 1 rtc.date_read
#  RUN           rtc.uie_read ...
#            OK  rtc.uie_read
ok 2 rtc.uie_read
#  RUN           rtc.uie_select ...
#            OK  rtc.uie_select
ok 3 rtc.uie_select
#  RUN           rtc.alarm_alm_set ...
# rtctest.c:136:alarm_alm_set:Alarm time now set to 00:02:12.
# rtctest.c:156:alarm_alm_set:data: 1a0
#            OK  rtc.alarm_alm_set
ok 4 rtc.alarm_alm_set
#  RUN           rtc.alarm_wkalm_set ...
# rtctest.c:192:alarm_wkalm_set:Alarm time now set to 01/01/1970 00:02:15.
#            OK  rtc.alarm_wkalm_set
ok 5 rtc.alarm_wkalm_set
#  RUN           rtc.alarm_alm_set_minute ...
# rtctest.c:238:alarm_alm_set_minute:Alarm time now set to 00:03:00.
# rtctest.c:258:alarm_alm_set_minute:data: 1a0
#            OK  rtc.alarm_alm_set_minute
ok 6 [  180.545015] random: fast init done
rtc.alarm_alm_set_minute
#  RUN           rtc.alarm_wkalm_set_minute ...
# rtctest.c:294:alarm_wkalm_set_minute:Alarm time now set to 01/01/1970 00:04:00.
#            OK  rtc.alarm_wkalm_set_minute
ok 7 rtc.alarm_wkalm_set_minute
# PASSED: 7 / 7 tests passed.
# Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0

Changes since v3:
- Fixed bad device table in MODULE_DEVICE_TABLE()
- Use reverse christmas tree ordering for local variables in the probe()
  function
- Removed the "clk" field from the msc313_rtc data structure (not
  required, only used in the probe function)

Changes since v2:
- Added dual-license header to the dt-bindings documentation
- Reordered dts entries, so the rtc device_node is before the watchdog
  device_node (because it has a lower address)
- Updated rtc range_max to U32_MAX
- Leave range_min to 0 (default value when it is not set at all)
- Fixed the CNT_EN_BIT logic, so .read_time will only read the time when
  the RTC has been previously set and has a valid state (which is not
  the case after a POR).

Changes since v1:
- Fixed the DT bindings documentation and fixed dt_binding_check (an
  include was missing)
- Added || COMPILE_TEST to kconfig
- Removed rtc_valid_tm from msc313_rtc_read_time()
- Removed the last write of the msc313_rtc_set_time() function (not
  required) and improved comments
- Replaced the relaxed io by normal io in msc313_rtc_interrupt()
- Added checks to be sure that the alarm fired in msc313_rtc_interrupt()
- Removed msc313_rtc_remove() (replaced by devm_add_action_or_reset)
- Removed unnecessary software reset of the IP in the probe function
  (the soft reset is never executed, it is a mistake from the initial
  refactoring)
- Switched to devm_rtc_allocate_device() and devm_rtc_register_device(),
  and dropped the error message related to the rtc device allocation
- Added an RTC range by setting .range_min and .range_max
- Added the "start-year" property to the DT bindings documentation

Daniel Palmer (1):
  rtc: Add support for the MSTAR MSC313 RTC

Romain Perier (2):
  dt-bindings: rtc: Add Mstar MSC313e RTC devicetree bindings
    documentation
  ARM: dts: mstar: Add rtc device node

 .../bindings/rtc/mstar,msc313-rtc.yaml        |  49 ++++
 MAINTAINERS                                   |   1 +
 arch/arm/boot/dts/mstar-v7.dtsi               |   8 +
 drivers/rtc/Kconfig                           |  10 +
 drivers/rtc/Makefile                          |   1 +
 drivers/rtc/rtc-msc313.c                      | 258 ++++++++++++++++++
 6 files changed, 327 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/rtc/mstar,msc313-rtc.yaml
 create mode 100644 drivers/rtc/rtc-msc313.c

Comments

Romain Perier Sept. 14, 2021, 5:20 p.m. UTC | #1
Hi,

ping,

Regards,
Romain

Le lun. 23 août 2021 à 19:16, Romain Perier <romain.perier@gmail.com> a écrit :
>
> This patches series adds a new driver for the RTC found in the Mstar
> MSC313e SoCs and newer. It adds a basic rtc driver, the corresponding
> devicetree bindings and its documentation.
>
> The rtctest (from selftests) has been passed on this driver, with the
> following output:
> $ rtctest
> TAP version 13
> 1..7
> # Starting 7 tests from 2 test cases.
> #  RUN           rtc.date_read ...
> # rtctest.c:47:date_read:Current RTC date/time is 01/01/1970 00:02:03.
> #            OK  rtc.date_read
> ok 1 rtc.date_read
> #  RUN           rtc.uie_read ...
> #            OK  rtc.uie_read
> ok 2 rtc.uie_read
> #  RUN           rtc.uie_select ...
> #            OK  rtc.uie_select
> ok 3 rtc.uie_select
> #  RUN           rtc.alarm_alm_set ...
> # rtctest.c:136:alarm_alm_set:Alarm time now set to 00:02:12.
> # rtctest.c:156:alarm_alm_set:data: 1a0
> #            OK  rtc.alarm_alm_set
> ok 4 rtc.alarm_alm_set
> #  RUN           rtc.alarm_wkalm_set ...
> # rtctest.c:192:alarm_wkalm_set:Alarm time now set to 01/01/1970 00:02:15.
> #            OK  rtc.alarm_wkalm_set
> ok 5 rtc.alarm_wkalm_set
> #  RUN           rtc.alarm_alm_set_minute ...
> # rtctest.c:238:alarm_alm_set_minute:Alarm time now set to 00:03:00.
> # rtctest.c:258:alarm_alm_set_minute:data: 1a0
> #            OK  rtc.alarm_alm_set_minute
> ok 6 [  180.545015] random: fast init done
> rtc.alarm_alm_set_minute
> #  RUN           rtc.alarm_wkalm_set_minute ...
> # rtctest.c:294:alarm_wkalm_set_minute:Alarm time now set to 01/01/1970 00:04:00.
> #            OK  rtc.alarm_wkalm_set_minute
> ok 7 rtc.alarm_wkalm_set_minute
> # PASSED: 7 / 7 tests passed.
> # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0
>
> Changes since v3:
> - Fixed bad device table in MODULE_DEVICE_TABLE()
> - Use reverse christmas tree ordering for local variables in the probe()
>   function
> - Removed the "clk" field from the msc313_rtc data structure (not
>   required, only used in the probe function)
>
> Changes since v2:
> - Added dual-license header to the dt-bindings documentation
> - Reordered dts entries, so the rtc device_node is before the watchdog
>   device_node (because it has a lower address)
> - Updated rtc range_max to U32_MAX
> - Leave range_min to 0 (default value when it is not set at all)
> - Fixed the CNT_EN_BIT logic, so .read_time will only read the time when
>   the RTC has been previously set and has a valid state (which is not
>   the case after a POR).
>
> Changes since v1:
> - Fixed the DT bindings documentation and fixed dt_binding_check (an
>   include was missing)
> - Added || COMPILE_TEST to kconfig
> - Removed rtc_valid_tm from msc313_rtc_read_time()
> - Removed the last write of the msc313_rtc_set_time() function (not
>   required) and improved comments
> - Replaced the relaxed io by normal io in msc313_rtc_interrupt()
> - Added checks to be sure that the alarm fired in msc313_rtc_interrupt()
> - Removed msc313_rtc_remove() (replaced by devm_add_action_or_reset)
> - Removed unnecessary software reset of the IP in the probe function
>   (the soft reset is never executed, it is a mistake from the initial
>   refactoring)
> - Switched to devm_rtc_allocate_device() and devm_rtc_register_device(),
>   and dropped the error message related to the rtc device allocation
> - Added an RTC range by setting .range_min and .range_max
> - Added the "start-year" property to the DT bindings documentation
>
> Daniel Palmer (1):
>   rtc: Add support for the MSTAR MSC313 RTC
>
> Romain Perier (2):
>   dt-bindings: rtc: Add Mstar MSC313e RTC devicetree bindings
>     documentation
>   ARM: dts: mstar: Add rtc device node
>
>  .../bindings/rtc/mstar,msc313-rtc.yaml        |  49 ++++
>  MAINTAINERS                                   |   1 +
>  arch/arm/boot/dts/mstar-v7.dtsi               |   8 +
>  drivers/rtc/Kconfig                           |  10 +
>  drivers/rtc/Makefile                          |   1 +
>  drivers/rtc/rtc-msc313.c                      | 258 ++++++++++++++++++
>  6 files changed, 327 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/rtc/mstar,msc313-rtc.yaml
>  create mode 100644 drivers/rtc/rtc-msc313.c
>
> --
> 2.30.2
>
Alexandre Belloni Sept. 14, 2021, 7:57 p.m. UTC | #2
On 14/09/2021 19:20:56+0200, Romain Perier wrote:
> Hi,
> 
> ping,
> 

Well, this was sent to close from the merge window and the merge window
just closed :)

> Regards,
> Romain
> 
> Le lun. 23 août 2021 à 19:16, Romain Perier <romain.perier@gmail.com> a écrit :
> >
> > This patches series adds a new driver for the RTC found in the Mstar
> > MSC313e SoCs and newer. It adds a basic rtc driver, the corresponding
> > devicetree bindings and its documentation.
> >
> > The rtctest (from selftests) has been passed on this driver, with the
> > following output:
> > $ rtctest
> > TAP version 13
> > 1..7
> > # Starting 7 tests from 2 test cases.
> > #  RUN           rtc.date_read ...
> > # rtctest.c:47:date_read:Current RTC date/time is 01/01/1970 00:02:03.
> > #            OK  rtc.date_read
> > ok 1 rtc.date_read
> > #  RUN           rtc.uie_read ...
> > #            OK  rtc.uie_read
> > ok 2 rtc.uie_read
> > #  RUN           rtc.uie_select ...
> > #            OK  rtc.uie_select
> > ok 3 rtc.uie_select
> > #  RUN           rtc.alarm_alm_set ...
> > # rtctest.c:136:alarm_alm_set:Alarm time now set to 00:02:12.
> > # rtctest.c:156:alarm_alm_set:data: 1a0
> > #            OK  rtc.alarm_alm_set
> > ok 4 rtc.alarm_alm_set
> > #  RUN           rtc.alarm_wkalm_set ...
> > # rtctest.c:192:alarm_wkalm_set:Alarm time now set to 01/01/1970 00:02:15.
> > #            OK  rtc.alarm_wkalm_set
> > ok 5 rtc.alarm_wkalm_set
> > #  RUN           rtc.alarm_alm_set_minute ...
> > # rtctest.c:238:alarm_alm_set_minute:Alarm time now set to 00:03:00.
> > # rtctest.c:258:alarm_alm_set_minute:data: 1a0
> > #            OK  rtc.alarm_alm_set_minute
> > ok 6 [  180.545015] random: fast init done
> > rtc.alarm_alm_set_minute
> > #  RUN           rtc.alarm_wkalm_set_minute ...
> > # rtctest.c:294:alarm_wkalm_set_minute:Alarm time now set to 01/01/1970 00:04:00.
> > #            OK  rtc.alarm_wkalm_set_minute
> > ok 7 rtc.alarm_wkalm_set_minute
> > # PASSED: 7 / 7 tests passed.
> > # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0
> >
> > Changes since v3:
> > - Fixed bad device table in MODULE_DEVICE_TABLE()
> > - Use reverse christmas tree ordering for local variables in the probe()
> >   function
> > - Removed the "clk" field from the msc313_rtc data structure (not
> >   required, only used in the probe function)
> >
> > Changes since v2:
> > - Added dual-license header to the dt-bindings documentation
> > - Reordered dts entries, so the rtc device_node is before the watchdog
> >   device_node (because it has a lower address)
> > - Updated rtc range_max to U32_MAX
> > - Leave range_min to 0 (default value when it is not set at all)
> > - Fixed the CNT_EN_BIT logic, so .read_time will only read the time when
> >   the RTC has been previously set and has a valid state (which is not
> >   the case after a POR).
> >
> > Changes since v1:
> > - Fixed the DT bindings documentation and fixed dt_binding_check (an
> >   include was missing)
> > - Added || COMPILE_TEST to kconfig
> > - Removed rtc_valid_tm from msc313_rtc_read_time()
> > - Removed the last write of the msc313_rtc_set_time() function (not
> >   required) and improved comments
> > - Replaced the relaxed io by normal io in msc313_rtc_interrupt()
> > - Added checks to be sure that the alarm fired in msc313_rtc_interrupt()
> > - Removed msc313_rtc_remove() (replaced by devm_add_action_or_reset)
> > - Removed unnecessary software reset of the IP in the probe function
> >   (the soft reset is never executed, it is a mistake from the initial
> >   refactoring)
> > - Switched to devm_rtc_allocate_device() and devm_rtc_register_device(),
> >   and dropped the error message related to the rtc device allocation
> > - Added an RTC range by setting .range_min and .range_max
> > - Added the "start-year" property to the DT bindings documentation
> >
> > Daniel Palmer (1):
> >   rtc: Add support for the MSTAR MSC313 RTC
> >
> > Romain Perier (2):
> >   dt-bindings: rtc: Add Mstar MSC313e RTC devicetree bindings
> >     documentation
> >   ARM: dts: mstar: Add rtc device node
> >
> >  .../bindings/rtc/mstar,msc313-rtc.yaml        |  49 ++++
> >  MAINTAINERS                                   |   1 +
> >  arch/arm/boot/dts/mstar-v7.dtsi               |   8 +
> >  drivers/rtc/Kconfig                           |  10 +
> >  drivers/rtc/Makefile                          |   1 +
> >  drivers/rtc/rtc-msc313.c                      | 258 ++++++++++++++++++
> >  6 files changed, 327 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/rtc/mstar,msc313-rtc.yaml
> >  create mode 100644 drivers/rtc/rtc-msc313.c
> >
> > --
> > 2.30.2
> >
Romain Perier Sept. 15, 2021, 11:45 a.m. UTC | #3
Le mar. 14 sept. 2021 à 21:57, Alexandre Belloni
<alexandre.belloni@bootlin.com> a écrit :
>
> On 14/09/2021 19:20:56+0200, Romain Perier wrote:
> > Hi,
> >
> > ping,
> >
>
> Well, this was sent to close from the merge window and the merge window
> just closed :)

Ah right, I have forgotten that, my bad ^^.  Ignore my comment then

Romain

>
> > Regards,
> > Romain
> >
> > Le lun. 23 août 2021 à 19:16, Romain Perier <romain.perier@gmail.com> a écrit :
> > >
> > > This patches series adds a new driver for the RTC found in the Mstar
> > > MSC313e SoCs and newer. It adds a basic rtc driver, the corresponding
> > > devicetree bindings and its documentation.
> > >
> > > The rtctest (from selftests) has been passed on this driver, with the
> > > following output:
> > > $ rtctest
> > > TAP version 13
> > > 1..7
> > > # Starting 7 tests from 2 test cases.
> > > #  RUN           rtc.date_read ...
> > > # rtctest.c:47:date_read:Current RTC date/time is 01/01/1970 00:02:03.
> > > #            OK  rtc.date_read
> > > ok 1 rtc.date_read
> > > #  RUN           rtc.uie_read ...
> > > #            OK  rtc.uie_read
> > > ok 2 rtc.uie_read
> > > #  RUN           rtc.uie_select ...
> > > #            OK  rtc.uie_select
> > > ok 3 rtc.uie_select
> > > #  RUN           rtc.alarm_alm_set ...
> > > # rtctest.c:136:alarm_alm_set:Alarm time now set to 00:02:12.
> > > # rtctest.c:156:alarm_alm_set:data: 1a0
> > > #            OK  rtc.alarm_alm_set
> > > ok 4 rtc.alarm_alm_set
> > > #  RUN           rtc.alarm_wkalm_set ...
> > > # rtctest.c:192:alarm_wkalm_set:Alarm time now set to 01/01/1970 00:02:15.
> > > #            OK  rtc.alarm_wkalm_set
> > > ok 5 rtc.alarm_wkalm_set
> > > #  RUN           rtc.alarm_alm_set_minute ...
> > > # rtctest.c:238:alarm_alm_set_minute:Alarm time now set to 00:03:00.
> > > # rtctest.c:258:alarm_alm_set_minute:data: 1a0
> > > #            OK  rtc.alarm_alm_set_minute
> > > ok 6 [  180.545015] random: fast init done
> > > rtc.alarm_alm_set_minute
> > > #  RUN           rtc.alarm_wkalm_set_minute ...
> > > # rtctest.c:294:alarm_wkalm_set_minute:Alarm time now set to 01/01/1970 00:04:00.
> > > #            OK  rtc.alarm_wkalm_set_minute
> > > ok 7 rtc.alarm_wkalm_set_minute
> > > # PASSED: 7 / 7 tests passed.
> > > # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0
> > >
> > > Changes since v3:
> > > - Fixed bad device table in MODULE_DEVICE_TABLE()
> > > - Use reverse christmas tree ordering for local variables in the probe()
> > >   function
> > > - Removed the "clk" field from the msc313_rtc data structure (not
> > >   required, only used in the probe function)
> > >
> > > Changes since v2:
> > > - Added dual-license header to the dt-bindings documentation
> > > - Reordered dts entries, so the rtc device_node is before the watchdog
> > >   device_node (because it has a lower address)
> > > - Updated rtc range_max to U32_MAX
> > > - Leave range_min to 0 (default value when it is not set at all)
> > > - Fixed the CNT_EN_BIT logic, so .read_time will only read the time when
> > >   the RTC has been previously set and has a valid state (which is not
> > >   the case after a POR).
> > >
> > > Changes since v1:
> > > - Fixed the DT bindings documentation and fixed dt_binding_check (an
> > >   include was missing)
> > > - Added || COMPILE_TEST to kconfig
> > > - Removed rtc_valid_tm from msc313_rtc_read_time()
> > > - Removed the last write of the msc313_rtc_set_time() function (not
> > >   required) and improved comments
> > > - Replaced the relaxed io by normal io in msc313_rtc_interrupt()
> > > - Added checks to be sure that the alarm fired in msc313_rtc_interrupt()
> > > - Removed msc313_rtc_remove() (replaced by devm_add_action_or_reset)
> > > - Removed unnecessary software reset of the IP in the probe function
> > >   (the soft reset is never executed, it is a mistake from the initial
> > >   refactoring)
> > > - Switched to devm_rtc_allocate_device() and devm_rtc_register_device(),
> > >   and dropped the error message related to the rtc device allocation
> > > - Added an RTC range by setting .range_min and .range_max
> > > - Added the "start-year" property to the DT bindings documentation
> > >
> > > Daniel Palmer (1):
> > >   rtc: Add support for the MSTAR MSC313 RTC
> > >
> > > Romain Perier (2):
> > >   dt-bindings: rtc: Add Mstar MSC313e RTC devicetree bindings
> > >     documentation
> > >   ARM: dts: mstar: Add rtc device node
> > >
> > >  .../bindings/rtc/mstar,msc313-rtc.yaml        |  49 ++++
> > >  MAINTAINERS                                   |   1 +
> > >  arch/arm/boot/dts/mstar-v7.dtsi               |   8 +
> > >  drivers/rtc/Kconfig                           |  10 +
> > >  drivers/rtc/Makefile                          |   1 +
> > >  drivers/rtc/rtc-msc313.c                      | 258 ++++++++++++++++++
> > >  6 files changed, 327 insertions(+)
> > >  create mode 100644 Documentation/devicetree/bindings/rtc/mstar,msc313-rtc.yaml
> > >  create mode 100644 drivers/rtc/rtc-msc313.c
> > >
> > > --
> > > 2.30.2
> > >
>
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com