[PATCH v6 0/2] Amlogic Meson6/8/8b/8m2 SoC RTC driver

From: Martin Blumenstingl
Date: Sat Jan 19 2019 - 09:44:38 EST

This series adds support for the RTC on the 32-bit Amlogic Meson SoCs.

The series does not have any build dependencies, but does require
device-tree entries for the relevant boards.

The series is tested by myself on the Meson8b EC-100 board. Earlier
versions of this series were tested on an Odroid-C1 board with a
battery pack attached by Ben Dooks and Kevin Hilman.

I will send the DT changes in a second series so that they can be
merged once the dependencies have been satisfied.

Changes since v5 at [1]:
- get rid of a dependency on the SZ_16 macro (fixes a kbuild test robot
compile error)
- rebased on top of v5.0-rc1
- I kept the copyrights / author as in v4 because Ben didn't ask me to
do it yet (please speak up if I should change it)

Changes since v4 at [0]:
- resurrected Ben's patches after 2 years: first I made it apply
onto linux-next again
- I decided to update the author of the patch to my own name since I
made a lot of changes compared to Ben's implementation (list of
changes below, the diff-stat was: 223 insertions, 163 deletions)
- make the dt-bindings file name (rtc-meson.txt) match the driver name
- add a Meson8m2 compatible
- add the clocks and vdd-supply properties to the match the actual IP
block implementation
- make the resets and interrupts properties mandatory to match the
actual IP block implementation
- removed the status property from the dt-bindings example
- fix MODULE_LICENSE to match the actual license (GPL v2)
- switch to SPDX-License-Identifier
- sort the Kconfig option alphabetically
- use BIT() and GENMASK() macros consistenly
- replace #define RTC_REG(x) with actual #defines which match the names
from the public S805 datasheet
- adjust existing #defines to align with the public S805 datasheet
- add support for the 4x32bit NVMEM (regmem) data
- implement regmap_bus to access the serial registers. this allows
getting rid of the custom locking code and makes the NVMEM
implementation much easier.
- use regmap also for accessing the peripheral registers to make the
code shorter
- add support for the vdd-supply regulator
- switch from devm_rtc_device_register to devm_rtc_allocate_device and
- set range_max to U32_MAX
- use rtc_time64_to_tm and rtc_tm_to_time64
- simplify timeout handling and use shorter timeouts (the driver from
the 3.10 BSP kernel uses udelay resolution (100us after the reset, 5us
for the "comm delay") as well as busy-looping from 0..40000 to wait
for "s_ready"
- removed debug messages which are only printing register values (as
these can now be seen in

[0] https://www.spinics.net/lists/devicetree/msg135413.html
[1] https://patchwork.ozlabs.org/cover/1006597/

Martin Blumenstingl (2):
dt-bindings: rtc: add device-tree bindings for the Amlogic Meson RTC
rtc: support for the Amlogic Meson RTC

.../devicetree/bindings/rtc/rtc-meson.txt | 32 ++
drivers/rtc/Kconfig | 11 +
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-meson.c | 409 ++++++++++++++++++
4 files changed, 453 insertions(+)
create mode 100644 Documentation/devicetree/bindings/rtc/rtc-meson.txt
create mode 100644 drivers/rtc/rtc-meson.c