Merge branch 'linus' into cpus4096
This commit is contained in:
commit
414f746d23
|
@ -298,10 +298,10 @@ recommended that you never use these unless you really know what the
|
||||||
cache width is.
|
cache width is.
|
||||||
|
|
||||||
int
|
int
|
||||||
dma_mapping_error(dma_addr_t dma_addr)
|
dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
||||||
|
|
||||||
int
|
int
|
||||||
pci_dma_mapping_error(dma_addr_t dma_addr)
|
pci_dma_mapping_error(struct pci_dev *hwdev, dma_addr_t dma_addr)
|
||||||
|
|
||||||
In some circumstances dma_map_single and dma_map_page will fail to create
|
In some circumstances dma_map_single and dma_map_page will fail to create
|
||||||
a mapping. A driver can check for these errors by testing the returned
|
a mapping. A driver can check for these errors by testing the returned
|
||||||
|
|
|
@ -48,7 +48,7 @@ IOVA generation is pretty generic. We used the same technique as vmalloc()
|
||||||
but these are not global address spaces, but separate for each domain.
|
but these are not global address spaces, but separate for each domain.
|
||||||
Different DMA engines may support different number of domains.
|
Different DMA engines may support different number of domains.
|
||||||
|
|
||||||
We also allocate gaurd pages with each mapping, so we can attempt to catch
|
We also allocate guard pages with each mapping, so we can attempt to catch
|
||||||
any overflow that might happen.
|
any overflow that might happen.
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,4 +112,4 @@ TBD
|
||||||
|
|
||||||
- For compatibility testing, could use unity map domain for all devices, just
|
- For compatibility testing, could use unity map domain for all devices, just
|
||||||
provide a 1-1 for all useful memory under a single domain for all devices.
|
provide a 1-1 for all useful memory under a single domain for all devices.
|
||||||
- API for paravirt ops for abstracting functionlity for VMM folks.
|
- API for paravirt ops for abstracting functionality for VMM folks.
|
||||||
|
|
|
@ -6,7 +6,7 @@ This document contains an explanation of the struct taskstats fields.
|
||||||
There are three different groups of fields in the struct taskstats:
|
There are three different groups of fields in the struct taskstats:
|
||||||
|
|
||||||
1) Common and basic accounting fields
|
1) Common and basic accounting fields
|
||||||
If CONFIG_TASKSTATS is set, the taskstats inteface is enabled and
|
If CONFIG_TASKSTATS is set, the taskstats interface is enabled and
|
||||||
the common fields and basic accounting fields are collected for
|
the common fields and basic accounting fields are collected for
|
||||||
delivery at do_exit() of a task.
|
delivery at do_exit() of a task.
|
||||||
2) Delay accounting fields
|
2) Delay accounting fields
|
||||||
|
|
|
@ -138,14 +138,8 @@ So, what's changed?
|
||||||
|
|
||||||
Set active the IRQ edge(s)/level. This replaces the
|
Set active the IRQ edge(s)/level. This replaces the
|
||||||
SA1111 INTPOL manipulation, and the set_GPIO_IRQ_edge()
|
SA1111 INTPOL manipulation, and the set_GPIO_IRQ_edge()
|
||||||
function. Type should be one of the following:
|
function. Type should be one of IRQ_TYPE_xxx defined in
|
||||||
|
<linux/irq.h>
|
||||||
#define IRQT_NOEDGE (0)
|
|
||||||
#define IRQT_RISING (__IRQT_RISEDGE)
|
|
||||||
#define IRQT_FALLING (__IRQT_FALEDGE)
|
|
||||||
#define IRQT_BOTHEDGE (__IRQT_RISEDGE|__IRQT_FALEDGE)
|
|
||||||
#define IRQT_LOW (__IRQT_LOWLVL)
|
|
||||||
#define IRQT_HIGH (__IRQT_HIGHLVL)
|
|
||||||
|
|
||||||
3. set_GPIO_IRQ_edge() is obsolete, and should be replaced by set_irq_type.
|
3. set_GPIO_IRQ_edge() is obsolete, and should be replaced by set_irq_type.
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ around '10000' or more.
|
||||||
show_sampling_rate_(min|max): the minimum and maximum sampling rates
|
show_sampling_rate_(min|max): the minimum and maximum sampling rates
|
||||||
available that you may set 'sampling_rate' to.
|
available that you may set 'sampling_rate' to.
|
||||||
|
|
||||||
up_threshold: defines what the average CPU usaged between the samplings
|
up_threshold: defines what the average CPU usage between the samplings
|
||||||
of 'sampling_rate' needs to be for the kernel to make a decision on
|
of 'sampling_rate' needs to be for the kernel to make a decision on
|
||||||
whether it should increase the frequency. For example when it is set
|
whether it should increase the frequency. For example when it is set
|
||||||
to its default value of '80' it means that between the checking
|
to its default value of '80' it means that between the checking
|
||||||
|
|
|
@ -327,7 +327,7 @@ Sdram memory scrubbing rate:
|
||||||
'sdram_scrub_rate'
|
'sdram_scrub_rate'
|
||||||
|
|
||||||
Read/Write attribute file that controls memory scrubbing. The scrubbing
|
Read/Write attribute file that controls memory scrubbing. The scrubbing
|
||||||
rate is set by writing a minimum bandwith in bytes/sec to the attribute
|
rate is set by writing a minimum bandwidth in bytes/sec to the attribute
|
||||||
file. The rate will be translated to an internal value that gives at
|
file. The rate will be translated to an internal value that gives at
|
||||||
least the specified rate.
|
least the specified rate.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
Optimized MPEG Filesystem (OMFS)
|
||||||
|
|
||||||
|
Overview
|
||||||
|
========
|
||||||
|
|
||||||
|
OMFS is a filesystem created by SonicBlue for use in the ReplayTV DVR
|
||||||
|
and Rio Karma MP3 player. The filesystem is extent-based, utilizing
|
||||||
|
block sizes from 2k to 8k, with hash-based directories. This
|
||||||
|
filesystem driver may be used to read and write disks from these
|
||||||
|
devices.
|
||||||
|
|
||||||
|
Note, it is not recommended that this FS be used in place of a general
|
||||||
|
filesystem for your own streaming media device. Native Linux filesystems
|
||||||
|
will likely perform better.
|
||||||
|
|
||||||
|
More information is available at:
|
||||||
|
|
||||||
|
http://linux-karma.sf.net/
|
||||||
|
|
||||||
|
Various utilities, including mkomfs and omfsck, are included with
|
||||||
|
omfsprogs, available at:
|
||||||
|
|
||||||
|
http://bobcopeland.com/karma/
|
||||||
|
|
||||||
|
Instructions are included in its README.
|
||||||
|
|
||||||
|
Options
|
||||||
|
=======
|
||||||
|
|
||||||
|
OMFS supports the following mount-time options:
|
||||||
|
|
||||||
|
uid=n - make all files owned by specified user
|
||||||
|
gid=n - make all files owned by specified group
|
||||||
|
umask=xxx - set permission umask to xxx
|
||||||
|
fmask=xxx - set umask to xxx for files
|
||||||
|
dmask=xxx - set umask to xxx for directories
|
||||||
|
|
||||||
|
Disk format
|
||||||
|
===========
|
||||||
|
|
||||||
|
OMFS discriminates between "sysblocks" and normal data blocks. The sysblock
|
||||||
|
group consists of super block information, file metadata, directory structures,
|
||||||
|
and extents. Each sysblock has a header containing CRCs of the entire
|
||||||
|
sysblock, and may be mirrored in successive blocks on the disk. A sysblock may
|
||||||
|
have a smaller size than a data block, but since they are both addressed by the
|
||||||
|
same 64-bit block number, any remaining space in the smaller sysblock is
|
||||||
|
unused.
|
||||||
|
|
||||||
|
Sysblock header information:
|
||||||
|
|
||||||
|
struct omfs_header {
|
||||||
|
__be64 h_self; /* FS block where this is located */
|
||||||
|
__be32 h_body_size; /* size of useful data after header */
|
||||||
|
__be16 h_crc; /* crc-ccitt of body_size bytes */
|
||||||
|
char h_fill1[2];
|
||||||
|
u8 h_version; /* version, always 1 */
|
||||||
|
char h_type; /* OMFS_INODE_X */
|
||||||
|
u8 h_magic; /* OMFS_IMAGIC */
|
||||||
|
u8 h_check_xor; /* XOR of header bytes before this */
|
||||||
|
__be32 h_fill2;
|
||||||
|
};
|
||||||
|
|
||||||
|
Files and directories are both represented by omfs_inode:
|
||||||
|
|
||||||
|
struct omfs_inode {
|
||||||
|
struct omfs_header i_head; /* header */
|
||||||
|
__be64 i_parent; /* parent containing this inode */
|
||||||
|
__be64 i_sibling; /* next inode in hash bucket */
|
||||||
|
__be64 i_ctime; /* ctime, in milliseconds */
|
||||||
|
char i_fill1[35];
|
||||||
|
char i_type; /* OMFS_[DIR,FILE] */
|
||||||
|
__be32 i_fill2;
|
||||||
|
char i_fill3[64];
|
||||||
|
char i_name[OMFS_NAMELEN]; /* filename */
|
||||||
|
__be64 i_size; /* size of file, in bytes */
|
||||||
|
};
|
||||||
|
|
||||||
|
Directories in OMFS are implemented as a large hash table. Filenames are
|
||||||
|
hashed then prepended into the bucket list beginning at OMFS_DIR_START.
|
||||||
|
Lookup requires hashing the filename, then seeking across i_sibling pointers
|
||||||
|
until a match is found on i_name. Empty buckets are represented by block
|
||||||
|
pointers with all-1s (~0).
|
||||||
|
|
||||||
|
A file is an omfs_inode structure followed by an extent table beginning at
|
||||||
|
OMFS_EXTENT_START:
|
||||||
|
|
||||||
|
struct omfs_extent_entry {
|
||||||
|
__be64 e_cluster; /* start location of a set of blocks */
|
||||||
|
__be64 e_blocks; /* number of blocks after e_cluster */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct omfs_extent {
|
||||||
|
__be64 e_next; /* next extent table location */
|
||||||
|
__be32 e_extent_count; /* total # extents in this table */
|
||||||
|
__be32 e_fill;
|
||||||
|
struct omfs_extent_entry e_entry; /* start of extent entries */
|
||||||
|
};
|
||||||
|
|
||||||
|
Each extent holds the block offset followed by number of blocks allocated to
|
||||||
|
the extent. The final extent in each table is a terminator with e_cluster
|
||||||
|
being ~0 and e_blocks being ones'-complement of the total number of blocks
|
||||||
|
in the table.
|
||||||
|
|
||||||
|
If this table overflows, a continuation inode is written and pointed to by
|
||||||
|
e_next. These have a header but lack the rest of the inode structure.
|
||||||
|
|
|
@ -931,7 +931,7 @@ group_prealloc max_to_scan mb_groups mb_history min_to_scan order2_req
|
||||||
stats stream_req
|
stats stream_req
|
||||||
|
|
||||||
mb_groups:
|
mb_groups:
|
||||||
This file gives the details of mutiblock allocator buddy cache of free blocks
|
This file gives the details of multiblock allocator buddy cache of free blocks
|
||||||
|
|
||||||
mb_history:
|
mb_history:
|
||||||
Multiblock allocation history.
|
Multiblock allocation history.
|
||||||
|
@ -1474,7 +1474,7 @@ used because pages_free(1355) is smaller than watermark + protection[2]
|
||||||
normal page requirement. If requirement is DMA zone(index=0), protection[0]
|
normal page requirement. If requirement is DMA zone(index=0), protection[0]
|
||||||
(=0) is used.
|
(=0) is used.
|
||||||
|
|
||||||
zone[i]'s protection[j] is calculated by following exprssion.
|
zone[i]'s protection[j] is calculated by following expression.
|
||||||
|
|
||||||
(i < j):
|
(i < j):
|
||||||
zone[i]->protection[j]
|
zone[i]->protection[j]
|
||||||
|
|
|
@ -294,6 +294,16 @@ user-defined data with a channel, and is immediately available
|
||||||
(including in create_buf_file()) via chan->private_data or
|
(including in create_buf_file()) via chan->private_data or
|
||||||
buf->chan->private_data.
|
buf->chan->private_data.
|
||||||
|
|
||||||
|
Buffer-only channels
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
These channels have no files associated and can be created with
|
||||||
|
relay_open(NULL, NULL, ...). Such channels are useful in scenarios such
|
||||||
|
as when doing early tracing in the kernel, before the VFS is up. In these
|
||||||
|
cases, one may open a buffer-only channel and then call
|
||||||
|
relay_late_setup_files() when the kernel is ready to handle files,
|
||||||
|
to expose the buffered data to the userspace.
|
||||||
|
|
||||||
Channel 'modes'
|
Channel 'modes'
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,7 @@ struct file_system_type {
|
||||||
|
|
||||||
The get_sb() method has the following arguments:
|
The get_sb() method has the following arguments:
|
||||||
|
|
||||||
struct file_system_type *fs_type: decribes the filesystem, partly initialized
|
struct file_system_type *fs_type: describes the filesystem, partly initialized
|
||||||
by the specific filesystem code
|
by the specific filesystem code
|
||||||
|
|
||||||
int flags: mount flags
|
int flags: mount flags
|
||||||
|
@ -895,9 +895,9 @@ struct dentry_operations {
|
||||||
iput() yourself
|
iput() yourself
|
||||||
|
|
||||||
d_dname: called when the pathname of a dentry should be generated.
|
d_dname: called when the pathname of a dentry should be generated.
|
||||||
Usefull for some pseudo filesystems (sockfs, pipefs, ...) to delay
|
Useful for some pseudo filesystems (sockfs, pipefs, ...) to delay
|
||||||
pathname generation. (Instead of doing it when dentry is created,
|
pathname generation. (Instead of doing it when dentry is created,
|
||||||
its done only when the path is needed.). Real filesystems probably
|
it's done only when the path is needed.). Real filesystems probably
|
||||||
dont want to use it, because their dentries are present in global
|
dont want to use it, because their dentries are present in global
|
||||||
dcache hash, so their hash should be an invariant. As no lock is
|
dcache hash, so their hash should be an invariant. As no lock is
|
||||||
held, d_dname() should not try to modify the dentry itself, unless
|
held, d_dname() should not try to modify the dentry itself, unless
|
||||||
|
|
|
@ -50,9 +50,9 @@ Note: For step 2, please make sure that host page size == TARGET_PAGE_SIZE of qe
|
||||||
/usr/local/bin/qemu-system-ia64 -smp xx -m 512 -hda $your_image
|
/usr/local/bin/qemu-system-ia64 -smp xx -m 512 -hda $your_image
|
||||||
(xx is the number of virtual processors for the guest, now the maximum value is 4)
|
(xx is the number of virtual processors for the guest, now the maximum value is 4)
|
||||||
|
|
||||||
5. Known possibile issue on some platforms with old Firmware.
|
5. Known possible issue on some platforms with old Firmware.
|
||||||
|
|
||||||
If meet strange host crashe issues, try to solve it through either of the following ways:
|
In the event of strange host crash issues, try to solve it through either of the following ways:
|
||||||
|
|
||||||
(1): Upgrade your Firmware to the latest one.
|
(1): Upgrade your Firmware to the latest one.
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ index 0b53344..f02b0f7 100644
|
||||||
mov ar.pfs = loc1
|
mov ar.pfs = loc1
|
||||||
mov rp = loc0
|
mov rp = loc0
|
||||||
;;
|
;;
|
||||||
- srlz.d // seralize restoration of psr.l
|
- srlz.d // serialize restoration of psr.l
|
||||||
+ srlz.i // seralize restoration of psr.l
|
+ srlz.i // serialize restoration of psr.l
|
||||||
+ ;;
|
+ ;;
|
||||||
br.ret.sptk.many b0
|
br.ret.sptk.many b0
|
||||||
END(ia64_pal_call_static)
|
END(ia64_pal_call_static)
|
||||||
|
|
|
@ -31,7 +31,7 @@ The driver works with ALSA drivers simultaneously. For example, the xracer
|
||||||
uses joystick as input device and PCM device as sound output in one time.
|
uses joystick as input device and PCM device as sound output in one time.
|
||||||
There are no sound or input collisions detected. The source code have
|
There are no sound or input collisions detected. The source code have
|
||||||
comments about them; but I've found the joystick can be initialized
|
comments about them; but I've found the joystick can be initialized
|
||||||
separately of ALSA modules. So, you canm use only one joystick driver
|
separately of ALSA modules. So, you can use only one joystick driver
|
||||||
without ALSA drivers. The ALSA drivers are not needed to compile or
|
without ALSA drivers. The ALSA drivers are not needed to compile or
|
||||||
run this driver.
|
run this driver.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
To decode a hex IOCTL code:
|
To decode a hex IOCTL code:
|
||||||
|
|
||||||
Most architecures use this generic format, but check
|
Most architectures use this generic format, but check
|
||||||
include/ARCH/ioctl.h for specifics, e.g. powerpc
|
include/ARCH/ioctl.h for specifics, e.g. powerpc
|
||||||
uses 3 bits to encode read/write and 13 bits for size.
|
uses 3 bits to encode read/write and 13 bits for size.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ uses 3 bits to encode read/write and 13 bits for size.
|
||||||
7-0 function #
|
7-0 function #
|
||||||
|
|
||||||
|
|
||||||
So for example 0x82187201 is a read with arg length of 0x218,
|
So for example 0x82187201 is a read with arg length of 0x218,
|
||||||
character 'r' function 1. Grepping the source reveals this is:
|
character 'r' function 1. Grepping the source reveals this is:
|
||||||
|
|
||||||
#define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2])
|
#define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2])
|
||||||
|
|
|
@ -143,7 +143,7 @@ disk and partition statistics are consistent again. Since we still don't
|
||||||
keep record of the partition-relative address, an operation is attributed to
|
keep record of the partition-relative address, an operation is attributed to
|
||||||
the partition which contains the first sector of the request after the
|
the partition which contains the first sector of the request after the
|
||||||
eventual merges. As requests can be merged across partition, this could lead
|
eventual merges. As requests can be merged across partition, this could lead
|
||||||
to some (probably insignificant) innacuracy.
|
to some (probably insignificant) inaccuracy.
|
||||||
|
|
||||||
Additional notes
|
Additional notes
|
||||||
----------------
|
----------------
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
mISDN is a new modular ISDN driver, in the long term it should replace
|
||||||
|
the old I4L driver architecture for passiv ISDN cards.
|
||||||
|
It was designed to allow a broad range of applications and interfaces
|
||||||
|
but only have the basic function in kernel, the interface to the user
|
||||||
|
space is based on sockets with a own address family AF_ISDN.
|
||||||
|
|
|
@ -864,7 +864,7 @@ payload contents" for more information.
|
||||||
request_key_with_auxdata() respectively.
|
request_key_with_auxdata() respectively.
|
||||||
|
|
||||||
These two functions return with the key potentially still under
|
These two functions return with the key potentially still under
|
||||||
construction. To wait for contruction completion, the following should be
|
construction. To wait for construction completion, the following should be
|
||||||
called:
|
called:
|
||||||
|
|
||||||
int wait_for_key_construction(struct key *key, bool intr);
|
int wait_for_key_construction(struct key *key, bool intr);
|
||||||
|
|
|
@ -59,7 +59,7 @@ Hardware accelerated blink of LEDs
|
||||||
|
|
||||||
Some LEDs can be programmed to blink without any CPU interaction. To
|
Some LEDs can be programmed to blink without any CPU interaction. To
|
||||||
support this feature, a LED driver can optionally implement the
|
support this feature, a LED driver can optionally implement the
|
||||||
blink_set() function (see <linux/leds.h>). If implemeted, triggers can
|
blink_set() function (see <linux/leds.h>). If implemented, triggers can
|
||||||
attempt to use it before falling back to software timers. The blink_set()
|
attempt to use it before falling back to software timers. The blink_set()
|
||||||
function should return 0 if the blink setting is supported, or -EINVAL
|
function should return 0 if the blink setting is supported, or -EINVAL
|
||||||
otherwise, which means that LED blinking will be handled by software.
|
otherwise, which means that LED blinking will be handled by software.
|
||||||
|
|
|
@ -36,7 +36,7 @@ It can be done by slightly modifying the standard atomic operations : only
|
||||||
their UP variant must be kept. It typically means removing LOCK prefix (on
|
their UP variant must be kept. It typically means removing LOCK prefix (on
|
||||||
i386 and x86_64) and any SMP sychronization barrier. If the architecture does
|
i386 and x86_64) and any SMP sychronization barrier. If the architecture does
|
||||||
not have a different behavior between SMP and UP, including asm-generic/local.h
|
not have a different behavior between SMP and UP, including asm-generic/local.h
|
||||||
in your archtecture's local.h is sufficient.
|
in your architecture's local.h is sufficient.
|
||||||
|
|
||||||
The local_t type is defined as an opaque signed long by embedding an
|
The local_t type is defined as an opaque signed long by embedding an
|
||||||
atomic_long_t inside a structure. This is made so a cast from this type to a
|
atomic_long_t inside a structure. This is made so a cast from this type to a
|
||||||
|
|
|
@ -631,7 +631,7 @@ xmit_hash_policy
|
||||||
in environments where a layer3 gateway device is
|
in environments where a layer3 gateway device is
|
||||||
required to reach most destinations.
|
required to reach most destinations.
|
||||||
|
|
||||||
This algorithm is 802.3ad complient.
|
This algorithm is 802.3ad compliant.
|
||||||
|
|
||||||
layer3+4
|
layer3+4
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@ solution for a couple of reasons:
|
||||||
|
|
||||||
The Linux network devices (by default) just can handle the
|
The Linux network devices (by default) just can handle the
|
||||||
transmission and reception of media dependent frames. Due to the
|
transmission and reception of media dependent frames. Due to the
|
||||||
arbritration on the CAN bus the transmission of a low prio CAN-ID
|
arbitration on the CAN bus the transmission of a low prio CAN-ID
|
||||||
may be delayed by the reception of a high prio CAN frame. To
|
may be delayed by the reception of a high prio CAN frame. To
|
||||||
reflect the correct* traffic on the node the loopback of the sent
|
reflect the correct* traffic on the node the loopback of the sent
|
||||||
data has to be performed right after a successful transmission. If
|
data has to be performed right after a successful transmission. If
|
||||||
|
@ -481,7 +481,7 @@ solution for a couple of reasons:
|
||||||
- stats_timer: To calculate the Socket CAN core statistics
|
- stats_timer: To calculate the Socket CAN core statistics
|
||||||
(e.g. current/maximum frames per second) this 1 second timer is
|
(e.g. current/maximum frames per second) this 1 second timer is
|
||||||
invoked at can.ko module start time by default. This timer can be
|
invoked at can.ko module start time by default. This timer can be
|
||||||
disabled by using stattimer=0 on the module comandline.
|
disabled by using stattimer=0 on the module commandline.
|
||||||
|
|
||||||
- debug: (removed since SocketCAN SVN r546)
|
- debug: (removed since SocketCAN SVN r546)
|
||||||
|
|
||||||
|
|
|
@ -326,7 +326,7 @@ just one call to mmap is needed:
|
||||||
mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||||
|
|
||||||
If tp_frame_size is a divisor of tp_block_size frames will be
|
If tp_frame_size is a divisor of tp_block_size frames will be
|
||||||
contiguosly spaced by tp_frame_size bytes. If not, each
|
contiguously spaced by tp_frame_size bytes. If not, each
|
||||||
tp_block_size/tp_frame_size frames there will be a gap between
|
tp_block_size/tp_frame_size frames there will be a gap between
|
||||||
the frames. This is because a frame cannot be spawn across two
|
the frames. This is because a frame cannot be spawn across two
|
||||||
blocks.
|
blocks.
|
||||||
|
|
|
@ -4,26 +4,27 @@ The "enviromental" rules for authors of any new tc actions are:
|
||||||
1) If you stealeth or borroweth any packet thou shalt be branching
|
1) If you stealeth or borroweth any packet thou shalt be branching
|
||||||
from the righteous path and thou shalt cloneth.
|
from the righteous path and thou shalt cloneth.
|
||||||
|
|
||||||
For example if your action queues a packet to be processed later
|
For example if your action queues a packet to be processed later,
|
||||||
or intentionaly branches by redirecting a packet then you need to
|
or intentionally branches by redirecting a packet, then you need to
|
||||||
clone the packet.
|
clone the packet.
|
||||||
|
|
||||||
There are certain fields in the skb tc_verd that need to be reset so we
|
There are certain fields in the skb tc_verd that need to be reset so we
|
||||||
avoid loops etc. A few are generic enough so much so that skb_act_clone()
|
avoid loops, etc. A few are generic enough that skb_act_clone()
|
||||||
resets them for you. So invoke skb_act_clone() rather than skb_clone()
|
resets them for you, so invoke skb_act_clone() rather than skb_clone().
|
||||||
|
|
||||||
2) If you munge any packet thou shalt call pskb_expand_head in the case
|
2) If you munge any packet thou shalt call pskb_expand_head in the case
|
||||||
someone else is referencing the skb. After that you "own" the skb.
|
someone else is referencing the skb. After that you "own" the skb.
|
||||||
You must also tell us if it is ok to munge the packet (TC_OK2MUNGE),
|
You must also tell us if it is ok to munge the packet (TC_OK2MUNGE),
|
||||||
this way any action downstream can stomp on the packet.
|
this way any action downstream can stomp on the packet.
|
||||||
|
|
||||||
3) dropping packets you dont own is a nono. You simply return
|
3) Dropping packets you don't own is a no-no. You simply return
|
||||||
TC_ACT_SHOT to the caller and they will drop it.
|
TC_ACT_SHOT to the caller and they will drop it.
|
||||||
|
|
||||||
The "enviromental" rules for callers of actions (qdiscs etc) are:
|
The "enviromental" rules for callers of actions (qdiscs etc) are:
|
||||||
|
|
||||||
*) thou art responsible for freeing anything returned as being
|
*) Thou art responsible for freeing anything returned as being
|
||||||
TC_ACT_SHOT/STOLEN/QUEUED. If none of TC_ACT_SHOT/STOLEN/QUEUED is
|
TC_ACT_SHOT/STOLEN/QUEUED. If none of TC_ACT_SHOT/STOLEN/QUEUED is
|
||||||
returned then all is great and you dont need to do anything.
|
returned, then all is great and you don't need to do anything.
|
||||||
|
|
||||||
Post on netdev if something is unclear.
|
Post on netdev if something is unclear.
|
||||||
|
|
||||||
|
|
|
@ -708,7 +708,7 @@ device or bus to be described by the device tree.
|
||||||
In general, the format of an address for a device is defined by the
|
In general, the format of an address for a device is defined by the
|
||||||
parent bus type, based on the #address-cells and #size-cells
|
parent bus type, based on the #address-cells and #size-cells
|
||||||
properties. Note that the parent's parent definitions of #address-cells
|
properties. Note that the parent's parent definitions of #address-cells
|
||||||
and #size-cells are not inhereted so every node with children must specify
|
and #size-cells are not inherited so every node with children must specify
|
||||||
them. The kernel requires the root node to have those properties defining
|
them. The kernel requires the root node to have those properties defining
|
||||||
addresses format for devices directly mapped on the processor bus.
|
addresses format for devices directly mapped on the processor bus.
|
||||||
|
|
||||||
|
@ -1777,7 +1777,7 @@ platforms are moved over to use the flattened-device-tree model.
|
||||||
|
|
||||||
Xilinx uartlite devices are simple fixed speed serial ports.
|
Xilinx uartlite devices are simple fixed speed serial ports.
|
||||||
|
|
||||||
Requred properties:
|
Required properties:
|
||||||
- current-speed : Baud rate of uartlite
|
- current-speed : Baud rate of uartlite
|
||||||
|
|
||||||
v) Xilinx hwicap
|
v) Xilinx hwicap
|
||||||
|
@ -1799,7 +1799,7 @@ platforms are moved over to use the flattened-device-tree model.
|
||||||
Xilinx UART 16550 devices are very similar to the NS16550 but with
|
Xilinx UART 16550 devices are very similar to the NS16550 but with
|
||||||
different register spacing and an offset from the base address.
|
different register spacing and an offset from the base address.
|
||||||
|
|
||||||
Requred properties:
|
Required properties:
|
||||||
- clock-frequency : Frequency of the clock input
|
- clock-frequency : Frequency of the clock input
|
||||||
- reg-offset : A value of 3 is required
|
- reg-offset : A value of 3 is required
|
||||||
- reg-shift : A value of 2 is required
|
- reg-shift : A value of 2 is required
|
||||||
|
@ -1953,7 +1953,7 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.
|
||||||
1) The /system-controller node
|
1) The /system-controller node
|
||||||
|
|
||||||
This node is used to represent the system-controller and must be
|
This node is used to represent the system-controller and must be
|
||||||
present when the system uses a system contller chip. The top-level
|
present when the system uses a system controller chip. The top-level
|
||||||
system-controller node contains information that is global to all
|
system-controller node contains information that is global to all
|
||||||
devices within the system controller chip. The node name begins
|
devices within the system controller chip. The node name begins
|
||||||
with "system-controller" followed by the unit address, which is
|
with "system-controller" followed by the unit address, which is
|
||||||
|
|
|
@ -217,7 +217,7 @@ Although it is not recommended, you can specify '0' in the soc.model
|
||||||
field to skip matching SOCs altogether.
|
field to skip matching SOCs altogether.
|
||||||
|
|
||||||
The 'model' field is a 16-bit number that matches the actual SOC. The
|
The 'model' field is a 16-bit number that matches the actual SOC. The
|
||||||
'major' and 'minor' fields are the major and minor revision numbrs,
|
'major' and 'minor' fields are the major and minor revision numbers,
|
||||||
respectively, of the SOC.
|
respectively, of the SOC.
|
||||||
|
|
||||||
For example, to match the 8323, revision 1.0:
|
For example, to match the 8323, revision 1.0:
|
||||||
|
|
|
@ -25,7 +25,7 @@ device 4711 via subchannel 1 in subchannel set 0, and subchannel 2 is a non-I/O
|
||||||
subchannel. Device 1234 is accessed via subchannel 0 in subchannel set 1.
|
subchannel. Device 1234 is accessed via subchannel 0 in subchannel set 1.
|
||||||
|
|
||||||
The subchannel named 'defunct' does not represent any real subchannel on the
|
The subchannel named 'defunct' does not represent any real subchannel on the
|
||||||
system; it is a pseudo subchannel where disconnnected ccw devices are moved to
|
system; it is a pseudo subchannel where disconnected ccw devices are moved to
|
||||||
if they are displaced by another ccw device becoming operational on their
|
if they are displaced by another ccw device becoming operational on their
|
||||||
former subchannel. The ccw devices will be moved again to a proper subchannel
|
former subchannel. The ccw devices will be moved again to a proper subchannel
|
||||||
if they become operational again on that subchannel.
|
if they become operational again on that subchannel.
|
||||||
|
|
|
@ -524,7 +524,7 @@
|
||||||
- Michael Lang
|
- Michael Lang
|
||||||
|
|
||||||
June 25 1997: (v1.8b)
|
June 25 1997: (v1.8b)
|
||||||
1) Some cosmetical changes for the handling of SCSI-device-types.
|
1) Some cosmetic changes for the handling of SCSI-device-types.
|
||||||
Now, also CD-Burners / WORMs and SCSI-scanners should work. For
|
Now, also CD-Burners / WORMs and SCSI-scanners should work. For
|
||||||
MO-drives I have no experience, therefore not yet supported.
|
MO-drives I have no experience, therefore not yet supported.
|
||||||
In logical_devices I changed from different type-variables to one
|
In logical_devices I changed from different type-variables to one
|
||||||
|
@ -914,7 +914,7 @@
|
||||||
in version 4.0. This was never really necessary, as all troubles were
|
in version 4.0. This was never really necessary, as all troubles were
|
||||||
based on non-command related reasons up to now, so bypassing commands
|
based on non-command related reasons up to now, so bypassing commands
|
||||||
did not help to avoid any bugs. It is kept in 3.2X for debugging reasons.
|
did not help to avoid any bugs. It is kept in 3.2X for debugging reasons.
|
||||||
5) Dynamical reassignment of ldns was again verified and analyzed to be
|
5) Dynamic reassignment of ldns was again verified and analyzed to be
|
||||||
completely inoperational. This is corrected and should work now.
|
completely inoperational. This is corrected and should work now.
|
||||||
6) All commands that get sent to the SCSI adapter were verified and
|
6) All commands that get sent to the SCSI adapter were verified and
|
||||||
completed in such a way, that they are now completely conform to the
|
completed in such a way, that they are now completely conform to the
|
||||||
|
@ -1386,7 +1386,7 @@
|
||||||
concerning the Linux-kernel in special, this SCSI-driver comes without any
|
concerning the Linux-kernel in special, this SCSI-driver comes without any
|
||||||
warranty. Its functionality is tested as good as possible on certain
|
warranty. Its functionality is tested as good as possible on certain
|
||||||
machines and combinations of computer hardware, which does not exclude,
|
machines and combinations of computer hardware, which does not exclude,
|
||||||
that dataloss or severe damage of hardware is possible while using this
|
that data loss or severe damage of hardware is possible while using this
|
||||||
part of software on some arbitrary computer hardware or in combination
|
part of software on some arbitrary computer hardware or in combination
|
||||||
with other software packages. It is highly recommended to make backup
|
with other software packages. It is highly recommended to make backup
|
||||||
copies of your data before using this software. Furthermore, personal
|
copies of your data before using this software. Furthermore, personal
|
||||||
|
|
|
@ -36,7 +36,7 @@ Cable pull and temporary device Loss:
|
||||||
being removed, a switch rebooting, or a device reboot), the driver could
|
being removed, a switch rebooting, or a device reboot), the driver could
|
||||||
hide the disappearance of the device from the midlayer. I/O's issued to
|
hide the disappearance of the device from the midlayer. I/O's issued to
|
||||||
the LLDD would simply be queued for a short duration, allowing the device
|
the LLDD would simply be queued for a short duration, allowing the device
|
||||||
to reappear or link come back alive, with no inadvertant side effects
|
to reappear or link come back alive, with no inadvertent side effects
|
||||||
to the system. If the driver did not hide these conditions, i/o would be
|
to the system. If the driver did not hide these conditions, i/o would be
|
||||||
errored by the driver, the mid-layer would exhaust its retries, and the
|
errored by the driver, the mid-layer would exhaust its retries, and the
|
||||||
device would be taken offline. Manual intervention would be required to
|
device would be taken offline. Manual intervention would be required to
|
||||||
|
|
|
@ -65,7 +65,7 @@ Overview:
|
||||||
discussion will concentrate on NPIV.
|
discussion will concentrate on NPIV.
|
||||||
|
|
||||||
Note: World Wide Name assignment (and uniqueness guarantees) are left
|
Note: World Wide Name assignment (and uniqueness guarantees) are left
|
||||||
up to an administrative entity controling the vport. For example,
|
up to an administrative entity controlling the vport. For example,
|
||||||
if vports are to be associated with virtual machines, a XEN mgmt
|
if vports are to be associated with virtual machines, a XEN mgmt
|
||||||
utility would be responsible for creating wwpn/wwnn's for the vport,
|
utility would be responsible for creating wwpn/wwnn's for the vport,
|
||||||
using it's own naming authority and OUI. (Note: it already does this
|
using it's own naming authority and OUI. (Note: it already does this
|
||||||
|
@ -91,7 +91,7 @@ Device Trees and Vport Objects:
|
||||||
Here's what to expect in the device tree :
|
Here's what to expect in the device tree :
|
||||||
The typical Physical Port's Scsi_Host:
|
The typical Physical Port's Scsi_Host:
|
||||||
/sys/devices/.../host17/
|
/sys/devices/.../host17/
|
||||||
and it has the typical decendent tree:
|
and it has the typical descendant tree:
|
||||||
/sys/devices/.../host17/rport-17:0-0/target17:0:0/17:0:0:0:
|
/sys/devices/.../host17/rport-17:0-0/target17:0:0/17:0:0:0:
|
||||||
and then the vport is created on the Physical Port:
|
and then the vport is created on the Physical Port:
|
||||||
/sys/devices/.../host17/vport-17:0-0
|
/sys/devices/.../host17/vport-17:0-0
|
||||||
|
@ -192,7 +192,7 @@ Vport States:
|
||||||
independent of the adapter's link state.
|
independent of the adapter's link state.
|
||||||
- Instantiation of the vport on the FC link via ELS traffic, etc.
|
- Instantiation of the vport on the FC link via ELS traffic, etc.
|
||||||
This is equivalent to a "link up" and successfull link initialization.
|
This is equivalent to a "link up" and successfull link initialization.
|
||||||
Futher information can be found in the interfaces section below for
|
Further information can be found in the interfaces section below for
|
||||||
Vport Creation.
|
Vport Creation.
|
||||||
|
|
||||||
Once a vport has been instantiated with the kernel/LLDD, a vport state
|
Once a vport has been instantiated with the kernel/LLDD, a vport state
|
||||||
|
|
|
@ -12,7 +12,7 @@ means no changes to adjanced clock
|
||||||
Internally, the clk_set_rate_ex forwards request to clk->ops->set_rate method,
|
Internally, the clk_set_rate_ex forwards request to clk->ops->set_rate method,
|
||||||
if it is present in ops structure. The method should set the clock rate and adjust
|
if it is present in ops structure. The method should set the clock rate and adjust
|
||||||
all needed clocks according to the passed algo_id.
|
all needed clocks according to the passed algo_id.
|
||||||
Exact values for algo_id are machine-dependend. For the sh7722, the following
|
Exact values for algo_id are machine-dependent. For the sh7722, the following
|
||||||
values are defined:
|
values are defined:
|
||||||
|
|
||||||
NO_CHANGE = 0,
|
NO_CHANGE = 0,
|
||||||
|
|
|
@ -1024,6 +1024,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
intel-mac-v3 Intel Mac Type 3
|
intel-mac-v3 Intel Mac Type 3
|
||||||
intel-mac-v4 Intel Mac Type 4
|
intel-mac-v4 Intel Mac Type 4
|
||||||
intel-mac-v5 Intel Mac Type 5
|
intel-mac-v5 Intel Mac Type 5
|
||||||
|
intel-mac-auto Intel Mac (detect type according to subsystem id)
|
||||||
macmini Intel Mac Mini (equivalent with type 3)
|
macmini Intel Mac Mini (equivalent with type 3)
|
||||||
macbook Intel Mac Book (eq. type 5)
|
macbook Intel Mac Book (eq. type 5)
|
||||||
macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3)
|
macbook-pro-v1 Intel Mac Book Pro 1st generation (eq. type 3)
|
||||||
|
|
|
@ -236,15 +236,15 @@ The parameter can be given:
|
||||||
alias snd-card-1 snd-usb-audio
|
alias snd-card-1 snd-usb-audio
|
||||||
options snd-usb-audio index=1 device_setup=0x09
|
options snd-usb-audio index=1 device_setup=0x09
|
||||||
|
|
||||||
CAUTION when initializaing the device
|
CAUTION when initializing the device
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
* Correct initialization on the device requires that device_setup is given to
|
* Correct initialization on the device requires that device_setup is given to
|
||||||
the module BEFORE the device is turned on. So, if you use the "manual probing"
|
the module BEFORE the device is turned on. So, if you use the "manual probing"
|
||||||
method described above, take care to power-on the device AFTER this initialization.
|
method described above, take care to power-on the device AFTER this initialization.
|
||||||
|
|
||||||
* Failing to respect this will lead in a misconfiguration of the device. In this case
|
* Failing to respect this will lead to a misconfiguration of the device. In this case
|
||||||
turn off the device, unproble the snd-usb-audio module, then probe it again with
|
turn off the device, unprobe the snd-usb-audio module, then probe it again with
|
||||||
correct device_setup parameter and then (and only then) turn on the device again.
|
correct device_setup parameter and then (and only then) turn on the device again.
|
||||||
|
|
||||||
* If you've correctly initialized the device in a valid mode and then want to switch
|
* If you've correctly initialized the device in a valid mode and then want to switch
|
||||||
|
@ -388,9 +388,9 @@ There are 2 main potential issues when using Jackd with the device:
|
||||||
|
|
||||||
Jack supports big endian devices only in recent versions (thanks to
|
Jack supports big endian devices only in recent versions (thanks to
|
||||||
Andreas Steinmetz for his first big-endian patch). I can't remember
|
Andreas Steinmetz for his first big-endian patch). I can't remember
|
||||||
extacly when this support was released into jackd, let's just say that
|
exactly when this support was released into jackd, let's just say that
|
||||||
with jackd version 0.103.0 it's almost ok (just a small bug is affecting
|
with jackd version 0.103.0 it's almost ok (just a small bug is affecting
|
||||||
16bits Big-Endian devices, but since you've read carefully the above
|
16bits Big-Endian devices, but since you've read carefully the above
|
||||||
paragraphs, you're now using kernel >= 2.6.23 and your 16bits devices
|
paragraphs, you're now using kernel >= 2.6.23 and your 16bits devices
|
||||||
are now Little Endians ;-) ).
|
are now Little Endians ;-) ).
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ CONFIG_SND_HDA_POWER_SAVE kconfig. It's called when the codec needs
|
||||||
to power up or may power down. The controller should check the all
|
to power up or may power down. The controller should check the all
|
||||||
belonging codecs on the bus whether they are actually powered off
|
belonging codecs on the bus whether they are actually powered off
|
||||||
(check codec->power_on), and optionally the driver may power down the
|
(check codec->power_on), and optionally the driver may power down the
|
||||||
contoller side, too.
|
controller side, too.
|
||||||
|
|
||||||
The bus instance is created via snd_hda_bus_new(). You need to pass
|
The bus instance is created via snd_hda_bus_new(). You need to pass
|
||||||
the card instance, the template, and the pointer to store the
|
the card instance, the template, and the pointer to store the
|
||||||
|
|
|
@ -68,7 +68,7 @@ Audio DAPM widgets fall into a number of types:-
|
||||||
(Widgets are defined in include/sound/soc-dapm.h)
|
(Widgets are defined in include/sound/soc-dapm.h)
|
||||||
|
|
||||||
Widgets are usually added in the codec driver and the machine driver. There are
|
Widgets are usually added in the codec driver and the machine driver. There are
|
||||||
convience macros defined in soc-dapm.h that can be used to quickly build a
|
convenience macros defined in soc-dapm.h that can be used to quickly build a
|
||||||
list of widgets of the codecs and machines DAPM widgets.
|
list of widgets of the codecs and machines DAPM widgets.
|
||||||
|
|
||||||
Most widgets have a name, register, shift and invert. Some widgets have extra
|
Most widgets have a name, register, shift and invert. Some widgets have extra
|
||||||
|
|
|
@ -73,10 +73,10 @@ recompiled, or use "make C=2" to run sparse on the files whether they need to
|
||||||
be recompiled or not. The latter is a fast way to check the whole tree if you
|
be recompiled or not. The latter is a fast way to check the whole tree if you
|
||||||
have already built it.
|
have already built it.
|
||||||
|
|
||||||
The optional make variable CHECKFLAGS can be used to pass arguments to sparse.
|
The optional make variable CF can be used to pass arguments to sparse. The
|
||||||
The build system passes -Wbitwise to sparse automatically. To perform
|
build system passes -Wbitwise to sparse automatically. To perform endianness
|
||||||
endianness checks, you may define __CHECK_ENDIAN__:
|
checks, you may define __CHECK_ENDIAN__:
|
||||||
|
|
||||||
make C=2 CHECKFLAGS="-D__CHECK_ENDIAN__"
|
make C=2 CF="-D__CHECK_ENDIAN__"
|
||||||
|
|
||||||
These checks are disabled by default as they generate a host of warnings.
|
These checks are disabled by default as they generate a host of warnings.
|
||||||
|
|
|
@ -116,7 +116,7 @@ of kilobytes free. The VM uses this number to compute a pages_min
|
||||||
value for each lowmem zone in the system. Each lowmem zone gets
|
value for each lowmem zone in the system. Each lowmem zone gets
|
||||||
a number of reserved free pages based proportionally on its size.
|
a number of reserved free pages based proportionally on its size.
|
||||||
|
|
||||||
Some minimal ammount of memory is needed to satisfy PF_MEMALLOC
|
Some minimal amount of memory is needed to satisfy PF_MEMALLOC
|
||||||
allocations; if you set this to lower than 1024KB, your system will
|
allocations; if you set this to lower than 1024KB, your system will
|
||||||
become subtly broken, and prone to deadlock under high loads.
|
become subtly broken, and prone to deadlock under high loads.
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ increase of flexibility and the avoidance of duplicated code across
|
||||||
architectures justifies the slight increase of the binary size.
|
architectures justifies the slight increase of the binary size.
|
||||||
|
|
||||||
The conversion of an architecture has no functional impact, but allows to
|
The conversion of an architecture has no functional impact, but allows to
|
||||||
utilize the high resolution and dynamic tick functionalites without any change
|
utilize the high resolution and dynamic tick functionalities without any change
|
||||||
to the clock event device and timer interrupt code. After the conversion the
|
to the clock event device and timer interrupt code. After the conversion the
|
||||||
enabling of high resolution timers and dynamic ticks is simply provided by
|
enabling of high resolution timers and dynamic ticks is simply provided by
|
||||||
adding the kernel/time/Kconfig file to the architecture specific Kconfig and
|
adding the kernel/time/Kconfig file to the architecture specific Kconfig and
|
||||||
|
|
|
@ -8,7 +8,7 @@ not) in a system. This feature will allow you to implement a lock-down
|
||||||
of USB devices, fully controlled by user space.
|
of USB devices, fully controlled by user space.
|
||||||
|
|
||||||
As of now, when a USB device is connected it is configured and
|
As of now, when a USB device is connected it is configured and
|
||||||
it's interfaces inmediately made available to the users. With this
|
its interfaces are immediately made available to the users. With this
|
||||||
modification, only if root authorizes the device to be configured will
|
modification, only if root authorizes the device to be configured will
|
||||||
then it be possible to use it.
|
then it be possible to use it.
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ Loading can be done as shown below:
|
||||||
|
|
||||||
[root@localhost home]# modprobe sn9c102
|
[root@localhost home]# modprobe sn9c102
|
||||||
|
|
||||||
Note that the module is called "sn9c102" for historic reasons, althought it
|
Note that the module is called "sn9c102" for historic reasons, although it
|
||||||
does not just support the SN9C102.
|
does not just support the SN9C102.
|
||||||
|
|
||||||
At this point all the devices supported by the driver and connected to the USB
|
At this point all the devices supported by the driver and connected to the USB
|
||||||
|
|
|
@ -77,7 +77,7 @@ memory that is preset in system at this time. System administrators may want
|
||||||
to put this command in one of the local rc init files. This will enable the
|
to put this command in one of the local rc init files. This will enable the
|
||||||
kernel to request huge pages early in the boot process (when the possibility
|
kernel to request huge pages early in the boot process (when the possibility
|
||||||
of getting physical contiguous pages is still very high). In either
|
of getting physical contiguous pages is still very high). In either
|
||||||
case, adminstrators will want to verify the number of hugepages actually
|
case, administrators will want to verify the number of hugepages actually
|
||||||
allocated by checking the sysctl or meminfo.
|
allocated by checking the sysctl or meminfo.
|
||||||
|
|
||||||
/proc/sys/vm/nr_overcommit_hugepages indicates how large the pool of
|
/proc/sys/vm/nr_overcommit_hugepages indicates how large the pool of
|
||||||
|
|
|
@ -58,7 +58,7 @@ most general to most specific:
|
||||||
the policy at the time they were allocated.
|
the policy at the time they were allocated.
|
||||||
|
|
||||||
VMA Policy: A "VMA" or "Virtual Memory Area" refers to a range of a task's
|
VMA Policy: A "VMA" or "Virtual Memory Area" refers to a range of a task's
|
||||||
virtual adddress space. A task may define a specific policy for a range
|
virtual address space. A task may define a specific policy for a range
|
||||||
of its virtual address space. See the MEMORY POLICIES APIS section,
|
of its virtual address space. See the MEMORY POLICIES APIS section,
|
||||||
below, for an overview of the mbind() system call used to set a VMA
|
below, for an overview of the mbind() system call used to set a VMA
|
||||||
policy.
|
policy.
|
||||||
|
@ -353,7 +353,7 @@ follows:
|
||||||
|
|
||||||
Because of this extra reference counting, and because we must lookup
|
Because of this extra reference counting, and because we must lookup
|
||||||
shared policies in a tree structure under spinlock, shared policies are
|
shared policies in a tree structure under spinlock, shared policies are
|
||||||
more expensive to use in the page allocation path. This is expecially
|
more expensive to use in the page allocation path. This is especially
|
||||||
true for shared policies on shared memory regions shared by tasks running
|
true for shared policies on shared memory regions shared by tasks running
|
||||||
on different NUMA nodes. This extra overhead can be avoided by always
|
on different NUMA nodes. This extra overhead can be avoided by always
|
||||||
falling back to task or system default policy for shared memory regions,
|
falling back to task or system default policy for shared memory regions,
|
||||||
|
|
|
@ -114,6 +114,6 @@ CREDITS
|
||||||
|
|
||||||
Original impetus and research by Randy Dunlap
|
Original impetus and research by Randy Dunlap
|
||||||
Written by Jonathan Corbet
|
Written by Jonathan Corbet
|
||||||
Improvements via coments from Satyam Sharma, Johannes Stezenbach, Jesper
|
Improvements via comments from Satyam Sharma, Johannes Stezenbach, Jesper
|
||||||
Juhl, Heikki Orsila, H. Peter Anvin, Philipp Hahn, and Stefan
|
Juhl, Heikki Orsila, H. Peter Anvin, Philipp Hahn, and Stefan
|
||||||
Richter.
|
Richter.
|
||||||
|
|
3
Kbuild
3
Kbuild
|
@ -43,7 +43,7 @@ $(obj)/$(bounds-file): kernel/bounds.s Kbuild
|
||||||
# 2) Generate asm-offsets.h
|
# 2) Generate asm-offsets.h
|
||||||
#
|
#
|
||||||
|
|
||||||
offsets-file := include/asm-$(SRCARCH)/asm-offsets.h
|
offsets-file := include/asm/asm-offsets.h
|
||||||
|
|
||||||
always += $(offsets-file)
|
always += $(offsets-file)
|
||||||
targets += $(offsets-file)
|
targets += $(offsets-file)
|
||||||
|
@ -81,7 +81,6 @@ arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
|
||||||
$(call if_changed_dep,cc_s_c)
|
$(call if_changed_dep,cc_s_c)
|
||||||
|
|
||||||
$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
|
$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
|
||||||
$(Q)mkdir -p $(dir $@)
|
|
||||||
$(call cmd,offsets)
|
$(call cmd,offsets)
|
||||||
|
|
||||||
#####
|
#####
|
||||||
|
|
|
@ -3123,6 +3123,12 @@ W: http://oss.oracle.com/projects/ocfs2/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
|
OMFS FILESYSTEM
|
||||||
|
P: Bob Copeland
|
||||||
|
M: me@bobcopeland.com
|
||||||
|
L: linux-karma-devel@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
OMNIKEY CARDMAN 4000 DRIVER
|
OMNIKEY CARDMAN 4000 DRIVER
|
||||||
P: Harald Welte
|
P: Harald Welte
|
||||||
M: laforge@gnumonks.org
|
M: laforge@gnumonks.org
|
||||||
|
|
115
Makefile
115
Makefile
|
@ -205,6 +205,9 @@ ifeq ($(ARCH),x86_64)
|
||||||
SRCARCH := x86
|
SRCARCH := x86
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Where to locate arch specific headers
|
||||||
|
hdr-arch := $(SRCARCH)
|
||||||
|
|
||||||
KCONFIG_CONFIG ?= .config
|
KCONFIG_CONFIG ?= .config
|
||||||
|
|
||||||
# SHELL used by kbuild
|
# SHELL used by kbuild
|
||||||
|
@ -326,7 +329,8 @@ AFLAGS_KERNEL =
|
||||||
# Needed to be compatible with the O= option
|
# Needed to be compatible with the O= option
|
||||||
LINUXINCLUDE := -Iinclude \
|
LINUXINCLUDE := -Iinclude \
|
||||||
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
||||||
-include include/linux/autoconf.h
|
-I$(srctree)/arch/$(hdr-arch)/include \
|
||||||
|
-include include/linux/autoconf.h
|
||||||
|
|
||||||
KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
KBUILD_CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
||||||
|
|
||||||
|
@ -922,7 +926,9 @@ ifneq ($(KBUILD_SRC),)
|
||||||
/bin/false; \
|
/bin/false; \
|
||||||
fi;
|
fi;
|
||||||
$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
|
$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
|
||||||
$(Q)ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm
|
$(Q)if [ -e $(srctree)/include/asm-$(SRCARCH)/system.h ]; then \
|
||||||
|
ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
|
||||||
|
fi
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# prepare2 creates a makefile if using a separate output directory
|
# prepare2 creates a makefile if using a separate output directory
|
||||||
|
@ -948,22 +954,34 @@ export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
|
||||||
|
|
||||||
# The asm symlink changes when $(ARCH) changes.
|
# The asm symlink changes when $(ARCH) changes.
|
||||||
# Detect this and ask user to run make mrproper
|
# Detect this and ask user to run make mrproper
|
||||||
|
define check-symlink
|
||||||
include/asm: FORCE
|
set -e; \
|
||||||
$(Q)set -e; asmlink=`readlink include/asm | cut -d '-' -f 2`; \
|
if [ -L include/asm ]; then \
|
||||||
if [ -L include/asm ]; then \
|
asmlink=`readlink include/asm | cut -d '-' -f 2`; \
|
||||||
if [ "$$asmlink" != "$(SRCARCH)" ]; then \
|
if [ "$$asmlink" != "$(SRCARCH)" ]; then \
|
||||||
echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
|
echo "ERROR: the symlink $@ points to asm-$$asmlink but asm-$(SRCARCH) was expected"; \
|
||||||
echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
|
echo " set ARCH or save .config and run 'make mrproper' to fix it"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
else \
|
|
||||||
echo ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
|
|
||||||
if [ ! -d include ]; then \
|
|
||||||
mkdir -p include; \
|
|
||||||
fi; \
|
|
||||||
ln -fsn asm-$(SRCARCH) $@; \
|
|
||||||
fi
|
fi
|
||||||
|
endef
|
||||||
|
|
||||||
|
# We create the target directory of the symlink if it does
|
||||||
|
# not exist so the test in chack-symlink works and we have a
|
||||||
|
# directory for generated filesas used by some architectures.
|
||||||
|
define create-symlink
|
||||||
|
if [ ! -L include/asm ]; then \
|
||||||
|
echo ' SYMLINK $@ -> include/asm-$(SRCARCH)'; \
|
||||||
|
if [ ! -d include/asm-$(SRCARCH) ]; then \
|
||||||
|
mkdir -p include/asm-$(SRCARCH); \
|
||||||
|
fi; \
|
||||||
|
ln -fsn asm-$(SRCARCH) $@; \
|
||||||
|
fi
|
||||||
|
endef
|
||||||
|
|
||||||
|
include/asm: FORCE
|
||||||
|
$(Q)$(check-symlink)
|
||||||
|
$(Q)$(create-symlink)
|
||||||
|
|
||||||
# Generate some files
|
# Generate some files
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
@ -1010,36 +1028,43 @@ firmware_install: FORCE
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Kernel headers
|
# Kernel headers
|
||||||
INSTALL_HDR_PATH=$(objtree)/usr
|
|
||||||
export INSTALL_HDR_PATH
|
|
||||||
|
|
||||||
HDRFILTER=generic i386 x86_64
|
#Default location for installed headers
|
||||||
HDRARCHES=$(filter-out $(HDRFILTER),$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
|
export INSTALL_HDR_PATH = $(objtree)/usr
|
||||||
|
|
||||||
|
hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
|
||||||
|
# Find out where the Kbuild file is located to support
|
||||||
|
# arch/$(ARCH)/include/asm
|
||||||
|
hdr-dir = $(strip \
|
||||||
|
$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild), \
|
||||||
|
arch/$(hdr-arch)/include/asm, include/asm-$(hdr-arch)))
|
||||||
|
|
||||||
|
# If we do an all arch process set dst to asm-$(hdr-arch)
|
||||||
|
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
||||||
|
|
||||||
|
PHONY += __headers
|
||||||
|
__headers: include/linux/version.h scripts_basic FORCE
|
||||||
|
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
||||||
|
|
||||||
PHONY += headers_install_all
|
PHONY += headers_install_all
|
||||||
headers_install_all: include/linux/version.h scripts_basic FORCE
|
headers_install_all:
|
||||||
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install
|
||||||
$(Q)for arch in $(HDRARCHES); do \
|
|
||||||
$(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\
|
|
||||||
done
|
|
||||||
|
|
||||||
PHONY += headers_install
|
PHONY += headers_install
|
||||||
headers_install: include/linux/version.h scripts_basic FORCE
|
headers_install: __headers
|
||||||
@if [ ! -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
$(if $(wildcard $(srctree)/$(hdr-dir)/Kbuild),, \
|
||||||
echo '*** Error: Headers not exportable for this architecture ($(SRCARCH))'; \
|
$(error Headers not exportable for the $(SRCARCH) architecture))
|
||||||
exit 1 ; fi
|
$(Q)$(MAKE) $(hdr-inst)=include
|
||||||
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
$(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst)
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include
|
|
||||||
|
|
||||||
PHONY += headers_check_all
|
PHONY += headers_check_all
|
||||||
headers_check_all: headers_install_all
|
headers_check_all: headers_install_all
|
||||||
$(Q)for arch in $(HDRARCHES); do \
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check
|
||||||
$(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch HDRCHECK=1 ;\
|
|
||||||
done
|
|
||||||
|
|
||||||
PHONY += headers_check
|
PHONY += headers_check
|
||||||
headers_check: headers_install
|
headers_check: headers_install
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst ARCH=$(SRCARCH) obj=include HDRCHECK=1
|
$(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1
|
||||||
|
$(Q)$(MAKE) $(hdr-inst)=$(hdr-dir) $(hdr-dst) HDRCHECK=1
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Modules
|
# Modules
|
||||||
|
@ -1131,7 +1156,7 @@ MRPROPER_FILES += .config .config.old include/asm .version .old_version \
|
||||||
include/linux/autoconf.h include/linux/version.h \
|
include/linux/autoconf.h include/linux/version.h \
|
||||||
include/linux/utsrelease.h \
|
include/linux/utsrelease.h \
|
||||||
include/linux/bounds.h include/asm*/asm-offsets.h \
|
include/linux/bounds.h include/asm*/asm-offsets.h \
|
||||||
Module.symvers tags TAGS cscope*
|
Module.symvers Module.markers tags TAGS cscope*
|
||||||
|
|
||||||
# clean - Delete most, but leave enough to build external modules
|
# clean - Delete most, but leave enough to build external modules
|
||||||
#
|
#
|
||||||
|
@ -1150,7 +1175,7 @@ clean: archclean $(clean-dirs)
|
||||||
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
\( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
|
||||||
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
|
||||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||||
-o -name 'Module.markers' \) \
|
-o -name 'Module.markers' -o -name '.tmp_*.o.*' \) \
|
||||||
-type f -print | xargs rm -f
|
-type f -print | xargs rm -f
|
||||||
|
|
||||||
# mrproper - Delete all generated files, including .config
|
# mrproper - Delete all generated files, including .config
|
||||||
|
@ -1224,21 +1249,17 @@ help:
|
||||||
@echo ' cscope - Generate cscope index'
|
@echo ' cscope - Generate cscope index'
|
||||||
@echo ' kernelrelease - Output the release version string'
|
@echo ' kernelrelease - Output the release version string'
|
||||||
@echo ' kernelversion - Output the version stored in Makefile'
|
@echo ' kernelversion - Output the version stored in Makefile'
|
||||||
@if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
@echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
|
||||||
echo ' headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
|
|
||||||
echo ' (default: $(INSTALL_HDR_PATH))'; \
|
echo ' (default: $(INSTALL_HDR_PATH))'; \
|
||||||
fi
|
echo ''
|
||||||
@echo ''
|
|
||||||
@echo 'Static analysers'
|
@echo 'Static analysers'
|
||||||
@echo ' checkstack - Generate a list of stack hogs'
|
@echo ' checkstack - Generate a list of stack hogs'
|
||||||
@echo ' namespacecheck - Name space analysis on compiled kernel'
|
@echo ' namespacecheck - Name space analysis on compiled kernel'
|
||||||
@echo ' versioncheck - Sanity check on version.h usage'
|
@echo ' versioncheck - Sanity check on version.h usage'
|
||||||
@echo ' includecheck - Check for duplicate included header files'
|
@echo ' includecheck - Check for duplicate included header files'
|
||||||
@echo ' export_report - List the usages of all exported symbols'
|
@echo ' export_report - List the usages of all exported symbols'
|
||||||
@if [ -r $(srctree)/include/asm-$(SRCARCH)/Kbuild ]; then \
|
@echo ' headers_check - Sanity check on exported headers'; \
|
||||||
echo ' headers_check - Sanity check on exported headers'; \
|
echo ''
|
||||||
fi
|
|
||||||
@echo ''
|
|
||||||
@echo 'Kernel packaging:'
|
@echo 'Kernel packaging:'
|
||||||
@$(MAKE) $(build)=$(package-dir) help
|
@$(MAKE) $(build)=$(package-dir) help
|
||||||
@echo ''
|
@echo ''
|
||||||
|
@ -1411,7 +1432,11 @@ define find-sources
|
||||||
\( -name config -o -name 'asm-*' \) -prune \
|
\( -name config -o -name 'asm-*' \) -prune \
|
||||||
-o -name $1 -print; \
|
-o -name $1 -print; \
|
||||||
for arch in $(ALLINCLUDE_ARCHS) ; do \
|
for arch in $(ALLINCLUDE_ARCHS) ; do \
|
||||||
find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
|
test -e $(__srctree)include/asm-$${arch} && \
|
||||||
|
find $(__srctree)include/asm-$${arch} $(RCS_FIND_IGNORE) \
|
||||||
|
-name $1 -print; \
|
||||||
|
test -e $(__srctree)arch/$${arch}/include/asm && \
|
||||||
|
find $(__srctree)arch/$${arch}/include/asm $(RCS_FIND_IGNORE) \
|
||||||
-name $1 -print; \
|
-name $1 -print; \
|
||||||
done ; \
|
done ; \
|
||||||
find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
|
find $(__srctree)include/asm-generic $(RCS_FIND_IGNORE) \
|
||||||
|
|
18
arch/Kconfig
18
arch/Kconfig
|
@ -59,6 +59,24 @@ config HAVE_KPROBES
|
||||||
config HAVE_KRETPROBES
|
config HAVE_KRETPROBES
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
#
|
||||||
|
# An arch should select this if it provides all these things:
|
||||||
|
#
|
||||||
|
# task_pt_regs() in asm/processor.h or asm/ptrace.h
|
||||||
|
# arch_has_single_step() if there is hardware single-step support
|
||||||
|
# arch_has_block_step() if there is hardware block-step support
|
||||||
|
# arch_ptrace() and not #define __ARCH_SYS_PTRACE
|
||||||
|
# compat_arch_ptrace() and #define __ARCH_WANT_COMPAT_SYS_PTRACE
|
||||||
|
# asm/syscall.h supplying asm-generic/syscall.h interface
|
||||||
|
# linux/regset.h user_regset interfaces
|
||||||
|
# CORE_DUMP_USE_REGSET #define'd in linux/elf.h
|
||||||
|
# TIF_SYSCALL_TRACE calls tracehook_report_syscall_{entry,exit}
|
||||||
|
# TIF_NOTIFY_RESUME calls tracehook_notify_resume()
|
||||||
|
# signal delivery calls tracehook_signal_handler()
|
||||||
|
#
|
||||||
|
config HAVE_ARCH_TRACEHOOK
|
||||||
|
def_bool n
|
||||||
|
|
||||||
config HAVE_DMA_ATTRS
|
config HAVE_DMA_ATTRS
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
|
|
@ -253,15 +253,15 @@ do_osf_statfs(struct dentry * dentry, struct osf_statfs __user *buffer,
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage int
|
asmlinkage int
|
||||||
osf_statfs(char __user *path, struct osf_statfs __user *buffer, unsigned long bufsiz)
|
osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz)
|
||||||
{
|
{
|
||||||
struct nameidata nd;
|
struct path path;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
retval = user_path_walk(path, &nd);
|
retval = user_path(pathname, &path);
|
||||||
if (!retval) {
|
if (!retval) {
|
||||||
retval = do_osf_statfs(nd.path.dentry, buffer, bufsiz);
|
retval = do_osf_statfs(path.dentry, buffer, bufsiz);
|
||||||
path_put(&nd.path);
|
path_put(&path);
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,36 +94,6 @@ __bad_page(void)
|
||||||
return pte_mkdirty(mk_pte(virt_to_page(EMPTY_PGE), PAGE_SHARED));
|
return pte_mkdirty(mk_pte(virt_to_page(EMPTY_PGE), PAGE_SHARED));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_DISCONTIGMEM
|
|
||||||
void
|
|
||||||
show_mem(void)
|
|
||||||
{
|
|
||||||
long i,free = 0,total = 0,reserved = 0;
|
|
||||||
long shared = 0, cached = 0;
|
|
||||||
|
|
||||||
printk("\nMem-info:\n");
|
|
||||||
show_free_areas();
|
|
||||||
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
|
|
||||||
i = max_mapnr;
|
|
||||||
while (i-- > 0) {
|
|
||||||
total++;
|
|
||||||
if (PageReserved(mem_map+i))
|
|
||||||
reserved++;
|
|
||||||
else if (PageSwapCache(mem_map+i))
|
|
||||||
cached++;
|
|
||||||
else if (!page_count(mem_map+i))
|
|
||||||
free++;
|
|
||||||
else
|
|
||||||
shared += page_count(mem_map + i) - 1;
|
|
||||||
}
|
|
||||||
printk("%ld pages of RAM\n",total);
|
|
||||||
printk("%ld free pages\n",free);
|
|
||||||
printk("%ld reserved pages\n",reserved);
|
|
||||||
printk("%ld pages shared\n",shared);
|
|
||||||
printk("%ld pages swap cached\n",cached);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long
|
||||||
load_PCB(struct pcb_struct *pcb)
|
load_PCB(struct pcb_struct *pcb)
|
||||||
{
|
{
|
||||||
|
|
|
@ -359,38 +359,3 @@ void __init mem_init(void)
|
||||||
mem_stress();
|
mem_stress();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
show_mem(void)
|
|
||||||
{
|
|
||||||
long i,free = 0,total = 0,reserved = 0;
|
|
||||||
long shared = 0, cached = 0;
|
|
||||||
int nid;
|
|
||||||
|
|
||||||
printk("\nMem-info:\n");
|
|
||||||
show_free_areas();
|
|
||||||
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
|
|
||||||
for_each_online_node(nid) {
|
|
||||||
unsigned long flags;
|
|
||||||
pgdat_resize_lock(NODE_DATA(nid), &flags);
|
|
||||||
i = node_spanned_pages(nid);
|
|
||||||
while (i-- > 0) {
|
|
||||||
struct page *page = nid_page_nr(nid, i);
|
|
||||||
total++;
|
|
||||||
if (PageReserved(page))
|
|
||||||
reserved++;
|
|
||||||
else if (PageSwapCache(page))
|
|
||||||
cached++;
|
|
||||||
else if (!page_count(page))
|
|
||||||
free++;
|
|
||||||
else
|
|
||||||
shared += page_count(page) - 1;
|
|
||||||
}
|
|
||||||
pgdat_resize_unlock(NODE_DATA(nid), &flags);
|
|
||||||
}
|
|
||||||
printk("%ld pages of RAM\n",total);
|
|
||||||
printk("%ld free pages\n",free);
|
|
||||||
printk("%ld reserved pages\n",reserved);
|
|
||||||
printk("%ld pages shared\n",shared);
|
|
||||||
printk("%ld pages swap cached\n",cached);
|
|
||||||
}
|
|
||||||
|
|
|
@ -314,7 +314,7 @@ config ARCH_IOP32X
|
||||||
select PLAT_IOP
|
select PLAT_IOP
|
||||||
select PCI
|
select PCI
|
||||||
select GENERIC_GPIO
|
select GENERIC_GPIO
|
||||||
select HAVE_GPIO_LIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
help
|
help
|
||||||
Support for Intel's 80219 and IOP32X (XScale) family of
|
Support for Intel's 80219 and IOP32X (XScale) family of
|
||||||
processors.
|
processors.
|
||||||
|
@ -325,7 +325,7 @@ config ARCH_IOP33X
|
||||||
select PLAT_IOP
|
select PLAT_IOP
|
||||||
select PCI
|
select PCI
|
||||||
select GENERIC_GPIO
|
select GENERIC_GPIO
|
||||||
select HAVE_GPIO_LIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
help
|
help
|
||||||
Support for Intel's IOP33X (XScale) family of processors.
|
Support for Intel's IOP33X (XScale) family of processors.
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@ config ARCH_MXC
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select ARCH_MTD_XIP
|
select ARCH_MTD_XIP
|
||||||
select GENERIC_GPIO
|
select GENERIC_GPIO
|
||||||
select HAVE_GPIO_LIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
help
|
help
|
||||||
Support for Freescale MXC/iMX-based family of processors
|
Support for Freescale MXC/iMX-based family of processors
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi
|
||||||
tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
|
tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
|
||||||
tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM946T) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
|
tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
|
||||||
tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
|
||||||
|
|
|
@ -280,7 +280,7 @@ unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
|
||||||
/*
|
/*
|
||||||
* Trying to unmap an invalid mapping
|
* Trying to unmap an invalid mapping
|
||||||
*/
|
*/
|
||||||
if (dma_mapping_error(dma_addr)) {
|
if (dma_mapping_error(dev, dma_addr)) {
|
||||||
dev_err(dev, "Trying to unmap invalid mapping\n");
|
dev_err(dev, "Trying to unmap invalid mapping\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,17 +331,17 @@ static int locomo_gpio_type(unsigned int irq, unsigned int type)
|
||||||
|
|
||||||
mask = 1 << (irq - LOCOMO_IRQ_GPIO_START);
|
mask = 1 << (irq - LOCOMO_IRQ_GPIO_START);
|
||||||
|
|
||||||
if (type == IRQT_PROBE) {
|
if (type == IRQ_TYPE_PROBE) {
|
||||||
if ((GPIO_IRQ_rising_edge | GPIO_IRQ_falling_edge) & mask)
|
if ((GPIO_IRQ_rising_edge | GPIO_IRQ_falling_edge) & mask)
|
||||||
return 0;
|
return 0;
|
||||||
type = __IRQT_RISEDGE | __IRQT_FALEDGE;
|
type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type & __IRQT_RISEDGE)
|
if (type & IRQ_TYPE_EDGE_RISING)
|
||||||
GPIO_IRQ_rising_edge |= mask;
|
GPIO_IRQ_rising_edge |= mask;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_rising_edge &= ~mask;
|
GPIO_IRQ_rising_edge &= ~mask;
|
||||||
if (type & __IRQT_FALEDGE)
|
if (type & IRQ_TYPE_EDGE_FALLING)
|
||||||
GPIO_IRQ_falling_edge |= mask;
|
GPIO_IRQ_falling_edge |= mask;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_falling_edge &= ~mask;
|
GPIO_IRQ_falling_edge &= ~mask;
|
||||||
|
@ -473,7 +473,7 @@ static void locomo_setup_irq(struct locomo *lchip)
|
||||||
/*
|
/*
|
||||||
* Install handler for IRQ_LOCOMO_HW.
|
* Install handler for IRQ_LOCOMO_HW.
|
||||||
*/
|
*/
|
||||||
set_irq_type(lchip->irq, IRQT_FALLING);
|
set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
|
||||||
set_irq_chip_data(lchip->irq, irqbase);
|
set_irq_chip_data(lchip->irq, irqbase);
|
||||||
set_irq_chained_handler(lchip->irq, locomo_handler);
|
set_irq_chained_handler(lchip->irq, locomo_handler);
|
||||||
|
|
||||||
|
|
|
@ -241,14 +241,14 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
|
||||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||||
unsigned long ip0;
|
unsigned long ip0;
|
||||||
|
|
||||||
if (flags == IRQT_PROBE)
|
if (flags == IRQ_TYPE_PROBE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((!(flags & __IRQT_RISEDGE) ^ !(flags & __IRQT_FALEDGE)) == 0)
|
if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ip0 = sa1111_readl(mapbase + SA1111_INTPOL0);
|
ip0 = sa1111_readl(mapbase + SA1111_INTPOL0);
|
||||||
if (flags & __IRQT_RISEDGE)
|
if (flags & IRQ_TYPE_EDGE_RISING)
|
||||||
ip0 &= ~mask;
|
ip0 &= ~mask;
|
||||||
else
|
else
|
||||||
ip0 |= mask;
|
ip0 |= mask;
|
||||||
|
@ -338,14 +338,14 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
|
||||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||||
unsigned long ip1;
|
unsigned long ip1;
|
||||||
|
|
||||||
if (flags == IRQT_PROBE)
|
if (flags == IRQ_TYPE_PROBE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((!(flags & __IRQT_RISEDGE) ^ !(flags & __IRQT_FALEDGE)) == 0)
|
if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ip1 = sa1111_readl(mapbase + SA1111_INTPOL1);
|
ip1 = sa1111_readl(mapbase + SA1111_INTPOL1);
|
||||||
if (flags & __IRQT_RISEDGE)
|
if (flags & IRQ_TYPE_EDGE_RISING)
|
||||||
ip1 &= ~mask;
|
ip1 &= ~mask;
|
||||||
else
|
else
|
||||||
ip1 |= mask;
|
ip1 |= mask;
|
||||||
|
@ -427,7 +427,7 @@ static void sa1111_setup_irq(struct sa1111 *sachip)
|
||||||
/*
|
/*
|
||||||
* Register SA1111 interrupt
|
* Register SA1111 interrupt
|
||||||
*/
|
*/
|
||||||
set_irq_type(sachip->irq, IRQT_RISING);
|
set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING);
|
||||||
set_irq_data(sachip->irq, irqbase);
|
set_irq_data(sachip->irq, irqbase);
|
||||||
set_irq_chained_handler(sachip->irq, sa1111_irq_handler);
|
set_irq_chained_handler(sachip->irq, sa1111_irq_handler);
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -377,7 +377,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -395,7 +395,7 @@ static struct resource nand_resources[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91cap9_nand_device = {
|
static struct platform_device at91cap9_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -404,7 +404,7 @@ static struct platform_device at91cap9_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned long csa, mode;
|
unsigned long csa, mode;
|
||||||
|
|
||||||
|
@ -445,7 +445,7 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
platform_device_register(&at91cap9_nand_device);
|
platform_device_register(&at91cap9_nand_device);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -369,7 +369,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -382,7 +382,7 @@ static struct resource nand_resources[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91rm9200_nand_device = {
|
static struct platform_device at91rm9200_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -391,7 +391,7 @@ static struct platform_device at91rm9200_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned int csa;
|
unsigned int csa;
|
||||||
|
|
||||||
|
@ -429,7 +429,7 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
platform_device_register(&at91rm9200_nand_device);
|
platform_device_register(&at91rm9200_nand_device);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -284,7 +284,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ static struct resource nand_resources[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91sam9260_nand_device = {
|
static struct platform_device at91sam9260_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -311,7 +311,7 @@ static struct platform_device at91sam9260_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned long csa, mode;
|
unsigned long csa, mode;
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
platform_device_register(&at91sam9260_nand_device);
|
platform_device_register(&at91sam9260_nand_device);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -211,8 +211,8 @@ static struct resource nand_resources[] = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91_nand_device = {
|
static struct platform_device atmel_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -221,7 +221,7 @@ static struct platform_device at91_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned long csa, mode;
|
unsigned long csa, mode;
|
||||||
|
|
||||||
|
@ -262,11 +262,11 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */
|
at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */
|
||||||
|
|
||||||
nand_data = *data;
|
nand_data = *data;
|
||||||
platform_device_register(&at91_nand_device);
|
platform_device_register(&atmel_nand_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -353,7 +353,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ static struct resource nand_resources[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91sam9263_nand_device = {
|
static struct platform_device at91sam9263_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -380,7 +380,7 @@ static struct platform_device at91sam9263_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned long csa, mode;
|
unsigned long csa, mode;
|
||||||
|
|
||||||
|
@ -421,7 +421,7 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
platform_device_register(&at91sam9263_nand_device);
|
platform_device_register(&at91sam9263_nand_device);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -195,7 +195,7 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
* -------------------------------------------------------------------- */
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||||
static struct at91_nand_data nand_data;
|
static struct atmel_nand_data nand_data;
|
||||||
|
|
||||||
#define NAND_BASE AT91_CHIPSELECT_3
|
#define NAND_BASE AT91_CHIPSELECT_3
|
||||||
|
|
||||||
|
@ -212,8 +212,8 @@ static struct resource nand_resources[] = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91_nand_device = {
|
static struct platform_device atmel_nand_device = {
|
||||||
.name = "at91_nand",
|
.name = "atmel_nand",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &nand_data,
|
.platform_data = &nand_data,
|
||||||
|
@ -222,7 +222,7 @@ static struct platform_device at91_nand_device = {
|
||||||
.num_resources = ARRAY_SIZE(nand_resources),
|
.num_resources = ARRAY_SIZE(nand_resources),
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
void __init at91_add_device_nand(struct atmel_nand_data *data)
|
||||||
{
|
{
|
||||||
unsigned long csa;
|
unsigned long csa;
|
||||||
|
|
||||||
|
@ -259,11 +259,11 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||||
at91_set_A_periph(AT91_PIN_PB5, 0); /* NANDWE */
|
at91_set_A_periph(AT91_PIN_PB5, 0); /* NANDWE */
|
||||||
|
|
||||||
nand_data = *data;
|
nand_data = *data;
|
||||||
platform_device_register(&at91_nand_device);
|
platform_device_register(&atmel_nand_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
void __init at91_add_device_nand(struct atmel_nand_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return cam60_nand_partition;
|
return cam60_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata cam60_nand_data = {
|
static struct atmel_nand_data __initdata cam60_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not there
|
// .det_pin = ... not there
|
||||||
|
|
|
@ -181,7 +181,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return cap9adk_nand_partitions;
|
return cap9adk_nand_partitions;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata cap9adk_nand_data = {
|
static struct atmel_nand_data __initdata cap9adk_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
@ -330,10 +330,10 @@ static void __init cap9adk_board_init(void)
|
||||||
/* Serial */
|
/* Serial */
|
||||||
at91_add_device_serial();
|
at91_add_device_serial();
|
||||||
/* USB Host */
|
/* USB Host */
|
||||||
set_irq_type(AT91CAP9_ID_UHP, IRQT_HIGH);
|
set_irq_type(AT91CAP9_ID_UHP, IRQ_TYPE_LEVEL_HIGH);
|
||||||
at91_add_device_usbh(&cap9adk_usbh_data);
|
at91_add_device_usbh(&cap9adk_usbh_data);
|
||||||
/* USB HS */
|
/* USB HS */
|
||||||
set_irq_type(AT91CAP9_ID_UDPHS, IRQT_HIGH);
|
set_irq_type(AT91CAP9_ID_UDPHS, IRQ_TYPE_LEVEL_HIGH);
|
||||||
at91_add_device_usba(&cap9adk_usba_udc_data);
|
at91_add_device_usba(&cap9adk_usba_udc_data);
|
||||||
/* SPI */
|
/* SPI */
|
||||||
at91_add_device_spi(cap9adk_spi_devices, ARRAY_SIZE(cap9adk_spi_devices));
|
at91_add_device_spi(cap9adk_spi_devices, ARRAY_SIZE(cap9adk_spi_devices));
|
||||||
|
@ -350,7 +350,7 @@ static void __init cap9adk_board_init(void)
|
||||||
/* I2C */
|
/* I2C */
|
||||||
at91_add_device_i2c(NULL, 0);
|
at91_add_device_i2c(NULL, 0);
|
||||||
/* LCD Controller */
|
/* LCD Controller */
|
||||||
set_irq_type(AT91CAP9_ID_LCDC, IRQT_HIGH);
|
set_irq_type(AT91CAP9_ID_LCDC, IRQ_TYPE_LEVEL_HIGH);
|
||||||
at91_add_device_lcdc(&cap9adk_lcdc_data);
|
at91_add_device_lcdc(&cap9adk_lcdc_data);
|
||||||
/* AC97 */
|
/* AC97 */
|
||||||
at91_add_device_ac97(&cap9adk_ac97_data);
|
at91_add_device_ac97(&cap9adk_ac97_data);
|
||||||
|
|
|
@ -147,7 +147,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return dk_nand_partition;
|
return dk_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata dk_nand_data = {
|
static struct atmel_nand_data __initdata dk_nand_data = {
|
||||||
.ale = 22,
|
.ale = 22,
|
||||||
.cle = 21,
|
.cle = 21,
|
||||||
.det_pin = AT91_PIN_PB1,
|
.det_pin = AT91_PIN_PB1,
|
||||||
|
|
|
@ -105,7 +105,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return kb9202_nand_partition;
|
return kb9202_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata kb9202_nand_data = {
|
static struct atmel_nand_data __initdata kb9202_nand_data = {
|
||||||
.ale = 22,
|
.ale = 22,
|
||||||
.cle = 21,
|
.cle = 21,
|
||||||
// .det_pin = ... not there
|
// .det_pin = ... not there
|
||||||
|
|
|
@ -141,7 +141,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return ek_nand_partition;
|
return ek_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata ek_nand_data = {
|
static struct atmel_nand_data __initdata ek_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -178,7 +178,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return ek_nand_partition;
|
return ek_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata ek_nand_data = {
|
static struct atmel_nand_data __initdata ek_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -183,7 +183,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return ek_nand_partition;
|
return ek_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata ek_nand_data = {
|
static struct atmel_nand_data __initdata ek_nand_data = {
|
||||||
.ale = 22,
|
.ale = 22,
|
||||||
.cle = 21,
|
.cle = 21,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -187,7 +187,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return ek_nand_partition;
|
return ek_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata ek_nand_data = {
|
static struct atmel_nand_data __initdata ek_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -96,7 +96,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return ek_nand_partition;
|
return ek_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata ek_nand_data = {
|
static struct atmel_nand_data __initdata ek_nand_data = {
|
||||||
.ale = 21,
|
.ale = 21,
|
||||||
.cle = 22,
|
.cle = 22,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -180,7 +180,7 @@ static struct mtd_partition * __init nand_partitions(int size, int *num_partitio
|
||||||
return yl9200_nand_partition;
|
return yl9200_nand_partition;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct at91_nand_data __initdata yl9200_nand_data = {
|
static struct atmel_nand_data __initdata yl9200_nand_data = {
|
||||||
.ale = 6,
|
.ale = 6,
|
||||||
.cle = 7,
|
.cle = 7,
|
||||||
// .det_pin = ... not connected
|
// .det_pin = ... not connected
|
||||||
|
|
|
@ -56,19 +56,19 @@ static int at91_aic_set_type(unsigned irq, unsigned type)
|
||||||
unsigned int smr, srctype;
|
unsigned int smr, srctype;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
srctype = AT91_AIC_SRCTYPE_HIGH;
|
srctype = AT91_AIC_SRCTYPE_HIGH;
|
||||||
break;
|
break;
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
srctype = AT91_AIC_SRCTYPE_RISING;
|
srctype = AT91_AIC_SRCTYPE_RISING;
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
if ((irq == AT91_ID_FIQ) || is_extern_irq(irq)) /* only supported on external interrupts */
|
if ((irq == AT91_ID_FIQ) || is_extern_irq(irq)) /* only supported on external interrupts */
|
||||||
srctype = AT91_AIC_SRCTYPE_LOW;
|
srctype = AT91_AIC_SRCTYPE_LOW;
|
||||||
else
|
else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
if ((irq == AT91_ID_FIQ) || is_extern_irq(irq)) /* only supported on external interrupts */
|
if ((irq == AT91_ID_FIQ) || is_extern_irq(irq)) /* only supported on external interrupts */
|
||||||
srctype = AT91_AIC_SRCTYPE_FALLING;
|
srctype = AT91_AIC_SRCTYPE_FALLING;
|
||||||
else
|
else
|
||||||
|
|
|
@ -226,7 +226,7 @@ static void ep93xx_gpio_irq_ack(unsigned int irq)
|
||||||
int port = line >> 3;
|
int port = line >> 3;
|
||||||
int port_mask = 1 << (line & 7);
|
int port_mask = 1 << (line & 7);
|
||||||
|
|
||||||
if ((irq_desc[irq].status & IRQ_TYPE_SENSE_MASK) == IRQT_BOTHEDGE) {
|
if ((irq_desc[irq].status & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) {
|
||||||
gpio_int_type2[port] ^= port_mask; /* switch edge direction */
|
gpio_int_type2[port] ^= port_mask; /* switch edge direction */
|
||||||
ep93xx_gpio_update_int_params(port);
|
ep93xx_gpio_update_int_params(port);
|
||||||
}
|
}
|
||||||
|
@ -240,7 +240,7 @@ static void ep93xx_gpio_irq_mask_ack(unsigned int irq)
|
||||||
int port = line >> 3;
|
int port = line >> 3;
|
||||||
int port_mask = 1 << (line & 7);
|
int port_mask = 1 << (line & 7);
|
||||||
|
|
||||||
if ((irq_desc[irq].status & IRQ_TYPE_SENSE_MASK) == IRQT_BOTHEDGE)
|
if ((irq_desc[irq].status & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH)
|
||||||
gpio_int_type2[port] ^= port_mask; /* switch edge direction */
|
gpio_int_type2[port] ^= port_mask; /* switch edge direction */
|
||||||
|
|
||||||
gpio_int_unmasked[port] &= ~port_mask;
|
gpio_int_unmasked[port] &= ~port_mask;
|
||||||
|
@ -283,27 +283,27 @@ static int ep93xx_gpio_irq_type(unsigned int irq, unsigned int type)
|
||||||
gpio_direction_input(gpio);
|
gpio_direction_input(gpio);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
gpio_int_type1[port] |= port_mask;
|
gpio_int_type1[port] |= port_mask;
|
||||||
gpio_int_type2[port] |= port_mask;
|
gpio_int_type2[port] |= port_mask;
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
gpio_int_type1[port] |= port_mask;
|
gpio_int_type1[port] |= port_mask;
|
||||||
gpio_int_type2[port] &= ~port_mask;
|
gpio_int_type2[port] &= ~port_mask;
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
break;
|
break;
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
gpio_int_type1[port] &= ~port_mask;
|
gpio_int_type1[port] &= ~port_mask;
|
||||||
gpio_int_type2[port] |= port_mask;
|
gpio_int_type2[port] |= port_mask;
|
||||||
desc->handle_irq = handle_level_irq;
|
desc->handle_irq = handle_level_irq;
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
gpio_int_type1[port] &= ~port_mask;
|
gpio_int_type1[port] &= ~port_mask;
|
||||||
gpio_int_type2[port] &= ~port_mask;
|
gpio_int_type2[port] &= ~port_mask;
|
||||||
desc->handle_irq = handle_level_irq;
|
desc->handle_irq = handle_level_irq;
|
||||||
break;
|
break;
|
||||||
case IRQT_BOTHEDGE:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
gpio_int_type1[port] |= port_mask;
|
gpio_int_type1[port] |= port_mask;
|
||||||
/* set initial polarity based on current input level */
|
/* set initial polarity based on current input level */
|
||||||
if (gpio_get_value(gpio))
|
if (gpio_get_value(gpio))
|
||||||
|
|
|
@ -111,7 +111,7 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
|
||||||
reg = irq >> 5;
|
reg = irq >> 5;
|
||||||
bit = 1 << (irq % 32);
|
bit = 1 << (irq % 32);
|
||||||
|
|
||||||
if (type == IRQT_PROBE) {
|
if (type == IRQ_TYPE_PROBE) {
|
||||||
/* Don't mess with enabled GPIOs using preconfigured edges or
|
/* Don't mess with enabled GPIOs using preconfigured edges or
|
||||||
GPIOs set to alternate function during probe */
|
GPIOs set to alternate function during probe */
|
||||||
/* TODO: support probe */
|
/* TODO: support probe */
|
||||||
|
@ -120,7 +120,7 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
|
||||||
// return 0;
|
// return 0;
|
||||||
// if (GAFR(gpio) & (0x3 << (((gpio) & 0xf)*2)))
|
// if (GAFR(gpio) & (0x3 << (((gpio) & 0xf)*2)))
|
||||||
// return 0;
|
// return 0;
|
||||||
// type = __IRQT_RISEDGE | __IRQT_FALEDGE;
|
// type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
|
||||||
}
|
}
|
||||||
|
|
||||||
GIUS(reg) |= bit;
|
GIUS(reg) |= bit;
|
||||||
|
@ -128,19 +128,19 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
|
||||||
|
|
||||||
DEBUG_IRQ("setting type of irq %d to ", _irq);
|
DEBUG_IRQ("setting type of irq %d to ", _irq);
|
||||||
|
|
||||||
if (type & __IRQT_RISEDGE) {
|
if (type & IRQ_TYPE_EDGE_RISING) {
|
||||||
DEBUG_IRQ("rising edges\n");
|
DEBUG_IRQ("rising edges\n");
|
||||||
irq_type = 0x0;
|
irq_type = 0x0;
|
||||||
}
|
}
|
||||||
if (type & __IRQT_FALEDGE) {
|
if (type & IRQ_TYPE_EDGE_FALLING) {
|
||||||
DEBUG_IRQ("falling edges\n");
|
DEBUG_IRQ("falling edges\n");
|
||||||
irq_type = 0x1;
|
irq_type = 0x1;
|
||||||
}
|
}
|
||||||
if (type & __IRQT_LOWLVL) {
|
if (type & IRQ_TYPE_LEVEL_LOW) {
|
||||||
DEBUG_IRQ("low level\n");
|
DEBUG_IRQ("low level\n");
|
||||||
irq_type = 0x3;
|
irq_type = 0x3;
|
||||||
}
|
}
|
||||||
if (type & __IRQT_HIGHLVL) {
|
if (type & IRQ_TYPE_LEVEL_HIGH) {
|
||||||
DEBUG_IRQ("high level\n");
|
DEBUG_IRQ("high level\n");
|
||||||
irq_type = 0x2;
|
irq_type = 0x2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,19 +329,19 @@ static int ixp2000_GPIO_irq_type(unsigned int irq, unsigned int type)
|
||||||
/*
|
/*
|
||||||
* Then, set the proper trigger type.
|
* Then, set the proper trigger type.
|
||||||
*/
|
*/
|
||||||
if (type & IRQT_FALLING)
|
if (type & IRQ_TYPE_EDGE_FALLING)
|
||||||
GPIO_IRQ_falling_edge |= 1 << line;
|
GPIO_IRQ_falling_edge |= 1 << line;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_falling_edge &= ~(1 << line);
|
GPIO_IRQ_falling_edge &= ~(1 << line);
|
||||||
if (type & IRQT_RISING)
|
if (type & IRQ_TYPE_EDGE_RISING)
|
||||||
GPIO_IRQ_rising_edge |= 1 << line;
|
GPIO_IRQ_rising_edge |= 1 << line;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_rising_edge &= ~(1 << line);
|
GPIO_IRQ_rising_edge &= ~(1 << line);
|
||||||
if (type & IRQT_LOW)
|
if (type & IRQ_TYPE_LEVEL_LOW)
|
||||||
GPIO_IRQ_level_low |= 1 << line;
|
GPIO_IRQ_level_low |= 1 << line;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_level_low &= ~(1 << line);
|
GPIO_IRQ_level_low &= ~(1 << line);
|
||||||
if (type & IRQT_HIGH)
|
if (type & IRQ_TYPE_LEVEL_HIGH)
|
||||||
GPIO_IRQ_level_high |= 1 << line;
|
GPIO_IRQ_level_high |= 1 << line;
|
||||||
else
|
else
|
||||||
GPIO_IRQ_level_high &= ~(1 << line);
|
GPIO_IRQ_level_high &= ~(1 << line);
|
||||||
|
|
|
@ -126,23 +126,23 @@ static int ixp23xx_irq_set_type(unsigned int irq, unsigned int type)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_BOTHEDGE:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
int_style = IXP23XX_GPIO_STYLE_TRANSITIONAL;
|
int_style = IXP23XX_GPIO_STYLE_TRANSITIONAL;
|
||||||
irq_type = IXP23XX_IRQ_EDGE;
|
irq_type = IXP23XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
int_style = IXP23XX_GPIO_STYLE_RISING_EDGE;
|
int_style = IXP23XX_GPIO_STYLE_RISING_EDGE;
|
||||||
irq_type = IXP23XX_IRQ_EDGE;
|
irq_type = IXP23XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
int_style = IXP23XX_GPIO_STYLE_FALLING_EDGE;
|
int_style = IXP23XX_GPIO_STYLE_FALLING_EDGE;
|
||||||
irq_type = IXP23XX_IRQ_EDGE;
|
irq_type = IXP23XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
int_style = IXP23XX_GPIO_STYLE_ACTIVE_HIGH;
|
int_style = IXP23XX_GPIO_STYLE_ACTIVE_HIGH;
|
||||||
irq_type = IXP23XX_IRQ_LEVEL;
|
irq_type = IXP23XX_IRQ_LEVEL;
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
int_style = IXP23XX_GPIO_STYLE_ACTIVE_LOW;
|
int_style = IXP23XX_GPIO_STYLE_ACTIVE_LOW;
|
||||||
irq_type = IXP23XX_IRQ_LEVEL;
|
irq_type = IXP23XX_IRQ_LEVEL;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -110,8 +110,8 @@ static int __init roadrunner_map_irq(struct pci_dev *dev, u8 idsel, u8 pin)
|
||||||
|
|
||||||
static void __init roadrunner_pci_preinit(void)
|
static void __init roadrunner_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_ROADRUNNER_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_ROADRUNNER_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_ROADRUNNER_PCI_INTD, IRQT_LOW);
|
set_irq_type(IRQ_ROADRUNNER_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp23xx_pci_preinit();
|
ixp23xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,10 +30,10 @@
|
||||||
|
|
||||||
void __init avila_pci_preinit(void)
|
void __init avila_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_AVILA_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_AVILA_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_AVILA_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_AVILA_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_AVILA_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_AVILA_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_AVILA_PCI_INTD, IRQT_LOW);
|
set_irq_type(IRQ_AVILA_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,23 +142,23 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
switch (type){
|
switch (type){
|
||||||
case IRQT_BOTHEDGE:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
int_style = IXP4XX_GPIO_STYLE_TRANSITIONAL;
|
int_style = IXP4XX_GPIO_STYLE_TRANSITIONAL;
|
||||||
irq_type = IXP4XX_IRQ_EDGE;
|
irq_type = IXP4XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
int_style = IXP4XX_GPIO_STYLE_RISING_EDGE;
|
int_style = IXP4XX_GPIO_STYLE_RISING_EDGE;
|
||||||
irq_type = IXP4XX_IRQ_EDGE;
|
irq_type = IXP4XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
int_style = IXP4XX_GPIO_STYLE_FALLING_EDGE;
|
int_style = IXP4XX_GPIO_STYLE_FALLING_EDGE;
|
||||||
irq_type = IXP4XX_IRQ_EDGE;
|
irq_type = IXP4XX_IRQ_EDGE;
|
||||||
break;
|
break;
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
int_style = IXP4XX_GPIO_STYLE_ACTIVE_HIGH;
|
int_style = IXP4XX_GPIO_STYLE_ACTIVE_HIGH;
|
||||||
irq_type = IXP4XX_IRQ_LEVEL;
|
irq_type = IXP4XX_IRQ_LEVEL;
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
int_style = IXP4XX_GPIO_STYLE_ACTIVE_LOW;
|
int_style = IXP4XX_GPIO_STYLE_ACTIVE_LOW;
|
||||||
irq_type = IXP4XX_IRQ_LEVEL;
|
irq_type = IXP4XX_IRQ_LEVEL;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -27,8 +27,8 @@
|
||||||
|
|
||||||
void __init coyote_pci_preinit(void)
|
void __init coyote_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_COYOTE_PCI_SLOT0, IRQT_LOW);
|
set_irq_type(IRQ_COYOTE_PCI_SLOT0, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_COYOTE_PCI_SLOT1, IRQT_LOW);
|
set_irq_type(IRQ_COYOTE_PCI_SLOT1, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,12 +25,12 @@
|
||||||
|
|
||||||
void __init dsmg600_pci_preinit(void)
|
void __init dsmg600_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTD, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTE, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTE, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_DSMG600_PCI_INTF, IRQT_LOW);
|
set_irq_type(IRQ_DSMG600_PCI_INTF, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,9 +25,9 @@
|
||||||
|
|
||||||
void __init fsg_pci_preinit(void)
|
void __init fsg_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_FSG_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_FSG_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_FSG_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_FSG_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_FSG_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_FSG_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
void __init gateway7001_pci_preinit(void)
|
void __init gateway7001_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO10, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO10, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO11, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO11, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,10 +41,10 @@
|
||||||
*/
|
*/
|
||||||
void __init gtwx5715_pci_preinit(void)
|
void __init gtwx5715_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(GTWX5715_PCI_SLOT0_INTA_IRQ, IRQT_LOW);
|
set_irq_type(GTWX5715_PCI_SLOT0_INTA_IRQ, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(GTWX5715_PCI_SLOT0_INTB_IRQ, IRQT_LOW);
|
set_irq_type(GTWX5715_PCI_SLOT0_INTB_IRQ, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(GTWX5715_PCI_SLOT1_INTA_IRQ, IRQT_LOW);
|
set_irq_type(GTWX5715_PCI_SLOT1_INTA_IRQ, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(GTWX5715_PCI_SLOT1_INTB_IRQ, IRQT_LOW);
|
set_irq_type(GTWX5715_PCI_SLOT1_INTB_IRQ, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,10 @@
|
||||||
|
|
||||||
void __init ixdp425_pci_preinit(void)
|
void __init ixdp425_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_IXDP425_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_IXDP425_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXDP425_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_IXDP425_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXDP425_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_IXDP425_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXDP425_PCI_INTD, IRQT_LOW);
|
set_irq_type(IRQ_IXDP425_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
|
|
||||||
void __init ixdpg425_pci_preinit(void)
|
void __init ixdpg425_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO6, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO6, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO7, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO7, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,11 +24,11 @@
|
||||||
|
|
||||||
void __init nas100d_pci_preinit(void)
|
void __init nas100d_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_NAS100D_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_NAS100D_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NAS100D_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_NAS100D_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NAS100D_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_NAS100D_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NAS100D_PCI_INTD, IRQT_LOW);
|
set_irq_type(IRQ_NAS100D_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NAS100D_PCI_INTE, IRQT_LOW);
|
set_irq_type(IRQ_NAS100D_PCI_INTE, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,9 @@
|
||||||
|
|
||||||
void __init nslu2_pci_preinit(void)
|
void __init nslu2_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_NSLU2_PCI_INTA, IRQT_LOW);
|
set_irq_type(IRQ_NSLU2_PCI_INTA, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NSLU2_PCI_INTB, IRQT_LOW);
|
set_irq_type(IRQ_NSLU2_PCI_INTB, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_NSLU2_PCI_INTC, IRQT_LOW);
|
set_irq_type(IRQ_NSLU2_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
void __init wg302v2_pci_preinit(void)
|
void __init wg302v2_pci_preinit(void)
|
||||||
{
|
{
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO8, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO8, IRQ_TYPE_LEVEL_LOW);
|
||||||
set_irq_type(IRQ_IXP4XX_GPIO9, IRQT_LOW);
|
set_irq_type(IRQ_IXP4XX_GPIO9, IRQ_TYPE_LEVEL_LOW);
|
||||||
|
|
||||||
ixp4xx_pci_preinit();
|
ixp4xx_pci_preinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,21 +72,21 @@ static int ks8695_irq_set_type(unsigned int irqno, unsigned int type)
|
||||||
ctrl = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC);
|
ctrl = __raw_readl(KS8695_GPIO_VA + KS8695_IOPC);
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
mode = IOPC_TM_HIGH;
|
mode = IOPC_TM_HIGH;
|
||||||
level_triggered = 1;
|
level_triggered = 1;
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
mode = IOPC_TM_LOW;
|
mode = IOPC_TM_LOW;
|
||||||
level_triggered = 1;
|
level_triggered = 1;
|
||||||
break;
|
break;
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
mode = IOPC_TM_RISING;
|
mode = IOPC_TM_RISING;
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
mode = IOPC_TM_FALLING;
|
mode = IOPC_TM_FALLING;
|
||||||
break;
|
break;
|
||||||
case IRQT_BOTHEDGE:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
mode = IOPC_TM_EDGE;
|
mode = IOPC_TM_EDGE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -99,19 +99,19 @@ netx_hif_irq_type(unsigned int _irq, unsigned int type)
|
||||||
|
|
||||||
irq = _irq - NETX_IRQ_HIF_CHAINED(0);
|
irq = _irq - NETX_IRQ_HIF_CHAINED(0);
|
||||||
|
|
||||||
if (type & __IRQT_RISEDGE) {
|
if (type & IRQ_TYPE_EDGE_RISING) {
|
||||||
DEBUG_IRQ("rising edges\n");
|
DEBUG_IRQ("rising edges\n");
|
||||||
val |= (1 << 26) << irq;
|
val |= (1 << 26) << irq;
|
||||||
}
|
}
|
||||||
if (type & __IRQT_FALEDGE) {
|
if (type & IRQ_TYPE_EDGE_FALLING) {
|
||||||
DEBUG_IRQ("falling edges\n");
|
DEBUG_IRQ("falling edges\n");
|
||||||
val &= ~((1 << 26) << irq);
|
val &= ~((1 << 26) << irq);
|
||||||
}
|
}
|
||||||
if (type & __IRQT_LOWLVL) {
|
if (type & IRQ_TYPE_LEVEL_LOW) {
|
||||||
DEBUG_IRQ("low level\n");
|
DEBUG_IRQ("low level\n");
|
||||||
val &= ~((1 << 26) << irq);
|
val &= ~((1 << 26) << irq);
|
||||||
}
|
}
|
||||||
if (type & __IRQT_HIGHLVL) {
|
if (type & IRQ_TYPE_LEVEL_HIGH) {
|
||||||
DEBUG_IRQ("high level\n");
|
DEBUG_IRQ("high level\n");
|
||||||
val |= (1 << 26) << irq;
|
val |= (1 << 26) << irq;
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,7 +288,7 @@ static void __init osk_init_cf(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* the CF I/O IRQ is really active-low */
|
/* the CF I/O IRQ is really active-low */
|
||||||
set_irq_type(OMAP_GPIO_IRQ(62), IRQT_FALLING);
|
set_irq_type(OMAP_GPIO_IRQ(62), IRQ_TYPE_EDGE_FALLING);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init osk_init_irq(void)
|
static void __init osk_init_irq(void)
|
||||||
|
@ -483,7 +483,7 @@ static void __init osk_mistral_init(void)
|
||||||
omap_cfg_reg(P20_1610_GPIO4); /* PENIRQ */
|
omap_cfg_reg(P20_1610_GPIO4); /* PENIRQ */
|
||||||
gpio_request(4, "ts_int");
|
gpio_request(4, "ts_int");
|
||||||
gpio_direction_input(4);
|
gpio_direction_input(4);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING);
|
set_irq_type(OMAP_GPIO_IRQ(4), IRQ_TYPE_EDGE_FALLING);
|
||||||
|
|
||||||
spi_register_board_info(mistral_boardinfo,
|
spi_register_board_info(mistral_boardinfo,
|
||||||
ARRAY_SIZE(mistral_boardinfo));
|
ARRAY_SIZE(mistral_boardinfo));
|
||||||
|
@ -494,7 +494,7 @@ static void __init osk_mistral_init(void)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
gpio_direction_input(OMAP_MPUIO(2));
|
gpio_direction_input(OMAP_MPUIO(2));
|
||||||
set_irq_type(OMAP_GPIO_IRQ(OMAP_MPUIO(2)), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(OMAP_MPUIO(2)), IRQ_TYPE_EDGE_RISING);
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
/* share the IRQ in case someone wants to use the
|
/* share the IRQ in case someone wants to use the
|
||||||
* button for more than wakeup from system sleep.
|
* button for more than wakeup from system sleep.
|
||||||
|
|
|
@ -298,11 +298,11 @@ palmz71_powercable(int irq, void *dev_id)
|
||||||
if (omap_get_gpio_datain(PALMZ71_USBDETECT_GPIO)) {
|
if (omap_get_gpio_datain(PALMZ71_USBDETECT_GPIO)) {
|
||||||
printk(KERN_INFO "PM: Power cable connected\n");
|
printk(KERN_INFO "PM: Power cable connected\n");
|
||||||
set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
|
set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
|
||||||
IRQT_FALLING);
|
IRQ_TYPE_EDGE_FALLING);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_INFO "PM: Power cable disconnected\n");
|
printk(KERN_INFO "PM: Power cable disconnected\n");
|
||||||
set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
|
set_irq_type(OMAP_GPIO_IRQ(PALMZ71_USBDETECT_GPIO),
|
||||||
IRQT_RISING);
|
IRQ_TYPE_EDGE_RISING);
|
||||||
}
|
}
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,10 +186,10 @@ static void __init voiceblue_init(void)
|
||||||
omap_request_gpio(13);
|
omap_request_gpio(13);
|
||||||
omap_request_gpio(14);
|
omap_request_gpio(14);
|
||||||
omap_request_gpio(15);
|
omap_request_gpio(15);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(12), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(12), IRQ_TYPE_EDGE_RISING);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(13), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(13), IRQ_TYPE_EDGE_RISING);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(14), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(14), IRQ_TYPE_EDGE_RISING);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(15), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(15), IRQ_TYPE_EDGE_RISING);
|
||||||
|
|
||||||
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
|
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
|
||||||
omap_board_config = voiceblue_config;
|
omap_board_config = voiceblue_config;
|
||||||
|
|
|
@ -181,7 +181,7 @@ void omap1510_fpga_init_irq(void)
|
||||||
*/
|
*/
|
||||||
omap_request_gpio(13);
|
omap_request_gpio(13);
|
||||||
omap_set_gpio_direction(13, 1);
|
omap_set_gpio_direction(13, 1);
|
||||||
set_irq_type(OMAP_GPIO_IRQ(13), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(13), IRQ_TYPE_EDGE_RISING);
|
||||||
set_irq_chained_handler(OMAP1510_INT_FPGA, innovator_fpga_IRQ_demux);
|
set_irq_chained_handler(OMAP1510_INT_FPGA, innovator_fpga_IRQ_demux);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -337,17 +337,17 @@ static void __init apollon_sw_init(void)
|
||||||
omap_request_gpio(SW_DOWN_GPIO58);
|
omap_request_gpio(SW_DOWN_GPIO58);
|
||||||
omap_set_gpio_direction(SW_DOWN_GPIO58, 1);
|
omap_set_gpio_direction(SW_DOWN_GPIO58, 1);
|
||||||
|
|
||||||
set_irq_type(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), IRQ_TYPE_EDGE_RISING);
|
||||||
if (request_irq(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), &apollon_sw_interrupt,
|
if (request_irq(OMAP_GPIO_IRQ(SW_ENTER_GPIO16), &apollon_sw_interrupt,
|
||||||
IRQF_SHARED, "enter sw",
|
IRQF_SHARED, "enter sw",
|
||||||
&apollon_sw_interrupt))
|
&apollon_sw_interrupt))
|
||||||
return;
|
return;
|
||||||
set_irq_type(OMAP_GPIO_IRQ(SW_UP_GPIO17), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(SW_UP_GPIO17), IRQ_TYPE_EDGE_RISING);
|
||||||
if (request_irq(OMAP_GPIO_IRQ(SW_UP_GPIO17), &apollon_sw_interrupt,
|
if (request_irq(OMAP_GPIO_IRQ(SW_UP_GPIO17), &apollon_sw_interrupt,
|
||||||
IRQF_SHARED, "up sw",
|
IRQF_SHARED, "up sw",
|
||||||
&apollon_sw_interrupt))
|
&apollon_sw_interrupt))
|
||||||
return;
|
return;
|
||||||
set_irq_type(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), IRQT_RISING);
|
set_irq_type(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), IRQ_TYPE_EDGE_RISING);
|
||||||
if (request_irq(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), &apollon_sw_interrupt,
|
if (request_irq(OMAP_GPIO_IRQ(SW_DOWN_GPIO58), &apollon_sw_interrupt,
|
||||||
IRQF_SHARED, "down sw",
|
IRQF_SHARED, "down sw",
|
||||||
&apollon_sw_interrupt))
|
&apollon_sw_interrupt))
|
||||||
|
|
|
@ -213,7 +213,7 @@ void __init db88f5281_pci_preinit(void)
|
||||||
pin = DB88F5281_PCI_SLOT0_IRQ_PIN;
|
pin = DB88F5281_PCI_SLOT0_IRQ_PIN;
|
||||||
if (gpio_request(pin, "PCI Int1") == 0) {
|
if (gpio_request(pin, "PCI Int1") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "db88f5281_pci_preinit faield to "
|
printk(KERN_ERR "db88f5281_pci_preinit faield to "
|
||||||
"set_irq_type pin %d\n", pin);
|
"set_irq_type pin %d\n", pin);
|
||||||
|
@ -226,7 +226,7 @@ void __init db88f5281_pci_preinit(void)
|
||||||
pin = DB88F5281_PCI_SLOT1_SLOT2_IRQ_PIN;
|
pin = DB88F5281_PCI_SLOT1_SLOT2_IRQ_PIN;
|
||||||
if (gpio_request(pin, "PCI Int2") == 0) {
|
if (gpio_request(pin, "PCI Int2") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "db88f5281_pci_preinit faield "
|
printk(KERN_ERR "db88f5281_pci_preinit faield "
|
||||||
"to set_irq_type pin %d\n", pin);
|
"to set_irq_type pin %d\n", pin);
|
||||||
|
|
|
@ -91,27 +91,27 @@ static int orion5x_gpio_set_irq_type(u32 irq, u32 type)
|
||||||
desc = irq_desc + irq;
|
desc = irq_desc + irq;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
desc->handle_irq = handle_level_irq;
|
desc->handle_irq = handle_level_irq;
|
||||||
desc->status |= IRQ_LEVEL;
|
desc->status |= IRQ_LEVEL;
|
||||||
orion5x_clrbits(GPIO_IN_POL, (1 << pin));
|
orion5x_clrbits(GPIO_IN_POL, (1 << pin));
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
desc->handle_irq = handle_level_irq;
|
desc->handle_irq = handle_level_irq;
|
||||||
desc->status |= IRQ_LEVEL;
|
desc->status |= IRQ_LEVEL;
|
||||||
orion5x_setbits(GPIO_IN_POL, (1 << pin));
|
orion5x_setbits(GPIO_IN_POL, (1 << pin));
|
||||||
break;
|
break;
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
desc->status &= ~IRQ_LEVEL;
|
desc->status &= ~IRQ_LEVEL;
|
||||||
orion5x_clrbits(GPIO_IN_POL, (1 << pin));
|
orion5x_clrbits(GPIO_IN_POL, (1 << pin));
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
desc->status &= ~IRQ_LEVEL;
|
desc->status &= ~IRQ_LEVEL;
|
||||||
orion5x_setbits(GPIO_IN_POL, (1 << pin));
|
orion5x_setbits(GPIO_IN_POL, (1 << pin));
|
||||||
break;
|
break;
|
||||||
case IRQT_BOTHEDGE:
|
case IRQ_TYPE_EDGE_BOTH:
|
||||||
desc->handle_irq = handle_edge_irq;
|
desc->handle_irq = handle_edge_irq;
|
||||||
desc->status &= ~IRQ_LEVEL;
|
desc->status &= ~IRQ_LEVEL;
|
||||||
/*
|
/*
|
||||||
|
@ -156,7 +156,7 @@ static void orion5x_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
|
||||||
if (cause & (1 << pin)) {
|
if (cause & (1 << pin)) {
|
||||||
irq = gpio_to_irq(pin);
|
irq = gpio_to_irq(pin);
|
||||||
desc = irq_desc + irq;
|
desc = irq_desc + irq;
|
||||||
if ((desc->status & IRQ_TYPE_SENSE_MASK) == IRQT_BOTHEDGE) {
|
if ((desc->status & IRQ_TYPE_SENSE_MASK) == IRQ_TYPE_EDGE_BOTH) {
|
||||||
/* Swap polarity (race with GPIO line) */
|
/* Swap polarity (race with GPIO line) */
|
||||||
u32 polarity = readl(GPIO_IN_POL);
|
u32 polarity = readl(GPIO_IN_POL);
|
||||||
polarity ^= 1 << pin;
|
polarity ^= 1 << pin;
|
||||||
|
|
|
@ -148,7 +148,7 @@ void __init rd88f5182_pci_preinit(void)
|
||||||
pin = RD88F5182_PCI_SLOT0_IRQ_A_PIN;
|
pin = RD88F5182_PCI_SLOT0_IRQ_A_PIN;
|
||||||
if (gpio_request(pin, "PCI IntA") == 0) {
|
if (gpio_request(pin, "PCI IntA") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "rd88f5182_pci_preinit faield to "
|
printk(KERN_ERR "rd88f5182_pci_preinit faield to "
|
||||||
"set_irq_type pin %d\n", pin);
|
"set_irq_type pin %d\n", pin);
|
||||||
|
@ -161,7 +161,7 @@ void __init rd88f5182_pci_preinit(void)
|
||||||
pin = RD88F5182_PCI_SLOT0_IRQ_B_PIN;
|
pin = RD88F5182_PCI_SLOT0_IRQ_B_PIN;
|
||||||
if (gpio_request(pin, "PCI IntB") == 0) {
|
if (gpio_request(pin, "PCI IntB") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "rd88f5182_pci_preinit faield to "
|
printk(KERN_ERR "rd88f5182_pci_preinit faield to "
|
||||||
"set_irq_type pin %d\n", pin);
|
"set_irq_type pin %d\n", pin);
|
||||||
|
|
|
@ -117,7 +117,7 @@ void __init qnap_ts209_pci_preinit(void)
|
||||||
pin = QNAP_TS209_PCI_SLOT0_IRQ_PIN;
|
pin = QNAP_TS209_PCI_SLOT0_IRQ_PIN;
|
||||||
if (gpio_request(pin, "PCI Int1") == 0) {
|
if (gpio_request(pin, "PCI Int1") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "qnap_ts209_pci_preinit failed to "
|
printk(KERN_ERR "qnap_ts209_pci_preinit failed to "
|
||||||
"set_irq_type pin %d\n", pin);
|
"set_irq_type pin %d\n", pin);
|
||||||
|
@ -131,7 +131,7 @@ void __init qnap_ts209_pci_preinit(void)
|
||||||
pin = QNAP_TS209_PCI_SLOT1_IRQ_PIN;
|
pin = QNAP_TS209_PCI_SLOT1_IRQ_PIN;
|
||||||
if (gpio_request(pin, "PCI Int2") == 0) {
|
if (gpio_request(pin, "PCI Int2") == 0) {
|
||||||
if (gpio_direction_input(pin) == 0) {
|
if (gpio_direction_input(pin) == 0) {
|
||||||
set_irq_type(gpio_to_irq(pin), IRQT_LOW);
|
set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
|
||||||
} else {
|
} else {
|
||||||
printk(KERN_ERR "qnap_ts209_pci_preinit failed "
|
printk(KERN_ERR "qnap_ts209_pci_preinit failed "
|
||||||
"to set_irq_type pin %d\n", pin);
|
"to set_irq_type pin %d\n", pin);
|
||||||
|
|
|
@ -56,28 +56,28 @@ static void pnx4008_mask_ack_irq(unsigned int irq)
|
||||||
static int pnx4008_set_irq_type(unsigned int irq, unsigned int type)
|
static int pnx4008_set_irq_type(unsigned int irq, unsigned int type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case IRQT_RISING:
|
case IRQ_TYPE_EDGE_RISING:
|
||||||
__raw_writel(__raw_readl(INTC_ATR(irq)) | INTC_BIT(irq), INTC_ATR(irq)); /*edge sensitive */
|
__raw_writel(__raw_readl(INTC_ATR(irq)) | INTC_BIT(irq), INTC_ATR(irq)); /*edge sensitive */
|
||||||
__raw_writel(__raw_readl(INTC_APR(irq)) | INTC_BIT(irq), INTC_APR(irq)); /*rising edge */
|
__raw_writel(__raw_readl(INTC_APR(irq)) | INTC_BIT(irq), INTC_APR(irq)); /*rising edge */
|
||||||
set_irq_handler(irq, handle_edge_irq);
|
set_irq_handler(irq, handle_edge_irq);
|
||||||
break;
|
break;
|
||||||
case IRQT_FALLING:
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
__raw_writel(__raw_readl(INTC_ATR(irq)) | INTC_BIT(irq), INTC_ATR(irq)); /*edge sensitive */
|
__raw_writel(__raw_readl(INTC_ATR(irq)) | INTC_BIT(irq), INTC_ATR(irq)); /*edge sensitive */
|
||||||
__raw_writel(__raw_readl(INTC_APR(irq)) & ~INTC_BIT(irq), INTC_APR(irq)); /*falling edge */
|
__raw_writel(__raw_readl(INTC_APR(irq)) & ~INTC_BIT(irq), INTC_APR(irq)); /*falling edge */
|
||||||
set_irq_handler(irq, handle_edge_irq);
|
set_irq_handler(irq, handle_edge_irq);
|
||||||
break;
|
break;
|
||||||
case IRQT_LOW:
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
__raw_writel(__raw_readl(INTC_ATR(irq)) & ~INTC_BIT(irq), INTC_ATR(irq)); /*level sensitive */
|
__raw_writel(__raw_readl(INTC_ATR(irq)) & ~INTC_BIT(irq), INTC_ATR(irq)); /*level sensitive */
|
||||||
__raw_writel(__raw_readl(INTC_APR(irq)) & ~INTC_BIT(irq), INTC_APR(irq)); /*low level */
|
__raw_writel(__raw_readl(INTC_APR(irq)) & ~INTC_BIT(irq), INTC_APR(irq)); /*low level */
|
||||||
set_irq_handler(irq, handle_level_irq);
|
set_irq_handler(irq, handle_level_irq);
|
||||||
break;
|
break;
|
||||||
case IRQT_HIGH:
|
case IRQ_TYPE_LEVEL_HIGH:
|
||||||
__raw_writel(__raw_readl(INTC_ATR(irq)) & ~INTC_BIT(irq), INTC_ATR(irq)); /*level sensitive */
|
__raw_writel(__raw_readl(INTC_ATR(irq)) & ~INTC_BIT(irq), INTC_ATR(irq)); /*level sensitive */
|
||||||
__raw_writel(__raw_readl(INTC_APR(irq)) | INTC_BIT(irq), INTC_APR(irq)); /* high level */
|
__raw_writel(__raw_readl(INTC_APR(irq)) | INTC_BIT(irq), INTC_APR(irq)); /* high level */
|
||||||
set_irq_handler(irq, handle_level_irq);
|
set_irq_handler(irq, handle_level_irq);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* IRQT_BOTHEDGE is not supported */
|
/* IRQ_TYPE_EDGE_BOTH is not supported */
|
||||||
default:
|
default:
|
||||||
printk(KERN_ERR "PNX4008 IRQ: Unsupported irq type %d\n", type);
|
printk(KERN_ERR "PNX4008 IRQ: Unsupported irq type %d\n", type);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue