forked from Minki/linux
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
This commit is contained in:
commit
2f633928cb
2
.gitignore
vendored
2
.gitignore
vendored
@ -53,3 +53,5 @@ cscope.*
|
||||
|
||||
*.orig
|
||||
*.rej
|
||||
*~
|
||||
\#*#
|
||||
|
@ -183,8 +183,6 @@ i386/
|
||||
- directory with info about Linux on Intel 32 bit architecture.
|
||||
ia64/
|
||||
- directory with info about Linux on Intel 64 bit architecture.
|
||||
ide.txt
|
||||
- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
|
||||
infiniband/
|
||||
- directory with documents concerning Linux InfiniBand support.
|
||||
initrd.txt
|
||||
@ -227,8 +225,6 @@ kprobes.txt
|
||||
- documents the kernel probes debugging feature.
|
||||
kref.txt
|
||||
- docs on adding reference counters (krefs) to kernel objects.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
laptops/
|
||||
- directory with laptop related info and laptop driver documentation.
|
||||
ldm.txt
|
||||
@ -303,12 +299,8 @@ pcmcia/
|
||||
- info on the Linux PCMCIA driver.
|
||||
pi-futex.txt
|
||||
- documentation on lightweight PI-futexes.
|
||||
pm.txt
|
||||
- info on Linux power management support.
|
||||
pnp.txt
|
||||
- Linux Plug and Play documentation.
|
||||
power_supply_class.txt
|
||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||
power/
|
||||
- directory with info on Linux PCI power management.
|
||||
powerpc/
|
||||
|
@ -361,12 +361,14 @@ X!Edrivers/pnp/system.c
|
||||
<chapter id="blkdev">
|
||||
<title>Block Devices</title>
|
||||
!Eblock/blk-core.c
|
||||
!Iblock/blk-core.c
|
||||
!Eblock/blk-map.c
|
||||
!Iblock/blk-sysfs.c
|
||||
!Eblock/blk-settings.c
|
||||
!Eblock/blk-exec.c
|
||||
!Eblock/blk-barrier.c
|
||||
!Eblock/blk-tag.c
|
||||
!Iblock/blk-tag.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="chrdev">
|
||||
|
@ -1,15 +1,7 @@
|
||||
Linux supports two methods of overriding the BIOS DSDT:
|
||||
Linux supports a method of overriding the BIOS DSDT:
|
||||
|
||||
CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
|
||||
|
||||
CONFIG_ACPI_CUSTOM_DSDT_INITRD adds the image to the initrd.
|
||||
|
||||
When to use these methods is described in detail on the
|
||||
When to use this method is described in detail on the
|
||||
Linux/ACPI home page:
|
||||
http://www.lesswatts.org/projects/acpi/overridingDSDT.php
|
||||
|
||||
Note that if both options are used, the DSDT supplied
|
||||
by the INITRD method takes precedence.
|
||||
|
||||
Documentation/initramfs-add-dsdt.sh is provided for convenience
|
||||
for use with the CONFIG_ACPI_CUSTOM_DSDT_INITRD method.
|
||||
|
@ -1,43 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Adds a DSDT file to the initrd (if it's an initramfs)
|
||||
# first argument is the name of archive
|
||||
# second argument is the name of the file to add
|
||||
# The file will be copied as /DSDT.aml
|
||||
|
||||
# 20060126: fix "Premature end of file" with some old cpio (Roland Robic)
|
||||
# 20060205: this time it should really work
|
||||
|
||||
# check the arguments
|
||||
if [ $# -ne 2 ]; then
|
||||
program_name=$(basename $0)
|
||||
echo "\
|
||||
$program_name: too few arguments
|
||||
Usage: $program_name initrd-name.img DSDT-to-add.aml
|
||||
Adds a DSDT file to an initrd (in initramfs format)
|
||||
|
||||
initrd-name.img: filename of the initrd in initramfs format
|
||||
DSDT-to-add.aml: filename of the DSDT file to add
|
||||
" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# we should check it's an initramfs
|
||||
|
||||
tempcpio=$(mktemp -d)
|
||||
# cleanup on exit, hangup, interrupt, quit, termination
|
||||
trap 'rm -rf $tempcpio' 0 1 2 3 15
|
||||
|
||||
# extract the archive
|
||||
gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1
|
||||
|
||||
# copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml"
|
||||
cp -f "$2" "$tempcpio"/DSDT.aml
|
||||
|
||||
# add the file
|
||||
cd "$tempcpio"
|
||||
(echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1
|
||||
cd "$OLDPWD"
|
||||
|
||||
# re-compress the archive
|
||||
gzip -c "$tempcpio"/initramfs.cpio > "$1"
|
||||
|
@ -45,7 +45,7 @@ This driver provides the following features:
|
||||
---------------
|
||||
|
||||
0. The ide-cd relies on the ide disk driver. See
|
||||
Documentation/ide.txt for up-to-date information on the ide
|
||||
Documentation/ide/ide.txt for up-to-date information on the ide
|
||||
driver.
|
||||
|
||||
1. Make sure that the ide and ide-cd drivers are compiled into the
|
||||
@ -64,7 +64,7 @@ This driver provides the following features:
|
||||
|
||||
Depending on what type of IDE interface you have, you may need to
|
||||
specify additional configuration options. See
|
||||
Documentation/ide.txt.
|
||||
Documentation/ide/ide.txt.
|
||||
|
||||
2. You should also ensure that the iso9660 filesystem is either
|
||||
compiled into the kernel or available as a loadable module. You
|
||||
@ -84,7 +84,7 @@ This driver provides the following features:
|
||||
on the primary IDE interface are called `hda' and `hdb',
|
||||
respectively. The drives on the secondary interface are called
|
||||
`hdc' and `hdd'. (Interfaces at other locations get other letters
|
||||
in the third position; see Documentation/ide.txt.)
|
||||
in the third position; see Documentation/ide/ide.txt.)
|
||||
|
||||
If you want your CDROM drive to be found automatically by the
|
||||
driver, you should make sure your IDE interface uses either the
|
||||
@ -93,7 +93,7 @@ This driver provides the following features:
|
||||
be jumpered as `master'. (If for some reason you cannot configure
|
||||
your system in this manner, you can probably still use the driver.
|
||||
You may have to pass extra configuration information to the kernel
|
||||
when you boot, however. See Documentation/ide.txt for more
|
||||
when you boot, however. See Documentation/ide/ide.txt for more
|
||||
information.)
|
||||
|
||||
4. Boot the system. If the drive is recognized, you should see a
|
||||
@ -201,7 +201,7 @@ TEST
|
||||
This section discusses some common problems encountered when trying to
|
||||
use the driver, and some possible solutions. Note that if you are
|
||||
experiencing problems, you should probably also review
|
||||
Documentation/ide.txt for current information about the underlying
|
||||
Documentation/ide/ide.txt for current information about the underlying
|
||||
IDE support code. Some of these items apply only to earlier versions
|
||||
of the driver, but are mentioned here for completeness.
|
||||
|
||||
@ -211,7 +211,7 @@ from the driver.
|
||||
a. Drive is not detected during booting.
|
||||
|
||||
- Review the configuration instructions above and in
|
||||
Documentation/ide.txt, and check how your hardware is
|
||||
Documentation/ide/ide.txt, and check how your hardware is
|
||||
configured.
|
||||
|
||||
- If your drive is the only device on an IDE interface, it should
|
||||
@ -219,7 +219,7 @@ a. Drive is not detected during booting.
|
||||
|
||||
- If your IDE interface is not at the standard addresses of 0x170
|
||||
or 0x1f0, you'll need to explicitly inform the driver using a
|
||||
lilo option. See Documentation/ide.txt. (This feature was
|
||||
lilo option. See Documentation/ide/ide.txt. (This feature was
|
||||
added around kernel version 1.3.30.)
|
||||
|
||||
- If the autoprobing is not finding your drive, you can tell the
|
||||
@ -245,7 +245,7 @@ a. Drive is not detected during booting.
|
||||
Support for some interfaces needing extra initialization is
|
||||
provided in later 1.3.x kernels. You may need to turn on
|
||||
additional kernel configuration options to get them to work;
|
||||
see Documentation/ide.txt.
|
||||
see Documentation/ide/ide.txt.
|
||||
|
||||
Even if support is not available for your interface, you may be
|
||||
able to get it to work with the following procedure. First boot
|
||||
@ -299,7 +299,7 @@ c. System hangups.
|
||||
be worked around by specifying the `serialize' option when
|
||||
booting. Recent kernels should be able to detect the need for
|
||||
this automatically in most cases, but the detection is not
|
||||
foolproof. See Documentation/ide.txt for more information
|
||||
foolproof. See Documentation/ide/ide.txt for more information
|
||||
about the `serialize' option and the CMD640B.
|
||||
|
||||
- Note that many MS-DOS CDROM drivers will work with such buggy
|
||||
|
@ -1,4 +1,8 @@
|
||||
Memory Controller
|
||||
Memory Resource Controller
|
||||
|
||||
NOTE: The Memory Resource Controller has been generically been referred
|
||||
to as the memory controller in this document. Do not confuse memory controller
|
||||
used here with the memory controller that is used in hardware.
|
||||
|
||||
Salient features
|
||||
|
||||
@ -152,7 +156,7 @@ The memory controller uses the following hierarchy
|
||||
|
||||
a. Enable CONFIG_CGROUPS
|
||||
b. Enable CONFIG_RESOURCE_COUNTERS
|
||||
c. Enable CONFIG_CGROUP_MEM_CONT
|
||||
c. Enable CONFIG_CGROUP_MEM_RES_CTLR
|
||||
|
||||
1. Prepare the cgroups
|
||||
# mkdir -p /cgroups
|
||||
@ -164,7 +168,7 @@ c. Enable CONFIG_CGROUP_MEM_CONT
|
||||
|
||||
Since now we're in the 0 cgroup,
|
||||
We can alter the memory limit:
|
||||
# echo -n 4M > /cgroups/0/memory.limit_in_bytes
|
||||
# echo 4M > /cgroups/0/memory.limit_in_bytes
|
||||
|
||||
NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
|
||||
mega or gigabytes.
|
||||
@ -185,7 +189,7 @@ number of factors, such as rounding up to page boundaries or the total
|
||||
availability of memory on the system. The user is required to re-read
|
||||
this file after a write to guarantee the value committed by the kernel.
|
||||
|
||||
# echo -n 1 > memory.limit_in_bytes
|
||||
# echo 1 > memory.limit_in_bytes
|
||||
# cat memory.limit_in_bytes
|
||||
4096
|
||||
|
||||
@ -197,7 +201,7 @@ caches, RSS and Active pages/Inactive pages are shown.
|
||||
|
||||
The memory.force_empty gives an interface to drop *all* charges by force.
|
||||
|
||||
# echo -n 1 > memory.force_empty
|
||||
# echo 1 > memory.force_empty
|
||||
|
||||
will drop all charges in cgroup. Currently, this is maintained for test.
|
||||
|
||||
|
@ -36,14 +36,15 @@ available (notebooks) or too slow for extensive debug information (like ACPI).
|
||||
Drivers
|
||||
-------
|
||||
|
||||
The OHCI-1394 drivers in drivers/firewire and drivers/ieee1394 initialize
|
||||
the OHCI-1394 controllers to a working state and can be used to enable
|
||||
physical DMA. By default you only have to load the driver, and physical
|
||||
DMA access will be granted to all remote nodes, but it can be turned off
|
||||
when using the ohci1394 driver.
|
||||
The ohci1394 driver in drivers/ieee1394 initializes the OHCI-1394 controllers
|
||||
to a working state and enables physical DMA by default for all remote nodes.
|
||||
This can be turned off by ohci1394's module parameter phys_dma=0.
|
||||
|
||||
Because these drivers depend on the PCI enumeration to be completed, an
|
||||
initialization routine which can runs pretty early (long before console_init(),
|
||||
The alternative firewire-ohci driver in drivers/firewire uses filtered physical
|
||||
DMA, hence is not yet suitable for remote debugging.
|
||||
|
||||
Because ohci1394 depends on the PCI enumeration to be completed, an
|
||||
initialization routine which runs pretty early (long before console_init()
|
||||
which makes the printk buffer appear on the console can be called) was written.
|
||||
|
||||
To activate it, enable CONFIG_PROVIDE_OHCI1394_DMA_INIT (Kernel hacking menu:
|
||||
|
@ -172,6 +172,16 @@ Who: Len Brown <len.brown@intel.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: ide-tape driver
|
||||
When: July 2008
|
||||
Files: drivers/ide/ide-tape.c
|
||||
Why: This driver might not have any users anymore and maintaining it for no
|
||||
reason is an effort no one wants to make.
|
||||
Who: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Borislav Petkov
|
||||
<petkovbb@googlemail.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: libata spindown skipping and warning
|
||||
When: Dec 2008
|
||||
Why: Some halt(8) implementations synchronize caches for and spin
|
||||
@ -306,3 +316,15 @@ Why: Largely unmaintained and almost entirely unused. File system
|
||||
is largely pointless as without a lot of work only the most
|
||||
trivial of Solaris binaries can work with the emulation code.
|
||||
Who: David S. Miller <davem@davemloft.net>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: init_mm export
|
||||
When: 2.6.26
|
||||
Why: Not used in-tree. The current out-of-tree users used it to
|
||||
work around problems in the CPA code which should be resolved
|
||||
by now. One usecase was described to provide verification code
|
||||
of the CPA operation. That's a good idea in general, but such
|
||||
code / infrastructure should be in the kernel and not in some
|
||||
out-of-tree driver.
|
||||
Who: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
@ -1506,13 +1506,13 @@ laptop_mode
|
||||
-----------
|
||||
|
||||
laptop_mode is a knob that controls "laptop mode". All the things that are
|
||||
controlled by this knob are discussed in Documentation/laptop-mode.txt.
|
||||
controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
|
||||
|
||||
block_dump
|
||||
----------
|
||||
|
||||
block_dump enables block I/O debugging when set to a nonzero value. More
|
||||
information on block I/O debugging is in Documentation/laptop-mode.txt.
|
||||
information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
|
||||
|
||||
swap_token_timeout
|
||||
------------------
|
||||
|
@ -2,6 +2,9 @@ GPIO Interfaces
|
||||
|
||||
This provides an overview of GPIO access conventions on Linux.
|
||||
|
||||
These calls use the gpio_* naming prefix. No other calls should use that
|
||||
prefix, or the related __gpio_* prefix.
|
||||
|
||||
|
||||
What is a GPIO?
|
||||
===============
|
||||
@ -69,11 +72,13 @@ in this document, but drivers acting as clients to the GPIO interface must
|
||||
not care how it's implemented.)
|
||||
|
||||
That said, if the convention is supported on their platform, drivers should
|
||||
use it when possible. Platforms should declare GENERIC_GPIO support in
|
||||
Kconfig (boolean true), which multi-platform drivers can depend on when
|
||||
using the include file:
|
||||
use it when possible. Platforms must declare GENERIC_GPIO support in their
|
||||
Kconfig (boolean true), and provide an <asm/gpio.h> file. Drivers that can't
|
||||
work without standard GPIO calls should have Kconfig entries which depend
|
||||
on GENERIC_GPIO. The GPIO calls are available, either as "real code" or as
|
||||
optimized-away stubs, when drivers use the include file:
|
||||
|
||||
#include <asm/gpio.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
If you stick to this convention then it'll be easier for other developers to
|
||||
see what your code is doing, and help maintain it.
|
||||
@ -316,6 +321,9 @@ pulldowns integrated on some platforms. Not all platforms support them,
|
||||
or support them in the same way; and any given board might use external
|
||||
pullups (or pulldowns) so that the on-chip ones should not be used.
|
||||
(When a circuit needs 5 kOhm, on-chip 100 kOhm resistors won't do.)
|
||||
Likewise drive strength (2 mA vs 20 mA) and voltage (1.8V vs 3.3V) is a
|
||||
platform-specific issue, as are models like (not) having a one-to-one
|
||||
correspondence between configurable pins and GPIOs.
|
||||
|
||||
There are other system-specific mechanisms that are not specified here,
|
||||
like the aforementioned options for input de-glitching and wire-OR output.
|
||||
|
12
Documentation/ide/00-INDEX
Normal file
12
Documentation/ide/00-INDEX
Normal file
@ -0,0 +1,12 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
ChangeLog.ide-cd.1994-2004
|
||||
- ide-cd changelog
|
||||
ChangeLog.ide-floppy.1996-2002
|
||||
- ide-floppy changelog
|
||||
ChangeLog.ide-tape.1995-2002
|
||||
- ide-tape changelog
|
||||
ide-tape.txt
|
||||
- info on the IDE ATAPI streaming tape driver
|
||||
ide.txt
|
||||
- important info for users of ATA devices (IDE/EIDE disks and CD-ROMS).
|
@ -3,11 +3,11 @@
|
||||
|
||||
==============================================================================
|
||||
|
||||
|
||||
|
||||
The hdparm utility can be used to control various IDE features on a
|
||||
running system. It is packaged separately. Please Look for it on popular
|
||||
linux FTP sites.
|
||||
|
||||
|
||||
|
||||
|
||||
*** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
|
||||
@ -51,7 +51,7 @@ Common pitfalls:
|
||||
|
||||
================================================================================
|
||||
|
||||
This is the multiple IDE interface driver, as evolved from hd.c.
|
||||
This is the multiple IDE interface driver, as evolved from hd.c.
|
||||
|
||||
It supports up to 9 IDE interfaces per default, on one or more IRQs (usually
|
||||
14 & 15). There can be up to two drives per interface, as per the ATA-6 spec.
|
||||
@ -215,17 +215,17 @@ Summary of ide driver parameters for kernel command line
|
||||
--------------------------------------------------------
|
||||
|
||||
"hdx=" is recognized for all "x" from "a" to "h", such as "hdc".
|
||||
|
||||
|
||||
"idex=" is recognized for all "x" from "0" to "3", such as "ide1".
|
||||
|
||||
"hdx=noprobe" : drive may be present, but do not probe for it
|
||||
|
||||
|
||||
"hdx=none" : drive is NOT present, ignore cmos and do not probe
|
||||
|
||||
|
||||
"hdx=nowerr" : ignore the WRERR_STAT bit on this drive
|
||||
|
||||
|
||||
"hdx=cdrom" : drive is present, and is a cdrom drive
|
||||
|
||||
|
||||
"hdx=cyl,head,sect" : disk drive is present, with specified geometry
|
||||
|
||||
"hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive)
|
||||
@ -258,12 +258,10 @@ Summary of ide driver parameters for kernel command line
|
||||
As for VLB, it is safest to not specify it.
|
||||
Bigger values are safer than smaller ones.
|
||||
|
||||
"idex=noprobe" : do not attempt to access/use this interface
|
||||
|
||||
"idex=base" : probe for an interface at the addr specified,
|
||||
where "base" is usually 0x1f0 or 0x170
|
||||
and "ctl" is assumed to be "base"+0x206
|
||||
|
||||
|
||||
"idex=base,ctl" : specify both base and ctl
|
||||
|
||||
"idex=base,ctl,irq" : specify base, ctl, and irq number
|
||||
@ -274,7 +272,7 @@ Summary of ide driver parameters for kernel command line
|
||||
to take effect.
|
||||
|
||||
"idex=four" : four drives on idex and ide(x^1) share same ports
|
||||
|
||||
|
||||
"idex=reset" : reset interface after probe
|
||||
|
||||
"idex=ata66" : informs the interface that it has an 80c cable
|
||||
@ -307,53 +305,6 @@ Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb"
|
||||
kernel paremeter to enable probing for VLB version of the chipset (PCI ones
|
||||
are detected automatically).
|
||||
|
||||
================================================================================
|
||||
|
||||
IDE ATAPI streaming tape driver
|
||||
-------------------------------
|
||||
|
||||
This driver is a part of the Linux ide driver and works in co-operation
|
||||
with linux/drivers/block/ide.c.
|
||||
|
||||
The driver, in co-operation with ide.c, basically traverses the
|
||||
request-list for the block device interface. The character device
|
||||
interface, on the other hand, creates new requests, adds them
|
||||
to the request-list of the block device, and waits for their completion.
|
||||
|
||||
Pipelined operation mode is now supported on both reads and writes.
|
||||
|
||||
The block device major and minor numbers are determined from the
|
||||
tape's relative position in the ide interfaces, as explained in ide.c.
|
||||
|
||||
The character device interface consists of the following devices:
|
||||
|
||||
ht0 major 37, minor 0 first IDE tape, rewind on close.
|
||||
ht1 major 37, minor 1 second IDE tape, rewind on close.
|
||||
...
|
||||
nht0 major 37, minor 128 first IDE tape, no rewind on close.
|
||||
nht1 major 37, minor 129 second IDE tape, no rewind on close.
|
||||
...
|
||||
|
||||
Run /dev/MAKEDEV to create the above entries.
|
||||
|
||||
The general magnetic tape commands compatible interface, as defined by
|
||||
include/linux/mtio.h, is accessible through the character device.
|
||||
|
||||
General ide driver configuration options, such as the interrupt-unmask
|
||||
flag, can be configured by issuing an ioctl to the block device interface,
|
||||
as any other ide device.
|
||||
|
||||
Our own ide-tape ioctl's can be issued to either the block device or
|
||||
the character device interface.
|
||||
|
||||
Maximal throughput with minimal bus load will usually be achieved in the
|
||||
following scenario:
|
||||
|
||||
1. ide-tape is operating in the pipelined operation mode.
|
||||
2. No buffering is performed by the user backup program.
|
||||
|
||||
|
||||
|
||||
================================================================================
|
||||
|
||||
Some Terminology
|
@ -138,7 +138,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
strict -- Be less tolerant of platforms that are not
|
||||
strictly ACPI specification compliant.
|
||||
|
||||
See also Documentation/pm.txt, pci=noacpi
|
||||
See also Documentation/power/pm.txt, pci=noacpi
|
||||
|
||||
acpi_apic_instance= [ACPI, IOAPIC]
|
||||
Format: <int>
|
||||
@ -177,9 +177,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT
|
||||
|
||||
acpi_no_initrd_override [KNL,ACPI]
|
||||
Disable loading custom ACPI tables from the initramfs
|
||||
|
||||
acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS
|
||||
Format: To spoof as Windows 98: ="Microsoft Windows"
|
||||
|
||||
@ -712,7 +709,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
Format: <cyl>,<head>,<sect>
|
||||
|
||||
hd?= [HW] (E)IDE subsystem
|
||||
hd?lun= See Documentation/ide.txt.
|
||||
hd?lun= See Documentation/ide/ide.txt.
|
||||
|
||||
highmem=nn[KMG] [KNL,BOOT] forces the highmem zone to have an exact
|
||||
size of <nn>. This works even on boxes that have no
|
||||
@ -766,14 +763,14 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
ide= [HW] (E)IDE subsystem
|
||||
Format: ide=nodma or ide=doubler or ide=reverse
|
||||
See Documentation/ide.txt.
|
||||
See Documentation/ide/ide.txt.
|
||||
|
||||
ide?= [HW] (E)IDE subsystem
|
||||
Format: ide?=noprobe or chipset specific parameters.
|
||||
See Documentation/ide.txt.
|
||||
See Documentation/ide/ide.txt.
|
||||
|
||||
idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
|
||||
See Documentation/ide.txt.
|
||||
See Documentation/ide/ide.txt.
|
||||
|
||||
idle= [X86]
|
||||
Format: idle=poll or idle=mwait
|
||||
|
@ -192,7 +192,8 @@ code mapping.
|
||||
The Kprobes API includes a "register" function and an "unregister"
|
||||
function for each type of probe. Here are terse, mini-man-page
|
||||
specifications for these functions and the associated probe handlers
|
||||
that you'll write. See the latter half of this document for examples.
|
||||
that you'll write. See the files in the samples/kprobes/ sub-directory
|
||||
for examples.
|
||||
|
||||
4.1 register_kprobe
|
||||
|
||||
@ -420,249 +421,15 @@ e. Watchpoint probes (which fire on data references).
|
||||
|
||||
8. Kprobes Example
|
||||
|
||||
Here's a sample kernel module showing the use of kprobes to dump a
|
||||
stack trace and selected i386 registers when do_fork() is called.
|
||||
----- cut here -----
|
||||
/*kprobe_example.c*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
/*For each probe you need to allocate a kprobe structure*/
|
||||
static struct kprobe kp;
|
||||
|
||||
/*kprobe pre_handler: called just before the probed instruction is executed*/
|
||||
int handler_pre(struct kprobe *p, struct pt_regs *regs)
|
||||
{
|
||||
printk("pre_handler: p->addr=0x%p, eip=%lx, eflags=0x%lx\n",
|
||||
p->addr, regs->eip, regs->eflags);
|
||||
dump_stack();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*kprobe post_handler: called after the probed instruction is executed*/
|
||||
void handler_post(struct kprobe *p, struct pt_regs *regs, unsigned long flags)
|
||||
{
|
||||
printk("post_handler: p->addr=0x%p, eflags=0x%lx\n",
|
||||
p->addr, regs->eflags);
|
||||
}
|
||||
|
||||
/* fault_handler: this is called if an exception is generated for any
|
||||
* instruction within the pre- or post-handler, or when Kprobes
|
||||
* single-steps the probed instruction.
|
||||
*/
|
||||
int handler_fault(struct kprobe *p, struct pt_regs *regs, int trapnr)
|
||||
{
|
||||
printk("fault_handler: p->addr=0x%p, trap #%dn",
|
||||
p->addr, trapnr);
|
||||
/* Return 0 because we don't handle the fault. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init kprobe_init(void)
|
||||
{
|
||||
int ret;
|
||||
kp.pre_handler = handler_pre;
|
||||
kp.post_handler = handler_post;
|
||||
kp.fault_handler = handler_fault;
|
||||
kp.symbol_name = "do_fork";
|
||||
|
||||
ret = register_kprobe(&kp);
|
||||
if (ret < 0) {
|
||||
printk("register_kprobe failed, returned %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
printk("kprobe registered\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit kprobe_exit(void)
|
||||
{
|
||||
unregister_kprobe(&kp);
|
||||
printk("kprobe unregistered\n");
|
||||
}
|
||||
|
||||
module_init(kprobe_init)
|
||||
module_exit(kprobe_exit)
|
||||
MODULE_LICENSE("GPL");
|
||||
----- cut here -----
|
||||
|
||||
You can build the kernel module, kprobe-example.ko, using the following
|
||||
Makefile:
|
||||
----- cut here -----
|
||||
obj-m := kprobe-example.o
|
||||
KDIR := /lib/modules/$(shell uname -r)/build
|
||||
PWD := $(shell pwd)
|
||||
default:
|
||||
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
|
||||
clean:
|
||||
rm -f *.mod.c *.ko *.o
|
||||
----- cut here -----
|
||||
|
||||
$ make
|
||||
$ su -
|
||||
...
|
||||
# insmod kprobe-example.ko
|
||||
|
||||
You will see the trace data in /var/log/messages and on the console
|
||||
whenever do_fork() is invoked to create a new process.
|
||||
See samples/kprobes/kprobe_example.c
|
||||
|
||||
9. Jprobes Example
|
||||
|
||||
Here's a sample kernel module showing the use of jprobes to dump
|
||||
the arguments of do_fork().
|
||||
----- cut here -----
|
||||
/*jprobe-example.c */
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/kprobes.h>
|
||||
|
||||
/*
|
||||
* Jumper probe for do_fork.
|
||||
* Mirror principle enables access to arguments of the probed routine
|
||||
* from the probe handler.
|
||||
*/
|
||||
|
||||
/* Proxy routine having the same arguments as actual do_fork() routine */
|
||||
long jdo_fork(unsigned long clone_flags, unsigned long stack_start,
|
||||
struct pt_regs *regs, unsigned long stack_size,
|
||||
int __user * parent_tidptr, int __user * child_tidptr)
|
||||
{
|
||||
printk("jprobe: clone_flags=0x%lx, stack_size=0x%lx, regs=0x%p\n",
|
||||
clone_flags, stack_size, regs);
|
||||
/* Always end with a call to jprobe_return(). */
|
||||
jprobe_return();
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct jprobe my_jprobe = {
|
||||
.entry = jdo_fork
|
||||
};
|
||||
|
||||
static int __init jprobe_init(void)
|
||||
{
|
||||
int ret;
|
||||
my_jprobe.kp.symbol_name = "do_fork";
|
||||
|
||||
if ((ret = register_jprobe(&my_jprobe)) <0) {
|
||||
printk("register_jprobe failed, returned %d\n", ret);
|
||||
return -1;
|
||||
}
|
||||
printk("Planted jprobe at %p, handler addr %p\n",
|
||||
my_jprobe.kp.addr, my_jprobe.entry);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit jprobe_exit(void)
|
||||
{
|
||||
unregister_jprobe(&my_jprobe);
|
||||
printk("jprobe unregistered\n");
|
||||
}
|
||||
|
||||
module_init(jprobe_init)
|
||||
module_exit(jprobe_exit)
|
||||
MODULE_LICENSE("GPL");
|
||||
----- cut here -----
|
||||
|
||||
Build and insert the kernel module as shown in the above kprobe
|
||||
example. You will see the trace data in /var/log/messages and on
|
||||
the console whenever do_fork() is invoked to create a new process.
|
||||
(Some messages may be suppressed if syslogd is configured to
|
||||
eliminate duplicate messages.)
|
||||
See samples/kprobes/jprobe_example.c
|
||||
|
||||
10. Kretprobes Example
|
||||
|
||||
Here's a sample kernel module showing the use of return probes to
|
||||
report failed calls to sys_open().
|
||||
----- cut here -----
|
||||
/*kretprobe-example.c*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/ktime.h>
|
||||
|
||||
/* per-instance private data */
|
||||
struct my_data {
|
||||
ktime_t entry_stamp;
|
||||
};
|
||||
|
||||
static const char *probed_func = "sys_open";
|
||||
|
||||
/* Timestamp function entry. */
|
||||
static int entry_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
|
||||
{
|
||||
struct my_data *data;
|
||||
|
||||
if(!current->mm)
|
||||
return 1; /* skip kernel threads */
|
||||
|
||||
data = (struct my_data *)ri->data;
|
||||
data->entry_stamp = ktime_get();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* If the probed function failed, log the return value and duration.
|
||||
* Duration may turn out to be zero consistently, depending upon the
|
||||
* granularity of time accounting on the platform. */
|
||||
static int return_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
|
||||
{
|
||||
int retval = regs_return_value(regs);
|
||||
struct my_data *data = (struct my_data *)ri->data;
|
||||
s64 delta;
|
||||
ktime_t now;
|
||||
|
||||
if (retval < 0) {
|
||||
now = ktime_get();
|
||||
delta = ktime_to_ns(ktime_sub(now, data->entry_stamp));
|
||||
printk("%s: return val = %d (duration = %lld ns)\n",
|
||||
probed_func, retval, delta);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct kretprobe my_kretprobe = {
|
||||
.handler = return_handler,
|
||||
.entry_handler = entry_handler,
|
||||
.data_size = sizeof(struct my_data),
|
||||
.maxactive = 20, /* probe up to 20 instances concurrently */
|
||||
};
|
||||
|
||||
static int __init kretprobe_init(void)
|
||||
{
|
||||
int ret;
|
||||
my_kretprobe.kp.symbol_name = (char *)probed_func;
|
||||
|
||||
if ((ret = register_kretprobe(&my_kretprobe)) < 0) {
|
||||
printk("register_kretprobe failed, returned %d\n", ret);
|
||||
return -1;
|
||||
}
|
||||
printk("Kretprobe active on %s\n", my_kretprobe.kp.symbol_name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit kretprobe_exit(void)
|
||||
{
|
||||
unregister_kretprobe(&my_kretprobe);
|
||||
printk("kretprobe unregistered\n");
|
||||
/* nmissed > 0 suggests that maxactive was set too low. */
|
||||
printk("Missed probing %d instances of %s\n",
|
||||
my_kretprobe.nmissed, probed_func);
|
||||
}
|
||||
|
||||
module_init(kretprobe_init)
|
||||
module_exit(kretprobe_exit)
|
||||
MODULE_LICENSE("GPL");
|
||||
----- cut here -----
|
||||
|
||||
Build and insert the kernel module as shown in the above kprobe
|
||||
example. You will see the trace data in /var/log/messages and on the
|
||||
console whenever sys_open() returns a negative value. (Some messages
|
||||
may be suppressed if syslogd is configured to eliminate duplicate
|
||||
messages.)
|
||||
See samples/kprobes/kretprobe_example.c
|
||||
|
||||
For additional information on Kprobes, refer to the following URLs:
|
||||
http://www-106.ibm.com/developerworks/library/l-kprobes.html?ca=dgr-lnxw42Kprobe
|
||||
|
@ -2,6 +2,8 @@
|
||||
- This file
|
||||
acer-wmi.txt
|
||||
- information on the Acer Laptop WMI Extras driver.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
sony-laptop.txt
|
||||
- Sony Notebook Control Driver (SNC) Readme.
|
||||
sonypi.txt
|
||||
|
@ -48,7 +48,7 @@ DSDT.
|
||||
|
||||
To send me the DSDT, as root/sudo:
|
||||
|
||||
cat /sys/firmware/acpi/DSDT > dsdt
|
||||
cat /sys/firmware/acpi/tables/DSDT > dsdt
|
||||
|
||||
And send me the resulting 'dsdt' file.
|
||||
|
||||
@ -169,7 +169,7 @@ can be added to acer-wmi.
|
||||
|
||||
The LED is exposed through the LED subsystem, and can be found in:
|
||||
|
||||
/sys/devices/platform/acer-wmi/leds/acer-mail:green/
|
||||
/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
|
||||
|
||||
The mail LED is autodetected, so if you don't have one, the LED device won't
|
||||
be registered.
|
||||
|
@ -486,9 +486,12 @@ static void concat(char *dst, char *args[])
|
||||
unsigned int i, len = 0;
|
||||
|
||||
for (i = 0; args[i]; i++) {
|
||||
if (i) {
|
||||
strcat(dst+len, " ");
|
||||
len++;
|
||||
}
|
||||
strcpy(dst+len, args[i]);
|
||||
strcat(dst+len, " ");
|
||||
len += strlen(args[i]) + 1;
|
||||
len += strlen(args[i]);
|
||||
}
|
||||
/* In case it's empty. */
|
||||
dst[len] = '\0';
|
||||
|
@ -123,7 +123,8 @@ initialization with a pointer to a structure describing the driver
|
||||
|
||||
|
||||
The ID table is an array of struct pci_device_id entries ending with an
|
||||
all-zero entry. Each entry consists of:
|
||||
all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred
|
||||
method of declaring the table. Each entry consists of:
|
||||
|
||||
vendor,device Vendor and device ID to match (or PCI_ANY_ID)
|
||||
|
||||
@ -191,7 +192,8 @@ Tips on when/where to use the above attributes:
|
||||
|
||||
o Do not mark the struct pci_driver.
|
||||
|
||||
o The ID table array should be marked __devinitdata.
|
||||
o The ID table array should be marked __devinitconst; this is done
|
||||
automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
|
||||
|
||||
o The probe() and remove() functions should be marked __devinit
|
||||
and __devexit respectively. All initialization functions
|
||||
|
@ -14,6 +14,12 @@ notifiers.txt
|
||||
- Registering suspend notifiers in device drivers
|
||||
pci.txt
|
||||
- How the PCI Subsystem Does Power Management
|
||||
pm.txt
|
||||
- info on Linux power management support.
|
||||
pm_qos_interface.txt
|
||||
- info on Linux PM Quality of Service interface
|
||||
power_supply_class.txt
|
||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||
s2ram.txt
|
||||
- How to get suspend to ram working (and debug it when it isn't)
|
||||
states.txt
|
||||
|
@ -108,7 +108,7 @@ void pm_unregister_all(pm_callback cback);
|
||||
* EINVAL if the request is not supported
|
||||
* EBUSY if the device is now busy and cannot handle the request
|
||||
* ENOMEM if the device was unable to handle the request due to memory
|
||||
*
|
||||
*
|
||||
* Details: The device request callback will be called before the
|
||||
* device/system enters a suspend state (ACPI D1-D3) or
|
||||
* or after the device/system resumes from suspend (ACPI D0).
|
@ -142,7 +142,7 @@ of idleness (idle, busy, and newly idle):
|
||||
|
||||
/proc/<pid>/schedstat
|
||||
----------------
|
||||
schedstats also adds a new /proc/<pid/schedstat file to include some of
|
||||
schedstats also adds a new /proc/<pid>/schedstat file to include some of
|
||||
the same information on a per-process level. There are three fields in
|
||||
this file correlating for that process to:
|
||||
1) time spent on the cpu
|
||||
|
@ -109,4 +109,10 @@
|
||||
** 8.replace pci_alloc_consistent()/pci_free_consistent() with kmalloc()/kfree() in arcmsr_iop_message_xfer()
|
||||
** 9. fix the release of dma memory for type B in arcmsr_free_ccb_pool()
|
||||
** 10.fix the arcmsr_polling_hbb_ccbdone()
|
||||
** 1.20.00.15 02/27/2008 Erich Chen & Nick Cheng
|
||||
** 1.arcmsr_iop_message_xfer() is called from atomic context under the
|
||||
** queuecommand scsi_host_template handler. James Bottomley pointed out
|
||||
** that the current GFP_KERNEL|GFP_DMA flags are wrong: firstly we are in
|
||||
** atomic context, secondly this memory is not used for DMA.
|
||||
** Also removed some unneeded casts. Thanks to Daniel Drake <dsd@gentoo.org>
|
||||
**************************************************************************
|
||||
|
@ -143,10 +143,10 @@ type Strings which represent the thermal zone type.
|
||||
This is given by thermal zone driver as part of registration.
|
||||
Eg: "ACPI thermal zone" indicates it's a ACPI thermal device
|
||||
RO
|
||||
Optional
|
||||
Required
|
||||
|
||||
temp Current temperature as reported by thermal zone (sensor)
|
||||
Unit: degree Celsius
|
||||
Unit: millidegree Celsius
|
||||
RO
|
||||
Required
|
||||
|
||||
@ -163,7 +163,7 @@ mode One of the predefined values in [kernel, user]
|
||||
charge of the thermal management.
|
||||
|
||||
trip_point_[0-*]_temp The temperature above which trip point will be fired
|
||||
Unit: degree Celsius
|
||||
Unit: millidegree Celsius
|
||||
RO
|
||||
Optional
|
||||
|
||||
@ -193,7 +193,7 @@ type String which represents the type of device
|
||||
eg. For memory controller device on intel_menlow platform:
|
||||
this should be "Memory controller"
|
||||
RO
|
||||
Optional
|
||||
Required
|
||||
|
||||
max_state The maximum permissible cooling state of this cooling device.
|
||||
RO
|
||||
@ -219,16 +219,16 @@ the sys I/F structure will be built like this:
|
||||
|
||||
|thermal_zone1:
|
||||
|-----type: ACPI thermal zone
|
||||
|-----temp: 37
|
||||
|-----temp: 37000
|
||||
|-----mode: kernel
|
||||
|-----trip_point_0_temp: 100
|
||||
|-----trip_point_0_temp: 100000
|
||||
|-----trip_point_0_type: critical
|
||||
|-----trip_point_1_temp: 80
|
||||
|-----trip_point_1_temp: 80000
|
||||
|-----trip_point_1_type: passive
|
||||
|-----trip_point_2_temp: 70
|
||||
|-----trip_point_2_type: active[0]
|
||||
|-----trip_point_3_temp: 60
|
||||
|-----trip_point_3_type: active[1]
|
||||
|-----trip_point_2_temp: 70000
|
||||
|-----trip_point_2_type: active0
|
||||
|-----trip_point_3_temp: 60000
|
||||
|-----trip_point_3_type: active1
|
||||
|-----cdev0: --->/sys/class/thermal/cooling_device0
|
||||
|-----cdev0_trip_point: 1 /* cdev0 can be used for passive */
|
||||
|-----cdev1: --->/sys/class/thermal/cooling_device3
|
||||
|
@ -1,5 +1,5 @@
|
||||
usb-help.txt
|
||||
2000-July-12
|
||||
2008-Mar-7
|
||||
|
||||
For USB help other than the readme files that are located in
|
||||
Documentation/usb/*, see the following:
|
||||
@ -10,9 +10,7 @@ Linux-USB project: http://www.linux-usb.org
|
||||
Linux USB Guide: http://linux-usb.sourceforge.net
|
||||
Linux-USB device overview (working devices and drivers):
|
||||
http://www.qbik.ch/usb/devices/
|
||||
|
||||
The Linux-USB mailing lists are:
|
||||
linux-usb-users@lists.sourceforge.net for general user help
|
||||
linux-usb-devel@lists.sourceforge.net for developer discussions
|
||||
|
||||
The Linux-USB mailing list is at linux-usb@vger.kernel.org
|
||||
|
||||
###
|
||||
|
@ -50,14 +50,14 @@ F.e. in order to boot just with sanity checks and red zoning one would specify:
|
||||
|
||||
Trying to find an issue in the dentry cache? Try
|
||||
|
||||
slub_debug=,dentry_cache
|
||||
slub_debug=,dentry
|
||||
|
||||
to only enable debugging on the dentry cache.
|
||||
|
||||
Red zoning and tracking may realign the slab. We can just apply sanity checks
|
||||
to the dentry cache with
|
||||
|
||||
slub_debug=F,dentry_cache
|
||||
slub_debug=F,dentry
|
||||
|
||||
In case you forgot to enable debugging on the kernel command line: It is
|
||||
possible to enable debugging manually when the kernel is up. Look at the
|
||||
|
41
MAINTAINERS
41
MAINTAINERS
@ -266,6 +266,15 @@ L: linux-acpi@vger.kernel.org
|
||||
W: http://www.lesswatts.org/projects/acpi/
|
||||
S: Maintained
|
||||
|
||||
AD1889 ALSA SOUND DRIVER
|
||||
P: Kyle McMartin
|
||||
M: kyle@parisc-linux.org
|
||||
P: Thibaut Varene
|
||||
M: T-Bone@parisc-linux.org
|
||||
W: http://wiki.parisc-linux.org/AD1889
|
||||
L: linux-parisc@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
ADM1025 HARDWARE MONITOR DRIVER
|
||||
P: Jean Delvare
|
||||
M: khali@linux-fr.org
|
||||
@ -767,14 +776,14 @@ S: Maintained
|
||||
|
||||
BLACKFIN ARCHITECTURE
|
||||
P: Bryan Wu
|
||||
M: bryan.wu@analog.com
|
||||
M: cooloney@kernel.org
|
||||
L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
|
||||
W: http://blackfin.uclinux.org
|
||||
S: Supported
|
||||
|
||||
BLACKFIN EMAC DRIVER
|
||||
P: Bryan Wu
|
||||
M: bryan.wu@analog.com
|
||||
M: cooloney@kernel.org
|
||||
L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
|
||||
W: http://blackfin.uclinux.org
|
||||
S: Supported
|
||||
@ -1138,6 +1147,12 @@ L: accessrunner-general@lists.sourceforge.net
|
||||
W: http://accessrunner.sourceforge.net/
|
||||
S: Maintained
|
||||
|
||||
CONTROL GROUPS (CGROUPS)
|
||||
P: Paul Menage
|
||||
M: menage@google.com
|
||||
L: containers@lists.linux-foundation.org
|
||||
S: Maintained
|
||||
|
||||
CORETEMP HARDWARE MONITORING DRIVER
|
||||
P: Rudolf Marek
|
||||
M: r.marek@assembler.cz
|
||||
@ -1589,6 +1604,13 @@ L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
W: http://linux-fbdev.sourceforge.net/
|
||||
S: Maintained
|
||||
|
||||
FREESCALE DMA DRIVER
|
||||
P; Zhang Wei
|
||||
M: wei.zhang@freescale.com
|
||||
L: linuxppc-embedded@ozlabs.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
FREESCALE SOC FS_ENET DRIVER
|
||||
P: Pantelis Antoniou
|
||||
M: pantelis.antoniou@gmail.com
|
||||
@ -2119,7 +2141,7 @@ L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
IPATH DRIVER:
|
||||
P: Arthur Jones
|
||||
P: Ralph Campbell
|
||||
M: infinipath@qlogic.com
|
||||
L: general@lists.openfabrics.org
|
||||
T: git git://git.qlogic.com/ipath-linux-2.6
|
||||
@ -2602,6 +2624,17 @@ L: linux-kernel@vger.kernel.org
|
||||
W: http://www.linux-mm.org
|
||||
S: Maintained
|
||||
|
||||
MEMORY RESOURCE CONTROLLER
|
||||
P: Balbir Singh
|
||||
M: balbir@linux.vnet.ibm.com
|
||||
P: Pavel Emelyanov
|
||||
M: xemul@openvz.org
|
||||
P: KAMEZAWA Hiroyuki
|
||||
M: kamezawa.hiroyu@jp.fujitsu.com
|
||||
L: linux-mm@kvack.org
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
MEI MN10300/AM33 PORT
|
||||
P: David Howells
|
||||
M: dhowells@redhat.com
|
||||
@ -2726,6 +2759,8 @@ S: Maintained
|
||||
NETEFFECT IWARP RNIC DRIVER (IW_NES)
|
||||
P: Faisal Latif
|
||||
M: flatif@neteffect.com
|
||||
P: Nishi Gupta
|
||||
M: ngupta@neteffect.com
|
||||
P: Glenn Streiff
|
||||
M: gstreiff@neteffect.com
|
||||
L: general@lists.openfabrics.org
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 25
|
||||
EXTRAVERSION = -rc3
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Funky Weasel is Jiggy wit it
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -27,5 +27,12 @@ config KPROBES
|
||||
for kernel debugging, non-intrusive instrumentation and testing.
|
||||
If in doubt, say "N".
|
||||
|
||||
config KRETPROBES
|
||||
def_bool y
|
||||
depends on KPROBES && HAVE_KRETPROBES
|
||||
|
||||
config HAVE_KPROBES
|
||||
def_bool n
|
||||
|
||||
config HAVE_KRETPROBES
|
||||
def_bool n
|
||||
|
@ -330,6 +330,9 @@ config PCI_DOMAINS
|
||||
config PCI_SYSCALL
|
||||
def_bool PCI
|
||||
|
||||
config IOMMU_HELPER
|
||||
def_bool PCI
|
||||
|
||||
config ALPHA_CORE_AGP
|
||||
bool
|
||||
depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/iommu-helper.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/hwrpb.h>
|
||||
@ -31,7 +32,6 @@
|
||||
#endif
|
||||
|
||||
#define DEBUG_NODIRECT 0
|
||||
#define DEBUG_FORCEDAC 0
|
||||
|
||||
#define ISA_DMA_MASK 0x00ffffff
|
||||
|
||||
@ -128,37 +128,55 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base,
|
||||
|
||||
/* Must be called with the arena lock held */
|
||||
static long
|
||||
iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask)
|
||||
iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
|
||||
long n, long mask)
|
||||
{
|
||||
unsigned long *ptes;
|
||||
long i, p, nent;
|
||||
int pass = 0;
|
||||
unsigned long base;
|
||||
unsigned long boundary_size;
|
||||
|
||||
base = arena->dma_base >> PAGE_SHIFT;
|
||||
if (dev) {
|
||||
boundary_size = dma_get_seg_boundary(dev) + 1;
|
||||
boundary_size >>= PAGE_SHIFT;
|
||||
} else {
|
||||
boundary_size = 1UL << (32 - PAGE_SHIFT);
|
||||
}
|
||||
|
||||
/* Search forward for the first mask-aligned sequence of N free ptes */
|
||||
ptes = arena->ptes;
|
||||
nent = arena->size >> PAGE_SHIFT;
|
||||
p = (arena->next_entry + mask) & ~mask;
|
||||
p = ALIGN(arena->next_entry, mask + 1);
|
||||
i = 0;
|
||||
|
||||
again:
|
||||
while (i < n && p+i < nent) {
|
||||
if (!i && iommu_is_span_boundary(p, n, base, boundary_size)) {
|
||||
p = ALIGN(p + 1, mask + 1);
|
||||
goto again;
|
||||
}
|
||||
|
||||
if (ptes[p+i])
|
||||
p = (p + i + 1 + mask) & ~mask, i = 0;
|
||||
p = ALIGN(p + i + 1, mask + 1), i = 0;
|
||||
else
|
||||
i = i + 1;
|
||||
}
|
||||
|
||||
if (i < n) {
|
||||
/* Reached the end. Flush the TLB and restart the
|
||||
search from the beginning. */
|
||||
alpha_mv.mv_pci_tbi(arena->hose, 0, -1);
|
||||
if (pass < 1) {
|
||||
/*
|
||||
* Reached the end. Flush the TLB and restart
|
||||
* the search from the beginning.
|
||||
*/
|
||||
alpha_mv.mv_pci_tbi(arena->hose, 0, -1);
|
||||
|
||||
p = 0, i = 0;
|
||||
while (i < n && p+i < nent) {
|
||||
if (ptes[p+i])
|
||||
p = (p + i + 1 + mask) & ~mask, i = 0;
|
||||
else
|
||||
i = i + 1;
|
||||
}
|
||||
|
||||
if (i < n)
|
||||
pass++;
|
||||
p = 0;
|
||||
i = 0;
|
||||
goto again;
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -168,7 +186,8 @@ iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask)
|
||||
}
|
||||
|
||||
static long
|
||||
iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align)
|
||||
iommu_arena_alloc(struct device *dev, struct pci_iommu_arena *arena, long n,
|
||||
unsigned int align)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned long *ptes;
|
||||
@ -179,7 +198,7 @@ iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align)
|
||||
/* Search for N empty ptes */
|
||||
ptes = arena->ptes;
|
||||
mask = max(align, arena->align_entry) - 1;
|
||||
p = iommu_arena_find_pages(arena, n, mask);
|
||||
p = iommu_arena_find_pages(dev, arena, n, mask);
|
||||
if (p < 0) {
|
||||
spin_unlock_irqrestore(&arena->lock, flags);
|
||||
return -1;
|
||||
@ -229,6 +248,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
|
||||
unsigned long paddr;
|
||||
dma_addr_t ret;
|
||||
unsigned int align = 0;
|
||||
struct device *dev = pdev ? &pdev->dev : NULL;
|
||||
|
||||
paddr = __pa(cpu_addr);
|
||||
|
||||
@ -276,7 +296,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
|
||||
/* Force allocation to 64KB boundary for ISA bridges. */
|
||||
if (pdev && pdev == isa_bridge)
|
||||
align = 8;
|
||||
dma_ofs = iommu_arena_alloc(arena, npages, align);
|
||||
dma_ofs = iommu_arena_alloc(dev, arena, npages, align);
|
||||
if (dma_ofs < 0) {
|
||||
printk(KERN_WARNING "pci_map_single failed: "
|
||||
"could not allocate dma page tables\n");
|
||||
@ -563,7 +583,7 @@ sg_fill(struct device *dev, struct scatterlist *leader, struct scatterlist *end,
|
||||
|
||||
paddr &= ~PAGE_MASK;
|
||||
npages = calc_npages(paddr + size);
|
||||
dma_ofs = iommu_arena_alloc(arena, npages, 0);
|
||||
dma_ofs = iommu_arena_alloc(dev, arena, npages, 0);
|
||||
if (dma_ofs < 0) {
|
||||
/* If we attempted a direct map above but failed, die. */
|
||||
if (leader->dma_address == 0)
|
||||
@ -830,7 +850,7 @@ iommu_reserve(struct pci_iommu_arena *arena, long pg_count, long align_mask)
|
||||
|
||||
/* Search for N empty ptes. */
|
||||
ptes = arena->ptes;
|
||||
p = iommu_arena_find_pages(arena, pg_count, align_mask);
|
||||
p = iommu_arena_find_pages(NULL, arena, pg_count, align_mask);
|
||||
if (p < 0) {
|
||||
spin_unlock_irqrestore(&arena->lock, flags);
|
||||
return -1;
|
||||
|
@ -12,6 +12,7 @@ config ARM
|
||||
select SYS_SUPPORTS_APM_EMULATION
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_KPROBES if (!XIP_KERNEL)
|
||||
select HAVE_KRETPROBES if (HAVE_KPROBES)
|
||||
help
|
||||
The ARM series is a line of low-power-consumption RISC chip designs
|
||||
licensed by ARM Ltd and targeted at embedded applications and
|
||||
@ -939,7 +940,8 @@ config KEXEC
|
||||
|
||||
config ATAGS_PROC
|
||||
bool "Export atags in procfs"
|
||||
default n
|
||||
depends on KEXEC
|
||||
default y
|
||||
help
|
||||
Should the atags used to boot the kernel be exported in an "atags"
|
||||
file in procfs. Useful with kexec.
|
||||
|
@ -251,6 +251,7 @@ define archhelp
|
||||
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
|
||||
echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
|
||||
echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
|
||||
echo ' uImage - U-Boot wrapped zImage'
|
||||
echo ' bootpImage - Combined zImage and initial RAM disk'
|
||||
echo ' (supply initrd image via make variable INITRD=<path>)'
|
||||
echo ' install - Install uncompressed kernel'
|
||||
|
@ -274,7 +274,7 @@ static int it8152_pci_platform_notify_remove(struct device *dev)
|
||||
int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
|
||||
{
|
||||
dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
|
||||
__FUNCTION__, dma_addr, size);
|
||||
__func__, dma_addr, size);
|
||||
return (dev->bus == &pci_bus_type) &&
|
||||
((dma_addr + size - PHYS_OFFSET) >= SZ_64M);
|
||||
}
|
||||
@ -289,7 +289,7 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
|
||||
*/
|
||||
int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
|
||||
{
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
|
||||
if (mask >= PHYS_OFFSET + SZ_64M - 1)
|
||||
return 0;
|
||||
|
||||
@ -299,7 +299,7 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
|
||||
int
|
||||
pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
|
||||
{
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
|
||||
if (mask >= PHYS_OFFSET + SZ_64M - 1)
|
||||
return 0;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24-rc5
|
||||
# Mon Dec 17 20:04:38 2007
|
||||
# Linux kernel version: 2.6.25-rc3
|
||||
# Mon Mar 3 03:39:48 2008
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
@ -40,17 +41,22 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
@ -64,17 +70,26 @@ CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
@ -102,6 +117,8 @@ CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
@ -130,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
# CONFIG_ARCH_KS8695 is not set
|
||||
# CONFIG_ARCH_NS9XXX is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_ARCH_ORION is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
@ -139,6 +157,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_ARCH_OMAP=y
|
||||
# CONFIG_ARCH_MSM7X00A is not set
|
||||
|
||||
#
|
||||
# TI OMAP Implementations
|
||||
@ -155,6 +174,7 @@ CONFIG_OMAP_MUX=y
|
||||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
CONFIG_OMAP_MUX_WARNINGS=y
|
||||
CONFIG_OMAP_MCBSP=y
|
||||
# CONFIG_OMAP_MMU_FWK is not set
|
||||
# CONFIG_OMAP_MPU_TIMER is not set
|
||||
CONFIG_OMAP_32K_TIMER=y
|
||||
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||
@ -266,6 +286,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_ATAGS_PROC is not set
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -311,9 +332,10 @@ CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_SUSPEND_UP_POSSIBLE=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -330,6 +352,7 @@ CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
@ -384,6 +407,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
@ -421,11 +445,13 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HAVE_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
@ -489,6 +515,7 @@ CONFIG_SMC91X=y
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
|
||||
#
|
||||
@ -512,7 +539,6 @@ CONFIG_SLIP_COMPRESSED=y
|
||||
CONFIG_SLHC=y
|
||||
# CONFIG_SLIP_SMART is not set
|
||||
# CONFIG_SLIP_MODE_SLIP6 is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
@ -616,12 +642,10 @@ CONFIG_I2C_OMAP=y
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_ISP1301_OMAP is not set
|
||||
CONFIG_TPS65010=y
|
||||
@ -649,6 +673,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
@ -676,6 +701,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_ADS7828 is not set
|
||||
# CONFIG_SENSORS_THMC50 is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
@ -683,6 +709,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_W83792D is not set
|
||||
# CONFIG_SENSORS_W83793 is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83L786NG is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@ -705,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_MFD_ASIC3 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -802,10 +830,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
@ -826,12 +850,10 @@ CONFIG_EXT2_FS=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
@ -874,8 +896,10 @@ CONFIG_SYSFS=y
|
||||
# CONFIG_EFS_FS is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
@ -946,9 +970,6 @@ CONFIG_NLS_ISO8859_1=y
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
# CONFIG_DLM is not set
|
||||
CONFIG_INSTRUMENTATION=y
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -975,6 +996,7 @@ CONFIG_FRAME_POINTER=y
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
@ -992,6 +1014,9 @@ CONFIG_CRYPTO_CBC=y
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
@ -1006,12 +1031,14 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24-rc5
|
||||
# Mon Dec 17 21:12:45 2007
|
||||
# Linux kernel version: 2.6.25-rc3
|
||||
# Mon Mar 3 03:35:17 2008
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
@ -39,17 +40,22 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
@ -63,17 +69,26 @@ CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
@ -101,6 +116,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
@ -129,6 +146,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
# CONFIG_ARCH_KS8695 is not set
|
||||
# CONFIG_ARCH_NS9XXX is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_ARCH_ORION is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
@ -138,6 +156,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_ARCH_OMAP=y
|
||||
# CONFIG_ARCH_MSM7X00A is not set
|
||||
|
||||
#
|
||||
# TI OMAP Implementations
|
||||
@ -154,6 +173,7 @@ CONFIG_OMAP_MUX=y
|
||||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
CONFIG_OMAP_MUX_WARNINGS=y
|
||||
CONFIG_OMAP_MCBSP=y
|
||||
# CONFIG_OMAP_MMU_FWK is not set
|
||||
# CONFIG_OMAP_MPU_TIMER is not set
|
||||
CONFIG_OMAP_32K_TIMER=y
|
||||
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||
@ -173,13 +193,13 @@ CONFIG_ARCH_OMAP16XX=y
|
||||
#
|
||||
# OMAP Board Type
|
||||
#
|
||||
# CONFIG_MACH_OMAP_INNOVATOR is not set
|
||||
# CONFIG_MACH_OMAP_H2 is not set
|
||||
# CONFIG_MACH_OMAP_H3 is not set
|
||||
CONFIG_MACH_OMAP_INNOVATOR=y
|
||||
CONFIG_MACH_OMAP_H2=y
|
||||
CONFIG_MACH_OMAP_H3=y
|
||||
CONFIG_MACH_OMAP_OSK=y
|
||||
# CONFIG_OMAP_OSK_MISTRAL is not set
|
||||
# CONFIG_MACH_NOKIA770 is not set
|
||||
# CONFIG_MACH_OMAP_GENERIC is not set
|
||||
CONFIG_MACH_NOKIA770=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
|
||||
#
|
||||
# OMAP CPU Speed
|
||||
@ -275,6 +295,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_ATAGS_PROC is not set
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -307,9 +328,10 @@ CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_SUSPEND_UP_POSSIBLE=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -326,6 +348,7 @@ CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
@ -381,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
@ -493,11 +517,13 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_IDE=m
|
||||
CONFIG_BLK_DEV_IDE=m
|
||||
|
||||
@ -519,7 +545,6 @@ CONFIG_IDE_PROC_FS=y
|
||||
#
|
||||
# CONFIG_IDE_GENERIC is not set
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
# CONFIG_IDE_ARM is not set
|
||||
# CONFIG_BLK_DEV_IDEDMA is not set
|
||||
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
@ -553,6 +578,7 @@ CONFIG_SMC91X=y
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
|
||||
#
|
||||
@ -574,7 +600,6 @@ CONFIG_PPP_MULTILINK=y
|
||||
# CONFIG_PPPOL2TP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
CONFIG_SLHC=y
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
@ -671,6 +696,7 @@ CONFIG_HW_RANDOM_OMAP=m
|
||||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_CARDMAN_4000 is not set
|
||||
# CONFIG_CARDMAN_4040 is not set
|
||||
# CONFIG_IPWIRELESS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_I2C=y
|
||||
@ -698,12 +724,10 @@ CONFIG_I2C_OMAP=y
|
||||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_ISP1301_OMAP is not set
|
||||
CONFIG_TPS65010=y
|
||||
@ -731,6 +755,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
@ -758,6 +783,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_ADS7828 is not set
|
||||
# CONFIG_SENSORS_THMC50 is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
@ -765,6 +791,7 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_W83792D is not set
|
||||
# CONFIG_SENSORS_W83793 is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83L786NG is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@ -780,6 +807,7 @@ CONFIG_SSB_POSSIBLE=y
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_MFD_ASIC3 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -865,10 +893,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
@ -889,12 +913,10 @@ CONFIG_EXT2_FS=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
# CONFIG_FUSE_FS is not set
|
||||
@ -948,8 +970,10 @@ CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
@ -1019,9 +1043,6 @@ CONFIG_NLS_ISO8859_1=m
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
# CONFIG_DLM is not set
|
||||
CONFIG_INSTRUMENTATION=y
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
@ -1045,7 +1066,51 @@ CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_MANAGER is not set
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
# CONFIG_CRYPTO_MD5 is not set
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
|
||||
#
|
||||
# Library routines
|
||||
|
@ -11,6 +11,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define ATAG_CORE 0x54410001
|
||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||
|
||||
.type __switch_data, %object
|
||||
__switch_data:
|
||||
.long __mmap_switched
|
||||
|
@ -29,9 +29,6 @@
|
||||
#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
|
||||
#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
|
||||
|
||||
#define ATAG_CORE 0x54410001
|
||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||
|
||||
|
||||
/*
|
||||
* swapper_pg_dir is the virtual address of the initial page table.
|
||||
|
@ -431,6 +431,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __kprobes arch_trampoline_kprobe(struct kprobe *p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct undef_hook kprobes_break_hook = {
|
||||
.instr_mask = 0xffffffff,
|
||||
.instr_val = KPROBE_BREAKPOINT_INSTRUCTION,
|
||||
|
@ -245,10 +245,7 @@ static struct fb_monspecs at91fb_default_monspecs = {
|
||||
|
||||
static void at91_lcdc_power_control(int on)
|
||||
{
|
||||
if (on)
|
||||
at91_set_gpio_value(AT91_PIN_PD12, 0); /* power up */
|
||||
else
|
||||
at91_set_gpio_value(AT91_PIN_PD12, 1); /* power down */
|
||||
at91_set_gpio_value(AT91_PIN_PA30, on);
|
||||
}
|
||||
|
||||
/* Driver datas */
|
||||
|
@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init);
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/* This lock class tells lockdep that GPIO irqs are in a different
|
||||
* category than their parents, so it won't report false recursion.
|
||||
*/
|
||||
static struct lock_class_key gpio_lock_class;
|
||||
|
||||
/*
|
||||
* Called from the processor-specific init to enable GPIO interrupt support.
|
||||
*/
|
||||
@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void)
|
||||
__raw_writel(~0, this->regbase + PIO_IDR);
|
||||
|
||||
for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
|
||||
lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class);
|
||||
|
||||
/*
|
||||
* Can use the "simple" and not "edge" handler since it's
|
||||
* shorter, and the AIC handles interrupts sanely.
|
||||
|
@ -103,7 +103,7 @@ static void
|
||||
h720x_gpio_handler(unsigned int mask, unsigned int irq,
|
||||
struct irq_desc *desc)
|
||||
{
|
||||
IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
|
||||
IRQDBG("%s irq: %d\n", __func__, irq);
|
||||
desc = irq_desc + irq;
|
||||
while (mask) {
|
||||
if (mask & 1) {
|
||||
@ -123,7 +123,7 @@ h720x_gpioa_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
||||
|
||||
mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOA(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ h720x_gpiob_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
||||
unsigned int mask, irq;
|
||||
mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOB(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@ h720x_gpioc_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
||||
|
||||
mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOC(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ h720x_gpiod_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
||||
|
||||
mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOD(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
@ -167,7 +167,7 @@ h720x_gpioe_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
||||
|
||||
mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOE(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
#endif
|
||||
|
@ -54,7 +54,7 @@ static inline int imx_dma_sg_next(imx_dmach_t dma_ch, unsigned int lastcount)
|
||||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -288,7 +288,7 @@ imx_dma_setup_handlers(imx_dmach_t dma_ch,
|
||||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -321,7 +321,7 @@ void imx_dma_enable(imx_dmach_t dma_ch)
|
||||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -365,7 +365,7 @@ int imx_dma_request(imx_dmach_t dma_ch, const char *name)
|
||||
|
||||
if (dma_ch >= IMX_DMA_CHANNELS) {
|
||||
printk(KERN_CRIT "%s: called for non-existed channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -396,7 +396,7 @@ void imx_dma_free(imx_dmach_t dma_ch)
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -456,7 +456,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
|
||||
}
|
||||
}
|
||||
|
||||
printk(KERN_ERR "%s: no free DMA channel found\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: no free DMA channel found\n", __func__);
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -160,21 +160,21 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
|
||||
static void
|
||||
imx_gpio_ack_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
|
||||
}
|
||||
|
||||
static void
|
||||
imx_gpio_mask_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32));
|
||||
}
|
||||
|
||||
static void
|
||||
imx_gpio_unmask_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ static void __init iq81340mc_init(void)
|
||||
static void __init iq81340mc_timer_init(void)
|
||||
{
|
||||
unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
|
||||
iop_init_time(bus_freq);
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ static void __init iq81340sc_init(void)
|
||||
static void __init iq81340sc_timer_init(void)
|
||||
{
|
||||
unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
|
||||
iop_init_time(bus_freq);
|
||||
}
|
||||
|
||||
|
@ -94,13 +94,13 @@ void iop13xx_map_pci_memory(void)
|
||||
, 0, iop13xx_atux_mem_size, MT_DEVICE);
|
||||
if (!iop13xx_atux_mem_base) {
|
||||
printk("%s: atux allocation "
|
||||
"failed\n", __FUNCTION__);
|
||||
"failed\n", __func__);
|
||||
BUG();
|
||||
}
|
||||
} else
|
||||
iop13xx_atux_mem_size = 0;
|
||||
PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
|
||||
__FUNCTION__, atu, iop13xx_atux_mem_size,
|
||||
__func__, atu, iop13xx_atux_mem_size,
|
||||
iop13xx_atux_mem_base);
|
||||
break;
|
||||
case 1:
|
||||
@ -120,13 +120,13 @@ void iop13xx_map_pci_memory(void)
|
||||
, 0, iop13xx_atue_mem_size, MT_DEVICE);
|
||||
if (!iop13xx_atue_mem_base) {
|
||||
printk("%s: atue allocation "
|
||||
"failed\n", __FUNCTION__);
|
||||
"failed\n", __func__);
|
||||
BUG();
|
||||
}
|
||||
} else
|
||||
iop13xx_atue_mem_size = 0;
|
||||
PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
|
||||
__FUNCTION__, atu, iop13xx_atue_mem_size,
|
||||
__func__, atu, iop13xx_atue_mem_size,
|
||||
iop13xx_atue_mem_base);
|
||||
break;
|
||||
}
|
||||
|
@ -519,7 +519,7 @@ void __init iop13xx_platform_init(void)
|
||||
if (iq8134x_flash_resource.end > iq8134x_flash_resource.start)
|
||||
iop13xx_devices[plat_idx++] = &iq8134x_flash;
|
||||
else
|
||||
printk(KERN_ERR "%s: Failed to probe flash size\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: Failed to probe flash size\n", __func__);
|
||||
#endif
|
||||
|
||||
platform_add_devices(iop13xx_devices, plat_idx);
|
||||
|
@ -87,7 +87,7 @@ static inline int check_master_abort(void)
|
||||
if (isr & PCI_ISR_PFE) {
|
||||
/* make sure the Master Abort bit is reset */
|
||||
*PCI_ISR = PCI_ISR_PFE;
|
||||
pr_debug("%s failed\n", __FUNCTION__);
|
||||
pr_debug("%s failed\n", __func__);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ static int __init gtwx5715_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
else
|
||||
rc = gtwx5715_irqmap[slot][pin-1];
|
||||
|
||||
printk("%s: Mapped slot %d pin %d to IRQ %d\n", __FUNCTION__,slot, pin, rc);
|
||||
printk("%s: Mapped slot %d pin %d to IRQ %d\n", __func__, slot, pin, rc);
|
||||
return(rc);
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ netx_hif_ack_irq(unsigned int _irq)
|
||||
val &= ~((1 << 24) << irq);
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -145,7 +145,7 @@ netx_hif_mask_irq(unsigned int _irq)
|
||||
val = readl(NETX_DPMAS_INT_EN);
|
||||
val &= ~((1 << 24) << irq);
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -157,7 +157,7 @@ netx_hif_unmask_irq(unsigned int _irq)
|
||||
val = readl(NETX_DPMAS_INT_EN);
|
||||
val |= (1 << 24) << irq;
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static struct irq_chip netx_hif_chip = {
|
||||
|
@ -31,7 +31,7 @@
|
||||
static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock);
|
||||
|
||||
/* only access gpiores with atomic ops */
|
||||
static DECLARE_BITMAP(gpiores, GPIO_MAX);
|
||||
static DECLARE_BITMAP(gpiores, GPIO_MAX + 1);
|
||||
|
||||
static inline int ns9xxx_valid_gpio(unsigned gpio)
|
||||
{
|
||||
|
@ -350,6 +350,10 @@ static void __init h2_init_smc91x(void)
|
||||
|
||||
static struct i2c_board_info __initdata h2_i2c_board_info[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps65010", 0x48),
|
||||
.type = "tps65010",
|
||||
.irq = OMAP_GPIO_IRQ(58),
|
||||
}, {
|
||||
I2C_BOARD_INFO("isp1301_omap", 0x2d),
|
||||
.type = "isp1301_omap",
|
||||
.irq = OMAP_GPIO_IRQ(2),
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/i2c/tps65010.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
@ -51,6 +52,8 @@
|
||||
#include <asm/arch/mcbsp.h>
|
||||
#include <asm/arch/omap-alsa.h>
|
||||
|
||||
#define H3_TS_GPIO 48
|
||||
|
||||
static int h3_keymap[] = {
|
||||
KEY(0, 0, KEY_LEFT),
|
||||
KEY(0, 1, KEY_RIGHT),
|
||||
@ -373,6 +376,17 @@ static struct platform_device h3_lcd_device = {
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct spi_board_info h3_spi_board_info[] __initdata = {
|
||||
[0] = {
|
||||
.modalias = "tsc2101",
|
||||
.bus_num = 2,
|
||||
.chip_select = 0,
|
||||
.irq = OMAP_GPIO_IRQ(H3_TS_GPIO),
|
||||
.max_speed_hz = 16000000,
|
||||
/* .platform_data = &tsc_platform_data, */
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_mcbsp_reg_cfg mcbsp_regs = {
|
||||
.spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
|
||||
.spcr1 = RINTM(3) | RRST,
|
||||
@ -457,6 +471,14 @@ static struct omap_board_config_kernel h3_config[] __initdata = {
|
||||
{ OMAP_TAG_LCD, &h3_lcd_config },
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata h3_i2c_board_info[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps65010", 0x48),
|
||||
.type = "tps65013",
|
||||
/* .irq = OMAP_GPIO_IRQ(??), */
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
|
||||
{
|
||||
.name = "mmc_slot",
|
||||
|
@ -717,7 +717,7 @@ static int __init omap_pm_init(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OMAP_32K_TIMER
|
||||
error = sysfs_create_file(power_kobj, &sleep_while_idle_attr);
|
||||
error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr);
|
||||
if (error)
|
||||
printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
|
||||
#endif
|
||||
|
@ -42,6 +42,12 @@ static struct map_desc omap2_io_desc[] __initdata = {
|
||||
.length = L3_24XX_SIZE,
|
||||
.type = MT_DEVICE
|
||||
},
|
||||
{
|
||||
.virtual = L4_24XX_VIRT,
|
||||
.pfn = __phys_to_pfn(L4_24XX_PHYS),
|
||||
.length = L4_24XX_SIZE,
|
||||
.type = MT_DEVICE
|
||||
},
|
||||
#ifdef CONFIG_ARCH_OMAP2430
|
||||
{
|
||||
.virtual = L4_WK_243X_VIRT,
|
||||
|
@ -97,14 +97,20 @@
|
||||
#define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4))
|
||||
#define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8))
|
||||
#define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8))
|
||||
#define PCIE_WIN_CTRL(n) ORION_PCIE_REG(0x1820 + ((n) << 4))
|
||||
#define PCIE_WIN_BASE(n) ORION_PCIE_REG(0x1824 + ((n) << 4))
|
||||
#define PCIE_WIN_REMAP(n) ORION_PCIE_REG(0x182c + ((n) << 4))
|
||||
#define PCIE_WIN_CTRL(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x1820 + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x1880))
|
||||
#define PCIE_WIN_BASE(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x1824 + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x1884))
|
||||
#define PCIE_WIN_REMAP(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x182c + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x188c))
|
||||
#define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0)
|
||||
#define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0)
|
||||
#define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4)
|
||||
#define PCIE_MAX_BARS 3
|
||||
#define PCIE_MAX_WINS 5
|
||||
#define PCIE_MAX_WINS 6
|
||||
|
||||
/*
|
||||
* Use PCIE BAR '1' for all DDR banks
|
||||
|
@ -17,7 +17,9 @@
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/mv643xx_i2c.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/timex.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include "common.h"
|
||||
@ -177,8 +179,8 @@ static struct platform_device orion_ehci1 = {
|
||||
|
||||
static struct resource orion_eth_shared_resources[] = {
|
||||
{
|
||||
.start = ORION_ETH_PHYS_BASE,
|
||||
.end = ORION_ETH_PHYS_BASE + 0xffff,
|
||||
.start = ORION_ETH_PHYS_BASE + 0x2000,
|
||||
.end = ORION_ETH_PHYS_BASE + 0x3fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
@ -347,3 +349,21 @@ void __init orion_init(void)
|
||||
platform_device_register(&orion_ehci1);
|
||||
platform_device_register(&orion_i2c);
|
||||
}
|
||||
|
||||
/*
|
||||
* Many orion-based systems have buggy bootloader implementations.
|
||||
* This is a common fixup for bogus memory tags.
|
||||
*/
|
||||
void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t,
|
||||
char **from, struct meminfo *meminfo)
|
||||
{
|
||||
for (; t->hdr.size; t = tag_next(t))
|
||||
if (t->hdr.tag == ATAG_MEM &&
|
||||
(!t->u.mem.size || t->u.mem.size & ~PAGE_MASK ||
|
||||
t->u.mem.start & ~PAGE_MASK)) {
|
||||
printk(KERN_WARNING
|
||||
"Clearing invalid memory bank %dKB@0x%08x\n",
|
||||
t->u.mem.size / 1024, t->u.mem.start);
|
||||
t->hdr.tag = 0;
|
||||
}
|
||||
}
|
||||
|
@ -83,4 +83,10 @@ struct mv_sata_platform_data;
|
||||
|
||||
void __init orion_sata_init(struct mv_sata_platform_data *sata_data);
|
||||
|
||||
struct machine_desc;
|
||||
struct meminfo;
|
||||
struct tag;
|
||||
extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *,
|
||||
char **, struct meminfo *);
|
||||
|
||||
#endif /* __ARCH_ORION_COMMON_H__ */
|
||||
|
@ -319,4 +319,5 @@ MACHINE_START(DNS323, "D-Link DNS-323")
|
||||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
@ -36,7 +36,7 @@ int gpio_direction_input(unsigned pin)
|
||||
unsigned long flags;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ int gpio_direction_output(unsigned pin, int value)
|
||||
int mask;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -141,7 +141,7 @@ int gpio_request(unsigned pin, const char *label)
|
||||
unsigned long flags;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -149,7 +149,7 @@ int gpio_request(unsigned pin, const char *label)
|
||||
|
||||
if (gpio_label[pin]) {
|
||||
pr_debug("%s: GPIO %d already used as %s\n",
|
||||
__FUNCTION__, pin, gpio_label[pin]);
|
||||
__func__, pin, gpio_label[pin]);
|
||||
ret = -EBUSY;
|
||||
} else
|
||||
gpio_label[pin] = label ? label : "?";
|
||||
@ -162,12 +162,12 @@ EXPORT_SYMBOL(gpio_request);
|
||||
void gpio_free(unsigned pin)
|
||||
{
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!gpio_label[pin])
|
||||
pr_warning("%s: GPIO %d already freed\n", __FUNCTION__, pin);
|
||||
pr_warning("%s: GPIO %d already freed\n", __func__, pin);
|
||||
else
|
||||
gpio_label[pin] = NULL;
|
||||
}
|
||||
|
@ -240,4 +240,5 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
|
||||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
@ -357,4 +357,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
|
||||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
@ -976,7 +976,7 @@ static int __init clk_init(void)
|
||||
(*clkp)->set_parent((*clkp), (*clkp)->parent);
|
||||
}
|
||||
pr_debug("%s: clock %s, rate %ld\n",
|
||||
__FUNCTION__, (*clkp)->name, (*clkp)->rate);
|
||||
__func__, (*clkp)->name, (*clkp)->rate);
|
||||
}
|
||||
|
||||
local_clk_use(&ck_pll4);
|
||||
|
@ -192,7 +192,7 @@ void pnx4008_free_channel(int ch)
|
||||
if (!dma_channels[ch].name) {
|
||||
printk(KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, ch);
|
||||
__func__, ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -104,7 +104,7 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{
|
||||
int irq;
|
||||
|
||||
dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin);
|
||||
dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin);
|
||||
|
||||
irq = it8152_pci_map_irq(dev, slot, pin);
|
||||
if (irq)
|
||||
|
@ -504,11 +504,11 @@ static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
|
||||
struct pxamci_platform_data *p_d = dev->platform_data;
|
||||
|
||||
if ((1 << vdd) & p_d->ocr_mask) {
|
||||
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: on\n", __func__);
|
||||
GPCR(105) = GPIO_bit(105);
|
||||
} else {
|
||||
GPSR(105) = GPIO_bit(105);
|
||||
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: off\n", __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
#ifdef DEBUG
|
||||
static unsigned int freq_debug;
|
||||
MODULE_PARM(freq_debug, "i");
|
||||
module_param(freq_debug, uint, 0);
|
||||
MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
|
||||
#else
|
||||
#define freq_debug 0
|
||||
|
@ -81,7 +81,7 @@ void pxa_free_dma (int dma_ch)
|
||||
if (!dma_channels[dma_ch].name) {
|
||||
printk (KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ static int em_x270_mci_init(struct device *dev,
|
||||
"MMC card detect", data);
|
||||
if (err) {
|
||||
printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",
|
||||
__FUNCTION__, err);
|
||||
__func__, err);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -390,11 +390,11 @@ static void mainstone_mci_setpower(struct device *dev, unsigned int vdd)
|
||||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask) {
|
||||
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: on\n", __func__);
|
||||
MST_MSCWR1 |= MST_MSCWR1_MMC_ON;
|
||||
MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL;
|
||||
} else {
|
||||
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: off\n", __func__);
|
||||
MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON;
|
||||
}
|
||||
}
|
||||
|
@ -129,28 +129,20 @@ static void clk_pxa3xx_cken_enable(struct clk *clk)
|
||||
{
|
||||
unsigned long mask = 1ul << (clk->cken & 0x1f);
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
if (clk->cken < 32)
|
||||
CKENA |= mask;
|
||||
else
|
||||
CKENB |= mask;
|
||||
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
static void clk_pxa3xx_cken_disable(struct clk *clk)
|
||||
{
|
||||
unsigned long mask = 1ul << (clk->cken & 0x1f);
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
if (clk->cken < 32)
|
||||
CKENA &= ~mask;
|
||||
else
|
||||
CKENB &= ~mask;
|
||||
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
static const struct clkops clk_pxa3xx_cken_ops = {
|
||||
|
@ -217,7 +217,7 @@ void board_pcmcia_power(int power)
|
||||
ConXS_BCR = trizeps_conxs_bcr;
|
||||
|
||||
}
|
||||
pr_debug("%s: o%s 0x%x\n", __FUNCTION__, power ? "n": "ff", trizeps_conxs_bcr);
|
||||
pr_debug("%s: o%s 0x%x\n", __func__, power ? "n": "ff", trizeps_conxs_bcr);
|
||||
}
|
||||
|
||||
/* backlight power switching for LCD panel */
|
||||
@ -228,7 +228,7 @@ static void board_backlight_power(int on)
|
||||
} else {
|
||||
trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP;
|
||||
}
|
||||
pr_debug("%s: o%s 0x%x\n", __FUNCTION__, on ? "n" : "ff", trizeps_conxs_bcr);
|
||||
pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", trizeps_conxs_bcr);
|
||||
ConXS_BCR = trizeps_conxs_bcr;
|
||||
}
|
||||
|
||||
@ -238,10 +238,10 @@ static void board_mci_power(struct device *dev, unsigned int vdd)
|
||||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask) {
|
||||
pr_debug("%s: on\n", __FUNCTION__);
|
||||
pr_debug("%s: on\n", __func__);
|
||||
/* FIXME fill in values here */
|
||||
} else {
|
||||
pr_debug("%s: off\n", __FUNCTION__);
|
||||
pr_debug("%s: off\n", __func__);
|
||||
/* FIXME fill in values here */
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ static struct platform_device smc91x_device = {
|
||||
.resource = smc91x_resources,
|
||||
};
|
||||
|
||||
#if defined(CONFIG_FB_PXA) || (CONFIG_FB_PXA_MODULES)
|
||||
#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
|
||||
static void zylonite_backlight_power(int on)
|
||||
{
|
||||
gpio_set_value(gpio_backlight, on);
|
||||
|
@ -206,7 +206,7 @@ static int __init badge4_init(void)
|
||||
if (ret < 0)
|
||||
printk(KERN_ERR
|
||||
"%s: SA-1111 initialization failed (%d)\n",
|
||||
__FUNCTION__, ret);
|
||||
__func__, ret);
|
||||
|
||||
|
||||
/* maybe turn on 5v0 from the start */
|
||||
@ -240,11 +240,11 @@ void badge4_set_5V(unsigned subsystem, int on)
|
||||
/* detect on->off and off->on transitions */
|
||||
if ((!old_5V_bitmap) && (badge4_5V_bitmap)) {
|
||||
/* was off, now on */
|
||||
printk(KERN_INFO "%s: enabling 5V supply rail\n", __FUNCTION__);
|
||||
printk(KERN_INFO "%s: enabling 5V supply rail\n", __func__);
|
||||
GPSR = BADGE4_GPIO_PCMEN5V;
|
||||
} else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) {
|
||||
/* was on, now off */
|
||||
printk(KERN_INFO "%s: disabling 5V supply rail\n", __FUNCTION__);
|
||||
printk(KERN_INFO "%s: disabling 5V supply rail\n", __func__);
|
||||
GPCR = BADGE4_GPIO_PCMEN5V;
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ static void sa1100_update_dram_timings(int current_speed, int new_speed)
|
||||
|
||||
if (settings->speed == 0) {
|
||||
panic("%s: couldn't find dram setting for speed %d\n",
|
||||
__FUNCTION__, new_speed);
|
||||
__func__, new_speed);
|
||||
}
|
||||
|
||||
/* No risk, no fun: run with interrupts on! */
|
||||
|
@ -129,7 +129,7 @@ int sa1100_request_dma (dma_device_t device, const char *device_id,
|
||||
if (err) {
|
||||
printk(KERN_ERR
|
||||
"%s: unable to request IRQ %d for %s\n",
|
||||
__FUNCTION__, IRQ_DMA0 + i, device_id);
|
||||
__func__, IRQ_DMA0 + i, device_id);
|
||||
dma->device = 0;
|
||||
return err;
|
||||
}
|
||||
@ -165,12 +165,12 @@ void sa1100_free_dma(dma_regs_t *regs)
|
||||
if (regs == (dma_regs_t *)&DDAR(i))
|
||||
break;
|
||||
if (i >= SA1100_DMA_CHANNELS) {
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dma_chan[i].device) {
|
||||
printk(KERN_ERR "%s: Trying to free free DMA\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: Trying to free free DMA\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -329,7 +329,7 @@ void sa1100_reset_dma(dma_regs_t *regs)
|
||||
if (regs == (dma_regs_t *)&DDAR(i))
|
||||
break;
|
||||
if (i >= SA1100_DMA_CHANNELS) {
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -596,7 +596,7 @@ static void h3800_control_egpio(enum ipaq_egpio_type x, int setp)
|
||||
case IPAQ_EGPIO_CODEC_NRESET:
|
||||
case IPAQ_EGPIO_AUDIO_ON:
|
||||
case IPAQ_EGPIO_QMUTE:
|
||||
printk("%s: error - should not be called\n", __FUNCTION__);
|
||||
printk("%s: error - should not be called\n", __func__);
|
||||
break;
|
||||
case IPAQ_EGPIO_OPT_NVRAM_ON:
|
||||
SET_ASIC2(GPIO2_OPT_ON_NVRAM);
|
||||
@ -638,7 +638,7 @@ static int h3800_pm_callback(int req)
|
||||
static u16 asic2_data;
|
||||
int result = 0;
|
||||
|
||||
printk("%s %d\n", __FUNCTION__, req);
|
||||
printk("%s %d\n", __func__, req);
|
||||
|
||||
switch (req) {
|
||||
case PM_RESUME:
|
||||
@ -666,7 +666,7 @@ static int h3800_pm_callback(int req)
|
||||
asic2_data = H3800_ASIC2_GPIOPIOD;
|
||||
break;
|
||||
default:
|
||||
printk("%s: unrecognized PM callback\n", __FUNCTION__);
|
||||
printk("%s: unrecognized PM callback\n", __func__);
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
@ -706,7 +706,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (0) printk("%s: interrupt received\n", __FUNCTION__);
|
||||
if (0) printk("%s: interrupt received\n", __func__);
|
||||
|
||||
desc->chip->ack(irq);
|
||||
|
||||
@ -716,21 +716,21 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
|
||||
|
||||
/* KPIO */
|
||||
irq = H3800_ASIC2_KPIINTFLAG;
|
||||
if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq);
|
||||
if (0) printk("%s KPIO 0x%08X\n", __func__, irq);
|
||||
for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
|
||||
if (irq & kpio_irq_mask[j])
|
||||
handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
|
||||
|
||||
/* GPIO2 */
|
||||
irq = H3800_ASIC2_GPIINTFLAG;
|
||||
if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq);
|
||||
if (0) printk("%s GPIO 0x%08X\n", __func__, irq);
|
||||
for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
|
||||
if (irq & gpio_irq_mask[j])
|
||||
handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
|
||||
}
|
||||
|
||||
if (i >= MAX_ASIC_ISR_LOOPS)
|
||||
printk("%s: interrupt processing overrun\n", __FUNCTION__);
|
||||
printk("%s: interrupt processing overrun\n", __func__);
|
||||
|
||||
/* For level-based interrupts */
|
||||
desc->chip->unmask(irq);
|
||||
|
@ -120,6 +120,8 @@ full_search:
|
||||
*/
|
||||
int valid_phys_addr_range(unsigned long addr, size_t size)
|
||||
{
|
||||
if (addr < PHYS_OFFSET)
|
||||
return 0;
|
||||
if (addr + size > __pa(high_memory))
|
||||
return 0;
|
||||
|
||||
|
@ -75,7 +75,7 @@ no_pgd:
|
||||
void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
|
||||
{
|
||||
pmd_t *pmd;
|
||||
struct page *pte;
|
||||
pgtable_t pte;
|
||||
|
||||
if (!pgd)
|
||||
return;
|
||||
@ -90,10 +90,8 @@ void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
|
||||
goto free;
|
||||
}
|
||||
|
||||
pte = pmd_page(*pmd);
|
||||
pte = pmd_pgtable(*pmd);
|
||||
pmd_clear(pmd);
|
||||
dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
|
||||
pte_lock_deinit(pte);
|
||||
pte_free(mm, pte);
|
||||
pmd_free(mm, pmd);
|
||||
free:
|
||||
|
@ -371,7 +371,7 @@ static int __init iop3xx_init_atu_setup(char *str)
|
||||
default:
|
||||
printk(KERN_DEBUG "\"%s\" malformed at "
|
||||
"character: \'%c\'",
|
||||
__FUNCTION__,
|
||||
__func__,
|
||||
*str);
|
||||
*(str + 1) = '\0';
|
||||
}
|
||||
|
@ -33,43 +33,33 @@
|
||||
#define MPU_CLK "virt_prcm_set"
|
||||
#endif
|
||||
|
||||
static struct clk *mpu_clk;
|
||||
|
||||
/* TODO: Add support for SDRAM timing changes */
|
||||
|
||||
int omap_verify_speed(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
|
||||
if (policy->cpu)
|
||||
return -EINVAL;
|
||||
|
||||
cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
|
||||
policy->cpuinfo.max_freq);
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
||||
policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
|
||||
policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
|
||||
cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
|
||||
policy->cpuinfo.max_freq);
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int omap_getspeed(unsigned int cpu)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
unsigned long rate;
|
||||
|
||||
if (cpu)
|
||||
return 0;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return 0;
|
||||
rate = clk_get_rate(mpu_clk) / 1000;
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
@ -77,14 +67,9 @@ static int omap_target(struct cpufreq_policy *policy,
|
||||
unsigned int target_freq,
|
||||
unsigned int relation)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
struct cpufreq_freqs freqs;
|
||||
int ret = 0;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
||||
freqs.old = omap_getspeed(0);
|
||||
freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
|
||||
freqs.cpu = 0;
|
||||
@ -92,15 +77,12 @@ static int omap_target(struct cpufreq_policy *policy,
|
||||
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
|
||||
ret = clk_set_rate(mpu_clk, target_freq * 1000);
|
||||
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __init omap_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
@ -111,17 +93,23 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
|
||||
policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
|
||||
policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000;
|
||||
policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int omap_cpu_exit(struct cpufreq_policy *policy)
|
||||
{
|
||||
clk_put(mpu_clk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct cpufreq_driver omap_driver = {
|
||||
.flags = CPUFREQ_STICKY,
|
||||
.verify = omap_verify_speed,
|
||||
.target = omap_target,
|
||||
.get = omap_getspeed,
|
||||
.init = omap_cpu_init,
|
||||
.exit = omap_cpu_exit,
|
||||
.name = "omap",
|
||||
};
|
||||
|
||||
|
@ -88,68 +88,6 @@ EXPORT_SYMBOL(dsp_kfunc_device_register);
|
||||
static inline void omap_init_dsp(void) { }
|
||||
#endif /* CONFIG_OMAP_DSP */
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
||||
|
||||
#define OMAP1_I2C_BASE 0xfffb3800
|
||||
#define OMAP2_I2C_BASE1 0x48070000
|
||||
#define OMAP_I2C_SIZE 0x3f
|
||||
#define OMAP1_I2C_INT INT_I2C
|
||||
#define OMAP2_I2C_INT1 56
|
||||
|
||||
static struct resource i2c_resources1[] = {
|
||||
{
|
||||
.start = 0,
|
||||
.end = 0,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = 0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
/* DMA not used; works around erratum writing to non-empty i2c fifo */
|
||||
|
||||
static struct platform_device omap_i2c_device1 = {
|
||||
.name = "i2c_omap",
|
||||
.id = 1,
|
||||
.num_resources = ARRAY_SIZE(i2c_resources1),
|
||||
.resource = i2c_resources1,
|
||||
};
|
||||
|
||||
/* See also arch/arm/mach-omap2/devices.c for second I2C on 24xx */
|
||||
static void omap_init_i2c(void)
|
||||
{
|
||||
if (cpu_is_omap24xx()) {
|
||||
i2c_resources1[0].start = OMAP2_I2C_BASE1;
|
||||
i2c_resources1[0].end = OMAP2_I2C_BASE1 + OMAP_I2C_SIZE;
|
||||
i2c_resources1[1].start = OMAP2_I2C_INT1;
|
||||
} else {
|
||||
i2c_resources1[0].start = OMAP1_I2C_BASE;
|
||||
i2c_resources1[0].end = OMAP1_I2C_BASE + OMAP_I2C_SIZE;
|
||||
i2c_resources1[1].start = OMAP1_I2C_INT;
|
||||
}
|
||||
|
||||
/* FIXME define and use a boot tag, in case of boards that
|
||||
* either don't wire up I2C, or chips that mux it differently...
|
||||
* it can include clocking and address info, maybe more.
|
||||
*/
|
||||
if (cpu_is_omap24xx()) {
|
||||
omap_cfg_reg(M19_24XX_I2C1_SCL);
|
||||
omap_cfg_reg(L15_24XX_I2C1_SDA);
|
||||
} else {
|
||||
omap_cfg_reg(I2C_SCL);
|
||||
omap_cfg_reg(I2C_SDA);
|
||||
}
|
||||
|
||||
(void) platform_device_register(&omap_i2c_device1);
|
||||
}
|
||||
|
||||
#else
|
||||
static inline void omap_init_i2c(void) {}
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
|
||||
|
||||
@ -501,7 +439,6 @@ static int __init omap_init_devices(void)
|
||||
* in alphabetical order so they're easier to sort through.
|
||||
*/
|
||||
omap_init_dsp();
|
||||
omap_init_i2c();
|
||||
omap_init_kp();
|
||||
omap_init_mmc();
|
||||
omap_init_uwire();
|
||||
|
@ -137,7 +137,7 @@ static void omap_disable_channel_irq(int lch);
|
||||
static inline void omap_enable_channel_irq(int lch);
|
||||
|
||||
#define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP15XX
|
||||
/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
|
||||
@ -699,7 +699,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams)
|
||||
u32 reg;
|
||||
|
||||
if (!cpu_class_is_omap2()) {
|
||||
printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __FUNCTION__);
|
||||
printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1705,14 +1705,8 @@ static int omap2_dma_handle_ch(int ch)
|
||||
status = OMAP_DMA_CSR_REG(ch);
|
||||
}
|
||||
|
||||
if (likely(dma_chan[ch].callback != NULL)) {
|
||||
if (dma_chan[ch].chain_id != -1)
|
||||
dma_chan[ch].callback(dma_chan[ch].chain_id, status,
|
||||
dma_chan[ch].data);
|
||||
else
|
||||
dma_chan[ch].callback(ch, status, dma_chan[ch].data);
|
||||
|
||||
}
|
||||
if (likely(dma_chan[ch].callback != NULL))
|
||||
dma_chan[ch].callback(ch, status, dma_chan[ch].data);
|
||||
|
||||
OMAP_DMA_CSR_REG(ch) = status;
|
||||
|
||||
|
@ -268,7 +268,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
||||
if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) {
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n",
|
||||
__FILE__, __LINE__, __FUNCTION__, id);
|
||||
__FILE__, __LINE__, __func__, id);
|
||||
dump_stack();
|
||||
return NULL;
|
||||
}
|
||||
|
@ -333,13 +333,14 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
|
||||
void omap_set_gpio_direction(int gpio, int is_input)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_direction(bank, get_gpio_index(gpio), is_input);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
||||
@ -406,13 +407,14 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
||||
void omap_set_gpio_dataout(int gpio, int enable)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_dataout(bank, get_gpio_index(gpio), enable);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
int omap_get_gpio_datain(int gpio)
|
||||
@ -624,6 +626,7 @@ static int gpio_irq_type(unsigned irq, unsigned type)
|
||||
struct gpio_bank *bank;
|
||||
unsigned gpio;
|
||||
int retval;
|
||||
unsigned long flags;
|
||||
|
||||
if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
|
||||
gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
|
||||
@ -642,13 +645,13 @@ static int gpio_irq_type(unsigned irq, unsigned type)
|
||||
return -EINVAL;
|
||||
|
||||
bank = get_irq_chip_data(irq);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
|
||||
if (retval == 0) {
|
||||
irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
|
||||
irq_desc[irq].status |= type;
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -830,11 +833,13 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
|
||||
*/
|
||||
static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
case METHOD_MPUIO:
|
||||
case METHOD_GPIO_1610:
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (enable) {
|
||||
bank->suspend_wakeup |= (1 << gpio);
|
||||
enable_irq_wake(bank->irq);
|
||||
@ -842,7 +847,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
||||
disable_irq_wake(bank->irq);
|
||||
bank->suspend_wakeup &= ~(1 << gpio);
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return 0;
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
||||
@ -853,7 +858,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
||||
(bank - gpio_bank) * 32 + gpio);
|
||||
return -EINVAL;
|
||||
}
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (enable) {
|
||||
bank->suspend_wakeup |= (1 << gpio);
|
||||
enable_irq_wake(bank->irq);
|
||||
@ -861,7 +866,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
||||
disable_irq_wake(bank->irq);
|
||||
bank->suspend_wakeup &= ~(1 << gpio);
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
@ -897,16 +902,17 @@ static int gpio_wake_enable(unsigned int irq, unsigned int enable)
|
||||
int omap_request_gpio(int gpio)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return -EINVAL;
|
||||
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) {
|
||||
printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio);
|
||||
dump_stack();
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return -1;
|
||||
}
|
||||
bank->reserved_map |= (1 << get_gpio_index(gpio));
|
||||
@ -925,7 +931,7 @@ int omap_request_gpio(int gpio)
|
||||
__raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg);
|
||||
}
|
||||
#endif
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -933,15 +939,16 @@ int omap_request_gpio(int gpio)
|
||||
void omap_free_gpio(int gpio)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) {
|
||||
printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio);
|
||||
dump_stack();
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return;
|
||||
}
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
@ -960,7 +967,7 @@ void omap_free_gpio(int gpio)
|
||||
#endif
|
||||
bank->reserved_map &= ~(1 << get_gpio_index(gpio));
|
||||
_reset_gpio(bank, gpio);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1194,11 +1201,12 @@ static int omap_mpuio_suspend_late(struct platform_device *pdev, pm_message_t me
|
||||
{
|
||||
struct gpio_bank *bank = platform_get_drvdata(pdev);
|
||||
void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
bank->saved_wakeup = __raw_readl(mask_reg);
|
||||
__raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1207,10 +1215,11 @@ static int omap_mpuio_resume_early(struct platform_device *pdev)
|
||||
{
|
||||
struct gpio_bank *bank = platform_get_drvdata(pdev);
|
||||
void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
__raw_writel(bank->saved_wakeup, mask_reg);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1277,6 +1286,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
|
||||
static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
|
||||
#endif
|
||||
|
||||
/* This lock class tells lockdep that GPIO irqs are in a different
|
||||
* category than their parents, so it won't report false recursion.
|
||||
*/
|
||||
static struct lock_class_key gpio_lock_class;
|
||||
|
||||
static int __init _omap_gpio_init(void)
|
||||
{
|
||||
int i;
|
||||
@ -1450,6 +1464,7 @@ static int __init _omap_gpio_init(void)
|
||||
#endif
|
||||
for (j = bank->virtual_irq_start;
|
||||
j < bank->virtual_irq_start + gpio_count; j++) {
|
||||
lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
|
||||
set_irq_chip_data(j, bank);
|
||||
if (bank_is_mpuio(bank))
|
||||
set_irq_chip(j, &mpuio_irq_chip);
|
||||
@ -1489,6 +1504,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
||||
void __iomem *wake_status;
|
||||
void __iomem *wake_clear;
|
||||
void __iomem *wake_set;
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
@ -1509,11 +1525,11 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
||||
continue;
|
||||
}
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
bank->saved_wakeup = __raw_readl(wake_status);
|
||||
__raw_writel(0xffffffff, wake_clear);
|
||||
__raw_writel(bank->suspend_wakeup, wake_set);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -1530,6 +1546,7 @@ static int omap_gpio_resume(struct sys_device *dev)
|
||||
struct gpio_bank *bank = &gpio_bank[i];
|
||||
void __iomem *wake_clear;
|
||||
void __iomem *wake_set;
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
@ -1548,10 +1565,10 @@ static int omap_gpio_resume(struct sys_device *dev)
|
||||
continue;
|
||||
}
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
__raw_writel(0xffffffff, wake_clear);
|
||||
__raw_writel(bank->saved_wakeup, wake_set);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -130,8 +130,8 @@ dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan)
|
||||
dmadbg_dumpregs(fname, line, chan, &state);
|
||||
}
|
||||
|
||||
#define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan))
|
||||
#define dbg_showchan(chan) dmadbg_showchan(__FUNCTION__, __LINE__, (chan))
|
||||
#define dbg_showregs(chan) dmadbg_showregs(__func__, __LINE__, (chan))
|
||||
#define dbg_showchan(chan) dmadbg_showchan(__func__, __LINE__, (chan))
|
||||
#else
|
||||
#define dbg_showregs(chan) do { } while(0)
|
||||
#define dbg_showchan(chan) do { } while(0)
|
||||
@ -403,7 +403,7 @@ static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)
|
||||
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
pr_debug("%s: buff not yet loaded, no more todo\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
} else {
|
||||
chan->load_state = S3C2410_DMALOAD_1RUNNING;
|
||||
s3c2410_dma_loadbuffer(chan, chan->next);
|
||||
@ -463,16 +463,16 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: id=%p, data=%08x, size=%d\n",
|
||||
__FUNCTION__, id, (unsigned int)data, size);
|
||||
__func__, id, (unsigned int)data, size);
|
||||
|
||||
buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC);
|
||||
if (buf == NULL) {
|
||||
pr_debug("%s: out of memory (%ld alloc)\n",
|
||||
__FUNCTION__, (long)sizeof(*buf));
|
||||
__func__, (long)sizeof(*buf));
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
//pr_debug("%s: new buffer %p\n", __FUNCTION__, buf);
|
||||
//pr_debug("%s: new buffer %p\n", __func__, buf);
|
||||
//dbg_showchan(chan);
|
||||
|
||||
buf->next = NULL;
|
||||
@ -486,18 +486,18 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
||||
if (chan->curr == NULL) {
|
||||
/* we've got nothing loaded... */
|
||||
pr_debug("%s: buffer %p queued onto empty channel\n",
|
||||
__FUNCTION__, buf);
|
||||
__func__, buf);
|
||||
|
||||
chan->curr = buf;
|
||||
chan->end = buf;
|
||||
chan->next = NULL;
|
||||
} else {
|
||||
pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n",
|
||||
chan->number, __FUNCTION__, buf);
|
||||
chan->number, __func__, buf);
|
||||
|
||||
if (chan->end == NULL)
|
||||
pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n",
|
||||
chan->number, __FUNCTION__, chan);
|
||||
chan->number, __func__, chan);
|
||||
|
||||
chan->end->next = buf;
|
||||
chan->end = buf;
|
||||
@ -572,7 +572,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
/* flag error? */
|
||||
printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
|
||||
chan->number, __FUNCTION__);
|
||||
chan->number, __func__);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -658,7 +658,7 @@ s3c2410_dma_irq(int irq, void *devpw)
|
||||
|
||||
if (buf->magic != BUF_MAGIC) {
|
||||
printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n",
|
||||
chan->number, __FUNCTION__, buf);
|
||||
chan->number, __func__, buf);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -692,7 +692,7 @@ s3c2410_dma_irq(int irq, void *devpw)
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
/* flag error? */
|
||||
printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
|
||||
chan->number, __FUNCTION__);
|
||||
chan->number, __func__);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -759,7 +759,7 @@ int s3c2410_dma_request(unsigned int channel,
|
||||
|
||||
if (!chan->irq_claimed) {
|
||||
pr_debug("dma%d: %s : requesting irq %d\n",
|
||||
channel, __FUNCTION__, chan->irq);
|
||||
channel, __func__, chan->irq);
|
||||
|
||||
chan->irq_claimed = 1;
|
||||
local_irq_restore(flags);
|
||||
@ -786,7 +786,7 @@ int s3c2410_dma_request(unsigned int channel,
|
||||
|
||||
/* need to setup */
|
||||
|
||||
pr_debug("%s: channel initialised, %p\n", __FUNCTION__, chan);
|
||||
pr_debug("%s: channel initialised, %p\n", __func__, chan);
|
||||
|
||||
return chan->number | DMACH_LOW_LEVEL;
|
||||
}
|
||||
@ -823,7 +823,7 @@ int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client)
|
||||
|
||||
if (chan->state != S3C2410_DMA_IDLE) {
|
||||
pr_debug("%s: need to stop dma channel %p\n",
|
||||
__FUNCTION__, chan);
|
||||
__func__, chan);
|
||||
|
||||
/* possibly flush the channel */
|
||||
s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP);
|
||||
@ -852,7 +852,7 @@ static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan)
|
||||
unsigned long flags;
|
||||
unsigned long tmp;
|
||||
|
||||
pr_debug("%s:\n", __FUNCTION__);
|
||||
pr_debug("%s:\n", __func__);
|
||||
|
||||
dbg_showchan(chan);
|
||||
|
||||
@ -907,14 +907,14 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
|
||||
struct s3c2410_dma_buf *buf, *next;
|
||||
unsigned long flags;
|
||||
|
||||
pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number);
|
||||
pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number);
|
||||
|
||||
dbg_showchan(chan);
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
if (chan->state != S3C2410_DMA_IDLE) {
|
||||
pr_debug("%s: stopping channel...\n", __FUNCTION__ );
|
||||
pr_debug("%s: stopping channel...\n", __func__ );
|
||||
s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP);
|
||||
}
|
||||
|
||||
@ -929,7 +929,7 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
|
||||
next = buf->next;
|
||||
|
||||
pr_debug("%s: free buffer %p, next %p\n",
|
||||
__FUNCTION__, buf, buf->next);
|
||||
__func__, buf, buf->next);
|
||||
|
||||
s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT);
|
||||
s3c2410_dma_freebuf(buf);
|
||||
@ -976,7 +976,7 @@ static int s3c2410_dma_started(struct s3c2410_dma_chan *chan)
|
||||
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
pr_debug("%s: buff not yet loaded, no more todo\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
} else {
|
||||
chan->load_state = S3C2410_DMALOAD_1RUNNING;
|
||||
s3c2410_dma_loadbuffer(chan, chan->next);
|
||||
@ -1050,16 +1050,16 @@ int s3c2410_dma_config(dmach_t channel,
|
||||
struct s3c2410_dma_chan *chan = lookup_dma_channel(channel);
|
||||
|
||||
pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
|
||||
__FUNCTION__, channel, xferunit, dcon);
|
||||
__func__, channel, xferunit, dcon);
|
||||
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: Initial dcon is %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: Initial dcon is %08x\n", __func__, dcon);
|
||||
|
||||
dcon |= chan->dcon & dma_sel.dcon_mask;
|
||||
|
||||
pr_debug("%s: New dcon is %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: New dcon is %08x\n", __func__, dcon);
|
||||
|
||||
switch (xferunit) {
|
||||
case 1:
|
||||
@ -1075,14 +1075,14 @@ int s3c2410_dma_config(dmach_t channel,
|
||||
break;
|
||||
|
||||
default:
|
||||
pr_debug("%s: bad transfer size %d\n", __FUNCTION__, xferunit);
|
||||
pr_debug("%s: bad transfer size %d\n", __func__, xferunit);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dcon |= S3C2410_DCON_HWTRIG;
|
||||
dcon |= S3C2410_DCON_INTREQ;
|
||||
|
||||
pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: dcon now %08x\n", __func__, dcon);
|
||||
|
||||
chan->dcon = dcon;
|
||||
chan->xfer_unit = xferunit;
|
||||
@ -1099,7 +1099,7 @@ int s3c2410_dma_setflags(dmach_t channel, unsigned int flags)
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, flags=%08x\n", __FUNCTION__, chan, flags);
|
||||
pr_debug("%s: chan=%p, flags=%08x\n", __func__, chan, flags);
|
||||
|
||||
chan->flags = flags;
|
||||
|
||||
@ -1120,7 +1120,7 @@ int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn)
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, op rtn=%p\n", __FUNCTION__, chan, rtn);
|
||||
pr_debug("%s: chan=%p, op rtn=%p\n", __func__, chan, rtn);
|
||||
|
||||
chan->op_fn = rtn;
|
||||
|
||||
@ -1136,7 +1136,7 @@ int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn)
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, callback rtn=%p\n", __FUNCTION__, chan, rtn);
|
||||
pr_debug("%s: chan=%p, callback rtn=%p\n", __func__, chan, rtn);
|
||||
|
||||
chan->callback_fn = rtn;
|
||||
|
||||
@ -1170,7 +1170,7 @@ int s3c2410_dma_devconfig(int channel,
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n",
|
||||
__FUNCTION__, (int)source, hwcfg, devaddr);
|
||||
__func__, (int)source, hwcfg, devaddr);
|
||||
|
||||
chan->source = source;
|
||||
chan->dev_addr = devaddr;
|
||||
@ -1180,7 +1180,7 @@ int s3c2410_dma_devconfig(int channel,
|
||||
case S3C2410_DMASRC_HW:
|
||||
/* source is hardware */
|
||||
pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__FUNCTION__, devaddr, hwcfg);
|
||||
__func__, devaddr, hwcfg);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr);
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0));
|
||||
@ -1190,8 +1190,8 @@ int s3c2410_dma_devconfig(int channel,
|
||||
|
||||
case S3C2410_DMASRC_MEM:
|
||||
/* source is memory */
|
||||
pr_debug( "%s: mem source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__FUNCTION__, devaddr, hwcfg);
|
||||
pr_debug("%s: mem source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__func__, devaddr, hwcfg);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0));
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr);
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3);
|
||||
|
@ -129,7 +129,7 @@ static int __init atstk1004_init(void)
|
||||
#ifdef CONFIG_BOARD_ATSTK100X_SPI1
|
||||
at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
|
||||
#endif
|
||||
#ifndef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
|
||||
#ifndef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
|
||||
at32_add_device_mci(0);
|
||||
#endif
|
||||
at32_add_device_lcdc(0, &atstk1000_lcdc_data,
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <linux/fs.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/tick.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/unistd.h>
|
||||
|
||||
@ -30,8 +31,10 @@ void cpu_idle(void)
|
||||
{
|
||||
/* endless idle loop with no priority at all */
|
||||
while (1) {
|
||||
tick_nohz_stop_sched_tick();
|
||||
while (!need_resched())
|
||||
cpu_idle_sleep();
|
||||
tick_nohz_restart_sched_tick();
|
||||
preempt_enable_no_resched();
|
||||
schedule();
|
||||
preempt_disable();
|
||||
@ -345,6 +348,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
|
||||
p->thread.cpu_context.ksp = (unsigned long)childregs;
|
||||
p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
|
||||
|
||||
clear_tsk_thread_flag(p, TIF_DEBUG);
|
||||
if ((clone_flags & CLONE_PTRACE) && test_thread_flag(TIF_DEBUG))
|
||||
ocd_enable(p);
|
||||
|
||||
|
@ -189,6 +189,8 @@ no_context:
|
||||
|
||||
page = sysreg_read(PTBR);
|
||||
printk(KERN_ALERT "ptbr = %08lx", page);
|
||||
if (address >= TASK_SIZE)
|
||||
page = (unsigned long)swapper_pg_dir;
|
||||
if (page) {
|
||||
page = ((unsigned long *)page)[address >> 22];
|
||||
printk(" pgd = %08lx", page);
|
||||
|
@ -98,8 +98,11 @@ drivers-$(CONFIG_OPROFILE) += arch/$(ARCH)/oprofile/
|
||||
# them changed. We use .mach to indicate when they were updated
|
||||
# last, otherwise make uses the target directory mtime.
|
||||
|
||||
show_mach_symlink = :
|
||||
quiet_show_mach_symlink = echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
|
||||
silent_show_mach_symlink = :
|
||||
include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf
|
||||
@echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
|
||||
@$($(quiet)show_mach_symlink)
|
||||
ifneq ($(KBUILD_SRC),)
|
||||
$(Q)mkdir -p include/asm-$(ARCH)
|
||||
$(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach
|
||||
|
@ -1,7 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.14
|
||||
# Thu Nov 29 17:32:47 2007
|
||||
# Linux kernel version: 2.6.22.16
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -116,7 +115,10 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF523 is not set
|
||||
# CONFIG_BF524 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF526 is not set
|
||||
CONFIG_BF527=y
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
@ -306,6 +308,7 @@ CONFIG_BFIN_DCACHE=y
|
||||
# CONFIG_BFIN_WB is not set
|
||||
CONFIG_BFIN_WT=y
|
||||
CONFIG_L1_MAX_PIECE=16
|
||||
# CONFIG_MPU is not set
|
||||
|
||||
#
|
||||
# Asynchonous Memory Configuration
|
||||
@ -354,6 +357,7 @@ CONFIG_BINFMT_ZFLAT=y
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
@ -496,7 +500,6 @@ CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||
# CONFIG_MTD_CFI_AMDSTD is not set
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_MW320D=m
|
||||
CONFIG_MTD_RAM=y
|
||||
CONFIG_MTD_ROM=m
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
@ -506,9 +509,6 @@ CONFIG_MTD_ROM=m
|
||||
#
|
||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
# CONFIG_MTD_PHYSMAP is not set
|
||||
CONFIG_MTD_BF5xx=m
|
||||
CONFIG_BFIN_FLASH_SIZE=0x400000
|
||||
CONFIG_EBIU_FLASH_BASE=0x20000000
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
@ -684,7 +684,6 @@ CONFIG_INPUT_MISC=y
|
||||
# CONFIG_INPUT_POWERMATE is not set
|
||||
# CONFIG_INPUT_YEALINK is not set
|
||||
# CONFIG_INPUT_UINPUT is not set
|
||||
# CONFIG_BF53X_PFBUTTONS is not set
|
||||
# CONFIG_TWI_KEYPAD is not set
|
||||
|
||||
#
|
||||
@ -702,12 +701,12 @@ CONFIG_INPUT_MISC=y
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
CONFIG_BFIN_OTP=y
|
||||
# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
|
||||
# CONFIG_BFIN_SPORT is not set
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
# CONFIG_TWI_LCD is not set
|
||||
# CONFIG_AD5304 is not set
|
||||
# CONFIG_BF5xx_TEA5764 is not set
|
||||
# CONFIG_BF5xx_FBDMA is not set
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
@ -772,7 +771,6 @@ CONFIG_I2C_CHARDEV=m
|
||||
#
|
||||
# I2C Hardware Bus support
|
||||
#
|
||||
# CONFIG_I2C_BLACKFIN_GPIO is not set
|
||||
CONFIG_I2C_BLACKFIN_TWI=m
|
||||
CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
|
||||
# CONFIG_I2C_GPIO is not set
|
||||
|
@ -322,10 +322,9 @@ CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
|
||||
CONFIG_PM_BFIN_SLEEP_DEEPER=y
|
||||
# CONFIG_PM_BFIN_SLEEP is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
# CONFIG_PM_WAKEUP_GPIO_API is not set
|
||||
CONFIG_PM_WAKEUP_SIC_IWR=0x80
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -697,7 +696,6 @@ CONFIG_SERIAL_BFIN_DMA=y
|
||||
# CONFIG_SERIAL_BFIN_PIO is not set
|
||||
CONFIG_SERIAL_BFIN_UART0=y
|
||||
# CONFIG_BFIN_UART0_CTSRTS is not set
|
||||
# CONFIG_SERIAL_BFIN_UART1 is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_BFIN_SPORT is not set
|
||||
|
@ -323,10 +323,9 @@ CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
|
||||
CONFIG_PM_BFIN_SLEEP_DEEPER=y
|
||||
# CONFIG_PM_BFIN_SLEEP is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
# CONFIG_PM_WAKEUP_GPIO_API is not set
|
||||
CONFIG_PM_WAKEUP_SIC_IWR=0x80
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -714,7 +713,6 @@ CONFIG_SERIAL_BFIN_DMA=y
|
||||
# CONFIG_SERIAL_BFIN_PIO is not set
|
||||
CONFIG_SERIAL_BFIN_UART0=y
|
||||
# CONFIG_BFIN_UART0_CTSRTS is not set
|
||||
# CONFIG_SERIAL_BFIN_UART1 is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_BFIN_SPORT is not set
|
||||
|
@ -330,10 +330,9 @@ CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||
CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y
|
||||
CONFIG_PM_BFIN_SLEEP_DEEPER=y
|
||||
# CONFIG_PM_BFIN_SLEEP is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
# CONFIG_PM_WAKEUP_GPIO_API is not set
|
||||
CONFIG_PM_WAKEUP_SIC_IWR=0x8
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -1013,6 +1012,7 @@ CONFIG_SND_BFIN_AD73311_SE=4
|
||||
CONFIG_SND_SOC_AC97_BUS=y
|
||||
CONFIG_SND_SOC=m
|
||||
CONFIG_SND_BF5XX_SOC=m
|
||||
CONFIG_SND_MMAP_SUPPORT=y
|
||||
CONFIG_SND_BF5XX_SOC_AC97=m
|
||||
# CONFIG_SND_BF5XX_SOC_WM8750 is not set
|
||||
# CONFIG_SND_BF5XX_SOC_WM8731 is not set
|
||||
|
@ -396,6 +396,7 @@ CONFIG_BINFMT_ZFLAT=y
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
@ -1075,6 +1076,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
|
||||
CONFIG_SND_SOC_AC97_BUS=y
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_BF5XX_SOC=y
|
||||
CONFIG_SND_MMAP_SUPPORT=y
|
||||
CONFIG_SND_BF5XX_SOC_AC97=y
|
||||
CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
|
||||
# CONFIG_SND_BF5XX_SOC_WM8750 is not set
|
||||
|
@ -367,6 +367,7 @@ CONFIG_BINFMT_ZFLAT=y
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_PM_WAKEUP_BY_GPIO is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user