diff options
-rw-r--r-- | linux/drivers/media/dvb/dvb-core/dvb_net.c | 4 | ||||
-rw-r--r-- | v4l/Makefile | 17 | ||||
-rwxr-xr-x | v4l/scripts/gentree.pl | 5 | ||||
-rw-r--r-- | v4l/scripts/make_config_compat.pl | 60 |
4 files changed, 68 insertions, 18 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_net.c b/linux/drivers/media/dvb/dvb-core/dvb_net.c index 408c3b638..e180cdf53 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_net.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_net.c @@ -1171,7 +1171,7 @@ static void wq_set_multicast_list (struct work_struct *work) dvb_net_feed_stop(dev); priv->rx_mode = RX_MODE_UNI; -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) +#ifdef OLD_XMIT_LOCK /* Kernels equal or lower than 2.6.17 */ spin_lock_bh(&dev->xmit_lock); #else netif_tx_lock_bh(dev); @@ -1200,7 +1200,7 @@ static void wq_set_multicast_list (struct work_struct *work) } } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) +#ifdef OLD_XMIT_LOCK /* Kernels equal or lower than 2.6.17 */ spin_unlock_bh(&dev->xmit_lock); #else netif_tx_unlock_bh(dev); diff --git a/v4l/Makefile b/v4l/Makefile index ad499751d..954d5227e 100644 --- a/v4l/Makefile +++ b/v4l/Makefile @@ -238,21 +238,8 @@ links:: oss: ln -sf . oss -config-compat.h:: .myconfig - @perl \ - -e 'print "#ifndef __CONFIG_COMPAT_H__\n";' \ - -e 'print "#define __CONFIG_COMPAT_H__\n\n";' \ - -e 'print "#include <linux/autoconf.h>\n\n";' \ - -e 'while(<>) {' \ - -e ' next unless /^(\S+)\s*:= (\S+)$$/;' \ - -e ' print "#undef $$1\n";' \ - -e ' print "#undef $$1_MODULE\n";' \ - -e ' if($$2 eq "n") { next; }' \ - -e ' elsif($$2 eq "m") { print "#define $$1_MODULE 1\n"; }' \ - -e ' elsif($$2 eq "y") { print "#define $$1 1\n"; }' \ - -e ' else { print "#define $$1 $$2\n"; }' \ - -e '} print "\n#endif\n";' \ - < .myconfig > config-compat.h +config-compat.h:: $(obj)/.version .myconfig + perl scripts/make_config_compat.pl $(KDIR) $(obj)/.myconfig $(obj)/config-compat.h kernel-links makelinks:: cd ..; v4l/scripts/makelinks.sh $(KDIR) diff --git a/v4l/scripts/gentree.pl b/v4l/scripts/gentree.pl index f9f56bd7c..08969dab3 100755 --- a/v4l/scripts/gentree.pl +++ b/v4l/scripts/gentree.pl @@ -64,7 +64,10 @@ my %defs = ( 'CONFIG_XC3028' => 0, 'CONFIG_TUNER_TEA5761' => 0, 'I2C_CLASS_TV_ANALOG' => 1, - 'I2C_CLASS_TV_DIGITAL' => 1); + 'I2C_CLASS_TV_DIGITAL' => 1, + 'OLD_XMIT_LOCK' => 0, + 'CONFIG_VIVI_SCATTER' => 0, +); ################################################################# # helpers diff --git a/v4l/scripts/make_config_compat.pl b/v4l/scripts/make_config_compat.pl new file mode 100644 index 000000000..be577d247 --- /dev/null +++ b/v4l/scripts/make_config_compat.pl @@ -0,0 +1,60 @@ +#!/usr/bin/perl +use strict; + +my $kdir=shift or die "should specify a kernel dir"; +my $infile=shift or die "should specify an input config file"; +my $outfile=shift or die "should specify an output config file"; + +my $out; + +sub check_spin_lock() +{ + my $file = "$kdir/include/linux/netdevice.h"; + my $old_syntax = 1; + + open INNET, "<$file" or die "File not found: $file"; + while (<INNET>) { + if (m/netif_tx_lock_bh/) { + $old_syntax = 0; + last; + } + } + + if ($old_syntax) { + $out.= "\n#define OLD_XMIT_LOCK 1\n"; + } + close INNET; +} + +sub check_other_dependencies() +{ + check_spin_lock(); +} + +# Do the basic rules +open IN, "<$infile" or die "File not found: $infile"; + +$out.= "#ifndef __CONFIG_COMPAT_H__\n"; +$out.= "#define __CONFIG_COMPAT_H__\n\n"; +$out.= "#include <linux/autoconf.h>\n\n"; +while(<IN>) { + next unless /^(\S+)\s*:= (\S+)$/; + $out.= "#undef $1\n"; + $out.= "#undef $1_MODULE\n"; + if($2 eq "n") { + next; + } elsif($2 eq "m") { + $out.= "#define $1_MODULE 1\n"; + } elsif($2 eq "y") { + $out.= "#define $1 1\n"; + } else { + $out.= "#define $1 $2\n"; + } +} +close IN; + +check_other_dependencies(); + +open OUT, ">$outfile" or die 'Unable to write $outfile'; +print OUT "$out\n#endif\n"; +close OUT |