// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

#ifndef _SPI_DEVICE_H_
#define _SPI_DEVICE_H_

#include <stdint.h>

/**
 * Init SPI Device
 *
 * Configure registers, RXF_ADDR, TXF_ADDR, CTRL.TIMER_V
 */
void spid_init(void);

/**
 * Send data over SPI
 *
 * @param data pointer to buffer of uint_8 to send
 * @param len_bytes number of bytes to send
 * @return number of bytes actually sent (<len if no space in the fifo)
 */
uint32_t spid_send(void *data, uint32_t len_bytes);

/**
 * Read the amount of the data from SRAM RX FIFO
 *
 * If remained data is smaller than length, it returns only up to data.
 */
uint32_t spid_read_nb(void *data, uint32_t len);

/**
 * Returns the number of bytes available to read on the RX buffer
 */
uint32_t spid_bytes_available(void);

#endif /* _SPI_DEVICE_H_ */
