64 lines
2.0 KiB
C
Raw Normal View History

2025-04-10 17:31:33 +08:00
/****************************************************************************
*
* Copy right: 2024-, Copyrigths of EigenComm Ltd.
* File name: api_i2c.h
* Description: ec7xx openhal i2c entry header file
* History: Rev1.0 2024-01-11
*
****************************************************************************/
#ifndef API_I2C_H
#define API_I2C_H
#ifdef __cplusplus
extern "C" {
#endif
#include "api_def.h"
#include "sctdef.h"
#define EC_I2C_INDEX_START (0)
#define EC_I2C_INDEX_LIMIT (2)
typedef enum {
OPEN_I2C_IOCTL_ISR_CB = 0, //输入中断回调
OPEN_I2C_IOCTL_SPEED ,
OPEN_I2C_IOCTL_SLAVE_ADDR ,
} api_i2c_ioctl_t;
typedef enum {
EVT_I2C_COMPLETED = 0,
EVT_I2C_INCOMPLETE ,
EVT_I2C_SLAVE_NACK ,
EVT_I2C_BUS_ERROR ,
EVT_I2C_ARBI_LOST ,
EVT_I2C_TOTAL ,
} api_i2c_flags_e;
typedef struct {
uint8_t addr; // Address
uint8_t reg; // register
uint8_t *data; // data to transfer
uint32_t num; // Number of bytes to transfer
} api_i2c_master_t;
typedef struct
{
uint8_t (*i2c_init)(uint8_t);
uint8_t (*i2c_scan)(uint8_t*,uint8_t);
uint8_t (*i2c_wait)(uint8_t,uint8_t*,uint16_t,uint32_t);
uint8_t (*i2c_read)(uint8_t,uint8_t,uint16_t,uint8_t*);
uint8_t (*i2c_send)(uint8_t,uint8_t,uint16_t,uint8_t*);
}i2c_func;
int api_i2c_startup(void* para);
uint32_t api_i2c_create(uint32_t index,void *cfg);
api_ret_t api_i2c_delete(uint32_t usrId);
api_ret_t api_i2c_open(uint32_t usrId,void *cfg,size_t timeout);
api_ret_t api_i2c_close(uint32_t usrId);
api_ret_t api_i2c_write(uint32_t usrId, void* buf, size_t count);
api_ret_t api_i2c_read(uint32_t usrId, void* buf, size_t count);
api_ret_t api_i2c_ioctl(uint32_t usrId,api_i2c_ioctl_t type, void *para);
api_ret_t api_i2c_pmctl(uint32_t usrId,open_hal_pm_t *cfg, size_t count);
uint32_t i2c_fault_wait(uint32_t usrId,size_t timeout);
int api_test_i2c(void);
#ifdef __cplusplus
}
#endif
#endif /* API_I2C_H */