1 /* ------------------------------------------------------------------------- */
2 /* 									     */
3 /* i2c.h - definitions for the i2c-bus interface			     */
4 /* 									     */
5 /* ------------------------------------------------------------------------- */
6 /*   Copyright (C) 1995-1999 Simon G. Vogl
7 
8     This program is free software; you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by
10     the Free Software Foundation; either version 2 of the License, or
11     (at your option) any later version.
12 
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17 
18     You should have received a copy of the GNU General Public License
19     along with this program; if not, write to the Free Software
20     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.		     */
21 /* ------------------------------------------------------------------------- */
22 
23 /* $Id: i2c-id.h,v 1.35 2001/08/12 17:22:20 mds Exp $ */
24 
25 #ifndef I2C_ID_H
26 #define I2C_ID_H
27 /*
28  * This file is part of the i2c-bus package and contains the identifier
29  * values for drivers, adapters and other folk populating these serial
30  * worlds.
31  *
32  * These will change often (i.e. additions) , therefore this has been
33  * separated from the functional interface definitions of the i2c api.
34  *
35  */
36 
37 /*
38  * ---- Driver types -----------------------------------------------------
39  *       device id name + number        function description, i2c address(es)
40  *
41  *  Range 1000-1999 range is defined in sensors/sensors.h
42  *  Range 0x100 - 0x1ff is for V4L2 Common Components
43  *  Range 0xf000 - 0xffff is reserved for local experimentation, and should
44  *        never be used in official drivers
45  */
46 
47 #define I2C_DRIVERID_MSP3400	 1
48 #define I2C_DRIVERID_TUNER	 2
49 #define I2C_DRIVERID_VIDEOTEX	 3	/* please rename		*/
50 #define I2C_DRIVERID_TDA8425	 4	/* stereo sound processor	*/
51 #define I2C_DRIVERID_TEA6420	 5	/* audio matrix switch		*/
52 #define I2C_DRIVERID_TEA6415C	 6	/* video matrix switch		*/
53 #define I2C_DRIVERID_TDA9840	 7	/* stereo sound processor	*/
54 #define I2C_DRIVERID_SAA7111A	 8	/* video input processor	*/
55 #define I2C_DRIVERID_SAA5281	 9	/* videotext decoder		*/
56 #define I2C_DRIVERID_SAA7112	10	/* video decoder, image scaler	*/
57 #define I2C_DRIVERID_SAA7120	11	/* video encoder		*/
58 #define I2C_DRIVERID_SAA7121	12	/* video encoder		*/
59 #define I2C_DRIVERID_SAA7185B	13	/* video encoder		*/
60 #define I2C_DRIVERID_CH7003	14	/* digital pc to tv encoder 	*/
61 #define I2C_DRIVERID_PCF8574A	15	/* i2c expander - 8 bit in/out	*/
62 #define I2C_DRIVERID_PCF8582C	16	/* eeprom			*/
63 #define I2C_DRIVERID_AT24Cxx	17	/* eeprom 1/2/4/8/16 K 		*/
64 #define I2C_DRIVERID_TEA6300	18	/* audio mixer			*/
65 #define I2C_DRIVERID_BT829	19	/* pc to tv encoder		*/
66 #define I2C_DRIVERID_TDA9850	20	/* audio mixer			*/
67 #define I2C_DRIVERID_TDA9855	21	/* audio mixer			*/
68 #define I2C_DRIVERID_SAA7110	22	/* video decoder		*/
69 #define I2C_DRIVERID_MGATVO	23	/* Matrox TVOut			*/
70 #define I2C_DRIVERID_SAA5249	24	/* SAA5249 and compatibles	*/
71 #define I2C_DRIVERID_PCF8583	25	/* real time clock		*/
72 #define I2C_DRIVERID_SAB3036	26	/* SAB3036 tuner		*/
73 #define I2C_DRIVERID_TDA7432	27	/* Stereo sound processor	*/
74 #define I2C_DRIVERID_TVMIXER    28      /* Mixer driver for tv cards    */
75 #define I2C_DRIVERID_TVAUDIO    29      /* Generic TV sound driver      */
76 #define I2C_DRIVERID_DPL3518    30      /* Dolby decoder chip           */
77 #define I2C_DRIVERID_TDA9873    31      /* TV sound decoder chip        */
78 #define I2C_DRIVERID_TDA9875    32      /* TV sound decoder chip        */
79 #define I2C_DRIVERID_PIC16C54_PV9 33    /* Audio mux/ir receiver        */
80 
81 #define I2C_DRIVERID_SBATT      34     /* Smart Battery Device		*/
82 #define I2C_DRIVERID_SBS        35     /* SB System Manager		*/
83 #define I2C_DRIVERID_VES1893	36     /* VLSI DVB-S decoder		*/
84 #define I2C_DRIVERID_VES1820	37     /* VLSI DVB-C decoder		*/
85 #define I2C_DRIVERID_SAA7113	38     /* video decoder			*/
86 #define I2C_DRIVERID_TDA8444	39     /* octuple 6-bit DAC             */
87 #define I2C_DRIVERID_BT819	40     /* video decoder			*/
88 #define I2C_DRIVERID_BT856	41     /* video encoder			*/
89 #define I2C_DRIVERID_VPX32XX	42     /* video decoder+vbi/vtxt	*/
90 #define I2C_DRIVERID_DRP3510	43     /* ADR decoder (Astra Radio)	*/
91 #define I2C_DRIVERID_SP5055	44     /* Satellite tuner		*/
92 #define I2C_DRIVERID_STV0030	45     /* Multipurpose switch		*/
93 #define I2C_DRIVERID_ADV7175	48     /* ADV 7175/7176 video encoder	*/
94 #define I2C_DRIVERID_MAX1617	56	/* temp sensor			*/
95 #define I2C_DRIVERID_SAA7191	57	/* video decoder		*/
96 #define I2C_DRIVERID_INDYCAM	58	/* SGI IndyCam			*/
97 
98 #define I2C_DRIVERID_EXP0	0xF0	/* experimental use id's	*/
99 #define I2C_DRIVERID_EXP1	0xF1
100 #define I2C_DRIVERID_EXP2	0xF2
101 #define I2C_DRIVERID_EXP3	0xF3
102 
103 #define I2C_DRIVERID_I2CDEV	900
104 #define I2C_DRIVERID_I2CPROC	901
105 
106 /* IDs --   Use DRIVERIDs 1000-1999 for sensors.
107    These were originally in sensors.h in the lm_sensors package */
108 #define I2C_DRIVERID_LM78 1002
109 #define I2C_DRIVERID_LM75 1003
110 #define I2C_DRIVERID_GL518 1004
111 #define I2C_DRIVERID_EEPROM 1005
112 #define I2C_DRIVERID_W83781D 1006
113 #define I2C_DRIVERID_LM80 1007
114 #define I2C_DRIVERID_ADM1021 1008
115 #define I2C_DRIVERID_ADM9240 1009
116 #define I2C_DRIVERID_LTC1710 1010
117 #define I2C_DRIVERID_SIS5595 1011
118 #define I2C_DRIVERID_ICSPLL 1012
119 #define I2C_DRIVERID_BT869 1013
120 #define I2C_DRIVERID_MAXILIFE 1014
121 #define I2C_DRIVERID_MATORB 1015
122 #define I2C_DRIVERID_GL520 1016
123 #define I2C_DRIVERID_THMC50 1017
124 #define I2C_DRIVERID_DDCMON 1018
125 #define I2C_DRIVERID_VIA686A 1019
126 #define I2C_DRIVERID_ADM1025 1020
127 #define I2C_DRIVERID_LM87 1021
128 #define I2C_DRIVERID_PCF8574 1022
129 #define I2C_DRIVERID_MTP008 1023
130 #define I2C_DRIVERID_DS1621 1024
131 #define I2C_DRIVERID_ADM1024 1025
132 #define I2C_DRIVERID_IT87 1026
133 #define I2C_DRIVERID_CH700X 1027 /* single driver for CH7003-7009 digital pc to tv encoders */
134 
135 /*
136  * ---- Adapter types ----------------------------------------------------
137  *
138  * First, we distinguish between several algorithms to access the hardware
139  * interface types, as a PCF 8584 needs other care than a bit adapter.
140  */
141 
142 #define I2C_ALGO_NONE	0x000000
143 #define I2C_ALGO_BIT	0x010000	/* bit style adapters		*/
144 #define I2C_ALGO_PCF	0x020000	/* PCF 8584 style adapters	*/
145 #define I2C_ALGO_ATI	0x030000	/* ATI video card		*/
146 #define I2C_ALGO_SMBUS	0x040000
147 #define I2C_ALGO_ISA 	0x050000	/* lm_sensors ISA pseudo-adapter */
148 #define I2C_ALGO_SAA7146 0x060000	/* SAA 7146 video decoder bus	*/
149 #define I2C_ALGO_ACB 	0x070000	/* ACCESS.bus algorithm         */
150 
151 #define I2C_ALGO_EC     0x100000        /* ACPI embedded controller     */
152 
153 #define I2C_ALGO_MPC8XX 0x110000	/* MPC8xx PowerPC I2C algorithm */
154 
155 #define I2C_ALGO_SIBYTE 0x150000	/* Broadcom SiByte SOCs		*/
156 #define I2C_ALGO_SGI	0x160000	/* SGI algorithm		*/
157 
158 #define I2C_ALGO_EXP	0x800000	/* experimental			*/
159 
160 #define I2C_ALGO_MASK	0xff0000	/* Mask for algorithms		*/
161 #define I2C_ALGO_SHIFT	0x10	/* right shift to get index values 	*/
162 
163 #define I2C_HW_ADAPS	0x10000		/* # adapter types		*/
164 #define I2C_HW_MASK	0xffff
165 
166 
167 /* hw specific modules that are defined per algorithm layer
168  */
169 
170 /* --- Bit algorithm adapters 						*/
171 #define I2C_HW_B_LP	0x00	/* Parallel port Philips style adapter	*/
172 #define I2C_HW_B_LPC	0x01	/* Parallel port, over control reg.	*/
173 #define I2C_HW_B_SER	0x02	/* Serial line interface		*/
174 #define I2C_HW_B_ELV	0x03	/* ELV Card				*/
175 #define I2C_HW_B_VELLE	0x04	/* Vellemann K8000			*/
176 #define I2C_HW_B_BT848	0x05	/* BT848 video boards			*/
177 #define I2C_HW_B_WNV	0x06	/* Winnov Videums			*/
178 #define I2C_HW_B_VIA	0x07	/* Via vt82c586b			*/
179 #define I2C_HW_B_HYDRA	0x08	/* Apple Hydra Mac I/O			*/
180 #define I2C_HW_B_G400	0x09	/* Matrox G400				*/
181 #define I2C_HW_B_I810	0x0a	/* Intel I810 				*/
182 #define I2C_HW_B_VOO	0x0b	/* 3dfx Voodoo 3 / Banshee      	*/
183 #define I2C_HW_B_PPORT  0x0c	/* Primitive parallel port adapter	*/
184 #define I2C_HW_B_RIVA	0x10	/* Riva based graphics cards		*/
185 #define I2C_HW_B_IOC	0x11	/* IOC bit-wiggling			*/
186 #define I2C_HW_B_TSUNA  0x12	/* DEC Tsunami chipset			*/
187 
188 /* --- PCF 8584 based algorithms					*/
189 #define I2C_HW_P_LP	0x00	/* Parallel port interface		*/
190 #define I2C_HW_P_ISA	0x01	/* generic ISA Bus inteface card	*/
191 #define I2C_HW_P_ELEK	0x02	/* Elektor ISA Bus inteface card	*/
192 
193 /* --- ACPI Embedded controller algorithms                              */
194 #define I2C_HW_ACPI_EC          0x00
195 
196 /* --- MPC8xx PowerPC adapters						*/
197 #define I2C_HW_MPC8XX_EPON 0x00	/* Eponymous MPC8xx I2C adapter 	*/
198 
199 /* --- Broadcom SiByte adapters						*/
200 #define I2C_HW_SIBYTE	0x00
201 
202 /* --- SGI adapters							*/
203 #define I2C_HW_SGI_VINO	0x00
204 #define I2C_HW_SGI_MACE	0x01
205 
206 /* --- SMBus only adapters						*/
207 #define I2C_HW_SMBUS_PIIX4	0x00
208 #define I2C_HW_SMBUS_ALI15X3	0x01
209 #define I2C_HW_SMBUS_VIA2	0x02
210 #define I2C_HW_SMBUS_VOODOO3	0x03
211 #define I2C_HW_SMBUS_I801	0x04
212 #define I2C_HW_SMBUS_AMD756	0x05
213 #define I2C_HW_SMBUS_SIS5595	0x06
214 #define I2C_HW_SMBUS_ALI1535	0x07
215 #define I2C_HW_SMBUS_W9968CF	0x0d
216 
217 /* --- ISA pseudo-adapter						*/
218 #define I2C_HW_ISA 0x00
219 
220 #endif /* I2C_ID_H */
221