# Compile ov511 failure with kernel 2.6.21 (Solved)

## trumee

Hi,

I am trying to upgrade the driver ov511 for my webcam. The module in the kernel is quite old (1.64) whereas the latest version is http://alpha.dyndns.org/ov511/download.html#2.xx=2.32. The compile gave an error:

```

   Building OVCam drivers for 2.6 kernel.

make -C /lib/modules/2.6.21-gentoo-r2/build SUBDIRS=ov511-2.32 modules

make[1]: Entering directory `/usr/src/linux-2.6.21-gentoo-r2'

  CC [M]  ov511-2.32/ov511_core.o

ov511-2.32/ov511_core.c:29:26: error: linux/config.h: No such file or directory

ov511-2.32/ov511_core.c: In function 'ov51x_init_isoc':

ov511-2.32/ov511_core.c:3566: warning: assignment from incompatible pointer type

ov511-2.32/ov511_core.c: In function 'ov51x_open':

ov511-2.32/ov511_core.c:3818: warning: implicit declaration of function 'video_devdata'

ov511-2.32/ov511_core.c:3818: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:3819: warning: implicit declaration of function 'video_get_drvdata'

ov511-2.32/ov511_core.c:3819: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_release':

ov511-2.32/ov511_core.c:3885: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_do_ioctl':

ov511-2.32/ov511_core.c:3924: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:3944: warning: implicit declaration of function 'v4l_print_ioctl'

ov511-2.32/ov511_core.c:4303: error: dereferencing pointer to incomplete type

ov511-2.32/ov511_core.c: In function 'ov51x_ioctl':

ov511-2.32/ov511_core.c:4743: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:4749: warning: implicit declaration of function 'video_usercopy'

ov511-2.32/ov511_core.c: In function 'ov51x_read':

ov511-2.32/ov511_core.c:4765: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_mmap':

ov511-2.32/ov511_core.c:4920: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: At top level:

ov511-2.32/ov511_core.c:4974: error: 'v4l_compat_ioctl32' undeclared here (not in a function)

ov511-2.32/ov511_core.c:4979: error: variable 'vdev_template' has initializer but incomplete type

ov511-2.32/ov511_core.c:4980: error: unknown field 'owner' specified in initializer

ov511-2.32/ov511_core.c:4980: warning: excess elements in struct initializer

ov511-2.32/ov511_core.c:4980: warning: (near initialization for 'vdev_template')

ov511-2.32/ov511_core.c:4981: error: unknown field 'name' specified in initializer

----------------snip--------------------

```

Googling brought me to the patch listed at http://groups.google.co.uk/group/linux.debian.bugs.dist/browse_thread/thread/b72bf31285cc261e/fdb187e50e361dd0?lnk=st&q=ov511+linux%2Fconfig.h&rnum=1&hl=en#fdb187e50e361dd0.  The patch was successfull

```

~/tmp/ov511-2.32 $ patch < ../ov511.diff

patching file ov511_core.c

patching file ov511_decomp.c

patching file ov511.h

Hunk #1 succeeded at 10 with fuzz 2 (offset -4 lines).

patching file ov518_decomp.c

patching file ov6x20.c

patching file ov6x30.c

patching file ov76be.c

patching file ov7x10.c

patching file ov7x20.c

patching file ovcamchip_core.c

patching file ovfx2.c

patching file ovfx2.h

Hunk #1 succeeded at 10 with fuzz 2 (offset -4 lines).

patching file saa7111-new.c

```

However compile still fails with a different error now:

```

   Building OVCam drivers for 2.6 kernel.

make -C /lib/modules/2.6.21-gentoo-r2/build SUBDIRS=ov511-2.32 modules

make[1]: Entering directory `/usr/src/linux-2.6.21-gentoo-r2'

  CC [M]  ov511-2.32/ov511_core.o

ov511-2.32/ov511_core.c: In function 'ov51x_init_isoc':

ov511-2.32/ov511_core.c:3571: warning: assignment from incompatible pointer type

ov511-2.32/ov511_core.c: In function 'ov51x_open':

ov511-2.32/ov511_core.c:3823: warning: implicit declaration of function 'video_devdata'

ov511-2.32/ov511_core.c:3823: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:3824: warning: implicit declaration of function 'video_get_drvdata'

ov511-2.32/ov511_core.c:3824: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_release':

ov511-2.32/ov511_core.c:3890: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_do_ioctl':

ov511-2.32/ov511_core.c:3929: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:3949: warning: implicit declaration of function 'v4l_print_ioctl'

ov511-2.32/ov511_core.c:4308: error: dereferencing pointer to incomplete type

ov511-2.32/ov511_core.c: In function 'ov51x_ioctl':

ov511-2.32/ov511_core.c:4748: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c:4754: warning: implicit declaration of function 'video_usercopy'

ov511-2.32/ov511_core.c: In function 'ov51x_read':

ov511-2.32/ov511_core.c:4770: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: In function 'ov51x_mmap':

ov511-2.32/ov511_core.c:4925: warning: initialization makes pointer from integer without a cast

ov511-2.32/ov511_core.c: At top level:

ov511-2.32/ov511_core.c:4979: error: 'v4l_compat_ioctl32' undeclared here (not in a function)

ov511-2.32/ov511_core.c:4984: error: variable 'vdev_template' has initializer but incomplete type

ov511-2.32/ov511_core.c:4985: error: unknown field 'owner' specified in initializer

ov511-2.32/ov511_core.c:4985: warning: excess elements in struct initializer

ov511-2.32/ov511_core.c:4985: warning: (near initialization for 'vdev_template')

ov511-2.32/ov511_core.c:4986: error: unknown field 'name' specified in initializer

ov511-2.32/ov511_core.c:4986: warning: excess elements in struct initializer

ov511-2.32/ov511_core.c:4986: warning: (near initialization for 'vdev_template')

ov511-2.32/ov511_core.c:4987: error: unknown field 'type' specified in initializer

----------------snip--------------------

```

anybody how to make this module compile?Last edited by trumee on Sat Jun 02, 2007 7:29 am; edited 1 time in total

----------

## trumee

Allright, i was able to compile the module using the following method:

1. Download the source from debian mirror

http://ftp.debian.org/debian/pool/main/o/ov511/ov511_2.32.orig.tar.gz

2. Patch it with the debian patch

http://ftp.debian.org/debian/pool/main/o/ov511/ov511_2.32-3.diff.gz

using patch < ov511_2.32-3.diff

3. Patch the directory again with the patch i mentioned above 

http://groups.google.co.uk/group/linux.debian.bugs.dist/attach/fdb187e50e361dd0/ov511_2.6.19.diff?part=2&hl=en

4. And do a compile.

You need to modprobe ovcamchip, simply doing modprobe ov511 doesnt recognise my webcam.

5. make install.

and it works!!!

----------

## Goeland86

awesome, thanks! I've been looking for the past week how to get that issue resolved!

The kernel driver should be updated... There's no reason why the kernel should use 1.65 when 2.32 works so much better!

But then, I'm not a kernel dev...

Cheers!  :Very Happy: 

----------

## fbcyborg

Hello, 

My kernel is 2.6.23-gentoo-r3, and the ov511 driver version is 1.64.

The only trouble for me is that I can't see anything. Only a black screen doing the video test with skype.

I didn't have problems compiling that driver as module and no compilation errors. 

What is the right procedure to update my driver? 

Thanks a lot.

----------

## fbcyborg

Hello, 

I get the following errors during emerge:

```
Building OVCam drivers for 2.6 kernel.

make -C /lib/modules/2.6.24-gentoo-r2/build SUBDIRS=/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32 modules

make[1]: Entering directory `/usr/src/linux-2.6.24-gentoo-r2'

  CC [M]  /var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.o

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:1716: error: unknown field 'algo_control' specified in initializer

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:1716: warning: initialization from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:1726: error: unknown field 'algo_control' specified in initializer

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:1726: warning: initialization from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c: In function 'ov51x_init_isoc':

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:3581: warning: assignment from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c: At top level:

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5011: error: unknown field 'hardware' specified in initializer

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5011: error: 'VID_HARDWARE_OV511' undeclared here (not in a function)

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c: In function 'cd_to_ov':

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5571: warning: initialization from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c: In function 'ov_create_sysfs':

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5666: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5668: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5670: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5672: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5674: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5676: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5678: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5680: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5682: warning: passing argument 2 of 'video_device_create_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5688: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5690: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5692: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5694: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5696: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5698: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5700: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.c:5702: warning: passing argument 2 of 'video_device_remove_file' from incompatible pointer type

make[2]: *** [/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32/ov511_core.o] Error 1

make[1]: *** [_module_/var/tmp/portage/media-video/ov511-2.32/work/ov511-2.32] Error 2

make[1]: Leaving directory `/usr/src/linux-2.6.24-gentoo-r2'

make: *** [default] Error 2

```

My kernel is 2.6.24-gentoo-r2. What does it happen?

----------

