blob: b58a3d000e36a178c2f158e6af613575a3fc0564 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_
#define OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_
#include "sw/device/lib/ujson/ujson_derive.h"
#ifdef __cplusplus
extern "C" {
#endif
// clang-format off
#define ENUM_GPIO_SET_ACTION(_, value) \
value(_, Write) \
value(_, WriteAll) \
value(_, WriteMasked) \
value(_, SetEnabled) \
value(_, SetEnabledAll) \
value(_, SetEnabledMasked) \
value(_, SetInputNoiseFilter)
UJSON_SERDE_ENUM(GpioAction, gpio_action_t, ENUM_GPIO_SET_ACTION);
#define STRUCT_GPIO_SET(field, string) \
field(action, gpio_action_t) \
field(pin_mask, uint32_t) \
field(state, uint32_t)
UJSON_SERDE_STRUCT(GpioSet, gpio_set_t, STRUCT_GPIO_SET);
#define STRUCT_GPIO_GET(field, string) \
field(state, uint32_t)
UJSON_SERDE_STRUCT(GpioGet, gpio_get_t, STRUCT_GPIO_GET);
#ifndef RUST_PREPROCESSOR_EMIT
#include "sw/device/lib/dif/dif_gpio.h"
status_t gpio_set(ujson_t *uj, const dif_gpio_t *gpio);
status_t gpio_get(ujson_t *uj, const dif_gpio_t *gpio);
#endif
// clang-format on
#ifdef __cplusplus
}
#endif
#endif // OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_GPIO_H_