/* * $Id: compat.h,v 1.25 2005/10/14 16:31:51 mchehab Exp $ */ #ifndef _COMPAT_H #define _COMPAT_H #include #include #include #include #include #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18) # define minor(x) MINOR(x) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) #include # define need_resched() (current->need_resched) #define work_struct tq_struct #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,19) # define BUG_ON(condition) do { if ((condition)!=0) BUG(); } while(0) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23) # define irqreturn_t void # define IRQ_RETVAL(foobar) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,71) # define strlcpy(dest,src,len) strncpy(dest,src,(len)-1) #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) # define iminor(inode) minor(inode->i_rdev) #endif #if defined(I2C_ADAP_CLASS_TV_ANALOG) && !defined(I2C_CLASS_TV_ANALOG) # define I2C_CLASS_TV_ANALOG I2C_ADAP_CLASS_TV_ANALOG # define I2C_CLASS_TV_DIGITAL I2C_ADAP_CLASS_TV_DIGITAL #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) # define __user # define __kernel # define __iomem #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) # define pm_message_t u32 # define pci_choose_state(pci_dev, state) (state) # define PCI_D0 (0) # define assert_spin_locked(foobar) #endif #if !defined(I2C_ALGO_SAA7134) #define I2C_ALGO_SAA7134 I2C_HW_B_BT848 #endif #if !defined(I2C_HW_B_CX2388x) # define I2C_HW_B_CX2388x I2C_HW_B_BT848 #endif #if !defined(I2C_HW_SAA7134) # define I2C_HW_SAA7134 I2C_ALGO_SAA7134 #endif #if !defined(I2C_HW_SAA7146) # define I2C_HW_SAA7146 I2C_ALGO_SAA7146 #endif #if !defined(I2C_HW_B_EM2820) #define I2C_HW_B_EM2820 0x99 #endif #ifndef I2C_M_IGNORE_NAK # define I2C_M_IGNORE_NAK 0x1000 #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) #define __le32 __u32 #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,7)) static inline unsigned long msecs_to_jiffies(const unsigned int m) { #if HZ <= 1000 && !(1000 % HZ) return (m + (1000 / HZ) - 1) / (1000 / HZ); #elif HZ > 1000 && !(HZ % 1000) return m * (HZ / 1000); #else return (m * HZ + 999) / 1000; #endif } static inline unsigned int jiffies_to_msecs(const unsigned long j) { #if HZ <= 1000 && !(1000 % HZ) return (1000 / HZ) * j; #elif HZ > 1000 && !(HZ % 1000) return (j + (HZ / 1000) - 1)/(HZ / 1000); #else return (j * 1000) / HZ; #endif } static inline void msleep(unsigned int msecs) { unsigned long timeout = msecs_to_jiffies(msecs); while (timeout) { set_current_state(TASK_UNINTERRUPTIBLE); timeout = schedule_timeout(timeout); } } #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) static inline unsigned long msleep_interruptible(unsigned int msecs) { unsigned long timeout = msecs_to_jiffies(msecs); while (timeout) { set_current_state(TASK_INTERRUPTIBLE); timeout = schedule_timeout(timeout); } return jiffies_to_msecs(timeout); } #endif #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) #define pm_message_t u32 #endif #ifndef DVB_CVS #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) #undef HAVE_LGDT330X #undef HAVE_TDA1004X #endif #endif #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_SEARCH 217 # 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_ZOOM 0x174 # define KEY_MODE 0x175 # define KEY_TV 0x179 # define KEY_CD 0x17f # define KEY_TUNER 0x182 # define KEY_TEXT 0x184 # define KEY_DVD 0x185 # define KEY_AUDIO 0x188 # define KEY_VIDEO 0x189 # define KEY_RED 0x18e # define KEY_GREEN 0x18f # define KEY_YELLOW 0x190 # define KEY_BLUE 0x191 # define KEY_CHANNELUP 0x192 # define KEY_CHANNELDOWN 0x193 # define KEY_RESTART 0x198 # define KEY_SHUFFLE 0x19a # define KEY_NEXT 0x197 # define KEY_RADIO 0x181 # define KEY_PREVIOUS 0x19c # define KEY_MHP 0x16f # define KEY_EPG 0x16d # define KEY_FASTFORWARD 208 # define KEY_LIST 0x18b # define KEY_LAST 0x195 # define KEY_CLEAR 0x163 # define KEY_AUX 0x186 # define KEY_SCREEN 0x177 # define KEY_MEDIA 226 # define KEY_SLOW 0x199 # define KEY_OK 0x160 # define KEY_DIGITS 0x19d #endif #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) );}) #endif #endif /* * Local variables: * c-basic-offset: 8 * End: */