| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |     I2C functions | 
					
						
							|  |  |  |     Copyright (C) 2003-2004  Kevin Thayer <nufan_wfk at yahoo.com> | 
					
						
							|  |  |  |     Copyright (C) 2005-2007  Hans Verkuil <hverkuil@xs4all.nl> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |     it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |     the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |     (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |     GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |     along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |     This file includes an i2c implementation that was reverse engineered | 
					
						
							|  |  |  |     from the Hauppauge windows driver.  Older ivtv versions used i2c-algo-bit, | 
					
						
							|  |  |  |     which whilst fine under most circumstances, had trouble with the Zilog | 
					
						
							|  |  |  |     CPU on the PVR-150 which handles IR functions (occasional inability to | 
					
						
							|  |  |  |     communicate with the chip until it was reset) and also with the i2c | 
					
						
							|  |  |  |     bus being completely unreachable when multiple PVR cards were present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The implementation is very similar to i2c-algo-bit, but there are enough | 
					
						
							|  |  |  |     subtle differences that the two are hard to merge.  The general strategy | 
					
						
							|  |  |  |     employed by i2c-algo-bit is to use udelay() to implement the timing | 
					
						
							|  |  |  |     when putting out bits on the scl/sda lines.  The general strategy taken | 
					
						
							|  |  |  |     here is to poll the lines for state changes (see ivtv_waitscl and | 
					
						
							|  |  |  |     ivtv_waitsda).  In addition there are small delays at various locations | 
					
						
							|  |  |  |     which poll the SCL line 5 times (ivtv_scldelay).  I would guess that | 
					
						
							|  |  |  |     since this is memory mapped I/O that the length of those delays is tied | 
					
						
							|  |  |  |     to the PCI bus clock.  There is some extra code to do with recovery | 
					
						
							|  |  |  |     and retries.  Since it is not known what causes the actual i2c problems | 
					
						
							|  |  |  |     in the first place, the only goal if one was to attempt to use | 
					
						
							|  |  |  |     i2c-algo-bit would be to try to make it follow the same code path. | 
					
						
							|  |  |  |     This would be a lot of work, and I'm also not convinced that it would | 
					
						
							|  |  |  |     provide a generic benefit to i2c-algo-bit.  Therefore consider this | 
					
						
							|  |  |  |     an engineering solution -- not pretty, but it works. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Some more general comments about what we are doing: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     The i2c bus is a 2 wire serial bus, with clock (SCL) and data (SDA) | 
					
						
							|  |  |  |     lines.  To communicate on the bus (as a master, we don't act as a slave), | 
					
						
							|  |  |  |     we first initiate a start condition (ivtv_start).  We then write the | 
					
						
							|  |  |  |     address of the device that we want to communicate with, along with a flag | 
					
						
							|  |  |  |     that indicates whether this is a read or a write.  The slave then issues | 
					
						
							|  |  |  |     an ACK signal (ivtv_ack), which tells us that it is ready for reading / | 
					
						
							|  |  |  |     writing.  We then proceed with reading or writing (ivtv_read/ivtv_write), | 
					
						
							|  |  |  |     and finally issue a stop condition (ivtv_stop) to make the bus available | 
					
						
							|  |  |  |     to other masters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     There is an additional form of transaction where a write may be | 
					
						
							|  |  |  |     immediately followed by a read.  In this case, there is no intervening | 
					
						
							|  |  |  |     stop condition.  (Only the msp3400 chip uses this method of data transfer). | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "ivtv-driver.h"
 | 
					
						
							|  |  |  | #include "ivtv-cards.h"
 | 
					
						
							|  |  |  | #include "ivtv-gpio.h"
 | 
					
						
							| 
									
										
										
										
											2007-03-10 06:54:58 -03:00
										 |  |  | #include "ivtv-i2c.h"
 | 
					
						
							| 
									
										
										
										
											2010-08-06 10:53:19 -03:00
										 |  |  | #include <media/cx25840.h>
 | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* i2c implementation for cx23415/6 chip, ivtv project.
 | 
					
						
							|  |  |  |  * Author: Kevin Thayer (nufan_wfk at yahoo.com) | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | /* i2c stuff */ | 
					
						
							|  |  |  | #define IVTV_REG_I2C_SETSCL_OFFSET 0x7000
 | 
					
						
							|  |  |  | #define IVTV_REG_I2C_SETSDA_OFFSET 0x7004
 | 
					
						
							|  |  |  | #define IVTV_REG_I2C_GETSCL_OFFSET 0x7008
 | 
					
						
							|  |  |  | #define IVTV_REG_I2C_GETSDA_OFFSET 0x700c
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define IVTV_CS53L32A_I2C_ADDR		0x11
 | 
					
						
							| 
									
										
										
										
											2007-10-30 05:50:03 -03:00
										 |  |  | #define IVTV_M52790_I2C_ADDR		0x48
 | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | #define IVTV_CX25840_I2C_ADDR 		0x44
 | 
					
						
							|  |  |  | #define IVTV_SAA7115_I2C_ADDR 		0x21
 | 
					
						
							|  |  |  | #define IVTV_SAA7127_I2C_ADDR 		0x44
 | 
					
						
							|  |  |  | #define IVTV_SAA717x_I2C_ADDR 		0x21
 | 
					
						
							|  |  |  | #define IVTV_MSP3400_I2C_ADDR 		0x40
 | 
					
						
							|  |  |  | #define IVTV_HAUPPAUGE_I2C_ADDR 	0x50
 | 
					
						
							|  |  |  | #define IVTV_WM8739_I2C_ADDR 		0x1a
 | 
					
						
							|  |  |  | #define IVTV_WM8775_I2C_ADDR		0x1b
 | 
					
						
							|  |  |  | #define IVTV_TEA5767_I2C_ADDR		0x60
 | 
					
						
							|  |  |  | #define IVTV_UPD64031A_I2C_ADDR 	0x12
 | 
					
						
							|  |  |  | #define IVTV_UPD64083_I2C_ADDR 		0x5c
 | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | #define IVTV_VP27SMPX_I2C_ADDR      	0x5b
 | 
					
						
							|  |  |  | #define IVTV_M52790_I2C_ADDR      	0x48
 | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | #define IVTV_AVERMEDIA_IR_RX_I2C_ADDR	0x40
 | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | #define IVTV_HAUP_EXT_IR_RX_I2C_ADDR 	0x1a
 | 
					
						
							|  |  |  | #define IVTV_HAUP_INT_IR_RX_I2C_ADDR 	0x18
 | 
					
						
							|  |  |  | #define IVTV_Z8F0811_IR_TX_I2C_ADDR	0x70
 | 
					
						
							|  |  |  | #define IVTV_Z8F0811_IR_RX_I2C_ADDR	0x71
 | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | #define IVTV_ADAPTEC_IR_ADDR		0x6b
 | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | /* This array should match the IVTV_HW_ defines */ | 
					
						
							|  |  |  | static const u8 hw_addrs[] = { | 
					
						
							|  |  |  | 	IVTV_CX25840_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_SAA7115_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_SAA7127_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_MSP3400_I2C_ADDR, | 
					
						
							|  |  |  | 	0, | 
					
						
							|  |  |  | 	IVTV_WM8775_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_CS53L32A_I2C_ADDR, | 
					
						
							|  |  |  | 	0, | 
					
						
							|  |  |  | 	IVTV_SAA7115_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_UPD64031A_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_UPD64083_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_SAA717x_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_WM8739_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_VP27SMPX_I2C_ADDR, | 
					
						
							|  |  |  | 	IVTV_M52790_I2C_ADDR, | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 	0,				/* IVTV_HW_GPIO dummy driver ID */ | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 	IVTV_AVERMEDIA_IR_RX_I2C_ADDR,	/* IVTV_HW_I2C_IR_RX_AVER */ | 
					
						
							|  |  |  | 	IVTV_HAUP_EXT_IR_RX_I2C_ADDR,	/* IVTV_HW_I2C_IR_RX_HAUP_EXT */ | 
					
						
							|  |  |  | 	IVTV_HAUP_INT_IR_RX_I2C_ADDR,	/* IVTV_HW_I2C_IR_RX_HAUP_INT */ | 
					
						
							|  |  |  | 	IVTV_Z8F0811_IR_TX_I2C_ADDR,	/* IVTV_HW_Z8F0811_IR_TX_HAUP */ | 
					
						
							|  |  |  | 	IVTV_Z8F0811_IR_RX_I2C_ADDR,	/* IVTV_HW_Z8F0811_IR_RX_HAUP */ | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | 	IVTV_ADAPTEC_IR_ADDR,		/* IVTV_HW_I2C_IR_RX_ADAPTEC */ | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | /* This array should match the IVTV_HW_ defines */ | 
					
						
							| 
									
										
										
										
											2008-05-18 20:49:40 +02:00
										 |  |  | static const char * const hw_devicenames[] = { | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | 	"cx25840", | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	"saa7115", | 
					
						
							| 
									
										
										
										
											2008-07-17 13:18:31 -03:00
										 |  |  | 	"saa7127_auto",	/* saa7127 or saa7129 */ | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	"msp3400", | 
					
						
							|  |  |  | 	"tuner", | 
					
						
							|  |  |  | 	"wm8775", | 
					
						
							|  |  |  | 	"cs53l32a", | 
					
						
							|  |  |  | 	"tveeprom", | 
					
						
							| 
									
										
										
										
											2008-05-18 20:49:40 +02:00
										 |  |  | 	"saa7114", | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	"upd64031a", | 
					
						
							|  |  |  | 	"upd64083", | 
					
						
							|  |  |  | 	"saa717x", | 
					
						
							|  |  |  | 	"wm8739", | 
					
						
							| 
									
										
										
										
											2007-07-27 06:56:50 -03:00
										 |  |  | 	"vp27smpx", | 
					
						
							| 
									
										
										
										
											2007-10-30 05:50:03 -03:00
										 |  |  | 	"m52790", | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	"gpio", | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 	"ir_video",		/* IVTV_HW_I2C_IR_RX_AVER */ | 
					
						
							|  |  |  | 	"ir_video",		/* IVTV_HW_I2C_IR_RX_HAUP_EXT */ | 
					
						
							|  |  |  | 	"ir_video",		/* IVTV_HW_I2C_IR_RX_HAUP_INT */ | 
					
						
							|  |  |  | 	"ir_tx_z8f0811_haup",	/* IVTV_HW_Z8F0811_IR_TX_HAUP */ | 
					
						
							|  |  |  | 	"ir_rx_z8f0811_haup",	/* IVTV_HW_Z8F0811_IR_RX_HAUP */ | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | 	"ir_video",		/* IVTV_HW_I2C_IR_RX_ADAPTEC */ | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-03 20:31:25 -03:00
										 |  |  | static int get_key_adaptec(struct IR_i2c *ir, enum rc_type *protocol, | 
					
						
							|  |  |  | 			   u32 *scancode, u8 *toggle) | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | { | 
					
						
							|  |  |  | 	unsigned char keybuf[4]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	keybuf[0] = 0x00; | 
					
						
							|  |  |  | 	i2c_master_send(ir->c, keybuf, 1); | 
					
						
							|  |  |  | 	/* poll IR chip */ | 
					
						
							|  |  |  | 	if (i2c_master_recv(ir->c, keybuf, sizeof(keybuf)) != sizeof(keybuf)) { | 
					
						
							|  |  |  | 		return 0; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* key pressed ? */ | 
					
						
							|  |  |  | 	if (keybuf[2] == 0xff) | 
					
						
							|  |  |  | 		return 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* remove repeat bit */ | 
					
						
							|  |  |  | 	keybuf[2] &= 0x7f; | 
					
						
							|  |  |  | 	keybuf[3] |= 0x80; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-03 20:31:25 -03:00
										 |  |  | 	*protocol = RC_TYPE_UNKNOWN; | 
					
						
							|  |  |  | 	*scancode = keybuf[3] | keybuf[2] << 8 | keybuf[1] << 16 |keybuf[0] << 24; | 
					
						
							|  |  |  | 	*toggle = 0; | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | 	return 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | static int ivtv_i2c_new_ir(struct ivtv *itv, u32 hw, const char *type, u8 addr) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct i2c_board_info info; | 
					
						
							|  |  |  | 	struct i2c_adapter *adap = &itv->i2c_adap; | 
					
						
							|  |  |  | 	struct IR_i2c_init_data *init_data = &itv->ir_i2c_init_data; | 
					
						
							|  |  |  | 	unsigned short addr_list[2] = { addr, I2C_CLIENT_END }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 	/* Only allow one IR transmitter to be registered per board */ | 
					
						
							|  |  |  | 	if (hw & IVTV_HW_IR_TX_ANY) { | 
					
						
							|  |  |  | 		if (itv->hw_flags & IVTV_HW_IR_TX_ANY) | 
					
						
							|  |  |  | 			return -1; | 
					
						
							|  |  |  | 		memset(&info, 0, sizeof(struct i2c_board_info)); | 
					
						
							|  |  |  | 		strlcpy(info.type, type, I2C_NAME_SIZE); | 
					
						
							| 
									
										
										
										
											2010-08-11 18:20:56 +02:00
										 |  |  | 		return i2c_new_probed_device(adap, &info, addr_list, NULL) | 
					
						
							|  |  |  | 							   == NULL ? -1 : 0; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* Only allow one IR receiver to be registered per board */ | 
					
						
							|  |  |  | 	if (itv->hw_flags & IVTV_HW_IR_RX_ANY) | 
					
						
							|  |  |  | 		return -1; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 	/* Our default information for ir-kbd-i2c.c to use */ | 
					
						
							|  |  |  | 	switch (hw) { | 
					
						
							|  |  |  | 	case IVTV_HW_I2C_IR_RX_AVER: | 
					
						
							| 
									
										
										
										
											2010-04-02 20:01:00 -03:00
										 |  |  | 		init_data->ir_codes = RC_MAP_AVERMEDIA_CARDBUS; | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 		init_data->internal_get_key_func = | 
					
						
							|  |  |  | 					IR_KBD_GET_KEY_AVERMEDIA_CARDBUS; | 
					
						
							| 
									
										
										
										
											2012-10-11 19:11:54 -03:00
										 |  |  | 		init_data->type = RC_BIT_OTHER; | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 		init_data->name = "AVerMedia AVerTV card"; | 
					
						
							|  |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 	case IVTV_HW_I2C_IR_RX_HAUP_EXT: | 
					
						
							|  |  |  | 	case IVTV_HW_I2C_IR_RX_HAUP_INT: | 
					
						
							| 
									
										
										
										
											2011-01-24 22:23:08 -03:00
										 |  |  | 		init_data->ir_codes = RC_MAP_HAUPPAUGE; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 		init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP; | 
					
						
							| 
									
										
										
										
											2012-10-11 19:11:54 -03:00
										 |  |  | 		init_data->type = RC_BIT_RC5; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 		init_data->name = itv->card_name; | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	case IVTV_HW_Z8F0811_IR_RX_HAUP: | 
					
						
							|  |  |  | 		/* Default to grey remote */ | 
					
						
							| 
									
										
										
										
											2011-01-24 12:18:48 -03:00
										 |  |  | 		init_data->ir_codes = RC_MAP_HAUPPAUGE; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 		init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; | 
					
						
							| 
									
										
										
										
											2012-10-11 19:11:54 -03:00
										 |  |  | 		init_data->type = RC_BIT_RC5; | 
					
						
							| 
									
										
										
										
											2009-11-21 16:19:27 -03:00
										 |  |  | 		init_data->name = itv->card_name; | 
					
						
							|  |  |  | 		break; | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | 	case IVTV_HW_I2C_IR_RX_ADAPTEC: | 
					
						
							|  |  |  | 		init_data->get_key = get_key_adaptec; | 
					
						
							|  |  |  | 		init_data->name = itv->card_name; | 
					
						
							|  |  |  | 		/* FIXME: The protocol and RC_MAP needs to be corrected */ | 
					
						
							|  |  |  | 		init_data->ir_codes = RC_MAP_EMPTY; | 
					
						
							| 
									
										
										
										
											2012-10-11 19:11:54 -03:00
										 |  |  | 		init_data->type = RC_BIT_UNKNOWN; | 
					
						
							| 
									
										
											  
											
												[media] ivtv: Add Adaptec Remote Controller
lirc-i2c implements a get key logic for the Adaptec Remote
Controller, at address 0x6b. The only driver that seems to have
an Adaptec device is ivtv:
$ git grep -i adaptec drivers/media
drivers/media/video/cs53l32a.c: * cs53l32a (Adaptec AVC-2010 and AVC-2410) i2c ivtv driver.
drivers/media/video/cs53l32a.c: * Audio source switching for Adaptec AVC-2410 added by Trev Jackson
drivers/media/video/cs53l32a.c:   /* Set cs53l32a internal register for Adaptec 2010/2410 setup */
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2410 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0093 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2410",
drivers/media/video/ivtv/ivtv-cards.c:/* Adaptec VideOh! AVC-2010 card */
drivers/media/video/ivtv/ivtv-cards.c:    { PCI_DEVICE_ID_IVTV16, IVTV_PCI_ID_ADAPTEC, 0x0092 },
drivers/media/video/ivtv/ivtv-cards.c:    .name = "Adaptec VideOh! AVC-2010",
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2410         7 /* Adaptec AVC-2410 */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_CARD_AVC2010         8 /* Adaptec AVD-2010 (No Tuner) */
drivers/media/video/ivtv/ivtv-cards.h:#define IVTV_PCI_ID_ADAPTEC                 0x9005
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 8 = Adaptec AVC-2410\n"
drivers/media/video/ivtv/ivtv-driver.c:            "\t\t\t 9 = Adaptec AVC-2010\n"
drivers/media/video/ivtv/ivtv-i2c.c:              0x6b,   /* Adaptec IR */
There are two Adaptec cards defined there, but AVC-2010 doesn't have a
remote controller. So, the logic at lirc_i2c seems to be for Adaptec AVC-2410.
As we'll remove lirc_i2c from kernel, move the getkey code to ivtv driver, and
use it for AVC-2410.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
Acked-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
											
										 
											2010-12-30 08:31:10 -03:00
										 |  |  | 		break; | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	memset(&info, 0, sizeof(struct i2c_board_info)); | 
					
						
							|  |  |  | 	info.platform_data = init_data; | 
					
						
							|  |  |  | 	strlcpy(info.type, type, I2C_NAME_SIZE); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-11 18:20:56 +02:00
										 |  |  | 	return i2c_new_probed_device(adap, &info, addr_list, NULL) == NULL ? | 
					
						
							|  |  |  | 	       -1 : 0; | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 11:41:33 -03:00
										 |  |  | /* Instantiate the IR receiver device using probing -- undesirable */ | 
					
						
							|  |  |  | struct i2c_client *ivtv_i2c_new_ir_legacy(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct i2c_board_info info; | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * The external IR receiver is at i2c address 0x34. | 
					
						
							|  |  |  | 	 * The internal IR receiver is at i2c address 0x30. | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * In theory, both can be fitted, and Hauppauge suggests an external | 
					
						
							|  |  |  | 	 * overrides an internal.  That's why we probe 0x1a (~0x34) first. CB | 
					
						
							|  |  |  | 	 * | 
					
						
							|  |  |  | 	 * Some of these addresses we probe may collide with other i2c address | 
					
						
							|  |  |  | 	 * allocations, so this function must be called after all other i2c | 
					
						
							|  |  |  | 	 * devices we care about are registered. | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	const unsigned short addr_list[] = { | 
					
						
							|  |  |  | 		0x1a,	/* Hauppauge IR external - collides with WM8739 */ | 
					
						
							|  |  |  | 		0x18,	/* Hauppauge IR internal */ | 
					
						
							|  |  |  | 		I2C_CLIENT_END | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	memset(&info, 0, sizeof(struct i2c_board_info)); | 
					
						
							|  |  |  | 	strlcpy(info.type, "ir_video", I2C_NAME_SIZE); | 
					
						
							| 
									
										
										
										
											2010-08-11 18:20:56 +02:00
										 |  |  | 	return i2c_new_probed_device(&itv->i2c_adap, &info, addr_list, NULL); | 
					
						
							| 
									
										
										
										
											2009-11-21 11:41:33 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | int ivtv_i2c_register(struct ivtv *itv, unsigned idx) | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	struct v4l2_subdev *sd; | 
					
						
							|  |  |  | 	struct i2c_adapter *adap = &itv->i2c_adap; | 
					
						
							|  |  |  | 	const char *type = hw_devicenames[idx]; | 
					
						
							|  |  |  | 	u32 hw = 1 << idx; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	if (hw == IVTV_HW_TUNER) { | 
					
						
							|  |  |  | 		/* special tuner handling */ | 
					
						
							| 
									
										
										
										
											2010-09-24 10:16:44 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, | 
					
						
							|  |  |  | 				itv->card_i2c->radio); | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 		if (sd) | 
					
						
							|  |  |  | 			sd->grp_id = 1 << idx; | 
					
						
							| 
									
										
										
										
											2010-09-24 10:16:44 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, | 
					
						
							|  |  |  | 				itv->card_i2c->demod); | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 		if (sd) | 
					
						
							|  |  |  | 			sd->grp_id = 1 << idx; | 
					
						
							| 
									
										
										
										
											2010-09-24 10:16:44 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, | 
					
						
							|  |  |  | 				itv->card_i2c->tv); | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 		if (sd) | 
					
						
							|  |  |  | 			sd->grp_id = 1 << idx; | 
					
						
							|  |  |  | 		return sd ? 0 : -1; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (hw & IVTV_HW_IR_ANY) | 
					
						
							|  |  |  | 		return ivtv_i2c_new_ir(itv, hw, type, hw_addrs[idx]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* Is it not an I2C device or one we do not wish to register? */ | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	if (!hw_addrs[idx]) | 
					
						
							|  |  |  | 		return -1; | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* It's an I2C device other than an analog tuner or IR chip */ | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	if (hw == IVTV_HW_UPD64031A || hw == IVTV_HW_UPD6408X) { | 
					
						
							| 
									
										
										
										
											2009-08-10 02:49:08 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 
					
						
							| 
									
										
										
										
											2010-09-24 10:16:44 -03:00
										 |  |  | 				adap, type, 0, I2C_ADDRS(hw_addrs[idx])); | 
					
						
							| 
									
										
										
										
											2010-08-06 10:53:19 -03:00
										 |  |  | 	} else if (hw == IVTV_HW_CX25840) { | 
					
						
							|  |  |  | 		struct cx25840_platform_data pdata; | 
					
						
							| 
									
										
										
										
											2011-01-08 07:08:02 -03:00
										 |  |  | 		struct i2c_board_info cx25840_info = { | 
					
						
							|  |  |  | 			.type = "cx25840", | 
					
						
							|  |  |  | 			.addr = hw_addrs[idx], | 
					
						
							|  |  |  | 			.platform_data = &pdata, | 
					
						
							|  |  |  | 		}; | 
					
						
							| 
									
										
										
										
											2010-08-06 10:53:19 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		pdata.pvr150_workaround = itv->pvr150_workaround; | 
					
						
							| 
									
										
										
										
											2011-01-08 07:08:02 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev_board(&itv->v4l2_dev, adap, | 
					
						
							|  |  |  | 				&cx25840_info, NULL); | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2009-04-01 03:57:53 -03:00
										 |  |  | 		sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, | 
					
						
							| 
									
										
										
										
											2010-09-24 10:16:44 -03:00
										 |  |  | 				adap, type, hw_addrs[idx], NULL); | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	if (sd) | 
					
						
							|  |  |  | 		sd->grp_id = 1 << idx; | 
					
						
							|  |  |  | 	return sd ? 0 : -1; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | struct v4l2_subdev *ivtv_find_hw(struct ivtv *itv, u32 hw) | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	struct v4l2_subdev *result = NULL; | 
					
						
							|  |  |  | 	struct v4l2_subdev *sd; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-07 07:02:27 -03:00
										 |  |  | 	spin_lock(&itv->v4l2_dev.lock); | 
					
						
							|  |  |  | 	v4l2_device_for_each_subdev(sd, &itv->v4l2_dev) { | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 		if (sd->grp_id == hw) { | 
					
						
							|  |  |  | 			result = sd; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 			break; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-02-07 07:02:27 -03:00
										 |  |  | 	spin_unlock(&itv->v4l2_dev.lock); | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 	return result; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Set the serial clock line to the desired state */ | 
					
						
							|  |  |  | static void ivtv_setscl(struct ivtv *itv, int state) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* write them out */ | 
					
						
							|  |  |  | 	/* write bits are inverted */ | 
					
						
							|  |  |  | 	write_reg(~state, IVTV_REG_I2C_SETSCL_OFFSET); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Set the serial data line to the desired state */ | 
					
						
							|  |  |  | static void ivtv_setsda(struct ivtv *itv, int state) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* write them out */ | 
					
						
							|  |  |  | 	/* write bits are inverted */ | 
					
						
							|  |  |  | 	write_reg(~state & 1, IVTV_REG_I2C_SETSDA_OFFSET); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Read the serial clock line */ | 
					
						
							|  |  |  | static int ivtv_getscl(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return read_reg(IVTV_REG_I2C_GETSCL_OFFSET) & 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Read the serial data line */ | 
					
						
							|  |  |  | static int ivtv_getsda(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return read_reg(IVTV_REG_I2C_GETSDA_OFFSET) & 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Implement a short delay by polling the serial clock line */ | 
					
						
							|  |  |  | static void ivtv_scldelay(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (i = 0; i < 5; ++i) | 
					
						
							|  |  |  | 		ivtv_getscl(itv); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Wait for the serial clock line to become set to a specific value */ | 
					
						
							|  |  |  | static int ivtv_waitscl(struct ivtv *itv, int val) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	for (i = 0; i < 1000; ++i) { | 
					
						
							|  |  |  | 		if (ivtv_getscl(itv) == val) | 
					
						
							|  |  |  | 			return 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Wait for the serial data line to become set to a specific value */ | 
					
						
							|  |  |  | static int ivtv_waitsda(struct ivtv *itv, int val) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	for (i = 0; i < 1000; ++i) { | 
					
						
							|  |  |  | 		if (ivtv_getsda(itv) == val) | 
					
						
							|  |  |  | 			return 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Wait for the slave to issue an ACK */ | 
					
						
							|  |  |  | static int ivtv_ack(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int ret = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (ivtv_getscl(itv) == 1) { | 
					
						
							| 
									
										
										
										
											2007-07-17 12:47:38 -03:00
										 |  |  | 		IVTV_DEBUG_HI_I2C("SCL was high starting an ack\n"); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 		ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 0)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("Could not set SCL low starting an ack\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 	if (!ivtv_waitsda(itv, 0)) { | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("Slave did not ack\n"); | 
					
						
							|  |  |  | 		ret = -EREMOTEIO; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 	if (!ivtv_waitscl(itv, 0)) { | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("Failed to set SCL low after ACK\n"); | 
					
						
							|  |  |  | 		ret = -EREMOTEIO; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Write a single byte to the i2c bus and wait for the slave to ACK */ | 
					
						
							|  |  |  | static int ivtv_sendbyte(struct ivtv *itv, unsigned char byte) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i, bit; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-07-17 12:47:38 -03:00
										 |  |  | 	IVTV_DEBUG_HI_I2C("write %x\n",byte); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	for (i = 0; i < 8; ++i, byte<<=1) { | 
					
						
							|  |  |  | 		ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 0)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("Error setting SCL low\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		bit = (byte>>7)&1; | 
					
						
							|  |  |  | 		ivtv_setsda(itv, bit); | 
					
						
							|  |  |  | 		if (!ivtv_waitsda(itv, bit)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("Error setting SDA\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 1)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("Slave not ready for bit\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 	if (!ivtv_waitscl(itv, 0)) { | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("Error setting SCL low\n"); | 
					
						
							|  |  |  | 		return -EREMOTEIO; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return ivtv_ack(itv); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Read a byte from the i2c bus and send a NACK if applicable (i.e. for the
 | 
					
						
							|  |  |  |    final byte) */ | 
					
						
							|  |  |  | static int ivtv_readbyte(struct ivtv *itv, unsigned char *byte, int nack) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	*byte = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	for (i = 0; i < 8; ++i) { | 
					
						
							|  |  |  | 		ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 		ivtv_scldelay(itv); | 
					
						
							|  |  |  | 		ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 1)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("Error setting SCL high\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		*byte = ((*byte)<<1)|ivtv_getsda(itv); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setsda(itv, nack); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							| 
									
										
										
										
											2007-07-17 12:47:38 -03:00
										 |  |  | 	IVTV_DEBUG_HI_I2C("read %x\n",*byte); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Issue a start condition on the i2c bus to alert slaves to prepare for
 | 
					
						
							|  |  |  |    an address write */ | 
					
						
							|  |  |  | static int ivtv_start(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int sda; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	sda = ivtv_getsda(itv); | 
					
						
							|  |  |  | 	if (sda != 1) { | 
					
						
							| 
									
										
										
										
											2007-07-17 12:47:38 -03:00
										 |  |  | 		IVTV_DEBUG_HI_I2C("SDA was low at start\n"); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 		ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 		if (!ivtv_waitsda(itv, 1)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("SDA stuck low\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (ivtv_getscl(itv) != 1) { | 
					
						
							|  |  |  | 		ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 1)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("SCL stuck low at start\n"); | 
					
						
							|  |  |  | 			return -EREMOTEIO; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 0); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Issue a stop condition on the i2c bus to release it */ | 
					
						
							|  |  |  | static int ivtv_stop(struct ivtv *itv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (ivtv_getscl(itv) != 0) { | 
					
						
							| 
									
										
										
										
											2007-07-17 12:47:38 -03:00
										 |  |  | 		IVTV_DEBUG_HI_I2C("SCL not low when stopping\n"); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 		ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 		if (!ivtv_waitscl(itv, 0)) { | 
					
						
							|  |  |  | 			IVTV_DEBUG_I2C("SCL could not be set low\n"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 0); | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 	if (!ivtv_waitscl(itv, 1)) { | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("SCL could not be set high\n"); | 
					
						
							|  |  |  | 		return -EREMOTEIO; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	ivtv_scldelay(itv); | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 	if (!ivtv_waitsda(itv, 1)) { | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("resetting I2C\n"); | 
					
						
							|  |  |  | 		for (i = 0; i < 16; ++i) { | 
					
						
							|  |  |  | 			ivtv_setscl(itv, 0); | 
					
						
							|  |  |  | 			ivtv_scldelay(itv); | 
					
						
							|  |  |  | 			ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 			ivtv_scldelay(itv); | 
					
						
							|  |  |  | 			ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		ivtv_waitsda(itv, 1); | 
					
						
							|  |  |  | 		return -EREMOTEIO; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Write a message to the given i2c slave.  do_stop may be 0 to prevent
 | 
					
						
							|  |  |  |    issuing the i2c stop condition (when following with a read) */ | 
					
						
							|  |  |  | static int ivtv_write(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len, int do_stop) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int retry, ret = -EREMOTEIO; | 
					
						
							|  |  |  | 	u32 i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (retry = 0; ret != 0 && retry < 8; ++retry) { | 
					
						
							|  |  |  | 		ret = ivtv_start(itv); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (ret == 0) { | 
					
						
							|  |  |  | 			ret = ivtv_sendbyte(itv, addr<<1); | 
					
						
							|  |  |  | 			for (i = 0; ret == 0 && i < len; ++i) | 
					
						
							|  |  |  | 				ret = ivtv_sendbyte(itv, data[i]); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if (ret != 0 || do_stop) { | 
					
						
							|  |  |  | 			ivtv_stop(itv); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (ret) | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("i2c write to %x failed\n", addr); | 
					
						
							|  |  |  | 	return ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Read data from the given i2c slave.  A stop condition is always issued. */ | 
					
						
							|  |  |  | static int ivtv_read(struct ivtv *itv, unsigned char addr, unsigned char *data, u32 len) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int retry, ret = -EREMOTEIO; | 
					
						
							|  |  |  | 	u32 i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for (retry = 0; ret != 0 && retry < 8; ++retry) { | 
					
						
							|  |  |  | 		ret = ivtv_start(itv); | 
					
						
							|  |  |  | 		if (ret == 0) | 
					
						
							|  |  |  | 			ret = ivtv_sendbyte(itv, (addr << 1) | 1); | 
					
						
							|  |  |  | 		for (i = 0; ret == 0 && i < len; ++i) { | 
					
						
							|  |  |  | 			ret = ivtv_readbyte(itv, &data[i], i == len - 1); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		ivtv_stop(itv); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (ret) | 
					
						
							|  |  |  | 		IVTV_DEBUG_I2C("i2c read from %x failed\n", addr); | 
					
						
							|  |  |  | 	return ret; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Kernel i2c transfer implementation.  Takes a number of messages to be read
 | 
					
						
							|  |  |  |    or written.  If a read follows a write, this will occur without an | 
					
						
							|  |  |  |    intervening stop condition */ | 
					
						
							|  |  |  | static int ivtv_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, int num) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-02-07 07:02:27 -03:00
										 |  |  | 	struct v4l2_device *v4l2_dev = i2c_get_adapdata(i2c_adap); | 
					
						
							|  |  |  | 	struct ivtv *itv = to_ivtv(v4l2_dev); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	int retval; | 
					
						
							|  |  |  | 	int i; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	mutex_lock(&itv->i2c_bus_lock); | 
					
						
							|  |  |  | 	for (i = retval = 0; retval == 0 && i < num; i++) { | 
					
						
							|  |  |  | 		if (msgs[i].flags & I2C_M_RD) | 
					
						
							|  |  |  | 			retval = ivtv_read(itv, msgs[i].addr, msgs[i].buf, msgs[i].len); | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			/* if followed by a read, don't stop */ | 
					
						
							|  |  |  | 			int stop = !(i + 1 < num && msgs[i + 1].flags == I2C_M_RD); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			retval = ivtv_write(itv, msgs[i].addr, msgs[i].buf, msgs[i].len, stop); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	mutex_unlock(&itv->i2c_bus_lock); | 
					
						
							|  |  |  | 	return retval ? retval : num; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Kernel i2c capabilities */ | 
					
						
							|  |  |  | static u32 ivtv_functionality(struct i2c_adapter *adap) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct i2c_algorithm ivtv_algo = { | 
					
						
							|  |  |  | 	.master_xfer   = ivtv_xfer, | 
					
						
							|  |  |  | 	.functionality = ivtv_functionality, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* template for our-bit banger */ | 
					
						
							|  |  |  | static struct i2c_adapter ivtv_i2c_adap_hw_template = { | 
					
						
							|  |  |  | 	.name = "ivtv i2c driver", | 
					
						
							|  |  |  | 	.algo = &ivtv_algo, | 
					
						
							|  |  |  | 	.algo_data = NULL,			/* filled from template */ | 
					
						
							|  |  |  | 	.owner = THIS_MODULE, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void ivtv_setscl_old(void *data, int state) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct ivtv *itv = (struct ivtv *)data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (state) | 
					
						
							|  |  |  | 		itv->i2c_state |= 0x01; | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		itv->i2c_state &= ~0x01; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* write them out */ | 
					
						
							|  |  |  | 	/* write bits are inverted */ | 
					
						
							|  |  |  | 	write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSCL_OFFSET); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void ivtv_setsda_old(void *data, int state) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct ivtv *itv = (struct ivtv *)data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (state) | 
					
						
							|  |  |  | 		itv->i2c_state |= 0x01; | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		itv->i2c_state &= ~0x01; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* write them out */ | 
					
						
							|  |  |  | 	/* write bits are inverted */ | 
					
						
							|  |  |  | 	write_reg(~itv->i2c_state, IVTV_REG_I2C_SETSDA_OFFSET); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static int ivtv_getscl_old(void *data) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct ivtv *itv = (struct ivtv *)data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return read_reg(IVTV_REG_I2C_GETSCL_OFFSET) & 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static int ivtv_getsda_old(void *data) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct ivtv *itv = (struct ivtv *)data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return read_reg(IVTV_REG_I2C_GETSDA_OFFSET) & 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* template for i2c-bit-algo */ | 
					
						
							|  |  |  | static struct i2c_adapter ivtv_i2c_adap_template = { | 
					
						
							|  |  |  | 	.name = "ivtv i2c driver", | 
					
						
							|  |  |  | 	.algo = NULL,                   /* set by i2c-algo-bit */ | 
					
						
							|  |  |  | 	.algo_data = NULL,              /* filled from template */ | 
					
						
							|  |  |  | 	.owner = THIS_MODULE, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 01:47:45 -03:00
										 |  |  | #define IVTV_ALGO_BIT_TIMEOUT	(2)	/* seconds */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-23 15:45:41 -03:00
										 |  |  | static const struct i2c_algo_bit_data ivtv_i2c_algo_template = { | 
					
						
							|  |  |  | 	.setsda		= ivtv_setsda_old, | 
					
						
							|  |  |  | 	.setscl		= ivtv_setscl_old, | 
					
						
							|  |  |  | 	.getsda		= ivtv_getsda_old, | 
					
						
							|  |  |  | 	.getscl		= ivtv_getscl_old, | 
					
						
							| 
									
										
										
										
											2009-11-21 01:47:45 -03:00
										 |  |  | 	.udelay		= IVTV_DEFAULT_I2C_CLOCK_PERIOD / 2,  /* microseconds */ | 
					
						
							|  |  |  | 	.timeout	= IVTV_ALGO_BIT_TIMEOUT * HZ,         /* jiffies */ | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct i2c_client ivtv_i2c_client_template = { | 
					
						
							| 
									
										
										
										
											2007-03-07 11:28:33 -03:00
										 |  |  | 	.name = "ivtv internal", | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-21 11:41:33 -03:00
										 |  |  | /* init + register i2c adapter */ | 
					
						
							| 
									
										
										
										
											2007-12-11 19:23:49 -03:00
										 |  |  | int init_ivtv_i2c(struct ivtv *itv) | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-05-13 16:48:50 -03:00
										 |  |  | 	int retval; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	IVTV_DEBUG_I2C("i2c init\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | 	/* Sanity checks for the I2C hardware arrays. They must be the
 | 
					
						
							| 
									
										
										
										
											2009-11-21 12:52:34 -03:00
										 |  |  | 	 * same size. | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2010-09-24 09:58:51 -03:00
										 |  |  | 	if (ARRAY_SIZE(hw_devicenames) != ARRAY_SIZE(hw_addrs)) { | 
					
						
							| 
									
										
										
										
											2007-12-07 21:01:15 -03:00
										 |  |  | 		IVTV_ERR("Mismatched I2C hardware arrays\n"); | 
					
						
							|  |  |  | 		return -ENODEV; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	if (itv->options.newi2c > 0) { | 
					
						
							| 
									
										
										
										
											2012-10-23 15:57:18 -03:00
										 |  |  | 		itv->i2c_adap = ivtv_i2c_adap_hw_template; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2012-10-23 15:57:18 -03:00
										 |  |  | 		itv->i2c_adap = ivtv_i2c_adap_template; | 
					
						
							|  |  |  | 		itv->i2c_algo = ivtv_i2c_algo_template; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-11-21 01:47:45 -03:00
										 |  |  | 	itv->i2c_algo.udelay = itv->options.i2c_clock_period / 2; | 
					
						
							| 
									
										
										
										
											2007-12-21 21:33:36 -03:00
										 |  |  | 	itv->i2c_algo.data = itv; | 
					
						
							|  |  |  | 	itv->i2c_adap.algo_data = &itv->i2c_algo; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	sprintf(itv->i2c_adap.name + strlen(itv->i2c_adap.name), " #%d", | 
					
						
							| 
									
										
										
										
											2008-11-29 19:38:23 -03:00
										 |  |  | 		itv->instance); | 
					
						
							| 
									
										
										
										
											2009-02-07 07:02:27 -03:00
										 |  |  | 	i2c_set_adapdata(&itv->i2c_adap, &itv->v4l2_dev); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-23 15:57:18 -03:00
										 |  |  | 	itv->i2c_client = ivtv_i2c_client_template; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	itv->i2c_client.adapter = &itv->i2c_adap; | 
					
						
							| 
									
										
										
										
											2009-02-07 07:02:27 -03:00
										 |  |  | 	itv->i2c_adap.dev.parent = &itv->pdev->dev; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	IVTV_DEBUG_I2C("setting scl and sda to 1\n"); | 
					
						
							|  |  |  | 	ivtv_setscl(itv, 1); | 
					
						
							|  |  |  | 	ivtv_setsda(itv, 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if (itv->options.newi2c > 0) | 
					
						
							| 
									
										
										
										
											2009-05-13 16:48:50 -03:00
										 |  |  | 		retval = i2c_add_adapter(&itv->i2c_adap); | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | 	else | 
					
						
							| 
									
										
										
										
											2009-05-13 16:48:50 -03:00
										 |  |  | 		retval = i2c_bit_add_bus(&itv->i2c_adap); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return retval; | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-30 21:23:48 -07:00
										 |  |  | void exit_ivtv_i2c(struct ivtv *itv) | 
					
						
							| 
									
										
										
											
												V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
It took three core maintainers, over four years of work, eight new i2c
modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced
VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding
API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac
support from Axel Thimm, (hardware) support from Hauppauge, support and
assistance from the v4l-dvb people and the many, many users of ivtv to
finally make it possible to merge this driver into the kernel.
Thank you all!
Signed-off-by: Kevin Thayer <nufan_wfk@yahoo.com>
Signed-off-by: Chris Kennedy <c@groovy.org>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: John P Harvey <john.p.harvey@btinternet.com>
Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
											
										 
											2007-04-27 12:31:25 -03:00
										 |  |  | { | 
					
						
							|  |  |  | 	IVTV_DEBUG_I2C("i2c exit\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	i2c_del_adapter(&itv->i2c_adap); | 
					
						
							|  |  |  | } |