Files
Linux_Drivers/freertos/cvitek/driver/i2c/include/i2c.h
carbon ca03037500 freertos: release the generic version source code
freertos runs on the second core (small one) of the CPU
2023-10-19 14:31:43 +08:00

32 lines
1.2 KiB
C

/*
* Copyright (C) 2020 CVITEK
*/
#ifndef __I2C_H_
#define __I2C_H_
#include <stdbool.h>
struct i2c_msg {
uint16_t addr; /* slave address */
uint16_t flags;
#define I2C_M_TEN 0x0010 /* this is a ten bit chip address */
#define I2C_M_WRSTOP 0x0002 /* if allow stop between msg. */
#define I2C_M_RD 0x0001 /* read data, from slave to master */
#define I2C_M_STOP 0x8000 /* if I2C_FUNC_PROTOCOL_MANGLING */
#define I2C_M_NOSTART 0x4000 /* if I2C_FUNC_NOSTART */
#define I2C_M_REV_DIR_ADDR 0x2000 /* if I2C_FUNC_PROTOCOL_MANGLING */
#define I2C_M_IGNORE_NAK 0x1000 /* if I2C_FUNC_PROTOCOL_MANGLING */
#define I2C_M_NO_RD_ACK 0x0800 /* if I2C_FUNC_PROTOCOL_MANGLING */
#define I2C_M_RECV_LEN 0x0400 /* length will be first received byte */
uint16_t len; /* msg length */
uint8_t *buf; /* pointer to msg data */
};
int i2c_write(uint8_t i2c_id, uint8_t dev, uint16_t addr, uint16_t alen, uint8_t *buffer, uint16_t len);
int i2c_read(uint8_t i2c_id, uint8_t dev, uint16_t addr, uint16_t alen, uint8_t *buffer, uint16_t len);
int i2c_set_interstop(uint8_t i2c_id, bool use_interstop);
int i2c_xfer(uint8_t i2c_id, struct i2c_msg msgs[], int num);
void i2c_init(uint8_t i2c_id);
#endif /* __I2C_H_ */