This source file includes following definitions.
- snd_i2c_lock
 
- snd_i2c_unlock
 
   1 
   2 #ifndef __SOUND_I2C_H
   3 #define __SOUND_I2C_H
   4 
   5 
   6 
   7 
   8 #define SND_I2C_DEVICE_ADDRTEN  (1<<0)  
   9 
  10 struct snd_i2c_device {
  11         struct list_head list;
  12         struct snd_i2c_bus *bus;        
  13         char name[32];          
  14         unsigned short flags;   
  15         unsigned short addr;    
  16         unsigned long private_value;
  17         void *private_data;
  18         void (*private_free)(struct snd_i2c_device *device);
  19 };
  20 
  21 #define snd_i2c_device(n) list_entry(n, struct snd_i2c_device, list)
  22 
  23 struct snd_i2c_bit_ops {
  24         void (*start)(struct snd_i2c_bus *bus); 
  25         void (*stop)(struct snd_i2c_bus *bus);  
  26         void (*direction)(struct snd_i2c_bus *bus, int clock, int data);  
  27         void (*setlines)(struct snd_i2c_bus *bus, int clock, int data);
  28         int (*getclock)(struct snd_i2c_bus *bus);
  29         int (*getdata)(struct snd_i2c_bus *bus, int ack);
  30 };
  31 
  32 struct snd_i2c_ops {
  33         int (*sendbytes)(struct snd_i2c_device *device, unsigned char *bytes, int count);
  34         int (*readbytes)(struct snd_i2c_device *device, unsigned char *bytes, int count);
  35         int (*probeaddr)(struct snd_i2c_bus *bus, unsigned short addr);
  36 };
  37 
  38 struct snd_i2c_bus {
  39         struct snd_card *card;  
  40         char name[32];          
  41 
  42         struct mutex lock_mutex;
  43 
  44         struct snd_i2c_bus *master;     
  45         struct list_head buses; 
  46 
  47         struct list_head devices; 
  48 
  49         union {
  50                 struct snd_i2c_bit_ops *bit;
  51                 void *ops;
  52         } hw_ops;               
  53         const struct snd_i2c_ops *ops;  
  54 
  55         unsigned long private_value;
  56         void *private_data;
  57         void (*private_free)(struct snd_i2c_bus *bus);
  58 };
  59 
  60 #define snd_i2c_slave_bus(n) list_entry(n, struct snd_i2c_bus, buses)
  61 
  62 int snd_i2c_bus_create(struct snd_card *card, const char *name,
  63                        struct snd_i2c_bus *master, struct snd_i2c_bus **ri2c);
  64 int snd_i2c_device_create(struct snd_i2c_bus *bus, const char *name,
  65                           unsigned char addr, struct snd_i2c_device **rdevice);
  66 int snd_i2c_device_free(struct snd_i2c_device *device);
  67 
  68 static inline void snd_i2c_lock(struct snd_i2c_bus *bus)
  69 {
  70         if (bus->master)
  71                 mutex_lock(&bus->master->lock_mutex);
  72         else
  73                 mutex_lock(&bus->lock_mutex);
  74 }
  75 
  76 static inline void snd_i2c_unlock(struct snd_i2c_bus *bus)
  77 {
  78         if (bus->master)
  79                 mutex_unlock(&bus->master->lock_mutex);
  80         else
  81                 mutex_unlock(&bus->lock_mutex);
  82 }
  83 
  84 int snd_i2c_sendbytes(struct snd_i2c_device *device, unsigned char *bytes, int count);
  85 int snd_i2c_readbytes(struct snd_i2c_device *device, unsigned char *bytes, int count);
  86 int snd_i2c_probeaddr(struct snd_i2c_bus *bus, unsigned short addr);
  87 
  88 #endif