You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

192 lines
9.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2001-2020. All rights reserved.
* Description: Application programming interfaces (APIs) of the external chip software (ECS)
*/
#ifndef UAPI_I2C_H
#define UAPI_I2C_H
#include "td_type.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
typedef struct {
td_u8 dev_address; /* Address of a device on the I2C bus */ /* CNcomment:设备在I2C总线上的地址。CNend */
td_u32 reg_addr; /* On-chip offset address of a device */ /* CNcomment:设备的片内偏移地址。CNend */
td_u32 reg_addr_count; /* Length of an on-chip offset address. */ /* CNcomment:片内偏移地址的长度单位。CNend */
/* 1: 8-bit sub address CNcomment:1表示8bit子地址CNend */
/* 2: 16-bit sub address CNcomment:2表示16bit子地址CNend */
/* 3: 24-bit sub address CNcomment:3表示24bit子地址CNend */
/* 4: 32-bit sub address CNcomment:4表示32bit子地址。CNend */
} uapi_i2c_addr_info;
/* *
* \brief Init the I2C device.
* CNcomment:\brief 初始化I2Cthe Inter-Integrated Circuit设备。CNend
* \param N/A CNcomment:无。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::SOC_ERR_I2C_OPEN_ERR Open I2c Error CNcomment:I2C无效参数。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_init(td_void);
/* *
* \brief DeInit the I2C device.
* CNcomment:\brief 去初始化I2C设备。CNend
* \attention \n
* This API is called after I2C operations are completed.\n
* CNcomment:在I2C操作结束后调用此接口\n CNend
* \param N/A CNcomment:无。CNend
* \retval 0 Success CNcomment: 成功。CNend
* \retval ::SOC_ERR_I2C_CLOSE_ERR Close I2c Error. CNcomment:I2C设备未初始化。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_deinit(td_void);
/* *
* \brief Get the number of I2C module.
* CNcomment:\brief 去初始化I2C设备。CNend
* \attention \n
* Call this API to get the number of I2C module befor read/write data.\n
* CNcomment:在使用I2C读写数据之前调用此接口获取芯片的I2C模块数目\n CNend
* \param N/A CNcomment:无。CNend
* \retval 0 Success CNcomment: 成功。CNend
* \retval ::
* \see \n
* N/A
*/
td_s32 uapi_i2c_get_total_num(td_u32 *i2c_num);
/* *
* The I2C device is not initialized.
* CNcomment:\brief 创建一路gpio_i2c。CNend
* \attention \n
* If the specified GPIO pins are used, this API fails to be called.\n
* CNcomment:如果gpio已被占用会失败\n CNend
* \param[out] i2c_id ID of the obtained I2C bus CNcomment:得到I2C总线号。CNend
* \param[in] scl_gpio_group SCL gpio group number, ranging from 0 to 27,
* \ranging is different in otherness chip type
* \CNcomment:GPIO组数取值范围为027不同的芯片类型范围不一样。CNend
* \param[in] scl_gpio_bit SCL Pin bit number, ranging from 0 to 7,
* \ranging is different in otherness chip type
* \CNcomment:所在GPIO组的bit数取值范围为07不同的芯片类型范围不一样。CNend
* \param[in] sda_gpio_group SDA gpio group number, ranging from 0 to 27,
* \ranging is different in otherness chip type
* \CNcomment:GPIO组数取值范围为027不同的芯片类型范围不一样。CNend
* \param[in] sda_gpio_bit SDA Pin number, ranging from 0 to 7,
* \ranging is different in otherness chip type
* \CNcomment:SDA所在GPIO组bit数取值范围为07不同的芯片类型范围不一样。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::TD_FAILURE Create gpioi2c failed CNcomment:失败。CNend
* \retval ::SOC_ERR_I2C_NULL_PTR The pointer parameter is NULL CNcomment:指针参数为空。CNend
* \retval ::SOC_ERR_GPIO_INVALID_PARA The parameter is invalid. CNcomment:参数非法。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_create_gpio_i2c(td_u32 scl_gpio_group, td_u32 scl_gpio_bit,
td_u32 sda_gpio_group, td_u32 sda_gpio_bit, td_u32 *i2c_id);
/* *
* \brief Destroys a inter-integrated circuit (I2C) channel that simulates
* \the general-purpose input/output (GPIO) function.
* CNcomment:\brief 销毁一路GpioI2c。CNend
* \attention \n
* If the I2C channel is not used, a code indicating success is returned.\n
* CNcomment:如果该GpioI2c未使用直接返回成功\n CNend
* \param[in] i2c_id ID of the I2C bus to be destroyed CNcomment:要销毁的I2C总线号。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::TD_FAILURE Destroy gpioi2c failed CNcomment:失败。CNend
* \retval ::SOC_ERR_GPIO_INVALID_PARA The parameter is invalid. CNcomment:参数非法。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_destroy_gpio_i2c(td_u32 i2c_id);
/* *
* \brief Reads data by using the I2C bus.
* CNcomment:\brief 通过I2C读数据。CNend
* \attention \n
* N/A
* \param[in] i2c_id I2C bus of the device to be read CNcomment:所读取设备使用的I2C总线。CNend
* \param[in] i2c_addr_info struct i2c addr CNcomment:i2c地址信息结构体
* \param[out] buf Buffer for storing the data to be read CNcomment:读Buffer存放读取数据。CNend
* \param[in] length length of the data to be read CNcomment:要读取的数据长度。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::TD_FAILURE Read data failed CNcomment:失败。CNend
* \retval ::SOC_ERR_I2C_NOT_INIT The I2C device is not initialized. CNcomment:I2C设备未初始化。CNend
* \retval ::SOC_ERR_I2C_NULL_PTR The I2C pointer is invalid. CNcomment:I2C无效指针。CNend
* \retval ::SOC_ERR_I2C_INVALID_PARA The I2C parameter is invalid. CNcomment:I2C无效参数。CNend
* \retval ::SOC_ERR_I2C_FAILED_READ Data fails to be read by using the I2C bus. CNcomment:I2C读数据失败。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_read(td_u32 i2c_id, const uapi_i2c_addr_info *i2c_addr_info, td_u8 *buf, td_u32 length);
/* *
* \brief Writes data by using the I2C bus. That is, you can call this API to write data to
* \the device mounted on the I2C bus through the I2C channel.
* CNcomment:\brief 通过I2C写数据。通过I2C通道向I2C总线上挂接的设备进行写操作。CNend
* \attention \n
* N/A
* \param[in] i2c_id I2C bus of the device to be written CNcomment:待写设备使用的I2C总线。CNend
* \param[in] i2c_addr_info struct i2c addr CNcomment:i2c地址信息结构体
* \param[in] buf Buffer for storing the data to be written CNcomment:写Buffer存放待写入数据。CNend
* \param[in] length Length of the data to be written CNcomment:要写入的数据的长度。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::TD_FAILURE Write data failed CNcomment:失败。CNend
* \retval ::SOC_ERR_I2C_NOT_INIT The I2C device is not initialized. CNcomment:I2C设备未初始化。CNend
* \retval ::SOC_ERR_I2C_NULL_PTR The I2C pointer is invalid. CNcomment:I2C无效指针。CNend
* \retval ::SOC_ERR_I2C_INVALID_PARA The I2C parameter is invalid. CNcomment:I2C无效参数。CNend
* \retval ::SOC_ERR_I2C_FAILED_WRITE Data fails to be written by using the I2C bus. CNcomment:I2C写数据失败。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_write(td_u32 i2c_id, const uapi_i2c_addr_info *i2c_addr_info, td_u8 *buf, td_u32 length);
/* *
* \brief Sets the transfer rate of the I2C bus.
* CNcomment:\brief 设置I2C的传输速率。CNend
* \attention \n
* Call this API Only be effect in standard i2c, gpio simulate i2c is noneffective.\n
* If you do not call this API to set the transfer rate, the rate 100 kbit/s is used by default.\n
* CNcomment:此接口仅对标准的i2c通道有效对gpio 模拟 i2c 无效。\n
* 如果不调用此接口系统采用400Kbit/s作为缺省速率。\n CNend
* \param[in] i2c_id D of channel corresponding to the device to be written on the I2C bus
* \CNcomment:所写设备在I2C总线上的通道号。CNend
* \param[in] rate_kbps I2C clock rate.Max rate is 400K CNcomment:I2C时钟速率,最大支持设置400K。CNend
* \retval 0 Success CNcomment:成功。CNend
* \retval ::TD_FAILURE Set rate failed CNcomment:失败。CNend
* \retval ::SOC_ERR_I2C_NOT_INIT The I2C device is not initialized. CNcomment:I2C设备未初始化。CNend
* \retval ::SOC_ERR_I2C_INVALID_PARA The I2C parameter is invalid. CNcomment:I2C无效参数。CNend
* \see \n
* N/A
*/
td_s32 uapi_i2c_set_rate(td_u32 i2c_id, td_u32 rate_kbps);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* UAPI_I2C_H */