diff options
Diffstat (limited to 'drivers/usb/media/sn9c102_sensor.h')
-rw-r--r-- | drivers/usb/media/sn9c102_sensor.h | 85 |
1 files changed, 46 insertions, 39 deletions
diff --git a/drivers/usb/media/sn9c102_sensor.h b/drivers/usb/media/sn9c102_sensor.h index a45166c3488c..7d953b24f2f2 100644 --- a/drivers/usb/media/sn9c102_sensor.h +++ b/drivers/usb/media/sn9c102_sensor.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | * API for image sensors connected to the SN9C10x PC Camera Controllers * | 2 | * API for image sensors connected to the SN9C10x PC Camera Controllers * |
3 | * * | 3 | * * |
4 | * Copyright (C) 2004-2005 by Luca Risolia <luca.risolia@studio.unibo.it> * | 4 | * Copyright (C) 2004-2006 by Luca Risolia <luca.risolia@studio.unibo.it> * |
5 | * * | 5 | * * |
6 | * This program is free software; you can redistribute it and/or modify * | 6 | * This program is free software; you can redistribute it and/or modify * |
7 | * it under the terms of the GNU General Public License as published by * | 7 | * it under the terms of the GNU General Public License as published by * |
@@ -92,7 +92,18 @@ extern void | |||
92 | sn9c102_attach_sensor(struct sn9c102_device* cam, | 92 | sn9c102_attach_sensor(struct sn9c102_device* cam, |
93 | struct sn9c102_sensor* sensor); | 93 | struct sn9c102_sensor* sensor); |
94 | 94 | ||
95 | /* Each SN9C10X camera has proper PID/VID identifiers. Add them here in case.*/ | 95 | /* |
96 | Each SN9C10x camera has proper PID/VID identifiers. | ||
97 | SN9C103 supports multiple interfaces, but we only handle the video class | ||
98 | interface. | ||
99 | */ | ||
100 | #define SN9C102_USB_DEVICE(vend, prod, intclass) \ | ||
101 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ | ||
102 | USB_DEVICE_ID_MATCH_INT_CLASS, \ | ||
103 | .idVendor = (vend), \ | ||
104 | .idProduct = (prod), \ | ||
105 | .bInterfaceClass = (intclass) | ||
106 | |||
96 | #define SN9C102_ID_TABLE \ | 107 | #define SN9C102_ID_TABLE \ |
97 | static const struct usb_device_id sn9c102_id_table[] = { \ | 108 | static const struct usb_device_id sn9c102_id_table[] = { \ |
98 | { USB_DEVICE(0x0c45, 0x6001), }, /* TAS5110C1B */ \ | 109 | { USB_DEVICE(0x0c45, 0x6001), }, /* TAS5110C1B */ \ |
@@ -107,33 +118,34 @@ static const struct usb_device_id sn9c102_id_table[] = { \ | |||
107 | { USB_DEVICE(0x0c45, 0x602b), }, /* MI-0343 */ \ | 118 | { USB_DEVICE(0x0c45, 0x602b), }, /* MI-0343 */ \ |
108 | { USB_DEVICE(0x0c45, 0x602c), }, /* OV7630 */ \ | 119 | { USB_DEVICE(0x0c45, 0x602c), }, /* OV7630 */ \ |
109 | { USB_DEVICE(0x0c45, 0x602d), }, \ | 120 | { USB_DEVICE(0x0c45, 0x602d), }, \ |
121 | { USB_DEVICE(0x0c45, 0x602e), }, /* OV7630 */ \ | ||
110 | { USB_DEVICE(0x0c45, 0x6030), }, /* MI03x */ \ | 122 | { USB_DEVICE(0x0c45, 0x6030), }, /* MI03x */ \ |
111 | { USB_DEVICE(0x0c45, 0x6080), }, \ | 123 | { SN9C102_USB_DEVICE(0x0c45, 0x6080, 0xff), }, \ |
112 | { USB_DEVICE(0x0c45, 0x6082), }, /* MI0343 and MI0360 */ \ | 124 | { SN9C102_USB_DEVICE(0x0c45, 0x6082, 0xff), }, /* MI0343 & MI0360 */ \ |
113 | { USB_DEVICE(0x0c45, 0x6083), }, /* HV7131[D|E1] */ \ | 125 | { SN9C102_USB_DEVICE(0x0c45, 0x6083, 0xff), }, /* HV7131[D|E1] */ \ |
114 | { USB_DEVICE(0x0c45, 0x6088), }, \ | 126 | { SN9C102_USB_DEVICE(0x0c45, 0x6088, 0xff), }, \ |
115 | { USB_DEVICE(0x0c45, 0x608a), }, \ | 127 | { SN9C102_USB_DEVICE(0x0c45, 0x608a, 0xff), }, \ |
116 | { USB_DEVICE(0x0c45, 0x608b), }, \ | 128 | { SN9C102_USB_DEVICE(0x0c45, 0x608b, 0xff), }, \ |
117 | { USB_DEVICE(0x0c45, 0x608c), }, /* HV7131x */ \ | 129 | { SN9C102_USB_DEVICE(0x0c45, 0x608c, 0xff), }, /* HV7131x */ \ |
118 | { USB_DEVICE(0x0c45, 0x608e), }, /* CIS-VF10 */ \ | 130 | { SN9C102_USB_DEVICE(0x0c45, 0x608e, 0xff), }, /* CIS-VF10 */ \ |
119 | { USB_DEVICE(0x0c45, 0x608f), }, /* OV7630 */ \ | 131 | { SN9C102_USB_DEVICE(0x0c45, 0x608f, 0xff), }, /* OV7630 */ \ |
120 | { USB_DEVICE(0x0c45, 0x60a0), }, \ | 132 | { SN9C102_USB_DEVICE(0x0c45, 0x60a0, 0xff), }, \ |
121 | { USB_DEVICE(0x0c45, 0x60a2), }, \ | 133 | { SN9C102_USB_DEVICE(0x0c45, 0x60a2, 0xff), }, \ |
122 | { USB_DEVICE(0x0c45, 0x60a3), }, \ | 134 | { SN9C102_USB_DEVICE(0x0c45, 0x60a3, 0xff), }, \ |
123 | { USB_DEVICE(0x0c45, 0x60a8), }, /* PAS106B */ \ | 135 | { SN9C102_USB_DEVICE(0x0c45, 0x60a8, 0xff), }, /* PAS106B */ \ |
124 | { USB_DEVICE(0x0c45, 0x60aa), }, /* TAS5130D1B */ \ | 136 | { SN9C102_USB_DEVICE(0x0c45, 0x60aa, 0xff), }, /* TAS5130D1B */ \ |
125 | { USB_DEVICE(0x0c45, 0x60ab), }, /* TAS5110C1B */ \ | 137 | { SN9C102_USB_DEVICE(0x0c45, 0x60ab, 0xff), }, /* TAS5110C1B */ \ |
126 | { USB_DEVICE(0x0c45, 0x60ac), }, \ | 138 | { SN9C102_USB_DEVICE(0x0c45, 0x60ac, 0xff), }, \ |
127 | { USB_DEVICE(0x0c45, 0x60ae), }, \ | 139 | { SN9C102_USB_DEVICE(0x0c45, 0x60ae, 0xff), }, \ |
128 | { USB_DEVICE(0x0c45, 0x60af), }, /* PAS202BCB */ \ | 140 | { SN9C102_USB_DEVICE(0x0c45, 0x60af, 0xff), }, /* PAS202BCB */ \ |
129 | { USB_DEVICE(0x0c45, 0x60b0), }, \ | 141 | { SN9C102_USB_DEVICE(0x0c45, 0x60b0, 0xff), }, /* OV7630 (?) */ \ |
130 | { USB_DEVICE(0x0c45, 0x60b2), }, \ | 142 | { SN9C102_USB_DEVICE(0x0c45, 0x60b2, 0xff), }, \ |
131 | { USB_DEVICE(0x0c45, 0x60b3), }, \ | 143 | { SN9C102_USB_DEVICE(0x0c45, 0x60b3, 0xff), }, \ |
132 | { USB_DEVICE(0x0c45, 0x60b8), }, \ | 144 | { SN9C102_USB_DEVICE(0x0c45, 0x60b8, 0xff), }, \ |
133 | { USB_DEVICE(0x0c45, 0x60ba), }, \ | 145 | { SN9C102_USB_DEVICE(0x0c45, 0x60ba, 0xff), }, \ |
134 | { USB_DEVICE(0x0c45, 0x60bb), }, \ | 146 | { SN9C102_USB_DEVICE(0x0c45, 0x60bb, 0xff), }, \ |
135 | { USB_DEVICE(0x0c45, 0x60bc), }, \ | 147 | { SN9C102_USB_DEVICE(0x0c45, 0x60bc, 0xff), }, \ |
136 | { USB_DEVICE(0x0c45, 0x60be), }, \ | 148 | { SN9C102_USB_DEVICE(0x0c45, 0x60be, 0xff), }, \ |
137 | { } \ | 149 | { } \ |
138 | }; | 150 | }; |
139 | 151 | ||
@@ -177,16 +189,18 @@ extern int sn9c102_i2c_write(struct sn9c102_device*, u8 address, u8 value); | |||
177 | extern int sn9c102_i2c_read(struct sn9c102_device*, u8 address); | 189 | extern int sn9c102_i2c_read(struct sn9c102_device*, u8 address); |
178 | 190 | ||
179 | /* I/O on registers in the bridge. Could be used by the sensor methods too */ | 191 | /* I/O on registers in the bridge. Could be used by the sensor methods too */ |
192 | extern int sn9c102_write_regs(struct sn9c102_device*, u8* buff, u16 index); | ||
180 | extern int sn9c102_write_reg(struct sn9c102_device*, u8 value, u16 index); | 193 | extern int sn9c102_write_reg(struct sn9c102_device*, u8 value, u16 index); |
181 | extern int sn9c102_pread_reg(struct sn9c102_device*, u16 index); | 194 | extern int sn9c102_pread_reg(struct sn9c102_device*, u16 index); |
182 | 195 | ||
183 | /* | 196 | /* |
184 | NOTE: there are no exported debugging functions. To uniform the output you | 197 | NOTE: there are no exported debugging functions. To uniform the output you |
185 | must use the dev_info()/dev_warn()/dev_err() macros defined in device.h, | 198 | must use the dev_info()/dev_warn()/dev_err() macros defined in device.h, |
186 | already included here, the argument being the struct device 'dev' of the | 199 | already included here, the argument being the struct device '&usbdev->dev' |
187 | sensor structure. Do NOT use these macros before the sensor is attached or | 200 | of the sensor structure. Do NOT use these macros before the sensor is |
188 | the kernel will crash! However, you should not need to notify the user about | 201 | attached or the kernel will crash! However, you should not need to notify |
189 | common errors or other messages, since this is done by the master module. | 202 | the user about common errors or other messages, since this is done by the |
203 | master module. | ||
190 | */ | 204 | */ |
191 | 205 | ||
192 | /*****************************************************************************/ | 206 | /*****************************************************************************/ |
@@ -345,13 +359,6 @@ struct sn9c102_sensor { | |||
345 | error code without rolling back. | 359 | error code without rolling back. |
346 | */ | 360 | */ |
347 | 361 | ||
348 | const struct device* dev; | ||
349 | /* | ||
350 | This is the argument for dev_err(), dev_info() and dev_warn(). It | ||
351 | is used for debugging purposes. You must not access the struct | ||
352 | before the sensor is attached. | ||
353 | */ | ||
354 | |||
355 | const struct usb_device* usbdev; | 362 | const struct usb_device* usbdev; |
356 | /* | 363 | /* |
357 | Points to the usb_device struct after the sensor is attached. | 364 | Points to the usb_device struct after the sensor is attached. |