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