#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 == 6 && RHEL_MINOR >= 7)
static int sysfs_create_groups(struct kobject *kobj,
const struct attribute_group **groups)
{
}
return error;
}
+#endif
static void sysfs_remove_groups(struct kobject *kobj,
const struct attribute_group **groups)
sysfs_remove_group(kobj, groups[i]);
}
+#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
+#ifdef __NEED_I2C__
+
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 21)
#if !(defined RHEL_MAJOR && RHEL_MAJOR == 5 && RHEL_MINOR >= 6)
/* Simplified version for compatibility */
};
#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)
#endif
#endif
+#endif /* __NEED_I2C__ */
+
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 28)
/*
* Divide positive or negative dividend by positive divisor and round
)
#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
module_exit(__driver##_exit);
#endif
+#ifdef __NEED_I2C__
+
#ifndef module_i2c_driver
/**
* module_i2c_driver() - Helper macro for registering a I2C driver
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
+
#endif /* __COMPAT_H */