Software APIs
dif_rv_dm_autogen.c
1
// Copyright lowRISC contributors (OpenTitan project).
2
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3
// SPDX-License-Identifier: Apache-2.0
4
5
6
7
8
9
10
11
// THIS FILE HAS BEEN GENERATED, DO NOT EDIT MANUALLY. COMMAND:
12
// util/autogen_dif.py -i hw/ip/rv_dm/data/rv_dm.hjson -o
13
// bazel-out/k8-fastbuild/bin/sw/device/lib/dif/autogen
14
15
16
#include <stdint.h>
17
18
#include "
sw/device/lib/dif/dif_base.h
"
19
#include "sw/device/lib/dif/autogen/dif_rv_dm_autogen.h"
20
21
#include "hw/top/rv_dm_regs.h"
// Generated.
22
23
24
OT_WARN_UNUSED_RESULT
25
dif_result_t
dif_rv_dm_init(
26
mmio_region_t
base_addr,
27
dif_rv_dm_t
*rv_dm) {
28
if
(rv_dm == NULL) {
29
return
kDifBadArg
;
30
}
31
32
rv_dm->
dt
= kDtRvDmCount;
33
rv_dm->
base_addr
= base_addr;
34
35
return
kDifOk
;
36
}
37
38
OT_WARN_UNUSED_RESULT
39
dif_result_t
dif_rv_dm_init_from_dt(
40
dt_rv_dm_t
dt,
41
dif_rv_dm_t
*rv_dm) {
42
if
(rv_dm == NULL) {
43
return
kDifBadArg
;
44
}
45
46
rv_dm->
dt
= dt;
47
rv_dm->
base_addr
= mmio_region_from_addr(dt_rv_dm_primary_reg_block(dt));
48
49
return
kDifOk
;
50
}
51
52
dif_result_t
dif_rv_dm_get_dt(
53
const
dif_rv_dm_t
*rv_dm,
54
dt_rv_dm_t
*dt) {
55
if
(rv_dm->
dt
== kDtRvDmCount || dt == NULL) {
56
return
kDifBadArg
;
57
}
58
*dt = rv_dm->
dt
;
59
return
kDifOk
;
60
}
61
62
dif_result_t
dif_rv_dm_alert_force(
63
const
dif_rv_dm_t
*rv_dm,
64
dif_rv_dm_alert_t
alert) {
65
if
(rv_dm == NULL) {
66
return
kDifBadArg
;
67
}
68
69
bitfield_bit32_index_t
alert_idx;
70
switch
(alert) {
71
case
kDifRvDmAlertFatalFault
:
72
alert_idx = RV_DM_ALERT_TEST_FATAL_FAULT_BIT;
73
break
;
74
default
:
75
return
kDifBadArg
;
76
}
77
78
uint32_t alert_test_reg = bitfield_bit32_write(0, alert_idx,
true
);
79
mmio_region_write32(
80
rv_dm->
base_addr
,
81
(ptrdiff_t)RV_DM_ALERT_TEST_REG_OFFSET,
82
alert_test_reg);
83
84
85
return
kDifOk
;
86
}
87
(earlgrey)
sw
device
lib
dif
autogen
dif_rv_dm_autogen.c
Return to
OpenTitan Documentation