dev_i2c_bit_ops.h 943 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. #ifndef __DEV_I2C_BIT_OPS_H__
  11. #define __DEV_I2C_BIT_OPS_H__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. struct rt_i2c_bit_ops
  16. {
  17. void *data; /* private data for lowlevel routines */
  18. void (*set_sda)(void *data, rt_int32_t state);
  19. void (*set_scl)(void *data, rt_int32_t state);
  20. rt_int32_t (*get_sda)(void *data);
  21. rt_int32_t (*get_scl)(void *data);
  22. void (*udelay)(rt_uint32_t us);
  23. rt_uint32_t delay_us; /* scl and sda line delay */
  24. rt_uint32_t timeout; /* in tick */
  25. void (*pin_init)(void);
  26. rt_bool_t i2c_pin_init_flag;
  27. };
  28. rt_err_t rt_i2c_bit_add_bus(struct rt_i2c_bus_device *bus,
  29. const char *bus_name);
  30. #ifdef __cplusplus
  31. }
  32. #endif
  33. #endif