diff options
Diffstat (limited to 'v4l')
-rw-r--r-- | v4l/compat.h | 8 | ||||
-rwxr-xr-x | v4l/scripts/make_config_compat.pl | 21 |
2 files changed, 28 insertions, 1 deletions
diff --git a/v4l/compat.h b/v4l/compat.h index 6b3504706..11dc57109 100644 --- a/v4l/compat.h +++ b/v4l/compat.h @@ -9,7 +9,7 @@ * non-delayed work and struct delayed_work was created for delayed work. This * will rename the structures. Hopefully no one will decide to name something * delayed_work in the same context as something named work_struct. */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20) +#ifdef NEED_DELAYED_WORK #define delayed_work work_struct #define INIT_DELAYED_WORK(a,b,c) INIT_WORK(a,b,c) #endif @@ -146,6 +146,12 @@ do { \ ((dev->bus && 0 == strcmp(dev->bus->name, "i2c")) ? to_i2c_client(dev) : NULL) #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) +/* Construct an I2C_CLIENT_END-terminated array of i2c addresses */ +#define I2C_ADDRS(addr, addrs...) \ + ((const unsigned short []){ addr, ## addrs, I2C_CLIENT_END }) +#endif + #ifndef USB_DEVICE_AND_INTERFACE_INFO # define USB_DEVICE_AND_INTERFACE_INFO(vend,prod,cl,sc,pr) \ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ diff --git a/v4l/scripts/make_config_compat.pl b/v4l/scripts/make_config_compat.pl index 7c7841459..1f5b8bae6 100755 --- a/v4l/scripts/make_config_compat.pl +++ b/v4l/scripts/make_config_compat.pl @@ -338,6 +338,26 @@ sub check_bitops() $out.= "\n#define NEED_BITOPS 1\n"; } +sub check_delayed_work() +{ + my @files = ( "$kdir//include/linux/workqueue.h" ); + + foreach my $file ( @files ) { + open IN, "<$file" or die "File not found: $file"; + while (<IN>) { + if (m/struct\s+delayed_work/) { + close IN; + # definition found. No need for compat + return; + } + } + close IN; + } + + # definition not found. This means that we need compat + $out.= "\n#define NEED_DELAYED_WORK 1\n"; +} + sub check_other_dependencies() { check_spin_lock(); @@ -357,6 +377,7 @@ sub check_other_dependencies() check_poll_schedule(); check_snd_BUG_ON(); check_bitops(); + check_delayed_work(); } # Do the basic rules |