root/include/linux/i2c-algo-bit.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0+ */
   2 /*
   3  * i2c-algo-bit.h: i2c driver algorithms for bit-shift adapters
   4  *
   5  *   Copyright (C) 1995-99 Simon G. Vogl
   6  * With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi> and even
   7  * Frodo Looijaard <frodol@dds.nl>
   8  */
   9 
  10 #ifndef _LINUX_I2C_ALGO_BIT_H
  11 #define _LINUX_I2C_ALGO_BIT_H
  12 
  13 #include <linux/i2c.h>
  14 
  15 /* --- Defines for bit-adapters --------------------------------------- */
  16 /*
  17  * This struct contains the hw-dependent functions of bit-style adapters to
  18  * manipulate the line states, and to init any hw-specific features. This is
  19  * only used if you have more than one hw-type of adapter running.
  20  */
  21 struct i2c_algo_bit_data {
  22         void *data;             /* private data for lowlevel routines */
  23         void (*setsda) (void *data, int state);
  24         void (*setscl) (void *data, int state);
  25         int  (*getsda) (void *data);
  26         int  (*getscl) (void *data);
  27         int  (*pre_xfer)  (struct i2c_adapter *);
  28         void (*post_xfer) (struct i2c_adapter *);
  29 
  30         /* local settings */
  31         int udelay;             /* half clock cycle time in us,
  32                                    minimum 2 us for fast-mode I2C,
  33                                    minimum 5 us for standard-mode I2C and SMBus,
  34                                    maximum 50 us for SMBus */
  35         int timeout;            /* in jiffies */
  36         bool can_do_atomic;     /* callbacks don't sleep, we can be atomic */
  37 };
  38 
  39 int i2c_bit_add_bus(struct i2c_adapter *);
  40 int i2c_bit_add_numbered_bus(struct i2c_adapter *);
  41 extern const struct i2c_algorithm i2c_bit_algo;
  42 
  43 #endif /* _LINUX_I2C_ALGO_BIT_H */

/* [<][>][^][v][top][bottom][index][help] */