1 /*
2  * Copyright 2020, 2024 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef _I3C_COMPONENT_ADAPTER_H_
8 #define _I3C_COMPONENT_ADAPTER_H_
9 
10 #include "fsl_component_i3c.h"
11 #include "fsl_i3c.h"
12 /*!
13  * @addtogroup I3C_Bus_Component
14  * @{
15  */
16 
17 /*******************************************************************************
18  * Definitions
19  ******************************************************************************/
20 
21 /*! @brief I3C master transfer mode. */
22 typedef enum _i3c_master_transfer_mode
23 {
24     kI3C_MasterTransferInterruptMode = 0, /*!< I3C master do transfer in interrupt mode. */
25     kI3C_MasterTransferInterruptDMAMode,  /*!< I3C master do transfer in DMA mode. */
26 } i3c_master_transfer_mode_t;
27 
28 /*! @brief I3C master adapter internal resource*/
29 typedef struct _i3c_master_adapter_resource
30 {
31     I3C_Type *base;                       /*!< I3C master base address. */
32     uint32_t clockInHz;                   /*!< I3C module clock frequency. */
33 #if !(defined(FSL_FEATURE_I3C_HAS_NO_SCONFIG_BAMATCH) && FSL_FEATURE_I3C_HAS_NO_SCONFIG_BAMATCH)
34     uint32_t slowClockInHz;               /*!< I3C slow clock frequency. */
35 #endif
36     i3c_master_transfer_mode_t transMode; /*!< I3C master transfer mode. */
37 } i3c_master_adapter_resource_t;
38 
39 /*! @brief I3C device adapter internal resource*/
40 typedef struct _i3c_device_adapter_resource
41 {
42     I3C_Type *base;                         /*!< I3C device base address. */
43     uint32_t clockInHz;                     /*!< I3C device clock frequency. */
44     i3c_slave_transfer_callback_t callback; /*!< I3C device transfer callback function. */
45 } i3c_device_adapter_resource_t;
46 
47 /*******************************************************************************
48  * Variables
49  ******************************************************************************/
50 /*! @brief I3C device master operation pointers structure */
51 extern const i3c_device_hw_ops_t master_ops;
52 /*! @brief I3C device slave operation pointers structure */
53 extern const i3c_device_hw_ops_t slave_ops;
54 
55 #endif
56