173 lines
4.6 KiB
C
173 lines
4.6 KiB
C
#ifndef LINUX_26_36_COMPAT_H
|
|
#define LINUX_26_36_COMPAT_H
|
|
|
|
#include <linux/version.h>
|
|
|
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36))
|
|
|
|
#include <linux/usb.h>
|
|
#include <pcmcia/cistpl.h>
|
|
#include <pcmcia/ds.h>
|
|
#include <linux/pm_qos_params.h>
|
|
#include <linux/smp_lock.h>
|
|
|
|
#define kparam_block_sysfs_write(a)
|
|
#define kparam_unblock_sysfs_write(a)
|
|
|
|
/* mask va_format as RHEL6 backports this */
|
|
#define va_format compat_va_format
|
|
|
|
struct va_format {
|
|
const char *fmt;
|
|
va_list *va;
|
|
};
|
|
|
|
#define device_rename(dev, new_name) device_rename(dev, (char *)new_name)
|
|
|
|
#ifdef CONFIG_COMPAT_USB_URB_THREAD_FIX
|
|
#define usb_scuttle_anchored_urbs(anchor) compat_usb_scuttle_anchored_urbs(anchor)
|
|
#define usb_get_from_anchor(anchor) compat_usb_get_from_anchor(anchor)
|
|
#define usb_unlink_anchored_urbs(anchor) compat_usb_unlink_anchored_urbs(anchor)
|
|
|
|
extern void compat_usb_unlink_anchored_urbs(struct usb_anchor *anchor);
|
|
extern struct urb *compat_usb_get_from_anchor(struct usb_anchor *anchor);
|
|
extern void compat_usb_scuttle_anchored_urbs(struct usb_anchor *anchor);
|
|
#endif
|
|
|
|
/**
|
|
* pcmcia_read_config_byte() - read a byte from a card configuration register
|
|
*
|
|
* pcmcia_read_config_byte() reads a byte from a configuration register in
|
|
* attribute memory.
|
|
*/
|
|
static inline int pcmcia_read_config_byte(struct pcmcia_device *p_dev, off_t where, u8 *val)
|
|
{
|
|
int ret;
|
|
conf_reg_t reg = { 0, CS_READ, where, 0 };
|
|
ret = pcmcia_access_configuration_register(p_dev, ®);
|
|
*val = reg.Value;
|
|
return ret;
|
|
}
|
|
|
|
/**
|
|
* pcmcia_write_config_byte() - write a byte to a card configuration register
|
|
*
|
|
* pcmcia_write_config_byte() writes a byte to a configuration register in
|
|
* attribute memory.
|
|
*/
|
|
static inline int pcmcia_write_config_byte(struct pcmcia_device *p_dev, off_t where, u8 val)
|
|
{
|
|
conf_reg_t reg = { 0, CS_WRITE, where, val };
|
|
return pcmcia_access_configuration_register(p_dev, ®);
|
|
}
|
|
|
|
struct pm_qos_request_list {
|
|
u32 qos;
|
|
void *request;
|
|
};
|
|
|
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
|
|
|
|
#define pm_qos_add_request(_req, _class, _value) do { \
|
|
(_req)->request = #_req; \
|
|
(_req)->qos = _class; \
|
|
pm_qos_add_requirement((_class), (_req)->request, (_value)); \
|
|
} while(0)
|
|
|
|
#define pm_qos_update_request(_req, _value) \
|
|
pm_qos_update_requirement((_req)->qos, (_req)->request, (_value))
|
|
|
|
#define pm_qos_remove_request(_req) \
|
|
pm_qos_remove_requirement((_req)->qos, (_req)->request)
|
|
|
|
#else
|
|
|
|
#define pm_qos_add_request(_req, _class, _value) do { \
|
|
(_req)->request = pm_qos_add_request((_class), (_value)); \
|
|
} while (0)
|
|
|
|
#define pm_qos_update_request(_req, _value) \
|
|
pm_qos_update_request((_req)->request, (_value))
|
|
|
|
#define pm_qos_remove_request(_req) \
|
|
pm_qos_remove_request((_req)->request)
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Dummy printk for disabled debugging statements to use whilst maintaining
|
|
* gcc's format and side-effect checking.
|
|
*/
|
|
static inline __attribute__ ((format (printf, 1, 2)))
|
|
int no_printk(const char *s, ...) { return 0; }
|
|
|
|
#ifndef alloc_workqueue
|
|
#define alloc_workqueue(name, flags, max_active) __create_workqueue(name, flags, max_active, 0)
|
|
#endif
|
|
|
|
#define EXTPROC 0200000
|
|
#define TIOCPKT_IOCTL 64
|
|
|
|
static inline void tty_lock(void) __acquires(kernel_lock)
|
|
{
|
|
#ifdef CONFIG_LOCK_KERNEL
|
|
/* kernel_locked is 1 for !CONFIG_LOCK_KERNEL */
|
|
WARN_ON(kernel_locked());
|
|
#endif
|
|
lock_kernel();
|
|
}
|
|
static inline void tty_unlock(void) __releases(kernel_lock)
|
|
{
|
|
unlock_kernel();
|
|
}
|
|
#define tty_locked() (kernel_locked())
|
|
|
|
#define usleep_range(_min, _max) msleep((_max) / 1000)
|
|
|
|
#define __rcu
|
|
|
|
static inline void pm_wakeup_event(struct device *dev, unsigned int msec) {}
|
|
|
|
static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline void skb_tx_timestamp(struct sk_buff *skb)
|
|
{
|
|
}
|
|
|
|
extern struct workqueue_struct *system_nrt_wq;
|
|
|
|
void compat_system_workqueue_create(void);
|
|
void compat_system_workqueue_destroy(void);
|
|
|
|
#define br_port_exists(dev) (dev->br_port)
|
|
|
|
#else
|
|
|
|
static inline void compat_system_workqueue_create(void)
|
|
{
|
|
}
|
|
|
|
static inline void compat_system_workqueue_destroy(void)
|
|
{
|
|
}
|
|
|
|
/*
|
|
* This is not part of The 2.6.37 kernel yet but we
|
|
* we use it to optimize the backport code we
|
|
* need to implement. Instead of using ifdefs
|
|
* to check what version of the check we use
|
|
* we just replace all checks on current code
|
|
* with this. I'll submit this upstream too, that
|
|
* way all we'd have to do is to implement this
|
|
* for older kernels, then we would not have to
|
|
* edit the upstrema code for backport efforts.
|
|
*/
|
|
#define br_port_exists(dev) (dev->priv_flags & IFF_BRIDGE_PORT)
|
|
|
|
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)) */
|
|
|
|
#endif /* LINUX_26_36_COMPAT_H */
|