diff options
author | Luca Risolia <luca.risolia@studio.unibo.it> | 2006-01-05 13:14:04 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-01-31 20:23:38 -0500 |
commit | a966f3e7512084f916049579067f532908ba3a49 (patch) | |
tree | adc4bc3a3b781f4ebc8b169a286f8e60ab3e7e32 /drivers/usb/media/sn9c102_sensor.h | |
parent | ec7dc8d254985dc4a31858c2c7c7029290e223dd (diff) |
[PATCH] USB: SN9C10x driver updates and bugfixes
SN9C10x driver updates and bugfixes.
Changes: + new, - removed, * cleanup, @ bugfix:
@ fix poll()
@ Remove bad get_ctrl()'s
* Reduce ioctl stack usage
* Remove final ";" from some macro definitions
* Better support for SN9C103
+ Add sn9c102_write_regs()
+ Add 0x0c45/0x602d to the list of SN9C10x based devices
+ Add support for OV7630 image sensors
+ Provide support for the built-in microphone interface of the SN9C103
+ Documentation updates
+ Add 0x0c45/0x602e to the list of SN9C10x based devices
Signed-off-by: Luca Risolia <luca.risolia@studio.unibo.it>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/media/sn9c102_sensor.h')
-rw-r--r-- | drivers/usb/media/sn9c102_sensor.h | 69 |
1 files changed, 41 insertions, 28 deletions
diff --git a/drivers/usb/media/sn9c102_sensor.h b/drivers/usb/media/sn9c102_sensor.h index a45166c3488..a0e561b2c85 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,6 +189,7 @@ 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 | ||