Software APIs
gpio.h
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 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_
5 #define OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_
6 
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 // clang-format off
12 
13 #define MODULE_ID MAKE_MODULE_ID('j', 'g', 'h')
14 
15 #define ENUM_GPIO_SET_ACTION(_, value) \
16  value(_, Write) \
17  value(_, WriteAll) \
18  value(_, WriteMasked) \
19  value(_, SetEnabled) \
20  value(_, SetEnabledAll) \
21  value(_, SetEnabledMasked) \
22  value(_, SetInputNoiseFilter) \
23  value(_, IrqRestoreAll) \
24  value(_, IrqDisableAll) \
25  value(_, IrqAcknowledgeAll) \
26  value(_, IrqSetTriggerRisingEdge) \
27  value(_, IrqSetTriggerFallingEdge) \
28  value(_, IrqSetTriggerHigh) \
29  value(_, IrqSetTriggerLow)
30 
31 UJSON_SERDE_ENUM(GpioAction, gpio_action_t, ENUM_GPIO_SET_ACTION);
32 
33 #define STRUCT_GPIO_SET(field, string) \
34  field(action, gpio_action_t) \
35  field(pin_mask, uint32_t) \
36  field(state, uint32_t)
37 UJSON_SERDE_STRUCT(GpioSet, gpio_set_t, STRUCT_GPIO_SET);
38 
39 #define STRUCT_GPIO_GET(field, string) \
40  field(state, uint32_t)
41 UJSON_SERDE_STRUCT(GpioGet, gpio_get_t, STRUCT_GPIO_GET);
42 
43 #ifndef RUST_PREPROCESSOR_EMIT
45 
46 status_t gpio_set(ujson_t *uj, const dif_gpio_t *gpio);
47 status_t gpio_get(ujson_t *uj, const dif_gpio_t *gpio);
48 #endif
49 
50 #undef MODULE_ID
51 
52 // clang-format on
53 #ifdef __cplusplus
54 }
55 #endif
56 #endif // OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_