Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  *  Copyright (C) 1998 Itai Nahshon, Michael Schimek
  3.  */
  4.  
  5. /* $XFree86: xc/programs/Xserver/hw/xfree86/i2c/xf86i2c.h,v 1.10 2003/07/16 01:38:47 dawes Exp $ */
  6. #ifndef _XF86I2C_H
  7. #define _XF86I2C_H
  8.  
  9. //#include "regionstr.h"
  10.  
  11. typedef unsigned char  I2CByte;
  12. typedef unsigned short I2CSlaveAddr;
  13.  
  14. typedef struct _I2CBusRec *I2CBusPtr;
  15. typedef struct _I2CDevRec *I2CDevPtr;
  16.  
  17. /* I2C masters have to register themselves */
  18.  
  19. typedef union _DevUnion {
  20.     pointer             ptr;
  21.     long                val;
  22.     unsigned long       uval;
  23. } DevUnion;
  24.  
  25.  
  26.  
  27. typedef struct _I2CBusRec {
  28.     char *              BusName;
  29.     int         scrnIndex;
  30.  
  31.     void                (*I2CUDelay) (I2CBusPtr b, int usec);
  32.  
  33.     void                (*I2CPutBits)(I2CBusPtr b, int  scl, int  sda);
  34.     void                (*I2CGetBits)(I2CBusPtr b, int *scl, int *sda);
  35.  
  36.     /* Look at the generic routines to see how these functions should behave. */
  37.  
  38.     Bool    (*I2CStart)  (I2CBusPtr b, int timeout);
  39.     Bool    (*I2CAddress)(I2CDevPtr d, I2CSlaveAddr);
  40.     void    (*I2CStop)   (I2CDevPtr d);
  41.     Bool                (*I2CPutByte)(I2CDevPtr d, I2CByte data);
  42.     Bool                (*I2CGetByte)(I2CDevPtr d, I2CByte *data, Bool);
  43.  
  44.     DevUnion    DriverPrivate;
  45.  
  46.     int     HoldTime;            /* 1 / bus clock frequency, 5 or 2 usec */
  47.  
  48.     int     BitTimeout;          /* usec */
  49.     int     ByteTimeout;         /* usec */
  50.     int     AcknTimeout;         /* usec */
  51.     int     StartTimeout;        /* usec */
  52.     int     RiseFallTime;        /* usec */
  53.  
  54.     I2CDevPtr           FirstDev;
  55.     I2CBusPtr           NextBus;
  56.     Bool                (*I2CWriteRead)(I2CDevPtr d, I2CByte *WriteBuffer, int nWrite,
  57.                                    I2CByte *ReadBuffer,  int nRead);
  58. } I2CBusRec;
  59.  
  60. I2CBusPtr       xf86CreateI2CBusRec(void);
  61. void            xf86DestroyI2CBusRec(I2CBusPtr pI2CBus, Bool unalloc, Bool devs_too);
  62. Bool            xf86I2CBusInit(I2CBusPtr pI2CBus);
  63. I2CBusPtr   xf86I2CFindBus(RHDPtr rhdPtr, char *name);
  64. int   xf86I2CGetScreenBuses(RHDPtr rhdPtr, I2CBusPtr **pppI2CBus);
  65.  
  66.  
  67. /* I2C slave devices */
  68.  
  69. typedef struct _I2CDevRec {
  70.     char *              DevName;
  71.  
  72.     int     BitTimeout;         /* usec */
  73.     int     ByteTimeout;        /* usec */
  74.     int     AcknTimeout;        /* usec */
  75.     int     StartTimeout;       /* usec */
  76.  
  77.     I2CSlaveAddr        SlaveAddr;
  78.     I2CBusPtr           pI2CBus;
  79.     I2CDevPtr           NextDev;
  80.     DevUnion    DriverPrivate;
  81. } I2CDevRec;
  82.  
  83. I2CDevPtr       xf86CreateI2CDevRec(void);
  84. void            xf86DestroyI2CDevRec(I2CDevPtr pI2CDev, Bool unalloc);
  85. Bool            xf86I2CDevInit(I2CDevPtr pI2CDev);
  86. I2CDevPtr       xf86I2CFindDev(I2CBusPtr, I2CSlaveAddr);
  87.  
  88. /* See descriptions of these functions in xf86i2c.c */
  89.  
  90. Bool            xf86I2CProbeAddress(I2CBusPtr pI2CBus, I2CSlaveAddr);
  91. Bool            xf86I2CWriteRead(I2CDevPtr d, I2CByte *WriteBuffer, int nWrite,
  92.                                    I2CByte *ReadBuffer,  int nRead);
  93. #define         xf86I2CRead(d, rb, nr) xf86I2CWriteRead(d, NULL, 0, rb, nr)
  94. Bool            xf86I2CReadStatus(I2CDevPtr d, I2CByte *pbyte);
  95. Bool            xf86I2CReadByte(I2CDevPtr d, I2CByte subaddr, I2CByte *pbyte);
  96. Bool            xf86I2CReadBytes(I2CDevPtr d, I2CByte subaddr, I2CByte *pbyte, int n);
  97. Bool            xf86I2CReadWord(I2CDevPtr d, I2CByte subaddr, unsigned short *pword);
  98. #define         xf86I2CWrite(d, wb, nw) xf86I2CWriteRead(d, wb, nw, NULL, 0)
  99. Bool            xf86I2CWriteByte(I2CDevPtr d, I2CByte subaddr, I2CByte byte);
  100. Bool            xf86I2CWriteBytes(I2CDevPtr d, I2CByte subaddr, I2CByte *WriteBuffer, int nWrite);
  101. Bool            xf86I2CWriteWord(I2CDevPtr d, I2CByte subaddr, unsigned short word);
  102. Bool            xf86I2CWriteVec(I2CDevPtr d, I2CByte *vec, int nValues);
  103.  
  104. #endif /*_XF86I2C_H */
  105.