]> git.sur5r.net Git - groeck-nct6775/blobdiff - compat.h
Add driver removal notice
[groeck-nct6775] / compat.h
index de13589e82a9daa0b0e1e27c149f412b09b56672..de03ccbc560c4a434d5927c174f1d80e1b302207 100644 (file)
--- a/compat.h
+++ b/compat.h
@@ -3,11 +3,25 @@
 
 #include <linux/version.h>
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
-#error This driver is for kernel versions 2.6.16 and later
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
+#error This driver is for kernel versions 2.6.32 and later
+#endif
+
+#if !defined (CONFIG_HWMON_VID) && !defined(CONFIG_HWMON_VID_MODULE)
+int vid_from_reg(int val, u8 vrm)
+{
+       return 0;
+}
+
+u8 vid_which_vrm(void)
+{
+       return 0;
+}
 #endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0)
+#if !(defined RHEL_MAJOR && RHEL_MAJOR == 7)
+#if !(defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)
 static int sysfs_create_groups(struct kobject *kobj,
                               const struct attribute_group **groups)
 {
@@ -27,6 +41,7 @@ static int sysfs_create_groups(struct kobject *kobj,
        }
        return error;
 }
+#endif
 
 static void sysfs_remove_groups(struct kobject *kobj,
                                const struct attribute_group **groups)
@@ -38,8 +53,22 @@ static void sysfs_remove_groups(struct kobject *kobj,
        for (i = 0; groups[i]; i++)
                sysfs_remove_group(kobj, groups[i]);
 }
+#endif
 
+#if !(defined RHEL_MAJOR && RHEL_MAJOR == 7)
+#if !(defined RHEL_MAJOR && RHEL_MAJOR == 6 && RHEL_MINOR >= 7)
+static inline int __must_check PTR_ERR_OR_ZERO(__force const void *ptr)
+{
+       if (IS_ERR(ptr))
+               return PTR_ERR(ptr);
+       else
+               return 0;
+}
+#endif
 #endif
+#endif
+
+#ifdef __NEED_I2C__
 
 #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 21)
 #if !(defined RHEL_MAJOR && RHEL_MAJOR == 5 && RHEL_MINOR >= 6)
@@ -71,6 +100,23 @@ static struct i2c_client_address_data addr_data = {
 };
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
+static inline s32
+i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
+{
+       s32 value = i2c_smbus_read_word_data(client, command);
+
+       return (value < 0) ? value : swab16(value);
+}
+
+static inline s32
+i2c_smbus_write_word_swapped(const struct i2c_client *client,
+                            u8 command, u16 value)
+{
+       return i2c_smbus_write_word_data(client, command, swab16(value));
+}
+#endif
+
 /* Red Hat EL5 includes backports of these functions, so we can't redefine
  * our own. */
 #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 24)
@@ -90,6 +136,8 @@ static inline int strict_strtol(const char *cp, unsigned int base, long *res)
 #endif
 #endif
 
+#endif /* __NEED_I2C__ */
+
 #if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 28)
 /*
  * Divide positive or negative dividend by positive divisor and round
@@ -108,23 +156,6 @@ static inline int strict_strtol(const char *cp, unsigned int base, long *res)
 )
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
-static inline s32
-i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
-{
-       s32 value = i2c_smbus_read_word_data(client, command);
-
-       return (value < 0) ? value : swab16(value);
-}
-
-static inline s32
-i2c_smbus_write_word_swapped(const struct i2c_client *client,
-                            u8 command, u16 value)
-{
-       return i2c_smbus_write_word_data(client, command, swab16(value));
-}
-#endif
-
 #ifndef module_driver
 /**
  * module_driver() - Helper macro for drivers that don't do anything
@@ -153,6 +184,8 @@ static void __exit __driver##_exit(void) \
 module_exit(__driver##_exit);
 #endif
 
+#ifdef __NEED_I2C__
+
 #ifndef module_i2c_driver
 /**
  * module_i2c_driver() - Helper macro for registering a I2C driver
@@ -167,20 +200,50 @@ module_exit(__driver##_exit);
                        i2c_del_driver)
 #endif
 
+#endif /* __NEED_I2C__ */
+
 #ifndef clamp_val
 #define clamp_val SENSORS_LIMIT
 #endif
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0)
 #ifndef kstrtol
 #define kstrtol strict_strtol
 #endif
 #ifndef kstrtoul
 #define kstrtoul strict_strtoul
 #endif
+#endif
 
 #ifndef request_muxed_region
 #define request_muxed_region(a, b, c) (true)
+#endif
+#ifndef release_region
 #define release_region(a, b)
 #endif
 
+#ifndef pr_warn
+/* pr_warn macro not introduced until 2.6.35 */
+#define pr_warn pr_warning
+#endif
+#ifndef pr_warn_ratelimited
+#define pr_warn_ratelimited pr_warning_ratelimited
+#endif
+
+#ifndef sysfs_attr_init
+#define sysfs_attr_init(attr) do {} while (0)
+#endif
+
+#ifndef __ATTR_RO
+#define __ATTR_RO(_name) {                                             \
+       .attr   = { .name = __stringify(_name), .mode = 0444 },         \
+       .show   = _name##_show,                                         \
+}
+#endif
+
+#ifndef DEVICE_ATTR_RO
+#define DEVICE_ATTR_RO(_name) \
+       struct device_attribute dev_attr_##_name = __ATTR_RO(_name)
+#endif
+
 #endif /* __COMPAT_H */