38#define SPI_NAME_PREFIX "SPI"
39#define SPISLAVE_NAME_PREFIX "SPISlave"
42#define SPI_TYPE_NONE 0
43#define SPI_TYPE_MASTER 1
44#define SPI_TYPE_SLAVE 2
49#define SPI_STATE_DISABLED 0
50#define SPI_STATE_ENABLED 1
52#define SPI_STATE_MAX 1
55#define SPI_FLAG_NONE 0x00000000
56#define SPI_FLAG_SLAVE 0x00000001
57#define SPI_FLAG_4WIRE 0x00000002
58#define SPI_FLAG_3WIRE 0x00000004
59#define SPI_FLAG_LOSSI 0x00000008
60#define SPI_FLAG_CPOL 0x00000010
61#define SPI_FLAG_CPHA 0x00000020
62#define SPI_FLAG_CSPOL 0x00000040
63#define SPI_FLAG_NO_CS 0x00000080
64#define SPI_FLAG_DMA 0x00000100
67#define SPI_TRANSFER_NONE 0x00000000
68#define SPI_TRANSFER_DMA 0x00000001
69#define SPI_TRANSFER_PIO 0x00000002
70#define SPI_TRANSFER_DELAY 0x00000004
struct _DEVICE DEVICE
Definition devices.h:373
#define SPI_CS_MAX
Definition globalconst.h:1486
#define STDCALL
Definition globaltypes.h:45
HANDLE SEMAPHORE_HANDLE
Definition globaltypes.h:107
HANDLE MUTEX_HANDLE
Definition globaltypes.h:105
uint32_t STDCALL(* spi_device_get_clock_polarity_proc)(SPI_DEVICE *spi)
Definition spi.h:132
SPI_DEVICE *STDCALL spi_device_create(void)
Create a new SPI entry.
uint32_t STDCALL(* spi_device_write_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:121
uint32_t STDCALL spi_mode_to_string(uint32_t mode, char *string, uint32_t len)
uint32_t STDCALL(* spi_device_set_clock_polarity_proc)(SPI_DEVICE *spi, uint32_t clockpolarity)
Definition spi.h:133
uint32_t STDCALL(* spi_device_read_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:119
uint32_t STDCALL spi_type_to_string(uint32_t spitype, char *string, uint32_t len)
Convert an SPI type value to a string.
uint32_t STDCALL spi_device_set_byte_delay(SPI_DEVICE *spi, uint32_t delay)
Set the delay between bytes written for the specified SPI device.
uint32_t STDCALL spi_clock_polarity_to_string(uint32_t polarity, char *string, uint32_t len)
uint32_t STDCALL(* spi_device_set_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity)
Definition spi.h:136
uint32_t STDCALL(* spi_device_start_proc)(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity)
Definition spi.h:116
uint32_t STDCALL spi_chip_select_to_string(uint16_t chipselect, char *string, uint32_t len)
uint32_t STDCALL(* spi_enumerate_cb)(SPI_DEVICE *spi, void *data)
Definition spi.h:111
uint32_t STDCALL spi_device_destroy(SPI_DEVICE *spi)
Destroy an existing SPI entry.
uint32_t STDCALL(* spi_device_set_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate)
Definition spi.h:127
uint32_t STDCALL(* spi_device_write_proc)(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count)
Definition spi.h:120
uint32_t STDCALL(* spi_device_set_clock_phase_proc)(SPI_DEVICE *spi, uint32_t clockphase)
Definition spi.h:130
uint32_t STDCALL spi_device_get_byte_delay(SPI_DEVICE *spi)
Get the delay between bytes written for the specified SPI device.
uint32_t STDCALL spi_device_register(SPI_DEVICE *spi)
Register a new SPI in the SPI table.
uint32_t STDCALL(* spi_device_get_properties_proc)(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Definition spi.h:141
uint32_t STDCALL spi_device_get_properties(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Get the properties for the specified SPI device.
SPI_DEVICE *STDCALL spi_device_find_by_description(const char *description)
Find an SPI device by description in the device table.
SPI_DEVICE *STDCALL spi_device_find_by_name(const char *name)
Find an SPI device by name in the device table.
uint32_t STDCALL spi_device_get_clock_rate(SPI_DEVICE *spi, uint16_t chipselect)
Get the clock rate of the specified SPI device.
struct _SPI_PROPERTIES SPI_PROPERTIES
Definition spi.h:75
uint32_t STDCALL spi_device_set_clock_polarity(SPI_DEVICE *spi, uint32_t clockpolarity)
Set the clock polarity for the specified SPI device.
uint32_t STDCALL(* spi_device_get_select_polarity_proc)(SPI_DEVICE *spi, uint16_t chipselect)
Definition spi.h:135
uint32_t STDCALL spi_device_start(SPI_DEVICE *spi, uint32_t mode, uint32_t clockrate, uint32_t clockphase, uint32_t clockpolarity)
Start the specified SPI device ready for writing and reading.
uint32_t STDCALL(* spi_device_get_clock_phase_proc)(SPI_DEVICE *spi)
Definition spi.h:129
uint32_t STDCALL spi_device_set_select_polarity(SPI_DEVICE *spi, uint16_t chipselect, uint32_t selectpolarity)
Set the chip select polarity for the specified SPI device.
uint32_t STDCALL spi_device_set_clock_phase(SPI_DEVICE *spi, uint32_t clockphase)
Set the clock phase for the specified SPI device.
uint32_t STDCALL spi_device_write(SPI_DEVICE *spi, uint16_t chipselect, void *source, uint32_t size, uint32_t flags, uint32_t *count)
Write data to the specified SPI device Because SPI writes and then reads for each byte,...
struct _SPI_CHIP_SELECT SPI_CHIP_SELECT
Definition spi.h:93
uint32_t STDCALL spi_state_to_string(uint32_t spistate, char *string, uint32_t len)
Convert an SPI state value to a string.
SPI_DEVICE *STDCALL spi_device_check(SPI_DEVICE *spi)
Check if the supplied SPI is in the SPI table.
uint32_t STDCALL(* spi_device_stop_proc)(SPI_DEVICE *spi)
Definition spi.h:117
uint32_t STDCALL spi_device_enumerate(spi_enumerate_cb callback, void *data)
Enumerate all SPI devices in the SPI table.
uint32_t STDCALL spi_device_read(SPI_DEVICE *spi, uint16_t chipselect, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Read data from the specified SPI device Because SPI writes and then reads for each byte,...
uint32_t STDCALL spi_device_notification(SPI_DEVICE *spi, spi_notification_cb callback, void *data, uint32_t notification, uint32_t flags)
Register a notification for SPI device changes.
uint32_t STDCALL(* spi_notification_cb)(DEVICE *device, void *data, uint32_t notification)
Definition spi.h:113
uint32_t STDCALL spi_clock_phase_to_string(uint32_t phase, char *string, uint32_t len)
uint32_t STDCALL spi_select_polarity_to_string(uint32_t polarity, char *string, uint32_t len)
uint32_t STDCALL spi_device_get_mode(SPI_DEVICE *spi)
Get the device mode of the specified SPI device.
uint32_t STDCALL spi_device_deregister(SPI_DEVICE *spi)
Deregister an SPI from the SPI table.
uint32_t STDCALL(* spi_device_get_byte_delay_proc)(SPI_DEVICE *spi)
Definition spi.h:138
uint32_t STDCALL(* spi_device_set_byte_delay_proc)(SPI_DEVICE *spi, uint32_t delay)
Definition spi.h:139
uint32_t STDCALL spi_get_count(void)
Get the current SPI count.
uint32_t STDCALL spi_device_set_mode(SPI_DEVICE *spi, uint32_t mode)
Set the device mode for the specified SPI device.
uint32_t STDCALL spi_device_get_select_polarity(SPI_DEVICE *spi, uint16_t chipselect)
Get the chip select polarity of the specified SPI device.
uint32_t STDCALL spi_device_set_default(SPI_DEVICE *spi)
Set the current default SPI device.
uint32_t STDCALL spi_device_stop(SPI_DEVICE *spi)
Stop the specified SPI device and terminate writing and reading.
uint32_t STDCALL spi_device_get_clock_phase(SPI_DEVICE *spi)
Get the clock phase of the specified SPI device.
struct _SPI_DEVICE SPI_DEVICE
Definition spi.h:108
uint32_t STDCALL(* spi_device_get_clock_rate_proc)(SPI_DEVICE *spi, uint16_t chipselect)
Definition spi.h:126
uint32_t STDCALL(* spi_device_set_mode_proc)(SPI_DEVICE *spi, uint32_t mode)
Definition spi.h:124
uint32_t STDCALL spi_device_set_clock_rate(SPI_DEVICE *spi, uint16_t chipselect, uint32_t clockrate)
Set the clock rate for the specified SPI device.
uint32_t STDCALL(* spi_device_get_mode_proc)(SPI_DEVICE *spi)
Definition spi.h:123
SPI_DEVICE *STDCALL spi_device_create_ex(uint32_t size)
Create a new SPI entry.
SPI_DEVICE *STDCALL spi_device_find(uint32_t spiid)
Find an SPI device by ID in the SPI table.
uint32_t STDCALL spi_device_write_read(SPI_DEVICE *spi, uint16_t chipselect, void *source, void *dest, uint32_t size, uint32_t flags, uint32_t *count)
Write data to and Read data from the specified SPI device in one operation Because SPI writes and the...
SPI_DEVICE *STDCALL spi_device_get_default(void)
Get the current default SPI device.
uint32_t STDCALL spi_device_properties(SPI_DEVICE *spi, SPI_PROPERTIES *properties)
Get the properties for the specified SPI device.
uint32_t STDCALL spi_device_get_clock_polarity(SPI_DEVICE *spi)
Get the clock polarity of the specified SPI device.
uint32_t selectpolarity
The chip select polarity for this chip select (eg SPI_CS_POLARITY_LOW).
Definition spi.h:102
uint32_t pin
The GPIO pin for this chip select (eg GPIO_PIN_46)(GPIO_PIN_UNKNOWN for internal).
Definition spi.h:96
uint32_t bytedelay
Delay between bytes written for this chip select (Microseconds).
Definition spi.h:103
uint32_t mode
The mode for this chip select (eg SPI_MODE_0).
Definition spi.h:97
uint32_t clockphase
The clock phase (CPHA) for this chip select (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:100
uint32_t clockpolarity
The clock polarity (CPOL) for this chip select (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:101
uint32_t divider
The clock divider for this chip select (Used internally by drivers).
Definition spi.h:98
uint32_t clockrate
The clock rate for this chip select.
Definition spi.h:99
uint32_t spimode
SPI mode (eg SPI_MODE_4WIRE).
Definition spi.h:150
MUTEX_HANDLE lock
Device lock.
Definition spi.h:173
SPI_DEVICE * next
Next entry in SPI table.
Definition spi.h:185
uint32_t selectpolarity
Default Chip Select Polarity (eg SPI_CS_POLARITY_LOW).
Definition spi.h:179
spi_device_get_byte_delay_proc devicegetbytedelay
A Device specific DeviceGetByteDelay method implementing the standard SPI device interface (Or nil if...
Definition spi.h:166
SPI_CHIP_SELECT chipselects[SPI_CS_MAX+1]
Chip selects.
Definition spi.h:182
uint32_t transfercount
Definition spi.h:170
uint32_t bytedelay
Delay between bytes written (Microseconds).
Definition spi.h:180
spi_device_get_mode_proc devicegetmode
A Device specific DeviceGetMode method implementing the standard SPI device interface (Or nil if the ...
Definition spi.h:156
uint32_t transfererrors
Definition spi.h:171
SPI_DEVICE * prev
Previous entry in SPI table.
Definition spi.h:184
spi_device_set_clock_phase_proc devicesetclockphase
A Device specific DeviceSetClockPhase method implementing the standard SPI device interface (Or nil i...
Definition spi.h:161
DEVICE device
The Device entry for this SPI.
Definition spi.h:146
SPI_PROPERTIES properties
Device properties.
Definition spi.h:181
uint32_t spistate
SPI state (eg SPI_STATE_ENABLED).
Definition spi.h:149
spi_device_set_select_polarity_proc devicesetselectpolarity
A Device specific DeviceSetSelectPolarity method implementing the standard SPI device interface (Or n...
Definition spi.h:165
spi_device_stop_proc devicestop
A Device specific DeviceStop method implementing the standard SPI device interface (Mandatory).
Definition spi.h:152
spi_device_write_proc devicewrite
A Device specific DeviceWrite method implementing the standard SPI device interface (Or nil if the de...
Definition spi.h:154
uint32_t clockphase
Clock Phase (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:177
spi_device_get_clock_polarity_proc devicegetclockpolarity
A Device specific DeviceGetClockPolarity method implementing the standard SPI device interface (Or ni...
Definition spi.h:162
spi_device_get_select_polarity_proc devicegetselectpolarity
A Device specific DeviceGetSelectPolarity method implementing the standard SPI device interface (Or n...
Definition spi.h:164
spi_device_get_properties_proc devicegetproperties
A Device specific DeviceGetProperties method implementing the standard SPI device interface (Or nil i...
Definition spi.h:168
spi_device_start_proc devicestart
A Device specific DeviceStart method implementing the standard SPI device interface (Mandatory).
Definition spi.h:151
spi_device_set_clock_polarity_proc devicesetclockpolarity
A Device specific DeviceSetClockPolarity method implementing the standard SPI device interface (Or ni...
Definition spi.h:163
spi_device_get_clock_rate_proc devicegetclockrate
A Device specific DeviceGetClockRate method implementing the standard SPI device interface (Or nil if...
Definition spi.h:158
uint32_t clockpolarity
Clock Polarity (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:178
spi_device_get_clock_phase_proc devicegetclockphase
A Device specific DeviceGetClockPhase method implementing the standard SPI device interface (Or nil i...
Definition spi.h:160
uint32_t divider
Clock divider (Used internally by drivers).
Definition spi.h:175
spi_device_read_proc deviceread
A Device specific DeviceRead method implementing the standard SPI device interface (Or nil if the def...
Definition spi.h:153
spi_device_write_read_proc devicewriteread
A Device specific DeviceWriteRead method implementing the standard SPI device interface (Mandatory).
Definition spi.h:155
uint32_t clockrate
Clock rate (Hz).
Definition spi.h:176
SEMAPHORE_HANDLE wait
Write/Read wait event.
Definition spi.h:174
spi_device_set_clock_rate_proc devicesetclockrate
A Device specific DeviceSetClockRate method implementing the standard SPI device interface (Or nil if...
Definition spi.h:159
uint32_t spiid
Unique Id of this SPI in the SPI table.
Definition spi.h:148
spi_device_set_mode_proc devicesetmode
A Device specific DeviceSetMode method implementing the standard SPI device interface (Or nil if the ...
Definition spi.h:157
spi_device_set_byte_delay_proc devicesetbytedelay
A Device specific DeviceSetByteDelay method implementing the standard SPI device interface (Or nil if...
Definition spi.h:167
uint32_t maxclock
Maximum supported clock rate.
Definition spi.h:81
uint32_t selectpolarity
Default chip select polarity (eg SPI_CS_POLARITY_LOW).
Definition spi.h:87
uint32_t bytedelay
Delay between bytes written (Microseconds).
Definition spi.h:88
uint32_t mode
Current mode (eg SPI_MODE_4WIRE).
Definition spi.h:83
uint32_t flags
Device flags (eg SPI_FLAG_SLAVE).
Definition spi.h:78
uint32_t clockphase
Current clock phase (CPHA) (eg SPI_CLOCK_PHASE_LOW).
Definition spi.h:85
uint32_t clockpolarity
Current clock polarity (CPOL) (eg SPI_CLOCK_POLARITY_LOW).
Definition spi.h:86
uint32_t minclock
Minimum supported clock rate.
Definition spi.h:80
uint32_t maxsize
Maximum supported data transfer size.
Definition spi.h:79
uint32_t clockrate
Current clock rate.
Definition spi.h:84
uint32_t selectcount
Number of chip selects supported.
Definition spi.h:82