DDK update - includes
git-svn-id: svn://kolibrios.org@1970 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
6ffb5af90e
commit
99ca1d651b
|
@ -7,7 +7,7 @@ DRV_INCLUDES = $(DRV_TOPDIR)/include
|
||||||
|
|
||||||
INCLUDES = -I$(DRV_INCLUDES) -I$(DRV_INCLUDES)/linux -I$(DRV_INCLUDES)/linux/asm
|
INCLUDES = -I$(DRV_INCLUDES) -I$(DRV_INCLUDES)/linux -I$(DRV_INCLUDES)/linux/asm
|
||||||
DEFINES = -DKOLIBRI -D__KERNEL__ -DCONFIG_X86_32
|
DEFINES = -DKOLIBRI -D__KERNEL__ -DCONFIG_X86_32
|
||||||
CFLAGS = -c -Os $(INCLUDES) $(DEFINES) -march=i486 -fomit-frame-pointer -fno-builtin-printf \
|
CFLAGS = -c -Os $(INCLUDES) $(DEFINES) -march=i586 -fomit-frame-pointer -fno-builtin-printf \
|
||||||
-mno-stack-arg-probe -mpreferred-stack-boundary=2 -mincoming-stack-boundary=2
|
-mno-stack-arg-probe -mpreferred-stack-boundary=2 -mincoming-stack-boundary=2
|
||||||
|
|
||||||
NAME:= libddk
|
NAME:= libddk
|
||||||
|
@ -81,3 +81,7 @@ libcore.a: core.S Makefile
|
||||||
%.o: %.c Makefile ../include/*.h ../include/linux/*.h
|
%.o: %.c Makefile ../include/*.h ../include/linux/*.h
|
||||||
$(CC) $(CFLAGS) -o $@ $<
|
$(CC) $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f */*.o
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,6 @@
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
typedef u64 dma64_addr_t;
|
typedef u64 dma64_addr_t;
|
||||||
#if defined(CONFIG_X86_64) || defined(CONFIG_HIGHMEM64G)
|
|
||||||
/* DMA addresses come in 32-bit and 64-bit flavours. */
|
|
||||||
typedef u64 dma_addr_t;
|
|
||||||
#else
|
|
||||||
typedef u32 dma_addr_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
|
@ -55,7 +55,8 @@
|
||||||
* bitmap_parse(buf, buflen, dst, nbits) Parse bitmap dst from kernel buf
|
* bitmap_parse(buf, buflen, dst, nbits) Parse bitmap dst from kernel buf
|
||||||
* bitmap_parse_user(ubuf, ulen, dst, nbits) Parse bitmap dst from user buf
|
* bitmap_parse_user(ubuf, ulen, dst, nbits) Parse bitmap dst from user buf
|
||||||
* bitmap_scnlistprintf(buf, len, src, nbits) Print bitmap src as list to buf
|
* bitmap_scnlistprintf(buf, len, src, nbits) Print bitmap src as list to buf
|
||||||
* bitmap_parselist(buf, dst, nbits) Parse bitmap dst from list
|
* bitmap_parselist(buf, dst, nbits) Parse bitmap dst from kernel buf
|
||||||
|
* bitmap_parselist_user(buf, dst, nbits) Parse bitmap dst from user buf
|
||||||
* bitmap_find_free_region(bitmap, bits, order) Find and allocate bit region
|
* bitmap_find_free_region(bitmap, bits, order) Find and allocate bit region
|
||||||
* bitmap_release_region(bitmap, pos, order) Free specified bit region
|
* bitmap_release_region(bitmap, pos, order) Free specified bit region
|
||||||
* bitmap_allocate_region(bitmap, pos, order) Allocate specified bit region
|
* bitmap_allocate_region(bitmap, pos, order) Allocate specified bit region
|
||||||
|
@ -129,6 +130,8 @@ extern int bitmap_scnlistprintf(char *buf, unsigned int len,
|
||||||
const unsigned long *src, int nbits);
|
const unsigned long *src, int nbits);
|
||||||
extern int bitmap_parselist(const char *buf, unsigned long *maskp,
|
extern int bitmap_parselist(const char *buf, unsigned long *maskp,
|
||||||
int nmaskbits);
|
int nmaskbits);
|
||||||
|
extern int bitmap_parselist_user(const char __user *ubuf, unsigned int ulen,
|
||||||
|
unsigned long *dst, int nbits);
|
||||||
extern void bitmap_remap(unsigned long *dst, const unsigned long *src,
|
extern void bitmap_remap(unsigned long *dst, const unsigned long *src,
|
||||||
const unsigned long *old, const unsigned long *new, int bits);
|
const unsigned long *old, const unsigned long *new, int bits);
|
||||||
extern int bitmap_bitremap(int oldbit,
|
extern int bitmap_bitremap(int oldbit,
|
||||||
|
|
|
@ -109,6 +109,17 @@ static inline __u8 ror8(__u8 word, unsigned int shift)
|
||||||
return (word >> shift) | (word << (8 - shift));
|
return (word >> shift) | (word << (8 - shift));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sign_extend32 - sign extend a 32-bit value using specified bit as sign-bit
|
||||||
|
* @value: value to sign extend
|
||||||
|
* @index: 0 based bit index (0<=index<32) to sign bit
|
||||||
|
*/
|
||||||
|
static inline __s32 sign_extend32(__u32 value, int index)
|
||||||
|
{
|
||||||
|
__u8 shift = 31 - index;
|
||||||
|
return (__s32)(value << shift) >> shift;
|
||||||
|
}
|
||||||
|
|
||||||
static inline unsigned fls_long(unsigned long l)
|
static inline unsigned fls_long(unsigned long l)
|
||||||
{
|
{
|
||||||
if (sizeof(l) == 4)
|
if (sizeof(l) == 4)
|
||||||
|
@ -137,7 +148,7 @@ static inline unsigned long __ffs64(u64 word)
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_FIND_LAST_BIT
|
#ifndef find_last_bit
|
||||||
/**
|
/**
|
||||||
* find_last_bit - find the last set bit in a memory region
|
* find_last_bit - find the last set bit in a memory region
|
||||||
* @addr: The address to start the search at
|
* @addr: The address to start the search at
|
||||||
|
@ -147,7 +158,7 @@ static inline unsigned long __ffs64(u64 word)
|
||||||
*/
|
*/
|
||||||
extern unsigned long find_last_bit(const unsigned long *addr,
|
extern unsigned long find_last_bit(const unsigned long *addr,
|
||||||
unsigned long size);
|
unsigned long size);
|
||||||
#endif /* CONFIG_GENERIC_FIND_LAST_BIT */
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,8 +34,12 @@
|
||||||
__asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
|
__asm__ ("" : "=r"(__ptr) : "0"(ptr)); \
|
||||||
(typeof(ptr)) (__ptr + (off)); })
|
(typeof(ptr)) (__ptr + (off)); })
|
||||||
|
|
||||||
|
#ifdef __CHECKER__
|
||||||
|
#define __must_be_array(arr) 0
|
||||||
|
#else
|
||||||
/* &a[0] degrades to a pointer: a different type from an array */
|
/* &a[0] degrades to a pointer: a different type from an array */
|
||||||
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Force always-inline if the user requests it so via the .config,
|
* Force always-inline if the user requests it so via the .config,
|
||||||
|
@ -92,3 +96,11 @@
|
||||||
#if !defined(__noclone)
|
#if !defined(__noclone)
|
||||||
#define __noclone /* not needed */
|
#define __noclone /* not needed */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A trick to suppress uninitialized variable warning without generating any
|
||||||
|
* code
|
||||||
|
*/
|
||||||
|
#define uninitialized_var(x) x = x
|
||||||
|
|
||||||
|
#define __always_inline inline __attribute__((always_inline))
|
||||||
|
|
|
@ -21,11 +21,3 @@
|
||||||
# error "GCOV profiling support for gcc versions below 3.4 not included"
|
# error "GCOV profiling support for gcc versions below 3.4 not included"
|
||||||
# endif /* __GNUC_MINOR__ */
|
# endif /* __GNUC_MINOR__ */
|
||||||
#endif /* CONFIG_GCOV_KERNEL */
|
#endif /* CONFIG_GCOV_KERNEL */
|
||||||
|
|
||||||
/*
|
|
||||||
* A trick to suppress uninitialized variable warning without generating any
|
|
||||||
* code
|
|
||||||
*/
|
|
||||||
#define uninitialized_var(x) x = x
|
|
||||||
|
|
||||||
#define __always_inline inline __attribute__((always_inline))
|
|
||||||
|
|
|
@ -12,13 +12,6 @@
|
||||||
#define __used __attribute__((__used__))
|
#define __used __attribute__((__used__))
|
||||||
#define __must_check __attribute__((warn_unused_result))
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
||||||
#define __always_inline inline __attribute__((always_inline))
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A trick to suppress uninitialized variable warning without generating any
|
|
||||||
* code
|
|
||||||
*/
|
|
||||||
#define uninitialized_var(x) x = x
|
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 3
|
#if __GNUC_MINOR__ >= 3
|
||||||
/* Mark functions as cold. gcc will assume any path leading to a call
|
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
@ -53,13 +46,12 @@
|
||||||
#define __noclone __attribute__((__noclone__))
|
#define __noclone __attribute__((__noclone__))
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __GNUC_MINOR__ > 0
|
#if __GNUC_MINOR__ > 0
|
||||||
#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
#define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||||
#endif
|
#endif
|
||||||
#if __GNUC_MINOR__ >= 4
|
#if __GNUC_MINOR__ >= 4 && !defined(__CHECKER__)
|
||||||
#define __compiletime_warning(message) __attribute__((warning(message)))
|
#define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
#define __compiletime_error(message) __attribute__((error(message)))
|
#define __compiletime_error(message) __attribute__((error(message)))
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -151,6 +151,8 @@ struct dentry;
|
||||||
#define FB_ACCEL_PROSAVAGE_DDR 0x8d /* S3 ProSavage DDR */
|
#define FB_ACCEL_PROSAVAGE_DDR 0x8d /* S3 ProSavage DDR */
|
||||||
#define FB_ACCEL_PROSAVAGE_DDRK 0x8e /* S3 ProSavage DDR-K */
|
#define FB_ACCEL_PROSAVAGE_DDRK 0x8e /* S3 ProSavage DDR-K */
|
||||||
|
|
||||||
|
#define FB_ACCEL_PUV3_UNIGFX 0xa0 /* PKUnity-v3 Unigfx */
|
||||||
|
|
||||||
struct fb_fix_screeninfo {
|
struct fb_fix_screeninfo {
|
||||||
char id[16]; /* identification string eg "TT Builtin" */
|
char id[16]; /* identification string eg "TT Builtin" */
|
||||||
unsigned long smem_start; /* Start of frame buffer mem */
|
unsigned long smem_start; /* Start of frame buffer mem */
|
||||||
|
@ -404,6 +406,7 @@ struct fb_cursor {
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
//#include <linux/backlight.h>
|
//#include <linux/backlight.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
//#include <asm/io.h>
|
//#include <asm/io.h>
|
||||||
|
|
||||||
struct vm_area_struct;
|
struct vm_area_struct;
|
||||||
|
@ -531,14 +534,14 @@ struct fb_cursor_user {
|
||||||
#define FB_EVENT_GET_CONSOLE_MAP 0x07
|
#define FB_EVENT_GET_CONSOLE_MAP 0x07
|
||||||
/* CONSOLE-SPECIFIC: set console to framebuffer mapping */
|
/* CONSOLE-SPECIFIC: set console to framebuffer mapping */
|
||||||
#define FB_EVENT_SET_CONSOLE_MAP 0x08
|
#define FB_EVENT_SET_CONSOLE_MAP 0x08
|
||||||
/* A hardware display blank change occured */
|
/* A hardware display blank change occurred */
|
||||||
#define FB_EVENT_BLANK 0x09
|
#define FB_EVENT_BLANK 0x09
|
||||||
/* Private modelist is to be replaced */
|
/* Private modelist is to be replaced */
|
||||||
#define FB_EVENT_NEW_MODELIST 0x0A
|
#define FB_EVENT_NEW_MODELIST 0x0A
|
||||||
/* The resolution of the passed in fb_info about to change and
|
/* The resolution of the passed in fb_info about to change and
|
||||||
all vc's should be changed */
|
all vc's should be changed */
|
||||||
#define FB_EVENT_MODE_CHANGE_ALL 0x0B
|
#define FB_EVENT_MODE_CHANGE_ALL 0x0B
|
||||||
/* A software display blank change occured */
|
/* A software display blank change occurred */
|
||||||
#define FB_EVENT_CONBLANK 0x0C
|
#define FB_EVENT_CONBLANK 0x0C
|
||||||
/* Get drawing requirements */
|
/* Get drawing requirements */
|
||||||
#define FB_EVENT_GET_REQ 0x0D
|
#define FB_EVENT_GET_REQ 0x0D
|
||||||
|
@ -795,7 +798,7 @@ struct fb_tile_ops {
|
||||||
/* A driver may set this flag to indicate that it does want a set_par to be
|
/* A driver may set this flag to indicate that it does want a set_par to be
|
||||||
* called every time when fbcon_switch is executed. The advantage is that with
|
* called every time when fbcon_switch is executed. The advantage is that with
|
||||||
* this flag set you can really be sure that set_par is always called before
|
* this flag set you can really be sure that set_par is always called before
|
||||||
* any of the functions dependant on the correct hardware state or altering
|
* any of the functions dependent on the correct hardware state or altering
|
||||||
* that state, even if you are using some broken X releases. The disadvantage
|
* that state, even if you are using some broken X releases. The disadvantage
|
||||||
* is that it introduces unwanted delays to every console switch if set_par
|
* is that it introduces unwanted delays to every console switch if set_par
|
||||||
* is slow. It is a good idea to try this flag in the drivers initialization
|
* is slow. It is a good idea to try this flag in the drivers initialization
|
||||||
|
@ -822,6 +825,7 @@ struct fb_tile_ops {
|
||||||
#define FBINFO_CAN_FORCE_OUTPUT 0x200000
|
#define FBINFO_CAN_FORCE_OUTPUT 0x200000
|
||||||
|
|
||||||
struct fb_info {
|
struct fb_info {
|
||||||
|
atomic_t count;
|
||||||
int node;
|
int node;
|
||||||
int flags;
|
int flags;
|
||||||
struct mutex lock; /* Lock for open/release/ioctl funcs */
|
struct mutex lock; /* Lock for open/release/ioctl funcs */
|
||||||
|
@ -867,7 +871,7 @@ struct fb_info {
|
||||||
void *fbcon_par; /* fbcon use-only private area */
|
void *fbcon_par; /* fbcon use-only private area */
|
||||||
/* From here on everything is device dependent */
|
/* From here on everything is device dependent */
|
||||||
void *par;
|
void *par;
|
||||||
/* we need the PCI or similiar aperture base/size not
|
/* we need the PCI or similar aperture base/size not
|
||||||
smem_start/size as smem_start may just be an object
|
smem_start/size as smem_start may just be an object
|
||||||
allocated inside the aperture so may not actually overlap */
|
allocated inside the aperture so may not actually overlap */
|
||||||
struct apertures_struct {
|
struct apertures_struct {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#ifndef _LINUX_FIRMWARE_H
|
#ifndef _LINUX_FIRMWARE_H
|
||||||
#define _LINUX_FIRMWARE_H
|
#define _LINUX_FIRMWARE_H
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
|
||||||
|
|
||||||
#define FW_ACTION_NOHOTPLUG 0
|
#define FW_ACTION_NOHOTPLUG 0
|
||||||
#define FW_ACTION_HOTPLUG 1
|
#define FW_ACTION_HOTPLUG 1
|
||||||
|
|
|
@ -52,8 +52,8 @@ extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
|
||||||
/**
|
/**
|
||||||
* struct i2c_driver - represent an I2C device driver
|
* struct i2c_driver - represent an I2C device driver
|
||||||
* @class: What kind of i2c device we instantiate (for detect)
|
* @class: What kind of i2c device we instantiate (for detect)
|
||||||
* @attach_adapter: Callback for bus addition (for legacy drivers)
|
* @attach_adapter: Callback for bus addition (deprecated)
|
||||||
* @detach_adapter: Callback for bus removal (for legacy drivers)
|
* @detach_adapter: Callback for bus removal (deprecated)
|
||||||
* @probe: Callback for device binding
|
* @probe: Callback for device binding
|
||||||
* @remove: Callback for device unbinding
|
* @remove: Callback for device unbinding
|
||||||
* @shutdown: Callback for device shutdown
|
* @shutdown: Callback for device shutdown
|
||||||
|
@ -94,8 +94,8 @@ struct i2c_driver {
|
||||||
* removed. You should avoid using this, it will be removed in a
|
* removed. You should avoid using this, it will be removed in a
|
||||||
* near future.
|
* near future.
|
||||||
*/
|
*/
|
||||||
int (*attach_adapter)(struct i2c_adapter *);
|
int (*attach_adapter)(struct i2c_adapter *) __deprecated;
|
||||||
int (*detach_adapter)(struct i2c_adapter *);
|
int (*detach_adapter)(struct i2c_adapter *) __deprecated;
|
||||||
|
|
||||||
/* Standard driver model interfaces */
|
/* Standard driver model interfaces */
|
||||||
int (*probe)(struct i2c_client *, const struct i2c_device_id *);
|
int (*probe)(struct i2c_client *, const struct i2c_device_id *);
|
||||||
|
@ -252,7 +252,7 @@ struct i2c_adapter {
|
||||||
};
|
};
|
||||||
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
|
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
|
||||||
|
|
||||||
static inline void *i2c_get_adapdata(const struct i2c_adapter *dev)
|
static inline void *i2c_get_adapdata(struct i2c_adapter *dev)
|
||||||
{
|
{
|
||||||
return dev_get_drvdata(&dev->dev);
|
return dev_get_drvdata(&dev->dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
|
||||||
#define USHRT_MAX ((u16)(~0U))
|
#define USHRT_MAX ((u16)(~0U))
|
||||||
#define SHRT_MAX ((s16)(USHRT_MAX>>1))
|
#define SHRT_MAX ((s16)(USHRT_MAX>>1))
|
||||||
|
@ -54,6 +55,20 @@
|
||||||
#define KERN_NOTICE "<5>" /* normal but significant condition */
|
#define KERN_NOTICE "<5>" /* normal but significant condition */
|
||||||
#define KERN_INFO "<6>" /* informational */
|
#define KERN_INFO "<6>" /* informational */
|
||||||
#define KERN_DEBUG "<7>" /* debug-level messages */
|
#define KERN_DEBUG "<7>" /* debug-level messages */
|
||||||
|
extern const char hex_asc[];
|
||||||
|
#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
|
||||||
|
#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
|
||||||
|
|
||||||
|
static inline char *pack_hex_byte(char *buf, u8 byte)
|
||||||
|
{
|
||||||
|
*buf++ = hex_asc_hi(byte);
|
||||||
|
*buf++ = hex_asc_lo(byte);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern int hex_to_bin(char ch);
|
||||||
|
extern void hex2bin(u8 *dst, const char *src, size_t count);
|
||||||
|
|
||||||
|
|
||||||
//int printk(const char *fmt, ...);
|
//int printk(const char *fmt, ...);
|
||||||
|
|
||||||
|
@ -77,6 +92,52 @@
|
||||||
(void) (&_max1 == &_max2); \
|
(void) (&_max1 == &_max2); \
|
||||||
_max1 > _max2 ? _max1 : _max2; })
|
_max1 > _max2 ? _max1 : _max2; })
|
||||||
|
|
||||||
|
#define min3(x, y, z) ({ \
|
||||||
|
typeof(x) _min1 = (x); \
|
||||||
|
typeof(y) _min2 = (y); \
|
||||||
|
typeof(z) _min3 = (z); \
|
||||||
|
(void) (&_min1 == &_min2); \
|
||||||
|
(void) (&_min1 == &_min3); \
|
||||||
|
_min1 < _min2 ? (_min1 < _min3 ? _min1 : _min3) : \
|
||||||
|
(_min2 < _min3 ? _min2 : _min3); })
|
||||||
|
|
||||||
|
#define max3(x, y, z) ({ \
|
||||||
|
typeof(x) _max1 = (x); \
|
||||||
|
typeof(y) _max2 = (y); \
|
||||||
|
typeof(z) _max3 = (z); \
|
||||||
|
(void) (&_max1 == &_max2); \
|
||||||
|
(void) (&_max1 == &_max3); \
|
||||||
|
_max1 > _max2 ? (_max1 > _max3 ? _max1 : _max3) : \
|
||||||
|
(_max2 > _max3 ? _max2 : _max3); })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* min_not_zero - return the minimum that is _not_ zero, unless both are zero
|
||||||
|
* @x: value1
|
||||||
|
* @y: value2
|
||||||
|
*/
|
||||||
|
#define min_not_zero(x, y) ({ \
|
||||||
|
typeof(x) __x = (x); \
|
||||||
|
typeof(y) __y = (y); \
|
||||||
|
__x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clamp - return a value clamped to a given range with strict typechecking
|
||||||
|
* @val: current value
|
||||||
|
* @min: minimum allowable value
|
||||||
|
* @max: maximum allowable value
|
||||||
|
*
|
||||||
|
* This macro does strict typechecking of min/max to make sure they are of the
|
||||||
|
* same type as val. See the unnecessary pointer comparisons.
|
||||||
|
*/
|
||||||
|
#define clamp(val, min, max) ({ \
|
||||||
|
typeof(val) __val = (val); \
|
||||||
|
typeof(min) __min = (min); \
|
||||||
|
typeof(max) __max = (max); \
|
||||||
|
(void) (&__val == &__min); \
|
||||||
|
(void) (&__val == &__max); \
|
||||||
|
__val = __val < __min ? __min: __val; \
|
||||||
|
__val > __max ? __max: __val; })
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ..and if you can't take the strict
|
* ..and if you can't take the strict
|
||||||
* types, you can specify one yourself.
|
* types, you can specify one yourself.
|
||||||
|
@ -112,17 +173,6 @@ static inline void *kcalloc(size_t n, size_t size, uint32_t flags)
|
||||||
return kzalloc(n * size, 0);
|
return kzalloc(n * size, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const char hex_asc[];
|
|
||||||
#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
|
|
||||||
#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
|
|
||||||
|
|
||||||
static inline char *pack_hex_byte(char *buf, u8 byte)
|
|
||||||
{
|
|
||||||
*buf++ = hex_asc_hi(byte);
|
|
||||||
*buf++ = hex_asc_lo(byte);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void free (void *ptr);
|
void free (void *ptr);
|
||||||
|
|
||||||
|
|
|
@ -24,5 +24,7 @@ struct kref {
|
||||||
void kref_init(struct kref *kref);
|
void kref_init(struct kref *kref);
|
||||||
void kref_get(struct kref *kref);
|
void kref_get(struct kref *kref);
|
||||||
int kref_put(struct kref *kref, void (*release) (struct kref *kref));
|
int kref_put(struct kref *kref, void (*release) (struct kref *kref));
|
||||||
|
int kref_sub(struct kref *kref, unsigned int count,
|
||||||
|
void (*release) (struct kref *kref));
|
||||||
|
|
||||||
#endif /* _KREF_H_ */
|
#endif /* _KREF_H_ */
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/poison.h>
|
#include <linux/poison.h>
|
||||||
|
|
||||||
#define prefetch(x) __builtin_prefetch(x)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Simple doubly linked list implementation.
|
* Simple doubly linked list implementation.
|
||||||
*
|
*
|
||||||
|
@ -97,6 +95,11 @@ static inline void __list_del(struct list_head * prev, struct list_head * next)
|
||||||
* in an undefined state.
|
* in an undefined state.
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_DEBUG_LIST
|
#ifndef CONFIG_DEBUG_LIST
|
||||||
|
static inline void __list_del_entry(struct list_head *entry)
|
||||||
|
{
|
||||||
|
__list_del(entry->prev, entry->next);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void list_del(struct list_head *entry)
|
static inline void list_del(struct list_head *entry)
|
||||||
{
|
{
|
||||||
__list_del(entry->prev, entry->next);
|
__list_del(entry->prev, entry->next);
|
||||||
|
@ -104,6 +107,7 @@ static inline void list_del(struct list_head *entry)
|
||||||
entry->prev = LIST_POISON2;
|
entry->prev = LIST_POISON2;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
extern void __list_del_entry(struct list_head *entry);
|
||||||
extern void list_del(struct list_head *entry);
|
extern void list_del(struct list_head *entry);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -136,7 +140,7 @@ static inline void list_replace_init(struct list_head *old,
|
||||||
*/
|
*/
|
||||||
static inline void list_del_init(struct list_head *entry)
|
static inline void list_del_init(struct list_head *entry)
|
||||||
{
|
{
|
||||||
__list_del(entry->prev, entry->next);
|
__list_del_entry(entry);
|
||||||
INIT_LIST_HEAD(entry);
|
INIT_LIST_HEAD(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +151,7 @@ static inline void list_del_init(struct list_head *entry)
|
||||||
*/
|
*/
|
||||||
static inline void list_move(struct list_head *list, struct list_head *head)
|
static inline void list_move(struct list_head *list, struct list_head *head)
|
||||||
{
|
{
|
||||||
__list_del(list->prev, list->next);
|
__list_del_entry(list);
|
||||||
list_add(list, head);
|
list_add(list, head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +163,7 @@ static inline void list_move(struct list_head *list, struct list_head *head)
|
||||||
static inline void list_move_tail(struct list_head *list,
|
static inline void list_move_tail(struct list_head *list,
|
||||||
struct list_head *head)
|
struct list_head *head)
|
||||||
{
|
{
|
||||||
__list_del(list->prev, list->next);
|
__list_del_entry(list);
|
||||||
list_add_tail(list, head);
|
list_add_tail(list, head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,18 +366,15 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
* @head: the head for your list.
|
* @head: the head for your list.
|
||||||
*/
|
*/
|
||||||
#define list_for_each(pos, head) \
|
#define list_for_each(pos, head) \
|
||||||
for (pos = (head)->next; prefetch(pos->next), pos != (head); \
|
for (pos = (head)->next; pos != (head); pos = pos->next)
|
||||||
pos = pos->next)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* __list_for_each - iterate over a list
|
* __list_for_each - iterate over a list
|
||||||
* @pos: the &struct list_head to use as a loop cursor.
|
* @pos: the &struct list_head to use as a loop cursor.
|
||||||
* @head: the head for your list.
|
* @head: the head for your list.
|
||||||
*
|
*
|
||||||
* This variant differs from list_for_each() in that it's the
|
* This variant doesn't differ from list_for_each() any more.
|
||||||
* simplest possible list iteration code, no prefetching is done.
|
* We don't do prefetching in either case.
|
||||||
* Use this for code that knows the list to be very short (empty
|
|
||||||
* or 1 entry) most of the time.
|
|
||||||
*/
|
*/
|
||||||
#define __list_for_each(pos, head) \
|
#define __list_for_each(pos, head) \
|
||||||
for (pos = (head)->next; pos != (head); pos = pos->next)
|
for (pos = (head)->next; pos != (head); pos = pos->next)
|
||||||
|
@ -384,8 +385,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
* @head: the head for your list.
|
* @head: the head for your list.
|
||||||
*/
|
*/
|
||||||
#define list_for_each_prev(pos, head) \
|
#define list_for_each_prev(pos, head) \
|
||||||
for (pos = (head)->prev; prefetch(pos->prev), pos != (head); \
|
for (pos = (head)->prev; pos != (head); pos = pos->prev)
|
||||||
pos = pos->prev)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* list_for_each_safe - iterate over a list safe against removal of list entry
|
* list_for_each_safe - iterate over a list safe against removal of list entry
|
||||||
|
@ -405,7 +405,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
*/
|
*/
|
||||||
#define list_for_each_prev_safe(pos, n, head) \
|
#define list_for_each_prev_safe(pos, n, head) \
|
||||||
for (pos = (head)->prev, n = pos->prev; \
|
for (pos = (head)->prev, n = pos->prev; \
|
||||||
prefetch(pos->prev), pos != (head); \
|
pos != (head); \
|
||||||
pos = n, n = pos->prev)
|
pos = n, n = pos->prev)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -416,7 +416,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
*/
|
*/
|
||||||
#define list_for_each_entry(pos, head, member) \
|
#define list_for_each_entry(pos, head, member) \
|
||||||
for (pos = list_entry((head)->next, typeof(*pos), member); \
|
for (pos = list_entry((head)->next, typeof(*pos), member); \
|
||||||
prefetch(pos->member.next), &pos->member != (head); \
|
&pos->member != (head); \
|
||||||
pos = list_entry(pos->member.next, typeof(*pos), member))
|
pos = list_entry(pos->member.next, typeof(*pos), member))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -427,7 +427,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
*/
|
*/
|
||||||
#define list_for_each_entry_reverse(pos, head, member) \
|
#define list_for_each_entry_reverse(pos, head, member) \
|
||||||
for (pos = list_entry((head)->prev, typeof(*pos), member); \
|
for (pos = list_entry((head)->prev, typeof(*pos), member); \
|
||||||
prefetch(pos->member.prev), &pos->member != (head); \
|
&pos->member != (head); \
|
||||||
pos = list_entry(pos->member.prev, typeof(*pos), member))
|
pos = list_entry(pos->member.prev, typeof(*pos), member))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -452,7 +452,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
*/
|
*/
|
||||||
#define list_for_each_entry_continue(pos, head, member) \
|
#define list_for_each_entry_continue(pos, head, member) \
|
||||||
for (pos = list_entry(pos->member.next, typeof(*pos), member); \
|
for (pos = list_entry(pos->member.next, typeof(*pos), member); \
|
||||||
prefetch(pos->member.next), &pos->member != (head); \
|
&pos->member != (head); \
|
||||||
pos = list_entry(pos->member.next, typeof(*pos), member))
|
pos = list_entry(pos->member.next, typeof(*pos), member))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -466,7 +466,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
*/
|
*/
|
||||||
#define list_for_each_entry_continue_reverse(pos, head, member) \
|
#define list_for_each_entry_continue_reverse(pos, head, member) \
|
||||||
for (pos = list_entry(pos->member.prev, typeof(*pos), member); \
|
for (pos = list_entry(pos->member.prev, typeof(*pos), member); \
|
||||||
prefetch(pos->member.prev), &pos->member != (head); \
|
&pos->member != (head); \
|
||||||
pos = list_entry(pos->member.prev, typeof(*pos), member))
|
pos = list_entry(pos->member.prev, typeof(*pos), member))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -478,7 +478,7 @@ static inline void list_splice_tail_init(struct list_head *list,
|
||||||
* Iterate over list of given type, continuing from current position.
|
* Iterate over list of given type, continuing from current position.
|
||||||
*/
|
*/
|
||||||
#define list_for_each_entry_from(pos, head, member) \
|
#define list_for_each_entry_from(pos, head, member) \
|
||||||
for (; prefetch(pos->member.next), &pos->member != (head); \
|
for (; &pos->member != (head); \
|
||||||
pos = list_entry(pos->member.next, typeof(*pos), member))
|
pos = list_entry(pos->member.next, typeof(*pos), member))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -659,8 +659,7 @@ static inline void hlist_move_list(struct hlist_head *old,
|
||||||
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
|
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
|
||||||
|
|
||||||
#define hlist_for_each(pos, head) \
|
#define hlist_for_each(pos, head) \
|
||||||
for (pos = (head)->first; pos && ({ prefetch(pos->next); 1; }); \
|
for (pos = (head)->first; pos ; pos = pos->next)
|
||||||
pos = pos->next)
|
|
||||||
|
|
||||||
#define hlist_for_each_safe(pos, n, head) \
|
#define hlist_for_each_safe(pos, n, head) \
|
||||||
for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \
|
for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \
|
||||||
|
@ -675,7 +674,7 @@ static inline void hlist_move_list(struct hlist_head *old,
|
||||||
*/
|
*/
|
||||||
#define hlist_for_each_entry(tpos, pos, head, member) \
|
#define hlist_for_each_entry(tpos, pos, head, member) \
|
||||||
for (pos = (head)->first; \
|
for (pos = (head)->first; \
|
||||||
pos && ({ prefetch(pos->next); 1;}) && \
|
pos && \
|
||||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
||||||
pos = pos->next)
|
pos = pos->next)
|
||||||
|
|
||||||
|
@ -687,7 +686,7 @@ static inline void hlist_move_list(struct hlist_head *old,
|
||||||
*/
|
*/
|
||||||
#define hlist_for_each_entry_continue(tpos, pos, member) \
|
#define hlist_for_each_entry_continue(tpos, pos, member) \
|
||||||
for (pos = (pos)->next; \
|
for (pos = (pos)->next; \
|
||||||
pos && ({ prefetch(pos->next); 1;}) && \
|
pos && \
|
||||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
||||||
pos = pos->next)
|
pos = pos->next)
|
||||||
|
|
||||||
|
@ -698,7 +697,7 @@ static inline void hlist_move_list(struct hlist_head *old,
|
||||||
* @member: the name of the hlist_node within the struct.
|
* @member: the name of the hlist_node within the struct.
|
||||||
*/
|
*/
|
||||||
#define hlist_for_each_entry_from(tpos, pos, member) \
|
#define hlist_for_each_entry_from(tpos, pos, member) \
|
||||||
for (; pos && ({ prefetch(pos->next); 1;}) && \
|
for (; pos && \
|
||||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
|
||||||
pos = pos->next)
|
pos = pos->next)
|
||||||
|
|
||||||
|
|
|
@ -430,16 +430,8 @@ do { \
|
||||||
#endif /* CONFIG_LOCKDEP */
|
#endif /* CONFIG_LOCKDEP */
|
||||||
|
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
extern void early_boot_irqs_off(void);
|
|
||||||
extern void early_boot_irqs_on(void);
|
|
||||||
extern void print_irqtrace_events(struct task_struct *curr);
|
extern void print_irqtrace_events(struct task_struct *curr);
|
||||||
#else
|
#else
|
||||||
static inline void early_boot_irqs_off(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
static inline void early_boot_irqs_on(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
static inline void print_irqtrace_events(struct task_struct *curr)
|
static inline void print_irqtrace_events(struct task_struct *curr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -489,12 +481,15 @@ static inline void print_irqtrace_events(struct task_struct *curr)
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
# ifdef CONFIG_PROVE_LOCKING
|
# ifdef CONFIG_PROVE_LOCKING
|
||||||
# define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i)
|
# define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i)
|
||||||
|
# define mutex_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 2, n, i)
|
||||||
# else
|
# else
|
||||||
# define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i)
|
# define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i)
|
||||||
|
# define mutex_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i)
|
||||||
# endif
|
# endif
|
||||||
# define mutex_release(l, n, i) lock_release(l, n, i)
|
# define mutex_release(l, n, i) lock_release(l, n, i)
|
||||||
#else
|
#else
|
||||||
# define mutex_acquire(l, s, t, i) do { } while (0)
|
# define mutex_acquire(l, s, t, i) do { } while (0)
|
||||||
|
# define mutex_acquire_nest(l, s, t, n, i) do { } while (0)
|
||||||
# define mutex_release(l, n, i) do { } while (0)
|
# define mutex_release(l, n, i) do { } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -516,12 +511,15 @@ static inline void print_irqtrace_events(struct task_struct *curr)
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
# ifdef CONFIG_PROVE_LOCKING
|
# ifdef CONFIG_PROVE_LOCKING
|
||||||
# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 2, NULL, _THIS_IP_)
|
# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 2, NULL, _THIS_IP_)
|
||||||
|
# define lock_map_acquire_read(l) lock_acquire(l, 0, 0, 2, 2, NULL, _THIS_IP_)
|
||||||
# else
|
# else
|
||||||
# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 1, NULL, _THIS_IP_)
|
# define lock_map_acquire(l) lock_acquire(l, 0, 0, 0, 1, NULL, _THIS_IP_)
|
||||||
|
# define lock_map_acquire_read(l) lock_acquire(l, 0, 0, 2, 1, NULL, _THIS_IP_)
|
||||||
# endif
|
# endif
|
||||||
# define lock_map_release(l) lock_release(l, 1, _THIS_IP_)
|
# define lock_map_release(l) lock_release(l, 1, _THIS_IP_)
|
||||||
#else
|
#else
|
||||||
# define lock_map_acquire(l) do { } while (0)
|
# define lock_map_acquire(l) do { } while (0)
|
||||||
|
# define lock_map_acquire_read(l) do { } while (0)
|
||||||
# define lock_map_release(l) do { } while (0)
|
# define lock_map_release(l) do { } while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -382,6 +382,23 @@ struct ssb_device_id {
|
||||||
#define SSB_ANY_ID 0xFFFF
|
#define SSB_ANY_ID 0xFFFF
|
||||||
#define SSB_ANY_REV 0xFF
|
#define SSB_ANY_REV 0xFF
|
||||||
|
|
||||||
|
/* Broadcom's specific AMBA core, see drivers/bcma/ */
|
||||||
|
struct bcma_device_id {
|
||||||
|
__u16 manuf;
|
||||||
|
__u16 id;
|
||||||
|
__u8 rev;
|
||||||
|
__u8 class;
|
||||||
|
};
|
||||||
|
#define BCMA_CORE(_manuf, _id, _rev, _class) \
|
||||||
|
{ .manuf = _manuf, .id = _id, .rev = _rev, .class = _class, }
|
||||||
|
#define BCMA_CORETABLE_END \
|
||||||
|
{ 0, },
|
||||||
|
|
||||||
|
#define BCMA_ANY_MANUF 0xFFFF
|
||||||
|
#define BCMA_ANY_ID 0xFFFF
|
||||||
|
#define BCMA_ANY_REV 0xFF
|
||||||
|
#define BCMA_ANY_CLASS 0xFF
|
||||||
|
|
||||||
struct virtio_device_id {
|
struct virtio_device_id {
|
||||||
__u32 device;
|
__u32 device;
|
||||||
__u32 vendor;
|
__u32 vendor;
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
|
|
||||||
#ifndef _LINUX_MODULE_H
|
#ifndef _LINUX_MODULE_H
|
||||||
#define _LINUX_MODULE_H
|
#define _LINUX_MODULE_H
|
||||||
|
/*
|
||||||
|
* Dynamic loading of modules into the kernel.
|
||||||
|
*
|
||||||
|
* Rewritten by Richard Henderson <rth@tamu.edu> Dec 1996
|
||||||
|
* Rewritten again by Rusty Russell, 2002
|
||||||
|
*/
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -19,4 +23,3 @@
|
||||||
struct module {};
|
struct module {};
|
||||||
|
|
||||||
#endif /* _LINUX_MODULE_H */
|
#endif /* _LINUX_MODULE_H */
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,13 @@
|
||||||
* PCI System Design Guide
|
* PCI System Design Guide
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef LINUX_PCI_H
|
||||||
|
#define LINUX_PCI_H
|
||||||
|
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <list.h>
|
#include <list.h>
|
||||||
|
|
||||||
#ifndef __PCI_H__
|
|
||||||
#define __PCI_H__
|
|
||||||
|
|
||||||
#define PCI_ANY_ID (~0)
|
#define PCI_ANY_ID (~0)
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@
|
||||||
#define PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */
|
#define PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */
|
||||||
#define PCI_PM_CAP_RESERVED 0x0010 /* Reserved field */
|
#define PCI_PM_CAP_RESERVED 0x0010 /* Reserved field */
|
||||||
#define PCI_PM_CAP_DSI 0x0020 /* Device specific initialization */
|
#define PCI_PM_CAP_DSI 0x0020 /* Device specific initialization */
|
||||||
#define PCI_PM_CAP_AUX_POWER 0x01C0 /* Auxilliary power support mask */
|
#define PCI_PM_CAP_AUX_POWER 0x01C0 /* Auxiliary power support mask */
|
||||||
#define PCI_PM_CAP_D1 0x0200 /* D1 power state support */
|
#define PCI_PM_CAP_D1 0x0200 /* D1 power state support */
|
||||||
#define PCI_PM_CAP_D2 0x0400 /* D2 power state support */
|
#define PCI_PM_CAP_D2 0x0400 /* D2 power state support */
|
||||||
#define PCI_PM_CAP_PME 0x0800 /* PME pin supported */
|
#define PCI_PM_CAP_PME 0x0800 /* PME pin supported */
|
||||||
|
@ -300,13 +300,23 @@
|
||||||
#define PCI_MSI_DATA_64 12 /* 16 bits of data for 64-bit devices */
|
#define PCI_MSI_DATA_64 12 /* 16 bits of data for 64-bit devices */
|
||||||
#define PCI_MSI_MASK_64 16 /* Mask bits register for 64-bit devices */
|
#define PCI_MSI_MASK_64 16 /* Mask bits register for 64-bit devices */
|
||||||
|
|
||||||
/* MSI-X registers (these are at offset PCI_MSIX_FLAGS) */
|
/* MSI-X registers */
|
||||||
#define PCI_MSIX_FLAGS 2
|
#define PCI_MSIX_FLAGS 2
|
||||||
#define PCI_MSIX_FLAGS_QSIZE 0x7FF
|
#define PCI_MSIX_FLAGS_QSIZE 0x7FF
|
||||||
#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
|
#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
|
||||||
#define PCI_MSIX_FLAGS_MASKALL (1 << 14)
|
#define PCI_MSIX_FLAGS_MASKALL (1 << 14)
|
||||||
|
#define PCI_MSIX_TABLE 4
|
||||||
|
#define PCI_MSIX_PBA 8
|
||||||
#define PCI_MSIX_FLAGS_BIRMASK (7 << 0)
|
#define PCI_MSIX_FLAGS_BIRMASK (7 << 0)
|
||||||
|
|
||||||
|
/* MSI-X entry's format */
|
||||||
|
#define PCI_MSIX_ENTRY_SIZE 16
|
||||||
|
#define PCI_MSIX_ENTRY_LOWER_ADDR 0
|
||||||
|
#define PCI_MSIX_ENTRY_UPPER_ADDR 4
|
||||||
|
#define PCI_MSIX_ENTRY_DATA 8
|
||||||
|
#define PCI_MSIX_ENTRY_VECTOR_CTRL 12
|
||||||
|
#define PCI_MSIX_ENTRY_CTRL_MASKBIT 1
|
||||||
|
|
||||||
/* CompactPCI Hotswap Register */
|
/* CompactPCI Hotswap Register */
|
||||||
|
|
||||||
#define PCI_CHSWP_CSR 2 /* Control and Status Register */
|
#define PCI_CHSWP_CSR 2 /* Control and Status Register */
|
||||||
|
@ -425,7 +435,7 @@
|
||||||
#define PCI_EXP_LNKCAP_L0SEL 0x00007000 /* L0s Exit Latency */
|
#define PCI_EXP_LNKCAP_L0SEL 0x00007000 /* L0s Exit Latency */
|
||||||
#define PCI_EXP_LNKCAP_L1EL 0x00038000 /* L1 Exit Latency */
|
#define PCI_EXP_LNKCAP_L1EL 0x00038000 /* L1 Exit Latency */
|
||||||
#define PCI_EXP_LNKCAP_CLKPM 0x00040000 /* L1 Clock Power Management */
|
#define PCI_EXP_LNKCAP_CLKPM 0x00040000 /* L1 Clock Power Management */
|
||||||
#define PCI_EXP_LNKCAP_SDERC 0x00080000 /* Suprise Down Error Reporting Capable */
|
#define PCI_EXP_LNKCAP_SDERC 0x00080000 /* Surprise Down Error Reporting Capable */
|
||||||
#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */
|
#define PCI_EXP_LNKCAP_DLLLARC 0x00100000 /* Data Link Layer Link Active Reporting Capable */
|
||||||
#define PCI_EXP_LNKCAP_LBNC 0x00200000 /* Link Bandwidth Notification Capability */
|
#define PCI_EXP_LNKCAP_LBNC 0x00200000 /* Link Bandwidth Notification Capability */
|
||||||
#define PCI_EXP_LNKCAP_PN 0xff000000 /* Port Number */
|
#define PCI_EXP_LNKCAP_PN 0xff000000 /* Port Number */
|
||||||
|
@ -494,10 +504,22 @@
|
||||||
#define PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS Software Visibility Enable */
|
#define PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS Software Visibility Enable */
|
||||||
#define PCI_EXP_RTCAP 30 /* Root Capabilities */
|
#define PCI_EXP_RTCAP 30 /* Root Capabilities */
|
||||||
#define PCI_EXP_RTSTA 32 /* Root Status */
|
#define PCI_EXP_RTSTA 32 /* Root Status */
|
||||||
|
#define PCI_EXP_RTSTA_PME 0x10000 /* PME status */
|
||||||
|
#define PCI_EXP_RTSTA_PENDING 0x20000 /* PME pending */
|
||||||
#define PCI_EXP_DEVCAP2 36 /* Device Capabilities 2 */
|
#define PCI_EXP_DEVCAP2 36 /* Device Capabilities 2 */
|
||||||
#define PCI_EXP_DEVCAP2_ARI 0x20 /* Alternative Routing-ID */
|
#define PCI_EXP_DEVCAP2_ARI 0x20 /* Alternative Routing-ID */
|
||||||
|
#define PCI_EXP_DEVCAP2_LTR 0x800 /* Latency tolerance reporting */
|
||||||
|
#define PCI_EXP_OBFF_MASK 0xc0000 /* OBFF support mechanism */
|
||||||
|
#define PCI_EXP_OBFF_MSG 0x40000 /* New message signaling */
|
||||||
|
#define PCI_EXP_OBFF_WAKE 0x80000 /* Re-use WAKE# for OBFF */
|
||||||
#define PCI_EXP_DEVCTL2 40 /* Device Control 2 */
|
#define PCI_EXP_DEVCTL2 40 /* Device Control 2 */
|
||||||
#define PCI_EXP_DEVCTL2_ARI 0x20 /* Alternative Routing-ID */
|
#define PCI_EXP_DEVCTL2_ARI 0x20 /* Alternative Routing-ID */
|
||||||
|
#define PCI_EXP_IDO_REQ_EN 0x100 /* ID-based ordering request enable */
|
||||||
|
#define PCI_EXP_IDO_CMP_EN 0x200 /* ID-based ordering completion enable */
|
||||||
|
#define PCI_EXP_LTR_EN 0x400 /* Latency tolerance reporting */
|
||||||
|
#define PCI_EXP_OBFF_MSGA_EN 0x2000 /* OBFF enable with Message type A */
|
||||||
|
#define PCI_EXP_OBFF_MSGB_EN 0x4000 /* OBFF enable with Message type B */
|
||||||
|
#define PCI_EXP_OBFF_WAKE_EN 0x6000 /* OBFF using WAKE# signaling */
|
||||||
#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */
|
#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */
|
||||||
#define PCI_EXP_SLTCTL2 56 /* Slot Control 2 */
|
#define PCI_EXP_SLTCTL2 56 /* Slot Control 2 */
|
||||||
|
|
||||||
|
@ -515,6 +537,7 @@
|
||||||
#define PCI_EXT_CAP_ID_ARI 14
|
#define PCI_EXT_CAP_ID_ARI 14
|
||||||
#define PCI_EXT_CAP_ID_ATS 15
|
#define PCI_EXT_CAP_ID_ATS 15
|
||||||
#define PCI_EXT_CAP_ID_SRIOV 16
|
#define PCI_EXT_CAP_ID_SRIOV 16
|
||||||
|
#define PCI_EXT_CAP_ID_LTR 24
|
||||||
|
|
||||||
/* Advanced Error Reporting */
|
/* Advanced Error Reporting */
|
||||||
#define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */
|
#define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */
|
||||||
|
@ -671,6 +694,12 @@
|
||||||
#define PCI_SRIOV_VFM_MO 0x2 /* Active.MigrateOut */
|
#define PCI_SRIOV_VFM_MO 0x2 /* Active.MigrateOut */
|
||||||
#define PCI_SRIOV_VFM_AV 0x3 /* Active.Available */
|
#define PCI_SRIOV_VFM_AV 0x3 /* Active.Available */
|
||||||
|
|
||||||
|
#define PCI_LTR_MAX_SNOOP_LAT 0x4
|
||||||
|
#define PCI_LTR_MAX_NOSNOOP_LAT 0x6
|
||||||
|
#define PCI_LTR_VALUE_MASK 0x000003ff
|
||||||
|
#define PCI_LTR_SCALE_MASK 0x00001c00
|
||||||
|
#define PCI_LTR_SCALE_SHIFT 10
|
||||||
|
|
||||||
/* Access Control Service */
|
/* Access Control Service */
|
||||||
#define PCI_ACS_CAP 0x04 /* ACS Capability Register */
|
#define PCI_ACS_CAP 0x04 /* ACS Capability Register */
|
||||||
#define PCI_ACS_SV 0x01 /* Source Validation */
|
#define PCI_ACS_SV 0x01 /* Source Validation */
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
/* stub */
|
/* stub */
|
||||||
|
#ifndef _LINUX_SEQ_FILE_H
|
||||||
|
#define _LINUX_SEQ_FILE_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#endif
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
*
|
*
|
||||||
* on SMP builds:
|
* on SMP builds:
|
||||||
*
|
*
|
||||||
* asm/spinlock_types.h: contains the raw_spinlock_t/raw_rwlock_t and the
|
* asm/spinlock_types.h: contains the arch_spinlock_t/arch_rwlock_t and the
|
||||||
* initializers
|
* initializers
|
||||||
*
|
*
|
||||||
* linux/spinlock_types.h:
|
* linux/spinlock_types.h:
|
||||||
* defines the generic type and initializers
|
* defines the generic type and initializers
|
||||||
*
|
*
|
||||||
* asm/spinlock.h: contains the __raw_spin_*()/etc. lowlevel
|
* asm/spinlock.h: contains the arch_spin_*()/etc. lowlevel
|
||||||
* implementations, mostly inline assembly code
|
* implementations, mostly inline assembly code
|
||||||
*
|
*
|
||||||
* (also included on UP-debug builds:)
|
* (also included on UP-debug builds:)
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
* defines the generic type and initializers
|
* defines the generic type and initializers
|
||||||
*
|
*
|
||||||
* linux/spinlock_up.h:
|
* linux/spinlock_up.h:
|
||||||
* contains the __raw_spin_*()/etc. version of UP
|
* contains the arch_spin_*()/etc. version of UP
|
||||||
* builds. (which are NOPs on non-debug, non-preempt
|
* builds. (which are NOPs on non-debug, non-preempt
|
||||||
* builds)
|
* builds)
|
||||||
*
|
*
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
/*
|
/*
|
||||||
* Must define these before including other files, inline functions need them
|
* Must define these before including other files, inline functions need them
|
||||||
*/
|
*/
|
||||||
#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
|
#define LOCK_SECTION_NAME ".text..lock."KBUILD_BASENAME
|
||||||
|
|
||||||
#define LOCK_SECTION_START(extra) \
|
#define LOCK_SECTION_START(extra) \
|
||||||
".subsection 1\n\t" \
|
".subsection 1\n\t" \
|
||||||
|
@ -75,12 +75,12 @@
|
||||||
#define __lockfunc __attribute__((section(".spinlock.text")))
|
#define __lockfunc __attribute__((section(".spinlock.text")))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pull the raw_spinlock_t and raw_rwlock_t definitions:
|
* Pull the arch_spinlock_t and arch_rwlock_t definitions:
|
||||||
*/
|
*/
|
||||||
#include <linux/spinlock_types.h>
|
#include <linux/spinlock_types.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pull the __raw*() functions/declarations (UP-nondebug doesnt need them):
|
* Pull the arch_spin*() functions/declarations (UP-nondebug doesn't need them):
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
# include <asm/spinlock.h>
|
# include <asm/spinlock.h>
|
||||||
|
|
|
@ -123,6 +123,7 @@ extern char **argv_split(gfp_t gfp, const char *str, int *argcp);
|
||||||
extern void argv_free(char **argv);
|
extern void argv_free(char **argv);
|
||||||
|
|
||||||
extern bool sysfs_streq(const char *s1, const char *s2);
|
extern bool sysfs_streq(const char *s1, const char *s2);
|
||||||
|
extern int strtobool(const char *s, bool *res);
|
||||||
|
|
||||||
#ifdef CONFIG_BINARY_PRINTF
|
#ifdef CONFIG_BINARY_PRINTF
|
||||||
int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args);
|
int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args);
|
||||||
|
|
|
@ -150,6 +150,12 @@ typedef unsigned long blkcnt_t;
|
||||||
#define pgoff_t unsigned long
|
#define pgoff_t unsigned long
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT
|
||||||
|
typedef u64 dma_addr_t;
|
||||||
|
#else
|
||||||
|
typedef u32 dma_addr_t;
|
||||||
|
#endif /* dma_addr_t */
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -370,8 +376,3 @@ struct timeval
|
||||||
#define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
|
#define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
|
||||||
|
|
||||||
#endif /* _LINUX_TYPES_H */
|
#endif /* _LINUX_TYPES_H */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -148,3 +148,6 @@ $(NAME).dll: $(NAME_OBJS) $(FW_BINS) $(SRC_DEP) $(HFILES) $(LIBPATH)/libcore.a $
|
||||||
fwblob.o: fwblob.asm $(FW_BINS) Makefile
|
fwblob.o: fwblob.asm $(FW_BINS) Makefile
|
||||||
$(FASM) $< $@
|
$(FASM) $< $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f */*.o
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue