RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
spi.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2016, 2017 embedded brains GmbH. All rights reserved.
11 *
12 * embedded brains GmbH
13 * Dornierstr. 4
14 * 82178 Puchheim
15 * Germany
16 * <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef _DEV_SPI_SPI_H
24#define _DEV_SPI_SPI_H
25
26#include <linux/spi/spidev.h>
27
28#include <rtems.h>
29#include <rtems/seterr.h>
30#include <rtems/thread.h>
31
32#ifdef __cplusplus
33extern "C" {
34#endif /* __cplusplus */
35
37
38typedef struct spi_bus spi_bus;
39
55#define SPI_BUS_OBTAIN _IO(SPI_IOC_MAGIC, 13)
56
62#define SPI_BUS_RELEASE _IO(SPI_IOC_MAGIC, 23)
63
67struct spi_bus {
79 int (*transfer)(spi_bus *bus, const spi_ioc_transfer *msgs, uint32_t msg_count);
80
90 int (*setup)(spi_bus *bus);
91
97 void (*destroy)(spi_bus *bus);
98
102 rtems_recursive_mutex mutex;
103
107 uint32_t max_speed_hz;
108
112 uint32_t speed_hz;
113
118
122 uint8_t cs;
123
128
133
137 uint32_t mode;
138
143 uint16_t delay_usecs;
144};
145
161int spi_bus_init(spi_bus *bus);
162
181
187void spi_bus_destroy(spi_bus *bus);
188
195
209 spi_bus *bus,
210 const char *bus_path
211);
212
215#ifdef __cplusplus
216}
217#endif /* __cplusplus */
218
219#endif /* _DEV_SPI_SPI_H */
spi_bus * spi_bus_alloc_and_init(size_t size)
Allocates a bus control from the heap and initializes it.
Definition: spi-bus.c:326
int spi_bus_init(spi_bus *bus)
Initializes a bus control.
Definition: spi-bus.c:319
int spi_bus_register(spi_bus *bus, const char *bus_path)
Registers a bus control.
Definition: spi-bus.c:252
void spi_bus_destroy_and_free(spi_bus *bus)
Destroys a bus control and frees its memory.
Definition: spi-bus.c:313
void spi_bus_destroy(spi_bus *bus)
Destroys a bus control.
Definition: spi-bus.c:308
Data which Ease the Burden of Consistently Setting Errno.
RTEMS Port of Linux SPI API.
SPI bus control.
Definition: spi.h:67
void(* destroy)(spi_bus *bus)
Destroys the bus.
Definition: spi.h:97
uint8_t cs
Indicates which device is selected by chip select.
Definition: spi.h:122
uint32_t mode
Current mode.
Definition: spi.h:137
uint16_t delay_usecs
Indicates the delay between transfers on different chip select devices.
Definition: spi.h:143
int(* transfer)(spi_bus *bus, const spi_ioc_transfer *msgs, uint32_t msg_count)
Transfers SPI messages.
Definition: spi.h:79
bool lsb_first
Indicates if LSB is supposed to be transmitted first.
Definition: spi.h:132
int(* setup)(spi_bus *bus)
Checks if maximum speed and bits per word are in a valid range for the device.
Definition: spi.h:90
bool cs_change
Indicates if chip select must be set high after transfer.
Definition: spi.h:117
uint32_t speed_hz
Indicates the speed of the current device message.
Definition: spi.h:112
rtems_recursive_mutex mutex
Mutex to protect the bus access.
Definition: spi.h:102
uint32_t max_speed_hz
Maximum Speed in Hz.
Definition: spi.h:107
uint8_t bits_per_word
Indicates the bits per word used on the device.
Definition: spi.h:127
SPI transfer message.
Definition: spidev.h:145
unsigned size
Definition: tte.h:1