rpms/kernel/F-12 hdpvr-ir-enable.patch, 1.7, 1.8 kernel.spec, 1.2102, 1.2103

Jarod Wilson jwilson at fedoraproject.org
Wed Jul 7 04:21:19 UTC 2010


Author: jwilson

Update of /cvs/pkgs/rpms/kernel/F-12
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv15202

Modified Files:
	hdpvr-ir-enable.patch kernel.spec 
Log Message:
* Wed Jul 07 2010 Jarod Wilson <jarod at redhat.com> 2.6.32.16-141
- Really make hdpvr i2c IR part register this time, so something can
  actually be bound to it (like, say, lirc_zilog)


hdpvr-ir-enable.patch:
 Makefile     |    4 --
 hdpvr-core.c |   12 ++-----
 hdpvr-i2c.c  |   89 +++++++++++++++++++++++++++++++++++++++++------------------
 hdpvr.h      |    2 -
 4 files changed, 68 insertions(+), 39 deletions(-)

Index: hdpvr-ir-enable.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/hdpvr-ir-enable.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- hdpvr-ir-enable.patch	13 May 2010 04:28:06 -0000	1.7
+++ hdpvr-ir-enable.patch	7 Jul 2010 04:21:15 -0000	1.8
@@ -1,28 +1,7 @@
-From http://hg.jannau.net/hdpvr/, pending v4l-dvb pull request
-
----
- drivers/media/video/hdpvr/Makefile     |    4 +--
- drivers/media/video/hdpvr/hdpvr-core.c |    7 ++---
- drivers/media/video/hdpvr/hdpvr-i2c.c  |   40 ++++++++++++++++++++++++++-----
- 3 files changed, 37 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
-index e0230fc..79ad2e1 100644
---- a/drivers/media/video/hdpvr/Makefile
-+++ b/drivers/media/video/hdpvr/Makefile
-@@ -1,6 +1,4 @@
--hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-video.o
--
--hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o
-+hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-i2c.o hdpvr-video.o
- 
- obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
- 
-diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
-index 188bd5a..779f907 100644
---- a/drivers/media/video/hdpvr/hdpvr-core.c
-+++ b/drivers/media/video/hdpvr/hdpvr-core.c
-@@ -362,9 +362,8 @@ static int hdpvr_probe(struct usb_interface *interface,
+diff -Naurp a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
+--- a/drivers/media/video/hdpvr/hdpvr-core.c	2010-07-06 17:36:44.000000000 -0400
++++ b/drivers/media/video/hdpvr/hdpvr-core.c	2010-07-06 17:38:13.000000000 -0400
+@@ -363,9 +363,8 @@ static int hdpvr_probe(struct usb_interf
  		goto error;
  	}
  
@@ -34,19 +13,36 @@ index 188bd5a..779f907 100644
  	if (retval < 0) {
  		v4l2_err(&dev->v4l2_dev, "registering i2c adapter failed\n");
  		goto error;
-@@ -414,7 +413,7 @@ static void hdpvr_disconnect(struct usb_interface *interface)
+@@ -411,12 +410,9 @@ static void hdpvr_disconnect(struct usb_
  	mutex_unlock(&dev->io_mutex);
  
  	/* deregister I2C adapter */
 -#ifdef CONFIG_I2C
 +#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
  	mutex_lock(&dev->i2c_mutex);
- 	if (dev->i2c_adapter)
- 		i2c_del_adapter(dev->i2c_adapter);
-diff --git a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
-index c4b5d15..e0ae619 100644
---- a/drivers/media/video/hdpvr/hdpvr-i2c.c
-+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c
+-	if (dev->i2c_adapter)
+-		i2c_del_adapter(dev->i2c_adapter);
+-	kfree(dev->i2c_adapter);
+-	dev->i2c_adapter = NULL;
++	i2c_del_adapter(&dev->i2c_adapter);
+ 	mutex_unlock(&dev->i2c_mutex);
+ #endif /* CONFIG_I2C */
+ 
+diff -Naurp a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
+--- a/drivers/media/video/hdpvr/hdpvr.h	2010-02-24 13:52:17.000000000 -0500
++++ b/drivers/media/video/hdpvr/hdpvr.h	2010-07-06 17:42:20.000000000 -0400
+@@ -101,7 +101,7 @@ struct hdpvr_device {
+ 	struct work_struct	worker;
+ 
+ 	/* I2C adapter */
+-	struct i2c_adapter	*i2c_adapter;
++	struct i2c_adapter	i2c_adapter;
+ 	/* I2C lock */
+ 	struct mutex		i2c_mutex;
+ 
+diff -Naurp a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c
+--- a/drivers/media/video/hdpvr/hdpvr-i2c.c	2010-07-06 17:36:51.000000000 -0400
++++ b/drivers/media/video/hdpvr/hdpvr-i2c.c	2010-07-06 17:45:50.000000000 -0400
 @@ -10,6 +10,8 @@
   *
   */
@@ -56,8 +52,15 @@ index c4b5d15..e0ae619 100644
  #include <linux/i2c.h>
  
  #include "hdpvr.h"
-@@ -22,7 +24,7 @@
- #define REQTYPE_I2C_WRITE_STATT	0xd0
+@@ -19,10 +21,13 @@
+ 
+ #define REQTYPE_I2C_READ	0xb1
+ #define REQTYPE_I2C_WRITE	0xb0
+-#define REQTYPE_I2C_WRITE_STATT	0xd0
++#define REQTYPE_I2C_WRITE_STAT	0xd0
++
++#define HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR	0x70
++#define HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR	0x71
  
  static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
 -			  char *data, int len)
@@ -65,7 +68,7 @@ index c4b5d15..e0ae619 100644
  {
  	int ret;
  	char *buf = kmalloc(len, GFP_KERNEL);
-@@ -32,7 +34,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
+@@ -32,7 +37,7 @@ static int hdpvr_i2c_read(struct hdpvr_d
  	ret = usb_control_msg(dev->udev,
  			      usb_rcvctrlpipe(dev->udev, 0),
  			      REQTYPE_I2C_READ, CTRL_READ_REQUEST,
@@ -74,7 +77,7 @@ index c4b5d15..e0ae619 100644
  
  	if (ret == len) {
  		memcpy(data, buf, len);
-@@ -46,7 +48,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr,
+@@ -46,7 +51,7 @@ static int hdpvr_i2c_read(struct hdpvr_d
  }
  
  static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
@@ -83,7 +86,7 @@ index c4b5d15..e0ae619 100644
  {
  	int ret;
  	char *buf = kmalloc(len, GFP_KERNEL);
-@@ -57,7 +59,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
+@@ -57,17 +62,17 @@ static int hdpvr_i2c_write(struct hdpvr_
  	ret = usb_control_msg(dev->udev,
  			      usb_sndctrlpipe(dev->udev, 0),
  			      REQTYPE_I2C_WRITE, CTRL_WRITE_REQUEST,
@@ -92,8 +95,11 @@ index c4b5d15..e0ae619 100644
  
  	if (ret < 0)
  		goto error;
-@@ -67,7 +69,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr,
- 			      REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
+ 
+ 	ret = usb_control_msg(dev->udev,
+ 			      usb_rcvctrlpipe(dev->udev, 0),
+-			      REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST,
++			      REQTYPE_I2C_WRITE_STAT, CTRL_READ_REQUEST,
  			      0, 0, buf, 2, 1000);
  
 -	if (ret == 2)
@@ -101,7 +107,7 @@ index c4b5d15..e0ae619 100644
  		ret = 0;
  	else if (ret >= 0)
  		ret = -EIO;
-@@ -93,10 +95,10 @@ static int hdpvr_transfer(struct i2c_adapter *i2c_adapter, struct i2c_msg *msgs,
+@@ -93,10 +98,10 @@ static int hdpvr_transfer(struct i2c_ada
  
  		if (msgs[i].flags & I2C_M_RD)
  			retval = hdpvr_i2c_read(dev, addr, msgs[i].buf,
@@ -114,10 +120,24 @@ index c4b5d15..e0ae619 100644
  	}
  
  	mutex_unlock(&dev->i2c_mutex);
-@@ -114,6 +116,26 @@ static struct i2c_algorithm hdpvr_algo = {
+@@ -114,31 +119,61 @@ static struct i2c_algorithm hdpvr_algo =
  	.functionality = hdpvr_functionality,
  };
  
++static struct i2c_adapter hdpvr_i2c_adap_template = {
++	.name		= "Hauppauge HD PVR I2C",
++	.owner		= THIS_MODULE,
++	.id		= I2C_HW_B_HDPVR,
++	.algo		= &hdpvr_algo,
++	.algo_data	= NULL,
++	.class		= I2C_CLASS_TV_ANALOG,
++};
++
++static struct i2c_board_info hdpvr_i2c_board_info = {
++	I2C_BOARD_INFO("ir_tx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR),
++	I2C_BOARD_INFO("ir_rx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR),
++};
++
 +static int hdpvr_activate_ir(struct hdpvr_device *dev)
 +{
 +	char buffer[8];
@@ -140,19 +160,54 @@ index c4b5d15..e0ae619 100644
 +
  int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
  {
- 	struct i2c_adapter *i2c_adap;
-@@ -123,6 +145,8 @@ int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
- 	if (i2c_adap == NULL)
- 		goto error;
+-	struct i2c_adapter *i2c_adap;
+ 	int retval = -ENOMEM;
  
+-	i2c_adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL);
+-	if (i2c_adap == NULL)
 +	hdpvr_activate_ir(dev);
 +
- 	strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
- 		sizeof(i2c_adap->name));
- 	i2c_adap->algo  = &hdpvr_algo;
-@@ -143,3 +167,5 @@ int hdpvr_register_i2c_adapter(struct hdpvr_device *dev)
++	memcpy(&dev->i2c_adapter, &hdpvr_i2c_adap_template,
++	       sizeof(struct i2c_adapter));
++	dev->i2c_adapter.dev.parent = &dev->udev->dev;
++
++	i2c_set_adapdata(&dev->i2c_adapter, dev);
++
++	retval = i2c_add_adapter(&dev->i2c_adapter);
++
++	if (retval)
+ 		goto error;
+ 
+-	strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
+-		sizeof(i2c_adap->name));
+-	i2c_adap->algo  = &hdpvr_algo;
+-	i2c_adap->class = I2C_CLASS_TV_ANALOG;
+-	i2c_adap->owner = THIS_MODULE;
+-	i2c_adap->dev.parent = &dev->udev->dev;
+-
+-	i2c_set_adapdata(i2c_adap, dev);
+-
+-	retval = i2c_add_adapter(i2c_adap);
+-
+-	if (!retval)
+-		dev->i2c_adapter = i2c_adap;
+-	else
+-		kfree(i2c_adap);
++	i2c_new_device(&dev->i2c_adapter, &hdpvr_i2c_board_info);
+ 
  error:
  	return retval;
  }
 +
 +#endif /* CONFIG_I2C */
+diff -Naurp a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile
+--- a/drivers/media/video/hdpvr/Makefile	2010-07-06 17:36:38.000000000 -0400
++++ b/drivers/media/video/hdpvr/Makefile	2010-07-06 17:35:17.000000000 -0400
+@@ -1,6 +1,4 @@
+-hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-video.o
+-
+-hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o
++hdpvr-objs	:= hdpvr-control.o hdpvr-core.o hdpvr-i2c.o hdpvr-video.o
+ 
+ obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o
+ 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-12/kernel.spec,v
retrieving revision 1.2102
retrieving revision 1.2103
diff -u -p -r1.2102 -r1.2103
--- kernel.spec	7 Jul 2010 03:41:22 -0000	1.2102
+++ kernel.spec	7 Jul 2010 04:21:17 -0000	1.2103
@@ -2179,6 +2179,10 @@ fi
 %kernel_variant_files -k vmlinux %{with_kdump} kdump
 
 %changelog
+* Wed Jul 07 2010 Jarod Wilson <jarod at redhat.com> 2.6.32.16-141
+- Really make hdpvr i2c IR part register this time, so something can
+  actually be bound to it (like, say, lirc_zilog)
+
 * Tue Jul 06 2010 Chuck Ebbert <cebbert at redhat.com> 2.6.32.16-140
 - ethtool-fix-buffer-overflow.patch: ethtool buffer overflow (CVE-2010-2478)
 - sched-fix-over-scheduling-bug.patch: fix scheduler bug with CGROUPS



More information about the scm-commits mailing list