[PATCH v2] Re: videodev: Unknown symbol i2c_unregister_device (in kernels older than 2.6.26)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mauro Carvalho Chehab wrote:
> Em Mon, 25 May 2009 09:10:17 +1000
> Matt Doran <matt.doran@xxxxxxxxxxxx> escreveu:
> 
>> Hi there,
>>
>> I tried using the latest v4l code on an Mythtv box running 2.6.20, but 
>> the v4l videodev module fails to load with the following warnings:
>>
>>     videodev: Unknown symbol i2c_unregister_device
>>     v4l2_common: Unknown symbol v4l2_device_register_subdev
>>
>>
>> It seems the "i2c_unregister_device" function was added in 2.6.26.   
>> References to this function in v4l2-common.c are enclosed in an ifdef like:
>>
>>     #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)
>>
>>
>> However in "v4l2_device_unregister()" in v4l2-device.c, there is a 
>> reference to "i2c_unregister_device" without any ifdefs.   I am running 
>> a pretty old kernel, but I'd guess anyone running 2.6.25 or earlier will 
>> have this problem.   It seems this code was added by Mauro 3 weeks ago 
>> in this rev:
>>
>>     http://linuxtv.org/hg/v4l-dvb/rev/87afa7a4ccdf
> 
> I've just applied a patch at the tree that should fix this issue. It adds
> several tests and the code, but, hopefully, it should be possible even to use
> the IR's with kernels starting from 2.6.16.


Hi Mauro,
If you are referring to my recent patch, it needs a modification to be like
other places in drivers/media/video.  Patch below applies on top of the
previous one.

---
From: Randy Dunlap <randy.dunlap@xxxxxxxxxx>

Fix v4l2-device usage of i2c_unregister_device() and handle the case of
CONFIG_I2C=m & CONFIG_MEDIA_VIDEO=y.

Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
---
 drivers/media/video/v4l2-device.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-next-20090527.orig/drivers/media/video/v4l2-device.c
+++ linux-next-20090527/drivers/media/video/v4l2-device.c
@@ -85,7 +85,7 @@ void v4l2_device_unregister(struct v4l2_
 	/* Unregister subdevs */
 	list_for_each_entry_safe(sd, next, &v4l2_dev->subdevs, list) {
 		v4l2_device_unregister_subdev(sd);
-#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
+#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE))
 		if (sd->flags & V4L2_SUBDEV_FL_IS_I2C) {
 			struct i2c_client *client = v4l2_get_subdevdata(sd);
 


-- 
~Randy
LPC 2009, Sept. 23-25, Portland, Oregon
http://linuxplumbersconf.org/2009/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux