1 /* 2 * Copyright (c) 2006-2023, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2012-04-25 weety first version 9 */ 10 11 #ifndef __DEV_I2C_BIT_OPS_H__ 12 #define __DEV_I2C_BIT_OPS_H__ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 struct rt_i2c_bit_ops 19 { 20 void *data; /* private data for lowlevel routines */ 21 void (*set_sda)(void *data, rt_int32_t state); 22 void (*set_scl)(void *data, rt_int32_t state); 23 rt_int32_t (*get_sda)(void *data); 24 rt_int32_t (*get_scl)(void *data); 25 26 void (*udelay)(rt_uint32_t us); 27 28 rt_uint32_t delay_us; /* scl and sda line delay */ 29 rt_uint32_t timeout; /* in tick */ 30 31 void (*pin_init)(void); 32 rt_bool_t i2c_pin_init_flag; 33 }; 34 35 rt_err_t rt_i2c_bit_add_bus(struct rt_i2c_bus_device *bus, 36 const char *bus_name); 37 38 #ifdef __cplusplus 39 } 40 #endif 41 42 #endif 43