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