3 #ifndef MTK_COMMON_I2C_H
4 #define MTK_COMMON_I2C_H
119 #define I2C_TIME_CLR_VALUE 0x0000
120 #define MAX_SAMPLE_CNT_DIV 8
121 #define MAX_STEP_CNT_DIV 64
122 #define MAX_HS_STEP_CNT_DIV 8
123 #define I2C_TIME_DEFAULT_VALUE 0x0083
124 #define I2C_STANDARD_MODE_BUFFER (1000 / 3)
125 #define I2C_FAST_MODE_BUFFER (300 / 3)
126 #define I2C_FAST_MODE_PLUS_BUFFER (20 / 3)
int mtk_i2c_check_ac_timing(uint8_t bus, uint32_t clk_src, uint32_t check_speed, uint32_t step_cnt, uint32_t sample_cnt)
check_member(mt_i2c_dma_regs, dma_tx_len, 0x24)
struct mtk_i2c mtk_i2c_bus_controller[]
const struct i2c_spec_values * mtk_i2c_get_spec(uint32_t speed)
int mtk_i2c_calculate_speed(uint8_t bus, uint32_t clk_src, uint32_t target_speed, uint32_t *timing_step_cnt, uint32_t *timing_sample_cnt)
void mtk_i2c_speed_init(uint8_t bus, uint32_t speed)
@ I2C_TRANSFER_INVALID_ARGUMENT
@ I2C_SET_SPEED_FAIL_OVER_SPEED
@ I2C_TRANSFER_FAIL_TIMEOUT
@ I2C_TRANSFER_FAIL_ACKERR
@ I2C_TRANSFER_INVALID_LENGTH
@ I2C_TRANSFER_FAIL_HS_NACKERR
void mtk_i2c_config_timing(struct mt_i2c_regs *regs, struct mtk_i2c *bus_ctrl)
void mtk_i2c_dump_more_info(struct mt_i2c_regs *regs)
struct mt_i2c_dma_regs * i2c_dma_regs
struct mt_i2c_regs * i2c_regs
struct mtk_i2c_ac_timing ac_timing