mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: drivers/pci/dmar.c
This commit is contained in:
commit
b876d08f81
471 changed files with 13331 additions and 11049 deletions
12
CREDITS
12
CREDITS
|
@ -1653,14 +1653,14 @@ S: Chapel Hill, North Carolina 27514-4818
|
|||
S: USA
|
||||
|
||||
N: Dave Jones
|
||||
E: davej@codemonkey.org.uk
|
||||
E: davej@redhat.com
|
||||
W: http://www.codemonkey.org.uk
|
||||
D: x86 errata/setup maintenance.
|
||||
D: AGPGART driver.
|
||||
D: Assorted VIA x86 support.
|
||||
D: 2.5 AGPGART overhaul.
|
||||
D: CPUFREQ maintenance.
|
||||
D: Backport/Forwardport merge monkey.
|
||||
D: Various Janitor work.
|
||||
S: United Kingdom
|
||||
D: Fedora kernel maintainence.
|
||||
D: Misc/Other.
|
||||
S: 314 Littleton Rd, Westford, MA 01886, USA
|
||||
|
||||
N: Martin Josfsson
|
||||
E: gandalf@wlug.westbo.se
|
||||
|
|
|
@ -1105,7 +1105,7 @@ static struct block_device_operations opt_fops = {
|
|||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Function names as strings (__FUNCTION__).
|
||||
Function names as strings (__func__).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
|
|
@ -236,10 +236,8 @@ software system can set different pages for controlling accesses to the
|
|||
MSI-X structure. The implementation of MSI support requires the PCI
|
||||
subsystem, not a device driver, to maintain full control of the MSI-X
|
||||
table/MSI-X PBA (Pending Bit Array) and MMIO address space of the MSI-X
|
||||
table/MSI-X PBA. A device driver is prohibited from requesting the MMIO
|
||||
address space of the MSI-X table/MSI-X PBA. Otherwise, the PCI subsystem
|
||||
will fail enabling MSI-X on its hardware device when it calls the function
|
||||
pci_enable_msix().
|
||||
table/MSI-X PBA. A device driver should not access the MMIO address
|
||||
space of the MSI-X table/MSI-X PBA.
|
||||
|
||||
5.3.2 API pci_enable_msix
|
||||
|
||||
|
|
|
@ -163,6 +163,10 @@ need pass only as many optional fields as necessary:
|
|||
o class and classmask fields default to 0
|
||||
o driver_data defaults to 0UL.
|
||||
|
||||
Note that driver_data must match the value used by any of the pci_device_id
|
||||
entries defined in the driver. This makes the driver_data field mandatory
|
||||
if all the pci_device_id entries have a non-zero driver_data value.
|
||||
|
||||
Once added, the driver probe routine will be invoked for any unclaimed
|
||||
PCI devices listed in its (newly updated) pci_ids list.
|
||||
|
||||
|
|
|
@ -203,22 +203,17 @@ to mmio_enabled.
|
|||
|
||||
3.3 helper functions
|
||||
|
||||
3.3.1 int pci_find_aer_capability(struct pci_dev *dev);
|
||||
pci_find_aer_capability locates the PCI Express AER capability
|
||||
in the device configuration space. If the device doesn't support
|
||||
PCI-Express AER, the function returns 0.
|
||||
|
||||
3.3.2 int pci_enable_pcie_error_reporting(struct pci_dev *dev);
|
||||
3.3.1 int pci_enable_pcie_error_reporting(struct pci_dev *dev);
|
||||
pci_enable_pcie_error_reporting enables the device to send error
|
||||
messages to root port when an error is detected. Note that devices
|
||||
don't enable the error reporting by default, so device drivers need
|
||||
call this function to enable it.
|
||||
|
||||
3.3.3 int pci_disable_pcie_error_reporting(struct pci_dev *dev);
|
||||
3.3.2 int pci_disable_pcie_error_reporting(struct pci_dev *dev);
|
||||
pci_disable_pcie_error_reporting disables the device to send error
|
||||
messages to root port when an error is detected.
|
||||
|
||||
3.3.4 int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev);
|
||||
3.3.3 int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev);
|
||||
pci_cleanup_aer_uncorrect_error_status cleanups the uncorrectable
|
||||
error status register.
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ parameter is applicable:
|
|||
X86-64 X86-64 architecture is enabled.
|
||||
More X86-64 boot options can be found in
|
||||
Documentation/x86_64/boot-options.txt .
|
||||
X86 Either 32bit or 64bit x86 (same as X86-32+X86-64)
|
||||
|
||||
In addition, the following text indicates that the option:
|
||||
|
||||
|
@ -1588,7 +1589,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
See also Documentation/paride.txt.
|
||||
|
||||
pci=option[,option...] [PCI] various PCI subsystem options:
|
||||
off [X86-32] don't probe for the PCI bus
|
||||
off [X86] don't probe for the PCI bus
|
||||
bios [X86-32] force use of PCI BIOS, don't access
|
||||
the hardware directly. Use this if your machine
|
||||
has a non-standard PCI host bridge.
|
||||
|
@ -1596,9 +1597,9 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
hardware access methods are allowed. Use this
|
||||
if you experience crashes upon bootup and you
|
||||
suspect they are caused by the BIOS.
|
||||
conf1 [X86-32] Force use of PCI Configuration
|
||||
conf1 [X86] Force use of PCI Configuration
|
||||
Mechanism 1.
|
||||
conf2 [X86-32] Force use of PCI Configuration
|
||||
conf2 [X86] Force use of PCI Configuration
|
||||
Mechanism 2.
|
||||
noaer [PCIE] If the PCIEAER kernel config parameter is
|
||||
enabled, this kernel boot option can be used to
|
||||
|
@ -1618,37 +1619,37 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
this option if the kernel is unable to allocate
|
||||
IRQs or discover secondary PCI buses on your
|
||||
motherboard.
|
||||
rom [X86-32] Assign address space to expansion ROMs.
|
||||
rom [X86] Assign address space to expansion ROMs.
|
||||
Use with caution as certain devices share
|
||||
address decoders between ROMs and other
|
||||
resources.
|
||||
norom [X86-32,X86_64] Do not assign address space to
|
||||
norom [X86] Do not assign address space to
|
||||
expansion ROMs that do not already have
|
||||
BIOS assigned address ranges.
|
||||
irqmask=0xMMMM [X86-32] Set a bit mask of IRQs allowed to be
|
||||
irqmask=0xMMMM [X86] Set a bit mask of IRQs allowed to be
|
||||
assigned automatically to PCI devices. You can
|
||||
make the kernel exclude IRQs of your ISA cards
|
||||
this way.
|
||||
pirqaddr=0xAAAAA [X86-32] Specify the physical address
|
||||
pirqaddr=0xAAAAA [X86] Specify the physical address
|
||||
of the PIRQ table (normally generated
|
||||
by the BIOS) if it is outside the
|
||||
F0000h-100000h range.
|
||||
lastbus=N [X86-32] Scan all buses thru bus #N. Can be
|
||||
lastbus=N [X86] Scan all buses thru bus #N. Can be
|
||||
useful if the kernel is unable to find your
|
||||
secondary buses and you want to tell it
|
||||
explicitly which ones they are.
|
||||
assign-busses [X86-32] Always assign all PCI bus
|
||||
assign-busses [X86] Always assign all PCI bus
|
||||
numbers ourselves, overriding
|
||||
whatever the firmware may have done.
|
||||
usepirqmask [X86-32] Honor the possible IRQ mask stored
|
||||
usepirqmask [X86] Honor the possible IRQ mask stored
|
||||
in the BIOS $PIR table. This is needed on
|
||||
some systems with broken BIOSes, notably
|
||||
some HP Pavilion N5400 and Omnibook XE3
|
||||
notebooks. This will have no effect if ACPI
|
||||
IRQ routing is enabled.
|
||||
noacpi [X86-32] Do not use ACPI for IRQ routing
|
||||
noacpi [X86] Do not use ACPI for IRQ routing
|
||||
or for PCI scanning.
|
||||
use_crs [X86-32] Use _CRS for PCI resource
|
||||
use_crs [X86] Use _CRS for PCI resource
|
||||
allocation.
|
||||
routeirq Do IRQ routing for all PCI devices.
|
||||
This is normally done in pci_enable_device(),
|
||||
|
@ -1677,6 +1678,12 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
reserved for the CardBus bridge's memory
|
||||
window. The default value is 64 megabytes.
|
||||
|
||||
pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power
|
||||
Management.
|
||||
off Disable ASPM.
|
||||
force Enable ASPM even on devices that claim not to support it.
|
||||
WARNING: Forcing ASPM on may cause system lockups.
|
||||
|
||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||
|
||||
pd. [PARIDE]
|
||||
|
|
|
@ -50,10 +50,12 @@ Connecting a function (probe) to a marker is done by providing a probe (function
|
|||
to call) for the specific marker through marker_probe_register() and can be
|
||||
activated by calling marker_arm(). Marker deactivation can be done by calling
|
||||
marker_disarm() as many times as marker_arm() has been called. Removing a probe
|
||||
is done through marker_probe_unregister(); it will disarm the probe and make
|
||||
sure there is no caller left using the probe when it returns. Probe removal is
|
||||
preempt-safe because preemption is disabled around the probe call. See the
|
||||
"Probe example" section below for a sample probe module.
|
||||
is done through marker_probe_unregister(); it will disarm the probe.
|
||||
marker_synchronize_unregister() must be called before the end of the module exit
|
||||
function to make sure there is no caller left using the probe. This, and the
|
||||
fact that preemption is disabled around the probe call, make sure that probe
|
||||
removal and module unload are safe. See the "Probe example" section below for a
|
||||
sample probe module.
|
||||
|
||||
The marker mechanism supports inserting multiple instances of the same marker.
|
||||
Markers can be put in inline functions, inlined static functions, and
|
||||
|
|
|
@ -95,8 +95,9 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
|
|||
|
||||
'p' - Will dump the current registers and flags to your console.
|
||||
|
||||
'q' - Will dump a list of all running hrtimers.
|
||||
WARNING: Does not cover any other timers
|
||||
'q' - Will dump per CPU lists of all armed hrtimers (but NOT regular
|
||||
timer_list timers) and detailed information about all
|
||||
clockevent devices.
|
||||
|
||||
'r' - Turns off keyboard raw mode and sets it to XLATE.
|
||||
|
||||
|
|
101
Documentation/tracepoints.txt
Normal file
101
Documentation/tracepoints.txt
Normal file
|
@ -0,0 +1,101 @@
|
|||
Using the Linux Kernel Tracepoints
|
||||
|
||||
Mathieu Desnoyers
|
||||
|
||||
|
||||
This document introduces Linux Kernel Tracepoints and their use. It provides
|
||||
examples of how to insert tracepoints in the kernel and connect probe functions
|
||||
to them and provides some examples of probe functions.
|
||||
|
||||
|
||||
* Purpose of tracepoints
|
||||
|
||||
A tracepoint placed in code provides a hook to call a function (probe) that you
|
||||
can provide at runtime. A tracepoint can be "on" (a probe is connected to it) or
|
||||
"off" (no probe is attached). When a tracepoint is "off" it has no effect,
|
||||
except for adding a tiny time penalty (checking a condition for a branch) and
|
||||
space penalty (adding a few bytes for the function call at the end of the
|
||||
instrumented function and adds a data structure in a separate section). When a
|
||||
tracepoint is "on", the function you provide is called each time the tracepoint
|
||||
is executed, in the execution context of the caller. When the function provided
|
||||
ends its execution, it returns to the caller (continuing from the tracepoint
|
||||
site).
|
||||
|
||||
You can put tracepoints at important locations in the code. They are
|
||||
lightweight hooks that can pass an arbitrary number of parameters,
|
||||
which prototypes are described in a tracepoint declaration placed in a header
|
||||
file.
|
||||
|
||||
They can be used for tracing and performance accounting.
|
||||
|
||||
|
||||
* Usage
|
||||
|
||||
Two elements are required for tracepoints :
|
||||
|
||||
- A tracepoint definition, placed in a header file.
|
||||
- The tracepoint statement, in C code.
|
||||
|
||||
In order to use tracepoints, you should include linux/tracepoint.h.
|
||||
|
||||
In include/trace/subsys.h :
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DEFINE_TRACE(subsys_eventname,
|
||||
TPPTOTO(int firstarg, struct task_struct *p),
|
||||
TPARGS(firstarg, p));
|
||||
|
||||
In subsys/file.c (where the tracing statement must be added) :
|
||||
|
||||
#include <trace/subsys.h>
|
||||
|
||||
void somefct(void)
|
||||
{
|
||||
...
|
||||
trace_subsys_eventname(arg, task);
|
||||
...
|
||||
}
|
||||
|
||||
Where :
|
||||
- subsys_eventname is an identifier unique to your event
|
||||
- subsys is the name of your subsystem.
|
||||
- eventname is the name of the event to trace.
|
||||
- TPPTOTO(int firstarg, struct task_struct *p) is the prototype of the function
|
||||
called by this tracepoint.
|
||||
- TPARGS(firstarg, p) are the parameters names, same as found in the prototype.
|
||||
|
||||
Connecting a function (probe) to a tracepoint is done by providing a probe
|
||||
(function to call) for the specific tracepoint through
|
||||
register_trace_subsys_eventname(). Removing a probe is done through
|
||||
unregister_trace_subsys_eventname(); it will remove the probe sure there is no
|
||||
caller left using the probe when it returns. Probe removal is preempt-safe
|
||||
because preemption is disabled around the probe call. See the "Probe example"
|
||||
section below for a sample probe module.
|
||||
|
||||
The tracepoint mechanism supports inserting multiple instances of the same
|
||||
tracepoint, but a single definition must be made of a given tracepoint name over
|
||||
all the kernel to make sure no type conflict will occur. Name mangling of the
|
||||
tracepoints is done using the prototypes to make sure typing is correct.
|
||||
Verification of probe type correctness is done at the registration site by the
|
||||
compiler. Tracepoints can be put in inline functions, inlined static functions,
|
||||
and unrolled loops as well as regular functions.
|
||||
|
||||
The naming scheme "subsys_event" is suggested here as a convention intended
|
||||
to limit collisions. Tracepoint names are global to the kernel: they are
|
||||
considered as being the same whether they are in the core kernel image or in
|
||||
modules.
|
||||
|
||||
|
||||
* Probe / tracepoint example
|
||||
|
||||
See the example provided in samples/tracepoints/src
|
||||
|
||||
Compile them with your kernel.
|
||||
|
||||
Run, as root :
|
||||
modprobe tracepoint-example (insmod order is not important)
|
||||
modprobe tracepoint-probe-example
|
||||
cat /proc/tracepoint-example (returns an expected error)
|
||||
rmmod tracepoint-example tracepoint-probe-example
|
||||
dmesg
|
|
@ -36,7 +36,7 @@ $ mount -t debugfs debugfs /debug
|
|||
$ echo mmiotrace > /debug/tracing/current_tracer
|
||||
$ cat /debug/tracing/trace_pipe > mydump.txt &
|
||||
Start X or whatever.
|
||||
$ echo "X is up" > /debug/tracing/marker
|
||||
$ echo "X is up" > /debug/tracing/trace_marker
|
||||
$ echo none > /debug/tracing/current_tracer
|
||||
Check for lost events.
|
||||
|
||||
|
@ -59,9 +59,8 @@ The 'cat' process should stay running (sleeping) in the background.
|
|||
Load the driver you want to trace and use it. Mmiotrace will only catch MMIO
|
||||
accesses to areas that are ioremapped while mmiotrace is active.
|
||||
|
||||
[Unimplemented feature:]
|
||||
During tracing you can place comments (markers) into the trace by
|
||||
$ echo "X is up" > /debug/tracing/marker
|
||||
$ echo "X is up" > /debug/tracing/trace_marker
|
||||
This makes it easier to see which part of the (huge) trace corresponds to
|
||||
which action. It is recommended to place descriptive markers about what you
|
||||
do.
|
||||
|
|
|
@ -1198,7 +1198,7 @@ S: Maintained
|
|||
|
||||
CPU FREQUENCY DRIVERS
|
||||
P: Dave Jones
|
||||
M: davej@codemonkey.org.uk
|
||||
M: davej@redhat.com
|
||||
L: cpufreq@vger.kernel.org
|
||||
W: http://www.codemonkey.org.uk/projects/cpufreq/
|
||||
T: git kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
|
||||
|
|
|
@ -47,7 +47,7 @@ typedef struct irq_swizzle_struct
|
|||
|
||||
static irq_swizzle_t *sable_lynx_irq_swizzle;
|
||||
|
||||
static void sable_lynx_init_irq(int nr_irqs);
|
||||
static void sable_lynx_init_irq(int nr_of_irqs);
|
||||
|
||||
#if defined(CONFIG_ALPHA_GENERIC) || defined(CONFIG_ALPHA_SABLE)
|
||||
|
||||
|
@ -530,11 +530,11 @@ sable_lynx_srm_device_interrupt(unsigned long vector)
|
|||
}
|
||||
|
||||
static void __init
|
||||
sable_lynx_init_irq(int nr_irqs)
|
||||
sable_lynx_init_irq(int nr_of_irqs)
|
||||
{
|
||||
long i;
|
||||
|
||||
for (i = 0; i < nr_irqs; ++i) {
|
||||
for (i = 0; i < nr_of_irqs; ++i) {
|
||||
irq_desc[i].status = IRQ_DISABLED | IRQ_LEVEL;
|
||||
irq_desc[i].chip = &sable_lynx_irq_type;
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ static inline unsigned long iop13xx_core_freq(void)
|
|||
return 1200000000;
|
||||
default:
|
||||
printk("%s: warning unknown frequency, defaulting to 800Mhz\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
}
|
||||
|
||||
return 800000000;
|
||||
|
@ -60,7 +60,7 @@ static inline unsigned long iop13xx_xsi_bus_ratio(void)
|
|||
return 4;
|
||||
default:
|
||||
printk("%s: warning unknown ratio, defaulting to 2\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
}
|
||||
|
||||
return 2;
|
||||
|
|
|
@ -143,7 +143,7 @@ static struct irq_chip ixdp2x00_cpld_irq_chip = {
|
|||
.unmask = ixdp2x00_irq_unmask
|
||||
};
|
||||
|
||||
void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigned long *mask_reg, unsigned long nr_irqs)
|
||||
void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigned long *mask_reg, unsigned long nr_of_irqs)
|
||||
{
|
||||
unsigned int irq;
|
||||
|
||||
|
@ -154,7 +154,7 @@ void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigne
|
|||
|
||||
board_irq_stat = stat_reg;
|
||||
board_irq_mask = mask_reg;
|
||||
board_irq_count = nr_irqs;
|
||||
board_irq_count = nr_of_irqs;
|
||||
|
||||
*board_irq_mask = 0xffffffff;
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
|
|||
|
||||
void __init omap_init_irq(void)
|
||||
{
|
||||
unsigned long nr_irqs = 0;
|
||||
unsigned long nr_of_irqs = 0;
|
||||
unsigned int nr_banks = 0;
|
||||
int i;
|
||||
|
||||
|
@ -133,14 +133,14 @@ void __init omap_init_irq(void)
|
|||
|
||||
omap_irq_bank_init_one(bank);
|
||||
|
||||
nr_irqs += bank->nr_irqs;
|
||||
nr_of_irqs += bank->nr_irqs;
|
||||
nr_banks++;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "Total of %ld interrupts on %d active controller%s\n",
|
||||
nr_irqs, nr_banks, nr_banks > 1 ? "s" : "");
|
||||
nr_of_irqs, nr_banks, nr_banks > 1 ? "s" : "");
|
||||
|
||||
for (i = 0; i < nr_irqs; i++) {
|
||||
for (i = 0; i < nr_of_irqs; i++) {
|
||||
set_irq_chip(i, &omap_irq_chip);
|
||||
set_irq_handler(i, handle_level_irq);
|
||||
set_irq_flags(i, IRQF_VALID);
|
||||
|
|
|
@ -30,7 +30,7 @@ extern void zylonite_pxa300_init(void);
|
|||
static inline void zylonite_pxa300_init(void)
|
||||
{
|
||||
if (cpu_is_pxa300() || cpu_is_pxa310())
|
||||
panic("%s: PXA300/PXA310 not supported\n", __FUNCTION__);
|
||||
panic("%s: PXA300/PXA310 not supported\n", __func__);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -40,7 +40,7 @@ extern void zylonite_pxa320_init(void);
|
|||
static inline void zylonite_pxa320_init(void)
|
||||
{
|
||||
if (cpu_is_pxa320())
|
||||
panic("%s: PXA320 not supported\n", __FUNCTION__);
|
||||
panic("%s: PXA320 not supported\n", __func__);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* arch/arm/mach-sa1100/include/mach/ide.h
|
||||
*
|
||||
* Copyright (c) 1998 Hugo Fiennes & Nicolas Pitre
|
||||
*
|
||||
* 18-aug-2000: Cleanup by Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
|
||||
* Get rid of the special ide_init_hwif_ports() functions
|
||||
* and make a generalised function that can be used by all
|
||||
* architectures.
|
||||
*/
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#error "This code is broken and needs update to match with current ide support"
|
||||
|
||||
|
||||
/*
|
||||
* Set up a hw structure for a specified data port, control port and IRQ.
|
||||
* This should follow whatever the default interface uses.
|
||||
*/
|
||||
static inline void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
|
||||
unsigned long ctrl_port, int *irq)
|
||||
{
|
||||
unsigned long reg = data_port;
|
||||
int i;
|
||||
int regincr = 1;
|
||||
|
||||
/* The Empeg board has the first two address lines unused */
|
||||
if (machine_is_empeg())
|
||||
regincr = 1 << 2;
|
||||
|
||||
/* The LART doesn't use A0 for IDE */
|
||||
if (machine_is_lart())
|
||||
regincr = 1 << 1;
|
||||
|
||||
memset(hw, 0, sizeof(*hw));
|
||||
|
||||
for (i = 0; i <= 7; i++) {
|
||||
hw->io_ports_array[i] = reg;
|
||||
reg += regincr;
|
||||
}
|
||||
|
||||
hw->io_ports.ctl_addr = ctrl_port;
|
||||
|
||||
if (irq)
|
||||
*irq = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This registers the standard ports for this architecture with the IDE
|
||||
* driver.
|
||||
*/
|
||||
static __inline__ void
|
||||
ide_init_default_hwifs(void)
|
||||
{
|
||||
if (machine_is_lart()) {
|
||||
#ifdef CONFIG_SA1100_LART
|
||||
hw_regs_t hw;
|
||||
|
||||
/* Enable GPIO as interrupt line */
|
||||
GPDR &= ~LART_GPIO_IDE;
|
||||
set_irq_type(LART_IRQ_IDE, IRQ_TYPE_EDGE_RISING);
|
||||
|
||||
/* set PCMCIA interface timing */
|
||||
MECR = 0x00060006;
|
||||
|
||||
/* init the interface */
|
||||
ide_init_hwif_ports(&hw, PCMCIA_IO_0_BASE + 0x0000, PCMCIA_IO_0_BASE + 0x1000, NULL);
|
||||
hw.irq = LART_IRQ_IDE;
|
||||
ide_register_hw(&hw);
|
||||
#endif
|
||||
}
|
||||
}
|
|
@ -191,7 +191,7 @@ static int __init eic_probe(struct platform_device *pdev)
|
|||
struct eic *eic;
|
||||
struct resource *regs;
|
||||
unsigned int i;
|
||||
unsigned int nr_irqs;
|
||||
unsigned int nr_of_irqs;
|
||||
unsigned int int_irq;
|
||||
int ret;
|
||||
u32 pattern;
|
||||
|
@ -224,7 +224,7 @@ static int __init eic_probe(struct platform_device *pdev)
|
|||
eic_writel(eic, IDR, ~0UL);
|
||||
eic_writel(eic, MODE, ~0UL);
|
||||
pattern = eic_readl(eic, MODE);
|
||||
nr_irqs = fls(pattern);
|
||||
nr_of_irqs = fls(pattern);
|
||||
|
||||
/* Trigger on low level unless overridden by driver */
|
||||
eic_writel(eic, EDGE, 0UL);
|
||||
|
@ -232,7 +232,7 @@ static int __init eic_probe(struct platform_device *pdev)
|
|||
|
||||
eic->chip = &eic_chip;
|
||||
|
||||
for (i = 0; i < nr_irqs; i++) {
|
||||
for (i = 0; i < nr_of_irqs; i++) {
|
||||
set_irq_chip_and_handler(eic->first_irq + i, &eic_chip,
|
||||
handle_level_irq);
|
||||
set_irq_chip_data(eic->first_irq + i, eic);
|
||||
|
@ -256,7 +256,7 @@ static int __init eic_probe(struct platform_device *pdev)
|
|||
eic->regs, int_irq);
|
||||
dev_info(&pdev->dev,
|
||||
"Handling %u external IRQs, starting with IRQ %u\n",
|
||||
nr_irqs, eic->first_irq);
|
||||
nr_of_irqs, eic->first_irq);
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -95,16 +95,8 @@ extern int pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
|
|||
enum pci_mmap_state mmap_state, int write_combine);
|
||||
#define HAVE_PCI_LEGACY
|
||||
extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
|
||||
struct vm_area_struct *vma);
|
||||
extern ssize_t pci_read_legacy_io(struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t off, size_t count);
|
||||
extern ssize_t pci_write_legacy_io(struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t off, size_t count);
|
||||
extern int pci_mmap_legacy_mem(struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
struct vm_area_struct *vma);
|
||||
struct vm_area_struct *vma,
|
||||
enum pci_mmap_state mmap_state);
|
||||
|
||||
#define pci_get_legacy_mem platform_pci_get_legacy_mem
|
||||
#define pci_legacy_read platform_pci_legacy_read
|
||||
|
|
|
@ -614,12 +614,17 @@ char *ia64_pci_get_legacy_mem(struct pci_bus *bus)
|
|||
* vector to get the base address.
|
||||
*/
|
||||
int
|
||||
pci_mmap_legacy_page_range(struct pci_bus *bus, struct vm_area_struct *vma)
|
||||
pci_mmap_legacy_page_range(struct pci_bus *bus, struct vm_area_struct *vma,
|
||||
enum pci_mmap_state mmap_state)
|
||||
{
|
||||
unsigned long size = vma->vm_end - vma->vm_start;
|
||||
pgprot_t prot;
|
||||
char *addr;
|
||||
|
||||
/* We only support mmap'ing of legacy memory space */
|
||||
if (mmap_state != pci_mmap_mem)
|
||||
return -ENOSYS;
|
||||
|
||||
/*
|
||||
* Avoid attribute aliasing. See Documentation/ia64/aliasing.txt
|
||||
* for more details.
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
|
|
|
@ -9,6 +9,8 @@ config PARISC
|
|||
def_bool y
|
||||
select HAVE_IDE
|
||||
select HAVE_OPROFILE
|
||||
select RTC_CLASS
|
||||
select RTC_DRV_PARISC
|
||||
help
|
||||
The PA-RISC microprocessor is designed by Hewlett-Packard and used
|
||||
in many of their workstations & servers (HP9000 700 and 800 series,
|
||||
|
|
|
@ -13,10 +13,6 @@
|
|||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define ide_request_irq(irq,hand,flg,dev,id) request_irq((irq),(hand),(flg),(dev),(id))
|
||||
#define ide_free_irq(irq,dev_id) free_irq((irq), (dev_id))
|
||||
#define ide_request_region(from,extent,name) request_region((from), (extent), (name))
|
||||
#define ide_release_region(from,extent) release_region((from), (extent))
|
||||
/* Generic I/O and MEMIO string operations. */
|
||||
|
||||
#define __ide_insw insw
|
|
@ -332,6 +332,9 @@
|
|||
#define BOOT_CONSOLE_SPA_OFFSET 0x3c4
|
||||
#define BOOT_CONSOLE_PATH_OFFSET 0x3a8
|
||||
|
||||
/* size of the pdc_result buffer for firmware.c */
|
||||
#define NUM_PDC_RESULT 32
|
||||
|
||||
#if !defined(__ASSEMBLY__)
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
@ -600,6 +603,7 @@ int pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsi
|
|||
int pdc_chassis_disp(unsigned long disp);
|
||||
int pdc_chassis_warn(unsigned long *warn);
|
||||
int pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info);
|
||||
int pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info);
|
||||
int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index,
|
||||
void *iodc_data, unsigned int iodc_data_size);
|
||||
int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info,
|
||||
|
@ -638,6 +642,7 @@ int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr,
|
|||
#endif
|
||||
|
||||
void set_firmware_width(void);
|
||||
void set_firmware_width_unlocked(void);
|
||||
int pdc_do_firm_test_reset(unsigned long ftc_bitmap);
|
||||
int pdc_do_reset(void);
|
||||
int pdc_soft_power_info(unsigned long *power_reg);
|
|
@ -47,6 +47,16 @@ struct pt_regs {
|
|||
|
||||
#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
|
||||
|
||||
#define __ARCH_WANT_COMPAT_SYS_PTRACE
|
||||
|
||||
struct task_struct;
|
||||
#define arch_has_single_step() 1
|
||||
void user_disable_single_step(struct task_struct *task);
|
||||
void user_enable_single_step(struct task_struct *task);
|
||||
|
||||
#define arch_has_block_step() 1
|
||||
void user_enable_block_step(struct task_struct *task);
|
||||
|
||||
/* XXX should we use iaoq[1] or iaoq[0] ? */
|
||||
#define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0)
|
||||
#define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0)
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue