Hardware Abstraction Layer for FreeRTOS
spi_prv.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: MIT */
2
/*
3
* Author: Andreas Werner <kernel@andy89.org>
4
* Date: 2016
5
*/
6
#ifndef SPI_PRV_H_
7
#define SPI_PRV_H_
8
#ifndef SPI_PRV
9
# error "Never include this file out of a SPI driver"
10
#endif
11
#include <stdbool.h>
12
#include <stdint.h>
13
#include <
hal.h
>
14
#define SPI_ALREDY_INITED 1
15
int32_t
spi_genericInit
(
struct
spi *spi);
16
#ifdef CONFIG_SPI_THREAD_SAVE
17
# define spi_lock(u, w, e) HAL_LOCK(u, w, e)
18
# define spi_unlock(u, e) HAL_UNLOCK(u, e)
19
#else
20
# define spi_lock(u, w, e)
21
# define spi_unlock(u, e)
22
#endif
23
#define SPI_ADDDEV(ns, p) HAL_ADDDEV(spi, ns, p)
24
HAL_DEFINE_GLOBAL_ARRAY
(spi);
25
#define SPI_GET_DEV(index) HAL_GET_DEV(spi, index)
26
#ifndef CONFIG_SPI_MULTI
27
# define SPI_OPS(ns)
28
# define SPI_INIT_DEV(ns)
29
# define SPI_INIT(ns, index, mode, opt) struct spi *spi_init(uint32_t index, enum spi_mode mode, struct spi_opt *opt)
30
# define SPI_DEINIT(ns, s) int32_t spi_deinit(struct spi *s)
31
# define SPI_SET_CALLBACK(ns, s, callback, data) int32_t spi_setCallback(struct spi *s, bool (*callback)(struct spi_slave *slave, void *data), void *data)
32
33
# define SPI_SLAVE_INIT(ns, s, options) struct spi_slave *spiSlave_init(struct spi *s, struct spi_opt *options)
34
# define SPI_SLAVE_DEINIT(ns, s) int32_t spiSlave_deinit(struct spi_slave *s)
35
# define SPI_SLAVE_TRANSFER(ns, s, sendData, recvData, len, waittime) int32_t spiSlave_transfer(struct spi_slave *s, uint16_t *sendData, uint16_t *recvData, uint32_t len, TickType_t waittime)
36
# define SPI_SLAVE_SEND(ns, s, data, len, waittime) int32_t spiSlave_send(struct spi_slave *s, uint16_t *data, uint32_t len, TickType_t waittime)
37
# define SPI_SLAVE_RECV(ns, s, data, len, waittime) int32_t spiSlave_recv(struct spi_slave *s, uint16_t *data, uint32_t len, TickType_t waittime)
38
39
# define SPI_SLAVE_TRANSFER_ISR(ns,s, sendData, rescvData, len) int32_t spiSlave_transferISR(struct spi_slave *s, uint16_t *sendData, uint16_t *recvData, uint32_t len)
40
# define SPI_SLAVE_SEND_ISR(ns,s, data, len) int32_t spiSlave_sendISR(struct spi_slave *s, uint16_t *data, uint32_t len)
41
# define SPI_SLAVE_RECV_ISR(ns, s, data, len) int32_t spiSlave_recvISR(struct spi_slave *s, uint16_t *data, uint32_t len)
42
#else
43
# define SPI_OPS(ns) static const struct spi_ops ns##_ops = { \
44
.spi_init = &ns##_spi_init, \
45
.spi_deinit = &ns##_spi_deinit, \
46
.spi_setCallback = &ns##_spi_setCallback, \
47
.spiSlave_init = &ns##_spiSlave_init, \
48
.spiSlave_deinit = &ns##_spiSlave_deinit, \
49
.spiSlave_transfer = &ns##_spiSlave_transfer, \
50
.spiSlave_send = &ns##_spiSlave_send, \
51
.spiSlave_recv = &ns##_spiSlave_recv, \
52
.spiSlave_transferISR = ns##_spiSlave_transferISR, \
53
.spiSlave_sendISR = ns##_spiSlave_sendISR, \
54
.spiSlave_recvISR = ns##_spiSlave_recvISR, \
55
}
56
# define SPI_INIT_DEV(ns) .gen.ops = &ns##_ops,
57
# define SPI_INIT(ns, index, mode, opt) static struct spi *ns##_spi_init(uint32_t index, enum spi_mode mode, struct spi_opt *opt)
58
# define SPI_DEINIT(ns, s) static int32_t ns##_spi_deinit(struct spi *s)
59
# define SPI_SET_CALLBACK(ns, s, callback, data) static int32_t ns##_spi_setCallback(struct spi *s, bool (*callback)(struct spi_slave *slave, void *data), void *data)
60
61
# define SPI_SLAVE_INIT(ns, s, options) static struct spi_slave *ns##_spiSlave_init(struct spi *s, struct spi_opt *options)
62
# define SPI_SLAVE_DEINIT(ns, s) static int32_t ns##_spiSlave_deinit(struct spi_slave *s)
63
# define SPI_SLAVE_TRANSFER(ns, s, sendData, recvData, len, waittime) static int32_t ns##_spiSlave_transfer(struct spi_slave *s, uint16_t *sendData, uint16_t *recvData, uint32_t len, TickType_t waittime)
64
# define SPI_SLAVE_SEND(ns, s, data, len, waittime) static int32_t ns##_spiSlave_send(struct spi_slave *s, uint16_t *data, uint32_t len, TickType_t waittime)
65
# define SPI_SLAVE_RECV(ns, s, data, len, waittime) static int32_t ns##_spiSlave_recv(struct spi_slave *s, uint16_t *data, uint32_t len, TickType_t waittime)
66
67
# define SPI_SLAVE_TRANSFER_ISR(ns,s, sendData, rescvData, len) static int32_t ns##_spiSlave_transferISR(struct spi_slave *s, uint16_t *sendData, uint16_t *recvData, uint32_t len)
68
# define SPI_SLAVE_SEND_ISR(ns,s, data, len) static int32_t ns##_spiSlave_sendISR(struct spi_slave *s, uint16_t *data, uint32_t len)
69
# define SPI_SLAVE_RECV_ISR(ns, s, data, len) static int32_t ns##_spiSlave_recvISR(struct spi_slave *s, uint16_t *data, uint32_t len)
70
#endif
71
#endif
hal.h
HAL_DEFINE_GLOBAL_ARRAY
HAL_DEFINE_GLOBAL_ARRAY(spi)
spi_genericInit
int32_t spi_genericInit(struct spi *spi)
driver
include
spi_prv.h
Generated on Tue Aug 17 2021 15:19:23 for Hardware Abstraction Layer for FreeRTOS by
1.8.20