mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
Pull powerpc updates from Benjamin Herrenschmidt:
"So from the depth of frozen Minnesota, here's the powerpc pull request
for 3.9. It has a few interesting highlights, in addition to the
usual bunch of bug fixes, minor updates, embedded device tree updates
and new boards:
- Hand tuned asm implementation of SHA1 (by Paulus & Michael
Ellerman)
- Support for Doorbell interrupts on Power8 (kind of fast
thread-thread IPIs) by Ian Munsie
- Long overdue cleanup of the way we handle relocation of our open
firmware trampoline (prom_init.c) on 64-bit by Anton Blanchard
- Support for saving/restoring & context switching the PPR (Processor
Priority Register) on server processors that support it. This
allows the kernel to preserve thread priorities established by
userspace. By Haren Myneni.
- DAWR (new watchpoint facility) support on Power8 by Michael Neuling
- Ability to change the DSCR (Data Stream Control Register) which
controls cache prefetching on a running process via ptrace by
Alexey Kardashevskiy
- Support for context switching the TAR register on Power8 (new
branch target register meant to be used by some new specific
userspace perf event interrupt facility which is yet to be enabled)
by Ian Munsie.
- Improve preservation of the CFAR register (which captures the
origin of a branch) on various exception conditions by Paulus.
- Move the Bestcomm DMA driver from arch powerpc to drivers/dma where
it belongs by Philippe De Muyter
- Support for Transactional Memory on Power8 by Michael Neuling
(based on original work by Matt Evans). For those curious about
the feature, the patch contains a pretty good description."
(See commit db8ff90702
: "powerpc: Documentation for transactional
memory on powerpc" for the mentioned description added to the file
Documentation/powerpc/transactional_memory.txt)
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (140 commits)
powerpc/kexec: Disable hard IRQ before kexec
powerpc/85xx: l2sram - Add compatible string for BSC9131 platform
powerpc/85xx: bsc9131 - Correct typo in SDHC device node
powerpc/e500/qemu-e500: enable coreint
powerpc/mpic: allow coreint to be determined by MPIC version
powerpc/fsl_pci: Store the pci ctlr device ptr in the pci ctlr struct
powerpc/85xx: Board support for ppa8548
powerpc/fsl: remove extraneous DIU platform functions
arch/powerpc/platforms/85xx/p1022_ds.c: adjust duplicate test
powerpc: Documentation for transactional memory on powerpc
powerpc: Add transactional memory to pseries and ppc64 defconfigs
powerpc: Add config option for transactional memory
powerpc: Add transactional memory to POWER8 cpu features
powerpc: Add new transactional memory state to the signal context
powerpc: Hook in new transactional memory code
powerpc: Routines for FP/VSX/VMX unavailable during a transaction
powerpc: Add transactional memory unavaliable execption handler
powerpc: Add reclaim and recheckpoint functions for context switching transactional memory processes
powerpc: Add FP/VSX and VMX register load functions for transactional memory
powerpc: Add helper functions for transactional memory context switching
...
This commit is contained in:
commit
9d3cae26ac
@ -54,8 +54,13 @@ PROPERTIES
|
||||
- compatible
|
||||
Usage: required
|
||||
Value type: <string>
|
||||
Definition: Must include "fsl,sec-v4.0". Also includes SEC
|
||||
ERA versions (optional) with which the device is compatible.
|
||||
Definition: Must include "fsl,sec-v4.0"
|
||||
|
||||
- fsl,sec-era
|
||||
Usage: optional
|
||||
Value type: <u32>
|
||||
Definition: A standard property. Define the 'ERA' of the SEC
|
||||
device.
|
||||
|
||||
- #address-cells
|
||||
Usage: required
|
||||
@ -107,7 +112,8 @@ PROPERTIES
|
||||
|
||||
EXAMPLE
|
||||
crypto@300000 {
|
||||
compatible = "fsl,sec-v4.0", "fsl,sec-era-v2.0";
|
||||
compatible = "fsl,sec-v4.0";
|
||||
fsl,sec-era = <0x2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x300000 0x10000>;
|
||||
|
@ -17,9 +17,20 @@ Recommended properties:
|
||||
contains a functioning "reset control register" (i.e. the board
|
||||
is wired to reset upon setting the HRESET_REQ bit in this register).
|
||||
|
||||
Example:
|
||||
- fsl,liodn-bits : Indicates the number of defined bits in the LIODN
|
||||
registers, for those SOCs that have a PAMU device.
|
||||
|
||||
Examples:
|
||||
global-utilities@e0000 { /* global utilities block */
|
||||
compatible = "fsl,mpc8548-guts";
|
||||
reg = <e0000 1000>;
|
||||
fsl,has-rstcr;
|
||||
};
|
||||
|
||||
guts: global-utilities@e0000 {
|
||||
compatible = "fsl,qoriq-device-config-1.0";
|
||||
reg = <0xe0000 0xe00>;
|
||||
fsl,has-rstcr;
|
||||
#sleep-cells = <1>;
|
||||
fsl,liodn-bits = <12>;
|
||||
};
|
||||
|
140
Documentation/devicetree/bindings/powerpc/fsl/pamu.txt
Normal file
140
Documentation/devicetree/bindings/powerpc/fsl/pamu.txt
Normal file
@ -0,0 +1,140 @@
|
||||
Freescale Peripheral Management Access Unit (PAMU) Device Tree Binding
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
The PAMU is an I/O MMU that provides device-to-memory access control and
|
||||
address translation capabilities.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : <string>
|
||||
First entry is a version-specific string, such as
|
||||
"fsl,pamu-v1.0". The second is "fsl,pamu".
|
||||
- ranges : <prop-encoded-array>
|
||||
A standard property. Utilized to describe the memory mapped
|
||||
I/O space utilized by the controller. The size should
|
||||
be set to the total size of the register space of all
|
||||
physically present PAMU controllers. For example, for
|
||||
PAMU v1.0, on an SOC that has five PAMU devices, the size
|
||||
is 0x5000.
|
||||
- interrupts : <prop-encoded-array>
|
||||
Interrupt mappings. The first tuple is the normal PAMU
|
||||
interrupt, used for reporting access violations. The second
|
||||
is for PAMU hardware errors, such as PAMU operation errors
|
||||
and ECC errors.
|
||||
- #address-cells: <u32>
|
||||
A standard property.
|
||||
- #size-cells : <u32>
|
||||
A standard property.
|
||||
|
||||
Optional properties:
|
||||
- reg : <prop-encoded-array>
|
||||
A standard property. It represents the CCSR registers of
|
||||
all child PAMUs combined. Include it to provide support
|
||||
for legacy drivers.
|
||||
- interrupt-parent : <phandle>
|
||||
Phandle to interrupt controller
|
||||
|
||||
Child nodes:
|
||||
|
||||
Each child node represents one PAMU controller. Each SOC device that is
|
||||
connected to a specific PAMU device should have a "fsl,pamu-phandle" property
|
||||
that links to the corresponding specific child PAMU controller.
|
||||
|
||||
- reg : <prop-encoded-array>
|
||||
A standard property. Specifies the physical address and
|
||||
length (relative to the parent 'ranges' property) of this
|
||||
PAMU controller's configuration registers. The size should
|
||||
be set to the size of this PAMU controllers's register space.
|
||||
For PAMU v1.0, this size is 0x1000.
|
||||
- fsl,primary-cache-geometry
|
||||
: <prop-encoded-array>
|
||||
Two cells that specify the geometry of the primary PAMU
|
||||
cache. The first is the number of cache lines, and the
|
||||
second is the number of "ways". For direct-mapped caches,
|
||||
specify a value of 1.
|
||||
- fsl,secondary-cache-geometry
|
||||
: <prop-encoded-array>
|
||||
Two cells that specify the geometry of the secondary PAMU
|
||||
cache. The first is the number of cache lines, and the
|
||||
second is the number of "ways". For direct-mapped caches,
|
||||
specify a value of 1.
|
||||
|
||||
Device nodes:
|
||||
|
||||
Devices that have LIODNs need to specify links to the parent PAMU controller
|
||||
(the actual PAMU controller that this device is connected to) and a pointer to
|
||||
the LIODN register, if applicable.
|
||||
|
||||
- fsl,iommu-parent
|
||||
: <phandle>
|
||||
Phandle to the single, specific PAMU controller node to which
|
||||
this device is connect. The PAMU topology is represented in
|
||||
the device tree to assist code that dynamically determines the
|
||||
best LIODN values to minimize PAMU cache thrashing.
|
||||
|
||||
- fsl,liodn-reg : <prop-encoded-array>
|
||||
Two cells that specify the location of the LIODN register
|
||||
for this device. Required for devices that have a single
|
||||
LIODN. The first cell is a phandle to a node that contains
|
||||
the registers where the LIODN is to be set. The second is
|
||||
the offset from the first "reg" resource of the node where
|
||||
the specific LIODN register is located.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x5000>;
|
||||
ranges = <0 0x20000 0x5000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu4: pamu@4000 {
|
||||
reg = <0x4000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
guts: global-utilities@e0000 {
|
||||
compatible = "fsl,qoriq-device-config-1.0";
|
||||
reg = <0xe0000 0xe00>;
|
||||
fsl,has-rstcr;
|
||||
#sleep-cells = <1>;
|
||||
fsl,liodn-bits = <12>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
@ -11,10 +11,10 @@ split instruction and data caches, and if the CPU supports the DOZE and NAP
|
||||
sleep modes.
|
||||
|
||||
Detection of the feature set is simple. A list of processors can be found in
|
||||
arch/ppc/kernel/cputable.c. The PVR register is masked and compared with each
|
||||
value in the list. If a match is found, the cpu_features of cur_cpu_spec is
|
||||
assigned to the feature bitmask for this processor and a __setup_cpu function
|
||||
is called.
|
||||
arch/powerpc/kernel/cputable.c. The PVR register is masked and compared with
|
||||
each value in the list. If a match is found, the cpu_features of cur_cpu_spec
|
||||
is assigned to the feature bitmask for this processor and a __setup_cpu
|
||||
function is called.
|
||||
|
||||
C code may test 'cur_cpu_spec[smp_processor_id()]->cpu_features' for a
|
||||
particular feature bit. This is done in quite a few places, for example
|
||||
@ -51,6 +51,6 @@ should be used in the majority of cases.
|
||||
|
||||
The END_FTR_SECTION macros are implemented by storing information about this
|
||||
code in the '__ftr_fixup' ELF section. When do_cpu_ftr_fixups
|
||||
(arch/ppc/kernel/misc.S) is invoked, it will iterate over the records in
|
||||
(arch/powerpc/kernel/misc.S) is invoked, it will iterate over the records in
|
||||
__ftr_fixup, and if the required feature is not present it will loop writing
|
||||
nop's from each BEGIN_FTR_SECTION to END_FTR_SECTION.
|
||||
|
175
Documentation/powerpc/transactional_memory.txt
Normal file
175
Documentation/powerpc/transactional_memory.txt
Normal file
@ -0,0 +1,175 @@
|
||||
Transactional Memory support
|
||||
============================
|
||||
|
||||
POWER kernel support for this feature is currently limited to supporting
|
||||
its use by user programs. It is not currently used by the kernel itself.
|
||||
|
||||
This file aims to sum up how it is supported by Linux and what behaviour you
|
||||
can expect from your user programs.
|
||||
|
||||
|
||||
Basic overview
|
||||
==============
|
||||
|
||||
Hardware Transactional Memory is supported on POWER8 processors, and is a
|
||||
feature that enables a different form of atomic memory access. Several new
|
||||
instructions are presented to delimit transactions; transactions are
|
||||
guaranteed to either complete atomically or roll back and undo any partial
|
||||
changes.
|
||||
|
||||
A simple transaction looks like this:
|
||||
|
||||
begin_move_money:
|
||||
tbegin
|
||||
beq abort_handler
|
||||
|
||||
ld r4, SAVINGS_ACCT(r3)
|
||||
ld r5, CURRENT_ACCT(r3)
|
||||
subi r5, r5, 1
|
||||
addi r4, r4, 1
|
||||
std r4, SAVINGS_ACCT(r3)
|
||||
std r5, CURRENT_ACCT(r3)
|
||||
|
||||
tend
|
||||
|
||||
b continue
|
||||
|
||||
abort_handler:
|
||||
... test for odd failures ...
|
||||
|
||||
/* Retry the transaction if it failed because it conflicted with
|
||||
* someone else: */
|
||||
b begin_move_money
|
||||
|
||||
|
||||
The 'tbegin' instruction denotes the start point, and 'tend' the end point.
|
||||
Between these points the processor is in 'Transactional' state; any memory
|
||||
references will complete in one go if there are no conflicts with other
|
||||
transactional or non-transactional accesses within the system. In this
|
||||
example, the transaction completes as though it were normal straight-line code
|
||||
IF no other processor has touched SAVINGS_ACCT(r3) or CURRENT_ACCT(r3); an
|
||||
atomic move of money from the current account to the savings account has been
|
||||
performed. Even though the normal ld/std instructions are used (note no
|
||||
lwarx/stwcx), either *both* SAVINGS_ACCT(r3) and CURRENT_ACCT(r3) will be
|
||||
updated, or neither will be updated.
|
||||
|
||||
If, in the meantime, there is a conflict with the locations accessed by the
|
||||
transaction, the transaction will be aborted by the CPU. Register and memory
|
||||
state will roll back to that at the 'tbegin', and control will continue from
|
||||
'tbegin+4'. The branch to abort_handler will be taken this second time; the
|
||||
abort handler can check the cause of the failure, and retry.
|
||||
|
||||
Checkpointed registers include all GPRs, FPRs, VRs/VSRs, LR, CCR/CR, CTR, FPCSR
|
||||
and a few other status/flag regs; see the ISA for details.
|
||||
|
||||
Causes of transaction aborts
|
||||
============================
|
||||
|
||||
- Conflicts with cache lines used by other processors
|
||||
- Signals
|
||||
- Context switches
|
||||
- See the ISA for full documentation of everything that will abort transactions.
|
||||
|
||||
|
||||
Syscalls
|
||||
========
|
||||
|
||||
Performing syscalls from within transaction is not recommended, and can lead
|
||||
to unpredictable results.
|
||||
|
||||
Syscalls do not by design abort transactions, but beware: The kernel code will
|
||||
not be running in transactional state. The effect of syscalls will always
|
||||
remain visible, but depending on the call they may abort your transaction as a
|
||||
side-effect, read soon-to-be-aborted transactional data that should not remain
|
||||
invisible, etc. If you constantly retry a transaction that constantly aborts
|
||||
itself by calling a syscall, you'll have a livelock & make no progress.
|
||||
|
||||
Simple syscalls (e.g. sigprocmask()) "could" be OK. Even things like write()
|
||||
from, say, printf() should be OK as long as the kernel does not access any
|
||||
memory that was accessed transactionally.
|
||||
|
||||
Consider any syscalls that happen to work as debug-only -- not recommended for
|
||||
production use. Best to queue them up till after the transaction is over.
|
||||
|
||||
|
||||
Signals
|
||||
=======
|
||||
|
||||
Delivery of signals (both sync and async) during transactions provides a second
|
||||
thread state (ucontext/mcontext) to represent the second transactional register
|
||||
state. Signal delivery 'treclaim's to capture both register states, so signals
|
||||
abort transactions. The usual ucontext_t passed to the signal handler
|
||||
represents the checkpointed/original register state; the signal appears to have
|
||||
arisen at 'tbegin+4'.
|
||||
|
||||
If the sighandler ucontext has uc_link set, a second ucontext has been
|
||||
delivered. For future compatibility the MSR.TS field should be checked to
|
||||
determine the transactional state -- if so, the second ucontext in uc->uc_link
|
||||
represents the active transactional registers at the point of the signal.
|
||||
|
||||
For 64-bit processes, uc->uc_mcontext.regs->msr is a full 64-bit MSR and its TS
|
||||
field shows the transactional mode.
|
||||
|
||||
For 32-bit processes, the mcontext's MSR register is only 32 bits; the top 32
|
||||
bits are stored in the MSR of the second ucontext, i.e. in
|
||||
uc->uc_link->uc_mcontext.regs->msr. The top word contains the transactional
|
||||
state TS.
|
||||
|
||||
However, basic signal handlers don't need to be aware of transactions
|
||||
and simply returning from the handler will deal with things correctly:
|
||||
|
||||
Transaction-aware signal handlers can read the transactional register state
|
||||
from the second ucontext. This will be necessary for crash handlers to
|
||||
determine, for example, the address of the instruction causing the SIGSEGV.
|
||||
|
||||
Example signal handler:
|
||||
|
||||
void crash_handler(int sig, siginfo_t *si, void *uc)
|
||||
{
|
||||
ucontext_t *ucp = uc;
|
||||
ucontext_t *transactional_ucp = ucp->uc_link;
|
||||
|
||||
if (ucp_link) {
|
||||
u64 msr = ucp->uc_mcontext.regs->msr;
|
||||
/* May have transactional ucontext! */
|
||||
#ifndef __powerpc64__
|
||||
msr |= ((u64)transactional_ucp->uc_mcontext.regs->msr) << 32;
|
||||
#endif
|
||||
if (MSR_TM_ACTIVE(msr)) {
|
||||
/* Yes, we crashed during a transaction. Oops. */
|
||||
fprintf(stderr, "Transaction to be restarted at 0x%llx, but "
|
||||
"crashy instruction was at 0x%llx\n",
|
||||
ucp->uc_mcontext.regs->nip,
|
||||
transactional_ucp->uc_mcontext.regs->nip);
|
||||
}
|
||||
}
|
||||
|
||||
fix_the_problem(ucp->dar);
|
||||
}
|
||||
|
||||
|
||||
Failure cause codes used by kernel
|
||||
==================================
|
||||
|
||||
These are defined in <asm/reg.h>, and distinguish different reasons why the
|
||||
kernel aborted a transaction:
|
||||
|
||||
TM_CAUSE_RESCHED Thread was rescheduled.
|
||||
TM_CAUSE_FAC_UNAV FP/VEC/VSX unavailable trap.
|
||||
TM_CAUSE_SYSCALL Currently unused; future syscalls that must abort
|
||||
transactions for consistency will use this.
|
||||
TM_CAUSE_SIGNAL Signal delivered.
|
||||
TM_CAUSE_MISC Currently unused.
|
||||
|
||||
These can be checked by the user program's abort handler as TEXASR[0:7].
|
||||
|
||||
|
||||
GDB
|
||||
===
|
||||
|
||||
GDB and ptrace are not currently TM-aware. If one stops during a transaction,
|
||||
it looks like the transaction has just started (the checkpointed state is
|
||||
presented). The transaction cannot then be continued and will take the failure
|
||||
handler route. Furthermore, the transactional 2nd register state will be
|
||||
inaccessible. GDB can currently be used on programs using TM, but not sensibly
|
||||
in parts within transactions.
|
@ -142,6 +142,7 @@ config PPC
|
||||
select HAVE_MOD_ARCH_SPECIFIC
|
||||
select MODULES_USE_ELF_RELA
|
||||
select CLONE_BACKWARDS
|
||||
select ARCH_USE_BUILTIN_BSWAP
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool
|
||||
@ -273,6 +274,10 @@ config PPC_ADV_DEBUG_DAC_RANGE
|
||||
depends on PPC_ADV_DEBUG_REGS && 44x
|
||||
default y
|
||||
|
||||
config PPC_EMULATE_SSTEP
|
||||
bool
|
||||
default y if KPROBES || UPROBES || XMON || HAVE_HW_BREAKPOINT
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
source "kernel/Kconfig.freezer"
|
||||
@ -306,6 +311,14 @@ config MATH_EMULATION
|
||||
unit, which will allow programs that use floating-point
|
||||
instructions to run.
|
||||
|
||||
config PPC_TRANSACTIONAL_MEM
|
||||
bool "Transactional Memory support for POWERPC"
|
||||
depends on PPC_BOOK3S_64
|
||||
depends on SMP
|
||||
default n
|
||||
---help---
|
||||
Support user-mode Transactional Memory on POWERPC.
|
||||
|
||||
config 8XX_MINIMAL_FPEMU
|
||||
bool "Minimal math emulation for 8xx"
|
||||
depends on 8xx && !MATH_EMULATION
|
||||
|
@ -67,7 +67,25 @@ LDFLAGS_vmlinux-y := -Bstatic
|
||||
LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
|
||||
LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y)
|
||||
|
||||
CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=no -mcall-aixdesc
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
ifeq ($(call cc-option-yn,-mcmodel=medium),y)
|
||||
# -mcmodel=medium breaks modules because it uses 32bit offsets from
|
||||
# the TOC pointer to create pointers where possible. Pointers into the
|
||||
# percpu data area are created by this method.
|
||||
#
|
||||
# The kernel module loader relocates the percpu data section from the
|
||||
# original location (starting with 0xd...) to somewhere in the base
|
||||
# kernel percpu data space (starting with 0xc...). We need a full
|
||||
# 64bit relocation for this to work, hence -mcmodel=large.
|
||||
KBUILD_CFLAGS_MODULE += -mcmodel=large
|
||||
else
|
||||
export NO_MINIMAL_TOC := -mno-minimal-toc
|
||||
endif
|
||||
endif
|
||||
|
||||
CFLAGS-$(CONFIG_PPC64) := -mtraceback=no -mcall-aixdesc
|
||||
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,-mminimal-toc)
|
||||
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
|
||||
CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 -mmultiple
|
||||
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,-mtune=power4)
|
||||
@ -136,6 +154,7 @@ head-$(CONFIG_FSL_BOOKE) := arch/powerpc/kernel/head_fsl_booke.o
|
||||
head-$(CONFIG_PPC64) += arch/powerpc/kernel/entry_64.o
|
||||
head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
|
||||
head-$(CONFIG_ALTIVEC) += arch/powerpc/kernel/vector.o
|
||||
head-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE) += arch/powerpc/kernel/prom_init.o
|
||||
|
||||
core-y += arch/powerpc/kernel/ \
|
||||
arch/powerpc/mm/ \
|
||||
@ -143,6 +162,7 @@ core-y += arch/powerpc/kernel/ \
|
||||
arch/powerpc/sysdev/ \
|
||||
arch/powerpc/platforms/ \
|
||||
arch/powerpc/math-emu/ \
|
||||
arch/powerpc/crypto/ \
|
||||
arch/powerpc/net/
|
||||
core-$(CONFIG_XMON) += arch/powerpc/xmon/
|
||||
core-$(CONFIG_KVM) += arch/powerpc/kvm/
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
|
||||
/ {
|
||||
model = "anonymous,a3m071";
|
||||
compatible = "anonymous,a3m071";
|
||||
@ -30,10 +32,6 @@
|
||||
bus-frequency = <0>; /* From boot loader */
|
||||
system-frequency = <0>; /* From boot loader */
|
||||
|
||||
timer@600 {
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
spi@f00 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -15,6 +15,11 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
&gpt3 { gpio-controller; };
|
||||
&gpt4 { gpio-controller; };
|
||||
&gpt5 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "anonymous,a4m072";
|
||||
compatible = "anonymous,a4m072";
|
||||
@ -34,28 +39,6 @@
|
||||
fsl,init-fd-counters = <0x3333>;
|
||||
};
|
||||
|
||||
timer@600 {
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
gpt3: timer@630 { /* General Purpose Timer in GPIO mode */
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt4: timer@640 { /* General Purpose Timer in GPIO mode */
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt5: timer@650 { /* General Purpose Timer in GPIO mode */
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
spi@f00 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -107,6 +107,14 @@
|
||||
interrupt-parent = <&UIC0>;
|
||||
};
|
||||
|
||||
OCM: ocm@400040000 {
|
||||
compatible = "ibm,ocm";
|
||||
status = "ok";
|
||||
cell-index = <1>;
|
||||
/* configured in U-Boot */
|
||||
reg = <4 0x00040000 0x8000>; /* 32K */
|
||||
};
|
||||
|
||||
SDR0: sdr {
|
||||
compatible = "ibm,sdr-apm821xx";
|
||||
dcr-reg = <0x00e 0x002>;
|
||||
|
@ -126,7 +126,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
sdhci@2e000 {
|
||||
sdhc@2e000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -12,15 +12,13 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
|
||||
/ {
|
||||
model = "schindler,cm5200";
|
||||
compatible = "schindler,cm5200";
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
can@900 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -13,6 +13,9 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { gpio-controller; fsl,has-wdt; };
|
||||
&gpt1 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "intercontrol,digsy-mtc";
|
||||
compatible = "intercontrol,digsy-mtc";
|
||||
@ -22,17 +25,6 @@
|
||||
};
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
#gpio-cells = <2>;
|
||||
fsl,has-wdt;
|
||||
gpio-controller;
|
||||
};
|
||||
|
||||
timer@610 {
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
};
|
||||
|
||||
rtc@800 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -41,7 +41,7 @@
|
||||
|
||||
/* controller at 0x9000 */
|
||||
&pci0 {
|
||||
compatible = "fsl,p1010-pcie", "fsl,qoriq-pcie-v2.3", "fsl,qoriq-pcie-v2.2";
|
||||
compatible = "fsl,p1010-pcie", "fsl,qoriq-pcie-v2.3";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
@ -69,7 +69,7 @@
|
||||
|
||||
/* controller at 0xa000 */
|
||||
&pci1 {
|
||||
compatible = "fsl,p1010-pcie", "fsl,qoriq-pcie-v2.3", "fsl,qoriq-pcie-v2.2";
|
||||
compatible = "fsl,p1010-pcie", "fsl,qoriq-pcie-v2.3";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
|
@ -45,7 +45,7 @@
|
||||
|
||||
/* controller at 0x9000 */
|
||||
&pci0 {
|
||||
compatible = "fsl,p1022-pcie";
|
||||
compatible = "fsl,mpc8548-pcie";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
@ -73,7 +73,7 @@
|
||||
|
||||
/* controller at 0xa000 */
|
||||
&pci1 {
|
||||
compatible = "fsl,p1022-pcie";
|
||||
compatible = "fsl,mpc8548-pcie";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
@ -102,7 +102,7 @@
|
||||
|
||||
/* controller at 0xb000 */
|
||||
&pci2 {
|
||||
compatible = "fsl,p1022-pcie";
|
||||
compatible = "fsl,mpc8548-pcie";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
|
@ -48,6 +48,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 15>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -75,6 +77,8 @@
|
||||
bus-range = <0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 14>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -102,6 +106,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 13>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -125,18 +131,21 @@
|
||||
interrupts = <16 2 1 11>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
ranges;
|
||||
|
||||
port1 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <1>;
|
||||
fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */
|
||||
};
|
||||
|
||||
port2 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <2>;
|
||||
fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */
|
||||
};
|
||||
};
|
||||
|
||||
@ -246,10 +255,37 @@
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x4000>;
|
||||
reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */
|
||||
ranges = <0 0x20000 0x4000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-mpic.dtsi"
|
||||
@ -291,7 +327,17 @@
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-espi-0.dtsi"
|
||||
spi@110000 {
|
||||
fsl,espi-num-chipselects = <4>;
|
||||
@ -299,6 +345,8 @@
|
||||
|
||||
/include/ "qoriq-esdhc-0.dtsi"
|
||||
sdhc@114000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
|
||||
sdhci,auto-cmd12;
|
||||
};
|
||||
|
||||
@ -308,20 +356,37 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
|
||||
port0;
|
||||
};
|
||||
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-0.dtsi"
|
||||
sata@220000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-1.dtsi"
|
||||
sata@221000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sec4.2-0.dtsi"
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
};
|
||||
|
@ -48,6 +48,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 15>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -75,6 +77,8 @@
|
||||
bus-range = <0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 14>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -102,6 +106,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 13>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -152,18 +158,21 @@
|
||||
interrupts = <16 2 1 11>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
ranges;
|
||||
|
||||
port1 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <1>;
|
||||
fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */
|
||||
};
|
||||
|
||||
port2 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <2>;
|
||||
fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */
|
||||
};
|
||||
};
|
||||
|
||||
@ -273,10 +282,37 @@
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x4000>;
|
||||
reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */
|
||||
ranges = <0 0x20000 0x4000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-mpic.dtsi"
|
||||
@ -318,7 +354,17 @@
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-espi-0.dtsi"
|
||||
spi@110000 {
|
||||
fsl,espi-num-chipselects = <4>;
|
||||
@ -326,6 +372,8 @@
|
||||
|
||||
/include/ "qoriq-esdhc-0.dtsi"
|
||||
sdhc@114000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
|
||||
sdhci,auto-cmd12;
|
||||
};
|
||||
|
||||
@ -335,20 +383,37 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
|
||||
port0;
|
||||
};
|
||||
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-0.dtsi"
|
||||
sata@220000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-1.dtsi"
|
||||
sata@221000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sec4.2-0.dtsi"
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
};
|
||||
|
@ -41,13 +41,15 @@
|
||||
|
||||
/* controller at 0x200000 */
|
||||
&pci0 {
|
||||
compatible = "fsl,p4080-pcie";
|
||||
compatible = "fsl,p4080-pcie", "fsl,qoriq-pcie-v2.1";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 15>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -68,13 +70,15 @@
|
||||
|
||||
/* controller at 0x201000 */
|
||||
&pci1 {
|
||||
compatible = "fsl,p4080-pcie";
|
||||
compatible = "fsl,p4080-pcie", "fsl,qoriq-pcie-v2.1";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
bus-range = <0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 14>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -95,13 +99,15 @@
|
||||
|
||||
/* controller at 0x202000 */
|
||||
&pci2 {
|
||||
compatible = "fsl,p4080-pcie";
|
||||
compatible = "fsl,p4080-pcie", "fsl,qoriq-pcie-v2.1";
|
||||
device_type = "pci";
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 13>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -126,18 +132,21 @@
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
fsl,srio-rmu-handle = <&rmu>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
ranges;
|
||||
|
||||
port1 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <1>;
|
||||
fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */
|
||||
};
|
||||
|
||||
port2 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <2>;
|
||||
fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */
|
||||
};
|
||||
};
|
||||
|
||||
@ -281,13 +290,51 @@
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x5000>;
|
||||
reg = <0x20000 0x5000>; /* for compatibility with older PAMU drivers */
|
||||
ranges = <0 0x20000 0x5000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu4: pamu@4000 {
|
||||
reg = <0x4000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-rmu-0.dtsi"
|
||||
rmu@d3000 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x540>; /* RMULIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-mpic.dtsi"
|
||||
|
||||
guts: global-utilities@e0000 {
|
||||
@ -327,7 +374,17 @@
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-espi-0.dtsi"
|
||||
spi@110000 {
|
||||
fsl,espi-num-chipselects = <4>;
|
||||
@ -335,6 +392,8 @@
|
||||
|
||||
/include/ "qoriq-esdhc-0.dtsi"
|
||||
sdhc@114000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
|
||||
voltage-ranges = <3300 3300>;
|
||||
sdhci,auto-cmd12;
|
||||
};
|
||||
@ -347,11 +406,18 @@
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
|
||||
port0;
|
||||
};
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
|
||||
};
|
||||
/include/ "qoriq-sec4.0-0.dtsi"
|
||||
crypto: crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
};
|
||||
|
@ -48,6 +48,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 15>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -75,6 +77,8 @@
|
||||
bus-range = <0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 14>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -102,6 +106,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 13>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -129,6 +135,8 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 12>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x50c>; /* PEX4LIODNR */
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -152,18 +160,21 @@
|
||||
interrupts = <16 2 1 11>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
ranges;
|
||||
|
||||
port1 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <1>;
|
||||
fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */
|
||||
};
|
||||
|
||||
port2 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
cell-index = <2>;
|
||||
fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */
|
||||
};
|
||||
};
|
||||
|
||||
@ -276,10 +287,37 @@
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x4000>;
|
||||
reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */
|
||||
ranges = <0 0x20000 0x4000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-mpic.dtsi"
|
||||
@ -321,7 +359,17 @@
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-espi-0.dtsi"
|
||||
spi@110000 {
|
||||
fsl,espi-num-chipselects = <4>;
|
||||
@ -329,6 +377,8 @@
|
||||
|
||||
/include/ "qoriq-esdhc-0.dtsi"
|
||||
sdhc@114000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
|
||||
sdhci,auto-cmd12;
|
||||
};
|
||||
|
||||
@ -338,21 +388,41 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-0.dtsi"
|
||||
sata@220000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-1.dtsi"
|
||||
sata@221000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */
|
||||
};
|
||||
/include/ "qoriq-sec4.2-0.dtsi"
|
||||
crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
|
||||
/include/ "qoriq-raid1.0-0.dtsi"
|
||||
raideng@320000 {
|
||||
fsl,iommu-parent = <&pamu1>;
|
||||
};
|
||||
};
|
||||
|
@ -48,6 +48,7 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 15>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -75,6 +76,7 @@
|
||||
bus-range = <0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 14>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -102,6 +104,7 @@
|
||||
bus-range = <0x0 0xff>;
|
||||
clock-frequency = <33333333>;
|
||||
interrupts = <16 2 1 13>;
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
pcie@0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
#interrupt-cells = <1>;
|
||||
@ -239,10 +242,42 @@
|
||||
|
||||
iommu@20000 {
|
||||
compatible = "fsl,pamu-v1.0", "fsl,pamu";
|
||||
reg = <0x20000 0x5000>;
|
||||
interrupts = <
|
||||
24 2 0 0
|
||||
16 2 1 30>;
|
||||
reg = <0x20000 0x5000>; /* for compatibility with older PAMU drivers */
|
||||
ranges = <0 0x20000 0x5000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupts = <24 2 0 0
|
||||
16 2 1 30>;
|
||||
|
||||
pamu0: pamu@0 {
|
||||
reg = <0 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu1: pamu@1000 {
|
||||
reg = <0x1000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu2: pamu@2000 {
|
||||
reg = <0x2000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu3: pamu@3000 {
|
||||
reg = <0x3000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
|
||||
pamu4: pamu@4000 {
|
||||
reg = <0x4000 0x1000>;
|
||||
fsl,primary-cache-geometry = <32 1>;
|
||||
fsl,secondary-cache-geometry = <128 2>;
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "qoriq-mpic.dtsi"
|
||||
@ -284,7 +319,17 @@
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-0.dtsi"
|
||||
dma@100300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-dma-1.dtsi"
|
||||
dma@101300 {
|
||||
fsl,iommu-parent = <&pamu0>;
|
||||
fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-espi-0.dtsi"
|
||||
spi@110000 {
|
||||
fsl,espi-num-chipselects = <4>;
|
||||
@ -292,6 +337,8 @@
|
||||
|
||||
/include/ "qoriq-esdhc-0.dtsi"
|
||||
sdhc@114000 {
|
||||
fsl,iommu-parent = <&pamu2>;
|
||||
fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */
|
||||
sdhci,auto-cmd12;
|
||||
};
|
||||
|
||||
@ -301,20 +348,37 @@
|
||||
/include/ "qoriq-duart-1.dtsi"
|
||||
/include/ "qoriq-gpio-0.dtsi"
|
||||
/include/ "qoriq-usb2-mph-0.dtsi"
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
usb0: usb@210000 {
|
||||
compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph";
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */
|
||||
phy_type = "utmi";
|
||||
port0;
|
||||
};
|
||||
|
||||
/include/ "qoriq-usb2-dr-0.dtsi"
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
usb1: usb@211000 {
|
||||
compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr";
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */
|
||||
dr_mode = "host";
|
||||
phy_type = "utmi";
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-0.dtsi"
|
||||
sata@220000 {
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sata2-1.dtsi"
|
||||
sata@221000 {
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */
|
||||
};
|
||||
|
||||
/include/ "qoriq-sec5.2-0.dtsi"
|
||||
crypto@300000 {
|
||||
fsl,iommu-parent = <&pamu4>;
|
||||
};
|
||||
};
|
||||
|
@ -36,6 +36,7 @@ crypto@30000 {
|
||||
compatible = "fsl,sec-v4.4", "fsl,sec-v4.0";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x30000 0x10000>;
|
||||
reg = <0x30000 0x10000>;
|
||||
interrupts = <58 2 0 0>;
|
||||
|
||||
|
@ -12,19 +12,34 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
&gpt2 { gpio-controller; };
|
||||
&gpt3 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "fsl,lite5200b";
|
||||
compatible = "fsl,lite5200b";
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
tmr2 {
|
||||
gpios = <&gpt2 0 1>;
|
||||
};
|
||||
tmr3 {
|
||||
gpios = <&gpt3 0 1>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
led1 { gpios = <&gpio_wkup 2 1>; };
|
||||
led2 { gpios = <&gpio_simple 3 1>; };
|
||||
led3 { gpios = <&gpio_wkup 3 1>; };
|
||||
led4 { gpios = <&gpio_simple 2 1>; };
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x00000000 0x10000000>; // 256MB
|
||||
};
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
psc@2000 { // PSC1
|
||||
compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
|
||||
cell-index = <0>;
|
||||
|
@ -13,6 +13,8 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
|
||||
/ {
|
||||
model = "fsl,media5200";
|
||||
compatible = "fsl,media5200";
|
||||
@ -41,10 +43,6 @@
|
||||
soc5200@f0000000 {
|
||||
bus-frequency = <132000000>;// 132 MHz
|
||||
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
psc@2000 { // PSC1
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -12,26 +12,22 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
&gpt6 { // Motion-PRO status LED
|
||||
compatible = "promess,motionpro-led";
|
||||
label = "motionpro-statusled";
|
||||
blink-delay = <100>; // 100 msec
|
||||
};
|
||||
&gpt7 { // Motion-PRO ready LED
|
||||
compatible = "promess,motionpro-led";
|
||||
label = "motionpro-readyled";
|
||||
};
|
||||
|
||||
/ {
|
||||
model = "promess,motionpro";
|
||||
compatible = "promess,motionpro";
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
timer@660 { // Motion-PRO status LED
|
||||
compatible = "promess,motionpro-led";
|
||||
label = "motionpro-statusled";
|
||||
blink-delay = <100>; // 100 msec
|
||||
};
|
||||
|
||||
timer@670 { // Motion-PRO ready LED
|
||||
compatible = "promess,motionpro-led";
|
||||
label = "motionpro-readyled";
|
||||
};
|
||||
|
||||
can@900 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
410
arch/powerpc/boot/dts/mpc5121.dtsi
Normal file
410
arch/powerpc/boot/dts/mpc5121.dtsi
Normal file
@ -0,0 +1,410 @@
|
||||
/*
|
||||
* base MPC5121 Device Tree Source
|
||||
*
|
||||
* Copyright 2007-2008 Freescale Semiconductor Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
model = "mpc5121";
|
||||
compatible = "fsl,mpc5121";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupt-parent = <&ipic>;
|
||||
|
||||
aliases {
|
||||
ethernet0 = ð0;
|
||||
pci = &pci;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,5121@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; /* 32 bytes */
|
||||
i-cache-line-size = <0x20>; /* 32 bytes */
|
||||
d-cache-size = <0x8000>; /* L1, 32K */
|
||||
i-cache-size = <0x8000>; /* L1, 32K */
|
||||
timebase-frequency = <49500000>;/* 49.5 MHz (csb/4) */
|
||||
bus-frequency = <198000000>; /* 198 MHz csb bus */
|
||||
clock-frequency = <396000000>; /* 396 MHz ppc core */
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>; /* 256MB at 0 */
|
||||
};
|
||||
|
||||
mbx@20000000 {
|
||||
compatible = "fsl,mpc5121-mbx";
|
||||
reg = <0x20000000 0x4000>;
|
||||
interrupts = <66 0x8>;
|
||||
};
|
||||
|
||||
sram@30000000 {
|
||||
compatible = "fsl,mpc5121-sram";
|
||||
reg = <0x30000000 0x20000>; /* 128K at 0x30000000 */
|
||||
};
|
||||
|
||||
nfc@40000000 {
|
||||
compatible = "fsl,mpc5121-nfc";
|
||||
reg = <0x40000000 0x100000>; /* 1M at 0x40000000 */
|
||||
interrupts = <6 8>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
|
||||
localbus@80000020 {
|
||||
compatible = "fsl,mpc5121-localbus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x80000020 0x40>;
|
||||
interrupts = <7 0x8>;
|
||||
ranges = <0x0 0x0 0xfc000000 0x04000000>;
|
||||
};
|
||||
|
||||
soc@80000000 {
|
||||
compatible = "fsl,mpc5121-immr";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
ranges = <0x0 0x80000000 0x400000>;
|
||||
reg = <0x80000000 0x400000>;
|
||||
bus-frequency = <66000000>; /* 66 MHz ips bus */
|
||||
|
||||
|
||||
/*
|
||||
* IPIC
|
||||
* interrupts cell = <intr #, sense>
|
||||
* sense values match linux IORESOURCE_IRQ_* defines:
|
||||
* sense == 8: Level, low assertion
|
||||
* sense == 2: Edge, high-to-low change
|
||||
*/
|
||||
ipic: interrupt-controller@c00 {
|
||||
compatible = "fsl,mpc5121-ipic", "fsl,ipic";
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0xc00 0x100>;
|
||||
};
|
||||
|
||||
/* Watchdog timer */
|
||||
wdt@900 {
|
||||
compatible = "fsl,mpc5121-wdt";
|
||||
reg = <0x900 0x100>;
|
||||
};
|
||||
|
||||
/* Real time clock */
|
||||
rtc@a00 {
|
||||
compatible = "fsl,mpc5121-rtc";
|
||||
reg = <0xa00 0x100>;
|
||||
interrupts = <79 0x8 80 0x8>;
|
||||
};
|
||||
|
||||
/* Reset module */
|
||||
reset@e00 {
|
||||
compatible = "fsl,mpc5121-reset";
|
||||
reg = <0xe00 0x100>;
|
||||
};
|
||||
|
||||
/* Clock control */
|
||||
clock@f00 {
|
||||
compatible = "fsl,mpc5121-clock";
|
||||
reg = <0xf00 0x100>;
|
||||
};
|
||||
|
||||
/* Power Management Controller */
|
||||
pmc@1000{
|
||||
compatible = "fsl,mpc5121-pmc";
|
||||
reg = <0x1000 0x100>;
|
||||
interrupts = <83 0x8>;
|
||||
};
|
||||
|
||||
gpio@1100 {
|
||||
compatible = "fsl,mpc5121-gpio";
|
||||
reg = <0x1100 0x100>;
|
||||
interrupts = <78 0x8>;
|
||||
};
|
||||
|
||||
can@1300 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
reg = <0x1300 0x80>;
|
||||
interrupts = <12 0x8>;
|
||||
};
|
||||
|
||||
can@1380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
reg = <0x1380 0x80>;
|
||||
interrupts = <13 0x8>;
|
||||
};
|
||||
|
||||
sdhc@1500 {
|
||||
compatible = "fsl,mpc5121-sdhc";
|
||||
reg = <0x1500 0x100>;
|
||||
interrupts = <8 0x8>;
|
||||
};
|
||||
|
||||
i2c@1700 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1700 0x20>;
|
||||
interrupts = <9 0x8>;
|
||||
};
|
||||
|
||||
i2c@1720 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1720 0x20>;
|
||||
interrupts = <10 0x8>;
|
||||
};
|
||||
|
||||
i2c@1740 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1740 0x20>;
|
||||
interrupts = <11 0x8>;
|
||||
};
|
||||
|
||||
i2ccontrol@1760 {
|
||||
compatible = "fsl,mpc5121-i2c-ctrl";
|
||||
reg = <0x1760 0x8>;
|
||||
};
|
||||
|
||||
axe@2000 {
|
||||
compatible = "fsl,mpc5121-axe";
|
||||
reg = <0x2000 0x100>;
|
||||
interrupts = <42 0x8>;
|
||||
};
|
||||
|
||||
display@2100 {
|
||||
compatible = "fsl,mpc5121-diu";
|
||||
reg = <0x2100 0x100>;
|
||||
interrupts = <64 0x8>;
|
||||
};
|
||||
|
||||
can@2300 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
reg = <0x2300 0x80>;
|
||||
interrupts = <90 0x8>;
|
||||
};
|
||||
|
||||
can@2380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
reg = <0x2380 0x80>;
|
||||
interrupts = <91 0x8>;
|
||||
};
|
||||
|
||||
viu@2400 {
|
||||
compatible = "fsl,mpc5121-viu";
|
||||
reg = <0x2400 0x400>;
|
||||
interrupts = <67 0x8>;
|
||||
};
|
||||
|
||||
mdio@2800 {
|
||||
compatible = "fsl,mpc5121-fec-mdio";
|
||||
reg = <0x2800 0x800>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
eth0: ethernet@2800 {
|
||||
device_type = "network";
|
||||
compatible = "fsl,mpc5121-fec";
|
||||
reg = <0x2800 0x800>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <4 0x8>;
|
||||
};
|
||||
|
||||
/* USB1 using external ULPI PHY */
|
||||
usb@3000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x3000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <43 0x8>;
|
||||
dr_mode = "otg";
|
||||
phy_type = "ulpi";
|
||||
};
|
||||
|
||||
/* USB0 using internal UTMI PHY */
|
||||
usb@4000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x4000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <44 0x8>;
|
||||
dr_mode = "otg";
|
||||
phy_type = "utmi_wide";
|
||||
};
|
||||
|
||||
/* IO control */
|
||||
ioctl@a000 {
|
||||
compatible = "fsl,mpc5121-ioctl";
|
||||
reg = <0xA000 0x1000>;
|
||||
};
|
||||
|
||||
/* LocalPlus controller */
|
||||
lpc@10000 {
|
||||
compatible = "fsl,mpc5121-lpc";
|
||||
reg = <0x10000 0x200>;
|
||||
};
|
||||
|
||||
pata@10200 {
|
||||
compatible = "fsl,mpc5121-pata";
|
||||
reg = <0x10200 0x100>;
|
||||
interrupts = <5 0x8>;
|
||||
};
|
||||
|
||||
/* 512x PSCs are not 52xx PSC compatible */
|
||||
|
||||
/* PSC0 */
|
||||
psc@11000 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11000 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC1 */
|
||||
psc@11100 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11100 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC2 */
|
||||
psc@11200 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11200 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC3 */
|
||||
psc@11300 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
reg = <0x11300 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC4 */
|
||||
psc@11400 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
reg = <0x11400 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC5 */
|
||||
psc@11500 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11500 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC6 */
|
||||
psc@11600 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11600 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC7 */
|
||||
psc@11700 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11700 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC8 */
|
||||
psc@11800 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11800 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC9 */
|
||||
psc@11900 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11900 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC10 */
|
||||
psc@11a00 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11a00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
/* PSC11 */
|
||||
psc@11b00 {
|
||||
compatible = "fsl,mpc5121-psc";
|
||||
reg = <0x11b00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
pscfifo@11f00 {
|
||||
compatible = "fsl,mpc5121-psc-fifo";
|
||||
reg = <0x11f00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
};
|
||||
|
||||
dma@14000 {
|
||||
compatible = "fsl,mpc5121-dma";
|
||||
reg = <0x14000 0x1800>;
|
||||
interrupts = <65 0x8>;
|
||||
};
|
||||
};
|
||||
|
||||
pci: pci@80008500 {
|
||||
compatible = "fsl,mpc5121-pci";
|
||||
device_type = "pci";
|
||||
interrupts = <1 0x8>;
|
||||
clock-frequency = <0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
reg = <0x80008500 0x100 /* internal registers */
|
||||
0x80008300 0x8>; /* config space access registers */
|
||||
bus-range = <0x0 0x0>;
|
||||
ranges = <0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
|
||||
0x02000000 0x0 0xb0000000 0xb0000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0x84000000 0x0 0x01000000>;
|
||||
};
|
||||
};
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* MPC5121E ADS Device Tree Source
|
||||
*
|
||||
* Copyright 2007,2008 Freescale Semiconductor Inc.
|
||||
* Copyright 2007-2008 Freescale Semiconductor Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@ -9,74 +9,26 @@
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "mpc5121.dtsi"
|
||||
|
||||
/ {
|
||||
model = "mpc5121ads";
|
||||
compatible = "fsl,mpc5121ads";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
aliases {
|
||||
pci = &pci;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,5121@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; // 32 bytes
|
||||
i-cache-line-size = <0x20>; // 32 bytes
|
||||
d-cache-size = <0x8000>; // L1, 32K
|
||||
i-cache-size = <0x8000>; // L1, 32K
|
||||
timebase-frequency = <49500000>;// 49.5 MHz (csb/4)
|
||||
bus-frequency = <198000000>; // 198 MHz csb bus
|
||||
clock-frequency = <396000000>; // 396 MHz ppc core
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>; // 256MB at 0
|
||||
};
|
||||
|
||||
mbx@20000000 {
|
||||
compatible = "fsl,mpc5121-mbx";
|
||||
reg = <0x20000000 0x4000>;
|
||||
interrupts = <66 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
sram@30000000 {
|
||||
compatible = "fsl,mpc5121-sram";
|
||||
reg = <0x30000000 0x20000>; // 128K at 0x30000000
|
||||
};
|
||||
|
||||
nfc@40000000 {
|
||||
compatible = "fsl,mpc5121-nfc";
|
||||
reg = <0x40000000 0x100000>; // 1M at 0x40000000
|
||||
interrupts = <6 8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
// ADS has two Hynix 512MB Nand flash chips in a single
|
||||
// stacked package.
|
||||
/*
|
||||
* ADS has two Hynix 512MB Nand flash chips in a single
|
||||
* stacked package.
|
||||
*/
|
||||
chips = <2>;
|
||||
|
||||
nand@0 {
|
||||
label = "nand";
|
||||
reg = <0x00000000 0x40000000>; // 512MB + 512MB
|
||||
reg = <0x00000000 0x40000000>; /* 512MB + 512MB */
|
||||
};
|
||||
};
|
||||
|
||||
localbus@80000020 {
|
||||
compatible = "fsl,mpc5121-localbus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x80000020 0x40>;
|
||||
|
||||
ranges = <0x0 0x0 0xfc000000 0x04000000
|
||||
0x2 0x0 0x82000000 0x00008000>;
|
||||
|
||||
@ -87,6 +39,7 @@
|
||||
#size-cells = <1>;
|
||||
bank-width = <4>;
|
||||
device-width = <2>;
|
||||
|
||||
protected@0 {
|
||||
label = "protected";
|
||||
reg = <0x00000000 0x00040000>; // first sector is protected
|
||||
@ -121,91 +74,18 @@
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0x2 0xa 0x5>;
|
||||
interrupt-parent = < &ipic >;
|
||||
// irq routing
|
||||
// all irqs but touch screen are routed to irq0 (ipic 48)
|
||||
// touch screen is statically routed to irq1 (ipic 17)
|
||||
// so don't use it here
|
||||
/* irq routing:
|
||||
* all irqs but touch screen are routed to irq0 (ipic 48)
|
||||
* touch screen is statically routed to irq1 (ipic 17)
|
||||
* so don't use it here
|
||||
*/
|
||||
interrupts = <48 0x8>;
|
||||
};
|
||||
};
|
||||
|
||||
soc@80000000 {
|
||||
compatible = "fsl,mpc5121-immr";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
ranges = <0x0 0x80000000 0x400000>;
|
||||
reg = <0x80000000 0x400000>;
|
||||
bus-frequency = <66000000>; // 66 MHz ips bus
|
||||
|
||||
|
||||
// IPIC
|
||||
// interrupts cell = <intr #, sense>
|
||||
// sense values match linux IORESOURCE_IRQ_* defines:
|
||||
// sense == 8: Level, low assertion
|
||||
// sense == 2: Edge, high-to-low change
|
||||
//
|
||||
ipic: interrupt-controller@c00 {
|
||||
compatible = "fsl,mpc5121-ipic", "fsl,ipic";
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0xc00 0x100>;
|
||||
};
|
||||
|
||||
rtc@a00 { // Real time clock
|
||||
compatible = "fsl,mpc5121-rtc";
|
||||
reg = <0xa00 0x100>;
|
||||
interrupts = <79 0x8 80 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
reset@e00 { // Reset module
|
||||
compatible = "fsl,mpc5121-reset";
|
||||
reg = <0xe00 0x100>;
|
||||
};
|
||||
|
||||
clock@f00 { // Clock control
|
||||
compatible = "fsl,mpc5121-clock";
|
||||
reg = <0xf00 0x100>;
|
||||
};
|
||||
|
||||
pmc@1000{ //Power Management Controller
|
||||
compatible = "fsl,mpc5121-pmc";
|
||||
reg = <0x1000 0x100>;
|
||||
interrupts = <83 0x2>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
gpio@1100 {
|
||||
compatible = "fsl,mpc5121-gpio";
|
||||
reg = <0x1100 0x100>;
|
||||
interrupts = <78 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
can@1300 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <12 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
reg = <0x1300 0x80>;
|
||||
};
|
||||
|
||||
can@1380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <13 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
reg = <0x1380 0x80>;
|
||||
};
|
||||
|
||||
i2c@1700 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1700 0x20>;
|
||||
interrupts = <9 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
fsl,preserve-clocking;
|
||||
|
||||
hwmon@4a {
|
||||
@ -224,196 +104,75 @@
|
||||
};
|
||||
};
|
||||
|
||||
i2c@1720 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1720 0x20>;
|
||||
interrupts = <10 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
eth0: ethernet@2800 {
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
i2c@1740 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1740 0x20>;
|
||||
interrupts = <11 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
can@2300 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2ccontrol@1760 {
|
||||
compatible = "fsl,mpc5121-i2c-ctrl";
|
||||
reg = <0x1760 0x8>;
|
||||
can@2380 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
axe@2000 {
|
||||
compatible = "fsl,mpc5121-axe";
|
||||
reg = <0x2000 0x100>;
|
||||
interrupts = <42 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
display@2100 {
|
||||
compatible = "fsl,mpc5121-diu";
|
||||
reg = <0x2100 0x100>;
|
||||
interrupts = <64 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
viu@2400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mdio@2800 {
|
||||
compatible = "fsl,mpc5121-fec-mdio";
|
||||
reg = <0x2800 0x800>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy: ethernet-phy@0 {
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <1>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
};
|
||||
|
||||
ethernet@2800 {
|
||||
device_type = "network";
|
||||
compatible = "fsl,mpc5121-fec";
|
||||
reg = <0x2800 0x800>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <4 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
phy-handle = < &phy >;
|
||||
fsl,align-tx-packets = <4>;
|
||||
/* mpc5121ads only uses USB0 */
|
||||
usb@3000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
// 5121e has two dr usb modules
|
||||
// mpc5121_ads only uses USB0
|
||||
|
||||
// USB1 using external ULPI PHY
|
||||
//usb@3000 {
|
||||
// compatible = "fsl,mpc5121-usb2-dr";
|
||||
// reg = <0x3000 0x1000>;
|
||||
// #address-cells = <1>;
|
||||
// #size-cells = <0>;
|
||||
// interrupt-parent = < &ipic >;
|
||||
// interrupts = <43 0x8>;
|
||||
// dr_mode = "otg";
|
||||
// phy_type = "ulpi";
|
||||
//};
|
||||
|
||||
// USB0 using internal UTMI PHY
|
||||
/* USB0 using internal UTMI PHY */
|
||||
usb@4000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x4000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <44 0x8>;
|
||||
dr_mode = "otg";
|
||||
phy_type = "utmi_wide";
|
||||
dr_mode = "host";
|
||||
fsl,invert-drvvbus;
|
||||
fsl,invert-pwr-fault;
|
||||
};
|
||||
|
||||
// IO control
|
||||
ioctl@a000 {
|
||||
compatible = "fsl,mpc5121-ioctl";
|
||||
reg = <0xA000 0x1000>;
|
||||
};
|
||||
|
||||
pata@10200 {
|
||||
compatible = "fsl,mpc5121-pata";
|
||||
reg = <0x10200 0x100>;
|
||||
interrupts = <5 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
// 512x PSCs are not 52xx PSC compatible
|
||||
// PSC3 serial port A aka ttyPSC0
|
||||
serial@11300 {
|
||||
device_type = "serial";
|
||||
/* PSC3 serial port A aka ttyPSC0 */
|
||||
psc@11300 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
// Logical port assignment needed until driver
|
||||
// learns to use aliases
|
||||
port-number = <0>;
|
||||
cell-index = <3>;
|
||||
reg = <0x11300 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
rx-fifo-size = <16>;
|
||||
tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
// PSC4 serial port B aka ttyPSC1
|
||||
serial@11400 {
|
||||
device_type = "serial";
|
||||
/* PSC4 serial port B aka ttyPSC1 */
|
||||
psc@11400 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
// Logical port assignment needed until driver
|
||||
// learns to use aliases
|
||||
port-number = <1>;
|
||||
cell-index = <4>;
|
||||
reg = <0x11400 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
rx-fifo-size = <16>;
|
||||
tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
// PSC5 in ac97 mode
|
||||
ac97@11500 {
|
||||
/* PSC5 in ac97 mode */
|
||||
ac97: psc@11500 {
|
||||
compatible = "fsl,mpc5121-psc-ac97", "fsl,mpc5121-psc";
|
||||
cell-index = <5>;
|
||||
reg = <0x11500 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
fsl,mode = "ac97-slave";
|
||||
rx-fifo-size = <384>;
|
||||
tx-fifo-size = <384>;
|
||||
fsl,rx-fifo-size = <384>;
|
||||
fsl,tx-fifo-size = <384>;
|
||||
};
|
||||
|
||||
pscfifo@11f00 {
|
||||
compatible = "fsl,mpc5121-psc-fifo";
|
||||
reg = <0x11f00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
dma@14000 {
|
||||
compatible = "fsl,mpc5121-dma";
|
||||
reg = <0x14000 0x1800>;
|
||||
interrupts = <65 0x8>;
|
||||
interrupt-parent = < &ipic >;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
pci: pci@80008500 {
|
||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
// IDSEL 0x15 - Slot 1 PCI
|
||||
/* IDSEL 0x15 - Slot 1 PCI */
|
||||
0xa800 0x0 0x0 0x1 &cpld_pic 0x0 0x8
|
||||
0xa800 0x0 0x0 0x2 &cpld_pic 0x1 0x8
|
||||
0xa800 0x0 0x0 0x3 &cpld_pic 0x2 0x8
|
||||
0xa800 0x0 0x0 0x4 &cpld_pic 0x3 0x8
|
||||
|
||||
// IDSEL 0x16 - Slot 2 MiniPCI
|
||||
/* IDSEL 0x16 - Slot 2 MiniPCI */
|
||||
0xb000 0x0 0x0 0x1 &cpld_pic 0x4 0x8
|
||||
0xb000 0x0 0x0 0x2 &cpld_pic 0x5 0x8
|
||||
|
||||
// IDSEL 0x17 - Slot 3 MiniPCI
|
||||
/* IDSEL 0x17 - Slot 3 MiniPCI */
|
||||
0xb800 0x0 0x0 0x1 &cpld_pic 0x6 0x8
|
||||
0xb800 0x0 0x0 0x2 &cpld_pic 0x7 0x8
|
||||
>;
|
||||
interrupt-parent = < &ipic >;
|
||||
interrupts = <1 0x8>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
|
||||
0x02000000 0x0 0xb0000000 0xb0000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0x84000000 0x0 0x01000000>;
|
||||
clock-frequency = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <0x80008500 0x100 /* internal registers */
|
||||
0x80008300 0x8>; /* config space access registers */
|
||||
compatible = "fsl,mpc5121-pci";
|
||||
device_type = "pci";
|
||||
};
|
||||
};
|
||||
|
@ -64,50 +64,59 @@
|
||||
reg = <0x500 0x80>;
|
||||
};
|
||||
|
||||
timer@600 { // General Purpose Timer
|
||||
gpt0: timer@600 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x600 0x10>;
|
||||
interrupts = <1 9 0>;
|
||||
// add 'fsl,has-wdt' to enable watchdog
|
||||
};
|
||||
|
||||
timer@610 { // General Purpose Timer
|
||||
gpt1: timer@610 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x610 0x10>;
|
||||
interrupts = <1 10 0>;
|
||||
};
|
||||
|
||||
timer@620 { // General Purpose Timer
|
||||
gpt2: timer@620 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x620 0x10>;
|
||||
interrupts = <1 11 0>;
|
||||
};
|
||||
|
||||
timer@630 { // General Purpose Timer
|
||||
gpt3: timer@630 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x630 0x10>;
|
||||
interrupts = <1 12 0>;
|
||||
};
|
||||
|
||||
timer@640 { // General Purpose Timer
|
||||
gpt4: timer@640 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x640 0x10>;
|
||||
interrupts = <1 13 0>;
|
||||
};
|
||||
|
||||
timer@650 { // General Purpose Timer
|
||||
gpt5: timer@650 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x650 0x10>;
|
||||
interrupts = <1 14 0>;
|
||||
};
|
||||
|
||||
timer@660 { // General Purpose Timer
|
||||
gpt6: timer@660 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x660 0x10>;
|
||||
interrupts = <1 15 0>;
|
||||
};
|
||||
|
||||
timer@670 { // General Purpose Timer
|
||||
gpt7: timer@670 { // General Purpose Timer
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
#gpio-cells = <2>; // Add 'gpio-controller;' to enable gpio mode
|
||||
reg = <0x670 0x10>;
|
||||
interrupts = <1 16 0>;
|
||||
};
|
||||
|
@ -13,47 +13,23 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
/* Timer pins that need to be in GPIO mode */
|
||||
&gpt0 { gpio-controller; };
|
||||
&gpt1 { gpio-controller; };
|
||||
&gpt2 { gpio-controller; };
|
||||
&gpt3 { gpio-controller; };
|
||||
|
||||
/* Disabled timers */
|
||||
&gpt4 { status = "disabled"; };
|
||||
&gpt5 { status = "disabled"; };
|
||||
&gpt6 { status = "disabled"; };
|
||||
&gpt7 { status = "disabled"; };
|
||||
|
||||
/ {
|
||||
model = "manroland,mucmc52";
|
||||
compatible = "manroland,mucmc52";
|
||||
|
||||
soc5200@f0000000 {
|
||||
gpt0: timer@600 { // GPT 0 in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt1: timer@610 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt2: timer@620 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt3: timer@630 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
timer@640 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer@650 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer@660 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timer@670 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rtc@800 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -12,6 +12,13 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 {
|
||||
gpio-controller;
|
||||
fsl,has-wdt;
|
||||
fsl,wdt-on-boot = <0>;
|
||||
};
|
||||
&gpt1 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "ifm,o2d";
|
||||
compatible = "ifm,o2d";
|
||||
@ -22,24 +29,6 @@
|
||||
|
||||
soc5200@f0000000 {
|
||||
|
||||
gpio_simple: gpio@b00 {
|
||||
};
|
||||
|
||||
timer@600 { // General Purpose Timer
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
fsl,has-wdt;
|
||||
fsl,wdt-on-boot = <0>;
|
||||
};
|
||||
|
||||
timer@610 {
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
};
|
||||
|
||||
timer7: timer@670 {
|
||||
};
|
||||
|
||||
rtc@800 {
|
||||
status = "disabled";
|
||||
};
|
||||
@ -118,7 +107,7 @@
|
||||
csi@3,0 {
|
||||
compatible = "ifm,o2d-csi";
|
||||
reg = <3 0 0x00100000>;
|
||||
ifm,csi-clk-handle = <&timer7>;
|
||||
ifm,csi-clk-handle = <&gpt7>;
|
||||
gpios = <&gpio_simple 23 0 /* imag_capture */
|
||||
&gpio_simple 26 0 /* imag_reset */
|
||||
&gpio_simple 29 0>; /* imag_master_en */
|
||||
|
@ -14,51 +14,19 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
&gpt2 { gpio-controller; };
|
||||
&gpt3 { gpio-controller; };
|
||||
&gpt4 { gpio-controller; };
|
||||
&gpt5 { gpio-controller; };
|
||||
&gpt6 { gpio-controller; };
|
||||
&gpt7 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "phytec,pcm030";
|
||||
compatible = "phytec,pcm030";
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
gpt2: timer@620 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt3: timer@630 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt4: timer@640 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt5: timer@650 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt6: timer@660 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt7: timer@670 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
audioplatform: psc@2000 { /* PSC1 in ac97 mode */
|
||||
compatible = "mpc5200b-psc-ac97","fsl,mpc5200b-psc-ac97";
|
||||
cell-index = <0>;
|
||||
|
@ -14,6 +14,14 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { fsl,has-wdt; };
|
||||
&gpt2 { gpio-controller; };
|
||||
&gpt3 { gpio-controller; };
|
||||
&gpt4 { gpio-controller; };
|
||||
&gpt5 { gpio-controller; };
|
||||
&gpt6 { gpio-controller; };
|
||||
&gpt7 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "phytec,pcm032";
|
||||
compatible = "phytec,pcm032";
|
||||
@ -23,43 +31,6 @@
|
||||
};
|
||||
|
||||
soc5200@f0000000 {
|
||||
timer@600 { // General Purpose Timer
|
||||
fsl,has-wdt;
|
||||
};
|
||||
|
||||
gpt2: timer@620 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt3: timer@630 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt4: timer@640 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt5: timer@650 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt6: timer@660 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
reg = <0x660 0x10>;
|
||||
interrupts = <1 15 0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt7: timer@670 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
psc@2000 { /* PSC1 is ac97 */
|
||||
compatible = "fsl,mpc5200b-psc-ac97","fsl,mpc5200-psc-ac97";
|
||||
cell-index = <0>;
|
||||
|
@ -13,7 +13,7 @@
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "mpc5121.dtsi"
|
||||
|
||||
/ {
|
||||
model = "pdm360ng";
|
||||
@ -22,38 +22,12 @@
|
||||
#size-cells = <1>;
|
||||
interrupt-parent = <&ipic>;
|
||||
|
||||
aliases {
|
||||
ethernet0 = ð0;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,5121@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; // 32 bytes
|
||||
i-cache-line-size = <0x20>; // 32 bytes
|
||||
d-cache-size = <0x8000>; // L1, 32K
|
||||
i-cache-size = <0x8000>; // L1, 32K
|
||||
timebase-frequency = <49500000>;// 49.5 MHz (csb/4)
|
||||
bus-frequency = <198000000>; // 198 MHz csb bus
|
||||
clock-frequency = <396000000>; // 396 MHz ppc core
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x20000000>; // 512MB at 0
|
||||
};
|
||||
|
||||
nfc@40000000 {
|
||||
compatible = "fsl,mpc5121-nfc";
|
||||
reg = <0x40000000 0x100000>;
|
||||
interrupts = <0x6 0x8>;
|
||||
#address-cells = <0x1>;
|
||||
#size-cells = <0x1>;
|
||||
bank-width = <0x1>;
|
||||
chips = <0x1>;
|
||||
|
||||
@ -63,17 +37,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
sram@50000000 {
|
||||
compatible = "fsl,mpc5121-sram";
|
||||
reg = <0x50000000 0x20000>; // 128K at 0x50000000
|
||||
};
|
||||
|
||||
localbus@80000020 {
|
||||
compatible = "fsl,mpc5121-localbus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x80000020 0x40>;
|
||||
|
||||
ranges = <0x0 0x0 0xf0000000 0x10000000 /* Flash */
|
||||
0x2 0x0 0x50040000 0x00020000>; /* CS2: MRAM */
|
||||
|
||||
@ -129,74 +93,8 @@
|
||||
};
|
||||
|
||||
soc@80000000 {
|
||||
compatible = "fsl,mpc5121-immr";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
ranges = <0x0 0x80000000 0x400000>;
|
||||
reg = <0x80000000 0x400000>;
|
||||
bus-frequency = <66000000>; // 66 MHz ips bus
|
||||
|
||||
// IPIC
|
||||
// interrupts cell = <intr #, sense>
|
||||
// sense values match linux IORESOURCE_IRQ_* defines:
|
||||
// sense == 8: Level, low assertion
|
||||
// sense == 2: Edge, high-to-low change
|
||||
//
|
||||
ipic: interrupt-controller@c00 {
|
||||
compatible = "fsl,mpc5121-ipic", "fsl,ipic";
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0xc00 0x100>;
|
||||
};
|
||||
|
||||
rtc@a00 { // Real time clock
|
||||
compatible = "fsl,mpc5121-rtc";
|
||||
reg = <0xa00 0x100>;
|
||||
interrupts = <79 0x8 80 0x8>;
|
||||
};
|
||||
|
||||
reset@e00 { // Reset module
|
||||
compatible = "fsl,mpc5121-reset";
|
||||
reg = <0xe00 0x100>;
|
||||
};
|
||||
|
||||
clock@f00 { // Clock control
|
||||
compatible = "fsl,mpc5121-clock";
|
||||
reg = <0xf00 0x100>;
|
||||
};
|
||||
|
||||
pmc@1000{ //Power Management Controller
|
||||
compatible = "fsl,mpc5121-pmc";
|
||||
reg = <0x1000 0x100>;
|
||||
interrupts = <83 0x2>;
|
||||
};
|
||||
|
||||
gpio@1100 {
|
||||
compatible = "fsl,mpc5121-gpio";
|
||||
reg = <0x1100 0x100>;
|
||||
interrupts = <78 0x8>;
|
||||
};
|
||||
|
||||
can@1300 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <12 0x8>;
|
||||
reg = <0x1300 0x80>;
|
||||
};
|
||||
|
||||
can@1380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <13 0x8>;
|
||||
reg = <0x1380 0x80>;
|
||||
};
|
||||
|
||||
i2c@1700 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c";
|
||||
reg = <0x1700 0x20>;
|
||||
interrupts = <0x9 0x8>;
|
||||
fsl,preserve-clocking;
|
||||
|
||||
eeprom@50 {
|
||||
@ -210,201 +108,92 @@
|
||||
};
|
||||
};
|
||||
|
||||
i2c@1720 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c@1740 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c";
|
||||
reg = <0x1740 0x20>;
|
||||
interrupts = <0xb 0x8>;
|
||||
fsl,preserve-clocking;
|
||||
};
|
||||
|
||||
i2ccontrol@1760 {
|
||||
compatible = "fsl,mpc5121-i2c-ctrl";
|
||||
reg = <0x1760 0x8>;
|
||||
};
|
||||
|
||||
axe@2000 {
|
||||
compatible = "fsl,mpc5121-axe";
|
||||
reg = <0x2000 0x100>;
|
||||
interrupts = <42 0x8>;
|
||||
};
|
||||
|
||||
display@2100 {
|
||||
compatible = "fsl,mpc5121-diu";
|
||||
reg = <0x2100 0x100>;
|
||||
interrupts = <64 0x8>;
|
||||
};
|
||||
|
||||
can@2300 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <90 0x8>;
|
||||
reg = <0x2300 0x80>;
|
||||
};
|
||||
|
||||
can@2380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <91 0x8>;
|
||||
reg = <0x2380 0x80>;
|
||||
};
|
||||
|
||||
viu@2400 {
|
||||
compatible = "fsl,mpc5121-viu";
|
||||
reg = <0x2400 0x400>;
|
||||
interrupts = <67 0x8>;
|
||||
ethernet@2800 {
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
mdio@2800 {
|
||||
compatible = "fsl,mpc5121-fec-mdio";
|
||||
reg = <0x2800 0x200>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy: ethernet-phy@0 {
|
||||
phy0: ethernet-phy@1f {
|
||||
compatible = "smsc,lan8700";
|
||||
reg = <0x1f>;
|
||||
};
|
||||
};
|
||||
|
||||
eth0: ethernet@2800 {
|
||||
compatible = "fsl,mpc5121-fec";
|
||||
reg = <0x2800 0x200>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <4 0x8>;
|
||||
phy-handle = < &phy >;
|
||||
};
|
||||
|
||||
// USB1 using external ULPI PHY
|
||||
/* USB1 using external ULPI PHY */
|
||||
usb@3000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x3000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <43 0x8>;
|
||||
dr_mode = "host";
|
||||
phy_type = "ulpi";
|
||||
};
|
||||
|
||||
// USB0 using internal UTMI PHY
|
||||
/* USB0 using internal UTMI PHY */
|
||||
usb@4000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x4000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <44 0x8>;
|
||||
dr_mode = "otg";
|
||||
phy_type = "utmi_wide";
|
||||
fsl,invert-pwr-fault;
|
||||
};
|
||||
|
||||
// IO control
|
||||
ioctl@a000 {
|
||||
compatible = "fsl,mpc5121-ioctl";
|
||||
reg = <0xA000 0x1000>;
|
||||
};
|
||||
|
||||
// 512x PSCs are not 52xx PSCs compatible
|
||||
serial@11000 {
|
||||
psc@11000 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <0>;
|
||||
reg = <0x11000 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11100 {
|
||||
psc@11100 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <1>;
|
||||
reg = <0x11100 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11200 {
|
||||
psc@11200 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <2>;
|
||||
reg = <0x11200 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11300 {
|
||||
psc@11300 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <3>;
|
||||
reg = <0x11300 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11400 {
|
||||
psc@11400 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <4>;
|
||||
reg = <0x11400 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11600 {
|
||||
psc@11500 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
psc@11600 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <6>;
|
||||
reg = <0x11600 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11800 {
|
||||
psc@11700 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
psc@11800 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <8>;
|
||||
reg = <0x11800 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
serial@11B00 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
cell-index = <11>;
|
||||
reg = <0x11B00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
pscfifo@11f00 {
|
||||
compatible = "fsl,mpc5121-psc-fifo";
|
||||
reg = <0x11f00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
};
|
||||
|
||||
spi@11900 {
|
||||
psc@11900 {
|
||||
compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
|
||||
cell-index = <9>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x11900 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
|
||||
// 7845 touch screen controller
|
||||
/* ADS7845 touch screen controller */
|
||||
ts@0 {
|
||||
compatible = "ti,ads7846";
|
||||
reg = <0x0>;
|
||||
spi-max-frequency = <3000000>;
|
||||
// pen irq is GPIO25
|
||||
/* pen irq is GPIO25 */
|
||||
interrupts = <78 0x8>;
|
||||
};
|
||||
};
|
||||
|
||||
dma@14000 {
|
||||
compatible = "fsl,mpc5121-dma";
|
||||
reg = <0x14000 0x1800>;
|
||||
interrupts = <65 0x8>;
|
||||
psc@11a00 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
psc@11b00 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
166
arch/powerpc/boot/dts/ppa8548.dts
Normal file
166
arch/powerpc/boot/dts/ppa8548.dts
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* PPA8548 Device Tree Source (36-bit address map)
|
||||
* Copyright 2013 Prodrive B.V.
|
||||
*
|
||||
* Based on:
|
||||
* MPC8548 CDS Device Tree Source (36-bit address map)
|
||||
* Copyright 2012 Freescale Semiconductor Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/include/ "fsl/mpc8548si-pre.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ppa8548";
|
||||
compatible = "ppa8548";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0 0 0x0 0x40000000>;
|
||||
};
|
||||
|
||||
lbc: localbus@fe0005000 {
|
||||
reg = <0xf 0xe0005000 0 0x1000>;
|
||||
ranges = <0x0 0x0 0xf 0xff800000 0x00800000>;
|
||||
};
|
||||
|
||||
soc: soc8548@fe0000000 {
|
||||
ranges = <0 0xf 0xe0000000 0x100000>;
|
||||
};
|
||||
|
||||
pci0: pci@fe0008000 {
|
||||
/* ppa8548 board doesn't support PCI */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pci1: pci@fe0009000 {
|
||||
/* ppa8548 board doesn't support PCI */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pci2: pcie@fe000a000 {
|
||||
/* ppa8548 board doesn't support PCI */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
rio: rapidio@fe00c0000 {
|
||||
reg = <0xf 0xe00c0000 0x0 0x11000>;
|
||||
port1 {
|
||||
ranges = <0x0 0x0 0x0 0x80000000 0x0 0x40000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lbc {
|
||||
nor@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "cfi-flash";
|
||||
reg = <0x0 0x0 0x00800000>;
|
||||
bank-width = <2>;
|
||||
device-width = <2>;
|
||||
|
||||
partition@0 {
|
||||
reg = <0x0 0x7A0000>;
|
||||
label = "user";
|
||||
};
|
||||
|
||||
partition@7A0000 {
|
||||
reg = <0x7A0000 0x20000>;
|
||||
label = "env";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@7C0000 {
|
||||
reg = <0x7C0000 0x40000>;
|
||||
label = "u-boot";
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
i2c@3000 {
|
||||
rtc@6f {
|
||||
compatible = "intersil,isl1208";
|
||||
reg = <0x6f>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c@3100 {
|
||||
};
|
||||
|
||||
/*
|
||||
* Only ethernet controller @25000 and @26000 are used.
|
||||
* Use alias enet2 and enet3 for the remainig controllers,
|
||||
* to stay compatible with mpc8548si-pre.dtsi.
|
||||
*/
|
||||
enet2: ethernet@24000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mdio@24520 {
|
||||
phy0: ethernet-phy@0 {
|
||||
interrupts = <7 1 0 0>;
|
||||
reg = <0x0>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
phy1: ethernet-phy@1 {
|
||||
interrupts = <8 1 0 0>;
|
||||
reg = <0x1>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
tbi0: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
enet0: ethernet@25000 {
|
||||
tbi-handle = <&tbi1>;
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
mdio@25520 {
|
||||
tbi1: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
enet1: ethernet@26000 {
|
||||
tbi-handle = <&tbi2>;
|
||||
phy-handle = <&phy1>;
|
||||
};
|
||||
|
||||
mdio@26520 {
|
||||
tbi2: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
enet3: ethernet@27000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mdio@27520 {
|
||||
tbi3: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
|
||||
crypto@30000 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "fsl/mpc8548si-post.dtsi"
|
115
arch/powerpc/boot/dts/sbc8548-altflash.dts
Normal file
115
arch/powerpc/boot/dts/sbc8548-altflash.dts
Normal file
@ -0,0 +1,115 @@
|
||||
/*
|
||||
* SBC8548 Device Tree Source
|
||||
*
|
||||
* Configured for booting off the alternate (64MB SODIMM) flash.
|
||||
* Requires switching JP12 jumpers and changing SW2.8 setting.
|
||||
*
|
||||
* Copyright 2013 Wind River Systems Inc.
|
||||
*
|
||||
* Paul Gortmaker (see MAINTAINERS for contact information)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/include/ "sbc8548-pre.dtsi"
|
||||
|
||||
/{
|
||||
localbus@e0000000 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
compatible = "simple-bus";
|
||||
reg = <0xe0000000 0x5000>;
|
||||
interrupt-parent = <&mpic>;
|
||||
|
||||
ranges = <0x0 0x0 0xfc000000 0x04000000 /*64MB Flash*/
|
||||
0x3 0x0 0xf0000000 0x04000000 /*64MB SDRAM*/
|
||||
0x4 0x0 0xf4000000 0x04000000 /*64MB SDRAM*/
|
||||
0x5 0x0 0xf8000000 0x00b10000 /* EPLD */
|
||||
0x6 0x0 0xef800000 0x00800000>; /*8MB Flash*/
|
||||
|
||||
flash@0,0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x0 0x0 0x04000000>;
|
||||
compatible = "intel,JS28F128", "cfi-flash";
|
||||
bank-width = <4>;
|
||||
device-width = <1>;
|
||||
partition@0x0 {
|
||||
label = "space";
|
||||
/* FC000000 -> FFEFFFFF */
|
||||
reg = <0x00000000 0x03f00000>;
|
||||
};
|
||||
partition@0x03f00000 {
|
||||
label = "bootloader";
|
||||
/* FFF00000 -> FFFFFFFF */
|
||||
reg = <0x03f00000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
epld@5,0 {
|
||||
compatible = "wrs,epld-localbus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x5 0x0 0x00b10000>;
|
||||
ranges = <
|
||||
0x0 0x0 0x5 0x000000 0x1fff /* LED */
|
||||
0x1 0x0 0x5 0x100000 0x1fff /* Switches */
|
||||
0x3 0x0 0x5 0x300000 0x1fff /* HW Rev. */
|
||||
0xb 0x0 0x5 0xb00000 0x1fff /* EEPROM */
|
||||
>;
|
||||
|
||||
led@0,0 {
|
||||
compatible = "led";
|
||||
reg = <0x0 0x0 0x1fff>;
|
||||
};
|
||||
|
||||
switches@1,0 {
|
||||
compatible = "switches";
|
||||
reg = <0x1 0x0 0x1fff>;
|
||||
};
|
||||
|
||||
hw-rev@3,0 {
|
||||
compatible = "hw-rev";
|
||||
reg = <0x3 0x0 0x1fff>;
|
||||
};
|
||||
|
||||
eeprom@b,0 {
|
||||
compatible = "eeprom";
|
||||
reg = <0xb 0 0x1fff>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
alt-flash@6,0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "intel,JS28F640", "cfi-flash";
|
||||
reg = <0x6 0x0 0x800000>;
|
||||
bank-width = <1>;
|
||||
device-width = <1>;
|
||||
partition@0x0 {
|
||||
label = "space";
|
||||
/* EF800000 -> EFF9FFFF */
|
||||
reg = <0x00000000 0x007a0000>;
|
||||
};
|
||||
partition@0x7a0000 {
|
||||
label = "bootloader";
|
||||
/* EFFA0000 -> EFFFFFFF */
|
||||
reg = <0x007a0000 0x00060000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "sbc8548-post.dtsi"
|
295
arch/powerpc/boot/dts/sbc8548-post.dtsi
Normal file
295
arch/powerpc/boot/dts/sbc8548-post.dtsi
Normal file
@ -0,0 +1,295 @@
|
||||
/*
|
||||
* SBC8548 Device Tree Source
|
||||
*
|
||||
* Copyright 2007 Wind River Systems Inc.
|
||||
*
|
||||
* Paul Gortmaker (see MAINTAINERS for contact information)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/{
|
||||
soc8548@e0000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
device_type = "soc";
|
||||
ranges = <0x00000000 0xe0000000 0x00100000>;
|
||||
bus-frequency = <0>;
|
||||
compatible = "simple-bus";
|
||||
|
||||
ecm-law@0 {
|
||||
compatible = "fsl,ecm-law";
|
||||
reg = <0x0 0x1000>;
|
||||
fsl,num-laws = <10>;
|
||||
};
|
||||
|
||||
ecm@1000 {
|
||||
compatible = "fsl,mpc8548-ecm", "fsl,ecm";
|
||||
reg = <0x1000 0x1000>;
|
||||
interrupts = <17 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
memory-controller@2000 {
|
||||
compatible = "fsl,mpc8548-memory-controller";
|
||||
reg = <0x2000 0x1000>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x12 0x2>;
|
||||
};
|
||||
|
||||
L2: l2-cache-controller@20000 {
|
||||
compatible = "fsl,mpc8548-l2-cache-controller";
|
||||
reg = <0x20000 0x1000>;
|
||||
cache-line-size = <0x20>; // 32 bytes
|
||||
cache-size = <0x80000>; // L2, 512K
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x10 0x2>;
|
||||
};
|
||||
|
||||
i2c@3000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cell-index = <0>;
|
||||
compatible = "fsl-i2c";
|
||||
reg = <0x3000 0x100>;
|
||||
interrupts = <0x2b 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
dfsrr;
|
||||
};
|
||||
|
||||
i2c@3100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cell-index = <1>;
|
||||
compatible = "fsl-i2c";
|
||||
reg = <0x3100 0x100>;
|
||||
interrupts = <0x2b 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
dfsrr;
|
||||
};
|
||||
|
||||
dma@21300 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
|
||||
reg = <0x21300 0x4>;
|
||||
ranges = <0x0 0x21100 0x200>;
|
||||
cell-index = <0>;
|
||||
dma-channel@0 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x0 0x80>;
|
||||
cell-index = <0>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <20 2>;
|
||||
};
|
||||
dma-channel@80 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x80 0x80>;
|
||||
cell-index = <1>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <21 2>;
|
||||
};
|
||||
dma-channel@100 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x100 0x80>;
|
||||
cell-index = <2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <22 2>;
|
||||
};
|
||||
dma-channel@180 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x180 0x80>;
|
||||
cell-index = <3>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <23 2>;
|
||||
};
|
||||
};
|
||||
|
||||
enet0: ethernet@24000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
cell-index = <0>;
|
||||
device_type = "network";
|
||||
model = "eTSEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x24000 0x1000>;
|
||||
ranges = <0x0 0x24000 0x1000>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
tbi-handle = <&tbi0>;
|
||||
phy-handle = <&phy0>;
|
||||
|
||||
mdio@520 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,gianfar-mdio";
|
||||
reg = <0x520 0x20>;
|
||||
|
||||
phy0: ethernet-phy@19 {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x6 0x1>;
|
||||
reg = <0x19>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
phy1: ethernet-phy@1a {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x7 0x1>;
|
||||
reg = <0x1a>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
tbi0: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
enet1: ethernet@25000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
cell-index = <1>;
|
||||
device_type = "network";
|
||||
model = "eTSEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x25000 0x1000>;
|
||||
ranges = <0x0 0x25000 0x1000>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
tbi-handle = <&tbi1>;
|
||||
phy-handle = <&phy1>;
|
||||
|
||||
mdio@520 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,gianfar-tbi";
|
||||
reg = <0x520 0x20>;
|
||||
|
||||
tbi1: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
serial0: serial@4500 {
|
||||
cell-index = <0>;
|
||||
device_type = "serial";
|
||||
compatible = "fsl,ns16550", "ns16550";
|
||||
reg = <0x4500 0x100>; // reg base, size
|
||||
clock-frequency = <0>; // should we fill in in uboot?
|
||||
interrupts = <0x2a 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
serial1: serial@4600 {
|
||||
cell-index = <1>;
|
||||
device_type = "serial";
|
||||
compatible = "fsl,ns16550", "ns16550";
|
||||
reg = <0x4600 0x100>; // reg base, size
|
||||
clock-frequency = <0>; // should we fill in in uboot?
|
||||
interrupts = <0x2a 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
global-utilities@e0000 { //global utilities reg
|
||||
compatible = "fsl,mpc8548-guts";
|
||||
reg = <0xe0000 0x1000>;
|
||||
fsl,has-rstcr;
|
||||
};
|
||||
|
||||
crypto@30000 {
|
||||
compatible = "fsl,sec2.1", "fsl,sec2.0";
|
||||
reg = <0x30000 0x10000>;
|
||||
interrupts = <45 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
fsl,num-channels = <4>;
|
||||
fsl,channel-fifo-len = <24>;
|
||||
fsl,exec-units-mask = <0xfe>;
|
||||
fsl,descriptor-types-mask = <0x12b0ebf>;
|
||||
};
|
||||
|
||||
mpic: pic@40000 {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0x40000 0x40000>;
|
||||
compatible = "chrp,open-pic";
|
||||
device_type = "open-pic";
|
||||
};
|
||||
};
|
||||
|
||||
pci0: pci@e0008000 {
|
||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
/* IDSEL 0x01 (PCI-X slot) @66MHz */
|
||||
0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
|
||||
0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
|
||||
0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
|
||||
0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
|
||||
|
||||
/* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
|
||||
0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
|
||||
0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
|
||||
0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
|
||||
0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
|
||||
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x18 0x2>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00800000>;
|
||||
clock-frequency = <66000000>;
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <0xe0008000 0x1000>;
|
||||
compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
|
||||
device_type = "pci";
|
||||
};
|
||||
|
||||
pci1: pcie@e000a000 {
|
||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
|
||||
/* IDSEL 0x0 (PEX) */
|
||||
0x0000 0x0 0x0 0x1 &mpic 0x0 0x1
|
||||
0x0000 0x0 0x0 0x2 &mpic 0x1 0x1
|
||||
0x0000 0x0 0x0 0x3 &mpic 0x2 0x1
|
||||
0x0000 0x0 0x0 0x4 &mpic 0x3 0x1>;
|
||||
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x1a 0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0xe2800000 0x0 0x08000000>;
|
||||
clock-frequency = <33000000>;
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <0xe000a000 0x1000>;
|
||||
compatible = "fsl,mpc8548-pcie";
|
||||
device_type = "pci";
|
||||
pcie@0 {
|
||||
reg = <0x0 0x0 0x0 0x0 0x0>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
device_type = "pci";
|
||||
ranges = <0x02000000 0x0 0xa0000000
|
||||
0x02000000 0x0 0xa0000000
|
||||
0x0 0x10000000
|
||||
|
||||
0x01000000 0x0 0x00000000
|
||||
0x01000000 0x0 0x00000000
|
||||
0x0 0x00800000>;
|
||||
};
|
||||
};
|
||||
};
|
52
arch/powerpc/boot/dts/sbc8548-pre.dtsi
Normal file
52
arch/powerpc/boot/dts/sbc8548-pre.dtsi
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* SBC8548 Device Tree Source
|
||||
*
|
||||
* Copyright 2007 Wind River Systems Inc.
|
||||
*
|
||||
* Paul Gortmaker (see MAINTAINERS for contact information)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*/
|
||||
|
||||
/{
|
||||
model = "SBC8548";
|
||||
compatible = "SBC8548";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
aliases {
|
||||
ethernet0 = &enet0;
|
||||
ethernet1 = &enet1;
|
||||
serial0 = &serial0;
|
||||
serial1 = &serial1;
|
||||
pci0 = &pci0;
|
||||
pci1 = &pci1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,8548@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; // 32 bytes
|
||||
i-cache-line-size = <0x20>; // 32 bytes
|
||||
d-cache-size = <0x8000>; // L1, 32K
|
||||
i-cache-size = <0x8000>; // L1, 32K
|
||||
timebase-frequency = <0>; // From uboot
|
||||
bus-frequency = <0>;
|
||||
clock-frequency = <0>;
|
||||
next-level-cache = <&L2>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>;
|
||||
};
|
||||
|
||||
};
|
@ -14,44 +14,9 @@
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
model = "SBC8548";
|
||||
compatible = "SBC8548";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
aliases {
|
||||
ethernet0 = &enet0;
|
||||
ethernet1 = &enet1;
|
||||
serial0 = &serial0;
|
||||
serial1 = &serial1;
|
||||
pci0 = &pci0;
|
||||
pci1 = &pci1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,8548@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; // 32 bytes
|
||||
i-cache-line-size = <0x20>; // 32 bytes
|
||||
d-cache-size = <0x8000>; // L1, 32K
|
||||
i-cache-size = <0x8000>; // L1, 32K
|
||||
timebase-frequency = <0>; // From uboot
|
||||
bus-frequency = <0>;
|
||||
clock-frequency = <0>;
|
||||
next-level-cache = <&L2>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>;
|
||||
};
|
||||
/include/ "sbc8548-pre.dtsi"
|
||||
|
||||
/{
|
||||
localbus@e0000000 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
@ -63,23 +28,25 @@
|
||||
0x3 0x0 0xf0000000 0x04000000 /*64MB SDRAM*/
|
||||
0x4 0x0 0xf4000000 0x04000000 /*64MB SDRAM*/
|
||||
0x5 0x0 0xf8000000 0x00b10000 /* EPLD */
|
||||
0x6 0x0 0xfb800000 0x04000000>; /*64MB Flash*/
|
||||
0x6 0x0 0xec000000 0x04000000>; /*64MB Flash*/
|
||||
|
||||
|
||||
flash@0,0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "cfi-flash";
|
||||
compatible = "intel,JS28F640", "cfi-flash";
|
||||
reg = <0x0 0x0 0x800000>;
|
||||
bank-width = <1>;
|
||||
device-width = <1>;
|
||||
partition@0x0 {
|
||||
label = "space";
|
||||
reg = <0x00000000 0x00100000>;
|
||||
/* FF800000 -> FFF9FFFF */
|
||||
reg = <0x00000000 0x007a0000>;
|
||||
};
|
||||
partition@0x100000 {
|
||||
partition@0x7a0000 {
|
||||
label = "bootloader";
|
||||
reg = <0x00100000 0x00700000>;
|
||||
/* FFFA0000 -> FFFFFFFF */
|
||||
reg = <0x007a0000 0x00060000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
@ -122,307 +89,22 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x6 0x0 0x04000000>;
|
||||
compatible = "cfi-flash";
|
||||
compatible = "intel,JS28F128", "cfi-flash";
|
||||
bank-width = <4>;
|
||||
device-width = <1>;
|
||||
partition@0x0 {
|
||||
label = "bootloader";
|
||||
reg = <0x00000000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
partition@0x00100000 {
|
||||
label = "file-system";
|
||||
reg = <0x00100000 0x01f00000>;
|
||||
};
|
||||
partition@0x02000000 {
|
||||
label = "boot-config";
|
||||
reg = <0x02000000 0x00100000>;
|
||||
};
|
||||
partition@0x02100000 {
|
||||
label = "space";
|
||||
reg = <0x02100000 0x01f00000>;
|
||||
/* EC000000 -> EFEFFFFF */
|
||||
reg = <0x00000000 0x03f00000>;
|
||||
};
|
||||
partition@0x03f00000 {
|
||||
label = "bootloader";
|
||||
/* EFF00000 -> EFFFFFFF */
|
||||
reg = <0x03f00000 0x00100000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc8548@e0000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
device_type = "soc";
|
||||
ranges = <0x00000000 0xe0000000 0x00100000>;
|
||||
bus-frequency = <0>;
|
||||
compatible = "simple-bus";
|
||||
|
||||
ecm-law@0 {
|
||||
compatible = "fsl,ecm-law";
|
||||
reg = <0x0 0x1000>;
|
||||
fsl,num-laws = <10>;
|
||||
};
|
||||
|
||||
ecm@1000 {
|
||||
compatible = "fsl,mpc8548-ecm", "fsl,ecm";
|
||||
reg = <0x1000 0x1000>;
|
||||
interrupts = <17 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
memory-controller@2000 {
|
||||
compatible = "fsl,mpc8548-memory-controller";
|
||||
reg = <0x2000 0x1000>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x12 0x2>;
|
||||
};
|
||||
|
||||
L2: l2-cache-controller@20000 {
|
||||
compatible = "fsl,mpc8548-l2-cache-controller";
|
||||
reg = <0x20000 0x1000>;
|
||||
cache-line-size = <0x20>; // 32 bytes
|
||||
cache-size = <0x80000>; // L2, 512K
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x10 0x2>;
|
||||
};
|
||||
|
||||
i2c@3000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cell-index = <0>;
|
||||
compatible = "fsl-i2c";
|
||||
reg = <0x3000 0x100>;
|
||||
interrupts = <0x2b 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
dfsrr;
|
||||
};
|
||||
|
||||
i2c@3100 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cell-index = <1>;
|
||||
compatible = "fsl-i2c";
|
||||
reg = <0x3100 0x100>;
|
||||
interrupts = <0x2b 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
dfsrr;
|
||||
};
|
||||
|
||||
dma@21300 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "fsl,mpc8548-dma", "fsl,eloplus-dma";
|
||||
reg = <0x21300 0x4>;
|
||||
ranges = <0x0 0x21100 0x200>;
|
||||
cell-index = <0>;
|
||||
dma-channel@0 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x0 0x80>;
|
||||
cell-index = <0>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <20 2>;
|
||||
};
|
||||
dma-channel@80 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x80 0x80>;
|
||||
cell-index = <1>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <21 2>;
|
||||
};
|
||||
dma-channel@100 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x100 0x80>;
|
||||
cell-index = <2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <22 2>;
|
||||
};
|
||||
dma-channel@180 {
|
||||
compatible = "fsl,mpc8548-dma-channel",
|
||||
"fsl,eloplus-dma-channel";
|
||||
reg = <0x180 0x80>;
|
||||
cell-index = <3>;
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <23 2>;
|
||||
};
|
||||
};
|
||||
|
||||
enet0: ethernet@24000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
cell-index = <0>;
|
||||
device_type = "network";
|
||||
model = "eTSEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x24000 0x1000>;
|
||||
ranges = <0x0 0x24000 0x1000>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <0x1d 0x2 0x1e 0x2 0x22 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
tbi-handle = <&tbi0>;
|
||||
phy-handle = <&phy0>;
|
||||
|
||||
mdio@520 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,gianfar-mdio";
|
||||
reg = <0x520 0x20>;
|
||||
|
||||
phy0: ethernet-phy@19 {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x6 0x1>;
|
||||
reg = <0x19>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
phy1: ethernet-phy@1a {
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x7 0x1>;
|
||||
reg = <0x1a>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
tbi0: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
enet1: ethernet@25000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
cell-index = <1>;
|
||||
device_type = "network";
|
||||
model = "eTSEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x25000 0x1000>;
|
||||
ranges = <0x0 0x25000 0x1000>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <0x23 0x2 0x24 0x2 0x28 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
tbi-handle = <&tbi1>;
|
||||
phy-handle = <&phy1>;
|
||||
|
||||
mdio@520 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,gianfar-tbi";
|
||||
reg = <0x520 0x20>;
|
||||
|
||||
tbi1: tbi-phy@11 {
|
||||
reg = <0x11>;
|
||||
device_type = "tbi-phy";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
serial0: serial@4500 {
|
||||
cell-index = <0>;
|
||||
device_type = "serial";
|
||||
compatible = "fsl,ns16550", "ns16550";
|
||||
reg = <0x4500 0x100>; // reg base, size
|
||||
clock-frequency = <0>; // should we fill in in uboot?
|
||||
interrupts = <0x2a 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
serial1: serial@4600 {
|
||||
cell-index = <1>;
|
||||
device_type = "serial";
|
||||
compatible = "fsl,ns16550", "ns16550";
|
||||
reg = <0x4600 0x100>; // reg base, size
|
||||
clock-frequency = <0>; // should we fill in in uboot?
|
||||
interrupts = <0x2a 0x2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
};
|
||||
|
||||
global-utilities@e0000 { //global utilities reg
|
||||
compatible = "fsl,mpc8548-guts";
|
||||
reg = <0xe0000 0x1000>;
|
||||
fsl,has-rstcr;
|
||||
};
|
||||
|
||||
crypto@30000 {
|
||||
compatible = "fsl,sec2.1", "fsl,sec2.0";
|
||||
reg = <0x30000 0x10000>;
|
||||
interrupts = <45 2>;
|
||||
interrupt-parent = <&mpic>;
|
||||
fsl,num-channels = <4>;
|
||||
fsl,channel-fifo-len = <24>;
|
||||
fsl,exec-units-mask = <0xfe>;
|
||||
fsl,descriptor-types-mask = <0x12b0ebf>;
|
||||
};
|
||||
|
||||
mpic: pic@40000 {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0x40000 0x40000>;
|
||||
compatible = "chrp,open-pic";
|
||||
device_type = "open-pic";
|
||||
};
|
||||
};
|
||||
|
||||
pci0: pci@e0008000 {
|
||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
/* IDSEL 0x01 (PCI-X slot) @66MHz */
|
||||
0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
|
||||
0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
|
||||
0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
|
||||
0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
|
||||
|
||||
/* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
|
||||
0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
|
||||
0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
|
||||
0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
|
||||
0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
|
||||
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x18 0x2>;
|
||||
bus-range = <0 0>;
|
||||
ranges = <0x02000000 0x0 0x80000000 0x80000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00800000>;
|
||||
clock-frequency = <66000000>;
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <0xe0008000 0x1000>;
|
||||
compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
|
||||
device_type = "pci";
|
||||
};
|
||||
|
||||
pci1: pcie@e000a000 {
|
||||
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
||||
interrupt-map = <
|
||||
|
||||
/* IDSEL 0x0 (PEX) */
|
||||
0x0000 0x0 0x0 0x1 &mpic 0x0 0x1
|
||||
0x0000 0x0 0x0 0x2 &mpic 0x1 0x1
|
||||
0x0000 0x0 0x0 0x3 &mpic 0x2 0x1
|
||||
0x0000 0x0 0x0 0x4 &mpic 0x3 0x1>;
|
||||
|
||||
interrupt-parent = <&mpic>;
|
||||
interrupts = <0x1a 0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
ranges = <0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
|
||||
0x01000000 0x0 0x00000000 0xe2800000 0x0 0x08000000>;
|
||||
clock-frequency = <33000000>;
|
||||
#interrupt-cells = <1>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
reg = <0xe000a000 0x1000>;
|
||||
compatible = "fsl,mpc8548-pcie";
|
||||
device_type = "pci";
|
||||
pcie@0 {
|
||||
reg = <0x0 0x0 0x0 0x0 0x0>;
|
||||
#size-cells = <2>;
|
||||
#address-cells = <3>;
|
||||
device_type = "pci";
|
||||
ranges = <0x02000000 0x0 0xa0000000
|
||||
0x02000000 0x0 0xa0000000
|
||||
0x0 0x10000000
|
||||
|
||||
0x01000000 0x0 0x00000000
|
||||
0x01000000 0x0 0x00000000
|
||||
0x0 0x00800000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/include/ "sbc8548-post.dtsi"
|
||||
|
@ -13,54 +13,20 @@
|
||||
|
||||
/include/ "mpc5200b.dtsi"
|
||||
|
||||
&gpt0 { gpio-controller; };
|
||||
&gpt1 { gpio-controller; };
|
||||
&gpt2 { gpio-controller; };
|
||||
&gpt3 { gpio-controller; };
|
||||
&gpt4 { gpio-controller; };
|
||||
&gpt5 { gpio-controller; };
|
||||
&gpt6 { gpio-controller; };
|
||||
&gpt7 { gpio-controller; };
|
||||
|
||||
/ {
|
||||
model = "manroland,uc101";
|
||||
compatible = "manroland,uc101";
|
||||
|
||||
soc5200@f0000000 {
|
||||
gpt0: timer@600 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt1: timer@610 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt2: timer@620 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt3: timer@630 { // General Purpose Timer in GPIO mode
|
||||
compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
|
||||
reg = <0x630 0x10>;
|
||||
interrupts = <1 12 0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt4: timer@640 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt5: timer@650 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt6: timer@660 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
gpt7: timer@670 { // General Purpose Timer in GPIO mode
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
rtc@800 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -272,6 +272,12 @@
|
||||
xlnx,temac-type = <0>;
|
||||
xlnx,txcsum = <1>;
|
||||
xlnx,txfifo = <0x1000>;
|
||||
phy-handle = <&phy7>;
|
||||
clock-frequency = <100000000>;
|
||||
phy7: phy@7 {
|
||||
compatible = "marvell,88e1111";
|
||||
reg = <7>;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
||||
IIC_EEPROM: i2c@81600000 {
|
||||
|
@ -2,6 +2,8 @@ CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
@ -16,8 +18,6 @@ CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_PPC_83xx=y
|
||||
CONFIG_KMETER1=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_NET=y
|
||||
@ -45,7 +45,6 @@ CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_PHRAM=y
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_GLUEBI=y
|
||||
CONFIG_MTD_UBI_DEBUG=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
@ -76,5 +75,4 @@ CONFIG_TMPFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
|
@ -34,7 +34,6 @@ CONFIG_PREEMPT=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=17
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
65
arch/powerpc/configs/85xx/ppa8548_defconfig
Normal file
65
arch/powerpc/configs/85xx/ppa8548_defconfig
Normal file
@ -0,0 +1,65 @@
|
||||
CONFIG_PPC_85xx=y
|
||||
CONFIG_PPA8548=y
|
||||
CONFIG_DTC=y
|
||||
CONFIG_DEFAULT_UIMAGE=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_PCI is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_ADVANCED_OPTIONS=y
|
||||
CONFIG_LOWMEM_SIZE_BOOL=y
|
||||
CONFIG_LOWMEM_SIZE=0x40000000
|
||||
CONFIG_LOWMEM_CAM_NUM_BOOL=y
|
||||
CONFIG_LOWMEM_CAM_NUM=4
|
||||
CONFIG_PAGE_OFFSET_BOOL=y
|
||||
CONFIG_PAGE_OFFSET=0xb0000000
|
||||
CONFIG_KERNEL_START_BOOL=y
|
||||
CONFIG_KERNEL_START=0xb0000000
|
||||
# CONFIG_PHYSICAL_START_BOOL is not set
|
||||
CONFIG_PHYSICAL_START=0x00000000
|
||||
CONFIG_PHYSICAL_ALIGN=0x04000000
|
||||
CONFIG_TASK_SIZE_BOOL=y
|
||||
CONFIG_TASK_SIZE=0xb0000000
|
||||
|
||||
CONFIG_FSL_LBC=y
|
||||
CONFIG_FSL_DMA=y
|
||||
CONFIG_FSL_RIO=y
|
||||
|
||||
CONFIG_RAPIDIO=y
|
||||
CONFIG_RAPIDIO_DMA_ENGINE=y
|
||||
CONFIG_RAPIDIO_TSI57X=y
|
||||
CONFIG_RAPIDIO_TSI568=y
|
||||
CONFIG_RAPIDIO_CPS_XX=y
|
||||
CONFIG_RAPIDIO_CPS_GEN2=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_MPC=y
|
||||
CONFIG_I2C_CHARDEV
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_DRV_ISL1208=y
|
||||
|
||||
CONFIG_NET=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_GIANFAR=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
@ -55,3 +55,22 @@ CONFIG_ROOT_NFS=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_OF_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
CONFIG_MTD_CFI_NOSWAP=y
|
||||
CONFIG_MTD_CFI_GEOMETRY=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
CONFIG_MTD_CFI_I4=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
|
@ -25,7 +25,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
@ -25,7 +25,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
@ -25,7 +25,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
@ -23,7 +23,6 @@ CONFIG_SBC8641D=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_SPARSE_IRQ=y
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
@ -32,7 +32,6 @@ CONFIG_HIGHMEM=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
|
@ -26,7 +26,6 @@ CONFIG_P5020_DS=y
|
||||
CONFIG_P5040_DS=y
|
||||
# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_RAPIDIO=y
|
||||
|
@ -49,7 +49,6 @@ CONFIG_QE_GPIO=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=12
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_MSI=y
|
||||
|
@ -1,28 +1,27 @@
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_ALTIVEC=y
|
||||
# CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
# CONFIG_PPC_PSERIES is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_PPC_PASEMI=y
|
||||
CONFIG_PPC_PASEMI_IOMMU=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_DEBUG=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
@ -47,7 +46,6 @@ CONFIG_INET_ESP=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_SLRAM=y
|
||||
@ -58,7 +56,6 @@ CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECD=y
|
||||
@ -91,21 +88,19 @@ CONFIG_BLK_DEV_DM=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_PASEMI_MAC=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_INPUT_JOYDEV=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_SERIO is not set
|
||||
CONFIG_LEGACY_PTY_COUNT=4
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_LEGACY_PTY_COUNT=4
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
@ -146,14 +141,11 @@ CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
CONFIG_USB_SL811_HCD=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=y
|
||||
CONFIG_EDAC_PASEMI=y
|
||||
@ -164,8 +156,6 @@ CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_UDF_FS=y
|
||||
@ -177,27 +167,22 @@ CONFIG_HUGETLBFS=y
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_CRC_CCITT=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_XMON=y
|
||||
CONFIG_XMON_DEFAULT=y
|
||||
CONFIG_CRYPTO_MD4=y
|
||||
CONFIG_CRYPTO_SHA256=y
|
||||
CONFIG_CRYPTO_SHA512=y
|
||||
CONFIG_CRYPTO_AES=y
|
||||
CONFIG_CRYPTO_BLOWFISH=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
|
@ -5,6 +5,9 @@ CONFIG_SMP=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
@ -21,6 +24,8 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_PPC_SPLPAR=y
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_PPC_SMLPAR=y
|
||||
@ -42,10 +47,9 @@ CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_PMAC64=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_PPC_TRANSACTIONAL_MEM=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
@ -73,7 +77,6 @@ CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_NF_CT_PROTO_SCTP=m
|
||||
@ -130,19 +133,12 @@ CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
CONFIG_IP_NF_MATCH_TTL=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_TARGET_NETMAP=m
|
||||
CONFIG_IP_NF_TARGET_REDIRECT=m
|
||||
CONFIG_NF_NAT_SNMP_BASIC=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
@ -151,7 +147,10 @@ CONFIG_IP_NF_RAW=m
|
||||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_FD=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
@ -173,7 +172,6 @@ CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
CONFIG_SCSI_SAS_ATTRS=m
|
||||
CONFIG_SCSI_CXGB3_ISCSI=m
|
||||
CONFIG_SCSI_CXGB4_ISCSI=m
|
||||
CONFIG_SCSI_BNX2_ISCSI=m
|
||||
@ -205,13 +203,6 @@ CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_IEEE1394=y
|
||||
CONFIG_IEEE1394_OHCI1394=y
|
||||
CONFIG_IEEE1394_SBP2=m
|
||||
CONFIG_IEEE1394_ETH1394=m
|
||||
CONFIG_IEEE1394_RAWIO=y
|
||||
CONFIG_IEEE1394_VIDEO1394=m
|
||||
CONFIG_IEEE1394_DV1394=m
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
CONFIG_THERM_PM72=y
|
||||
@ -220,50 +211,43 @@ CONFIG_WINDFARM_PM81=y
|
||||
CONFIG_WINDFARM_PM91=y
|
||||
CONFIG_WINDFARM_PM112=y
|
||||
CONFIG_WINDFARM_PM121=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_TUN=m
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_BROADCOM_PHY=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_IBMVETH=m
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_E100=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_BNX2=m
|
||||
CONFIG_SPIDER_NET=m
|
||||
CONFIG_GELIC_NET=m
|
||||
CONFIG_GELIC_WIRELESS=y
|
||||
CONFIG_CHELSIO_T1=m
|
||||
CONFIG_CHELSIO_T3=m
|
||||
CONFIG_CHELSIO_T4=m
|
||||
CONFIG_EHEA=m
|
||||
CONFIG_IXGBE=m
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_S2IO=m
|
||||
CONFIG_MYRI10GE=m
|
||||
CONFIG_NETXEN_NIC=m
|
||||
CONFIG_PASEMI_MAC=y
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_QLGE=m
|
||||
CONFIG_BE2NET=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_NETCONSOLE=y
|
||||
CONFIG_NETPOLL_TRAP=y
|
||||
CONFIG_TUN=m
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_CHELSIO_T1=m
|
||||
CONFIG_BE2NET=m
|
||||
CONFIG_S2IO=m
|
||||
CONFIG_IBMVETH=m
|
||||
CONFIG_EHEA=m
|
||||
CONFIG_E100=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_IXGBE=m
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MYRI10GE=m
|
||||
CONFIG_PASEMI_MAC=y
|
||||
CONFIG_QLGE=m
|
||||
CONFIG_NETXEN_NIC=m
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_GELIC_NET=m
|
||||
CONFIG_GELIC_WIRELESS=y
|
||||
CONFIG_SPIDER_NET=m
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_BROADCOM_PHY=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
CONFIG_INPUT_MISC=y
|
||||
@ -279,13 +263,10 @@ CONFIG_HVC_RTAS=y
|
||||
CONFIG_HVC_BEAT=y
|
||||
CONFIG_HVCS=m
|
||||
CONFIG_IBM_BSR=m
|
||||
CONFIG_HW_RANDOM=m
|
||||
CONFIG_HW_RANDOM_PSERIES=m
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_AMD8111=y
|
||||
CONFIG_I2C_PASEMI=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
@ -300,7 +281,6 @@ CONFIG_FB_RADEON=y
|
||||
CONFIG_FB_IBM_GXT4500=y
|
||||
CONFIG_FB_PS3=m
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_DISPLAY_SUPPORT=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
@ -317,18 +297,16 @@ CONFIG_SND_AOA_FABRIC_LAYOUT=m
|
||||
CONFIG_SND_AOA_ONYX=m
|
||||
CONFIG_SND_AOA_TAS=m
|
||||
CONFIG_SND_AOA_TOONIE=m
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=m
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_TT_NEWSCHED=y
|
||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_STORAGE=m
|
||||
@ -370,11 +348,9 @@ CONFIG_JFS_POSIX_ACL=y
|
||||
CONFIG_JFS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_OCFS2_FS=m
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_NILFS2_FS=m
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=y
|
||||
@ -383,100 +359,53 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_HFS_FS=m
|
||||
CONFIG_HFSPLUS_FS=m
|
||||
CONFIG_CRAMFS=m
|
||||
CONFIG_SQUASHFS=m
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_RPCSEC_GSS_SPKM3=m
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_NLS_DEFAULT="utf8"
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_737=m
|
||||
CONFIG_NLS_CODEPAGE_775=m
|
||||
CONFIG_NLS_CODEPAGE_850=m
|
||||
CONFIG_NLS_CODEPAGE_852=m
|
||||
CONFIG_NLS_CODEPAGE_855=m
|
||||
CONFIG_NLS_CODEPAGE_857=m
|
||||
CONFIG_NLS_CODEPAGE_860=m
|
||||
CONFIG_NLS_CODEPAGE_861=m
|
||||
CONFIG_NLS_CODEPAGE_862=m
|
||||
CONFIG_NLS_CODEPAGE_863=m
|
||||
CONFIG_NLS_CODEPAGE_864=m
|
||||
CONFIG_NLS_CODEPAGE_865=m
|
||||
CONFIG_NLS_CODEPAGE_866=m
|
||||
CONFIG_NLS_CODEPAGE_869=m
|
||||
CONFIG_NLS_CODEPAGE_936=m
|
||||
CONFIG_NLS_CODEPAGE_950=m
|
||||
CONFIG_NLS_CODEPAGE_932=m
|
||||
CONFIG_NLS_CODEPAGE_949=m
|
||||
CONFIG_NLS_CODEPAGE_874=m
|
||||
CONFIG_NLS_ISO8859_8=m
|
||||
CONFIG_NLS_CODEPAGE_1250=m
|
||||
CONFIG_NLS_CODEPAGE_1251=m
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_2=m
|
||||
CONFIG_NLS_ISO8859_3=m
|
||||
CONFIG_NLS_ISO8859_4=m
|
||||
CONFIG_NLS_ISO8859_5=m
|
||||
CONFIG_NLS_ISO8859_6=m
|
||||
CONFIG_NLS_ISO8859_7=m
|
||||
CONFIG_NLS_ISO8859_9=m
|
||||
CONFIG_NLS_ISO8859_13=m
|
||||
CONFIG_NLS_ISO8859_14=m
|
||||
CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_NLS_KOI8_R=m
|
||||
CONFIG_NLS_KOI8_U=m
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_SCHED_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_CODE_PATCHING_SELFTEST=y
|
||||
CONFIG_FTR_FIXUP_SELFTEST=y
|
||||
CONFIG_MSI_BITMAP_SELFTEST=y
|
||||
CONFIG_XMON=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_BOOTX_TEXT=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
@ -486,11 +415,9 @@ CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_DEV_NX=y
|
||||
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
CONFIG_KVM_BOOK3S_64=m
|
||||
CONFIG_KVM_BOOK3S_64_HV=y
|
||||
CONFIG_VHOST_NET=m
|
||||
CONFIG_BPF_JIT=y
|
||||
|
@ -4,6 +4,8 @@ CONFIG_SMP=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
@ -18,12 +20,13 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_P5020_DS=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
CONFIG_SPARSEMEM_MANUAL=y
|
||||
@ -46,7 +49,6 @@ CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_NF_CT_PROTO_SCTP=m
|
||||
@ -103,19 +105,12 @@ CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
CONFIG_IP_NF_MATCH_TTL=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_TARGET_NETMAP=m
|
||||
CONFIG_IP_NF_TARGET_REDIRECT=m
|
||||
CONFIG_NF_NAT_SNMP_BASIC=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
@ -125,6 +120,8 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_FD=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
@ -167,41 +164,31 @@ CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_IEEE1394=y
|
||||
CONFIG_IEEE1394_OHCI1394=y
|
||||
CONFIG_IEEE1394_SBP2=m
|
||||
CONFIG_IEEE1394_ETH1394=m
|
||||
CONFIG_IEEE1394_RAWIO=y
|
||||
CONFIG_IEEE1394_VIDEO1394=m
|
||||
CONFIG_IEEE1394_DV1394=m
|
||||
CONFIG_MACINTOSH_DRIVERS=y
|
||||
CONFIG_WINDFARM=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_TUN=m
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_BROADCOM_PHY=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_E100=y
|
||||
CONFIG_ACENIC=y
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_NETCONSOLE=y
|
||||
CONFIG_NETPOLL_TRAP=y
|
||||
CONFIG_TUN=m
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_ACENIC=y
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_E100=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_SUNGEM=y
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_BROADCOM_PHY=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
CONFIG_INPUT_MISC=y
|
||||
@ -213,7 +200,6 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
@ -227,7 +213,6 @@ CONFIG_FB_MATROX_MAVEN=m
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_FB_IBM_GXT4500=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_DISPLAY_SUPPORT=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
@ -238,7 +223,6 @@ CONFIG_SND_SEQ_DUMMY=m
|
||||
CONFIG_SND_MIXER_OSS=m
|
||||
CONFIG_SND_PCM_OSS=m
|
||||
CONFIG_SND_SEQUENCER_OSS=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
@ -253,8 +237,8 @@ CONFIG_HID_SMARTJOYPLUS=y
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
@ -296,73 +280,36 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_HFS_FS=m
|
||||
CONFIG_HFSPLUS_FS=m
|
||||
CONFIG_CRAMFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_RPCSEC_GSS_SPKM3=m
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_MAC_PARTITION=y
|
||||
CONFIG_NLS_DEFAULT="utf8"
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_CODEPAGE_737=m
|
||||
CONFIG_NLS_CODEPAGE_775=m
|
||||
CONFIG_NLS_CODEPAGE_850=m
|
||||
CONFIG_NLS_CODEPAGE_852=m
|
||||
CONFIG_NLS_CODEPAGE_855=m
|
||||
CONFIG_NLS_CODEPAGE_857=m
|
||||
CONFIG_NLS_CODEPAGE_860=m
|
||||
CONFIG_NLS_CODEPAGE_861=m
|
||||
CONFIG_NLS_CODEPAGE_862=m
|
||||
CONFIG_NLS_CODEPAGE_863=m
|
||||
CONFIG_NLS_CODEPAGE_864=m
|
||||
CONFIG_NLS_CODEPAGE_865=m
|
||||
CONFIG_NLS_CODEPAGE_866=m
|
||||
CONFIG_NLS_CODEPAGE_869=m
|
||||
CONFIG_NLS_CODEPAGE_936=m
|
||||
CONFIG_NLS_CODEPAGE_950=m
|
||||
CONFIG_NLS_CODEPAGE_932=m
|
||||
CONFIG_NLS_CODEPAGE_949=m
|
||||
CONFIG_NLS_CODEPAGE_874=m
|
||||
CONFIG_NLS_ISO8859_8=m
|
||||
CONFIG_NLS_CODEPAGE_1250=m
|
||||
CONFIG_NLS_CODEPAGE_1251=m
|
||||
CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_ISO8859_2=m
|
||||
CONFIG_NLS_ISO8859_3=m
|
||||
CONFIG_NLS_ISO8859_4=m
|
||||
CONFIG_NLS_ISO8859_5=m
|
||||
CONFIG_NLS_ISO8859_6=m
|
||||
CONFIG_NLS_ISO8859_7=m
|
||||
CONFIG_NLS_ISO8859_9=m
|
||||
CONFIG_NLS_ISO8859_13=m
|
||||
CONFIG_NLS_ISO8859_14=m
|
||||
CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_NLS_KOI8_R=m
|
||||
CONFIG_NLS_KOI8_U=m
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_IRQSOFF_TRACER=y
|
||||
CONFIG_SCHED_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_CODE_PATCHING_SELFTEST=y
|
||||
CONFIG_FTR_FIXUP_SELFTEST=y
|
||||
CONFIG_MSI_BITMAP_SELFTEST=y
|
||||
@ -371,16 +318,12 @@ CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
|
@ -6,6 +6,7 @@ CONFIG_NR_CPUS=2
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_EMBEDDED=y
|
||||
@ -24,12 +25,13 @@ CONFIG_PS3_DISK=y
|
||||
CONFIG_PS3_ROM=y
|
||||
CONFIG_PS3_FLASH=y
|
||||
CONFIG_PS3_VRAM=m
|
||||
CONFIG_PS3_LPM=m
|
||||
# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_SPARSEMEM_VMEMMAP is not set
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_SCHED_SMT=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE=""
|
||||
@ -59,6 +61,7 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
|
||||
CONFIG_BT_HIDP=m
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_CFG80211_WEXT=y
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_RC_PID=y
|
||||
# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
@ -78,7 +81,6 @@ CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_DM=m
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
@ -119,21 +121,21 @@ CONFIG_SND=m
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
CONFIG_SND_USB_AUDIO=m
|
||||
CONFIG_HIDRAW=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_APPLE=m
|
||||
CONFIG_HID_BELKIN=m
|
||||
CONFIG_HID_CHERRY=m
|
||||
CONFIG_HID_EZKEY=m
|
||||
CONFIG_HID_TWINHAN=m
|
||||
CONFIG_HID_LOGITECH=m
|
||||
CONFIG_HID_LOGITECH_DJ=m
|
||||
CONFIG_HID_MICROSOFT=m
|
||||
CONFIG_HID_PS3REMOTE=m
|
||||
CONFIG_HID_SONY=m
|
||||
CONFIG_HID_SUNPLUS=m
|
||||
CONFIG_HID_SMARTJOYPLUS=m
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=m
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_SUSPEND=y
|
||||
CONFIG_USB_MON=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
@ -158,8 +160,8 @@ CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFS_SWAP=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_NLS=y
|
||||
@ -176,6 +178,7 @@ CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_WRITECOUNT=y
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_DEBUG_LIST=y
|
||||
CONFIG_RCU_CPU_STALL_TIMEOUT=60
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
|
@ -6,12 +6,15 @@ CONFIG_NR_CPUS=2048
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CGROUPS=y
|
||||
@ -29,6 +32,8 @@ CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_PPC_SPLPAR=y
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_PPC_SMLPAR=y
|
||||
@ -36,10 +41,9 @@ CONFIG_DTL=y
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_RTAS_FLASH=m
|
||||
CONFIG_IBMEBUS=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_BINFMT_MISC=m
|
||||
CONFIG_PPC_TRANSACTIONAL_MEM=y
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_IRQ_ALL_CPUS=y
|
||||
@ -65,7 +69,6 @@ CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NF_CONNTRACK=m
|
||||
CONFIG_NF_CONNTRACK_EVENTS=y
|
||||
CONFIG_NF_CT_PROTO_UDPLITE=m
|
||||
@ -112,20 +115,15 @@ CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
CONFIG_IP_NF_MATCH_TTL=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_TARGET_LOG=m
|
||||
CONFIG_IP_NF_TARGET_ULOG=m
|
||||
CONFIG_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_TARGET_NETMAP=m
|
||||
CONFIG_IP_NF_TARGET_REDIRECT=m
|
||||
CONFIG_NF_NAT_SNMP_BASIC=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_PARPORT=m
|
||||
CONFIG_PARPORT_PC=m
|
||||
@ -146,7 +144,6 @@ CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
CONFIG_SCSI_SAS_ATTRS=m
|
||||
CONFIG_SCSI_CXGB3_ISCSI=m
|
||||
CONFIG_SCSI_CXGB4_ISCSI=m
|
||||
CONFIG_SCSI_BNX2_ISCSI=m
|
||||
@ -177,43 +174,36 @@ CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_TUN=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_VENDOR_3COM=y
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_IBMVETH=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_E100=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_BNX2=m
|
||||
CONFIG_CHELSIO_T1=m
|
||||
CONFIG_CHELSIO_T3=m
|
||||
CONFIG_CHELSIO_T4=m
|
||||
CONFIG_EHEA=y
|
||||
CONFIG_IXGBE=m
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_S2IO=m
|
||||
CONFIG_MYRI10GE=m
|
||||
CONFIG_NETXEN_NIC=m
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_QLGE=m
|
||||
CONFIG_BE2NET=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_NETCONSOLE=y
|
||||
CONFIG_NETPOLL_TRAP=y
|
||||
CONFIG_TUN=m
|
||||
CONFIG_VORTEX=y
|
||||
CONFIG_ACENIC=m
|
||||
CONFIG_ACENIC_OMIT_TIGON_I=y
|
||||
CONFIG_PCNET32=y
|
||||
CONFIG_TIGON3=y
|
||||
CONFIG_CHELSIO_T1=m
|
||||
CONFIG_BE2NET=m
|
||||
CONFIG_S2IO=m
|
||||
CONFIG_IBMVETH=y
|
||||
CONFIG_EHEA=y
|
||||
CONFIG_E100=y
|
||||
CONFIG_E1000=y
|
||||
CONFIG_E1000E=y
|
||||
CONFIG_IXGB=m
|
||||
CONFIG_IXGBE=m
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MYRI10GE=m
|
||||
CONFIG_QLGE=m
|
||||
CONFIG_NETXEN_NIC=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
CONFIG_PPPOE=m
|
||||
CONFIG_PPP_ASYNC=m
|
||||
CONFIG_PPP_SYNC_TTY=m
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
CONFIG_INPUT_MISC=y
|
||||
@ -227,12 +217,9 @@ CONFIG_HVC_CONSOLE=y
|
||||
CONFIG_HVC_RTAS=y
|
||||
CONFIG_HVCS=m
|
||||
CONFIG_IBM_BSR=m
|
||||
CONFIG_HW_RANDOM=m
|
||||
CONFIG_HW_RANDOM_PSERIES=m
|
||||
CONFIG_GEN_RTC=y
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_MAX_RAW_DEVS=1024
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_OF=y
|
||||
@ -243,19 +230,17 @@ CONFIG_FB_MATROX_G=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_FB_IBM_GXT4500=y
|
||||
CONFIG_LCD_PLATFORM=m
|
||||
CONFIG_DISPLAY_SUPPORT=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
CONFIG_USB_MON=m
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
|
||||
@ -293,7 +278,6 @@ CONFIG_JFS_POSIX_ACL=y
|
||||
CONFIG_JFS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_OCFS2_FS=m
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_NILFS2_FS=m
|
||||
@ -305,61 +289,49 @@ CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_CRAMFS=m
|
||||
CONFIG_SQUASHFS=m
|
||||
CONFIG_SQUASHFS_XATTR=y
|
||||
CONFIG_SQUASHFS_ZLIB=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_RPCSEC_GSS_SPKM3=m
|
||||
CONFIG_CIFS=m
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_NLS_DEFAULT="utf8"
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
CONFIG_CRC_T10DIF=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_LATENCYTOP=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_SCHED_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
CONFIG_DEBUG_STACK_USAGE=y
|
||||
CONFIG_CODE_PATCHING_SELFTEST=y
|
||||
CONFIG_FTR_FIXUP_SELFTEST=y
|
||||
CONFIG_MSI_BITMAP_SELFTEST=y
|
||||
CONFIG_XMON=y
|
||||
CONFIG_XMON_DEFAULT=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_HMAC=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
CONFIG_CRYPTO_MICHAEL_MIC=m
|
||||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_AES=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
CONFIG_CRYPTO_ARC4=m
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_CAST6=m
|
||||
CONFIG_CRYPTO_KHAZAD=m
|
||||
@ -369,7 +341,6 @@ CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_DEV_NX=y
|
||||
CONFIG_CRYPTO_DEV_NX_ENCRYPT=m
|
||||
CONFIG_VIRTUALIZATION=y
|
||||
|
9
arch/powerpc/crypto/Makefile
Normal file
9
arch/powerpc/crypto/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# powerpc/crypto/Makefile
|
||||
#
|
||||
# Arch-specific CryptoAPI modules.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_CRYPTO_SHA1_PPC) += sha1-powerpc.o
|
||||
|
||||
sha1-powerpc-y := sha1-powerpc-asm.o sha1.o
|
179
arch/powerpc/crypto/sha1-powerpc-asm.S
Normal file
179
arch/powerpc/crypto/sha1-powerpc-asm.S
Normal file
@ -0,0 +1,179 @@
|
||||
/*
|
||||
* SHA-1 implementation for PowerPC.
|
||||
*
|
||||
* Copyright (C) 2005 Paul Mackerras <paulus@samba.org>
|
||||
*/
|
||||
|
||||
#include <asm/ppc_asm.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
/*
|
||||
* We roll the registers for T, A, B, C, D, E around on each
|
||||
* iteration; T on iteration t is A on iteration t+1, and so on.
|
||||
* We use registers 7 - 12 for this.
|
||||
*/
|
||||
#define RT(t) ((((t)+5)%6)+7)
|
||||
#define RA(t) ((((t)+4)%6)+7)
|
||||
#define RB(t) ((((t)+3)%6)+7)
|
||||
#define RC(t) ((((t)+2)%6)+7)
|
||||
#define RD(t) ((((t)+1)%6)+7)
|
||||
#define RE(t) ((((t)+0)%6)+7)
|
||||
|
||||
/* We use registers 16 - 31 for the W values */
|
||||
#define W(t) (((t)%16)+16)
|
||||
|
||||
#define LOADW(t) \
|
||||
lwz W(t),(t)*4(r4)
|
||||
|
||||
#define STEPD0_LOAD(t) \
|
||||
andc r0,RD(t),RB(t); \
|
||||
and r6,RB(t),RC(t); \
|
||||
rotlwi RT(t),RA(t),5; \
|
||||
or r6,r6,r0; \
|
||||
add r0,RE(t),r15; \
|
||||
add RT(t),RT(t),r6; \
|
||||
add r14,r0,W(t); \
|
||||
lwz W((t)+4),((t)+4)*4(r4); \
|
||||
rotlwi RB(t),RB(t),30; \
|
||||
add RT(t),RT(t),r14
|
||||
|
||||
#define STEPD0_UPDATE(t) \
|
||||
and r6,RB(t),RC(t); \
|
||||
andc r0,RD(t),RB(t); \
|
||||
rotlwi RT(t),RA(t),5; \
|
||||
rotlwi RB(t),RB(t),30; \
|
||||
or r6,r6,r0; \
|
||||
add r0,RE(t),r15; \
|
||||
xor r5,W((t)+4-3),W((t)+4-8); \
|
||||
add RT(t),RT(t),r6; \
|
||||
xor W((t)+4),W((t)+4-16),W((t)+4-14); \
|
||||
add r0,r0,W(t); \
|
||||
xor W((t)+4),W((t)+4),r5; \
|
||||
add RT(t),RT(t),r0; \
|
||||
rotlwi W((t)+4),W((t)+4),1
|
||||
|
||||
#define STEPD1(t) \
|
||||
xor r6,RB(t),RC(t); \
|
||||
rotlwi RT(t),RA(t),5; \
|
||||
rotlwi RB(t),RB(t),30; \
|
||||
xor r6,r6,RD(t); \
|
||||
add r0,RE(t),r15; \
|
||||
add RT(t),RT(t),r6; \
|
||||
add r0,r0,W(t); \
|
||||
add RT(t),RT(t),r0
|
||||
|
||||
#define STEPD1_UPDATE(t) \
|
||||
xor r6,RB(t),RC(t); \
|
||||
rotlwi RT(t),RA(t),5; \
|
||||
rotlwi RB(t),RB(t),30; \
|
||||
xor r6,r6,RD(t); \
|
||||
add r0,RE(t),r15; \
|
||||
xor r5,W((t)+4-3),W((t)+4-8); \
|
||||
add RT(t),RT(t),r6; \
|
||||
xor W((t)+4),W((t)+4-16),W((t)+4-14); \
|
||||
add r0,r0,W(t); \
|
||||
xor W((t)+4),W((t)+4),r5; \
|
||||
add RT(t),RT(t),r0; \
|
||||
rotlwi W((t)+4),W((t)+4),1
|
||||
|
||||
#define STEPD2_UPDATE(t) \
|
||||
and r6,RB(t),RC(t); \
|
||||
and r0,RB(t),RD(t); \
|
||||
rotlwi RT(t),RA(t),5; \
|
||||
or r6,r6,r0; \
|
||||
rotlwi RB(t),RB(t),30; \
|
||||
and r0,RC(t),RD(t); \
|
||||
xor r5,W((t)+4-3),W((t)+4-8); \
|
||||
or r6,r6,r0; \
|
||||
xor W((t)+4),W((t)+4-16),W((t)+4-14); \
|
||||
add r0,RE(t),r15; \
|
||||
add RT(t),RT(t),r6; \
|
||||
add r0,r0,W(t); \
|
||||
xor W((t)+4),W((t)+4),r5; \
|
||||
add RT(t),RT(t),r0; \
|
||||
rotlwi W((t)+4),W((t)+4),1
|
||||
|
||||
#define STEP0LD4(t) \
|
||||
STEPD0_LOAD(t); \
|
||||
STEPD0_LOAD((t)+1); \
|
||||
STEPD0_LOAD((t)+2); \
|
||||
STEPD0_LOAD((t)+3)
|
||||
|
||||
#define STEPUP4(t, fn) \
|
||||
STEP##fn##_UPDATE(t); \
|
||||
STEP##fn##_UPDATE((t)+1); \
|
||||
STEP##fn##_UPDATE((t)+2); \
|
||||
STEP##fn##_UPDATE((t)+3)
|
||||
|
||||
#define STEPUP20(t, fn) \
|
||||
STEPUP4(t, fn); \
|
||||
STEPUP4((t)+4, fn); \
|
||||
STEPUP4((t)+8, fn); \
|
||||
STEPUP4((t)+12, fn); \
|
||||
STEPUP4((t)+16, fn)
|
||||
|
||||
_GLOBAL(powerpc_sha_transform)
|
||||
PPC_STLU r1,-STACKFRAMESIZE(r1)
|
||||
SAVE_8GPRS(14, r1)
|
||||
SAVE_10GPRS(22, r1)
|
||||
|
||||
/* Load up A - E */
|
||||
lwz RA(0),0(r3) /* A */
|
||||
lwz RB(0),4(r3) /* B */
|
||||
lwz RC(0),8(r3) /* C */
|
||||
lwz RD(0),12(r3) /* D */
|
||||
lwz RE(0),16(r3) /* E */
|
||||
|
||||
LOADW(0)
|
||||
LOADW(1)
|
||||
LOADW(2)
|
||||
LOADW(3)
|
||||
|
||||
lis r15,0x5a82 /* K0-19 */
|
||||
ori r15,r15,0x7999
|
||||
STEP0LD4(0)
|
||||
STEP0LD4(4)
|
||||
STEP0LD4(8)
|
||||
STEPUP4(12, D0)
|
||||
STEPUP4(16, D0)
|
||||
|
||||
lis r15,0x6ed9 /* K20-39 */
|
||||
ori r15,r15,0xeba1
|
||||
STEPUP20(20, D1)
|
||||
|
||||
lis r15,0x8f1b /* K40-59 */
|
||||
ori r15,r15,0xbcdc
|
||||
STEPUP20(40, D2)
|
||||
|
||||
lis r15,0xca62 /* K60-79 */
|
||||
ori r15,r15,0xc1d6
|
||||
STEPUP4(60, D1)
|
||||
STEPUP4(64, D1)
|
||||
STEPUP4(68, D1)
|
||||
STEPUP4(72, D1)
|
||||
lwz r20,16(r3)
|
||||
STEPD1(76)
|
||||
lwz r19,12(r3)
|
||||
STEPD1(77)
|
||||
lwz r18,8(r3)
|
||||
STEPD1(78)
|
||||
lwz r17,4(r3)
|
||||
STEPD1(79)
|
||||
|
||||
lwz r16,0(r3)
|
||||
add r20,RE(80),r20
|
||||
add RD(0),RD(80),r19
|
||||
add RC(0),RC(80),r18
|
||||
add RB(0),RB(80),r17
|
||||
add RA(0),RA(80),r16
|
||||
mr RE(0),r20
|
||||
stw RA(0),0(r3)
|
||||
stw RB(0),4(r3)
|
||||
stw RC(0),8(r3)
|
||||
stw RD(0),12(r3)
|
||||
stw RE(0),16(r3)
|
||||
|
||||
REST_8GPRS(14, r1)
|
||||
REST_10GPRS(22, r1)
|
||||
addi r1,r1,STACKFRAMESIZE
|
||||
blr
|
157
arch/powerpc/crypto/sha1.c
Normal file
157
arch/powerpc/crypto/sha1.c
Normal file
@ -0,0 +1,157 @@
|
||||
/*
|
||||
* Cryptographic API.
|
||||
*
|
||||
* powerpc implementation of the SHA1 Secure Hash Algorithm.
|
||||
*
|
||||
* Derived from cryptoapi implementation, adapted for in-place
|
||||
* scatterlist interface.
|
||||
*
|
||||
* Derived from "crypto/sha1.c"
|
||||
* Copyright (c) Alan Smithee.
|
||||
* Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk>
|
||||
* Copyright (c) Jean-Francois Dive <jef@linuxbe.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
*/
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/cryptohash.h>
|
||||
#include <linux/types.h>
|
||||
#include <crypto/sha.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
extern void powerpc_sha_transform(u32 *state, const u8 *src, u32 *temp);
|
||||
|
||||
static int sha1_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
*sctx = (struct sha1_state){
|
||||
.state = { SHA1_H0, SHA1_H1, SHA1_H2, SHA1_H3, SHA1_H4 },
|
||||
};
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sha1_update(struct shash_desc *desc, const u8 *data,
|
||||
unsigned int len)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
unsigned int partial, done;
|
||||
const u8 *src;
|
||||
|
||||
partial = sctx->count & 0x3f;
|
||||
sctx->count += len;
|
||||
done = 0;
|
||||
src = data;
|
||||
|
||||
if ((partial + len) > 63) {
|
||||
u32 temp[SHA_WORKSPACE_WORDS];
|
||||
|
||||
if (partial) {
|
||||
done = -partial;
|
||||
memcpy(sctx->buffer + partial, data, done + 64);
|
||||
src = sctx->buffer;
|
||||
}
|
||||
|
||||
do {
|
||||
powerpc_sha_transform(sctx->state, src, temp);
|
||||
done += 64;
|
||||
src = data + done;
|
||||
} while (done + 63 < len);
|
||||
|
||||
memset(temp, 0, sizeof(temp));
|
||||
partial = 0;
|
||||
}
|
||||
memcpy(sctx->buffer + partial, src, len - done);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Add padding and return the message digest. */
|
||||
static int sha1_final(struct shash_desc *desc, u8 *out)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
__be32 *dst = (__be32 *)out;
|
||||
u32 i, index, padlen;
|
||||
__be64 bits;
|
||||
static const u8 padding[64] = { 0x80, };
|
||||
|
||||
bits = cpu_to_be64(sctx->count << 3);
|
||||
|
||||
/* Pad out to 56 mod 64 */
|
||||
index = sctx->count & 0x3f;
|
||||
padlen = (index < 56) ? (56 - index) : ((64+56) - index);
|
||||
sha1_update(desc, padding, padlen);
|
||||
|
||||
/* Append length */
|
||||
sha1_update(desc, (const u8 *)&bits, sizeof(bits));
|
||||
|
||||
/* Store state in digest */
|
||||
for (i = 0; i < 5; i++)
|
||||
dst[i] = cpu_to_be32(sctx->state[i]);
|
||||
|
||||
/* Wipe context */
|
||||
memset(sctx, 0, sizeof *sctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sha1_export(struct shash_desc *desc, void *out)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
memcpy(out, sctx, sizeof(*sctx));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sha1_import(struct shash_desc *desc, const void *in)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
memcpy(sctx, in, sizeof(*sctx));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct shash_alg alg = {
|
||||
.digestsize = SHA1_DIGEST_SIZE,
|
||||
.init = sha1_init,
|
||||
.update = sha1_update,
|
||||
.final = sha1_final,
|
||||
.export = sha1_export,
|
||||
.import = sha1_import,
|
||||
.descsize = sizeof(struct sha1_state),
|
||||
.statesize = sizeof(struct sha1_state),
|
||||
.base = {
|
||||
.cra_name = "sha1",
|
||||
.cra_driver_name= "sha1-powerpc",
|
||||
.cra_flags = CRYPTO_ALG_TYPE_SHASH,
|
||||
.cra_blocksize = SHA1_BLOCK_SIZE,
|
||||
.cra_module = THIS_MODULE,
|
||||
}
|
||||
};
|
||||
|
||||
static int __init sha1_powerpc_mod_init(void)
|
||||
{
|
||||
return crypto_register_shash(&alg);
|
||||
}
|
||||
|
||||
static void __exit sha1_powerpc_mod_fini(void)
|
||||
{
|
||||
crypto_unregister_shash(&alg);
|
||||
}
|
||||
|
||||
module_init(sha1_powerpc_mod_init);
|
||||
module_exit(sha1_powerpc_mod_fini);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("SHA1 Secure Hash Algorithm");
|
||||
|
||||
MODULE_ALIAS("sha1-powerpc");
|
@ -106,37 +106,37 @@ extern const char *powerpc_base_platform;
|
||||
/* CPU kernel features */
|
||||
|
||||
/* Retain the 32b definitions all use bottom half of word */
|
||||
#define CPU_FTR_COHERENT_ICACHE ASM_CONST(0x0000000000000001)
|
||||
#define CPU_FTR_L2CR ASM_CONST(0x0000000000000002)
|
||||
#define CPU_FTR_SPEC7450 ASM_CONST(0x0000000000000004)
|
||||
#define CPU_FTR_ALTIVEC ASM_CONST(0x0000000000000008)
|
||||
#define CPU_FTR_TAU ASM_CONST(0x0000000000000010)
|
||||
#define CPU_FTR_CAN_DOZE ASM_CONST(0x0000000000000020)
|
||||
#define CPU_FTR_USE_TB ASM_CONST(0x0000000000000040)
|
||||
#define CPU_FTR_L2CSR ASM_CONST(0x0000000000000080)
|
||||
#define CPU_FTR_601 ASM_CONST(0x0000000000000100)
|
||||
#define CPU_FTR_DBELL ASM_CONST(0x0000000000000200)
|
||||
#define CPU_FTR_CAN_NAP ASM_CONST(0x0000000000000400)
|
||||
#define CPU_FTR_L3CR ASM_CONST(0x0000000000000800)
|
||||
#define CPU_FTR_L3_DISABLE_NAP ASM_CONST(0x0000000000001000)
|
||||
#define CPU_FTR_NAP_DISABLE_L2_PR ASM_CONST(0x0000000000002000)
|
||||
#define CPU_FTR_DUAL_PLL_750FX ASM_CONST(0x0000000000004000)
|
||||
#define CPU_FTR_NO_DPM ASM_CONST(0x0000000000008000)
|
||||
#define CPU_FTR_476_DD2 ASM_CONST(0x0000000000010000)
|
||||
#define CPU_FTR_NEED_COHERENT ASM_CONST(0x0000000000020000)
|
||||
#define CPU_FTR_NO_BTIC ASM_CONST(0x0000000000040000)
|
||||
#define CPU_FTR_DEBUG_LVL_EXC ASM_CONST(0x0000000000080000)
|
||||
#define CPU_FTR_NODSISRALIGN ASM_CONST(0x0000000000100000)
|
||||
#define CPU_FTR_PPC_LE ASM_CONST(0x0000000000200000)
|
||||
#define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000)
|
||||
#define CPU_FTR_FPU_UNAVAILABLE ASM_CONST(0x0000000000800000)
|
||||
#define CPU_FTR_UNIFIED_ID_CACHE ASM_CONST(0x0000000001000000)
|
||||
#define CPU_FTR_SPE ASM_CONST(0x0000000002000000)
|
||||
#define CPU_FTR_NEED_PAIRED_STWCX ASM_CONST(0x0000000004000000)
|
||||
#define CPU_FTR_LWSYNC ASM_CONST(0x0000000008000000)
|
||||
#define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000010000000)
|
||||
#define CPU_FTR_INDEXED_DCR ASM_CONST(0x0000000020000000)
|
||||
#define CPU_FTR_EMB_HV ASM_CONST(0x0000000040000000)
|
||||
#define CPU_FTR_COHERENT_ICACHE ASM_CONST(0x00000001)
|
||||
#define CPU_FTR_L2CR ASM_CONST(0x00000002)
|
||||
#define CPU_FTR_SPEC7450 ASM_CONST(0x00000004)
|
||||
#define CPU_FTR_ALTIVEC ASM_CONST(0x00000008)
|
||||
#define CPU_FTR_TAU ASM_CONST(0x00000010)
|
||||
#define CPU_FTR_CAN_DOZE ASM_CONST(0x00000020)
|
||||
#define CPU_FTR_USE_TB ASM_CONST(0x00000040)
|
||||
#define CPU_FTR_L2CSR ASM_CONST(0x00000080)
|
||||
#define CPU_FTR_601 ASM_CONST(0x00000100)
|
||||
#define CPU_FTR_DBELL ASM_CONST(0x00000200)
|
||||
#define CPU_FTR_CAN_NAP ASM_CONST(0x00000400)
|
||||
#define CPU_FTR_L3CR ASM_CONST(0x00000800)
|
||||
#define CPU_FTR_L3_DISABLE_NAP ASM_CONST(0x00001000)
|
||||
#define CPU_FTR_NAP_DISABLE_L2_PR ASM_CONST(0x00002000)
|
||||
#define CPU_FTR_DUAL_PLL_750FX ASM_CONST(0x00004000)
|
||||
#define CPU_FTR_NO_DPM ASM_CONST(0x00008000)
|
||||
#define CPU_FTR_476_DD2 ASM_CONST(0x00010000)
|
||||
#define CPU_FTR_NEED_COHERENT ASM_CONST(0x00020000)
|
||||
#define CPU_FTR_NO_BTIC ASM_CONST(0x00040000)
|
||||
#define CPU_FTR_DEBUG_LVL_EXC ASM_CONST(0x00080000)
|
||||
#define CPU_FTR_NODSISRALIGN ASM_CONST(0x00100000)
|
||||
#define CPU_FTR_PPC_LE ASM_CONST(0x00200000)
|
||||
#define CPU_FTR_REAL_LE ASM_CONST(0x00400000)
|
||||
#define CPU_FTR_FPU_UNAVAILABLE ASM_CONST(0x00800000)
|
||||
#define CPU_FTR_UNIFIED_ID_CACHE ASM_CONST(0x01000000)
|
||||
#define CPU_FTR_SPE ASM_CONST(0x02000000)
|
||||
#define CPU_FTR_NEED_PAIRED_STWCX ASM_CONST(0x04000000)
|
||||
#define CPU_FTR_LWSYNC ASM_CONST(0x08000000)
|
||||
#define CPU_FTR_NOEXECUTE ASM_CONST(0x10000000)
|
||||
#define CPU_FTR_INDEXED_DCR ASM_CONST(0x20000000)
|
||||
#define CPU_FTR_EMB_HV ASM_CONST(0x40000000)
|
||||
|
||||
/*
|
||||
* Add the 64-bit processor unique features in the top half of the word;
|
||||
@ -148,29 +148,33 @@ extern const char *powerpc_base_platform;
|
||||
#define LONG_ASM_CONST(x) 0
|
||||
#endif
|
||||
|
||||
#define CPU_FTR_HVMODE LONG_ASM_CONST(0x0000000200000000)
|
||||
#define CPU_FTR_ARCH_201 LONG_ASM_CONST(0x0000000400000000)
|
||||
#define CPU_FTR_ARCH_206 LONG_ASM_CONST(0x0000000800000000)
|
||||
#define CPU_FTR_CFAR LONG_ASM_CONST(0x0000001000000000)
|
||||
#define CPU_FTR_IABR LONG_ASM_CONST(0x0000002000000000)
|
||||
#define CPU_FTR_MMCRA LONG_ASM_CONST(0x0000004000000000)
|
||||
#define CPU_FTR_CTRL LONG_ASM_CONST(0x0000008000000000)
|
||||
#define CPU_FTR_SMT LONG_ASM_CONST(0x0000010000000000)
|
||||
#define CPU_FTR_PAUSE_ZERO LONG_ASM_CONST(0x0000200000000000)
|
||||
#define CPU_FTR_PURR LONG_ASM_CONST(0x0000400000000000)
|
||||
#define CPU_FTR_CELL_TB_BUG LONG_ASM_CONST(0x0000800000000000)
|
||||
#define CPU_FTR_SPURR LONG_ASM_CONST(0x0001000000000000)
|
||||
#define CPU_FTR_DSCR LONG_ASM_CONST(0x0002000000000000)
|
||||
#define CPU_FTR_VSX LONG_ASM_CONST(0x0010000000000000)
|
||||
#define CPU_FTR_SAO LONG_ASM_CONST(0x0020000000000000)
|
||||
#define CPU_FTR_CP_USE_DCBTZ LONG_ASM_CONST(0x0040000000000000)
|
||||
#define CPU_FTR_UNALIGNED_LD_STD LONG_ASM_CONST(0x0080000000000000)
|
||||
#define CPU_FTR_ASYM_SMT LONG_ASM_CONST(0x0100000000000000)
|
||||
#define CPU_FTR_STCX_CHECKS_ADDRESS LONG_ASM_CONST(0x0200000000000000)
|
||||
#define CPU_FTR_POPCNTB LONG_ASM_CONST(0x0400000000000000)
|
||||
#define CPU_FTR_POPCNTD LONG_ASM_CONST(0x0800000000000000)
|
||||
#define CPU_FTR_ICSWX LONG_ASM_CONST(0x1000000000000000)
|
||||
#define CPU_FTR_VMX_COPY LONG_ASM_CONST(0x2000000000000000)
|
||||
#define CPU_FTR_HVMODE LONG_ASM_CONST(0x0000000100000000)
|
||||
#define CPU_FTR_ARCH_201 LONG_ASM_CONST(0x0000000200000000)
|
||||
#define CPU_FTR_ARCH_206 LONG_ASM_CONST(0x0000000400000000)
|
||||
#define CPU_FTR_CFAR LONG_ASM_CONST(0x0000000800000000)
|
||||
#define CPU_FTR_IABR LONG_ASM_CONST(0x0000001000000000)
|
||||
#define CPU_FTR_MMCRA LONG_ASM_CONST(0x0000002000000000)
|
||||
#define CPU_FTR_CTRL LONG_ASM_CONST(0x0000004000000000)
|
||||
#define CPU_FTR_SMT LONG_ASM_CONST(0x0000008000000000)
|
||||
#define CPU_FTR_PAUSE_ZERO LONG_ASM_CONST(0x0000010000000000)
|
||||
#define CPU_FTR_PURR LONG_ASM_CONST(0x0000020000000000)
|
||||
#define CPU_FTR_CELL_TB_BUG LONG_ASM_CONST(0x0000040000000000)
|
||||
#define CPU_FTR_SPURR LONG_ASM_CONST(0x0000080000000000)
|
||||
#define CPU_FTR_DSCR LONG_ASM_CONST(0x0000100000000000)
|
||||
#define CPU_FTR_VSX LONG_ASM_CONST(0x0000200000000000)
|
||||
#define CPU_FTR_SAO LONG_ASM_CONST(0x0000400000000000)
|
||||
#define CPU_FTR_CP_USE_DCBTZ LONG_ASM_CONST(0x0000800000000000)
|
||||
#define CPU_FTR_UNALIGNED_LD_STD LONG_ASM_CONST(0x0001000000000000)
|
||||
#define CPU_FTR_ASYM_SMT LONG_ASM_CONST(0x0002000000000000)
|
||||
#define CPU_FTR_STCX_CHECKS_ADDRESS LONG_ASM_CONST(0x0004000000000000)
|
||||
#define CPU_FTR_POPCNTB LONG_ASM_CONST(0x0008000000000000)
|
||||
#define CPU_FTR_POPCNTD LONG_ASM_CONST(0x0010000000000000)
|
||||
#define CPU_FTR_ICSWX LONG_ASM_CONST(0x0020000000000000)
|
||||
#define CPU_FTR_VMX_COPY LONG_ASM_CONST(0x0040000000000000)
|
||||
#define CPU_FTR_TM LONG_ASM_CONST(0x0080000000000000)
|
||||
#define CPU_FTR_BCTAR LONG_ASM_CONST(0x0100000000000000)
|
||||
#define CPU_FTR_HAS_PPR LONG_ASM_CONST(0x0200000000000000)
|
||||
#define CPU_FTR_DAWR LONG_ASM_CONST(0x0400000000000000)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
@ -216,6 +220,13 @@ extern const char *powerpc_base_platform;
|
||||
#define PPC_FEATURE_HAS_EFP_DOUBLE_COMP 0
|
||||
#endif
|
||||
|
||||
/* We only set the TM feature if the kernel was compiled with TM supprt */
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
#define CPU_FTR_TM_COMP CPU_FTR_TM
|
||||
#else
|
||||
#define CPU_FTR_TM_COMP 0
|
||||
#endif
|
||||
|
||||
/* We need to mark all pages as being coherent if we're SMP or we have a
|
||||
* 74[45]x and an MPC107 host bridge. Also 83xx and PowerQUICC II
|
||||
* require it for PCI "streaming/prefetch" to work properly.
|
||||
@ -400,7 +411,8 @@ extern const char *powerpc_base_platform;
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | CPU_FTR_ASYM_SMT | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY)
|
||||
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | \
|
||||
CPU_FTR_VMX_COPY | CPU_FTR_HAS_PPR)
|
||||
#define CPU_FTRS_POWER8 (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
|
||||
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | CPU_FTR_ARCH_206 |\
|
||||
CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
@ -408,7 +420,9 @@ extern const char *powerpc_base_platform;
|
||||
CPU_FTR_PURR | CPU_FTR_SPURR | CPU_FTR_REAL_LE | \
|
||||
CPU_FTR_DSCR | CPU_FTR_SAO | \
|
||||
CPU_FTR_STCX_CHECKS_ADDRESS | CPU_FTR_POPCNTB | CPU_FTR_POPCNTD | \
|
||||
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY)
|
||||
CPU_FTR_ICSWX | CPU_FTR_CFAR | CPU_FTR_HVMODE | CPU_FTR_VMX_COPY | \
|
||||
CPU_FTR_DBELL | CPU_FTR_HAS_PPR | CPU_FTR_DAWR | CPU_FTR_BCTAR | \
|
||||
CPU_FTR_TM_COMP)
|
||||
#define CPU_FTRS_CELL (CPU_FTR_USE_TB | CPU_FTR_LWSYNC | \
|
||||
CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_CTRL | \
|
||||
CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
|
||||
|
@ -28,8 +28,36 @@ enum ppc_dbell {
|
||||
PPC_G_DBELL = 2, /* guest doorbell */
|
||||
PPC_G_DBELL_CRIT = 3, /* guest critical doorbell */
|
||||
PPC_G_DBELL_MC = 4, /* guest mcheck doorbell */
|
||||
PPC_DBELL_SERVER = 5, /* doorbell on server */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S
|
||||
|
||||
#define PPC_DBELL_MSGTYPE PPC_DBELL_SERVER
|
||||
#define SPRN_DOORBELL_CPUTAG SPRN_TIR
|
||||
#define PPC_DBELL_TAG_MASK 0x7f
|
||||
|
||||
static inline void _ppc_msgsnd(u32 msg)
|
||||
{
|
||||
if (cpu_has_feature(CPU_FTR_HVMODE))
|
||||
__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
|
||||
else
|
||||
__asm__ __volatile__ (PPC_MSGSNDP(%0) : : "r" (msg));
|
||||
}
|
||||
|
||||
#else /* CONFIG_PPC_BOOK3S */
|
||||
|
||||
#define PPC_DBELL_MSGTYPE PPC_DBELL
|
||||
#define SPRN_DOORBELL_CPUTAG SPRN_PIR
|
||||
#define PPC_DBELL_TAG_MASK 0x3fff
|
||||
|
||||
static inline void _ppc_msgsnd(u32 msg)
|
||||
{
|
||||
__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PPC_BOOK3S */
|
||||
|
||||
extern void doorbell_cause_ipi(int cpu, unsigned long data);
|
||||
extern void doorbell_exception(struct pt_regs *regs);
|
||||
extern void doorbell_setup_this_cpu(void);
|
||||
@ -39,7 +67,7 @@ static inline void ppc_msgsnd(enum ppc_dbell type, u32 flags, u32 tag)
|
||||
u32 msg = PPC_DBELL_TYPE(type) | (flags & PPC_DBELL_MSG_BRDCAST) |
|
||||
(tag & 0x07ffffff);
|
||||
|
||||
__asm__ __volatile__ (PPC_MSGSND(%0) : : "r" (msg));
|
||||
_ppc_msgsnd(msg);
|
||||
}
|
||||
|
||||
#endif /* _ASM_POWERPC_DBELL_H */
|
||||
|
@ -4,6 +4,8 @@
|
||||
#ifndef _ASM_POWERPC_DEBUG_H
|
||||
#define _ASM_POWERPC_DEBUG_H
|
||||
|
||||
#include <asm/hw_breakpoint.h>
|
||||
|
||||
struct pt_regs;
|
||||
|
||||
extern struct dentry *powerpc_debugfs_root;
|
||||
@ -15,7 +17,7 @@ extern int (*__debugger_ipi)(struct pt_regs *regs);
|
||||
extern int (*__debugger_bpt)(struct pt_regs *regs);
|
||||
extern int (*__debugger_sstep)(struct pt_regs *regs);
|
||||
extern int (*__debugger_iabr_match)(struct pt_regs *regs);
|
||||
extern int (*__debugger_dabr_match)(struct pt_regs *regs);
|
||||
extern int (*__debugger_break_match)(struct pt_regs *regs);
|
||||
extern int (*__debugger_fault_handler)(struct pt_regs *regs);
|
||||
|
||||
#define DEBUGGER_BOILERPLATE(__NAME) \
|
||||
@ -31,7 +33,7 @@ DEBUGGER_BOILERPLATE(debugger_ipi)
|
||||
DEBUGGER_BOILERPLATE(debugger_bpt)
|
||||
DEBUGGER_BOILERPLATE(debugger_sstep)
|
||||
DEBUGGER_BOILERPLATE(debugger_iabr_match)
|
||||
DEBUGGER_BOILERPLATE(debugger_dabr_match)
|
||||
DEBUGGER_BOILERPLATE(debugger_break_match)
|
||||
DEBUGGER_BOILERPLATE(debugger_fault_handler)
|
||||
|
||||
#else
|
||||
@ -40,17 +42,18 @@ static inline int debugger_ipi(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_bpt(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_sstep(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_iabr_match(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_dabr_match(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_break_match(struct pt_regs *regs) { return 0; }
|
||||
static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; }
|
||||
#endif
|
||||
|
||||
extern int set_dabr(unsigned long dabr, unsigned long dabrx);
|
||||
int set_breakpoint(struct arch_hw_breakpoint *brk);
|
||||
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
|
||||
extern void do_send_trap(struct pt_regs *regs, unsigned long address,
|
||||
unsigned long error_code, int signal_code, int brkpt);
|
||||
#else
|
||||
extern void do_dabr(struct pt_regs *regs, unsigned long address,
|
||||
unsigned long error_code);
|
||||
|
||||
extern void do_break(struct pt_regs *regs, unsigned long address,
|
||||
unsigned long error_code);
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_POWERPC_DEBUG_H */
|
||||
|
@ -201,6 +201,7 @@ int eeh_dev_check_failure(struct eeh_dev *edev);
|
||||
void __init eeh_addr_cache_build(void);
|
||||
void eeh_add_device_tree_early(struct device_node *);
|
||||
void eeh_add_device_tree_late(struct pci_bus *);
|
||||
void eeh_add_sysfs_files(struct pci_bus *);
|
||||
void eeh_remove_bus_device(struct pci_dev *, int);
|
||||
|
||||
/**
|
||||
@ -240,6 +241,8 @@ static inline void eeh_add_device_tree_early(struct device_node *dn) { }
|
||||
|
||||
static inline void eeh_add_device_tree_late(struct pci_bus *bus) { }
|
||||
|
||||
static inline void eeh_add_sysfs_files(struct pci_bus *bus) { }
|
||||
|
||||
static inline void eeh_remove_bus_device(struct pci_dev *dev, int purge_pe) { }
|
||||
|
||||
static inline void eeh_lock(void) { }
|
||||
|
@ -47,9 +47,10 @@
|
||||
#define EX_R3 64
|
||||
#define EX_LR 72
|
||||
#define EX_CFAR 80
|
||||
#define EX_PPR 88 /* SMT thread status register (priority) */
|
||||
|
||||
#ifdef CONFIG_RELOCATABLE
|
||||
#define EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
#define __EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
ld r12,PACAKBASE(r13); /* get high part of &label */ \
|
||||
mfspr r11,SPRN_##h##SRR0; /* save SRR0 */ \
|
||||
LOAD_HANDLER(r12,label); \
|
||||
@ -60,13 +61,15 @@
|
||||
blr;
|
||||
#else
|
||||
/* If not relocatable, we can jump directly -- and save messing with LR */
|
||||
#define EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
#define __EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
mfspr r11,SPRN_##h##SRR0; /* save SRR0 */ \
|
||||
mfspr r12,SPRN_##h##SRR1; /* and SRR1 */ \
|
||||
li r10,MSR_RI; \
|
||||
mtmsrd r10,1; /* Set RI (EE=0) */ \
|
||||
b label;
|
||||
#endif
|
||||
#define EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
__EXCEPTION_RELON_PROLOG_PSERIES_1(label, h) \
|
||||
|
||||
/*
|
||||
* As EXCEPTION_PROLOG_PSERIES(), except we've already got relocation on
|
||||
@ -74,6 +77,7 @@
|
||||
* case EXCEPTION_RELON_PROLOG_PSERIES_1 will be using lr.
|
||||
*/
|
||||
#define EXCEPTION_RELON_PROLOG_PSERIES(area, label, h, extra, vec) \
|
||||
EXCEPTION_PROLOG_0(area); \
|
||||
EXCEPTION_PROLOG_1(area, extra, vec); \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES_1(label, h)
|
||||
|
||||
@ -107,14 +111,59 @@
|
||||
#define RESTORE_LR(reg, area)
|
||||
#endif
|
||||
|
||||
#define __EXCEPTION_PROLOG_1(area, extra, vec) \
|
||||
/*
|
||||
* PPR save/restore macros used in exceptions_64s.S
|
||||
* Used for P7 or later processors
|
||||
*/
|
||||
#define SAVE_PPR(area, ra, rb) \
|
||||
BEGIN_FTR_SECTION_NESTED(940) \
|
||||
ld ra,PACACURRENT(r13); \
|
||||
ld rb,area+EX_PPR(r13); /* Read PPR from paca */ \
|
||||
std rb,TASKTHREADPPR(ra); \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,940)
|
||||
|
||||
#define RESTORE_PPR_PACA(area, ra) \
|
||||
BEGIN_FTR_SECTION_NESTED(941) \
|
||||
ld ra,area+EX_PPR(r13); \
|
||||
mtspr SPRN_PPR,ra; \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,941)
|
||||
|
||||
/*
|
||||
* Increase the priority on systems where PPR save/restore is not
|
||||
* implemented/ supported.
|
||||
*/
|
||||
#define HMT_MEDIUM_PPR_DISCARD \
|
||||
BEGIN_FTR_SECTION_NESTED(942) \
|
||||
HMT_MEDIUM; \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,0,942) /*non P7*/
|
||||
|
||||
/*
|
||||
* Get an SPR into a register if the CPU has the given feature
|
||||
*/
|
||||
#define OPT_GET_SPR(ra, spr, ftr) \
|
||||
BEGIN_FTR_SECTION_NESTED(943) \
|
||||
mfspr ra,spr; \
|
||||
END_FTR_SECTION_NESTED(ftr,ftr,943)
|
||||
|
||||
/*
|
||||
* Save a register to the PACA if the CPU has the given feature
|
||||
*/
|
||||
#define OPT_SAVE_REG_TO_PACA(offset, ra, ftr) \
|
||||
BEGIN_FTR_SECTION_NESTED(943) \
|
||||
std ra,offset(r13); \
|
||||
END_FTR_SECTION_NESTED(ftr,ftr,943)
|
||||
|
||||
#define EXCEPTION_PROLOG_0(area) \
|
||||
GET_PACA(r13); \
|
||||
std r9,area+EX_R9(r13); /* save r9 - r12 */ \
|
||||
std r10,area+EX_R10(r13); \
|
||||
BEGIN_FTR_SECTION_NESTED(66); \
|
||||
mfspr r10,SPRN_CFAR; \
|
||||
std r10,area+EX_CFAR(r13); \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66); \
|
||||
std r9,area+EX_R9(r13); /* save r9 */ \
|
||||
OPT_GET_SPR(r9, SPRN_PPR, CPU_FTR_HAS_PPR); \
|
||||
HMT_MEDIUM; \
|
||||
std r10,area+EX_R10(r13); /* save r10 - r12 */ \
|
||||
OPT_GET_SPR(r10, SPRN_CFAR, CPU_FTR_CFAR)
|
||||
|
||||
#define __EXCEPTION_PROLOG_1(area, extra, vec) \
|
||||
OPT_SAVE_REG_TO_PACA(area+EX_PPR, r9, CPU_FTR_HAS_PPR); \
|
||||
OPT_SAVE_REG_TO_PACA(area+EX_CFAR, r10, CPU_FTR_CFAR); \
|
||||
SAVE_LR(r10, area); \
|
||||
mfcr r9; \
|
||||
extra(vec); \
|
||||
@ -139,6 +188,7 @@
|
||||
__EXCEPTION_PROLOG_PSERIES_1(label, h)
|
||||
|
||||
#define EXCEPTION_PROLOG_PSERIES(area, label, h, extra, vec) \
|
||||
EXCEPTION_PROLOG_0(area); \
|
||||
EXCEPTION_PROLOG_1(area, extra, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label, h);
|
||||
|
||||
@ -149,10 +199,14 @@
|
||||
|
||||
#define __KVM_HANDLER(area, h, n) \
|
||||
do_kvm_##n: \
|
||||
BEGIN_FTR_SECTION_NESTED(947) \
|
||||
ld r10,area+EX_CFAR(r13); \
|
||||
std r10,HSTATE_CFAR(r13); \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_CFAR,CPU_FTR_CFAR,947); \
|
||||
ld r10,area+EX_R10(r13); \
|
||||
stw r9,HSTATE_SCRATCH1(r13); \
|
||||
stw r9,HSTATE_SCRATCH1(r13); \
|
||||
ld r9,area+EX_R9(r13); \
|
||||
std r12,HSTATE_SCRATCH0(r13); \
|
||||
std r12,HSTATE_SCRATCH0(r13); \
|
||||
li r12,n; \
|
||||
b kvmppc_interrupt
|
||||
|
||||
@ -224,8 +278,10 @@ do_kvm_##n: \
|
||||
std r10,0(r1); /* make stack chain pointer */ \
|
||||
std r0,GPR0(r1); /* save r0 in stackframe */ \
|
||||
std r10,GPR1(r1); /* save r1 in stackframe */ \
|
||||
beq 4f; /* if from kernel mode */ \
|
||||
ACCOUNT_CPU_USER_ENTRY(r9, r10); \
|
||||
std r2,GPR2(r1); /* save r2 in stackframe */ \
|
||||
SAVE_PPR(area, r9, r10); \
|
||||
4: std r2,GPR2(r1); /* save r2 in stackframe */ \
|
||||
SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \
|
||||
SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \
|
||||
ld r9,area+EX_R9(r13); /* move r9, r10 to stackframe */ \
|
||||
@ -266,45 +322,74 @@ do_kvm_##n: \
|
||||
. = loc; \
|
||||
.globl label##_pSeries; \
|
||||
label##_pSeries: \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, \
|
||||
EXC_STD, KVMTEST_PR, vec)
|
||||
|
||||
/* Version of above for when we have to branch out-of-line */
|
||||
#define STD_EXCEPTION_PSERIES_OOL(vec, label) \
|
||||
.globl label##_pSeries; \
|
||||
label##_pSeries: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST_PR, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label##_common, EXC_STD)
|
||||
|
||||
#define STD_EXCEPTION_HV(loc, vec, label) \
|
||||
. = loc; \
|
||||
.globl label##_hv; \
|
||||
label##_hv: \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common, \
|
||||
EXC_HV, KVMTEST, vec)
|
||||
|
||||
/* Version of above for when we have to branch out-of-line */
|
||||
#define STD_EXCEPTION_HV_OOL(vec, label) \
|
||||
.globl label##_hv; \
|
||||
label##_hv: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label##_common, EXC_HV)
|
||||
|
||||
#define STD_RELON_EXCEPTION_PSERIES(loc, vec, label) \
|
||||
. = loc; \
|
||||
.globl label##_relon_pSeries; \
|
||||
label##_relon_pSeries: \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
/* No guest interrupts come through here */ \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES(PACA_EXGEN, label##_common, \
|
||||
EXC_STD, KVMTEST_PR, vec)
|
||||
|
||||
#define STD_RELON_EXCEPTION_PSERIES_OOL(vec, label) \
|
||||
.globl label##_relon_pSeries; \
|
||||
label##_relon_pSeries: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST_PR, vec); \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES_1(label##_common, EXC_STD)
|
||||
|
||||
#define STD_RELON_EXCEPTION_HV(loc, vec, label) \
|
||||
. = loc; \
|
||||
.globl label##_relon_hv; \
|
||||
label##_relon_hv: \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
/* No guest interrupts come through here */ \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES(PACA_EXGEN, label##_common, \
|
||||
EXC_HV, KVMTEST, vec)
|
||||
|
||||
#define STD_RELON_EXCEPTION_HV_OOL(vec, label) \
|
||||
.globl label##_relon_hv; \
|
||||
label##_relon_hv: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, KVMTEST, vec); \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES_1(label##_common, EXC_HV)
|
||||
|
||||
/* This associate vector numbers with bits in paca->irq_happened */
|
||||
#define SOFTEN_VALUE_0x500 PACA_IRQ_EE
|
||||
#define SOFTEN_VALUE_0x502 PACA_IRQ_EE
|
||||
#define SOFTEN_VALUE_0x900 PACA_IRQ_DEC
|
||||
#define SOFTEN_VALUE_0x982 PACA_IRQ_DEC
|
||||
#define SOFTEN_VALUE_0xa00 PACA_IRQ_DBELL
|
||||
#define SOFTEN_VALUE_0xe80 PACA_IRQ_DBELL
|
||||
#define SOFTEN_VALUE_0xe82 PACA_IRQ_DBELL
|
||||
|
||||
#define __SOFTEN_TEST(h, vec) \
|
||||
lbz r10,PACASOFTIRQEN(r13); \
|
||||
@ -329,10 +414,12 @@ label##_relon_hv: \
|
||||
#define SOFTEN_NOTEST_HV(vec) _SOFTEN_TEST(EXC_HV, vec)
|
||||
|
||||
#define __MASKABLE_EXCEPTION_PSERIES(vec, label, h, extra) \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
__EXCEPTION_PROLOG_1(PACA_EXGEN, extra, vec); \
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN); \
|
||||
__EXCEPTION_PROLOG_1(PACA_EXGEN, extra, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label##_common, h);
|
||||
|
||||
#define _MASKABLE_EXCEPTION_PSERIES(vec, label, h, extra) \
|
||||
__MASKABLE_EXCEPTION_PSERIES(vec, label, h, extra)
|
||||
|
||||
@ -350,9 +437,16 @@ label##_hv: \
|
||||
_MASKABLE_EXCEPTION_PSERIES(vec, label, \
|
||||
EXC_HV, SOFTEN_TEST_HV)
|
||||
|
||||
#define MASKABLE_EXCEPTION_HV_OOL(vec, label) \
|
||||
.globl label##_hv; \
|
||||
label##_hv: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, SOFTEN_TEST_HV, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label##_common, EXC_HV);
|
||||
|
||||
#define __MASKABLE_RELON_EXCEPTION_PSERIES(vec, label, h, extra) \
|
||||
HMT_MEDIUM; \
|
||||
HMT_MEDIUM_PPR_DISCARD; \
|
||||
SET_SCRATCH0(r13); /* save r13 */ \
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN); \
|
||||
__EXCEPTION_PROLOG_1(PACA_EXGEN, extra, vec); \
|
||||
EXCEPTION_RELON_PROLOG_PSERIES_1(label##_common, h);
|
||||
#define _MASKABLE_RELON_EXCEPTION_PSERIES(vec, label, h, extra) \
|
||||
@ -372,6 +466,12 @@ label##_relon_hv: \
|
||||
_MASKABLE_RELON_EXCEPTION_PSERIES(vec, label, \
|
||||
EXC_HV, SOFTEN_NOTEST_HV)
|
||||
|
||||
#define MASKABLE_RELON_EXCEPTION_HV_OOL(vec, label) \
|
||||
.globl label##_relon_hv; \
|
||||
label##_relon_hv: \
|
||||
EXCEPTION_PROLOG_1(PACA_EXGEN, SOFTEN_NOTEST_HV, vec); \
|
||||
EXCEPTION_PROLOG_PSERIES_1(label##_common, EXC_HV);
|
||||
|
||||
/*
|
||||
* Our exception common code can be passed various "additions"
|
||||
* to specify the behaviour of interrupts, whether to kick the
|
||||
|
@ -50,6 +50,7 @@
|
||||
#define FW_FEATURE_OPAL ASM_CONST(0x0000000010000000)
|
||||
#define FW_FEATURE_OPALv2 ASM_CONST(0x0000000020000000)
|
||||
#define FW_FEATURE_SET_MODE ASM_CONST(0x0000000040000000)
|
||||
#define FW_FEATURE_BEST_ENERGY ASM_CONST(0x0000000080000000)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
@ -64,7 +65,7 @@ enum {
|
||||
FW_FEATURE_BULK_REMOVE | FW_FEATURE_XDABR |
|
||||
FW_FEATURE_MULTITCE | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR |
|
||||
FW_FEATURE_CMO | FW_FEATURE_VPHN | FW_FEATURE_XCMO |
|
||||
FW_FEATURE_SET_MODE,
|
||||
FW_FEATURE_SET_MODE | FW_FEATURE_BEST_ENERGY,
|
||||
FW_FEATURE_PSERIES_ALWAYS = 0,
|
||||
FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | FW_FEATURE_OPALv2,
|
||||
FW_FEATURE_POWERNV_ALWAYS = 0,
|
||||
|
@ -395,6 +395,15 @@ static inline unsigned long cmo_get_page_size(void)
|
||||
{
|
||||
return CMO_PageSize;
|
||||
}
|
||||
|
||||
extern long pSeries_enable_reloc_on_exc(void);
|
||||
extern long pSeries_disable_reloc_on_exc(void);
|
||||
|
||||
#else
|
||||
|
||||
#define pSeries_enable_reloc_on_exc() do {} while (0)
|
||||
#define pSeries_disable_reloc_on_exc() do {} while (0)
|
||||
|
||||
#endif /* CONFIG_PPC_PSERIES */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
@ -24,16 +24,30 @@
|
||||
#define _PPC_BOOK3S_64_HW_BREAKPOINT_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
|
||||
struct arch_hw_breakpoint {
|
||||
unsigned long address;
|
||||
unsigned long dabrx;
|
||||
int type;
|
||||
u8 len; /* length of the target data symbol */
|
||||
bool extraneous_interrupt;
|
||||
u16 type;
|
||||
u16 len; /* length of the target data symbol */
|
||||
};
|
||||
|
||||
/* Note: Don't change the the first 6 bits below as they are in the same order
|
||||
* as the dabr and dabrx.
|
||||
*/
|
||||
#define HW_BRK_TYPE_READ 0x01
|
||||
#define HW_BRK_TYPE_WRITE 0x02
|
||||
#define HW_BRK_TYPE_TRANSLATE 0x04
|
||||
#define HW_BRK_TYPE_USER 0x08
|
||||
#define HW_BRK_TYPE_KERNEL 0x10
|
||||
#define HW_BRK_TYPE_HYP 0x20
|
||||
#define HW_BRK_TYPE_EXTRANEOUS_IRQ 0x80
|
||||
|
||||
/* bits that overlap with the bottom 3 bits of the dabr */
|
||||
#define HW_BRK_TYPE_RDWR (HW_BRK_TYPE_READ | HW_BRK_TYPE_WRITE)
|
||||
#define HW_BRK_TYPE_DABR (HW_BRK_TYPE_RDWR | HW_BRK_TYPE_TRANSLATE)
|
||||
#define HW_BRK_TYPE_PRIV_ALL (HW_BRK_TYPE_USER | HW_BRK_TYPE_KERNEL | \
|
||||
HW_BRK_TYPE_HYP)
|
||||
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
#include <linux/kdebug.h>
|
||||
#include <asm/reg.h>
|
||||
#include <asm/debug.h>
|
||||
@ -43,8 +57,6 @@ struct pmu;
|
||||
struct perf_sample_data;
|
||||
|
||||
#define HW_BREAKPOINT_ALIGN 0x7
|
||||
/* Maximum permissible length of any HW Breakpoint */
|
||||
#define HW_BREAKPOINT_LEN 0x8
|
||||
|
||||
extern int hw_breakpoint_slots(int type);
|
||||
extern int arch_bp_generic_fields(int type, int *gen_bp_type);
|
||||
@ -62,7 +74,12 @@ extern void ptrace_triggered(struct perf_event *bp,
|
||||
struct perf_sample_data *data, struct pt_regs *regs);
|
||||
static inline void hw_breakpoint_disable(void)
|
||||
{
|
||||
set_dabr(0, 0);
|
||||
struct arch_hw_breakpoint brk;
|
||||
|
||||
brk.address = 0;
|
||||
brk.type = 0;
|
||||
brk.len = 0;
|
||||
set_breakpoint(&brk);
|
||||
}
|
||||
extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs);
|
||||
|
||||
|
@ -93,6 +93,9 @@ struct kvmppc_host_state {
|
||||
u64 host_dscr;
|
||||
u64 dec_expires;
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
u64 cfar;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct kvmppc_book3s_shadow_vcpu {
|
||||
|
@ -440,6 +440,7 @@ struct kvm_vcpu_arch {
|
||||
ulong uamor;
|
||||
u32 ctrl;
|
||||
ulong dabr;
|
||||
ulong cfar;
|
||||
#endif
|
||||
u32 vrsave; /* also USPRG0 */
|
||||
u32 mmucr;
|
||||
|
@ -180,6 +180,10 @@ struct machdep_calls {
|
||||
int (*set_dabr)(unsigned long dabr,
|
||||
unsigned long dabrx);
|
||||
|
||||
/* Set DAWR for this platform, leave empty for default implemenation */
|
||||
int (*set_dawr)(unsigned long dawr,
|
||||
unsigned long dawrx);
|
||||
|
||||
#ifdef CONFIG_PPC32 /* XXX for now */
|
||||
/* A general init function, called by ppc_init in init/main.c.
|
||||
May be NULL. */
|
||||
|
@ -53,4 +53,21 @@ struct mpc512x_ccm {
|
||||
u32 m4ccr; /* MSCAN4 CCR */
|
||||
u8 res[0x98]; /* Reserved */
|
||||
};
|
||||
|
||||
/*
|
||||
* LPC Module
|
||||
*/
|
||||
struct mpc512x_lpc {
|
||||
u32 cs_cfg[8]; /* CS config */
|
||||
u32 cs_ctrl; /* CS Control Register */
|
||||
u32 cs_status; /* CS Status Register */
|
||||
u32 burst_ctrl; /* CS Burst Control Register */
|
||||
u32 deadcycle_ctrl; /* CS Deadcycle Control Register */
|
||||
u32 holdcycle_ctrl; /* CS Holdcycle Control Register */
|
||||
u32 alt; /* Address Latch Timing Register */
|
||||
};
|
||||
|
||||
int mpc512x_cs_config(unsigned int cs, u32 val);
|
||||
int __init mpc5121_clk_init(void);
|
||||
|
||||
#endif /* __ASM_POWERPC_MPC5121_H__ */
|
||||
|
@ -93,9 +93,9 @@ struct paca_struct {
|
||||
* Now, starting in cacheline 2, the exception save areas
|
||||
*/
|
||||
/* used for most interrupts/exceptions */
|
||||
u64 exgen[11] __attribute__((aligned(0x80)));
|
||||
u64 exmc[11]; /* used for machine checks */
|
||||
u64 exslb[11]; /* used for SLB/segment table misses
|
||||
u64 exgen[12] __attribute__((aligned(0x80)));
|
||||
u64 exmc[12]; /* used for machine checks */
|
||||
u64 exslb[12]; /* used for SLB/segment table misses
|
||||
* on the linear mapping */
|
||||
/* SLB related definitions */
|
||||
u16 vmalloc_sllp;
|
||||
@ -137,6 +137,9 @@ struct paca_struct {
|
||||
u8 irq_work_pending; /* IRQ_WORK interrupt while soft-disable */
|
||||
u8 nap_state_lost; /* NV GPR values lost in power7_idle */
|
||||
u64 sprg3; /* Saved user-visible sprg */
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
u64 tm_scratch; /* TM scratch area for reclaim */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_POWERNV
|
||||
/* Pointer to OPAL machine check event structure set by the
|
||||
@ -167,7 +170,6 @@ struct paca_struct {
|
||||
};
|
||||
|
||||
extern struct paca_struct *paca;
|
||||
extern __initdata struct paca_struct boot_paca;
|
||||
extern void initialise_paca(struct paca_struct *new_paca, int cpu);
|
||||
extern void setup_paca(struct paca_struct *new_paca);
|
||||
extern void allocate_pacas(void);
|
||||
|
@ -47,11 +47,11 @@ struct power_pmu {
|
||||
/*
|
||||
* Values for power_pmu.flags
|
||||
*/
|
||||
#define PPMU_LIMITED_PMC5_6 1 /* PMC5/6 have limited function */
|
||||
#define PPMU_ALT_SIPR 2 /* uses alternate posn for SIPR/HV */
|
||||
#define PPMU_NO_SIPR 4 /* no SIPR/HV in MMCRA at all */
|
||||
#define PPMU_NO_CONT_SAMPLING 8 /* no continuous sampling */
|
||||
#define PPMU_SIAR_VALID 16 /* Processor has SIAR Valid bit */
|
||||
#define PPMU_LIMITED_PMC5_6 0x00000001 /* PMC5/6 have limited function */
|
||||
#define PPMU_ALT_SIPR 0x00000002 /* uses alternate posn for SIPR/HV */
|
||||
#define PPMU_NO_SIPR 0x00000004 /* no SIPR/HV in MMCRA at all */
|
||||
#define PPMU_NO_CONT_SAMPLING 0x00000008 /* no continuous sampling */
|
||||
#define PPMU_SIAR_VALID 0x00000010 /* Processor has SIAR Valid bit */
|
||||
|
||||
/*
|
||||
* Values for flags to get_alternatives()
|
||||
|
@ -100,6 +100,7 @@
|
||||
#define PPC_INST_MFSPR_PVR 0x7c1f42a6
|
||||
#define PPC_INST_MFSPR_PVR_MASK 0xfc1fffff
|
||||
#define PPC_INST_MSGSND 0x7c00019c
|
||||
#define PPC_INST_MSGSNDP 0x7c00011c
|
||||
#define PPC_INST_NOP 0x60000000
|
||||
#define PPC_INST_POPCNTB 0x7c0000f4
|
||||
#define PPC_INST_POPCNTB_MASK 0xfc0007fe
|
||||
@ -128,6 +129,9 @@
|
||||
#define PPC_INST_TLBSRX_DOT 0x7c0006a5
|
||||
#define PPC_INST_XXLOR 0xf0000510
|
||||
#define PPC_INST_XVCPSGNDP 0xf0000780
|
||||
#define PPC_INST_TRECHKPT 0x7c0007dd
|
||||
#define PPC_INST_TRECLAIM 0x7c00075d
|
||||
#define PPC_INST_TABORT 0x7c00071d
|
||||
|
||||
#define PPC_INST_NAP 0x4c000364
|
||||
#define PPC_INST_SLEEP 0x4c0003a4
|
||||
@ -227,6 +231,8 @@
|
||||
___PPC_RB(b) | __PPC_EH(eh))
|
||||
#define PPC_MSGSND(b) stringify_in_c(.long PPC_INST_MSGSND | \
|
||||
___PPC_RB(b))
|
||||
#define PPC_MSGSNDP(b) stringify_in_c(.long PPC_INST_MSGSNDP | \
|
||||
___PPC_RB(b))
|
||||
#define PPC_POPCNTB(a, s) stringify_in_c(.long PPC_INST_POPCNTB | \
|
||||
__PPC_RA(a) | __PPC_RS(s))
|
||||
#define PPC_POPCNTD(a, s) stringify_in_c(.long PPC_INST_POPCNTD | \
|
||||
@ -291,4 +297,11 @@
|
||||
#define PPC_NAP stringify_in_c(.long PPC_INST_NAP)
|
||||
#define PPC_SLEEP stringify_in_c(.long PPC_INST_SLEEP)
|
||||
|
||||
/* Transactional memory instructions */
|
||||
#define TRECHKPT stringify_in_c(.long PPC_INST_TRECHKPT)
|
||||
#define TRECLAIM(r) stringify_in_c(.long PPC_INST_TRECLAIM \
|
||||
| __PPC_RA(r))
|
||||
#define TABORT(r) stringify_in_c(.long PPC_INST_TABORT \
|
||||
| __PPC_RA(r))
|
||||
|
||||
#endif /* _ASM_POWERPC_PPC_OPCODE_H */
|
||||
|
45
arch/powerpc/include/asm/ppc4xx_ocm.h
Normal file
45
arch/powerpc/include/asm/ppc4xx_ocm.h
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* PowerPC 4xx OCM memory allocation support
|
||||
*
|
||||
* (C) Copyright 2009, Applied Micro Circuits Corporation
|
||||
* Victor Gallardo (vgallardo@amcc.com)
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __ASM_POWERPC_PPC4XX_OCM_H__
|
||||
#define __ASM_POWERPC_PPC4XX_OCM_H__
|
||||
|
||||
#define PPC4XX_OCM_NON_CACHED 0
|
||||
#define PPC4XX_OCM_CACHED 1
|
||||
|
||||
#if defined(CONFIG_PPC4xx_OCM)
|
||||
|
||||
void *ppc4xx_ocm_alloc(phys_addr_t *phys, int size, int align,
|
||||
int flags, const char *owner);
|
||||
void ppc4xx_ocm_free(const void *virt);
|
||||
|
||||
#else
|
||||
|
||||
#define ppc4xx_ocm_alloc(phys, size, align, flags, owner) NULL
|
||||
#define ppc4xx_ocm_free(addr) ((void)0)
|
||||
|
||||
#endif /* CONFIG_PPC4xx_OCM */
|
||||
|
||||
#endif /* __ASM_POWERPC_PPC4XX_OCM_H__ */
|
@ -30,7 +30,6 @@
|
||||
#define ACCOUNT_STOLEN_TIME
|
||||
#else
|
||||
#define ACCOUNT_CPU_USER_ENTRY(ra, rb) \
|
||||
beq 2f; /* if from kernel mode */ \
|
||||
MFTB(ra); /* get timebase */ \
|
||||
ld rb,PACA_STARTTIME_USER(r13); \
|
||||
std ra,PACA_STARTTIME(r13); \
|
||||
@ -38,7 +37,6 @@
|
||||
ld ra,PACA_USER_TIME(r13); \
|
||||
add ra,ra,rb; /* add on to user time */ \
|
||||
std ra,PACA_USER_TIME(r13); \
|
||||
2:
|
||||
|
||||
#define ACCOUNT_CPU_USER_EXIT(ra, rb) \
|
||||
MFTB(ra); /* get timebase */ \
|
||||
@ -125,6 +123,89 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
|
||||
#define REST_16VRS(n,b,base) REST_8VRS(n,b,base); REST_8VRS(n+8,b,base)
|
||||
#define REST_32VRS(n,b,base) REST_16VRS(n,b,base); REST_16VRS(n+16,b,base)
|
||||
|
||||
/* Save/restore FPRs, VRs and VSRs from their checkpointed backups in
|
||||
* thread_struct:
|
||||
*/
|
||||
#define SAVE_FPR_TRANSACT(n, base) stfd n,THREAD_TRANSACT_FPR0+ \
|
||||
8*TS_FPRWIDTH*(n)(base)
|
||||
#define SAVE_2FPRS_TRANSACT(n, base) SAVE_FPR_TRANSACT(n, base); \
|
||||
SAVE_FPR_TRANSACT(n+1, base)
|
||||
#define SAVE_4FPRS_TRANSACT(n, base) SAVE_2FPRS_TRANSACT(n, base); \
|
||||
SAVE_2FPRS_TRANSACT(n+2, base)
|
||||
#define SAVE_8FPRS_TRANSACT(n, base) SAVE_4FPRS_TRANSACT(n, base); \
|
||||
SAVE_4FPRS_TRANSACT(n+4, base)
|
||||
#define SAVE_16FPRS_TRANSACT(n, base) SAVE_8FPRS_TRANSACT(n, base); \
|
||||
SAVE_8FPRS_TRANSACT(n+8, base)
|
||||
#define SAVE_32FPRS_TRANSACT(n, base) SAVE_16FPRS_TRANSACT(n, base); \
|
||||
SAVE_16FPRS_TRANSACT(n+16, base)
|
||||
|
||||
#define REST_FPR_TRANSACT(n, base) lfd n,THREAD_TRANSACT_FPR0+ \
|
||||
8*TS_FPRWIDTH*(n)(base)
|
||||
#define REST_2FPRS_TRANSACT(n, base) REST_FPR_TRANSACT(n, base); \
|
||||
REST_FPR_TRANSACT(n+1, base)
|
||||
#define REST_4FPRS_TRANSACT(n, base) REST_2FPRS_TRANSACT(n, base); \
|
||||
REST_2FPRS_TRANSACT(n+2, base)
|
||||
#define REST_8FPRS_TRANSACT(n, base) REST_4FPRS_TRANSACT(n, base); \
|
||||
REST_4FPRS_TRANSACT(n+4, base)
|
||||
#define REST_16FPRS_TRANSACT(n, base) REST_8FPRS_TRANSACT(n, base); \
|
||||
REST_8FPRS_TRANSACT(n+8, base)
|
||||
#define REST_32FPRS_TRANSACT(n, base) REST_16FPRS_TRANSACT(n, base); \
|
||||
REST_16FPRS_TRANSACT(n+16, base)
|
||||
|
||||
|
||||
#define SAVE_VR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VR0+(16*(n)); \
|
||||
stvx n,b,base
|
||||
#define SAVE_2VRS_TRANSACT(n,b,base) SAVE_VR_TRANSACT(n,b,base); \
|
||||
SAVE_VR_TRANSACT(n+1,b,base)
|
||||
#define SAVE_4VRS_TRANSACT(n,b,base) SAVE_2VRS_TRANSACT(n,b,base); \
|
||||
SAVE_2VRS_TRANSACT(n+2,b,base)
|
||||
#define SAVE_8VRS_TRANSACT(n,b,base) SAVE_4VRS_TRANSACT(n,b,base); \
|
||||
SAVE_4VRS_TRANSACT(n+4,b,base)
|
||||
#define SAVE_16VRS_TRANSACT(n,b,base) SAVE_8VRS_TRANSACT(n,b,base); \
|
||||
SAVE_8VRS_TRANSACT(n+8,b,base)
|
||||
#define SAVE_32VRS_TRANSACT(n,b,base) SAVE_16VRS_TRANSACT(n,b,base); \
|
||||
SAVE_16VRS_TRANSACT(n+16,b,base)
|
||||
|
||||
#define REST_VR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VR0+(16*(n)); \
|
||||
lvx n,b,base
|
||||
#define REST_2VRS_TRANSACT(n,b,base) REST_VR_TRANSACT(n,b,base); \
|
||||
REST_VR_TRANSACT(n+1,b,base)
|
||||
#define REST_4VRS_TRANSACT(n,b,base) REST_2VRS_TRANSACT(n,b,base); \
|
||||
REST_2VRS_TRANSACT(n+2,b,base)
|
||||
#define REST_8VRS_TRANSACT(n,b,base) REST_4VRS_TRANSACT(n,b,base); \
|
||||
REST_4VRS_TRANSACT(n+4,b,base)
|
||||
#define REST_16VRS_TRANSACT(n,b,base) REST_8VRS_TRANSACT(n,b,base); \
|
||||
REST_8VRS_TRANSACT(n+8,b,base)
|
||||
#define REST_32VRS_TRANSACT(n,b,base) REST_16VRS_TRANSACT(n,b,base); \
|
||||
REST_16VRS_TRANSACT(n+16,b,base)
|
||||
|
||||
|
||||
#define SAVE_VSR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VSR0+(16*(n)); \
|
||||
STXVD2X(n,R##base,R##b)
|
||||
#define SAVE_2VSRS_TRANSACT(n,b,base) SAVE_VSR_TRANSACT(n,b,base); \
|
||||
SAVE_VSR_TRANSACT(n+1,b,base)
|
||||
#define SAVE_4VSRS_TRANSACT(n,b,base) SAVE_2VSRS_TRANSACT(n,b,base); \
|
||||
SAVE_2VSRS_TRANSACT(n+2,b,base)
|
||||
#define SAVE_8VSRS_TRANSACT(n,b,base) SAVE_4VSRS_TRANSACT(n,b,base); \
|
||||
SAVE_4VSRS_TRANSACT(n+4,b,base)
|
||||
#define SAVE_16VSRS_TRANSACT(n,b,base) SAVE_8VSRS_TRANSACT(n,b,base); \
|
||||
SAVE_8VSRS_TRANSACT(n+8,b,base)
|
||||
#define SAVE_32VSRS_TRANSACT(n,b,base) SAVE_16VSRS_TRANSACT(n,b,base); \
|
||||
SAVE_16VSRS_TRANSACT(n+16,b,base)
|
||||
|
||||
#define REST_VSR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VSR0+(16*(n)); \
|
||||
LXVD2X(n,R##base,R##b)
|
||||
#define REST_2VSRS_TRANSACT(n,b,base) REST_VSR_TRANSACT(n,b,base); \
|
||||
REST_VSR_TRANSACT(n+1,b,base)
|
||||
#define REST_4VSRS_TRANSACT(n,b,base) REST_2VSRS_TRANSACT(n,b,base); \
|
||||
REST_2VSRS_TRANSACT(n+2,b,base)
|
||||
#define REST_8VSRS_TRANSACT(n,b,base) REST_4VSRS_TRANSACT(n,b,base); \
|
||||
REST_4VSRS_TRANSACT(n+4,b,base)
|
||||
#define REST_16VSRS_TRANSACT(n,b,base) REST_8VSRS_TRANSACT(n,b,base); \
|
||||
REST_8VSRS_TRANSACT(n+8,b,base)
|
||||
#define REST_32VSRS_TRANSACT(n,b,base) REST_16VSRS_TRANSACT(n,b,base); \
|
||||
REST_16VSRS_TRANSACT(n+16,b,base)
|
||||
|
||||
/* Save the lower 32 VSRs in the thread VSR region */
|
||||
#define SAVE_VSR(n,b,base) li b,THREAD_VSR0+(16*(n)); STXVD2X(n,R##base,R##b)
|
||||
#define SAVE_2VSRS(n,b,base) SAVE_VSR(n,b,base); SAVE_VSR(n+1,b,base)
|
||||
@ -391,6 +472,31 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
|
||||
FTR_SECTION_ELSE_NESTED(848); \
|
||||
mtocrf (FXM), RS; \
|
||||
ALT_FTR_SECTION_END_NESTED_IFCLR(CPU_FTR_NOEXECUTE, 848)
|
||||
|
||||
/*
|
||||
* PPR restore macros used in entry_64.S
|
||||
* Used for P7 or later processors
|
||||
*/
|
||||
#define HMT_MEDIUM_LOW_HAS_PPR \
|
||||
BEGIN_FTR_SECTION_NESTED(944) \
|
||||
HMT_MEDIUM_LOW; \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,944)
|
||||
|
||||
#define SET_DEFAULT_THREAD_PPR(ra, rb) \
|
||||
BEGIN_FTR_SECTION_NESTED(945) \
|
||||
lis ra,INIT_PPR@highest; /* default ppr=3 */ \
|
||||
ld rb,PACACURRENT(r13); \
|
||||
sldi ra,ra,32; /* 11- 13 bits are used for ppr */ \
|
||||
std ra,TASKTHREADPPR(rb); \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945)
|
||||
|
||||
#define RESTORE_PPR(ra, rb) \
|
||||
BEGIN_FTR_SECTION_NESTED(946) \
|
||||
ld ra,PACACURRENT(r13); \
|
||||
ld rb,TASKTHREADPPR(ra); \
|
||||
mtspr SPRN_PPR,rb; /* Restore PPR */ \
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,946)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -18,11 +18,22 @@
|
||||
#define TS_FPRWIDTH 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
/* Default SMT priority is set to 3. Use 11- 13bits to save priority. */
|
||||
#define PPR_PRIORITY 3
|
||||
#ifdef __ASSEMBLY__
|
||||
#define INIT_PPR (PPR_PRIORITY << 50)
|
||||
#else
|
||||
#define INIT_PPR ((u64)PPR_PRIORITY << 50)
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/cache.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/types.h>
|
||||
#include <asm/hw_breakpoint.h>
|
||||
|
||||
/* We do _not_ want to define new machine types at all, those must die
|
||||
* in favor of using the device-tree
|
||||
@ -141,6 +152,7 @@ typedef struct {
|
||||
#define TS_FPROFFSET 0
|
||||
#define TS_VSRLOWOFFSET 1
|
||||
#define TS_FPR(i) fpr[i][TS_FPROFFSET]
|
||||
#define TS_TRANS_FPR(i) transact_fpr[i][TS_FPROFFSET]
|
||||
|
||||
struct thread_struct {
|
||||
unsigned long ksp; /* Kernel stack pointer */
|
||||
@ -215,8 +227,7 @@ struct thread_struct {
|
||||
struct perf_event *last_hit_ubp;
|
||||
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
|
||||
#endif
|
||||
unsigned long dabr; /* Data address breakpoint register */
|
||||
unsigned long dabrx; /* ... extension */
|
||||
struct arch_hw_breakpoint hw_brk; /* info on the hardware breakpoint */
|
||||
unsigned long trap_nr; /* last trap # on this thread */
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
/* Complete AltiVec register set */
|
||||
@ -236,6 +247,34 @@ struct thread_struct {
|
||||
unsigned long spefscr; /* SPE & eFP status */
|
||||
int used_spe; /* set if process has used spe */
|
||||
#endif /* CONFIG_SPE */
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
u64 tm_tfhar; /* Transaction fail handler addr */
|
||||
u64 tm_texasr; /* Transaction exception & summary */
|
||||
u64 tm_tfiar; /* Transaction fail instr address reg */
|
||||
unsigned long tm_orig_msr; /* Thread's MSR on ctx switch */
|
||||
struct pt_regs ckpt_regs; /* Checkpointed registers */
|
||||
|
||||
/*
|
||||
* Transactional FP and VSX 0-31 register set.
|
||||
* NOTE: the sense of these is the opposite of the integer ckpt_regs!
|
||||
*
|
||||
* When a transaction is active/signalled/scheduled etc., *regs is the
|
||||
* most recent set of/speculated GPRs with ckpt_regs being the older
|
||||
* checkpointed regs to which we roll back if transaction aborts.
|
||||
*
|
||||
* However, fpr[] is the checkpointed 'base state' of FP regs, and
|
||||
* transact_fpr[] is the new set of transactional values.
|
||||
* VRs work the same way.
|
||||
*/
|
||||
double transact_fpr[32][TS_FPRWIDTH];
|
||||
struct {
|
||||
unsigned int pad;
|
||||
unsigned int val; /* Floating point status */
|
||||
} transact_fpscr;
|
||||
vector128 transact_vr[32] __attribute__((aligned(16)));
|
||||
vector128 transact_vscr __attribute__((aligned(16)));
|
||||
unsigned long transact_vrsave;
|
||||
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
||||
#ifdef CONFIG_KVM_BOOK3S_32_HANDLER
|
||||
void* kvm_shadow_vcpu; /* KVM internal data */
|
||||
#endif /* CONFIG_KVM_BOOK3S_32_HANDLER */
|
||||
@ -245,6 +284,10 @@ struct thread_struct {
|
||||
#ifdef CONFIG_PPC64
|
||||
unsigned long dscr;
|
||||
int dscr_inherit;
|
||||
unsigned long ppr; /* used to save/restore SMT priority */
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
unsigned long tar;
|
||||
#endif
|
||||
};
|
||||
|
||||
@ -278,6 +321,7 @@ struct thread_struct {
|
||||
.fpr = {{0}}, \
|
||||
.fpscr = { .val = 0, }, \
|
||||
.fpexc_mode = 0, \
|
||||
.ppr = INIT_PPR, \
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -245,7 +245,7 @@ enum lv1_result {
|
||||
|
||||
static inline const char* ps3_result(int result)
|
||||
{
|
||||
#if defined(DEBUG)
|
||||
#if defined(DEBUG) || defined(PS3_VERBOSE_RESULT)
|
||||
switch (result) {
|
||||
case LV1_SUCCESS:
|
||||
return "LV1_SUCCESS (0)";
|
||||
|
@ -29,6 +29,10 @@
|
||||
#define MSR_SF_LG 63 /* Enable 64 bit mode */
|
||||
#define MSR_ISF_LG 61 /* Interrupt 64b mode valid on 630 */
|
||||
#define MSR_HV_LG 60 /* Hypervisor state */
|
||||
#define MSR_TS_T_LG 34 /* Trans Mem state: Transactional */
|
||||
#define MSR_TS_S_LG 33 /* Trans Mem state: Suspended */
|
||||
#define MSR_TS_LG 33 /* Trans Mem state (2 bits) */
|
||||
#define MSR_TM_LG 32 /* Trans Mem Available */
|
||||
#define MSR_VEC_LG 25 /* Enable AltiVec */
|
||||
#define MSR_VSX_LG 23 /* Enable VSX */
|
||||
#define MSR_POW_LG 18 /* Enable Power Management */
|
||||
@ -98,6 +102,26 @@
|
||||
#define MSR_RI __MASK(MSR_RI_LG) /* Recoverable Exception */
|
||||
#define MSR_LE __MASK(MSR_LE_LG) /* Little Endian */
|
||||
|
||||
#define MSR_TM __MASK(MSR_TM_LG) /* Transactional Mem Available */
|
||||
#define MSR_TS_N 0 /* Non-transactional */
|
||||
#define MSR_TS_S __MASK(MSR_TS_S_LG) /* Transaction Suspended */
|
||||
#define MSR_TS_T __MASK(MSR_TS_T_LG) /* Transaction Transactional */
|
||||
#define MSR_TS_MASK (MSR_TS_T | MSR_TS_S) /* Transaction State bits */
|
||||
#define MSR_TM_ACTIVE(x) (((x) & MSR_TS_MASK) != 0) /* Transaction active? */
|
||||
#define MSR_TM_TRANSACTIONAL(x) (((x) & MSR_TS_MASK) == MSR_TS_T)
|
||||
#define MSR_TM_SUSPENDED(x) (((x) & MSR_TS_MASK) == MSR_TS_S)
|
||||
|
||||
/* Reason codes describing kernel causes for transaction aborts. By
|
||||
convention, bit0 is copied to TEXASR[56] (IBM bit 7) which is set if
|
||||
the failure is persistent.
|
||||
*/
|
||||
#define TM_CAUSE_RESCHED 0xfe
|
||||
#define TM_CAUSE_TLBI 0xfc
|
||||
#define TM_CAUSE_FAC_UNAV 0xfa
|
||||
#define TM_CAUSE_SYSCALL 0xf9 /* Persistent */
|
||||
#define TM_CAUSE_MISC 0xf6
|
||||
#define TM_CAUSE_SIGNAL 0xf4
|
||||
|
||||
#if defined(CONFIG_PPC_BOOK3S_64)
|
||||
#define MSR_64BIT MSR_SF
|
||||
|
||||
@ -193,6 +217,10 @@
|
||||
#define SPRN_UAMOR 0x9d /* User Authority Mask Override Register */
|
||||
#define SPRN_AMOR 0x15d /* Authority Mask Override Register */
|
||||
#define SPRN_ACOP 0x1F /* Available Coprocessor Register */
|
||||
#define SPRN_TFIAR 0x81 /* Transaction Failure Inst Addr */
|
||||
#define SPRN_TEXASR 0x82 /* Transaction EXception & Summary */
|
||||
#define SPRN_TEXASRU 0x83 /* '' '' '' Upper 32 */
|
||||
#define SPRN_TFHAR 0x80 /* Transaction Failure Handler Addr */
|
||||
#define SPRN_CTRLF 0x088
|
||||
#define SPRN_CTRLT 0x098
|
||||
#define CTRL_CT 0xc0000000 /* current thread */
|
||||
@ -200,10 +228,12 @@
|
||||
#define CTRL_CT1 0x40000000 /* thread 1 */
|
||||
#define CTRL_TE 0x00c00000 /* thread enable */
|
||||
#define CTRL_RUNLATCH 0x1
|
||||
#define SPRN_DAWR 0xB4
|
||||
#define SPRN_DAWRX 0xBC
|
||||
#define DAWRX_USER (1UL << 0)
|
||||
#define DAWRX_KERNEL (1UL << 1)
|
||||
#define DAWRX_HYP (1UL << 2)
|
||||
#define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */
|
||||
#define DABR_TRANSLATION (1UL << 2)
|
||||
#define DABR_DATA_WRITE (1UL << 1)
|
||||
#define DABR_DATA_READ (1UL << 0)
|
||||
#define SPRN_DABR2 0x13D /* e300 */
|
||||
#define SPRN_DABRX 0x3F7 /* Data Address Breakpoint Register Extension */
|
||||
#define DABRX_USER (1UL << 0)
|
||||
@ -235,6 +265,9 @@
|
||||
#define SPRN_HRMOR 0x139 /* Real mode offset register */
|
||||
#define SPRN_HSRR0 0x13A /* Hypervisor Save/Restore 0 */
|
||||
#define SPRN_HSRR1 0x13B /* Hypervisor Save/Restore 1 */
|
||||
#define SPRN_FSCR 0x099 /* Facility Status & Control Register */
|
||||
#define FSCR_TAR (1<<8) /* Enable Target Adress Register */
|
||||
#define SPRN_TAR 0x32f /* Target Address Register */
|
||||
#define SPRN_LPCR 0x13E /* LPAR Control Register */
|
||||
#define LPCR_VPM0 (1ul << (63-0))
|
||||
#define LPCR_VPM1 (1ul << (63-1))
|
||||
@ -289,6 +322,7 @@
|
||||
#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */
|
||||
#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */
|
||||
#define SPRN_DBAT7U 0x23E /* Data BAT 7 Upper Register */
|
||||
#define SPRN_PPR 0x380 /* SMT Thread status Register */
|
||||
|
||||
#define SPRN_DEC 0x016 /* Decrement Register */
|
||||
#define SPRN_DER 0x095 /* Debug Enable Regsiter */
|
||||
@ -483,6 +517,7 @@
|
||||
#ifndef SPRN_PIR
|
||||
#define SPRN_PIR 0x3FF /* Processor Identification Register */
|
||||
#endif
|
||||
#define SPRN_TIR 0x1BE /* Thread Identification Register */
|
||||
#define SPRN_PTEHI 0x3D5 /* 981 7450 PTE HI word (S/W TLB load) */
|
||||
#define SPRN_PTELO 0x3D6 /* 982 7450 PTE LO word (S/W TLB load) */
|
||||
#define SPRN_PURR 0x135 /* Processor Utilization of Resources Reg */
|
||||
@ -763,7 +798,7 @@
|
||||
* HV mode in which case it is HSPRG0
|
||||
*
|
||||
* 64-bit server:
|
||||
* - SPRG0 unused (reserved for HV on Power4)
|
||||
* - SPRG0 scratch for TM recheckpoint/reclaim (reserved for HV on Power4)
|
||||
* - SPRG2 scratch for exception vectors
|
||||
* - SPRG3 CPU and NUMA node for VDSO getcpu (user visible)
|
||||
* - HSPRG0 stores PACA in HV mode
|
||||
|
@ -10,6 +10,9 @@
|
||||
|
||||
extern char __end_interrupts[];
|
||||
|
||||
extern char __prom_init_toc_start[];
|
||||
extern char __prom_init_toc_end[];
|
||||
|
||||
static inline int in_kernel_text(unsigned long addr)
|
||||
{
|
||||
if (addr >= (unsigned long)_stext && addr < (unsigned long)__init_end)
|
||||
|
@ -96,7 +96,7 @@ static inline int arch_spin_trylock(arch_spinlock_t *lock)
|
||||
|
||||
#if defined(CONFIG_PPC_SPLPAR)
|
||||
/* We only yield to the hypervisor if we are in shared processor mode */
|
||||
#define SHARED_PROCESSOR (get_lppaca()->shared_proc)
|
||||
#define SHARED_PROCESSOR (local_paca->lppaca_ptr->shared_proc)
|
||||
extern void __spin_yield(arch_spinlock_t *lock);
|
||||
extern void __rw_yield(arch_rwlock_t *lock);
|
||||
#else /* SPLPAR */
|
||||
|
20
arch/powerpc/include/asm/tm.h
Normal file
20
arch/powerpc/include/asm/tm.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Transactional memory support routines to reclaim and recheckpoint
|
||||
* transactional process state.
|
||||
*
|
||||
* Copyright 2012 Matt Evans & Michael Neuling, IBM Corporation.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
extern void do_load_up_transact_fpu(struct thread_struct *thread);
|
||||
extern void do_load_up_transact_altivec(struct thread_struct *thread);
|
||||
#endif
|
||||
|
||||
extern void tm_enable(void);
|
||||
extern void tm_reclaim(struct thread_struct *thread,
|
||||
unsigned long orig_msr, uint8_t cause);
|
||||
extern void tm_recheckpoint(struct thread_struct *thread,
|
||||
unsigned long orig_msr);
|
||||
extern void tm_abort(uint8_t cause);
|
||||
extern void tm_save_sprs(struct thread_struct *thread);
|
||||
extern void tm_restore_sprs(struct thread_struct *thread);
|
@ -108,6 +108,7 @@ struct pt_regs {
|
||||
#define PT_DAR 41
|
||||
#define PT_DSISR 42
|
||||
#define PT_RESULT 43
|
||||
#define PT_DSCR 44
|
||||
#define PT_REGS_COUNT 44
|
||||
|
||||
#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */
|
||||
@ -146,34 +147,34 @@ struct pt_regs {
|
||||
* structures. This also simplifies the implementation of a bi-arch
|
||||
* (combined (32- and 64-bit) gdb.
|
||||
*/
|
||||
#define PTRACE_GETVRREGS 18
|
||||
#define PTRACE_SETVRREGS 19
|
||||
#define PTRACE_GETVRREGS 0x12
|
||||
#define PTRACE_SETVRREGS 0x13
|
||||
|
||||
/* Get/set all the upper 32-bits of the SPE registers, accumulator, and
|
||||
* spefscr, in one go */
|
||||
#define PTRACE_GETEVRREGS 20
|
||||
#define PTRACE_SETEVRREGS 21
|
||||
#define PTRACE_GETEVRREGS 0x14
|
||||
#define PTRACE_SETEVRREGS 0x15
|
||||
|
||||
/* Get the first 32 128bit VSX registers */
|
||||
#define PTRACE_GETVSRREGS 27
|
||||
#define PTRACE_SETVSRREGS 28
|
||||
#define PTRACE_GETVSRREGS 0x1b
|
||||
#define PTRACE_SETVSRREGS 0x1c
|
||||
|
||||
/*
|
||||
* Get or set a debug register. The first 16 are DABR registers and the
|
||||
* second 16 are IABR registers.
|
||||
*/
|
||||
#define PTRACE_GET_DEBUGREG 25
|
||||
#define PTRACE_SET_DEBUGREG 26
|
||||
#define PTRACE_GET_DEBUGREG 0x19
|
||||
#define PTRACE_SET_DEBUGREG 0x1a
|
||||
|
||||
/* (new) PTRACE requests using the same numbers as x86 and the same
|
||||
* argument ordering. Additionally, they support more registers too
|
||||
*/
|
||||
#define PTRACE_GETREGS 12
|
||||
#define PTRACE_SETREGS 13
|
||||
#define PTRACE_GETFPREGS 14
|
||||
#define PTRACE_SETFPREGS 15
|
||||
#define PTRACE_GETREGS64 22
|
||||
#define PTRACE_SETREGS64 23
|
||||
#define PTRACE_GETREGS 0xc
|
||||
#define PTRACE_SETREGS 0xd
|
||||
#define PTRACE_GETFPREGS 0xe
|
||||
#define PTRACE_SETFPREGS 0xf
|
||||
#define PTRACE_GETREGS64 0x16
|
||||
#define PTRACE_SETREGS64 0x17
|
||||
|
||||
/* Calls to trace a 64bit program from a 32bit program */
|
||||
#define PPC_PTRACE_PEEKTEXT_3264 0x95
|
||||
|
@ -7,7 +7,7 @@ CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'
|
||||
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
|
||||
|
||||
ifeq ($(CONFIG_PPC64),y)
|
||||
CFLAGS_prom_init.o += -mno-minimal-toc
|
||||
CFLAGS_prom_init.o += $(NO_MINIMAL_TOC)
|
||||
endif
|
||||
ifeq ($(CONFIG_PPC32),y)
|
||||
CFLAGS_prom_init.o += -fPIC
|
||||
@ -75,8 +75,8 @@ endif
|
||||
obj64-$(CONFIG_HIBERNATION) += swsusp_asm64.o
|
||||
obj-$(CONFIG_MODULES) += module.o module_$(CONFIG_WORD_SIZE).o
|
||||
obj-$(CONFIG_44x) += cpu_setup_44x.o
|
||||
obj-$(CONFIG_PPC_FSL_BOOK3E) += cpu_setup_fsl_booke.o dbell.o
|
||||
obj-$(CONFIG_PPC_BOOK3E_64) += dbell.o
|
||||
obj-$(CONFIG_PPC_FSL_BOOK3E) += cpu_setup_fsl_booke.o
|
||||
obj-$(CONFIG_PPC_DOORBELL) += dbell.o
|
||||
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
|
||||
|
||||
extra-y := head_$(CONFIG_WORD_SIZE).o
|
||||
@ -91,7 +91,6 @@ obj-$(CONFIG_RELOCATABLE_PPC32) += reloc_32.o
|
||||
obj-$(CONFIG_PPC32) += entry_32.o setup_32.o
|
||||
obj-$(CONFIG_PPC64) += dma-iommu.o iommu.o
|
||||
obj-$(CONFIG_KGDB) += kgdb.o
|
||||
obj-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE) += prom_init.o
|
||||
obj-$(CONFIG_MODULES) += ppc_ksyms.o
|
||||
obj-$(CONFIG_BOOTX_TEXT) += btext.o
|
||||
obj-$(CONFIG_SMP) += smp.o
|
||||
@ -122,6 +121,8 @@ ifneq ($(CONFIG_PPC_INDIRECT_IO),y)
|
||||
obj-y += iomap.o
|
||||
endif
|
||||
|
||||
obj64-$(CONFIG_PPC_TRANSACTIONAL_MEM) += tm.o
|
||||
|
||||
obj-$(CONFIG_PPC64) += $(obj64-y)
|
||||
obj-$(CONFIG_PPC32) += $(obj32-y)
|
||||
|
||||
@ -142,6 +143,7 @@ GCOV_PROFILE_kprobes.o := n
|
||||
extra-$(CONFIG_PPC_FPU) += fpu.o
|
||||
extra-$(CONFIG_ALTIVEC) += vector.o
|
||||
extra-$(CONFIG_PPC64) += entry_64.o
|
||||
extra-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE) += prom_init.o
|
||||
|
||||
extra-y += systbl_chk.i
|
||||
$(obj)/systbl.o: systbl_chk
|
||||
|
@ -77,6 +77,7 @@ int main(void)
|
||||
DEFINE(NMI_MASK, NMI_MASK);
|
||||
DEFINE(THREAD_DSCR, offsetof(struct thread_struct, dscr));
|
||||
DEFINE(THREAD_DSCR_INHERIT, offsetof(struct thread_struct, dscr_inherit));
|
||||
DEFINE(TASKTHREADPPR, offsetof(struct task_struct, thread.ppr));
|
||||
#else
|
||||
DEFINE(THREAD_INFO, offsetof(struct task_struct, stack));
|
||||
#endif /* CONFIG_PPC64 */
|
||||
@ -121,6 +122,34 @@ int main(void)
|
||||
DEFINE(THREAD_KVM_VCPU, offsetof(struct thread_struct, kvm_vcpu));
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
DEFINE(THREAD_TAR, offsetof(struct thread_struct, tar));
|
||||
#endif
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
DEFINE(PACATMSCRATCH, offsetof(struct paca_struct, tm_scratch));
|
||||
DEFINE(THREAD_TM_TFHAR, offsetof(struct thread_struct, tm_tfhar));
|
||||
DEFINE(THREAD_TM_TEXASR, offsetof(struct thread_struct, tm_texasr));
|
||||
DEFINE(THREAD_TM_TFIAR, offsetof(struct thread_struct, tm_tfiar));
|
||||
DEFINE(PT_CKPT_REGS, offsetof(struct thread_struct, ckpt_regs));
|
||||
DEFINE(THREAD_TRANSACT_VR0, offsetof(struct thread_struct,
|
||||
transact_vr[0]));
|
||||
DEFINE(THREAD_TRANSACT_VSCR, offsetof(struct thread_struct,
|
||||
transact_vscr));
|
||||
DEFINE(THREAD_TRANSACT_VRSAVE, offsetof(struct thread_struct,
|
||||
transact_vrsave));
|
||||
DEFINE(THREAD_TRANSACT_FPR0, offsetof(struct thread_struct,
|
||||
transact_fpr[0]));
|
||||
DEFINE(THREAD_TRANSACT_FPSCR, offsetof(struct thread_struct,
|
||||
transact_fpscr));
|
||||
#ifdef CONFIG_VSX
|
||||
DEFINE(THREAD_TRANSACT_VSR0, offsetof(struct thread_struct,
|
||||
transact_fpr[0]));
|
||||
#endif
|
||||
/* Local pt_regs on stack for Transactional Memory funcs. */
|
||||
DEFINE(TM_FRAME_SIZE, STACK_FRAME_OVERHEAD +
|
||||
sizeof(struct pt_regs) + 16);
|
||||
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
||||
|
||||
DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
|
||||
DEFINE(TI_LOCAL_FLAGS, offsetof(struct thread_info, local_flags));
|
||||
DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
|
||||
@ -474,6 +503,7 @@ int main(void)
|
||||
DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
|
||||
DEFINE(VCPU_TRAP, offsetof(struct kvm_vcpu, arch.trap));
|
||||
DEFINE(VCPU_PTID, offsetof(struct kvm_vcpu, arch.ptid));
|
||||
DEFINE(VCPU_CFAR, offsetof(struct kvm_vcpu, arch.cfar));
|
||||
DEFINE(VCORE_ENTRY_EXIT, offsetof(struct kvmppc_vcore, entry_exit_count));
|
||||
DEFINE(VCORE_NAP_COUNT, offsetof(struct kvmppc_vcore, nap_count));
|
||||
DEFINE(VCORE_IN_GUEST, offsetof(struct kvmppc_vcore, in_guest));
|
||||
@ -553,6 +583,10 @@ int main(void)
|
||||
DEFINE(IPI_PRIORITY, IPI_PRIORITY);
|
||||
#endif /* CONFIG_KVM_BOOK3S_64_HV */
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
HSTATE_FIELD(HSTATE_CFAR, cfar);
|
||||
#endif /* CONFIG_PPC_BOOK3S_64 */
|
||||
|
||||
#else /* CONFIG_PPC_BOOK3S */
|
||||
DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr));
|
||||
DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer));
|
||||
|
@ -56,6 +56,7 @@ _GLOBAL(__setup_cpu_power8)
|
||||
mfspr r3,SPRN_LPCR
|
||||
oris r3, r3, LPCR_AIL_3@h
|
||||
bl __init_LPCR
|
||||
bl __init_FSCR
|
||||
bl __init_TLB
|
||||
mtlr r11
|
||||
blr
|
||||
@ -112,6 +113,12 @@ __init_LPCR:
|
||||
isync
|
||||
blr
|
||||
|
||||
__init_FSCR:
|
||||
mfspr r3,SPRN_FSCR
|
||||
ori r3,r3,FSCR_TAR
|
||||
mtspr SPRN_FSCR,r3
|
||||
blr
|
||||
|
||||
__init_TLB:
|
||||
/* Clear the TLB */
|
||||
li r6,128
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifdef CONFIG_SMP
|
||||
void doorbell_setup_this_cpu(void)
|
||||
{
|
||||
unsigned long tag = mfspr(SPRN_PIR) & 0x3fff;
|
||||
unsigned long tag = mfspr(SPRN_DOORBELL_CPUTAG) & PPC_DBELL_TAG_MASK;
|
||||
|
||||
smp_muxed_ipi_set_data(smp_processor_id(), tag);
|
||||
}
|
||||
@ -30,7 +30,7 @@ void doorbell_cause_ipi(int cpu, unsigned long data)
|
||||
{
|
||||
/* Order previous accesses vs. msgsnd, which is treated as a store */
|
||||
mb();
|
||||
ppc_msgsnd(PPC_DBELL, 0, data);
|
||||
ppc_msgsnd(PPC_DBELL_MSGTYPE, 0, data);
|
||||
}
|
||||
|
||||
void doorbell_exception(struct pt_regs *regs)
|
||||
|
@ -62,8 +62,9 @@ system_call_common:
|
||||
std r12,_MSR(r1)
|
||||
std r0,GPR0(r1)
|
||||
std r10,GPR1(r1)
|
||||
beq 2f /* if from kernel mode */
|
||||
ACCOUNT_CPU_USER_ENTRY(r10, r11)
|
||||
std r2,GPR2(r1)
|
||||
2: std r2,GPR2(r1)
|
||||
std r3,GPR3(r1)
|
||||
mfcr r2
|
||||
std r4,GPR4(r1)
|
||||
@ -226,6 +227,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_STCX_CHECKS_ADDRESS)
|
||||
|
||||
beq- 1f
|
||||
ACCOUNT_CPU_USER_EXIT(r11, r12)
|
||||
HMT_MEDIUM_LOW_HAS_PPR
|
||||
ld r13,GPR13(r1) /* only restore r13 if returning to usermode */
|
||||
1: ld r2,GPR2(r1)
|
||||
ld r1,GPR1(r1)
|
||||
@ -302,6 +304,7 @@ syscall_exit_work:
|
||||
subi r12,r12,TI_FLAGS
|
||||
|
||||
4: /* Anything else left to do? */
|
||||
SET_DEFAULT_THREAD_PPR(r3, r9) /* Set thread.ppr = 3 */
|
||||
andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
|
||||
beq .ret_from_except_lite
|
||||
|
||||
@ -445,6 +448,19 @@ END_FTR_SECTION_IFSET(CPU_FTR_DSCR)
|
||||
std r23,_CCR(r1)
|
||||
std r1,KSP(r3) /* Set old stack pointer */
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
BEGIN_FTR_SECTION
|
||||
/*
|
||||
* Back up the TAR across context switches. Note that the TAR is not
|
||||
* available for use in the kernel. (To provide this, the TAR should
|
||||
* be backed up/restored on exception entry/exit instead, and be in
|
||||
* pt_regs. FIXME, this should be in pt_regs anyway (for debug).)
|
||||
*/
|
||||
mfspr r0,SPRN_TAR
|
||||
std r0,THREAD_TAR(r3)
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_BCTAR)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/* We need a sync somewhere here to make sure that if the
|
||||
* previous task gets rescheduled on another CPU, it sees all
|
||||
@ -527,6 +543,13 @@ END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT)
|
||||
mr r1,r8 /* start using new stack pointer */
|
||||
std r7,PACAKSAVE(r13)
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
BEGIN_FTR_SECTION
|
||||
ld r0,THREAD_TAR(r4)
|
||||
mtspr SPRN_TAR,r0
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_BCTAR)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
BEGIN_FTR_SECTION
|
||||
ld r0,THREAD_VRSAVE(r4)
|
||||
@ -762,6 +785,10 @@ fast_exception_return:
|
||||
andc r4,r4,r0 /* r0 contains MSR_RI here */
|
||||
mtmsrd r4,1
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
/* TM debug */
|
||||
std r3, PACATMSCRATCH(r13) /* Stash returned-to MSR */
|
||||
#endif
|
||||
/*
|
||||
* r13 is our per cpu area, only restore it if we are returning to
|
||||
* userspace the value stored in the stack frame may belong to
|
||||
@ -770,6 +797,7 @@ fast_exception_return:
|
||||
andi. r0,r3,MSR_PR
|
||||
beq 1f
|
||||
ACCOUNT_CPU_USER_EXIT(r2, r4)
|
||||
RESTORE_PPR(r2, r4)
|
||||
REST_GPR(13, r1)
|
||||
1:
|
||||
mtspr SPRN_SRR1,r3
|
||||
@ -849,13 +877,22 @@ restore_check_irq_replay:
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD;
|
||||
bl .timer_interrupt
|
||||
b .ret_from_except
|
||||
#ifdef CONFIG_PPC_DOORBELL
|
||||
1:
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
1: cmpwi cr0,r3,0x280
|
||||
cmpwi cr0,r3,0x280
|
||||
#else
|
||||
BEGIN_FTR_SECTION
|
||||
cmpwi cr0,r3,0xe80
|
||||
FTR_SECTION_ELSE
|
||||
cmpwi cr0,r3,0xa00
|
||||
ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
|
||||
#endif /* CONFIG_PPC_BOOK3E */
|
||||
bne 1f
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD;
|
||||
bl .doorbell_exception
|
||||
b .ret_from_except
|
||||
#endif /* CONFIG_PPC_BOOK3E */
|
||||
#endif /* CONFIG_PPC_DOORBELL */
|
||||
1: b .ret_from_except /* What else to do here ? */
|
||||
|
||||
unrecov_restore:
|
||||
|
@ -159,8 +159,9 @@ exc_##n##_common: \
|
||||
std r9,GPR9(r1); /* save r9 in stackframe */ \
|
||||
std r10,_NIP(r1); /* save SRR0 to stackframe */ \
|
||||
std r11,_MSR(r1); /* save SRR1 to stackframe */ \
|
||||
beq 2f; /* if from kernel mode */ \
|
||||
ACCOUNT_CPU_USER_ENTRY(r10,r11);/* accounting (uses cr0+eq) */ \
|
||||
ld r3,excf+EX_R10(r13); /* get back r10 */ \
|
||||
2: ld r3,excf+EX_R10(r13); /* get back r10 */ \
|
||||
ld r4,excf+EX_R11(r13); /* get back r11 */ \
|
||||
mfspr r5,SPRN_SPRG_GEN_SCRATCH;/* get back r13 */ \
|
||||
std r12,GPR12(r1); /* save r12 in stackframe */ \
|
||||
|
@ -104,7 +104,7 @@ __start_interrupts:
|
||||
|
||||
.globl system_reset_pSeries;
|
||||
system_reset_pSeries:
|
||||
HMT_MEDIUM;
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13)
|
||||
#ifdef CONFIG_PPC_P7_NAP
|
||||
BEGIN_FTR_SECTION
|
||||
@ -153,12 +153,15 @@ machine_check_pSeries_1:
|
||||
* some code path might still want to branch into the original
|
||||
* vector
|
||||
*/
|
||||
b machine_check_pSeries
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13) /* save r13 */
|
||||
EXCEPTION_PROLOG_0(PACA_EXMC)
|
||||
b machine_check_pSeries_0
|
||||
|
||||
. = 0x300
|
||||
.globl data_access_pSeries
|
||||
data_access_pSeries:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13)
|
||||
BEGIN_FTR_SECTION
|
||||
b data_access_check_stab
|
||||
@ -170,8 +173,9 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_SLB)
|
||||
. = 0x380
|
||||
.globl data_access_slb_pSeries
|
||||
data_access_slb_pSeries:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXSLB)
|
||||
EXCEPTION_PROLOG_1(PACA_EXSLB, KVMTEST, 0x380)
|
||||
std r3,PACA_EXSLB+EX_R3(r13)
|
||||
mfspr r3,SPRN_DAR
|
||||
@ -201,8 +205,9 @@ data_access_slb_pSeries:
|
||||
. = 0x480
|
||||
.globl instruction_access_slb_pSeries
|
||||
instruction_access_slb_pSeries:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXSLB)
|
||||
EXCEPTION_PROLOG_1(PACA_EXSLB, KVMTEST_PR, 0x480)
|
||||
std r3,PACA_EXSLB+EX_R3(r13)
|
||||
mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */
|
||||
@ -252,7 +257,7 @@ hardware_interrupt_hv:
|
||||
MASKABLE_EXCEPTION_PSERIES(0x900, 0x900, decrementer)
|
||||
STD_EXCEPTION_HV(0x980, 0x982, hdecrementer)
|
||||
|
||||
STD_EXCEPTION_PSERIES(0xa00, 0xa00, trap_0a)
|
||||
MASKABLE_EXCEPTION_PSERIES(0xa00, 0xa00, doorbell_super)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xa00)
|
||||
|
||||
STD_EXCEPTION_PSERIES(0xb00, 0xb00, trap_0b)
|
||||
@ -284,16 +289,30 @@ system_call_pSeries:
|
||||
*/
|
||||
. = 0xe00
|
||||
hv_exception_trampoline:
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_data_storage_hv
|
||||
|
||||
. = 0xe20
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_instr_storage_hv
|
||||
|
||||
. = 0xe40
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b emulation_assist_hv
|
||||
. = 0xe50
|
||||
b hmi_exception_hv
|
||||
|
||||
. = 0xe60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b hmi_exception_hv
|
||||
|
||||
. = 0xe80
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_doorbell_hv
|
||||
|
||||
/* We need to deal with the Altivec unavailable exception
|
||||
* here which is at 0xf20, thus in the middle of the
|
||||
* prolog code of the PerformanceMonitor one. A little
|
||||
@ -301,16 +320,27 @@ hv_exception_trampoline:
|
||||
*/
|
||||
performance_monitor_pSeries_1:
|
||||
. = 0xf00
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b performance_monitor_pSeries
|
||||
|
||||
altivec_unavailable_pSeries_1:
|
||||
. = 0xf20
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b altivec_unavailable_pSeries
|
||||
|
||||
vsx_unavailable_pSeries_1:
|
||||
. = 0xf40
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b vsx_unavailable_pSeries
|
||||
|
||||
. = 0xf60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b tm_unavailable_pSeries
|
||||
|
||||
#ifdef CONFIG_CBE_RAS
|
||||
STD_EXCEPTION_HV(0x1200, 0x1202, cbe_system_error)
|
||||
KVM_HANDLER_SKIP(PACA_EXGEN, EXC_HV, 0x1202)
|
||||
@ -322,11 +352,9 @@ vsx_unavailable_pSeries_1:
|
||||
. = 0x1500
|
||||
.global denorm_exception_hv
|
||||
denorm_exception_hv:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
mtspr SPRN_SPRG_HSCRATCH0,r13
|
||||
mfspr r13,SPRN_SPRG_HPACA
|
||||
std r9,PACA_EXGEN+EX_R9(r13)
|
||||
std r10,PACA_EXGEN+EX_R10(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
std r11,PACA_EXGEN+EX_R11(r13)
|
||||
std r12,PACA_EXGEN+EX_R12(r13)
|
||||
mfspr r9,SPRN_SPRG_HSCRATCH0
|
||||
@ -367,10 +395,12 @@ denorm_exception_hv:
|
||||
machine_check_pSeries:
|
||||
.globl machine_check_fwnmi
|
||||
machine_check_fwnmi:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13) /* save r13 */
|
||||
EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common,
|
||||
EXC_STD, KVMTEST, 0x200)
|
||||
EXCEPTION_PROLOG_0(PACA_EXMC)
|
||||
machine_check_pSeries_0:
|
||||
EXCEPTION_PROLOG_1(PACA_EXMC, KVMTEST, 0x200)
|
||||
EXCEPTION_PROLOG_PSERIES_1(machine_check_common, EXC_STD)
|
||||
KVM_HANDLER_SKIP(PACA_EXMC, EXC_STD, 0x200)
|
||||
|
||||
/* moved from 0x300 */
|
||||
@ -496,6 +526,7 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206)
|
||||
mtspr SPRN_HSRR0,r11
|
||||
mtcrf 0x80,r9
|
||||
ld r9,PACA_EXGEN+EX_R9(r13)
|
||||
RESTORE_PPR_PACA(PACA_EXGEN, r10)
|
||||
ld r10,PACA_EXGEN+EX_R10(r13)
|
||||
ld r11,PACA_EXGEN+EX_R11(r13)
|
||||
ld r12,PACA_EXGEN+EX_R12(r13)
|
||||
@ -506,28 +537,34 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_ARCH_206)
|
||||
|
||||
.align 7
|
||||
/* moved from 0xe00 */
|
||||
STD_EXCEPTION_HV(., 0xe02, h_data_storage)
|
||||
STD_EXCEPTION_HV_OOL(0xe02, h_data_storage)
|
||||
KVM_HANDLER_SKIP(PACA_EXGEN, EXC_HV, 0xe02)
|
||||
STD_EXCEPTION_HV(., 0xe22, h_instr_storage)
|
||||
STD_EXCEPTION_HV_OOL(0xe22, h_instr_storage)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe22)
|
||||
STD_EXCEPTION_HV(., 0xe42, emulation_assist)
|
||||
STD_EXCEPTION_HV_OOL(0xe42, emulation_assist)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe42)
|
||||
STD_EXCEPTION_HV(., 0xe62, hmi_exception) /* need to flush cache ? */
|
||||
STD_EXCEPTION_HV_OOL(0xe62, hmi_exception) /* need to flush cache ? */
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe62)
|
||||
MASKABLE_EXCEPTION_HV_OOL(0xe82, h_doorbell)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe82)
|
||||
|
||||
/* moved from 0xf00 */
|
||||
STD_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf00, performance_monitor)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf00)
|
||||
STD_EXCEPTION_PSERIES(., 0xf20, altivec_unavailable)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf20, altivec_unavailable)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf20)
|
||||
STD_EXCEPTION_PSERIES(., 0xf40, vsx_unavailable)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf40, vsx_unavailable)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf40)
|
||||
STD_EXCEPTION_PSERIES_OOL(0xf60, tm_unavailable)
|
||||
KVM_HANDLER_PR(PACA_EXGEN, EXC_STD, 0xf60)
|
||||
|
||||
/*
|
||||
* An interrupt came in while soft-disabled. We set paca->irq_happened,
|
||||
* then, if it was a decrementer interrupt, we bump the dec to max and
|
||||
* and return, else we hard disable and return. This is called with
|
||||
* r10 containing the value to OR to the paca field.
|
||||
* An interrupt came in while soft-disabled. We set paca->irq_happened, then:
|
||||
* - If it was a decrementer interrupt, we bump the dec to max and and return.
|
||||
* - If it was a doorbell we return immediately since doorbells are edge
|
||||
* triggered and won't automatically refire.
|
||||
* - else we hard disable and return.
|
||||
* This is called with r10 containing the value to OR to the paca field.
|
||||
*/
|
||||
#define MASKED_INTERRUPT(_H) \
|
||||
masked_##_H##interrupt: \
|
||||
@ -535,13 +572,15 @@ masked_##_H##interrupt: \
|
||||
lbz r11,PACAIRQHAPPENED(r13); \
|
||||
or r11,r11,r10; \
|
||||
stb r11,PACAIRQHAPPENED(r13); \
|
||||
andi. r10,r10,PACA_IRQ_DEC; \
|
||||
beq 1f; \
|
||||
cmpwi r10,PACA_IRQ_DEC; \
|
||||
bne 1f; \
|
||||
lis r10,0x7fff; \
|
||||
ori r10,r10,0xffff; \
|
||||
mtspr SPRN_DEC,r10; \
|
||||
b 2f; \
|
||||
1: mfspr r10,SPRN_##_H##SRR1; \
|
||||
1: cmpwi r10,PACA_IRQ_DBELL; \
|
||||
beq 2f; \
|
||||
mfspr r10,SPRN_##_H##SRR1; \
|
||||
rldicl r10,r10,48,1; /* clear MSR_EE */ \
|
||||
rotldi r10,r10,16; \
|
||||
mtspr SPRN_##_H##SRR1,r10; \
|
||||
@ -558,8 +597,8 @@ masked_##_H##interrupt: \
|
||||
|
||||
/*
|
||||
* Called from arch_local_irq_enable when an interrupt needs
|
||||
* to be resent. r3 contains 0x500 or 0x900 to indicate which
|
||||
* kind of interrupt. MSR:EE is already off. We generate a
|
||||
* to be resent. r3 contains 0x500, 0x900, 0xa00 or 0xe80 to indicate
|
||||
* which kind of interrupt. MSR:EE is already off. We generate a
|
||||
* stackframe like if a real interrupt had happened.
|
||||
*
|
||||
* Note: While MSR:EE is off, we need to make sure that _MSR
|
||||
@ -575,9 +614,18 @@ _GLOBAL(__replay_interrupt)
|
||||
mflr r11
|
||||
mfcr r9
|
||||
ori r12,r12,MSR_EE
|
||||
andi. r3,r3,0x0800
|
||||
bne decrementer_common
|
||||
b hardware_interrupt_common
|
||||
cmpwi r3,0x900
|
||||
beq decrementer_common
|
||||
cmpwi r3,0x500
|
||||
beq hardware_interrupt_common
|
||||
BEGIN_FTR_SECTION
|
||||
cmpwi r3,0xe80
|
||||
beq h_doorbell_common
|
||||
FTR_SECTION_ELSE
|
||||
cmpwi r3,0xa00
|
||||
beq doorbell_super_common
|
||||
ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE)
|
||||
blr
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
/*
|
||||
@ -586,7 +634,7 @@ _GLOBAL(__replay_interrupt)
|
||||
.globl system_reset_fwnmi
|
||||
.align 7
|
||||
system_reset_fwnmi:
|
||||
HMT_MEDIUM
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13) /* save r13 */
|
||||
EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, system_reset_common, EXC_STD,
|
||||
NOTEST, 0x100)
|
||||
@ -651,12 +699,21 @@ machine_check_common:
|
||||
STD_EXCEPTION_COMMON_ASYNC(0x500, hardware_interrupt, do_IRQ)
|
||||
STD_EXCEPTION_COMMON_ASYNC(0x900, decrementer, .timer_interrupt)
|
||||
STD_EXCEPTION_COMMON(0x980, hdecrementer, .hdec_interrupt)
|
||||
STD_EXCEPTION_COMMON(0xa00, trap_0a, .unknown_exception)
|
||||
#ifdef CONFIG_PPC_DOORBELL
|
||||
STD_EXCEPTION_COMMON_ASYNC(0xa00, doorbell_super, .doorbell_exception)
|
||||
#else
|
||||
STD_EXCEPTION_COMMON_ASYNC(0xa00, doorbell_super, .unknown_exception)
|
||||
#endif
|
||||
STD_EXCEPTION_COMMON(0xb00, trap_0b, .unknown_exception)
|
||||
STD_EXCEPTION_COMMON(0xd00, single_step, .single_step_exception)
|
||||
STD_EXCEPTION_COMMON(0xe00, trap_0e, .unknown_exception)
|
||||
STD_EXCEPTION_COMMON(0xe40, emulation_assist, .program_check_exception)
|
||||
STD_EXCEPTION_COMMON(0xe60, hmi_exception, .unknown_exception)
|
||||
#ifdef CONFIG_PPC_DOORBELL
|
||||
STD_EXCEPTION_COMMON_ASYNC(0xe80, h_doorbell, .doorbell_exception)
|
||||
#else
|
||||
STD_EXCEPTION_COMMON_ASYNC(0xe80, h_doorbell, .unknown_exception)
|
||||
#endif
|
||||
STD_EXCEPTION_COMMON_ASYNC(0xf00, performance_monitor, .performance_monitor_exception)
|
||||
STD_EXCEPTION_COMMON(0x1300, instruction_breakpoint, .instruction_breakpoint_exception)
|
||||
STD_EXCEPTION_COMMON(0x1502, denorm, .unknown_exception)
|
||||
@ -690,8 +747,8 @@ machine_check_common:
|
||||
. = 0x4380
|
||||
.globl data_access_slb_relon_pSeries
|
||||
data_access_slb_relon_pSeries:
|
||||
HMT_MEDIUM
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXSLB)
|
||||
EXCEPTION_PROLOG_1(PACA_EXSLB, NOTEST, 0x380)
|
||||
std r3,PACA_EXSLB+EX_R3(r13)
|
||||
mfspr r3,SPRN_DAR
|
||||
@ -715,8 +772,8 @@ data_access_slb_relon_pSeries:
|
||||
. = 0x4480
|
||||
.globl instruction_access_slb_relon_pSeries
|
||||
instruction_access_slb_relon_pSeries:
|
||||
HMT_MEDIUM
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXSLB)
|
||||
EXCEPTION_PROLOG_1(PACA_EXSLB, NOTEST, 0x480)
|
||||
std r3,PACA_EXSLB+EX_R3(r13)
|
||||
mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */
|
||||
@ -746,6 +803,7 @@ hardware_interrupt_relon_hv:
|
||||
STD_RELON_EXCEPTION_PSERIES(0x4800, 0x800, fp_unavailable)
|
||||
MASKABLE_RELON_EXCEPTION_PSERIES(0x4900, 0x900, decrementer)
|
||||
STD_RELON_EXCEPTION_HV(0x4980, 0x982, hdecrementer)
|
||||
MASKABLE_RELON_EXCEPTION_PSERIES(0x4a00, 0xa00, doorbell_super)
|
||||
STD_RELON_EXCEPTION_PSERIES(0x4b00, 0xb00, trap_0b)
|
||||
|
||||
. = 0x4c00
|
||||
@ -759,56 +817,64 @@ system_call_relon_pSeries:
|
||||
STD_RELON_EXCEPTION_PSERIES(0x4d00, 0xd00, single_step)
|
||||
|
||||
. = 0x4e00
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_data_storage_relon_hv
|
||||
|
||||
. = 0x4e20
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_instr_storage_relon_hv
|
||||
|
||||
. = 0x4e40
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b emulation_assist_relon_hv
|
||||
|
||||
. = 0x4e50
|
||||
b hmi_exception_relon_hv
|
||||
|
||||
. = 0x4e60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b hmi_exception_relon_hv
|
||||
|
||||
/* For when we support the doorbell interrupt:
|
||||
STD_RELON_EXCEPTION_HYPERVISOR(0x4e80, 0xe80, doorbell_hyper)
|
||||
*/
|
||||
. = 0x4e80
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b h_doorbell_relon_hv
|
||||
|
||||
performance_monitor_relon_pSeries_1:
|
||||
. = 0x4f00
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b performance_monitor_relon_pSeries
|
||||
|
||||
altivec_unavailable_relon_pSeries_1:
|
||||
. = 0x4f20
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b altivec_unavailable_relon_pSeries
|
||||
|
||||
vsx_unavailable_relon_pSeries_1:
|
||||
. = 0x4f40
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b vsx_unavailable_relon_pSeries
|
||||
|
||||
#ifdef CONFIG_CBE_RAS
|
||||
STD_RELON_EXCEPTION_HV(0x5200, 0x1202, cbe_system_error)
|
||||
#endif /* CONFIG_CBE_RAS */
|
||||
tm_unavailable_relon_pSeries_1:
|
||||
. = 0x4f60
|
||||
SET_SCRATCH0(r13)
|
||||
EXCEPTION_PROLOG_0(PACA_EXGEN)
|
||||
b tm_unavailable_relon_pSeries
|
||||
|
||||
STD_RELON_EXCEPTION_PSERIES(0x5300, 0x1300, instruction_breakpoint)
|
||||
#ifdef CONFIG_PPC_DENORMALISATION
|
||||
. = 0x5500
|
||||
b denorm_exception_hv
|
||||
#endif
|
||||
#ifdef CONFIG_CBE_RAS
|
||||
STD_RELON_EXCEPTION_HV(0x5600, 0x1602, cbe_maintenance)
|
||||
#else
|
||||
#ifdef CONFIG_HVC_SCOM
|
||||
STD_RELON_EXCEPTION_HV(0x5600, 0x1600, maintence_interrupt)
|
||||
KVM_HANDLER_SKIP(PACA_EXGEN, EXC_HV, 0x1600)
|
||||
#endif /* CONFIG_HVC_SCOM */
|
||||
#endif /* CONFIG_CBE_RAS */
|
||||
STD_RELON_EXCEPTION_PSERIES(0x5700, 0x1700, altivec_assist)
|
||||
#ifdef CONFIG_CBE_RAS
|
||||
STD_RELON_EXCEPTION_HV(0x5800, 0x1802, cbe_thermal)
|
||||
#endif /* CONFIG_CBE_RAS */
|
||||
|
||||
/* Other future vectors */
|
||||
.align 7
|
||||
@ -1036,6 +1102,7 @@ _GLOBAL(slb_miss_realmode)
|
||||
mtcrf 0x01,r9 /* slb_allocate uses cr0 and cr7 */
|
||||
.machine pop
|
||||
|
||||
RESTORE_PPR_PACA(PACA_EXSLB, r9)
|
||||
ld r9,PACA_EXSLB+EX_R9(r13)
|
||||
ld r10,PACA_EXSLB+EX_R10(r13)
|
||||
ld r11,PACA_EXSLB+EX_R11(r13)
|
||||
@ -1109,9 +1176,26 @@ fp_unavailable_common:
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .kernel_fp_unavailable_exception
|
||||
BUG_OPCODE
|
||||
1: bl .load_up_fpu
|
||||
1:
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
BEGIN_FTR_SECTION
|
||||
/* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
|
||||
* transaction), go do TM stuff
|
||||
*/
|
||||
rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
|
||||
bne- 2f
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_TM)
|
||||
#endif
|
||||
bl .load_up_fpu
|
||||
b fast_exception_return
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
2: /* User process was in a transaction */
|
||||
bl .save_nvgprs
|
||||
DISABLE_INTS
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .fp_unavailable_tm
|
||||
b .ret_from_except
|
||||
#endif
|
||||
.align 7
|
||||
.globl altivec_unavailable_common
|
||||
altivec_unavailable_common:
|
||||
@ -1119,8 +1203,25 @@ altivec_unavailable_common:
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
BEGIN_FTR_SECTION
|
||||
beq 1f
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
BEGIN_FTR_SECTION_NESTED(69)
|
||||
/* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
|
||||
* transaction), go do TM stuff
|
||||
*/
|
||||
rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
|
||||
bne- 2f
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69)
|
||||
#endif
|
||||
bl .load_up_altivec
|
||||
b fast_exception_return
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
2: /* User process was in a transaction */
|
||||
bl .save_nvgprs
|
||||
DISABLE_INTS
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .altivec_unavailable_tm
|
||||
b .ret_from_except
|
||||
#endif
|
||||
1:
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||
#endif
|
||||
@ -1137,7 +1238,24 @@ vsx_unavailable_common:
|
||||
#ifdef CONFIG_VSX
|
||||
BEGIN_FTR_SECTION
|
||||
beq 1f
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
BEGIN_FTR_SECTION_NESTED(69)
|
||||
/* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
|
||||
* transaction), go do TM stuff
|
||||
*/
|
||||
rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
|
||||
bne- 2f
|
||||
END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69)
|
||||
#endif
|
||||
b .load_up_vsx
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
2: /* User process was in a transaction */
|
||||
bl .save_nvgprs
|
||||
DISABLE_INTS
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .vsx_unavailable_tm
|
||||
b .ret_from_except
|
||||
#endif
|
||||
1:
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_VSX)
|
||||
#endif
|
||||
@ -1147,10 +1265,76 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
|
||||
bl .vsx_unavailable_exception
|
||||
b .ret_from_except
|
||||
|
||||
.align 7
|
||||
.globl tm_unavailable_common
|
||||
tm_unavailable_common:
|
||||
EXCEPTION_PROLOG_COMMON(0xf60, PACA_EXGEN)
|
||||
bl .save_nvgprs
|
||||
DISABLE_INTS
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .tm_unavailable_exception
|
||||
b .ret_from_except
|
||||
|
||||
.align 7
|
||||
.globl __end_handlers
|
||||
__end_handlers:
|
||||
|
||||
/* Equivalents to the above handlers for relocation-on interrupt vectors */
|
||||
STD_RELON_EXCEPTION_HV_OOL(0xe00, h_data_storage)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe00)
|
||||
STD_RELON_EXCEPTION_HV_OOL(0xe20, h_instr_storage)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe20)
|
||||
STD_RELON_EXCEPTION_HV_OOL(0xe40, emulation_assist)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40)
|
||||
STD_RELON_EXCEPTION_HV_OOL(0xe60, hmi_exception)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60)
|
||||
MASKABLE_RELON_EXCEPTION_HV_OOL(0xe80, h_doorbell)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe80)
|
||||
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf00, performance_monitor)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf20, altivec_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf40, vsx_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES_OOL(0xf60, tm_unavailable)
|
||||
|
||||
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
|
||||
/*
|
||||
* Data area reserved for FWNMI option.
|
||||
* This address (0x7000) is fixed by the RPA.
|
||||
*/
|
||||
.= 0x7000
|
||||
.globl fwnmi_data_area
|
||||
fwnmi_data_area:
|
||||
|
||||
/* pseries and powernv need to keep the whole page from
|
||||
* 0x7000 to 0x8000 free for use by the firmware
|
||||
*/
|
||||
. = 0x8000
|
||||
#endif /* defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV) */
|
||||
|
||||
/* Space for CPU0's segment table */
|
||||
.balign 4096
|
||||
.globl initial_stab
|
||||
initial_stab:
|
||||
.space 4096
|
||||
|
||||
#ifdef CONFIG_PPC_POWERNV
|
||||
_GLOBAL(opal_mc_secondary_handler)
|
||||
HMT_MEDIUM_PPR_DISCARD
|
||||
SET_SCRATCH0(r13)
|
||||
GET_PACA(r13)
|
||||
clrldi r3,r3,2
|
||||
tovirt(r3,r3)
|
||||
std r3,PACA_OPAL_MC_EVT(r13)
|
||||
ld r13,OPAL_MC_SRR0(r3)
|
||||
mtspr SPRN_SRR0,r13
|
||||
ld r13,OPAL_MC_SRR1(r3)
|
||||
mtspr SPRN_SRR1,r13
|
||||
ld r3,OPAL_MC_GPR3(r3)
|
||||
GET_SCRATCH0(r13)
|
||||
b machine_check_pSeries
|
||||
#endif /* CONFIG_PPC_POWERNV */
|
||||
|
||||
|
||||
/*
|
||||
* Hash table stuff
|
||||
*/
|
||||
@ -1222,7 +1406,7 @@ handle_dabr_fault:
|
||||
ld r4,_DAR(r1)
|
||||
ld r5,_DSISR(r1)
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
bl .do_dabr
|
||||
bl .do_break
|
||||
12: b .ret_from_except_lite
|
||||
|
||||
|
||||
@ -1344,56 +1528,3 @@ _GLOBAL(do_stab_bolted)
|
||||
ld r13,PACA_EXSLB+EX_R13(r13)
|
||||
rfid
|
||||
b . /* prevent speculative execution */
|
||||
|
||||
|
||||
/* Equivalents to the above handlers for relocation-on interrupt vectors */
|
||||
STD_RELON_EXCEPTION_HV(., 0xe00, h_data_storage)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe00)
|
||||
STD_RELON_EXCEPTION_HV(., 0xe20, h_instr_storage)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe20)
|
||||
STD_RELON_EXCEPTION_HV(., 0xe40, emulation_assist)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe40)
|
||||
STD_RELON_EXCEPTION_HV(., 0xe60, hmi_exception)
|
||||
KVM_HANDLER(PACA_EXGEN, EXC_HV, 0xe60)
|
||||
|
||||
STD_RELON_EXCEPTION_PSERIES(., 0xf00, performance_monitor)
|
||||
STD_RELON_EXCEPTION_PSERIES(., 0xf20, altivec_unavailable)
|
||||
STD_RELON_EXCEPTION_PSERIES(., 0xf40, vsx_unavailable)
|
||||
|
||||
#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)
|
||||
/*
|
||||
* Data area reserved for FWNMI option.
|
||||
* This address (0x7000) is fixed by the RPA.
|
||||
*/
|
||||
.= 0x7000
|
||||
.globl fwnmi_data_area
|
||||
fwnmi_data_area:
|
||||
|
||||
/* pseries and powernv need to keep the whole page from
|
||||
* 0x7000 to 0x8000 free for use by the firmware
|
||||
*/
|
||||
. = 0x8000
|
||||
#endif /* defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV) */
|
||||
|
||||
/* Space for CPU0's segment table */
|
||||
.balign 4096
|
||||
.globl initial_stab
|
||||
initial_stab:
|
||||
.space 4096
|
||||
|
||||
#ifdef CONFIG_PPC_POWERNV
|
||||
_GLOBAL(opal_mc_secondary_handler)
|
||||
HMT_MEDIUM
|
||||
SET_SCRATCH0(r13)
|
||||
GET_PACA(r13)
|
||||
clrldi r3,r3,2
|
||||
tovirt(r3,r3)
|
||||
std r3,PACA_OPAL_MC_EVT(r13)
|
||||
ld r13,OPAL_MC_SRR0(r3)
|
||||
mtspr SPRN_SRR0,r13
|
||||
ld r13,OPAL_MC_SRR1(r3)
|
||||
mtspr SPRN_SRR1,r13
|
||||
ld r3,OPAL_MC_GPR3(r3)
|
||||
GET_SCRATCH0(r13)
|
||||
b machine_check_pSeries
|
||||
#endif /* CONFIG_PPC_POWERNV */
|
||||
|
@ -35,6 +35,15 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
|
||||
2: REST_32VSRS(n,c,base); \
|
||||
3:
|
||||
|
||||
#define __REST_32FPVSRS_TRANSACT(n,c,base) \
|
||||
BEGIN_FTR_SECTION \
|
||||
b 2f; \
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
|
||||
REST_32FPRS_TRANSACT(n,base); \
|
||||
b 3f; \
|
||||
2: REST_32VSRS_TRANSACT(n,c,base); \
|
||||
3:
|
||||
|
||||
#define __SAVE_32FPVSRS(n,c,base) \
|
||||
BEGIN_FTR_SECTION \
|
||||
b 2f; \
|
||||
@ -45,11 +54,68 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
|
||||
3:
|
||||
#else
|
||||
#define __REST_32FPVSRS(n,b,base) REST_32FPRS(n, base)
|
||||
#define __REST_32FPVSRS_TRANSACT(n,b,base) REST_32FPRS(n, base)
|
||||
#define __SAVE_32FPVSRS(n,b,base) SAVE_32FPRS(n, base)
|
||||
#endif
|
||||
#define REST_32FPVSRS(n,c,base) __REST_32FPVSRS(n,__REG_##c,__REG_##base)
|
||||
#define REST_32FPVSRS_TRANSACT(n,c,base) \
|
||||
__REST_32FPVSRS_TRANSACT(n,__REG_##c,__REG_##base)
|
||||
#define SAVE_32FPVSRS(n,c,base) __SAVE_32FPVSRS(n,__REG_##c,__REG_##base)
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
/*
|
||||
* Wrapper to call load_up_fpu from C.
|
||||
* void do_load_up_fpu(struct pt_regs *regs);
|
||||
*/
|
||||
_GLOBAL(do_load_up_fpu)
|
||||
mflr r0
|
||||
std r0, 16(r1)
|
||||
stdu r1, -112(r1)
|
||||
|
||||
subi r6, r3, STACK_FRAME_OVERHEAD
|
||||
/* load_up_fpu expects r12=MSR, r13=PACA, and returns
|
||||
* with r12 = new MSR.
|
||||
*/
|
||||
ld r12,_MSR(r6)
|
||||
GET_PACA(r13)
|
||||
|
||||
bl load_up_fpu
|
||||
std r12,_MSR(r6)
|
||||
|
||||
ld r0, 112+16(r1)
|
||||
addi r1, r1, 112
|
||||
mtlr r0
|
||||
blr
|
||||
|
||||
|
||||
/* void do_load_up_transact_fpu(struct thread_struct *thread)
|
||||
*
|
||||
* This is similar to load_up_fpu but for the transactional version of the FP
|
||||
* register set. It doesn't mess with the task MSR or valid flags.
|
||||
* Furthermore, we don't do lazy FP with TM currently.
|
||||
*/
|
||||
_GLOBAL(do_load_up_transact_fpu)
|
||||
mfmsr r6
|
||||
ori r5,r6,MSR_FP
|
||||
#ifdef CONFIG_VSX
|
||||
BEGIN_FTR_SECTION
|
||||
oris r5,r5,MSR_VSX@h
|
||||
END_FTR_SECTION_IFSET(CPU_FTR_VSX)
|
||||
#endif
|
||||
SYNC
|
||||
MTMSRD(r5)
|
||||
|
||||
lfd fr0,THREAD_TRANSACT_FPSCR(r3)
|
||||
MTFSF_L(fr0)
|
||||
REST_32FPVSRS_TRANSACT(0, R4, R3)
|
||||
|
||||
/* FP/VSX off again */
|
||||
MTMSRD(r6)
|
||||
SYNC
|
||||
|
||||
blr
|
||||
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
||||
|
||||
/*
|
||||
* This task wants to use the FPU now.
|
||||
* On UP, disable FP for the task which had the FPU previously,
|
||||
|
@ -430,30 +430,18 @@ label:
|
||||
EXCEPTION(0x0F00, Trap_0F, unknown_exception, EXC_XFER_EE)
|
||||
|
||||
/* 0x1000 - Programmable Interval Timer (PIT) Exception */
|
||||
START_EXCEPTION(0x1000, Decrementer)
|
||||
NORMAL_EXCEPTION_PROLOG
|
||||
lis r0,TSR_PIS@h
|
||||
mtspr SPRN_TSR,r0 /* Clear the PIT exception */
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
EXC_XFER_LITE(0x1000, timer_interrupt)
|
||||
|
||||
#if 0
|
||||
/* NOTE:
|
||||
* FIT and WDT handlers are not implemented yet.
|
||||
*/
|
||||
. = 0x1000
|
||||
b Decrementer
|
||||
|
||||
/* 0x1010 - Fixed Interval Timer (FIT) Exception
|
||||
*/
|
||||
STND_EXCEPTION(0x1010, FITException, unknown_exception)
|
||||
. = 0x1010
|
||||
b FITException
|
||||
|
||||
/* 0x1020 - Watchdog Timer (WDT) Exception
|
||||
*/
|
||||
#ifdef CONFIG_BOOKE_WDT
|
||||
CRITICAL_EXCEPTION(0x1020, WDTException, WatchdogException)
|
||||
#else
|
||||
CRITICAL_EXCEPTION(0x1020, WDTException, unknown_exception)
|
||||
#endif
|
||||
#endif
|
||||
. = 0x1020
|
||||
b WDTException
|
||||
|
||||
/* 0x1100 - Data TLB Miss Exception
|
||||
* As the name implies, translation is not in the MMU, so search the
|
||||
@ -738,6 +726,29 @@ label:
|
||||
(MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \
|
||||
NOCOPY, crit_transfer_to_handler, ret_from_crit_exc)
|
||||
|
||||
/* Programmable Interval Timer (PIT) Exception. (from 0x1000) */
|
||||
Decrementer:
|
||||
NORMAL_EXCEPTION_PROLOG
|
||||
lis r0,TSR_PIS@h
|
||||
mtspr SPRN_TSR,r0 /* Clear the PIT exception */
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
EXC_XFER_LITE(0x1000, timer_interrupt)
|
||||
|
||||
/* Fixed Interval Timer (FIT) Exception. (from 0x1010) */
|
||||
FITException:
|
||||
NORMAL_EXCEPTION_PROLOG
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD;
|
||||
EXC_XFER_EE(0x1010, unknown_exception)
|
||||
|
||||
/* Watchdog Timer (WDT) Exception. (from 0x1020) */
|
||||
WDTException:
|
||||
CRITICAL_EXCEPTION_PROLOG;
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD;
|
||||
EXC_XFER_TEMPLATE(WatchdogException, 0x1020+2,
|
||||
(MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)),
|
||||
NOCOPY, crit_transfer_to_handler,
|
||||
ret_from_crit_exc)
|
||||
|
||||
/*
|
||||
* The other Data TLB exceptions bail out to this point
|
||||
* if they can't resolve the lightweight TLB fault.
|
||||
|
@ -122,6 +122,8 @@ __secondary_hold:
|
||||
#endif
|
||||
/* Grab our physical cpu number */
|
||||
mr r24,r3
|
||||
/* stash r4 for book3e */
|
||||
mr r25,r4
|
||||
|
||||
/* Tell the master cpu we're here */
|
||||
/* Relocation is off & we are located at an address less */
|
||||
@ -129,16 +131,31 @@ __secondary_hold:
|
||||
std r24,__secondary_hold_acknowledge-_stext(0)
|
||||
sync
|
||||
|
||||
li r26,0
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
tovirt(r26,r26)
|
||||
#endif
|
||||
/* All secondary cpus wait here until told to start. */
|
||||
100: ld r4,__secondary_hold_spinloop-_stext(0)
|
||||
100: ld r4,__secondary_hold_spinloop-_stext(r26)
|
||||
cmpdi 0,r4,0
|
||||
beq 100b
|
||||
|
||||
#if defined(CONFIG_SMP) || defined(CONFIG_KEXEC)
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
tovirt(r4,r4)
|
||||
#endif
|
||||
ld r4,0(r4) /* deref function descriptor */
|
||||
mtctr r4
|
||||
mr r3,r24
|
||||
/*
|
||||
* it may be the case that other platforms have r4 right to
|
||||
* begin with, this gives us some safety in case it is not
|
||||
*/
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
mr r4,r25
|
||||
#else
|
||||
li r4,0
|
||||
#endif
|
||||
/* Make sure that patched code is visible */
|
||||
isync
|
||||
bctr
|
||||
@ -169,6 +186,7 @@ _GLOBAL(generic_secondary_thread_init)
|
||||
|
||||
/* get a valid TOC pointer, wherever we're mapped at */
|
||||
bl .relative_toc
|
||||
tovirt(r2,r2)
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
/* Book3E initialization */
|
||||
@ -195,6 +213,7 @@ _GLOBAL(generic_secondary_smp_init)
|
||||
|
||||
/* get a valid TOC pointer, wherever we're mapped at */
|
||||
bl .relative_toc
|
||||
tovirt(r2,r2)
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3E
|
||||
/* Book3E initialization */
|
||||
@ -531,6 +550,7 @@ _GLOBAL(pmac_secondary_start)
|
||||
|
||||
/* get TOC pointer (real address) */
|
||||
bl .relative_toc
|
||||
tovirt(r2,r2)
|
||||
|
||||
/* Copy some CPU settings from CPU 0 */
|
||||
bl .__restore_cpu_ppc970
|
||||
@ -665,6 +685,13 @@ _GLOBAL(enable_64b_mode)
|
||||
* This puts the TOC pointer into r2, offset by 0x8000 (as expected
|
||||
* by the toolchain). It computes the correct value for wherever we
|
||||
* are running at the moment, using position-independent code.
|
||||
*
|
||||
* Note: The compiler constructs pointers using offsets from the
|
||||
* TOC in -mcmodel=medium mode. After we relocate to 0 but before
|
||||
* the MMU is on we need our TOC to be a virtual address otherwise
|
||||
* these pointers will be real addresses which may get stored and
|
||||
* accessed later with the MMU on. We use tovirt() at the call
|
||||
* sites to handle this.
|
||||
*/
|
||||
_GLOBAL(relative_toc)
|
||||
mflr r0
|
||||
@ -681,8 +708,9 @@ p_toc: .llong __toc_start + 0x8000 - 0b
|
||||
* This is where the main kernel code starts.
|
||||
*/
|
||||
_INIT_STATIC(start_here_multiplatform)
|
||||
/* set up the TOC (real address) */
|
||||
bl .relative_toc
|
||||
/* set up the TOC */
|
||||
bl .relative_toc
|
||||
tovirt(r2,r2)
|
||||
|
||||
/* Clear out the BSS. It may have been done in prom_init,
|
||||
* already but that's irrelevant since prom_init will soon
|
||||
|
@ -73,7 +73,7 @@ int arch_install_hw_breakpoint(struct perf_event *bp)
|
||||
* If so, DABR will be populated in single_step_dabr_instruction().
|
||||
*/
|
||||
if (current->thread.last_hit_ubp != bp)
|
||||
set_dabr(info->address | info->type | DABR_TRANSLATION, info->dabrx);
|
||||
set_breakpoint(info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -97,7 +97,7 @@ void arch_uninstall_hw_breakpoint(struct perf_event *bp)
|
||||
}
|
||||
|
||||
*slot = NULL;
|
||||
set_dabr(0, 0);
|
||||
hw_breakpoint_disable();
|
||||
}
|
||||
|
||||
/*
|
||||
@ -127,19 +127,13 @@ int arch_check_bp_in_kernelspace(struct perf_event *bp)
|
||||
|
||||
int arch_bp_generic_fields(int type, int *gen_bp_type)
|
||||
{
|
||||
switch (type) {
|
||||
case DABR_DATA_READ:
|
||||
*gen_bp_type = HW_BREAKPOINT_R;
|
||||
break;
|
||||
case DABR_DATA_WRITE:
|
||||
*gen_bp_type = HW_BREAKPOINT_W;
|
||||
break;
|
||||
case (DABR_DATA_WRITE | DABR_DATA_READ):
|
||||
*gen_bp_type = (HW_BREAKPOINT_W | HW_BREAKPOINT_R);
|
||||
break;
|
||||
default:
|
||||
*gen_bp_type = 0;
|
||||
if (type & HW_BRK_TYPE_READ)
|
||||
*gen_bp_type |= HW_BREAKPOINT_R;
|
||||
if (type & HW_BRK_TYPE_WRITE)
|
||||
*gen_bp_type |= HW_BREAKPOINT_W;
|
||||
if (*gen_bp_type == 0)
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -148,35 +142,28 @@ int arch_bp_generic_fields(int type, int *gen_bp_type)
|
||||
*/
|
||||
int arch_validate_hwbkpt_settings(struct perf_event *bp)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
int ret = -EINVAL, length_max;
|
||||
struct arch_hw_breakpoint *info = counter_arch_bp(bp);
|
||||
|
||||
if (!bp)
|
||||
return ret;
|
||||
|
||||
switch (bp->attr.bp_type) {
|
||||
case HW_BREAKPOINT_R:
|
||||
info->type = DABR_DATA_READ;
|
||||
break;
|
||||
case HW_BREAKPOINT_W:
|
||||
info->type = DABR_DATA_WRITE;
|
||||
break;
|
||||
case HW_BREAKPOINT_R | HW_BREAKPOINT_W:
|
||||
info->type = (DABR_DATA_READ | DABR_DATA_WRITE);
|
||||
break;
|
||||
default:
|
||||
info->type = HW_BRK_TYPE_TRANSLATE;
|
||||
if (bp->attr.bp_type & HW_BREAKPOINT_R)
|
||||
info->type |= HW_BRK_TYPE_READ;
|
||||
if (bp->attr.bp_type & HW_BREAKPOINT_W)
|
||||
info->type |= HW_BRK_TYPE_WRITE;
|
||||
if (info->type == HW_BRK_TYPE_TRANSLATE)
|
||||
/* must set alteast read or write */
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!(bp->attr.exclude_user))
|
||||
info->type |= HW_BRK_TYPE_USER;
|
||||
if (!(bp->attr.exclude_kernel))
|
||||
info->type |= HW_BRK_TYPE_KERNEL;
|
||||
if (!(bp->attr.exclude_hv))
|
||||
info->type |= HW_BRK_TYPE_HYP;
|
||||
info->address = bp->attr.bp_addr;
|
||||
info->len = bp->attr.bp_len;
|
||||
info->dabrx = DABRX_ALL;
|
||||
if (bp->attr.exclude_user)
|
||||
info->dabrx &= ~DABRX_USER;
|
||||
if (bp->attr.exclude_kernel)
|
||||
info->dabrx &= ~DABRX_KERNEL;
|
||||
if (bp->attr.exclude_hv)
|
||||
info->dabrx &= ~DABRX_HYP;
|
||||
|
||||
/*
|
||||
* Since breakpoint length can be a maximum of HW_BREAKPOINT_LEN(8)
|
||||
@ -184,8 +171,16 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
|
||||
* HW_BREAKPOINT_ALIGN by rounding off to the lower address, the
|
||||
* 'symbolsize' should satisfy the check below.
|
||||
*/
|
||||
length_max = 8; /* DABR */
|
||||
if (cpu_has_feature(CPU_FTR_DAWR)) {
|
||||
length_max = 512 ; /* 64 doublewords */
|
||||
/* DAWR region can't cross 512 boundary */
|
||||
if ((bp->attr.bp_addr >> 10) !=
|
||||
((bp->attr.bp_addr + bp->attr.bp_len) >> 10))
|
||||
return -EINVAL;
|
||||
}
|
||||
if (info->len >
|
||||
(HW_BREAKPOINT_LEN - (info->address & HW_BREAKPOINT_ALIGN)))
|
||||
(length_max - (info->address & HW_BREAKPOINT_ALIGN)))
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
@ -204,7 +199,7 @@ void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs)
|
||||
|
||||
info = counter_arch_bp(tsk->thread.last_hit_ubp);
|
||||
regs->msr &= ~MSR_SE;
|
||||
set_dabr(info->address | info->type | DABR_TRANSLATION, info->dabrx);
|
||||
set_breakpoint(info);
|
||||
tsk->thread.last_hit_ubp = NULL;
|
||||
}
|
||||
|
||||
@ -222,7 +217,7 @@ int __kprobes hw_breakpoint_handler(struct die_args *args)
|
||||
unsigned long dar = regs->dar;
|
||||
|
||||
/* Disable breakpoints during exception handling */
|
||||
set_dabr(0, 0);
|
||||
hw_breakpoint_disable();
|
||||
|
||||
/*
|
||||
* The counter may be concurrently released but that can only
|
||||
@ -255,8 +250,9 @@ int __kprobes hw_breakpoint_handler(struct die_args *args)
|
||||
* we still need to single-step the instruction, but we don't
|
||||
* generate an event.
|
||||
*/
|
||||
info->extraneous_interrupt = !((bp->attr.bp_addr <= dar) &&
|
||||
(dar - bp->attr.bp_addr < bp->attr.bp_len));
|
||||
if (!((bp->attr.bp_addr <= dar) &&
|
||||
(dar - bp->attr.bp_addr < bp->attr.bp_len)))
|
||||
info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;
|
||||
|
||||
/* Do not emulate user-space instructions, instead single-step them */
|
||||
if (user_mode(regs)) {
|
||||
@ -285,10 +281,10 @@ int __kprobes hw_breakpoint_handler(struct die_args *args)
|
||||
* As a policy, the callback is invoked in a 'trigger-after-execute'
|
||||
* fashion
|
||||
*/
|
||||
if (!info->extraneous_interrupt)
|
||||
if (!(info->type & HW_BRK_TYPE_EXTRANEOUS_IRQ))
|
||||
perf_bp_event(bp, regs);
|
||||
|
||||
set_dabr(info->address | info->type | DABR_TRANSLATION, info->dabrx);
|
||||
set_breakpoint(info);
|
||||
out:
|
||||
rcu_read_unlock();
|
||||
return rc;
|
||||
@ -317,10 +313,10 @@ int __kprobes single_step_dabr_instruction(struct die_args *args)
|
||||
* We shall invoke the user-defined callback function in the single
|
||||
* stepping handler to confirm to 'trigger-after-execute' semantics
|
||||
*/
|
||||
if (!info->extraneous_interrupt)
|
||||
if (!(info->type & HW_BRK_TYPE_EXTRANEOUS_IRQ))
|
||||
perf_bp_event(bp, regs);
|
||||
|
||||
set_dabr(info->address | info->type | DABR_TRANSLATION, info->dabrx);
|
||||
set_breakpoint(info);
|
||||
current->thread.last_hit_ubp = NULL;
|
||||
|
||||
/*
|
||||
|
@ -717,6 +717,13 @@ void iommu_free_table(struct iommu_table *tbl, const char *node_name)
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* In case we have reserved the first bit, we should not emit
|
||||
* the warning below.
|
||||
*/
|
||||
if (tbl->it_offset == 0)
|
||||
clear_bit(0, tbl->it_map);
|
||||
|
||||
/* verify that table contains no entries */
|
||||
if (!bitmap_empty(tbl->it_map, tbl->it_size))
|
||||
pr_warn("%s: Unexpected TCEs for %s\n", __func__, node_name);
|
||||
|
@ -122,8 +122,8 @@ static inline notrace int decrementer_check_overflow(void)
|
||||
}
|
||||
|
||||
/* This is called whenever we are re-enabling interrupts
|
||||
* and returns either 0 (nothing to do) or 500/900 if there's
|
||||
* either an EE or a DEC to generate.
|
||||
* and returns either 0 (nothing to do) or 500/900/280/a00/e80 if
|
||||
* there's an EE, DEC or DBELL to generate.
|
||||
*
|
||||
* This is called in two contexts: From arch_local_irq_restore()
|
||||
* before soft-enabling interrupts, and from the exception exit
|
||||
@ -182,6 +182,13 @@ notrace unsigned int __check_irq_replay(void)
|
||||
local_paca->irq_happened &= ~PACA_IRQ_DBELL;
|
||||
if (happened & PACA_IRQ_DBELL)
|
||||
return 0x280;
|
||||
#else
|
||||
local_paca->irq_happened &= ~PACA_IRQ_DBELL;
|
||||
if (happened & PACA_IRQ_DBELL) {
|
||||
if (cpu_has_feature(CPU_FTR_HVMODE))
|
||||
return 0xe80;
|
||||
return 0xa00;
|
||||
}
|
||||
#endif /* CONFIG_PPC_BOOK3E */
|
||||
|
||||
/* There should be nothing left ! */
|
||||
|
@ -199,7 +199,7 @@ static int kgdb_iabr_match(struct pt_regs *regs)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int kgdb_dabr_match(struct pt_regs *regs)
|
||||
static int kgdb_break_match(struct pt_regs *regs)
|
||||
{
|
||||
if (user_mode(regs))
|
||||
return 0;
|
||||
@ -459,7 +459,7 @@ static void *old__debugger;
|
||||
static void *old__debugger_bpt;
|
||||
static void *old__debugger_sstep;
|
||||
static void *old__debugger_iabr_match;
|
||||
static void *old__debugger_dabr_match;
|
||||
static void *old__debugger_break_match;
|
||||
static void *old__debugger_fault_handler;
|
||||
|
||||
int kgdb_arch_init(void)
|
||||
@ -469,7 +469,7 @@ int kgdb_arch_init(void)
|
||||
old__debugger_bpt = __debugger_bpt;
|
||||
old__debugger_sstep = __debugger_sstep;
|
||||
old__debugger_iabr_match = __debugger_iabr_match;
|
||||
old__debugger_dabr_match = __debugger_dabr_match;
|
||||
old__debugger_break_match = __debugger_break_match;
|
||||
old__debugger_fault_handler = __debugger_fault_handler;
|
||||
|
||||
__debugger_ipi = kgdb_call_nmi_hook;
|
||||
@ -477,7 +477,7 @@ int kgdb_arch_init(void)
|
||||
__debugger_bpt = kgdb_handle_breakpoint;
|
||||
__debugger_sstep = kgdb_singlestep;
|
||||
__debugger_iabr_match = kgdb_iabr_match;
|
||||
__debugger_dabr_match = kgdb_dabr_match;
|
||||
__debugger_break_match = kgdb_break_match;
|
||||
__debugger_fault_handler = kgdb_not_implemented;
|
||||
|
||||
return 0;
|
||||
@ -490,6 +490,6 @@ void kgdb_arch_exit(void)
|
||||
__debugger_bpt = old__debugger_bpt;
|
||||
__debugger_sstep = old__debugger_sstep;
|
||||
__debugger_iabr_match = old__debugger_iabr_match;
|
||||
__debugger_dabr_match = old__debugger_dabr_match;
|
||||
__debugger_break_match = old__debugger_break_match;
|
||||
__debugger_fault_handler = old__debugger_fault_handler;
|
||||
}
|
||||
|
@ -162,6 +162,8 @@ static int kexec_all_irq_disabled = 0;
|
||||
static void kexec_smp_down(void *arg)
|
||||
{
|
||||
local_irq_disable();
|
||||
hard_irq_disable();
|
||||
|
||||
mb(); /* make sure our irqs are disabled before we say they are */
|
||||
get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF;
|
||||
while(kexec_all_irq_disabled == 0)
|
||||
@ -244,6 +246,8 @@ static void kexec_prepare_cpus(void)
|
||||
wake_offline_cpus();
|
||||
smp_call_function(kexec_smp_down, NULL, /* wait */0);
|
||||
local_irq_disable();
|
||||
hard_irq_disable();
|
||||
|
||||
mb(); /* make sure IRQs are disabled before we say they are */
|
||||
get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF;
|
||||
|
||||
@ -281,6 +285,7 @@ static void kexec_prepare_cpus(void)
|
||||
if (ppc_md.kexec_cpu_down)
|
||||
ppc_md.kexec_cpu_down(0, 0);
|
||||
local_irq_disable();
|
||||
hard_irq_disable();
|
||||
}
|
||||
|
||||
#endif /* SMP */
|
||||
|
@ -386,6 +386,14 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
|
||||
| (value & 0xffff);
|
||||
break;
|
||||
|
||||
case R_PPC64_TOC16_LO:
|
||||
/* Subtract TOC pointer */
|
||||
value -= my_r2(sechdrs, me);
|
||||
*((uint16_t *) location)
|
||||
= (*((uint16_t *) location) & ~0xffff)
|
||||
| (value & 0xffff);
|
||||
break;
|
||||
|
||||
case R_PPC64_TOC16_DS:
|
||||
/* Subtract TOC pointer */
|
||||
value -= my_r2(sechdrs, me);
|
||||
@ -399,6 +407,28 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
|
||||
| (value & 0xfffc);
|
||||
break;
|
||||
|
||||
case R_PPC64_TOC16_LO_DS:
|
||||
/* Subtract TOC pointer */
|
||||
value -= my_r2(sechdrs, me);
|
||||
if ((value & 3) != 0) {
|
||||
printk("%s: bad TOC16_LO_DS relocation (%lu)\n",
|
||||
me->name, value);
|
||||
return -ENOEXEC;
|
||||
}
|
||||
*((uint16_t *) location)
|
||||
= (*((uint16_t *) location) & ~0xfffc)
|
||||
| (value & 0xfffc);
|
||||
break;
|
||||
|
||||
case R_PPC64_TOC16_HA:
|
||||
/* Subtract TOC pointer */
|
||||
value -= my_r2(sechdrs, me);
|
||||
value = ((value + 0x8000) >> 16);
|
||||
*((uint16_t *) location)
|
||||
= (*((uint16_t *) location) & ~0xffff)
|
||||
| (value & 0xffff);
|
||||
break;
|
||||
|
||||
case R_PPC_REL24:
|
||||
/* FIXME: Handle weak symbols here --RR */
|
||||
if (sym->st_shndx == SHN_UNDEF) {
|
||||
|
@ -71,10 +71,8 @@ static int of_pci_phb_probe(struct platform_device *dev)
|
||||
eeh_dev_phb_init_dynamic(phb);
|
||||
|
||||
/* Register devices with EEH */
|
||||
#ifdef CONFIG_EEH
|
||||
if (dev->dev.of_node->child)
|
||||
eeh_add_device_tree_early(dev->dev.of_node);
|
||||
#endif /* CONFIG_EEH */
|
||||
|
||||
/* Scan the bus */
|
||||
pcibios_scan_phb(phb);
|
||||
@ -88,13 +86,14 @@ static int of_pci_phb_probe(struct platform_device *dev)
|
||||
pcibios_claim_one_bus(phb->bus);
|
||||
|
||||
/* Finish EEH setup */
|
||||
#ifdef CONFIG_EEH
|
||||
eeh_add_device_tree_late(phb->bus);
|
||||
#endif
|
||||
|
||||
/* Add probed PCI devices to the device model */
|
||||
pci_bus_add_devices(phb->bus);
|
||||
|
||||
/* sysfs files should only be added after devices are added */
|
||||
eeh_add_sysfs_files(phb->bus);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -120,8 +120,6 @@ struct slb_shadow slb_shadow[] __cacheline_aligned = {
|
||||
struct paca_struct *paca;
|
||||
EXPORT_SYMBOL(paca);
|
||||
|
||||
struct paca_struct boot_paca;
|
||||
|
||||
void __init initialise_paca(struct paca_struct *new_paca, int cpu)
|
||||
{
|
||||
/* The TOC register (GPR2) points 32kB into the TOC, so that 64kB
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user