1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
From 8273b9e71c1f5c1f6f74faac21de64bf42686817 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Mon, 19 Apr 2021 10:33:24 +0100
Subject: [PATCH] overlays: spi-rtc: Add ds3232 and ds3234
Extend the spi-rtc overlay to support the ds3232 and ds3234 RTCs, as
well as adding parameters to select difference SPI controllers and
chip selects.
N.B. The default CS is now active-low - use the "cs_high" parameter to
override this.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
---
arch/arm/boot/dts/overlays/README | 12 +++-
.../arm/boot/dts/overlays/spi-rtc-overlay.dts | 58 ++++++++++++++++---
2 files changed, 61 insertions(+), 9 deletions(-)
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -2689,7 +2689,17 @@ Params: <None>
Name: spi-rtc
Info: Adds support for a number of SPI Real Time Clock devices
Load: dtoverlay=spi-rtc,<param>=<val>
-Params: pcf2123 Select the PCF2123 device
+Params: ds3232 Select the DS3232 device
+ ds3234 Select the DS3234 device
+ pcf2123 Select the PCF2123 device
+
+ spi0_0 Use spi0.0 (default)
+ spi0_1 Use spi0.1
+ spi1_0 Use spi1.0
+ spi1_1 Use spi1.1
+ spi2_0 Use spi2.0
+ spi2_1 Use spi2.1
+ cs_high This device requires an active-high CS
Name: spi0-1cs
--- a/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
+++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
@@ -1,3 +1,4 @@
+// Definitions for several SPI-based Real Time Clocks
/dts-v1/;
/plugin/;
@@ -5,29 +6,70 @@
compatible = "brcm,bcm2835";
fragment@0 {
- target = <&spidev0>;
+ target = <&rtc>;
__dormant__ {
- status = "disabled";
+ compatible = "maxim,ds3232";
};
};
fragment@1 {
- target = <&spi0>;
+ target = <&rtc>;
+ __dormant__ {
+ compatible = "maxim,ds3234";
+ };
+ };
+
+ fragment@2 {
+ target = <&rtc>;
__dormant__ {
+ compatible = "nxp,rtc-pcf2123";
+ };
+ };
+
+ spidev: fragment@100 {
+ target = <&spidev0>;
+ __overlay__ {
+ status = "disabled";
+ };
+ };
+
+ frag101: fragment@101 {
+ target = <&spi0>;
+ __overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
- rtc-pcf2123@0 {
- compatible = "nxp,rtc-pcf2123";
- spi-max-frequency = <5000000>;
- spi-cs-high = <1>;
+ rtc: rtc@0 {
reg = <0>;
+ spi-max-frequency = <5000000>;
};
};
};
__overrides__ {
- pcf2123 = <0>, "=0=1";
+ spi0_0 = <&spidev>, "target:0=",<&spidev0>,
+ <&frag101>, "target:0=",<&spi0>,
+ <&rtc>, "reg:0=0";
+ spi0_1 = <&spidev>, "target:0=",<&spidev1>,
+ <&frag101>, "target:0=",<&spi0>,
+ <&rtc>, "reg:0=1";
+ spi1_0 = <0>,"-100",
+ <&frag101>, "target:0=",<&spi1>,
+ <&rtc>, "reg:0=0";
+ spi1_1 = <0>,"-100",
+ <&frag101>, "target:0=",<&spi1>,
+ <&rtc>, "reg:0=1";
+ spi2_0 = <0>,"-100",
+ <&frag101>, "target:0=",<&spi2>,
+ <&rtc>, "reg:0=0";
+ spi2_1 = <0>,"-100",
+ <&frag101>, "target:0=",<&spi2>,
+ <&rtc>, "reg:0=1";
+ cs_high = <&rtc>, "spi-cs-high?";
+
+ ds3232 = <0>,"+0";
+ ds3234 = <0>,"+1";
+ pcf2123 = <0>,"+2";
};
};
|