summaryrefslogtreecommitdiff
path: root/v4l
diff options
context:
space:
mode:
Diffstat (limited to 'v4l')
-rw-r--r--v4l/Makefile6
-rw-r--r--v4l/Makefile.kernel6
-rw-r--r--v4l/compat.h67
-rw-r--r--v4l/scripts/changelog.tmpl5
-rwxr-xr-xv4l/scripts/check_config_defines.pl62
-rwxr-xr-xv4l/scripts/hghead.pl2
-rwxr-xr-xv4l/scripts/make_kconfig.pl95
-rwxr-xr-xv4l/scripts/make_myconfig.pl2
-rwxr-xr-xv4l/scripts/makelinks.sh20
-rw-r--r--v4l/scripts/map-changelog1
-rwxr-xr-xv4l/scripts/rmmod.pl62
-rw-r--r--v4l/versions.txt125
12 files changed, 265 insertions, 188 deletions
diff --git a/v4l/Makefile b/v4l/Makefile
index 663369674..3e9336a95 100644
--- a/v4l/Makefile
+++ b/v4l/Makefile
@@ -33,7 +33,7 @@ endif
default:: config-compat.h Makefile.media links .version
echo srcdir $(SRCDIR)
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $(MYCFLAGS) modules
-
+ ./scripts/rmmod.pl check
#################################################
# Object specific rules
@@ -356,7 +356,7 @@ help::
RPWD := $(shell cd .. && pwd)
thisdir := $(notdir $(RPWD))
-name := $(thisdir)
+name := v4l-dvb
date := $(shell date +%Y%m%d)
tardest ?= .
@@ -368,5 +368,5 @@ snapshot snap tarball:: update distclean
echo $(name)
echo $(date) > .snapshot
(cd ..; tar czf $(snapdir)/$(snap)-$(date).tar.gz .)
- cp ChangeLog /$(snapdir)/$(snap)-ChangeLog-$(date)
+ hg history --style scripts/map-changelog > /$(snapdir)/$(snap)-ChangeLog-$(date)
$(MAKE) -C $(snapdir)
diff --git a/v4l/Makefile.kernel b/v4l/Makefile.kernel
index b01c17f55..bbcfdc6d3 100644
--- a/v4l/Makefile.kernel
+++ b/v4l/Makefile.kernel
@@ -1,8 +1,8 @@
-# This Makefile is used to build sources that are part of the kernel tree.
+# This Makefile is used to build sources that are part of the kernel tree.
# What we want are the various programs used by the kconfig system. We can't
# just directly call the top-level kernel Makefile, as it doesn't provide
# targets to only build the kconfig system. It provides targets to build
-# the kconfig system *and then configure the kernel*.
+# the kconfig system *and then configure the kernel*.
# What we do is include the top-level kernel Makefile here, to get all the
# variables and rules it defines, and then add our own targets to just build
@@ -32,7 +32,7 @@ v4l-qconf: scripts_basic
# Used by the qconfig target
v4l-gconf: scripts_basic
$(MAKE) $(build)=scripts/kconfig gconf-target=1 scripts/kconfig/gconf
-
+
# Used by the menuconfig target, also needs lxdialog
v4l-mconf: scripts_basic
$(MAKE) $(build)=scripts/kconfig scripts/kconfig/mconf
diff --git a/v4l/compat.h b/v4l/compat.h
index ca0a4b886..9918f2e46 100644
--- a/v4l/compat.h
+++ b/v4l/compat.h
@@ -88,24 +88,24 @@
static inline unsigned long msecs_to_jiffies(const unsigned int m)
{
#if HZ <= 1000 && !(1000 % HZ)
- return (m + (1000 / HZ) - 1) / (1000 / HZ);
+ return (m + (1000 / HZ) - 1) / (1000 / HZ);
#else
#if HZ > 1000 && !(HZ % 1000)
- return m * (HZ / 1000);
+ return m * (HZ / 1000);
#else
- return (m * HZ + 999) / 1000;
+ return (m * HZ + 999) / 1000;
#endif
#endif
}
static inline unsigned int jiffies_to_msecs(const unsigned long j)
{
#if HZ <= 1000 && !(1000 % HZ)
- return (1000 / HZ) * j;
+ return (1000 / HZ) * j;
#else
#if HZ > 1000 && !(HZ % 1000)
- return (j + (HZ / 1000) - 1)/(HZ / 1000);
+ return (j + (HZ / 1000) - 1)/(HZ / 1000);
#else
- return (j * 1000) / HZ;
+ return (j * 1000) / HZ;
#endif
#endif
}
@@ -135,15 +135,15 @@ static inline unsigned long msleep_interruptible(unsigned int msecs)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
/* some keys from 2.6.x which are not (yet?) in 2.4.x */
# define KEY_PLAY 207
-# define KEY_PRINT 210
+# define KEY_PRINT 210
# define KEY_EMAIL 215
# define KEY_SEARCH 217
-# define KEY_SELECT 0x161
+# define KEY_SELECT 0x161
# define KEY_GOTO 0x162
# define KEY_INFO 0x166
# define KEY_CHANNEL 0x16b
# define KEY_LANGUAGE 0x170
-# define KEY_SUBTITLE 0x172
+# define KEY_SUBTITLE 0x172
# define KEY_ZOOM 0x174
# define KEY_MODE 0x175
# define KEY_TV 0x179
@@ -159,7 +159,7 @@ static inline unsigned long msleep_interruptible(unsigned int msecs)
# define KEY_BLUE 0x191
# define KEY_CHANNELUP 0x192
# define KEY_CHANNELDOWN 0x193
-# define KEY_RESTART 0x198
+# define KEY_RESTART 0x198
# define KEY_SHUFFLE 0x19a
# define KEY_NEXT 0x197
# define KEY_RADIO 0x181
@@ -188,8 +188,8 @@ static inline unsigned long msleep_interruptible(unsigned int msecs)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
#define container_of(ptr, type, member) ({ \
- const typeof( ((type *)0)->member ) *__mptr = (ptr); \
- (type *)( (char *)__mptr - offsetof(type,member) );})
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
@@ -207,12 +207,12 @@ static inline unsigned long vmalloc_to_pfn(void * vmalloc_addr)
do { \
DEFINE_WAIT(__wait); \
for (;;) { \
- prepare_to_wait(&wq, &__wait, TASK_UNINTERRUPTIBLE); \
- if (condition) \
- break; \
- __ret = schedule_timeout(__ret); \
- if (!__ret) \
- break; \
+ prepare_to_wait(&wq, &__wait, TASK_UNINTERRUPTIBLE); \
+ if (condition) \
+ break; \
+ __ret = schedule_timeout(__ret); \
+ if (!__ret) \
+ break; \
} \
finish_wait(&wq, &__wait); \
} while (0); \
@@ -231,9 +231,9 @@ static inline unsigned long vmalloc_to_pfn(void * vmalloc_addr)
void * __ret = NULL; \
__ret = kmalloc(n * size, flags); \
if (__ret) \
- memset(__ret, 0, n * size); \
+ memset(__ret, 0, n * size); \
__ret; \
-})
+})
#endif
#endif
@@ -241,14 +241,19 @@ static inline unsigned long vmalloc_to_pfn(void * vmalloc_addr)
#ifndef kzalloc
#define kzalloc(size, flags) \
({ \
- void *__ret = kmalloc(size, flags); \
- if (__ret) \
- memset(__ret, 0, size); \
- __ret; \
+ void *__ret = kmalloc(size, flags); \
+ if (__ret) \
+ memset(__ret, 0, size); \
+ __ret; \
})
#endif
#endif
+/* The class_device system didn't appear until 2.5.69 */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
+#define class_device_create_file(a, b) (0)
+#endif
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
# define class_device_create(a, b, c, d, e, f, g, h) class_simple_device_add(a, c, d, e, f, g, h)
# define class_device_destroy(a, b) class_simple_device_remove(b)
@@ -274,6 +279,20 @@ static inline unsigned long vmalloc_to_pfn(void * vmalloc_addr)
#define mutex_trylock(a) down_trylock(a)
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
+static inline signed long __sched
+schedule_timeout_interruptible(signed long timeout)
+{
+ __set_current_state(TASK_INTERRUPTIBLE);
+ return schedule_timeout(timeout);
+}
+#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
+#define IRQF_SHARED SA_SHIRQ
+#define IRQF_DISABLED SA_INTERRUPT
+#endif
+
#endif
/*
* Local variables:
diff --git a/v4l/scripts/changelog.tmpl b/v4l/scripts/changelog.tmpl
new file mode 100644
index 000000000..c1e5cb176
--- /dev/null
+++ b/v4l/scripts/changelog.tmpl
@@ -0,0 +1,5 @@
+User #author#
+Date #date|date#
+#desc#
+
+---
diff --git a/v4l/scripts/check_config_defines.pl b/v4l/scripts/check_config_defines.pl
new file mode 100755
index 000000000..91643d23c
--- /dev/null
+++ b/v4l/scripts/check_config_defines.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+# Copyright (C) 2006 Trent Piepho <xyzzy@speakeasy.org>
+#
+# Look for lines in C files like "#ifdef CONFIG_SOME_KCONF_VAR" and make
+# sure CONFIG_SOME_KCONF_VAR is something that exists.
+
+if($#ARGV < 0) {
+ print "Usage: $0 kernel_dir [files to check ...]\n\n";
+ print "If no files are listed, checks all files from hg manifest\n";
+ exit;
+}
+$kdir = shift;
+
+if($#ARGV < 0) {
+ @ARGV = `hg manifest | cut "-d " -f3 | grep '.[ch]\$'`;
+ $? == 0 and die "Error getting manifest: $!";
+ chomp @ARGV;
+}
+
+sub readkconfig($$)
+{
+ my $fn = "$_[0]/$_[1]";
+ # Don't read the same kconfig file more than once
+ return if exists $kconfigs{$fn};
+ $kconfigs{$fn} = 1;
+# print "Reading $fn\n";
+ my $fh;
+ open $fh, '<', "$fn" or die "Can't read Kconfig file $fn: $!";
+ while(<$fh>) {
+ if (/^\s*source\s+"([^"]+)"\s*$/ || /^\s*source\s+(\S+)\s*$/) {
+ readkconfig($_[0], $1);
+ } elsif(/^config\s+(\w+)$/) {
+ $vars{"CONFIG_$1"}=1;
+ }
+ }
+ close $fh;
+}
+
+readkconfig('linux', 'drivers/media/Kconfig');
+foreach(glob "$kdir/arch/*/Kconfig") {
+ s|^\Q$kdir/\E||;
+ next if(m|arch/um/Kconfig|);
+ readkconfig($kdir, $_);
+}
+
+while(<>) {
+ if(/^\s*#ifdef\s+(CONFIG_\w+)(_MODULE)?\W*$/) {
+# print "Found $1\n";
+ print "Unknown config $1 in $ARGV:$.\n" unless(exists $vars{$1});
+ next;
+ }
+ if(/^\s*#if/) {
+ $_ .= <> while(/\\$/); # Handle line continuations
+ while(/defined\(\s*(CONFIG_\w+?)(_MODULE)?\s*\)/) {
+ print "Unknown config $1 in $ARGV:$.\n" unless(exists $vars{$1});
+ $_ = $';
+ }
+ }
+
+} continue {
+ close ARGV if eof;
+}
diff --git a/v4l/scripts/hghead.pl b/v4l/scripts/hghead.pl
index 3f8b4b0ba..fdc9720c6 100755
--- a/v4l/scripts/hghead.pl
+++ b/v4l/scripts/hghead.pl
@@ -110,7 +110,7 @@ while ($line = <IN>) {
next;
}
-
+
if ($line =~ m/^Acked-by:.*/) {
$signed="$signed$line";
next;
diff --git a/v4l/scripts/make_kconfig.pl b/v4l/scripts/make_kconfig.pl
index d5b34b36c..b203a2ac0 100755
--- a/v4l/scripts/make_kconfig.pl
+++ b/v4l/scripts/make_kconfig.pl
@@ -9,11 +9,13 @@ my %hexopt = ();
my %tristate = ();
my %kernopts = ();
my %depmods = ();
-my $version, $level, $sublevel;
+my $version, $level, $sublevel, $kernver;
my $kernel=shift;
my $force_kconfig=shift;
+#my $debug=1;
+
#!/usr/bin/perl
use FileHandle;
@@ -26,14 +28,10 @@ sub process_config ($)
open $in,"$kernel/include/$filename" or die "File not found: $kernel/include/$filename";
while (<$in>) {
- if (m|\#include\s+\<(.*)\>|) {
- process_config ($1);
- next;
- }
if (m/\#define\s+CONFIG_([^ ]*)_ON_SMP\s+(.*)\n/) {
my $key=$1;
my $value=$2;
-# printf "defined $key as $value\n";
+ printf "defined $key as $value\n" if $debug;
if ( $value == 1 ) {
$value='y';
}
@@ -43,7 +41,7 @@ sub process_config ($)
if (m/\#define\s+CONFIG_([^ ]*)_MODULE\s+(.*)\n/) {
my $key=$1;
my $value=$2;
-# printf "defined $key as $value\n";
+ printf "defined $key as $value\n" if $debug;
if ( $value == 1 ) {
$value='m';
}
@@ -53,7 +51,7 @@ sub process_config ($)
if (m/\#define\s+CONFIG_([^ ]*)\s+(.*)\n/) {
my $key=$1;
my $value=$2;
-# printf "defined $key as $value\n";
+ printf "defined $key as $value\n" if $debug;
if ( $value == 1 ) {
$value='y';
}
@@ -61,7 +59,7 @@ sub process_config ($)
next;
}
if (m/\#undef\s+CONFIG_([^ ]*)\n/) {
-# printf "undefined $1\n";
+ printf "undefined $1\n" if $debug;
$kernopts{$1}='n';
next;
}
@@ -76,7 +74,7 @@ sub add_bool($)
exists $config{$arg} or die "Adding unknown boolean '$arg'";
$tristate{$arg}="bool";
-# printf "Boolean:%s\n",$arg;
+ printf "Boolean:%s\n",$arg if $debug;
$kernopts{$arg}='y';
}
@@ -183,7 +181,7 @@ sub deps_ok($)
$arg=$arg." ";
-# printf "$key: deps are '$arg'\n";
+ printf "$key: deps are '$arg'\n" if $debug;
while ($arg ne "") {
if ($arg =~ m/^([A-Z0-9_]+) /) {
@@ -210,13 +208,9 @@ sub open_kconfig($$) {
my $disabled=0;
my $key;
-#print "opening $file\n";
+print "opening $file\n" if $debug;
open $in,"$file" or die "File not found: $file";
while (<$in>) {
-# if (m;^\s*source[\s\"]+drivers/media/(video|dvb)/Kconfig;) {
-# next;
-# }
-
# start of a new stanza, reset
if (m/^\w/) {
$disabled = 0;
@@ -229,12 +223,12 @@ sub open_kconfig($$) {
open_kconfig($dir,"$dir/$1");
next;
}
- if (m|^\s+depends on\s+(.*)\n|) {
- check_deps ($key,$1);
- }
- if (m|^\s+select\s+(.*)\n|) {
+ if (m|^\s+depends on\s+(.+?)\s*$|) {
check_deps ($key,$1);
}
+# if (m|^\s+select\s+(.+?)\s*(if .*?)?\s*$|) {
+# check_deps ($key,$1);
+# }
if (m|^\s+bool(ean)?\s|) {
add_bool($key);
}
@@ -282,24 +276,14 @@ EOF
$key=$1;
add_config ($1);
- my $min=$minver { $key };
- my $minversion, $minlevel, $minsublevel;
- if ($min =~ m/(\d+)\.(\d+)\.(\d+)/) {
- $minversion=$1;
- $minlevel=$2;
- $minsublevel=$3;
- } else {
- die "Minimum version for $key not found at versions.txt";
- }
- if ( ($version < $minversion) ||
- ($level < $minlevel) ||
- ($sublevel < $minsublevel) ) {
+ if (exists $minver{$key} &&
+ cmp_ver($minver{$key}, $kernver) > 0) {
$disabled=1;
disable_config ($key);
- print "$key requires version $minversion.$minlevel.$minsublevel\n";
+ print "$key requires version $minver{$key}\n";
print OUT "# $key disabled for insufficient kernel version\n";
} else {
-# print "OK: $key requires version $minversion.$minlevel.$minsublevel\n";
+ printf "OK: $key requires version %s\n", exists $minver{$key}?$minver{$key}:"any" if $debug;
$disabled=0;
}
}
@@ -318,20 +302,32 @@ sub parse_versions ()
open $in,"versions.txt" or die "File not found: versions.txt";
while (<$in>) {
- if (m/\[([\d.]*)\]/) {
- $ver=$1;
- next;
- }
- s/\n//;
- if (m/^\s*([\w\d_]+)/) {
- $minver { $1 } = $ver;
-# printf ("%s=%s\n",$1,$ver);
+ if (/\[(\d+\.\d+\.\d+)\]/) {
+ $ver = $1;
+ } elsif (/^\s*(\w+)/) {
+ $minver{$1} = $ver;
+ print "minimal version for $1 is $ver\n" if $debug;
}
}
close $in;
}
-process_config("linux/config.h");
+# Like ver1 <=> ver2, but understands X.Y.Z version strings
+sub cmp_ver($$)
+{
+ shift =~ /(\d+)\.(\d+)\.(\d+)/;
+ my ($v1_ver,$v1_level,$v1_sublevel) = ($1,$2,$3);
+ shift =~ /(\d+)\.(\d+)\.(\d+)/;
+ my ($v2_ver,$v2_level,$v2_sublevel) = ($1,$2,$3);
+
+ my $cmp = $v1_ver <=> $v2_ver;
+ return $cmp unless($cmp == 0);
+ $cmp = $v1_level <=> $v2_level;
+ return $cmp unless($cmp == 0);
+ return $v1_sublevel <=> $v2_sublevel;
+}
+
+process_config("linux/autoconf.h");
parse_versions;
@@ -341,11 +337,12 @@ while (<IN>) {
$version=$1;
$level=$2;
$sublevel=$3;
+ $kernver="$version.$level.$sublevel";
}
}
close IN;
-printf "Preparing to compile for kernel version %d.%d.%d\n",$version,$level,$sublevel;
+print "Preparing to compile for kernel version $kernver\n";
open OUT,">Kconfig" or die "Cannot write Kconfig file";
@@ -382,10 +379,6 @@ while ( my ($key, $value) = each(%config) ) {
open OUT,">Kconfig.kern" or die "Cannot write Kconfig.kern file";
-print OUT "config MODULES\n\tboolean\n\tdefault y\n\n";
-add_config('MODULES');
-add_bool('MODULES');
-
while ( my ($key, $value) = each(%depend) ) {
if ($kernopts{$key}) {
print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault ".
@@ -399,13 +392,14 @@ close OUT;
# These options should default to off
disable_config('DVB_AV7110_FIRMWARE');
disable_config('DVB_CINERGYT2_TUNING');
+disable_config('DVB_FE_CUSTOMISE');
# Hack for check sound/oss/aci.h header
my $mirodep="$kernel/sound/oss/aci.h";
-if (!open IN, $mirodep) {
+if (! -e $mirodep) {
my $key="RADIO_MIROPCM20";
-print <<"EOF2";
+ print <<"EOF2";
$key: $mirodep is missing.
***WARNING:*** You do not have the full kernel sources installed.
@@ -428,7 +422,6 @@ Please see your distro's web site for instructions to build a new kernel.
EOF2
$kernopts{$key}='n';
}
-close IN;
# Recursively check for broken dependencies
my $i;
diff --git a/v4l/scripts/make_myconfig.pl b/v4l/scripts/make_myconfig.pl
index 7323f419c..0bde6f6c0 100755
--- a/v4l/scripts/make_myconfig.pl
+++ b/v4l/scripts/make_myconfig.pl
@@ -15,7 +15,7 @@ open IN,".config";
while (<IN>) {
if (m/\s*(\w+)=\s*(\S*)/) {
#printf "%s=%s\n",$1,$2;
- $config { $1 } = $2;
+ $config { $1 } = $2;
}
}
close IN;
diff --git a/v4l/scripts/makelinks.sh b/v4l/scripts/makelinks.sh
index 03fd48849..9ee780aba 100755
--- a/v4l/scripts/makelinks.sh
+++ b/v4l/scripts/makelinks.sh
@@ -5,7 +5,7 @@ if test -z $1 || ! test -d $1 ; then
echo
echo " usage: $0 <path_to_kernel_to_patch>"
echo
- exit
+ exit
fi
echo "patching $1..."
@@ -14,15 +14,15 @@ cd linux
PWD=`pwd`
for x in `find drivers -type d | grep -v CVS` ; do
- mkdir -p -v $1/$x
+ mkdir -p -v $1/$x
done
for x in `find Documentation -type d | grep -v CVS` ; do
- mkdir -p -v $1/$x
+ mkdir -p -v $1/$x
done
for x in `find include -type d | grep -v CVS` ; do
- mkdir -p -v $1/$x
+ mkdir -p -v $1/$x
done
for x in `find Documentation -type f | grep -v CVS | grep -v .cvsignore` ; do
@@ -48,15 +48,3 @@ for x in `find drivers/media -type d | grep -v CVS` ; do
done
cd ..
-patch -p0 <<'DIFF'
-diff -u -p videodev.h
---- linux/include/linux/videodev.h
-+++ linux/include/linux/videodev.h
-@@ -1,6 +1,7 @@
- #ifndef __LINUX_VIDEODEV_H
- #define __LINUX_VIDEODEV_H
-
-+#include "compat.h"
- #include <linux/types.h>
-
- #define HAVE_V4L1 1
diff --git a/v4l/scripts/map-changelog b/v4l/scripts/map-changelog
new file mode 100644
index 000000000..cc5caeb1c
--- /dev/null
+++ b/v4l/scripts/map-changelog
@@ -0,0 +1 @@
+changeset = changelog.tmpl
diff --git a/v4l/scripts/rmmod.pl b/v4l/scripts/rmmod.pl
index 19a0a8c61..d190a9edf 100755
--- a/v4l/scripts/rmmod.pl
+++ b/v4l/scripts/rmmod.pl
@@ -28,8 +28,17 @@ my %debug = ( "tuner" => "tuner_debug=1",
);
+sub findprog($)
+{
+ foreach(split(/:/, $ENV{PATH}),qw(/sbin /usr/sbin /usr/local/sbin)) {
+ return "$_/$_[0]" if(-x "$_/$_[0]");
+ }
+ die "Can't find needed utility '$_[0]'";
+}
+
sub parse_dir {
my $file = $File::Find::name;
+ my $modinfo = findprog('modinfo');
if (!($file =~ /[.]ko$/)) {
return;
@@ -38,7 +47,7 @@ sub parse_dir {
my $module = $file;
$module =~ s|^[./]*(.*)[.]ko|\1|;
- open IN, "modinfo $file|grep depends|cut -b 17-|";
+ open IN, "$modinfo $file|grep depends|cut -b 17-|";
while (<IN>) {
my $deps = $_;
$deps =~ s/\n//;
@@ -123,33 +132,36 @@ sub orderdep ()
sub insmod ($)
{
my $debug=shift;
+ my $modprobe = findprog('modprobe');
+ my $insmod = findprog('insmod');
while ( my ($key, $value) = each(%reqmodules) ) {
- printf ("modprobe $key\n");
- system ("modprobe $key");
+ print ("$modprobe $key\n");
+ system ("$modprobe $key");
}
foreach my $key (@modlist) {
if ($debug) {
my $dbg=$debug{$key};
- printf "insmod ./$key.ko $dbg\n";
- system "insmod ./$key.ko $dbg\n";
+ print "$insmod ./$key.ko $dbg\n";
+ system "$insmod ./$key.ko $dbg\n";
} else {
- printf "insmod ./$key.ko\n";
- system "insmod ./$key.ko\n";
+ print "$insmod ./$key.ko\n";
+ system "$insmod ./$key.ko\n";
}
}
}
sub rmmod ()
{
+ my $rmmod = findprog('rmmod');
while (my $key=pop @modlist) {
my $dep=$key;
$dep=~s/[\-]/_/g;
if (exists ($loaded{$dep})) {
- printf "rmmod $dep\n";
- system "rmmod $dep\n";
+ print "$rmmod $dep\n";
+ system "$rmmod $dep\n";
}
}
}
@@ -173,22 +185,22 @@ if ($mode eq "load") {
prepare_cmd;
parse_loaded;
rmmod;
+ } elsif ($mode eq "reload") {
+ prepare_cmd;
+ parse_loaded;
+ my @modlist2=@modlist;
+ rmmod;
+ @modlist=@modlist2;
+ insmod(0);
+ } elsif ($mode eq "debug") {
+ prepare_cmd;
+ parse_loaded;
+ insmod(1);
+ } elsif ($mode eq "check") {
+ prepare_cmd;
+ parse_loaded;
} else {
- if ($mode eq "reload") {
- prepare_cmd;
- parse_loaded;
- my @modlist2=@modlist;
- rmmod;
- @modlist=@modlist2;
- insmod(0);
- } else {
- if ($mode eq "debug") {
- prepare_cmd;
- parse_loaded;
- insmod(1);
- } else {
- printf "Usage: $0 [load|unload|reload]\n";
- }
- }
+ printf "Usage: $0 [load|unload|reload|debug|check]\n";
}
}
+
diff --git a/v4l/versions.txt b/v4l/versions.txt
index 2c74da43f..b5c0502e0 100644
--- a/v4l/versions.txt
+++ b/v4l/versions.txt
@@ -6,80 +6,40 @@ VIDEO_ZR36120
# This is also marked as broken
VIDEO_PLANB
-[2.6.16]
-VIDEO_USBVIDEO
-USB_VICAM
-USB_IBMCAM
-USB_KONICAWC
-USB_QUICKCAM_MESSENGER
-USB_ET61X251
-USB_PWC
-USB_PWC_DEBUG
-USB_ZC0301
-VIDEO_ZORAN_AVS6EYES
-VIDEO_TLV320AIC23B
+
+# DVB_CORE_ATTACH relies on symbol_put_addr which hangs pre-2.6.17
+[2.6.17]
+DVB_CORE_ATTACH
# Those are architecture-dependent
+[2.6.16]
VIDEO_VINO
VIDEO_M32R_AR_M64278
-[2.6.14]
-VIDEO_ZORAN
+# Changes in struct i2c_driver, i2c_add_driver()
+[2.6.16]
VIDEO_ZORAN_BUZ
VIDEO_ZORAN_DC10
VIDEO_ZORAN_DC30
VIDEO_ZORAN_LML33
VIDEO_ZORAN_LML33R10
+VIDEO_ZORAN_AVS6EYES
VIDEO_SAA5246A
VIDEO_SAA5249
-VIDEO_BWQCAM
-VIDEO_CQCAM
-VIDEO_W9966
-VIDEO_PMS
-VIDEO_STRADIS
-VIDEO_CPIA
-VIDEO_CPIA_PP
-VIDEO_CPIA_USB
-VIDEO_MEYE
VIDEO_MXB
VIDEO_DPC
+VIDEO_OVCAMCHIP
TUNER_3036
-USB_DABUSB
-USB_DSBR
-USB_OV511
-USB_SE401
-USB_STV680
-USB_W9968CF
-VIDEO_M32R_AR
-RADIO_CADET
-RADIO_RTRACK
-RADIO_RTRACK_PORT
-RADIO_RTRACK2
-RADIO_RTRACK2_PORT
-RADIO_AZTECH
-RADIO_AZTECH_PORT
-RADIO_GEMTEK
-RADIO_GEMTEK_PORT
-RADIO_GEMTEK_PCI
-RADIO_MAXIRADIO
-RADIO_MAESTRO
-RADIO_MIROPCM20
-RADIO_MIROPCM20_RDS
-RADIO_SF16FMI
-RADIO_SF16FMR2
-RADIO_TERRATEC
-RADIO_TERRATEC_PORT
-RADIO_TRUST
-RADIO_TRUST_PORT
-RADIO_TYPHOON
-RADIO_TYPHOON_PROC_FS
-RADIO_TYPHOON_PORT
-RADIO_TYPHOON_MUTEFREQ
-RADIO_ZOLTRIX
-RADIO_ZOLTRIX_PORT
-[2.6.13]
-USB_SN9C102
+# Changes to usb_input.h, struct input_dev
+[2.6.15]
+USB_KONICAWC
+USB_QUICKCAM_MESSENGER
+
+# Uses vm_insert_page()
+[2.6.15]
+USB_ZC0301
+USB_ET61X251
[2.6.12]
VIDEO_VIVI
@@ -116,7 +76,6 @@ VIDEO_CX88_DVB_CX22702
VIDEO_CX88_DVB_LGDT330X
VIDEO_CX88_DVB_NXT200X
VIDEO_CX88_DVB_CX24123
-VIDEO_OVCAMCHIP
VIDEO_MSP3400
VIDEO_CS53L32A
VIDEO_WM8775
@@ -159,11 +118,6 @@ DVB_TTUSB_BUDGET
DVB_TTUSB_DEC
DVB_CINERGYT2
DVB_CINERGYT2_TUNING
-DVB_CINERGYT2_STREAM_URB_COUNT
-DVB_CINERGYT2_STREAM_BUF_SIZE
-DVB_CINERGYT2_QUERY_INTERVAL
-DVB_CINERGYT2_ENABLE_RC_INPUT_DEVICE
-DVB_CINERGYT2_RC_QUERY_INTERVAL
DVB_B2C2_FLEXCOP
DVB_B2C2_FLEXCOP_PCI
DVB_B2C2_FLEXCOP_USB
@@ -188,6 +142,7 @@ DVB_MT352
DVB_ZL10353
DVB_DIB3000MB
DVB_DIB3000MC
+DVB_DIB7000M
DVB_VES1820
DVB_TDA10021
DVB_STV0297
@@ -198,6 +153,7 @@ DVB_BCM3510
DVB_LGDT330X
DVB_LNBP21
DVB_ISL6421
+DVB_TUNER_MT2060
VIDEO_SAA7146
VIDEO_SAA7146_VV
VIDEO_VIDEOBUF
@@ -208,3 +164,44 @@ VIDEO_BTCX
VIDEO_IR
VIDEO_TVEEPROM
VIDEO_CX2341X
+VIDEO_USBVIDEO
+USB_VICAM
+USB_IBMCAM
+VIDEO_TLV320AIC23B
+USB_PWC
+USB_PWC_DEBUG
+VIDEO_ZORAN
+VIDEO_BWQCAM
+VIDEO_CQCAM
+VIDEO_W9966
+VIDEO_PMS
+VIDEO_STRADIS
+VIDEO_CPIA
+VIDEO_CPIA_PP
+VIDEO_CPIA_USB
+VIDEO_MEYE
+USB_DABUSB
+USB_DSBR
+USB_OV511
+USB_SE401
+USB_STV680
+USB_W9968CF
+VIDEO_M32R_AR
+RADIO_CADET
+RADIO_RTRACK
+RADIO_RTRACK2
+RADIO_AZTECH
+RADIO_GEMTEK
+RADIO_GEMTEK_PCI
+RADIO_MAXIRADIO
+RADIO_MAESTRO
+RADIO_MIROPCM20
+RADIO_MIROPCM20_RDS
+RADIO_SF16FMI
+RADIO_SF16FMR2
+RADIO_TERRATEC
+RADIO_TRUST
+RADIO_TYPHOON
+RADIO_TYPHOON_PROC_FS
+RADIO_ZOLTRIX
+USB_SN9C102