Software APIs
spi_passthru.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_SPI_PASSTHRU_H_
5#define OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_SPI_PASSTHRU_H_
6
7#include "sw/device/lib/ujson/ujson_derive.h"
8#ifdef __cplusplus
9extern "C" {
10#endif
11// clang-format off
12
13#define MODULE_ID MAKE_MODULE_ID('j', 's', 'p')
14
15#define STRUCT_CONFIG_JEDEC_ID(field, string) \
16 field(device_id, uint16_t) \
17 field(manufacturer_id, uint8_t) \
18 field(continuation_code, uint8_t) \
19 field(continuation_len, uint8_t)
20UJSON_SERDE_STRUCT(ConfigJedecId, config_jedec_id_t, STRUCT_CONFIG_JEDEC_ID);
21
22#define STRUCT_STATUS_REGISTER(field, string) \
23 field(status, uint32_t) \
24 field(addr_4b, bool)
25UJSON_SERDE_STRUCT(StatusRegister, status_register_t, STRUCT_STATUS_REGISTER);
26
27#define STRUCT_SFDP_DATA(field, string) \
28 field(data, uint8_t, 256)
29UJSON_SERDE_STRUCT(SfdpData, sfdp_data_t, STRUCT_SFDP_DATA);
30
31#define STRUCT_UPLOAD_INFO(field, string) \
32 field(opcode, uint8_t) \
33 field(has_address, bool) \
34 field(addr_4b, bool) \
35 field(data_len, uint16_t) \
36 field(flash_status, uint32_t) \
37 field(address, uint32_t) \
38 field(data, uint8_t, 256)
39UJSON_SERDE_STRUCT(UploadInfo, upload_info_t, STRUCT_UPLOAD_INFO);
40
41#define STRUCT_SPI_FLASH_READ_ID(field, string) \
42 field(device_id, uint16_t) \
43 field(manufacturer_id, uint8_t) \
44 field(continuation_len, uint8_t)
45UJSON_SERDE_STRUCT(SpiFlashReadId, spi_flash_read_id_t,
46 STRUCT_SPI_FLASH_READ_ID);
47
48#define STRUCT_SPI_MAILBOX_MAP(field, string) \
49 field(address, uint32_t)
50UJSON_SERDE_STRUCT(SpiMailboxMap, spi_mailbox_map_t,
51 STRUCT_SPI_MAILBOX_MAP);
52
53#define STRUCT_SPI_MAILBOX_WRITE(field, string) \
54 field(offset, uint16_t) \
55 field(length, uint16_t) \
56 field(data, uint8_t, 256)
57UJSON_SERDE_STRUCT(SpiMailboxWrite, spi_mailbox_write_t,
58 STRUCT_SPI_MAILBOX_WRITE);
59
60#define STRUCT_SPI_FLASH_READ_SFDP(field, string) \
61 field(address, uint32_t) \
62 field(length, uint16_t)
63UJSON_SERDE_STRUCT(SpiFlashReadSfdp, spi_flash_read_sfdp_t,
64 STRUCT_SPI_FLASH_READ_SFDP);
65
66#define STRUCT_SPI_FLASH_ERASE_SECTOR(field, string) \
67 field(address, uint32_t) \
68 field(addr4b, bool)
69UJSON_SERDE_STRUCT(SpiFlashEraseSector, spi_flash_erase_sector_t, STRUCT_SPI_FLASH_ERASE_SECTOR);
70
71#define STRUCT_SPI_FLASH_WRITE(field, string) \
72 field(address, uint32_t) \
73 field(addr4b, bool) \
74 field(data, uint8_t, 256) \
75 field(length, uint16_t)
76UJSON_SERDE_STRUCT(SpiFlashWrite, spi_flash_write_t, STRUCT_SPI_FLASH_WRITE);
77
78#define STRUCT_SPI_PASSTHRU_SWAP_MAP(field, string) \
79 field(mask, uint32_t) \
80 field(value, uint32_t)
81UJSON_SERDE_STRUCT(SpiPassthruSwapMap, spi_passthru_swap_map_t, STRUCT_SPI_PASSTHRU_SWAP_MAP);
82
83#undef MODULE_ID
84
85// clang-format on
86#ifdef __cplusplus
87}
88#endif
89#endif // OPENTITAN_SW_DEVICE_LIB_TESTING_JSON_SPI_PASSTHRU_H_