Software APIs
pinmux_config.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 // See pinmux_config.h for the explaination of this include ordering.
6 #include "sw/device/lib/testing/json/pinmux.h"
7 #undef UJSON_SERDE_IMPL
8 #define UJSON_SERDE_IMPL 1
10 #include "sw/device/lib/base/status.h"
12 #include "sw/device/lib/testing/json/pinmux_config.h"
13 #include "sw/device/lib/testing/test_framework/ujson_ottf.h"
14 
15 status_t pinmux_config(ujson_t *uj, dif_pinmux_t *pinmux) {
16  pinmux_config_t config;
17  TRY(ujson_deserialize_pinmux_config_t(uj, &config));
18 
19  for (size_t i = 0; i < ARRAYSIZE(config.input.peripheral); ++i) {
20  if (config.input.peripheral[i] == kPinmuxPeripheralInEnd) {
21  break;
22  }
23  TRY(dif_pinmux_input_select(pinmux, config.input.peripheral[i],
24  config.input.selector[i]));
25  }
26  for (size_t i = 0; i < ARRAYSIZE(config.output.mio); ++i) {
27  if (config.output.mio[i] == kPinmuxMioOutEnd) {
28  break;
29  }
30  TRY(dif_pinmux_output_select(pinmux, config.output.mio[i],
31  config.output.selector[i]));
32  }
33  return RESP_OK_STATUS(uj);
34 }