/** * @file sdrv_i2c.h * @brief SemiDrive I2C driver header file. * * @copyright (c) 2022 Semidrive Semiconductor. * @All rights reserved. * */ #ifndef SDRV_I2C_DRV_H_ #define SDRV_I2C_DRV_H_ #include #include /** * @brief i2c controller supported errcode */ enum { /* transfer stat group */ SDRV_I2CDRV_TRANS_OK = SDRV_STATUS_OK, SDRV_I2CDRV_TRANS_GO = SDRV_ERROR_STATUS(SDRV_STATUS_GROUP_I2C, 11), SDRV_I2CDRV_TRANS_NAK = SDRV_ERROR_STATUS(SDRV_STATUS_GROUP_I2C, 12), SDRV_I2CDRV_TRANS_ERR = SDRV_ERROR_STATUS(SDRV_STATUS_GROUP_I2C, 13), SDRV_I2CDRV_TRANS_ABORT = SDRV_ERROR_STATUS(SDRV_STATUS_GROUP_I2C, 14), SDRV_I2CDRV_TRANS_TIMEOUT = SDRV_ERROR_STATUS(SDRV_STATUS_GROUP_I2C, 15), }; /** * @brief i2c controller supported operation mode */ typedef enum { SDRV_I2CDRV_MASTER = 1, /**< i2c controller master mode */ SDRV_I2CDRV_SLAVE, /**< i2c controller slave mode */ } sdrv_i2cdrv_opmode_t; /** * @brief i2c controller supported speed mode */ typedef enum { SDRV_I2CDRV_SSPEED = 1, /**< 100kHz */ SDRV_I2CDRV_FSPEED, /**< 400kHz */ SDRV_I2CDRV_PSPEED, /**< 1MHz */ SDRV_I2CDRV_HSPEED, /**< 3.4MHz */ SDRV_I2CDRV_USPEED, /**< 5MHz */ } sdrv_i2cdrv_speed_t; /** * @brief i2c controller supported transfer mode * (only applicable for master mode) */ typedef enum { SDRV_I2CDRV_POLL = 1, /**