11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 2aca1545dSVictor Chong /* 3aca1545dSVictor Chong * Copyright (c) 2016, Linaro Limited 4aca1545dSVictor Chong */ 5aca1545dSVictor Chong 6aca1545dSVictor Chong #ifndef __SPI_H__ 7aca1545dSVictor Chong #define __SPI_H__ 8aca1545dSVictor Chong 9aca1545dSVictor Chong #include <types_ext.h> 10aca1545dSVictor Chong 11aca1545dSVictor Chong enum spi_mode { 12aca1545dSVictor Chong SPI_MODE0, 13aca1545dSVictor Chong SPI_MODE1, 14aca1545dSVictor Chong SPI_MODE2, 15aca1545dSVictor Chong SPI_MODE3 16aca1545dSVictor Chong }; 17aca1545dSVictor Chong 189a2efe04SVictor Chong enum spi_result { 199a2efe04SVictor Chong SPI_OK, 209a2efe04SVictor Chong SPI_ERR_CFG, 219a2efe04SVictor Chong SPI_ERR_PKTCNT, 229a2efe04SVictor Chong SPI_ERR_GENERIC 239a2efe04SVictor Chong }; 249a2efe04SVictor Chong 25aca1545dSVictor Chong struct spi_chip { 26aca1545dSVictor Chong const struct spi_ops *ops; 27aca1545dSVictor Chong }; 28aca1545dSVictor Chong 29aca1545dSVictor Chong struct spi_ops { 306356eeb2SVictor Chong void (*configure)(struct spi_chip *chip); 316356eeb2SVictor Chong void (*start)(struct spi_chip *chip); 329a2efe04SVictor Chong enum spi_result (*txrx8)(struct spi_chip *chip, uint8_t *wdat, 339a2efe04SVictor Chong uint8_t *rdat, size_t num_pkts); 349a2efe04SVictor Chong enum spi_result (*txrx16)(struct spi_chip *chip, uint16_t *wdat, 359a2efe04SVictor Chong uint16_t *rdat, size_t num_pkts); 366356eeb2SVictor Chong void (*end)(struct spi_chip *chip); 37*71716c2aSVahid Dukandar void (*flushfifo)(struct spi_chip *chip); 38aca1545dSVictor Chong }; 39aca1545dSVictor Chong 40aca1545dSVictor Chong #endif /* __SPI_H__ */ 41aca1545dSVictor Chong 42