Software APIs
dif_lc_ctrl_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/lc_ctrl/data/lc_ctrl.hjson -o
13// bazel-out/k8-fastbuild/bin/sw/device/lib/dif/autogen
14
15
16#include <stdint.h>
17
19#include "sw/device/lib/dif/autogen/dif_lc_ctrl_autogen.h"
20
21#include "hw/top/lc_ctrl_regs.h" // Generated.
22
23
25dif_result_t dif_lc_ctrl_init(
26 mmio_region_t base_addr,
27 dif_lc_ctrl_t *lc_ctrl) {
28 if (lc_ctrl == NULL) {
29 return kDifBadArg;
30 }
31
32 lc_ctrl->dt = kDtLcCtrlCount;
33 lc_ctrl->base_addr = base_addr;
34
35 return kDifOk;
36}
37
39dif_result_t dif_lc_ctrl_init_from_dt(
40 dt_lc_ctrl_t dt,
41 dif_lc_ctrl_t *lc_ctrl) {
42 if (lc_ctrl == NULL) {
43 return kDifBadArg;
44 }
45
46 lc_ctrl->dt = dt;
47 lc_ctrl->base_addr = mmio_region_from_addr(dt_lc_ctrl_primary_reg_block(dt));
48
49 return kDifOk;
50}
51
52dif_result_t dif_lc_ctrl_get_dt(
53 const dif_lc_ctrl_t *lc_ctrl,
54 dt_lc_ctrl_t *dt) {
55 if ((int)lc_ctrl->dt == kDtLcCtrlCount || dt == NULL) {
56 return kDifBadArg;
57 }
58 *dt = lc_ctrl->dt;
59 return kDifOk;
60}
61
62 dif_result_t dif_lc_ctrl_alert_force(
63 const dif_lc_ctrl_t *lc_ctrl,
64 dif_lc_ctrl_alert_t alert) {
65 if (lc_ctrl == NULL) {
66 return kDifBadArg;
67 }
68
69 bitfield_bit32_index_t alert_idx;
70 switch (alert) {
72 alert_idx = LC_CTRL_ALERT_TEST_FATAL_PROG_ERROR_BIT;
73 break;
75 alert_idx = LC_CTRL_ALERT_TEST_FATAL_STATE_ERROR_BIT;
76 break;
78 alert_idx = LC_CTRL_ALERT_TEST_FATAL_BUS_INTEG_ERROR_BIT;
79 break;
80 default:
81 return kDifBadArg;
82 }
83
84 uint32_t alert_test_reg = bitfield_bit32_write(0, alert_idx, true);
85 mmio_region_write32(
86 lc_ctrl->base_addr,
87 (ptrdiff_t)LC_CTRL_ALERT_TEST_REG_OFFSET,
88 alert_test_reg);
89
90
91 return kDifOk;
92}
93