diff options
author | Juergen Borleis <jbe@pengutronix.de> | 2015-04-27 09:59:48 -0400 |
---|---|---|
committer | Alexandre Belloni <alexandre.belloni@free-electrons.com> | 2015-06-19 14:03:21 -0400 |
commit | 3ba3fab765beecd599d8e8e00dc2ed4306518dfd (patch) | |
tree | e6f6bb3bc993cca222a72b96185dbc0e65e32a5c /drivers/rtc/rtc-imxdi.c | |
parent | e30d31317bb01832379d86826cba1e3dcff78987 (diff) |
rtc: imxdi: add some background info about the states the machine can be in
Document the i.MX DryIce machine states.
Signed-off-by: Juergen Borleis <jbe@pengutronix.de>
Signed-off-by: Robert Schwebel <rsc@pengutronix.de>
[rsc: got NDA clearance from Freescale]
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Diffstat (limited to 'drivers/rtc/rtc-imxdi.c')
-rw-r--r-- | drivers/rtc/rtc-imxdi.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/rtc/rtc-imxdi.c b/drivers/rtc/rtc-imxdi.c index 056ef6c951ae..63ca52b2029b 100644 --- a/drivers/rtc/rtc-imxdi.c +++ b/drivers/rtc/rtc-imxdi.c | |||
@@ -129,6 +129,49 @@ struct imxdi_dev { | |||
129 | struct work_struct work; | 129 | struct work_struct work; |
130 | }; | 130 | }; |
131 | 131 | ||
132 | /* Some background: | ||
133 | * | ||
134 | * The DryIce unit is a complex security/tamper monitor device. To be able do | ||
135 | * its job in a useful manner it runs a bigger statemachine to bring it into | ||
136 | * security/tamper failure state and once again to bring it out of this state. | ||
137 | * | ||
138 | * This unit can be in one of three states: | ||
139 | * | ||
140 | * - "NON-VALID STATE" | ||
141 | * always after the battery power was removed | ||
142 | * - "FAILURE STATE" | ||
143 | * if one of the enabled security events has happened | ||
144 | * - "VALID STATE" | ||
145 | * if the unit works as expected | ||
146 | * | ||
147 | * Everything stops when the unit enters the failure state including the RTC | ||
148 | * counter (to be able to detect the time the security event happened). | ||
149 | * | ||
150 | * The following events (when enabled) let the DryIce unit enter the failure | ||
151 | * state: | ||
152 | * | ||
153 | * - wire-mesh-tamper detect | ||
154 | * - external tamper B detect | ||
155 | * - external tamper A detect | ||
156 | * - temperature tamper detect | ||
157 | * - clock tamper detect | ||
158 | * - voltage tamper detect | ||
159 | * - RTC counter overflow | ||
160 | * - monotonic counter overflow | ||
161 | * - external boot | ||
162 | * | ||
163 | * If we find the DryIce unit in "FAILURE STATE" and the TDCHL cleared, we | ||
164 | * can only detect this state. In this case the unit is completely locked and | ||
165 | * must force a second "SYSTEM POR" to bring the DryIce into the | ||
166 | * "NON-VALID STATE" + "FAILURE STATE" where a recovery is possible. | ||
167 | * If the TDCHL is set in the "FAILURE STATE" we are out of luck. In this case | ||
168 | * a battery power cycle is required. | ||
169 | * | ||
170 | * In the "NON-VALID STATE" + "FAILURE STATE" we can clear the "FAILURE STATE" | ||
171 | * and recover the DryIce unit. By clearing the "NON-VALID STATE" as the last | ||
172 | * task, we bring back this unit into life. | ||
173 | */ | ||
174 | |||
132 | /* | 175 | /* |
133 | * enable a dryice interrupt | 176 | * enable a dryice interrupt |
134 | */ | 177 | */ |