| // 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_SPI_DEVICE_TESTUTILS_H_ |
| #define OPENTITAN_SW_DEVICE_LIB_TESTING_SPI_DEVICE_TESTUTILS_H_ |
| |
| #include <assert.h> |
| #include <stdint.h> |
| |
| #include "sw/device/lib/dif/dif_spi_device.h" |
| |
| /** |
| * A set of typical opcodes for named flash commands. |
| */ |
| typedef enum spi_device_flash_opcode { |
| kSpiDeviceFlashOpReadJedec = 0x9f, |
| kSpiDeviceFlashOpReadSfdp = 0x5a, |
| kSpiDeviceFlashOpReadNormal = 0x03, |
| kSpiDeviceFlashOpReadFast = 0x0b, |
| kSpiDeviceFlashOpReadDual = 0x3b, |
| kSpiDeviceFlashOpReadQuad = 0x6b, |
| kSpiDeviceFlashOpWriteEnable = 0x06, |
| kSpiDeviceFlashOpWriteDisable = 0x04, |
| kSpiDeviceFlashOpReadStatus1 = 0x05, |
| kSpiDeviceFlashOpReadStatus2 = 0x35, |
| kSpiDeviceFlashOpReadStatus3 = 0x15, |
| kSpiDeviceFlashOpWriteStatus1 = 0x01, |
| kSpiDeviceFlashOpWriteStatus2 = 0x31, |
| kSpiDeviceFlashOpWriteStatus3 = 0x11, |
| kSpiDeviceFlashOpChipErase = 0xc7, |
| kSpiDeviceFlashOpSectorErase = 0x20, |
| kSpiDeviceFlashOpPageProgram = 0x02, |
| kSpiDeviceFlashOpEnter4bAddr = 0xb7, |
| kSpiDeviceFlashOpExit4bAddr = 0xe9, |
| } spi_device_flash_opcode_t; |
| |
| /** |
| * The index where read and write commands begin in the command slots. |
| */ |
| enum spi_device_command_slot { |
| kSpiDeviceReadCommandSlotBase = 0, |
| kSpiDeviceWriteCommandSlotBase = 11, |
| }; |
| |
| /** |
| * Configure the SPI device in passthrough mode, allowing the following |
| * commands to pass through: |
| * - ReadJedec |
| * - ReadSfdp |
| * - ReadNormal |
| * - ReadFast |
| * - ReadDual |
| * - ReadQuad |
| * - WriteEnable |
| * - WriteDisable |
| * - ReadStatus1 |
| * - ReadStatus2 |
| * - ReadStatus3 |
| * - WriteStatus1 |
| * - WriteStatus2 |
| * - WriteStatus3 |
| * - ChipErase |
| * - SectorErase |
| * - PageProgram |
| * - Enter4bAddr |
| * - Exit4bAddr |
| * |
| * @param spi_device A spi_device DIF handle. |
| * @param filters A bitmap of command slots to enable passthrough filters for. |
| * @param upload_write_commands Whether to upload write commands. |
| */ |
| void spi_device_testutils_configure_passthrough( |
| dif_spi_device_handle_t *spi_device, uint32_t filters, |
| bool upload_write_commands); |
| |
| #endif // OPENTITAN_SW_DEVICE_LIB_TESTING_SPI_DEVICE_TESTUTILS_H_ |