|  | // 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_ */ |