054b3e593f34c53b4d9992a54017f7949dcc6590
[~emulex/for-vlad/old/compat.git] / include / linux / compat-2.6.25.h
1 #ifndef LINUX_26_25_COMPAT_H
2 #define LINUX_26_25_COMPAT_H
3
4 #include <linux/autoconf.h>
5 #include <linux/version.h>
6
7 /* Compat work for 2.6.24 */
8 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25))
9
10 #include <linux/types.h>
11 #include <linux/io.h>
12 #include <linux/hw_random.h>
13 #include <linux/leds.h>
14 #include <linux/kernel.h>
15 #include <linux/netdevice.h>
16 #include <linux/pm.h>
17 #include <asm-generic/bug.h>
18 #include <linux/pm_qos_params.h>
19
20 int compat_pm_qos_power_init(void);
21
22 /*
23  * 2.6.25 adds PM_EVENT_HIBERNATE as well here but
24  * we don't have this on <= 2.6.23)
25  */
26 #define PM_EVENT_SLEEP  (PM_EVENT_SUSPEND)
27
28 /* Although we don't care about wimax this is needed for rfkill input stuff */
29 #define KEY_WIMAX               246
30
31 /* Although pm_qos stuff is not implemented on <= 2.6.24 lets keep the define */
32 #define PM_QOS_DEFAULT_VALUE -1
33
34 #define __WARN(foo) dump_stack()
35
36 #define dev_emerg(dev, format, arg...)          \
37         dev_printk(KERN_EMERG , dev , format , ## arg)
38 #define dev_alert(dev, format, arg...)          \
39         dev_printk(KERN_ALERT , dev , format , ## arg)
40 #define dev_crit(dev, format, arg...)           \
41         dev_printk(KERN_CRIT , dev , format , ## arg)
42
43 extern int              __dev_addr_sync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
44 extern void             __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct dev_addr_list **from, int *from_count);
45
46 #define seq_file_net &init_net;
47
48 enum nf_inet_hooks {
49         NF_INET_PRE_ROUTING = 0,
50         NF_INET_LOCAL_IN = 1,
51         NF_INET_FORWARD = 2,
52         NF_INET_LOCAL_OUT = 3,
53         NF_INET_POST_ROUTING = 4,
54         NF_INET_NUMHOOKS = 5
55 };
56
57 /* The patch:
58  * commit 8b5f6883683c91ad7e1af32b7ceeb604d68e2865
59  * Author: Marcin Slusarz <marcin.slusarz@gmail.com>
60  * Date:   Fri Feb 8 04:20:12 2008 -0800
61  *
62  *     byteorder: move le32_add_cpu & friends from OCFS2 to core
63  *
64  * moves le*_add_cpu and be*_add_cpu functions from OCFS2 to core
65  * header (1st) and converted some existing code to it. We port
66  * it here as later kernels will most likely use it.
67  */
68 static inline void le16_add_cpu(__le16 *var, u16 val)
69 {
70         *var = cpu_to_le16(le16_to_cpu(*var) + val);
71 }
72
73 static inline void le32_add_cpu(__le32 *var, u32 val)
74 {
75         *var = cpu_to_le32(le32_to_cpu(*var) + val);
76 }
77
78 static inline void le64_add_cpu(__le64 *var, u64 val)
79 {
80         *var = cpu_to_le64(le64_to_cpu(*var) + val);
81 }
82
83 static inline void be16_add_cpu(__be16 *var, u16 val)
84 {
85         u16 v = be16_to_cpu(*var);
86         *var = cpu_to_be16(v + val);
87 }
88
89 static inline void be32_add_cpu(__be32 *var, u32 val)
90 {
91         u32 v = be32_to_cpu(*var);
92         *var = cpu_to_be32(v + val);
93 }
94
95 static inline void be64_add_cpu(__be64 *var, u64 val)
96 {
97         u64 v = be64_to_cpu(*var);
98         *var = cpu_to_be64(v + val);
99 }
100
101 /* 2.6.25 changes hwrng_unregister()'s behaviour by supporting
102  * suspend of its parent device (the misc device, which is itself the
103  * hardware random number generator). It does this by passing a parameter to
104  * unregister_miscdev() which is not supported in older kernels. The suspend
105  * parameter allows us to enable access to the device's hardware
106  * number generator during suspend. As far as wireless is concerned this means
107  * if a driver goes to suspend it you won't have the HNR available in
108  * older kernels. */
109 static inline void __hwrng_unregister(struct hwrng *rng, bool suspended)
110 {
111         hwrng_unregister(rng);
112 }
113
114 static inline void led_classdev_unregister_suspended(struct led_classdev *lcd)
115 {
116         led_classdev_unregister(lcd);
117 }
118
119 /**
120  * The following things are out of ./include/linux/kernel.h
121  * The new iwlwifi driver is using them.
122  */
123 extern int strict_strtoul(const char *, unsigned int, unsigned long *);
124 extern int strict_strtol(const char *, unsigned int, long *);
125
126 #else
127 /*
128  * Kernels >= 2.6.25 have pm-qos and its initialized as part of
129  * the bootup process
130  */
131 static inline int compat_pm_qos_power_init(void)
132 {
133         return;
134 }
135 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) */
136
137 #endif /* LINUX_26_25_COMPAT_H */