blob: 660b9b0e17da3ace711913abbea80bd6ee9c13fb [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 _F_SPIFLASH_SPI_INTERFACE_H__
#define _F_SPIFLASH_SPI_INTERFACE_H__
#include <cstdint>
#include <cstring>
namespace opentitan {
namespace spiflash {
// This class defines the SPI interface used to communicate with an OpenTitan
// device.
class SpiInterface {
public:
SpiInterface() = default;
virtual ~SpiInterface() = default;
// Not copy or movable
SpiInterface(const SpiInterface &) = delete;
SpiInterface &operator=(const SpiInterface &) = delete;
// Initialize SPI interface. Returns true on success.
virtual bool Init() = 0;
// Transmit bytes from |tx| buffer and read data back onto |rx| buffer. The
// number of bytes transferred is defined by |size|.
virtual bool TransmitFrame(const uint8_t *tx, uint8_t *rx, size_t size) = 0;
};
} // namespace spiflash
} // namespace opentitan
#endif // _F_SPIFLASH_SPI_INTERFACE_H__