qemu/include/hw/i2c/pca954x.h
<<
>>
Prefs
   1#ifndef PCA954X__H
   2#define PCA954X__H
   3
   4#include "hw/i2c/i2c.h"
   5#define MAX_I2C_BUSES 8
   6#define PCA954X_CONTROL_ADDR 0x74
   7
   8typedef struct pca954x_type {
   9    const char *name;
  10    uint8_t lanes;   /* Number of i2c out buses */
  11    bool mux;        /* mux or switch */
  12} pca954x_type;
  13
  14typedef struct PCA954X_class {
  15    I2CSlaveClass parent_class;
  16
  17    pca954x_type *device;
  18} PCA954XClass;
  19
  20typedef struct {
  21    I2CSlave i2c;
  22    I2CBus *busses[MAX_I2C_BUSES];
  23
  24    /*state */
  25    uint8_t control_reg;
  26    enum i2c_event event;
  27    bool control_decoded;
  28    uint8_t active_lanes;
  29
  30    bool mux;
  31    uint8_t lanes;
  32    uint8_t chip_enable; /*property */
  33} PCA954XState;
  34
  35#define TYPE_PCA954X "pca954x"
  36
  37#define PCA954X(obj) \
  38     OBJECT_CHECK(PCA954XState, (obj), TYPE_PCA954X)
  39#define PCA954X_CLASS(klass) \
  40     OBJECT_CLASS_CHECK(PCA954XClass, klass, TYPE_PCA954X)
  41#define PCA954X_GET_CLASS(obj) \
  42     OBJECT_GET_CLASS(PCA954XClass, (obj), TYPE_PCA954X)
  43
  44#endif
  45