PDK API Guide for J721E
SPI.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2023, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
38 /* @} */
39 
61 #ifndef SPI_H
62 #define SPI_H
63 
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67 
68 #include <stdint.h>
69 #include <stdbool.h>
70 #include <stddef.h>
71 
72 #include <ti/csl/soc.h>
73 
85 #define SPI_CMD_RESERVED (32U)
86 #define OSPI_CMD_RESERVED (32U)
87 
100 #define SPI_STATUS_RESERVED (-((int32_t)32))
101 
108 #define SPI_STATUS_SUCCESS (int32_t)(0)
109 
116 #define SPI_STATUS_ERROR (-((int32_t)1))
117 
125 #define SPI_STATUS_UNDEFINEDCMD (-((int32_t)2))
126 
130 #define SPI_WAIT_FOREVER (~(0U))
131 
135 typedef struct SPI_Config_s *SPI_Handle;
136 
140 typedef enum SPI_Status_s {
147 } SPI_Status;
148 
157 typedef struct SPI_Transaction_s {
158  /* User input (write-only) fields */
159  size_t count;
160  uint64_t txDmaBuf;
161  uint64_t rxDmaBuf;
162  void *txBuf;
163  void *rxBuf;
164  void *arg;
166  /* User output (read-only) fields */
169  /* Driver-use only fields */
171 
179 typedef void (*SPI_CallbackFxn) (SPI_Handle handle,
180  SPI_Transaction * transaction);
185 typedef enum SPI_Mode_s {
188 } SPI_Mode;
189 
194 typedef enum SPI_FrameFormat_s {
199  SPI_TI = 4,
200  SPI_MW = 5
202 
213 typedef enum SPI_TransferMode_s {
225 
234 typedef struct SPI_Params_s {
236  uint32_t transferTimeout;
241  uint32_t bitRate;
242  uint32_t dataSize;
244  void *custom;
246 } SPI_Params;
247 
252 typedef void (*SPI_CloseFxn) (SPI_Handle handle);
253 
258 typedef int32_t (*SPI_ControlFxn) (SPI_Handle handle,
259  uint32_t cmd,
260  const void *arg);
261 
266 typedef void (*SPI_InitFxn) (SPI_Handle handle);
267 
272 typedef SPI_Handle (*SPI_OpenFxn) (SPI_Handle handle,
273  const SPI_Params *params);
274 
279 typedef void (*SPI_ServiceISRFxn) (SPI_Handle handle);
280 
285 typedef bool (*SPI_TransferFxn) (SPI_Handle handle,
286  SPI_Transaction *transaction);
287 
292 typedef void (*SPI_TransferCancelFxn) (SPI_Handle handle);
293 
299 typedef struct SPI_FxnTable_s {
302 
305 
308 
311 
314 
317 
320 } SPI_FxnTable;
321 
333 typedef struct SPI_Config_s {
336 
338  void *object;
339 
341  void const *hwAttrs;
342 } SPI_Config;
343 
344 #define SPI_MAX_CONFIG_CNT (CSL_MCSPI_PER_CNT)
345 #define SPI_MAX_DOMAIN_CNT (CSL_MCSPI_DOMAIN_CNT)
347 
351 typedef enum OSPI_Status_s {
358 } OSPI_Status;
359 
368 typedef struct OSPI_Transaction_s {
369  /* User input (write-only) fields */
370  size_t count;
371  void *txBuf;
372  void *rxBuf;
373  void *arg;
375  /* User output (read-only) fields */
378  /* Driver-use only fields */
380 
384 typedef struct OSPI_Config_s *OSPI_Handle;
385 
393 typedef void (*OSPI_CallbackFxn) (OSPI_Handle handle,
394  OSPI_Transaction * transaction);
399 typedef enum OSPI_Mode_s {
402 } OSPI_Mode;
403 
408 typedef enum OSPI_FrameFormat_s {
413  OSPI_TI = 4,
414  OSPI_MW = 5
416 
427 typedef enum OSPI_TransferMode_s {
439 
448 typedef struct OSPI_Params_s {
450  uint32_t transferTimeout;
455  uint32_t bitRate;
456  uint32_t dataSize;
458  void *custom;
460 } OSPI_Params;
461 
466 typedef void (*OSPI_CloseFxn) (OSPI_Handle handle);
467 
472 typedef int32_t (*OSPI_ControlFxn) (OSPI_Handle handle,
473  uint32_t cmd,
474  const void *arg);
475 
480 typedef void (*OSPI_InitFxn) (OSPI_Handle handle);
481 
487  const OSPI_Params *params);
488 
493 typedef void (*OSPI_ServiceISRFxn) (OSPI_Handle handle);
494 
499 typedef bool (*OSPI_TransferFxn) (OSPI_Handle handle,
500  OSPI_Transaction *transaction);
501 
506 typedef void (*OSPI_TransferCancelFxn) (OSPI_Handle handle);
507 
508 
514 typedef struct OSPI_FxnTable_s {
517 
520 
523 
526 
529 
532 
535 } OSPI_FxnTable;
536 
548 typedef struct OSPI_Config_s {
551 
553  void *object;
554 
556  void const *hwAttrs;
557 } OSPI_Config;
558 
559 #define OSPI_MAX_CONFIG_CNT (CSL_OSPI_PER_CNT)
560 #define OSPI_MAX_DOMAIN_CNT (CSL_OSPI_DOMAIN_CNT)
562 
572 extern void SPI_close(SPI_Handle handle);
573 
593 extern int32_t SPI_control(SPI_Handle handle, uint32_t cmd, void *arg);
594 
603 extern void SPI_init(void);
604 
626 extern SPI_Handle SPI_open(uint32_t domain, uint32_t idx, SPI_Params *params);
627 
637 extern void OSPI_close(OSPI_Handle handle);
638 
658 extern int32_t OSPI_control(OSPI_Handle handle, uint32_t cmd, void *arg);
659 
668 extern void OSPI_init(void);
669 
690 extern OSPI_Handle OSPI_open(uint32_t domain, uint32_t idx, OSPI_Params *params);
691 
707 extern void OSPI_Params_init(OSPI_Params *params);
708 
738 extern bool OSPI_transfer(OSPI_Handle handle, OSPI_Transaction *spiTrans);
739 
755 extern void SPI_Params_init(SPI_Params *params);
756 
762 extern void SPI_serviceISR(SPI_Handle handle);
763 
793 extern bool SPI_transfer(SPI_Handle handle, SPI_Transaction *spiTrans);
794 
812 extern void SPI_transferCancel(SPI_Handle handle);
813 
814 #ifdef __cplusplus
815 }
816 #endif
817 
818 #endif /* _SPI_H */
819 
820 /* @} */
void * txBuf
Definition: SPI.h:371
OSPI_FrameFormat frameFormat
Definition: SPI.h:457
void(* SPI_TransferCancelFxn)(SPI_Handle handle)
A function pointer to a driver specific implementation of SPI_transferCancel().
Definition: SPI.h:292
Definition: SPI.h:223
bool(* SPI_TransferFxn)(SPI_Handle handle, SPI_Transaction *transaction)
A function pointer to a driver specific implementation of SPI_transfer().
Definition: SPI.h:285
Definition: SPI.h:186
The definition of a SPI function table that contains the required set of functions to control a speci...
Definition: SPI.h:299
SPI_FxnTable const * fxnTablePtr
Definition: SPI.h:335
Definition: SPI.h:142
int32_t OSPI_control(OSPI_Handle handle, uint32_t cmd, void *arg)
Function performs implementation specific features on a given OSPI_Handle.
OSPI_TransferFxn transferFxn
Definition: SPI.h:528
Definition: SPI.h:357
OSPI_ControlFxn controlFxn
Definition: SPI.h:519
OSPI_ServiceISRFxn serviceISRFxn
Definition: SPI.h:534
Definition: SPI.h:409
Definition: SPI.h:356
uint32_t dataSize
Definition: SPI.h:242
Definition: SPI.h:141
void SPI_init(void)
This function initializes the SPI module.
Definition: SPI.h:143
uint32_t transferTimeout
Definition: SPI.h:236
SPI_Mode
Definitions for various SPI modes of operation.
Definition: SPI.h:185
SPI_CallbackFxn transferCallbackFxn
Definition: SPI.h:239
SPI_FrameFormat frameFormat
Definition: SPI.h:243
void OSPI_init(void)
This function initializes the SPI module.
SPI_FrameFormat
Definitions for various SPI data frame formats.
Definition: SPI.h:194
void SPI_Params_init(SPI_Params *params)
Function to initialize the SPI_Params struct to its defaults.
OSPI_Mode mode
Definition: SPI.h:454
SPI_Status status
Definition: SPI.h:167
SPI Parameters.
Definition: SPI.h:234
SPI_Handle(* SPI_OpenFxn)(SPI_Handle handle, const SPI_Params *params)
A function pointer to a driver specific implementation of SPI_open().
Definition: SPI.h:272
OSPI_CallbackFxn transferCallbackFxn
Definition: SPI.h:453
Definition: SPI.h:196
#define SPI_MAX_DOMAIN_CNT
Definition: SPI.h:345
Definition: SPI.h:195
struct SPI_Config_s * SPI_Handle
A handle that is returned from a SPI_open() call.
Definition: SPI.h:135
Definition: SPI.h:400
void(* SPI_CloseFxn)(SPI_Handle handle)
A function pointer to a driver specific implementation of SPI_close().
Definition: SPI.h:252
SPI_CloseFxn closeFxn
Definition: SPI.h:301
int32_t(* OSPI_ControlFxn)(OSPI_Handle handle, uint32_t cmd, const void *arg)
A function pointer to a driver specific implementation of OSPI_control().
Definition: SPI.h:472
OSPI_InitFxn spiInitFxn
Definition: SPI.h:522
void OSPI_close(OSPI_Handle handle)
Function to close a OSPI peripheral specified by the OSPI handle.
SPI_TransferMode transferMode
Definition: SPI.h:235
#define OSPI_MAX_DOMAIN_CNT
Definition: SPI.h:560
bool OSPI_transfer(OSPI_Handle handle, OSPI_Transaction *spiTrans)
Function to perform SPI transactions.
SPI_TransferFxn transferFxn
Definition: SPI.h:313
#define SPI_MAX_CONFIG_CNT
Definition: SPI.h:344
void OSPI_Params_init(OSPI_Params *params)
Function to initialize the OSPI_Params struct to its defaults.
OSPI_Status
Status codes that are set by the SPI driver.
Definition: SPI.h:351
Definition: SPI.h:410
void(* SPI_CallbackFxn)(SPI_Handle handle, SPI_Transaction *transaction)
The definition of a callback function used by the SPI driver when used in SPI_MODE_CALLBACK.
Definition: SPI.h:179
uint32_t bitRate
Definition: SPI.h:241
void(* OSPI_TransferCancelFxn)(OSPI_Handle handle)
A function pointer to a driver specific implementation of OSPI_transferCancel().
Definition: SPI.h:506
size_t count
Definition: SPI.h:370
Definition: SPI.h:218
void(* SPI_InitFxn)(SPI_Handle handle)
A function pointer to a driver specific implementation of SPI_init().
Definition: SPI.h:266
Definition: SPI.h:414
void SPI_close(SPI_Handle handle)
Function to close a SPI peripheral specified by the SPI handle.
OSPI_Status status
Definition: SPI.h:376
void * arg
Definition: SPI.h:164
Definition: SPI.h:197
void * custom
Definition: SPI.h:458
Definition: SPI.h:187
OSPI Global configuration.
Definition: SPI.h:548
void * rxBuf
Definition: SPI.h:163
uint64_t txDmaBuf
Definition: SPI.h:160
Definition: SPI.h:144
void(* OSPI_CallbackFxn)(OSPI_Handle handle, OSPI_Transaction *transaction)
The definition of a callback function used by the SPI driver when used in SPI_MODE_CALLBACK.
Definition: SPI.h:393
SPI_TransferCancelFxn transferCancelFxn
Definition: SPI.h:316
void * object
Definition: SPI.h:553
void(* OSPI_ServiceISRFxn)(OSPI_Handle handle)
A function pointer to a driver specific implementation of SPI_serviceISR().
Definition: SPI.h:493
OSPI Parameters.
Definition: SPI.h:448
OSPI_FxnTable const * fxnTablePtr
Definition: SPI.h:550
OSPI_TransferMode transferMode
Definition: SPI.h:449
SPI_ControlFxn controlFxn
Definition: SPI.h:304
OSPI_FrameFormat
Definitions for various SPI data frame formats.
Definition: SPI.h:408
SPI_OpenFxn openFxn
Definition: SPI.h:310
void * object
Definition: SPI.h:338
Definition: SPI.h:437
A SPI_Transaction data structure is used with OSPI_transfer(). It indicates how many SPI_FrameFormat ...
Definition: SPI.h:368
SPI_ServiceISRFxn serviceISRFxn
Definition: SPI.h:319
void SPI_transferCancel(SPI_Handle handle)
Function to cancel SPI transactions.
void(* OSPI_InitFxn)(OSPI_Handle handle)
A function pointer to a driver specific implementation of OSPI_init().
Definition: SPI.h:480
Definition: SPI.h:198
SPI_TransferMode
SPI transfer mode determines the whether the SPI controller operates synchronously or asynchronously....
Definition: SPI.h:213
void * rxBuf
Definition: SPI.h:372
SPI_Handle SPI_open(uint32_t domain, uint32_t idx, SPI_Params *params)
This function opens a given SPI peripheral.
SPI_InitFxn spiInitFxn
Definition: SPI.h:307
gptp_ipc_command_t cmd
Definition: gptpipc.h:140
void * custom
Definition: SPI.h:244
SPI_Status
Status codes that are set by the SPI driver.
Definition: SPI.h:140
The definition of a SPI function table that contains the required set of functions to control a speci...
Definition: SPI.h:514
Definition: SPI.h:352
uint32_t dataSize
Definition: SPI.h:456
domgrp_t domain
Definition: tisci_pm_core.h:130
bool(* OSPI_TransferFxn)(OSPI_Handle handle, OSPI_Transaction *transaction)
A function pointer to a driver specific implementation of OSPI_transfer().
Definition: SPI.h:499
SPI_Config SPI_config_list[SPI_MAX_DOMAIN_CNT][SPI_MAX_CONFIG_CNT]
Definition: SPI.h:346
Definition: SPI.h:199
OSPI_Handle OSPI_open(uint32_t domain, uint32_t idx, OSPI_Params *params)
This function opens a given OSPI peripheral.
Definition: SPI.h:355
Definition: SPI.h:412
Definition: SPI.h:200
OSPI_TransferCancelFxn transferCancelFxn
Definition: SPI.h:531
OSPI_OpenFxn openFxn
Definition: SPI.h:525
SPI_Mode mode
Definition: SPI.h:240
OSPI_CloseFxn closeFxn
Definition: SPI.h:516
Definition: SPI.h:432
void(* OSPI_CloseFxn)(OSPI_Handle handle)
A function pointer to a driver specific implementation of OSPI_close().
Definition: SPI.h:466
OSPI_Mode
Definitions for various SPI modes of operation.
Definition: SPI.h:399
Definition: SPI.h:146
Definition: SPI.h:401
bool SPI_transfer(SPI_Handle handle, SPI_Transaction *spiTrans)
Function to perform SPI transactions.
void SPI_serviceISR(SPI_Handle handle)
Function to service the SPI module's interrupt service routine.
void * arg
Definition: SPI.h:373
uint64_t rxDmaBuf
Definition: SPI.h:161
OSPI_Handle(* OSPI_OpenFxn)(OSPI_Handle handle, const OSPI_Params *params)
A function pointer to a driver specific implementation of SPI_open().
Definition: SPI.h:486
int32_t(* SPI_ControlFxn)(SPI_Handle handle, uint32_t cmd, const void *arg)
A function pointer to a driver specific implementation of SPI_control().
Definition: SPI.h:258
Definition: SPI.h:411
void(* SPI_ServiceISRFxn)(SPI_Handle handle)
A function pointer to a driver specific implementation of SPI_serviceISR().
Definition: SPI.h:279
struct OSPI_Config_s * OSPI_Handle
A handle that is returned from a SPI_open() call.
Definition: SPI.h:384
OSPI_TransferMode
SPI transfer mode determines the whether the SPI controller operates synchronously or asynchronously....
Definition: SPI.h:427
Definition: SPI.h:354
size_t count
Definition: SPI.h:159
uint32_t transferTimeout
Definition: SPI.h:450
Definition: SPI.h:353
void const * hwAttrs
Definition: SPI.h:556
void const * hwAttrs
Definition: SPI.h:341
Definition: SPI.h:145
uint32_t bitRate
Definition: SPI.h:455
void * txBuf
Definition: SPI.h:162
Definition: SPI.h:413
OSPI_Config OSPI_config_list[OSPI_MAX_DOMAIN_CNT][OSPI_MAX_CONFIG_CNT]
Definition: SPI.h:561
A SPI_Transaction data structure is used with SPI_transfer(). It indicates how many SPI_FrameFormat f...
Definition: SPI.h:157
SPI Global configuration.
Definition: SPI.h:333
#define OSPI_MAX_CONFIG_CNT
Definition: SPI.h:559
int32_t SPI_control(SPI_Handle handle, uint32_t cmd, void *arg)
Function performs implementation specific features on a given SPI_Handle.