mbox series

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

Message ID 20210823171613.18941-1-romain.perier@gmail.com
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

Rob Herring (Arm) Aug. 24, 2021, 12:13 p.m. UTC | #1
On Mon, 23 Aug 2021 19:16:11 +0200, Romain Perier wrote:
> This adds the documentation for the devicetree bindings of the Mstar

> MSC313e RTC driver, found from MSC313e SoCs and newer.

> 

> Signed-off-by: Romain Perier <romain.perier@gmail.com>

> ---

>  .../bindings/rtc/mstar,msc313-rtc.yaml        | 49 +++++++++++++++++++

>  1 file changed, 49 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/rtc/mstar,msc313-rtc.yaml

> 


Reviewed-by: Rob Herring <robh@kernel.org>
Romain Perier Sept. 14, 2021, 5:20 p.m. UTC | #2
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 | #3
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

> >


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Romain Perier Sept. 15, 2021, 11:45 a.m. UTC | #4
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
Alexandre Belloni Sept. 25, 2021, 10:19 p.m. UTC | #5
On Mon, 23 Aug 2021 19:16:11 +0200, Romain Perier wrote:
> This adds the documentation for the devicetree bindings of the Mstar

> MSC313e RTC driver, found from MSC313e SoCs and newer.

> 

> 


Applied, thanks!

[1/3] dt-bindings: rtc: Add Mstar MSC313e RTC devicetree bindings documentation
      commit: dd49cbedde8a0f1e0d09698f9cad791d37a8e03e

[2/3] rtc: Add support for the MSTAR MSC313 RTC
      commit: be7d9c9161b9c76edeff15e79edc2f256568fe05


Best regards,
-- 
Alexandre Belloni <alexandre.belloni@bootlin.com>