forked from Minki/linux
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS updates from Ralf Baechle: "Boston platform support: - Document DT bindings - Add CLK driver for board clocks CM: - Avoid per-core locking with CM3 & higher - WARN on attempt to lock invalid VP, not BUG CPS: - Select CONFIG_SYS_SUPPORTS_SCHED_SMT for MIPSr6 - Prevent multi-core with dcache aliasing - Handle cores not powering down more gracefully - Handle spurious VP starts more gracefully DSP: - Add lwx & lhx missaligned access support eBPF: - Add MIPS support along with many supporting change to add the required infrastructure Generic arch code: - Misc sysmips MIPS_ATOMIC_SET fixes - Drop duplicate HAVE_SYSCALL_TRACEPOINTS - Negate error syscall return in trace - Correct forced syscall errors - Traced negative syscalls should return -ENOSYS - Allow samples/bpf/tracex5 to access syscall arguments for sane traces - Cleanup from old Kconfig options in defconfigs - Fix PREF instruction usage by memcpy for MIPS R6 - Fix various special cases in the FPU eulation - Fix some special cases in MIPS16e2 support - Fix MIPS I ISA /proc/cpuinfo reporting - Sort MIPS Kconfig alphabetically - Fix minimum alignment requirement of IRQ stack as required by ABI / GCC - Fix special cases in the module loader - Perform post-DMA cache flushes on systems with MAARs - Probe the I6500 CPU - Cleanup cmpxchg and add support for 1 and 2 byte operations - Use queued read/write locks (qrwlock) - Use queued spinlocks (qspinlock) - Add CPU shared FTLB feature detection - Handle tlbex-tlbp race condition - Allow storing pgd in C0_CONTEXT for MIPSr6 - Use current_cpu_type() in m4kc_tlbp_war() - Support Boston in the generic kernel Generic platform: - yamon-dt: Pull YAMON DT shim code out of SEAD-3 board - yamon-dt: Support > 256MB of RAM - yamon-dt: Use serial* rather than uart* aliases - Abstract FDT fixup application - Set RTC_ALWAYS_BCD to 0 - Add a MAINTAINERS entry core kernel: - qspinlock.c: include linux/prefetch.h Loongson 3: - Add support Perf: - Add I6500 support SEAD-3: - Remove GIC timer from DT - Set interrupt-parent per-device, not at root node - Fix GIC interrupt specifiers SMP: - Skip IPI setup if we only have a single CPU VDSO: - Make comment match reality - Improvements to time code in VDSO" * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (86 commits) locking/qspinlock: Include linux/prefetch.h MIPS: Fix MIPS I ISA /proc/cpuinfo reporting MIPS: Fix minimum alignment requirement of IRQ stack MIPS: generic: Support MIPS Boston development boards MIPS: DTS: img: Don't attempt to build-in all .dtb files clk: boston: Add a driver for MIPS Boston board clocks dt-bindings: Document img,boston-clock binding MIPS: Traced negative syscalls should return -ENOSYS MIPS: Correct forced syscall errors MIPS: Negate error syscall return in trace MIPS: Drop duplicate HAVE_SYSCALL_TRACEPOINTS select MIPS16e2: Provide feature overrides for non-MIPS16 systems MIPS: MIPS16e2: Report ASE presence in /proc/cpuinfo MIPS: MIPS16e2: Subdecode extended LWSP/SWSP instructions MIPS: MIPS16e2: Identify ASE presence MIPS: VDSO: Fix a mismatch between comment and preprocessor constant MIPS: VDSO: Add implementation of gettimeofday() fallback MIPS: VDSO: Add implementation of clock_gettime() fallback MIPS: VDSO: Fix conversions in do_monotonic()/do_monotonic_coarse() MIPS: Use current_cpu_type() in m4kc_tlbp_war() ...
This commit is contained in:
commit
568d135d33
31
Documentation/devicetree/bindings/clock/img,boston-clock.txt
Normal file
31
Documentation/devicetree/bindings/clock/img,boston-clock.txt
Normal file
@ -0,0 +1,31 @@
|
||||
Binding for Imagination Technologies MIPS Boston clock sources.
|
||||
|
||||
This binding uses the common clock binding[1].
|
||||
|
||||
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||
|
||||
The device node must be a child node of the syscon node corresponding to the
|
||||
Boston system's platform registers.
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "img,boston-clock".
|
||||
- #clock-cells : Should be set to 1.
|
||||
Values available for clock consumers can be found in the header file:
|
||||
<dt-bindings/clock/boston-clock.h>
|
||||
|
||||
Example:
|
||||
|
||||
system-controller@17ffd000 {
|
||||
compatible = "img,boston-platform-regs", "syscon";
|
||||
reg = <0x17ffd000 0x1000>;
|
||||
|
||||
clk_boston: clock {
|
||||
compatible = "img,boston-clock";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
uart0: uart@17ffe000 {
|
||||
/* ... */
|
||||
clocks = <&clk_boston BOSTON_CLK_SYS>;
|
||||
};
|
16
MAINTAINERS
16
MAINTAINERS
@ -8732,6 +8732,12 @@ F: Documentation/devicetree/bindings/mips/
|
||||
F: Documentation/mips/
|
||||
F: arch/mips/
|
||||
|
||||
MIPS GENERIC PLATFORM
|
||||
M: Paul Burton <paul.burton@imgtec.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Supported
|
||||
F: arch/mips/generic/
|
||||
|
||||
MIPS/LOONGSON1 ARCHITECTURE
|
||||
M: Keguang Zhang <keguang.zhang@gmail.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
@ -8741,6 +8747,16 @@ F: arch/mips/include/asm/mach-loongson32/
|
||||
F: drivers/*/*loongson1*
|
||||
F: drivers/*/*/*loongson1*
|
||||
|
||||
MIPS BOSTON DEVELOPMENT BOARD
|
||||
M: Paul Burton <paul.burton@imgtec.com>
|
||||
L: linux-mips@linux-mips.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
|
||||
F: arch/mips/boot/dts/img/boston.dts
|
||||
F: arch/mips/configs/generic/board-boston.config
|
||||
F: drivers/clk/imgtec/clk-boston.c
|
||||
F: include/dt-bindings/clock/boston-clock.h
|
||||
|
||||
MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
|
||||
M: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
L: linux-media@vger.kernel.org
|
||||
|
@ -1,75 +1,77 @@
|
||||
config MIPS
|
||||
bool
|
||||
default y
|
||||
select ARCH_SUPPORTS_UPROBES
|
||||
select ARCH_BINFMT_ELF_STATE
|
||||
select ARCH_CLOCKSOURCE_DATA
|
||||
select ARCH_DISCARD_MEMBLOCK
|
||||
select ARCH_HAS_ELF_RANDOMIZE
|
||||
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
||||
select ARCH_MIGHT_HAVE_PC_PARPORT
|
||||
select ARCH_MIGHT_HAVE_PC_SERIO
|
||||
select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
|
||||
select ARCH_SUPPORTS_UPROBES
|
||||
select ARCH_USE_BUILTIN_BSWAP
|
||||
select HAVE_CONTEXT_TRACKING
|
||||
select HAVE_GENERIC_DMA_COHERENT
|
||||
select HAVE_IDE
|
||||
select HAVE_IRQ_EXIT_ON_IRQ_STACK
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_PERF_EVENTS
|
||||
select PERF_USE_VMALLOC
|
||||
select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
|
||||
select ARCH_USE_QUEUED_RWLOCKS
|
||||
select ARCH_USE_QUEUED_SPINLOCKS
|
||||
select ARCH_WANT_IPC_PARSE_VERSION
|
||||
select BUILDTIME_EXTABLE_SORT
|
||||
select CLONE_BACKWARDS
|
||||
select CPU_PM if CPU_IDLE
|
||||
select GENERIC_ATOMIC64 if !64BIT
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select GENERIC_CMOS_UPDATE
|
||||
select GENERIC_CPU_AUTOPROBE
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_IRQ_SHOW
|
||||
select GENERIC_PCI_IOMAP
|
||||
select GENERIC_SCHED_CLOCK if !CAVIUM_OCTEON_SOC
|
||||
select GENERIC_SMP_IDLE_THREAD
|
||||
select GENERIC_TIME_VSYSCALL
|
||||
select HANDLE_DOMAIN_IRQ
|
||||
select HAVE_ARCH_JUMP_LABEL
|
||||
select HAVE_ARCH_KGDB
|
||||
select HAVE_ARCH_MMAP_RND_BITS if MMU
|
||||
select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT
|
||||
select HAVE_ARCH_SECCOMP_FILTER
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_CBPF_JIT if !CPU_MICROMIPS
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_DYNAMIC_FTRACE
|
||||
select HAVE_FTRACE_MCOUNT_RECORD
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
|
||||
select HAVE_CBPF_JIT if (!64BIT && !CPU_MICROMIPS)
|
||||
select HAVE_EBPF_JIT if (64BIT && !CPU_MICROMIPS)
|
||||
select HAVE_CC_STACKPROTECTOR
|
||||
select HAVE_CONTEXT_TRACKING
|
||||
select HAVE_COPY_THREAD_TLS
|
||||
select HAVE_C_RECORDMCOUNT
|
||||
select HAVE_DEBUG_KMEMLEAK
|
||||
select HAVE_DEBUG_STACKOVERFLOW
|
||||
select HAVE_DMA_API_DEBUG
|
||||
select HAVE_DMA_CONTIGUOUS
|
||||
select HAVE_DYNAMIC_FTRACE
|
||||
select HAVE_EXIT_THREAD
|
||||
select HAVE_FTRACE_MCOUNT_RECORD
|
||||
select HAVE_FUNCTION_GRAPH_TRACER
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_GENERIC_DMA_COHERENT
|
||||
select HAVE_IDE
|
||||
select HAVE_IRQ_EXIT_ON_IRQ_STACK
|
||||
select HAVE_IRQ_TIME_ACCOUNTING
|
||||
select HAVE_KPROBES
|
||||
select HAVE_KRETPROBES
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select HAVE_DEBUG_KMEMLEAK
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select ARCH_HAS_ELF_RANDOMIZE
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
|
||||
select RTC_LIB if !MACH_LOONGSON64
|
||||
select GENERIC_ATOMIC64 if !64BIT
|
||||
select HAVE_DMA_CONTIGUOUS
|
||||
select HAVE_DMA_API_DEBUG
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_IRQ_SHOW
|
||||
select GENERIC_PCI_IOMAP
|
||||
select HAVE_ARCH_JUMP_LABEL
|
||||
select ARCH_WANT_IPC_PARSE_VERSION
|
||||
select IRQ_FORCED_THREADING
|
||||
select HAVE_MEMBLOCK
|
||||
select HAVE_MEMBLOCK_NODE_MAP
|
||||
select ARCH_DISCARD_MEMBLOCK
|
||||
select GENERIC_SMP_IDLE_THREAD
|
||||
select BUILDTIME_EXTABLE_SORT
|
||||
select GENERIC_CPU_AUTOPROBE
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select GENERIC_SCHED_CLOCK if !CAVIUM_OCTEON_SOC
|
||||
select GENERIC_CMOS_UPDATE
|
||||
select HAVE_MOD_ARCH_SPECIFIC
|
||||
select HAVE_NMI
|
||||
select VIRT_TO_BUS
|
||||
select MODULES_USE_ELF_REL if MODULES
|
||||
select MODULES_USE_ELF_RELA if MODULES && 64BIT
|
||||
select CLONE_BACKWARDS
|
||||
select HAVE_DEBUG_STACKOVERFLOW
|
||||
select HAVE_CC_STACKPROTECTOR
|
||||
select CPU_PM if CPU_IDLE
|
||||
select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
|
||||
select ARCH_BINFMT_ELF_STATE
|
||||
select SYSCTL_EXCEPTION_TRACE
|
||||
select HAVE_VIRT_CPU_ACCOUNTING_GEN
|
||||
select HAVE_IRQ_TIME_ACCOUNTING
|
||||
select GENERIC_TIME_VSYSCALL
|
||||
select ARCH_CLOCKSOURCE_DATA
|
||||
select HANDLE_DOMAIN_IRQ
|
||||
select HAVE_EXIT_THREAD
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_PERF_EVENTS
|
||||
select HAVE_REGS_AND_STACK_ACCESS_API
|
||||
select HAVE_COPY_THREAD_TLS
|
||||
select HAVE_SYSCALL_TRACEPOINTS
|
||||
select HAVE_VIRT_CPU_ACCOUNTING_GEN
|
||||
select IRQ_FORCED_THREADING
|
||||
select MODULES_USE_ELF_RELA if MODULES && 64BIT
|
||||
select MODULES_USE_ELF_REL if MODULES
|
||||
select PERF_USE_VMALLOC
|
||||
select RTC_LIB if !MACH_LOONGSON64
|
||||
select SYSCTL_EXCEPTION_TRACE
|
||||
select VIRT_TO_BUS
|
||||
|
||||
menu "Machine selection"
|
||||
|
||||
@ -1179,6 +1181,15 @@ config SYS_SUPPORTS_RELOCATABLE
|
||||
The platform must provide plat_get_fdt() if it selects CONFIG_USE_OF
|
||||
to allow access to command line and entropy sources.
|
||||
|
||||
config MIPS_CBPF_JIT
|
||||
def_bool y
|
||||
depends on BPF_JIT && HAVE_CBPF_JIT
|
||||
|
||||
config MIPS_EBPF_JIT
|
||||
def_bool y
|
||||
depends on BPF_JIT && HAVE_EBPF_JIT
|
||||
|
||||
|
||||
#
|
||||
# Endianness selection. Sufficiently obscure so many users don't know what to
|
||||
# answer,so we try hard to limit the available choices. Also the use of a
|
||||
@ -2062,7 +2073,7 @@ config CPU_SUPPORTS_UNCACHED_ACCELERATED
|
||||
bool
|
||||
config MIPS_PGD_C0_CONTEXT
|
||||
bool
|
||||
default y if 64BIT && CPU_MIPSR2 && !CPU_XLP
|
||||
default y if 64BIT && (CPU_MIPSR2 || CPU_MIPSR6) && !CPU_XLP
|
||||
|
||||
#
|
||||
# Set to y for ptrace access to watch registers.
|
||||
@ -2370,6 +2381,7 @@ config MIPS_CPS
|
||||
select SMP
|
||||
select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
|
||||
select SYS_SUPPORTS_HOTPLUG_CPU
|
||||
select SYS_SUPPORTS_SCHED_SMT if CPU_MIPSR6
|
||||
select SYS_SUPPORTS_SMP
|
||||
select WEAK_ORDERING
|
||||
help
|
||||
|
@ -160,7 +160,7 @@ cflags-$(CONFIG_CPU_MIPS32_R1) += $(call cc-option,-march=mips32,-mips32 -U_MIPS
|
||||
-Wa,-mips32 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_MIPS32_R2) += $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
|
||||
-Wa,-mips32r2 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_MIPS32_R6) += -march=mips32r6 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_MIPS32_R6) += -march=mips32r6 -Wa,--trap -modd-spreg
|
||||
cflags-$(CONFIG_CPU_MIPS64_R1) += $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
|
||||
-Wa,-mips64 -Wa,--trap
|
||||
cflags-$(CONFIG_CPU_MIPS64_R2) += $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
|
||||
|
@ -1,6 +1,7 @@
|
||||
dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb
|
||||
dtb-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += boston.dtb
|
||||
|
||||
obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
|
||||
dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb
|
||||
obj-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb.o
|
||||
|
||||
# Force kbuild to make empty built-in.o if necessary
|
||||
obj- += dummy.o
|
||||
|
224
arch/mips/boot/dts/img/boston.dts
Normal file
224
arch/mips/boot/dts/img/boston.dts
Normal file
@ -0,0 +1,224 @@
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/clock/boston-clock.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/mips-gic.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "img,boston";
|
||||
|
||||
chosen {
|
||||
stdout-path = "uart0:115200";
|
||||
};
|
||||
|
||||
aliases {
|
||||
uart0 = &uart0;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "img,mips";
|
||||
reg = <0>;
|
||||
clocks = <&clk_boston BOSTON_CLK_CPU>;
|
||||
};
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>;
|
||||
};
|
||||
|
||||
pci0: pci@10000000 {
|
||||
compatible = "xlnx,axi-pcie-host-1.00.a";
|
||||
device_type = "pci";
|
||||
reg = <0x10000000 0x2000000>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
ranges = <0x02000000 0 0x40000000
|
||||
0x40000000 0 0x40000000>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pci0_intc 1>,
|
||||
<0 0 0 2 &pci0_intc 2>,
|
||||
<0 0 0 3 &pci0_intc 3>,
|
||||
<0 0 0 4 &pci0_intc 4>;
|
||||
|
||||
pci0_intc: interrupt-controller {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
pci1: pci@12000000 {
|
||||
compatible = "xlnx,axi-pcie-host-1.00.a";
|
||||
device_type = "pci";
|
||||
reg = <0x12000000 0x2000000>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
ranges = <0x02000000 0 0x20000000
|
||||
0x20000000 0 0x20000000>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pci1_intc 1>,
|
||||
<0 0 0 2 &pci1_intc 2>,
|
||||
<0 0 0 3 &pci1_intc 3>,
|
||||
<0 0 0 4 &pci1_intc 4>;
|
||||
|
||||
pci1_intc: interrupt-controller {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
pci2: pci@14000000 {
|
||||
compatible = "xlnx,axi-pcie-host-1.00.a";
|
||||
device_type = "pci";
|
||||
reg = <0x14000000 0x2000000>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 0 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
ranges = <0x02000000 0 0x16000000
|
||||
0x16000000 0 0x100000>;
|
||||
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pci2_intc 1>,
|
||||
<0 0 0 2 &pci2_intc 2>,
|
||||
<0 0 0 3 &pci2_intc 3>,
|
||||
<0 0 0 4 &pci2_intc 4>;
|
||||
|
||||
pci2_intc: interrupt-controller {
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
|
||||
pci2_root@0,0,0 {
|
||||
compatible = "pci10ee,7021";
|
||||
reg = <0x00000000 0 0 0 0>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
eg20t_bridge@1,0,0 {
|
||||
compatible = "pci8086,8800";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
eg20t_mac@2,0,1 {
|
||||
compatible = "pci8086,8802";
|
||||
reg = <0x00020100 0 0 0 0>;
|
||||
phy-reset-gpios = <&eg20t_gpio 6
|
||||
GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
eg20t_gpio: eg20t_gpio@2,0,2 {
|
||||
compatible = "pci8086,8803";
|
||||
reg = <0x00020200 0 0 0 0>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
eg20t_i2c@2,12,2 {
|
||||
compatible = "pci8086,8817";
|
||||
reg = <0x00026200 0 0 0 0>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
rtc@0x68 {
|
||||
compatible = "st,m41t81s";
|
||||
reg = <0x68>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@16120000 {
|
||||
compatible = "mti,gic";
|
||||
reg = <0x16120000 0x20000>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
|
||||
timer {
|
||||
compatible = "mti,gic-timer";
|
||||
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
|
||||
clocks = <&clk_boston BOSTON_CLK_CPU>;
|
||||
};
|
||||
};
|
||||
|
||||
cdmm@16140000 {
|
||||
compatible = "mti,mips-cdmm";
|
||||
reg = <0x16140000 0x8000>;
|
||||
};
|
||||
|
||||
cpc@16200000 {
|
||||
compatible = "mti,mips-cpc";
|
||||
reg = <0x16200000 0x8000>;
|
||||
};
|
||||
|
||||
plat_regs: system-controller@17ffd000 {
|
||||
compatible = "img,boston-platform-regs", "syscon";
|
||||
reg = <0x17ffd000 0x1000>;
|
||||
|
||||
clk_boston: clock {
|
||||
compatible = "img,boston-clock";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
reboot: syscon-reboot {
|
||||
compatible = "syscon-reboot";
|
||||
regmap = <&plat_regs>;
|
||||
offset = <0x10>;
|
||||
mask = <0x10>;
|
||||
};
|
||||
|
||||
uart0: uart@17ffe000 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0x17ffe000 0x1000>;
|
||||
reg-shift = <2>;
|
||||
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
clocks = <&clk_boston BOSTON_CLK_SYS>;
|
||||
};
|
||||
|
||||
lcd: lcd@17fff000 {
|
||||
compatible = "img,boston-lcd";
|
||||
reg = <0x17fff000 0x8>;
|
||||
};
|
||||
};
|
@ -11,15 +11,14 @@
|
||||
#size-cells = <1>;
|
||||
compatible = "mti,sead-3";
|
||||
model = "MIPS SEAD-3";
|
||||
interrupt-parent = <&gic>;
|
||||
|
||||
chosen {
|
||||
stdout-path = "uart1:115200";
|
||||
stdout-path = "serial1:115200";
|
||||
};
|
||||
|
||||
aliases {
|
||||
uart0 = &uart0;
|
||||
uart1 = &uart1;
|
||||
serial0 = &uart0;
|
||||
serial1 = &uart1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
@ -54,18 +53,14 @@
|
||||
* controller & should be probed first.
|
||||
*/
|
||||
interrupt-parent = <&cpu_intc>;
|
||||
|
||||
timer {
|
||||
compatible = "mti,gic-timer";
|
||||
interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>;
|
||||
};
|
||||
};
|
||||
|
||||
ehci@1b200000 {
|
||||
compatible = "generic-ehci";
|
||||
reg = <0x1b200000 0x1000>;
|
||||
|
||||
interrupts = <0>; /* GIC 0 or CPU 6 */
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 0 IRQ_TYPE_LEVEL_HIGH>; /* GIC 0 or CPU 6 */
|
||||
|
||||
has-transaction-translator;
|
||||
};
|
||||
@ -227,7 +222,8 @@
|
||||
|
||||
clock-frequency = <14745600>;
|
||||
|
||||
interrupts = <3>; /* GIC 3 or CPU 4 */
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>; /* GIC 3 or CPU 4 */
|
||||
|
||||
no-loopback-test;
|
||||
};
|
||||
@ -241,7 +237,8 @@
|
||||
|
||||
clock-frequency = <14745600>;
|
||||
|
||||
interrupts = <2>; /* GIC 2 or CPU 4 */
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>; /* GIC 2 or CPU 4 */
|
||||
|
||||
no-loopback-test;
|
||||
};
|
||||
@ -251,7 +248,8 @@
|
||||
reg = <0x1f010000 0x10000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
interrupts = <0>; /* GIC 0 or CPU 6 */
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <GIC_SHARED 0 IRQ_TYPE_LEVEL_HIGH>; /* GIC 0 or CPU 6 */
|
||||
|
||||
phy-mode = "mii";
|
||||
smsc,irq-push-pull;
|
||||
|
@ -3,7 +3,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_KERNEL_LZMA=y
|
||||
CONFIG_SYSVIPC=y
|
||||
@ -41,7 +40,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
# CONFIG_TCP_CONG_BIC is not set
|
||||
@ -86,7 +84,6 @@ CONFIG_MAC80211_RC_DEFAULT_PID=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
@ -99,8 +96,6 @@ CONFIG_FIXED_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_CPMAC=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_MULTILINK=y
|
||||
CONFIG_PPP_FILTER=y
|
||||
@ -142,7 +137,6 @@ CONFIG_BSD_DISKLABEL=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="rootfstype=squashfs,jffs2"
|
||||
CONFIG_CRYPTO=y
|
||||
|
@ -7,7 +7,6 @@ CONFIG_ATH79_MACH_PB44=y
|
||||
CONFIG_ATH79_MACH_UBNT_XM=y
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
@ -35,7 +34,6 @@ CONFIG_IP_ADVANCED_ROUTER=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_CFG80211=m
|
||||
CONFIG_MAC80211=m
|
||||
|
@ -5,7 +5,6 @@ CONFIG_BCM63XX_CPU_6348=y
|
||||
CONFIG_BCM63XX_CPU_6358=y
|
||||
CONFIG_NO_HZ=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_TINY_RCU=y
|
||||
@ -33,7 +32,6 @@ CONFIG_INET=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_CFG80211=y
|
||||
@ -50,13 +48,10 @@ CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
# CONFIG_BLK_DEV is not set
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BCM63XX_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_BCM63XX_ENET=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_B43=y
|
||||
# CONFIG_B43_PHY_LP is not set
|
||||
# CONFIG_INPUT is not set
|
||||
@ -70,7 +65,6 @@ CONFIG_SERIAL_BCM63XX_CONSOLE=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_ARB is not set
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
@ -84,7 +78,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0,115200"
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
|
@ -4,7 +4,6 @@ CONFIG_SMP=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -60,7 +59,6 @@ CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
@ -182,7 +180,6 @@ CONFIG_QUOTA=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
CONFIG_QFMT_V2=m
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=m
|
||||
@ -284,7 +281,6 @@ CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ZLIB=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRC_T10DIF=m
|
||||
CONFIG_CRC7=m
|
||||
|
@ -23,7 +23,6 @@ CONFIG_INET=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_ZAO_CAPCELLA=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
@ -46,8 +45,6 @@ CONFIG_SMSC_PHY=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_8139TOO=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
@ -59,7 +56,6 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
CONFIG_GPIO_VR41XX=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_VR41XX=y
|
||||
|
@ -42,7 +42,6 @@ CONFIG_IP_MROUTE=y
|
||||
CONFIG_IP_PIMSM_V1=y
|
||||
CONFIG_IP_PIMSM_V2=y
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_IPV6=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
|
@ -41,7 +41,6 @@ CONFIG_INET=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
|
@ -1,5 +1,4 @@
|
||||
CONFIG_MIPS_COBALT=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_RELAY=y
|
||||
@ -15,17 +14,14 @@ CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_NET_KEY_MIGRATE=y
|
||||
CONFIG_INET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_RAID_ATTRS=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
@ -36,8 +32,6 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_TULIP=y
|
||||
CONFIG_DE2104X=y
|
||||
CONFIG_TULIP=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
@ -56,7 +50,6 @@ CONFIG_FB_COBALT=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_HID=m
|
||||
CONFIG_USB=m
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
@ -84,6 +77,5 @@ CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CRC16=y
|
||||
CONFIG_LIBCRC32C=y
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_DECSTATION=y
|
||||
CONFIG_CPU_R3000=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_CASIO_E55=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
@ -28,7 +27,6 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
CONFIG_GPIO_VR41XX=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_VR41XX=y
|
||||
|
@ -3,7 +3,6 @@ CONFIG_64BIT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_LOCALVERSION="-fuloong2e"
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
@ -47,7 +46,6 @@ CONFIG_NET_IPGRE=m
|
||||
CONFIG_NET_IPGRE_BROADCAST=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETFILTER=y
|
||||
@ -79,7 +77,6 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TIME=m
|
||||
CONFIG_NETFILTER_XT_MATCH_U32=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
@ -88,7 +85,6 @@ 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_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
@ -101,7 +97,6 @@ CONFIG_NET_9P=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_FW_LOADER=m
|
||||
CONFIG_MTD=m
|
||||
CONFIG_MTD_CHAR=m
|
||||
CONFIG_MTD_BLOCK=m
|
||||
CONFIG_MTD_CFI=m
|
||||
CONFIG_MTD_JEDECPROBE=m
|
||||
@ -163,7 +158,6 @@ CONFIG_I2C=m
|
||||
CONFIG_I2C_CHARDEV=m
|
||||
CONFIG_I2C_VIAPRO=m
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_RADEON=y
|
||||
# CONFIG_FB_RADEON_I2C is not set
|
||||
@ -184,7 +178,6 @@ CONFIG_USB_KBD=y
|
||||
CONFIG_USB_MOUSE=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_OTG_WHITELIST=y
|
||||
CONFIG_USB_WUSB_CBAF=m
|
||||
CONFIG_USB_C67X00_HCD=m
|
||||
@ -201,7 +194,6 @@ CONFIG_USB_TMC=m
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
CONFIG_USB_SEVSEG=m
|
||||
CONFIG_USB_ISIGHTFW=m
|
||||
CONFIG_UIO=m
|
||||
@ -215,7 +207,6 @@ CONFIG_EXT4_FS=m
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_ISO9660_FS=m
|
||||
@ -256,8 +247,6 @@ CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_NLS_UTF8=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_AUTHENC=m
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
|
48
arch/mips/configs/generic/board-boston.config
Normal file
48
arch/mips/configs/generic/board-boston.config
Normal file
@ -0,0 +1,48 @@
|
||||
CONFIG_FIT_IMAGE_FDT_BOSTON=y
|
||||
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
|
||||
CONFIG_AUXDISPLAY=y
|
||||
CONFIG_IMG_ASCII_LCD=y
|
||||
|
||||
CONFIG_COMMON_CLK_BOSTON=y
|
||||
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_PCH_DMA=y
|
||||
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_PCH=y
|
||||
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_EG20T=y
|
||||
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PCI=y
|
||||
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_PCH_GBE=y
|
||||
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCIE_XILINX=y
|
||||
|
||||
CONFIG_PCH_PHUB=y
|
||||
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_M41T80=y
|
||||
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_TOPCLIFF_PCH=y
|
||||
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
@ -2,7 +2,6 @@ CONFIG_MIPS_ALCHEMY=y
|
||||
CONFIG_MIPS_GPR=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -59,7 +58,6 @@ CONFIG_NETFILTER_XT_MATCH_REALM=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STRING=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
@ -68,7 +66,6 @@ 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_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
@ -166,7 +163,6 @@ CONFIG_YAM=m
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
@ -200,8 +196,6 @@ CONFIG_SMSC_PHY=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_MIPS_AU1X00_ENET=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_ATH_COMMON=y
|
||||
CONFIG_ATH_DEBUG=y
|
||||
CONFIG_ATH5K=y
|
||||
@ -286,14 +280,12 @@ CONFIG_USB_HIDDEV=y
|
||||
CONFIG_USB_KBD=m
|
||||
CONFIG_USB_MOUSE=m
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_MON=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_STORAGE=m
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
CONFIG_USB_SERIAL=y
|
||||
CONFIG_USB_EZUSB=y
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
|
@ -4,7 +4,6 @@ CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
@ -46,7 +45,6 @@ CONFIG_INET_IPCOMP=m
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=m
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=m
|
||||
CONFIG_INET_XFRM_MODE_BEET=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
@ -139,7 +137,6 @@ CONFIG_IP_VS_SED=m
|
||||
CONFIG_IP_VS_NQ=m
|
||||
CONFIG_IP_VS_FTP=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
|
||||
@ -148,7 +145,6 @@ 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
|
||||
@ -163,7 +159,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_CONNTRACK_IPV6=m
|
||||
CONFIG_IP6_NF_QUEUE=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
@ -174,7 +169,6 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -215,7 +209,6 @@ CONFIG_RFKILL=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
@ -245,8 +238,6 @@ CONFIG_MDIO_BITBANG=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SMC91X=m
|
||||
CONFIG_SGISEEQ=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_HOSTAP=m
|
||||
CONFIG_INPUT_MOUSEDEV=m
|
||||
CONFIG_MOUSE_PS2=m
|
||||
@ -286,7 +277,6 @@ CONFIG_QUOTA=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
CONFIG_QFMT_V2=m
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=m
|
||||
@ -355,7 +345,6 @@ CONFIG_NLS_KOI8_U=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_DLM=m
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
|
@ -5,7 +5,6 @@ CONFIG_SMP=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_IKCONFIG=y
|
||||
@ -104,7 +103,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
CONFIG_BLK_DEV_OSD=m
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
@ -325,7 +323,6 @@ CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_BTRFS_FS_POSIX_ACL=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_CUSE=m
|
||||
CONFIG_FSCACHE=m
|
||||
@ -342,7 +339,6 @@ CONFIG_NFS_V3=y
|
||||
CONFIG_RPCSEC_GSS_KRB5=y
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
CONFIG_DLM=m
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_SECURITYFS=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
@ -378,7 +374,6 @@ CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ZLIB=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRYPTO_DEV_HIFN_795X=m
|
||||
CONFIG_CRC_T10DIF=m
|
||||
|
@ -1,7 +1,6 @@
|
||||
CONFIG_SGI_IP28=y
|
||||
CONFIG_ARC_CONSOLE=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
@ -35,10 +34,8 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
@ -48,8 +45,6 @@ CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SGISEEQ=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_MOUSE_PS2_ALPS is not set
|
||||
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_SGI_IP32=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -38,7 +37,6 @@ CONFIG_NET_IPGRE=m
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
CONFIG_INET6_AH=m
|
||||
@ -76,8 +74,6 @@ CONFIG_NET_TULIP=y
|
||||
CONFIG_DE2104X=m
|
||||
CONFIG_TULIP=m
|
||||
CONFIG_TULIP_MMIO=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
CONFIG_SERIO_MACEPS2=y
|
||||
@ -87,7 +83,6 @@ CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_GBE=y
|
||||
@ -117,7 +112,6 @@ CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V1=m
|
||||
CONFIG_QFMT_V2=m
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=m
|
||||
@ -178,8 +172,6 @@ CONFIG_NLS_KOI8_R=m
|
||||
CONFIG_NLS_KOI8_U=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_CBC=y
|
||||
|
@ -1,7 +1,6 @@
|
||||
CONFIG_MACH_JAZZ=y
|
||||
CONFIG_OLIVETTI_M700=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -85,7 +84,6 @@ CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STRING=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=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
|
||||
@ -94,7 +92,6 @@ 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
|
||||
@ -109,7 +106,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_CONNTRACK_IPV6=m
|
||||
CONFIG_IP6_NF_QUEUE=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
@ -120,7 +116,6 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -276,7 +271,6 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
||||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_QUOTA=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=m
|
||||
|
@ -18,23 +18,18 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_TC35815=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT is not set
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_VT is not set
|
||||
@ -58,5 +53,3 @@ CONFIG_PROC_KCORE=y
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
@ -5,7 +5,6 @@ CONFIG_DS1603=y
|
||||
CONFIG_LASAT_SYSCTL=y
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EXPERT=y
|
||||
@ -31,7 +30,6 @@ CONFIG_INET=y
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
@ -44,8 +42,6 @@ CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_PCNET32=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
@ -56,7 +52,6 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
||||
# CONFIG_SERIAL_8250_PCI is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
|
@ -7,7 +7,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -83,8 +82,6 @@ CONFIG_NET_SCHED=y
|
||||
CONFIG_NET_EMATCH=y
|
||||
CONFIG_NET_CLS_ACT=y
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_L2CAP=y
|
||||
CONFIG_BT_SCO=y
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
CONFIG_BT_BNEP=m
|
||||
@ -142,7 +139,6 @@ CONFIG_8139TOO=y
|
||||
# CONFIG_8139TOO_PIO is not set
|
||||
CONFIG_R8169=y
|
||||
CONFIG_R8169_VLAN=y
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_USB_USBNET=m
|
||||
CONFIG_USB_NET_CDC_EEM=m
|
||||
CONFIG_NETCONSOLE=m
|
||||
@ -205,7 +201,6 @@ CONFIG_USB_ZR364XX=m
|
||||
CONFIG_USB_STKWEBCAM=m
|
||||
CONFIG_USB_S2255=m
|
||||
# CONFIG_RADIO_ADAPTERS is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
@ -290,7 +285,6 @@ CONFIG_HID_WACOM=m
|
||||
CONFIG_HID_ZEROPLUS=m
|
||||
CONFIG_ZEROPLUS_FF=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_DYNAMIC_MINORS=y
|
||||
CONFIG_USB_OTG_WHITELIST=y
|
||||
CONFIG_USB_MON=y
|
||||
@ -313,10 +307,8 @@ CONFIG_USB_STORAGE_SDDR09=m
|
||||
CONFIG_USB_STORAGE_SDDR55=m
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=m
|
||||
CONFIG_USB_STORAGE_ALAUDA=m
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
CONFIG_USB_SERIAL=m
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
CONFIG_USB_LED=m
|
||||
CONFIG_USB_GADGET=m
|
||||
CONFIG_USB_GADGET_M66592=y
|
||||
CONFIG_MMC=m
|
||||
@ -341,7 +333,6 @@ CONFIG_XFS_POSIX_ACL=y
|
||||
CONFIG_BTRFS_FS=m
|
||||
CONFIG_QUOTA=y
|
||||
CONFIG_QFMT_V2=m
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FSCACHE=m
|
||||
CONFIG_CACHEFILES=m
|
||||
@ -407,8 +398,6 @@ CONFIG_PRINTK_TIME=y
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
@ -446,6 +435,5 @@ CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_DEFLATE=m
|
||||
CONFIG_CRYPTO_ZLIB=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRC_T10DIF=y
|
||||
|
@ -95,7 +95,6 @@ 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_ULOG=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
@ -252,7 +251,6 @@ CONFIG_MEDIA_USB_SUPPORT=y
|
||||
CONFIG_USB_VIDEO_CLASS=m
|
||||
CONFIG_DRM=y
|
||||
CONFIG_DRM_RADEON=y
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_LCD_PLATFORM=m
|
||||
@ -335,7 +333,6 @@ CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_RCU_CPU_STALL_VERBOSE is not set
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITYFS=y
|
||||
|
@ -133,7 +133,6 @@ 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_ULOG=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
|
@ -132,7 +132,6 @@ 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_ULOG=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_CLUSTERIP=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
|
@ -42,7 +42,6 @@ CONFIG_SYN_COOKIES=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
|
@ -43,7 +43,6 @@ CONFIG_SYN_COOKIES=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
@ -135,7 +134,6 @@ CONFIG_HW_RANDOM=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MATROX=y
|
||||
|
@ -46,7 +46,6 @@ CONFIG_SYN_COOKIES=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
|
@ -47,7 +47,6 @@ CONFIG_SYN_COOKIES=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
@ -140,7 +139,6 @@ CONFIG_HW_RANDOM=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MATROX=y
|
||||
|
@ -42,7 +42,6 @@ CONFIG_SYN_COOKIES=y
|
||||
CONFIG_INET_AH=m
|
||||
CONFIG_INET_ESP=m
|
||||
CONFIG_INET_IPCOMP=m
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET6_AH=m
|
||||
CONFIG_INET6_ESP=m
|
||||
CONFIG_INET6_IPCOMP=m
|
||||
@ -134,7 +133,6 @@ CONFIG_HW_RANDOM=y
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MATROX=y
|
||||
|
@ -1,7 +1,6 @@
|
||||
CONFIG_NEC_MARKEINS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -92,7 +91,6 @@ 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
|
||||
@ -117,7 +115,6 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -125,7 +122,6 @@ CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_FW_LOADER=m
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
|
@ -39,7 +39,6 @@ CONFIG_IP_MROUTE=y
|
||||
CONFIG_IP_PIMSM_V1=y
|
||||
CONFIG_IP_PIMSM_V2=y
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_IPV6=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_VICTOR_MPC30X=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_RELAY=y
|
||||
@ -31,8 +30,6 @@ CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_PATA_LEGACY=y
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_USB_PEGASUS=m
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
@ -45,13 +42,11 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
CONFIG_GPIO_VR41XX=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
CONFIG_USB=m
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_VR41XX=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_CONFIGFS_FS=m
|
||||
|
@ -2,7 +2,6 @@ CONFIG_PMC_MSP=y
|
||||
CONFIG_PMC_MSP7120_GW=y
|
||||
CONFIG_CPU_MIPS32_R2=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_LOCALVERSION="-pmc"
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
@ -38,7 +37,6 @@ CONFIG_BRIDGE=y
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
|
@ -1,7 +1,6 @@
|
||||
CONFIG_MIPS_ALCHEMY=y
|
||||
CONFIG_MIPS_MTX1=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -81,7 +80,6 @@ CONFIG_NETFILTER_XT_MATCH_REALM=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STRING=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_ADDRTYPE=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
@ -90,7 +88,6 @@ 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_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
@ -98,7 +95,6 @@ CONFIG_IP_NF_RAW=m
|
||||
CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_IP6_NF_QUEUE=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
@ -108,7 +104,6 @@ CONFIG_IP6_NF_MATCH_HL=m
|
||||
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -225,8 +220,6 @@ CONFIG_TOSHIBA_FIR=m
|
||||
CONFIG_VLSI_FIR=m
|
||||
CONFIG_MCS_FIR=m
|
||||
CONFIG_BT=m
|
||||
CONFIG_BT_L2CAP=y
|
||||
CONFIG_BT_SCO=y
|
||||
CONFIG_BT_RFCOMM=m
|
||||
CONFIG_BT_RFCOMM_TTY=y
|
||||
CONFIG_BT_BNEP=m
|
||||
@ -246,7 +239,6 @@ CONFIG_BT_HCIBTUART=m
|
||||
CONFIG_BT_HCIVHCI=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
@ -257,7 +249,6 @@ CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
@ -596,7 +587,6 @@ CONFIG_USB_STORAGE_SDDR55=m
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=m
|
||||
CONFIG_USB_STORAGE_ALAUDA=m
|
||||
CONFIG_USB_STORAGE_KARMA=m
|
||||
CONFIG_USB_LIBUSUAL=y
|
||||
CONFIG_USB_MDC800=m
|
||||
CONFIG_USB_MICROTEK=m
|
||||
CONFIG_USB_SERIAL=m
|
||||
@ -640,7 +630,6 @@ CONFIG_USB_ADUTUX=m
|
||||
CONFIG_USB_RIO500=m
|
||||
CONFIG_USB_LEGOTOWER=m
|
||||
CONFIG_USB_LCD=m
|
||||
CONFIG_USB_LED=m
|
||||
CONFIG_USB_CYPRESS_CY7C63=m
|
||||
CONFIG_USB_CYTHERM=m
|
||||
CONFIG_USB_IDMOUSE=m
|
||||
|
@ -6,7 +6,6 @@ CONFIG_KSM=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
|
||||
CONFIG_SMP=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -183,14 +182,12 @@ CONFIG_IP_VS_SED=m
|
||||
CONFIG_IP_VS_NQ=m
|
||||
CONFIG_IP_VS_FTP=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=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_ULOG=m
|
||||
CONFIG_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_TARGET_NETMAP=m
|
||||
@ -317,7 +314,6 @@ CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
@ -607,7 +603,6 @@ CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ZLIB=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRC_CCITT=m
|
||||
CONFIG_CRC7=m
|
||||
|
@ -7,7 +7,6 @@ CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CROSS_COMPILE=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
@ -163,7 +162,6 @@ CONFIG_IP_VS_SED=m
|
||||
CONFIG_IP_VS_NQ=m
|
||||
CONFIG_IP_VS_FTP=m
|
||||
CONFIG_NF_CONNTRACK_IPV4=m
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -171,7 +169,6 @@ 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
|
||||
@ -186,7 +183,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_CONNTRACK_IPV6=m
|
||||
CONFIG_IP6_NF_QUEUE=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
@ -197,7 +193,6 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -308,7 +303,6 @@ CONFIG_BLK_DEV_OSD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_CDROM_PKTCDVD=y
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
@ -369,7 +363,6 @@ CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_DS1374=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_UIO=y
|
||||
CONFIG_UIO_PDRV=m
|
||||
@ -522,7 +515,6 @@ CONFIG_SCHEDSTATS=y
|
||||
CONFIG_TIMER_STATS=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_SCHED_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_KGDB=y
|
||||
@ -568,7 +560,6 @@ CONFIG_CRYPTO_SEED=m
|
||||
CONFIG_CRYPTO_SERPENT=m
|
||||
CONFIG_CRYPTO_TEA=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
CONFIG_CRYPTO_ZLIB=m
|
||||
CONFIG_CRYPTO_LZO=m
|
||||
CONFIG_CRC_CCITT=m
|
||||
CONFIG_CRC7=m
|
||||
|
@ -5,7 +5,6 @@ CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_128=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
@ -27,12 +26,10 @@ CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_INET_AH=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
@ -41,15 +38,12 @@ CONFIG_MTD_CFI_GEOMETRY=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
CONFIG_ATA=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
CONFIG_INPUT_EVDEV=m
|
||||
CONFIG_INPUT_EVBUG=m
|
||||
@ -94,4 +88,3 @@ CONFIG_NLS_ASCII=m
|
||||
CONFIG_NLS_ISO8859_1=m
|
||||
CONFIG_NLS_ISO8859_15=m
|
||||
CONFIG_NLS_UTF8=m
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
@ -34,7 +34,6 @@ CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
# CONFIG_TCP_CONG_BIC is not set
|
||||
@ -109,7 +108,6 @@ CONFIG_USB_GADGET_DEBUG=y
|
||||
CONFIG_USB_ETH=y
|
||||
# CONFIG_USB_ETH_RNDIS is not set
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_UNSAFE_RESUME=y
|
||||
# CONFIG_MMC_BLOCK_BOUNCE is not set
|
||||
CONFIG_MMC_JZ4740=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
@ -183,7 +181,6 @@ CONFIG_PANIC_ON_OOPS=y
|
||||
# CONFIG_FTRACE is not set
|
||||
CONFIG_KGDB=y
|
||||
CONFIG_RUNTIME_DEBUG=y
|
||||
CONFIG_CRYPTO_ZLIB=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
CONFIG_FONTS=y
|
||||
CONFIG_FONT_SUN8x16=y
|
||||
|
@ -3,7 +3,6 @@ CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -39,7 +38,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=m
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_TCP_CONG_CUBIC=m
|
||||
@ -114,7 +112,6 @@ CONFIG_NET_CLS_IND=y
|
||||
CONFIG_HAMRADIO=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_BLOCK2MTD=y
|
||||
CONFIG_MTD_NAND=y
|
||||
@ -129,8 +126,6 @@ CONFIG_NET_ETHERNET=y
|
||||
CONFIG_KORINA=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_VIA_RHINE=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_ATMEL=m
|
||||
CONFIG_PPP=m
|
||||
CONFIG_PPP_MULTILINK=y
|
||||
@ -183,7 +178,6 @@ CONFIG_BSD_DISKLABEL=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
CONFIG_CRYPTO_ZLIB=y
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_CRC16=m
|
||||
CONFIG_LIBCRC32C=m
|
||||
|
@ -31,12 +31,10 @@ CONFIG_IP_PNP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=m
|
||||
CONFIG_MTD_BLOCK_RO=m
|
||||
CONFIG_MTD_CFI=y
|
||||
@ -50,7 +48,6 @@ CONFIG_MTD_NAND_TXX9NDFMC=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDE_TX4938=y
|
||||
CONFIG_BLK_DEV_IDE_TX4939=y
|
||||
@ -60,8 +57,6 @@ CONFIG_SMC91X=y
|
||||
CONFIG_NE2000=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_TC35815=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_WLAN is not set
|
||||
# CONFIG_INPUT is not set
|
||||
# CONFIG_SERIO is not set
|
||||
@ -108,5 +103,3 @@ CONFIG_NFS_V3=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_STRIP_ASM_SYMS=y
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
|
@ -3,7 +3,6 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_ARC_CONSOLE=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
@ -94,7 +93,6 @@ CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
|
||||
CONFIG_NETFILTER_XT_MATCH_STRING=m
|
||||
CONFIG_NETFILTER_XT_MATCH_TCPMSS=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
|
||||
@ -103,7 +101,6 @@ 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
|
||||
@ -118,7 +115,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NF_CONNTRACK_IPV6=m
|
||||
CONFIG_IP6_NF_QUEUE=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
CONFIG_IP6_NF_MATCH_AH=m
|
||||
CONFIG_IP6_NF_MATCH_EUI64=m
|
||||
@ -129,7 +125,6 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_TARGET_LOG=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
@ -214,7 +209,6 @@ CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_SX8=m
|
||||
CONFIG_BLK_DEV_UB=m
|
||||
CONFIG_BLK_DEV_RAM=m
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
@ -353,7 +347,6 @@ CONFIG_USB_SERIAL_OMNINET=m
|
||||
CONFIG_USB_RIO500=m
|
||||
CONFIG_USB_LEGOTOWER=m
|
||||
CONFIG_USB_LCD=m
|
||||
CONFIG_USB_LED=m
|
||||
CONFIG_USB_CYTHERM=m
|
||||
CONFIG_USB_SISUSBVGA=m
|
||||
CONFIG_USB_LD=m
|
||||
@ -366,7 +359,6 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
|
||||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_QUOTA=y
|
||||
CONFIG_AUTOFS_FS=m
|
||||
CONFIG_AUTOFS4_FS=m
|
||||
CONFIG_FUSE_FS=m
|
||||
CONFIG_ISO9660_FS=m
|
||||
|
@ -5,7 +5,6 @@ CONFIG_CPU_MIPS32_R2=y
|
||||
# CONFIG_CROSS_MEMORY_ATTACH is not set
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
@ -44,7 +43,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
# CONFIG_TCP_CONG_BIC is not set
|
||||
|
@ -4,7 +4,6 @@ CONFIG_64BIT=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_CGROUPS=y
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_TANBAC_TB0219=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
@ -31,7 +30,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
@ -40,7 +38,6 @@ CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_XIP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_PHYLIB=m
|
||||
CONFIG_MARVELL_PHY=m
|
||||
@ -57,7 +54,6 @@ CONFIG_VIA_RHINE=y
|
||||
CONFIG_VIA_RHINE_MMIO=y
|
||||
CONFIG_R8169=y
|
||||
CONFIG_VIA_VELOCITY=y
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
@ -70,7 +66,6 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
CONFIG_GPIO_TB0219=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
CONFIG_USB=m
|
||||
CONFIG_USB_MON=m
|
||||
CONFIG_USB_EHCI_HCD=m
|
||||
@ -91,6 +86,5 @@ CONFIG_NFS_V3=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=y
|
||||
CONFIG_NFSD_V3=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="cca=3 mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_TANBAC_TB0226=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
@ -29,7 +28,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
@ -37,7 +35,6 @@ CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_XIP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
@ -49,8 +46,6 @@ CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_NET_PCI=y
|
||||
CONFIG_E100=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_USB_CATC=m
|
||||
CONFIG_USB_KAWETH=m
|
||||
CONFIG_USB_PEGASUS=m
|
||||
@ -66,7 +61,6 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
||||
@ -87,7 +81,6 @@ CONFIG_NFS_V3=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_NFSD=m
|
||||
CONFIG_NFSD_V3=y
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="cca=3 mem=32M console=ttyVR0,115200"
|
||||
CONFIG_CRC32=m
|
||||
|
@ -1,5 +1,4 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
@ -31,7 +30,6 @@ CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
CONFIG_TCP_CONG_CUBIC=m
|
||||
@ -43,7 +41,6 @@ CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_XIP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
@ -64,7 +61,6 @@ CONFIG_VIA_RHINE=y
|
||||
CONFIG_VIA_RHINE_MMIO=y
|
||||
CONFIG_R8169=y
|
||||
CONFIG_VIA_VELOCITY=y
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_SERIO is not set
|
||||
@ -76,7 +72,6 @@ CONFIG_SERIAL_VR41XX_CONSOLE=y
|
||||
CONFIG_GPIO_VR41XX=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_MFD_SM501=y
|
||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_SM501=y
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
|
@ -1,6 +1,5 @@
|
||||
CONFIG_MACH_VR41XX=y
|
||||
CONFIG_IBM_WORKPAD=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
@ -28,13 +27,10 @@ CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NETWORK_SECMARK=y
|
||||
CONFIG_BLK_DEV_RAM=m
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECS=m
|
||||
CONFIG_IDE_GENERIC=y
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
CONFIG_NET_PCMCIA=y
|
||||
CONFIG_PCMCIA_3C589=m
|
||||
CONFIG_PCMCIA_3C574=m
|
||||
|
@ -9,11 +9,31 @@ config LEGACY_BOARDS
|
||||
kernel is booted without being provided with an FDT via the UHI
|
||||
boot protocol.
|
||||
|
||||
config YAMON_DT_SHIM
|
||||
bool
|
||||
help
|
||||
Select this from your board if the board uses the YAMON bootloader
|
||||
and you wish to include code which helps translate various
|
||||
YAMON-provided environment variables into a device tree properties.
|
||||
|
||||
comment "Legacy (non-UHI/non-FIT) Boards"
|
||||
|
||||
config LEGACY_BOARD_SEAD3
|
||||
bool "Support MIPS SEAD-3 boards"
|
||||
select LEGACY_BOARDS
|
||||
select YAMON_DT_SHIM
|
||||
help
|
||||
Enable this to include support for booting on MIPS SEAD-3 FPGA-based
|
||||
development boards, which boot using a legacy boot protocol.
|
||||
|
||||
comment "FIT/UHI Boards"
|
||||
|
||||
config FIT_IMAGE_FDT_BOSTON
|
||||
bool "Include FDT for MIPS Boston boards"
|
||||
help
|
||||
Enable this to include the FDT for the MIPS Boston development board
|
||||
from Imagination Technologies in the FIT kernel image. You should
|
||||
enable this if you wish to boot on a MIPS Boston board, as it is
|
||||
expected by the bootloader.
|
||||
|
||||
endif
|
||||
|
@ -12,5 +12,6 @@ obj-y += init.o
|
||||
obj-y += irq.o
|
||||
obj-y += proc.o
|
||||
|
||||
obj-$(CONFIG_YAMON_DT_SHIM) += yamon-dt.o
|
||||
obj-$(CONFIG_LEGACY_BOARD_SEAD3) += board-sead3.o
|
||||
obj-$(CONFIG_KEXEC) += kexec.o
|
||||
|
@ -13,10 +13,12 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/libfdt.h>
|
||||
#include <linux/printk.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include <asm/fw/fw.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machine.h>
|
||||
#include <asm/yamon-dt.h>
|
||||
|
||||
#define SEAD_CONFIG CKSEG1ADDR(0x1b100110)
|
||||
#define SEAD_CONFIG_GIC_PRESENT BIT(1)
|
||||
@ -25,6 +27,15 @@
|
||||
#define MIPS_REVISION_MACHINE (0xf << 4)
|
||||
#define MIPS_REVISION_MACHINE_SEAD3 (0x4 << 4)
|
||||
|
||||
/*
|
||||
* Maximum 384MB RAM at physical address 0, preceding any I/O.
|
||||
*/
|
||||
static struct yamon_mem_region mem_regions[] __initdata = {
|
||||
/* start size */
|
||||
{ 0, SZ_256M + SZ_128M },
|
||||
{}
|
||||
};
|
||||
|
||||
static __init bool sead3_detect(void)
|
||||
{
|
||||
uint32_t rev;
|
||||
@ -33,96 +44,9 @@ static __init bool sead3_detect(void)
|
||||
return (rev & MIPS_REVISION_MACHINE) == MIPS_REVISION_MACHINE_SEAD3;
|
||||
}
|
||||
|
||||
static __init int append_cmdline(void *fdt)
|
||||
{
|
||||
int err, chosen_off;
|
||||
|
||||
/* find or add chosen node */
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen@0");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_add_subnode(fdt, 0, "chosen");
|
||||
if (chosen_off < 0) {
|
||||
pr_err("Unable to find or add DT chosen node: %d\n",
|
||||
chosen_off);
|
||||
return chosen_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, chosen_off, "bootargs", fw_getcmdline());
|
||||
if (err) {
|
||||
pr_err("Unable to set bootargs property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __init int append_memory(void *fdt)
|
||||
{
|
||||
unsigned long phys_memsize, memsize;
|
||||
__be32 mem_array[2];
|
||||
int err, mem_off;
|
||||
char *var;
|
||||
|
||||
/* find memory size from the bootloader environment */
|
||||
var = fw_getenv("memsize");
|
||||
if (var) {
|
||||
err = kstrtoul(var, 0, &phys_memsize);
|
||||
if (err) {
|
||||
pr_err("Failed to read memsize env variable '%s'\n",
|
||||
var);
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
pr_warn("The bootloader didn't provide memsize: defaulting to 32MB\n");
|
||||
phys_memsize = 32 << 20;
|
||||
}
|
||||
|
||||
/* default to using all available RAM */
|
||||
memsize = phys_memsize;
|
||||
|
||||
/* allow the user to override the usable memory */
|
||||
var = strstr(arcs_cmdline, "memsize=");
|
||||
if (var)
|
||||
memsize = memparse(var + strlen("memsize="), NULL);
|
||||
|
||||
/* if the user says there's more RAM than we thought, believe them */
|
||||
phys_memsize = max_t(unsigned long, phys_memsize, memsize);
|
||||
|
||||
/* find or add a memory node */
|
||||
mem_off = fdt_path_offset(fdt, "/memory");
|
||||
if (mem_off == -FDT_ERR_NOTFOUND)
|
||||
mem_off = fdt_add_subnode(fdt, 0, "memory");
|
||||
if (mem_off < 0) {
|
||||
pr_err("Unable to find or add memory DT node: %d\n", mem_off);
|
||||
return mem_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, mem_off, "device_type", "memory");
|
||||
if (err) {
|
||||
pr_err("Unable to set memory node device_type: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
mem_array[0] = 0;
|
||||
mem_array[1] = cpu_to_be32(phys_memsize);
|
||||
err = fdt_setprop(fdt, mem_off, "reg", mem_array, sizeof(mem_array));
|
||||
if (err) {
|
||||
pr_err("Unable to set memory regs property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
mem_array[0] = 0;
|
||||
mem_array[1] = cpu_to_be32(memsize);
|
||||
err = fdt_setprop(fdt, mem_off, "linux,usable-memory",
|
||||
mem_array, sizeof(mem_array));
|
||||
if (err) {
|
||||
pr_err("Unable to set linux,usable-memory property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return yamon_dt_append_memory(fdt, mem_regions);
|
||||
}
|
||||
|
||||
static __init int remove_gic(void *fdt)
|
||||
@ -163,14 +87,16 @@ static __init int remove_gic(void *fdt)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, 0, "interrupt-parent", cpu_phandle);
|
||||
if (err) {
|
||||
pr_err("unable to set root interrupt-parent: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
uart_off = fdt_node_offset_by_compatible(fdt, -1, "ns16550a");
|
||||
while (uart_off >= 0) {
|
||||
err = fdt_setprop_u32(fdt, uart_off, "interrupt-parent",
|
||||
cpu_phandle);
|
||||
if (err) {
|
||||
pr_warn("unable to set UART interrupt-parent: %d\n",
|
||||
err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, uart_off, "interrupts",
|
||||
cpu_uart_int);
|
||||
if (err) {
|
||||
@ -193,6 +119,12 @@ static __init int remove_gic(void *fdt)
|
||||
return eth_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, eth_off, "interrupt-parent", cpu_phandle);
|
||||
if (err) {
|
||||
pr_err("unable to set ethernet interrupt-parent: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, eth_off, "interrupts", cpu_eth_int);
|
||||
if (err) {
|
||||
pr_err("unable to set ethernet interrupts property: %d\n", err);
|
||||
@ -205,6 +137,12 @@ static __init int remove_gic(void *fdt)
|
||||
return ehci_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, ehci_off, "interrupt-parent", cpu_phandle);
|
||||
if (err) {
|
||||
pr_err("unable to set EHCI interrupt-parent: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = fdt_setprop_u32(fdt, ehci_off, "interrupts", cpu_ehci_int);
|
||||
if (err) {
|
||||
pr_err("unable to set EHCI interrupts property: %d\n", err);
|
||||
@ -214,84 +152,13 @@ static __init int remove_gic(void *fdt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __init int serial_config(void *fdt)
|
||||
{
|
||||
const char *yamontty, *mode_var;
|
||||
char mode_var_name[9], path[18], parity;
|
||||
unsigned int uart, baud, stop_bits;
|
||||
bool hw_flow;
|
||||
int chosen_off, err;
|
||||
|
||||
yamontty = fw_getenv("yamontty");
|
||||
if (!yamontty || !strcmp(yamontty, "tty0")) {
|
||||
uart = 0;
|
||||
} else if (!strcmp(yamontty, "tty1")) {
|
||||
uart = 1;
|
||||
} else {
|
||||
pr_warn("yamontty environment variable '%s' invalid\n",
|
||||
yamontty);
|
||||
uart = 0;
|
||||
}
|
||||
|
||||
baud = stop_bits = 0;
|
||||
parity = 0;
|
||||
hw_flow = false;
|
||||
|
||||
snprintf(mode_var_name, sizeof(mode_var_name), "modetty%u", uart);
|
||||
mode_var = fw_getenv(mode_var_name);
|
||||
if (mode_var) {
|
||||
while (mode_var[0] >= '0' && mode_var[0] <= '9') {
|
||||
baud *= 10;
|
||||
baud += mode_var[0] - '0';
|
||||
mode_var++;
|
||||
}
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (mode_var[0])
|
||||
parity = mode_var[0];
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (mode_var[0])
|
||||
stop_bits = mode_var[0] - '0';
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (!strcmp(mode_var, "hw"))
|
||||
hw_flow = true;
|
||||
}
|
||||
|
||||
if (!baud)
|
||||
baud = 38400;
|
||||
|
||||
if (parity != 'e' && parity != 'n' && parity != 'o')
|
||||
parity = 'n';
|
||||
|
||||
if (stop_bits != 7 && stop_bits != 8)
|
||||
stop_bits = 8;
|
||||
|
||||
WARN_ON(snprintf(path, sizeof(path), "uart%u:%u%c%u%s",
|
||||
uart, baud, parity, stop_bits,
|
||||
hw_flow ? "r" : "") >= sizeof(path));
|
||||
|
||||
/* find or add chosen node */
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen@0");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_add_subnode(fdt, 0, "chosen");
|
||||
if (chosen_off < 0) {
|
||||
pr_err("Unable to find or add DT chosen node: %d\n",
|
||||
chosen_off);
|
||||
return chosen_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, chosen_off, "stdout-path", path);
|
||||
if (err) {
|
||||
pr_err("Unable to set stdout-path property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
static const struct mips_fdt_fixup sead3_fdt_fixups[] __initconst = {
|
||||
{ yamon_dt_append_cmdline, "append command line" },
|
||||
{ append_memory, "append memory" },
|
||||
{ remove_gic, "remove GIC when not present" },
|
||||
{ yamon_dt_serial_config, "append serial configuration" },
|
||||
{ },
|
||||
};
|
||||
|
||||
static __init const void *sead3_fixup_fdt(const void *fdt,
|
||||
const void *match_data)
|
||||
@ -307,29 +174,10 @@ static __init const void *sead3_fixup_fdt(const void *fdt,
|
||||
|
||||
fw_init_cmdline();
|
||||
|
||||
err = fdt_open_into(fdt, fdt_buf, sizeof(fdt_buf));
|
||||
err = apply_mips_fdt_fixups(fdt_buf, sizeof(fdt_buf),
|
||||
fdt, sead3_fdt_fixups);
|
||||
if (err)
|
||||
panic("Unable to open FDT: %d", err);
|
||||
|
||||
err = append_cmdline(fdt_buf);
|
||||
if (err)
|
||||
panic("Unable to patch FDT: %d", err);
|
||||
|
||||
err = append_memory(fdt_buf);
|
||||
if (err)
|
||||
panic("Unable to patch FDT: %d", err);
|
||||
|
||||
err = remove_gic(fdt_buf);
|
||||
if (err)
|
||||
panic("Unable to patch FDT: %d", err);
|
||||
|
||||
err = serial_config(fdt_buf);
|
||||
if (err)
|
||||
panic("Unable to patch FDT: %d", err);
|
||||
|
||||
err = fdt_pack(fdt_buf);
|
||||
if (err)
|
||||
panic("Unable to pack FDT: %d\n", err);
|
||||
panic("Unable to fixup FDT: %d", err);
|
||||
|
||||
return fdt_buf;
|
||||
}
|
||||
|
@ -122,6 +122,33 @@ void __init device_tree_init(void)
|
||||
err = register_up_smp_ops();
|
||||
}
|
||||
|
||||
int __init apply_mips_fdt_fixups(void *fdt_out, size_t fdt_out_size,
|
||||
const void *fdt_in,
|
||||
const struct mips_fdt_fixup *fixups)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = fdt_open_into(fdt_in, fdt_out, fdt_out_size);
|
||||
if (err) {
|
||||
pr_err("Failed to open FDT\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
for (; fixups->apply; fixups++) {
|
||||
err = fixups->apply(fdt_out);
|
||||
if (err) {
|
||||
pr_err("Failed to apply FDT fixup \"%s\"\n",
|
||||
fixups->description);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
err = fdt_pack(fdt_out);
|
||||
if (err)
|
||||
pr_err("Failed to pack FDT\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
void __init plat_time_init(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
@ -29,3 +29,28 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef CONFIG_FIT_IMAGE_FDT_BOSTON
|
||||
/ {
|
||||
images {
|
||||
fdt@boston {
|
||||
description = "img,boston Device Tree";
|
||||
data = /incbin/("boot/dts/img/boston.dtb");
|
||||
type = "flat_dt";
|
||||
arch = "mips";
|
||||
compression = "none";
|
||||
hash@0 {
|
||||
algo = "sha1";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
configurations {
|
||||
conf@boston {
|
||||
description = "Boston Linux kernel";
|
||||
kernel = "kernel@0";
|
||||
fdt = "fdt@boston";
|
||||
};
|
||||
};
|
||||
};
|
||||
#endif /* CONFIG_FIT_IMAGE_FDT_BOSTON */
|
||||
|
240
arch/mips/generic/yamon-dt.c
Normal file
240
arch/mips/generic/yamon-dt.c
Normal file
@ -0,0 +1,240 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Imagination Technologies
|
||||
* Author: Paul Burton <paul.burton@imgtec.com>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "yamon-dt: " fmt
|
||||
|
||||
#include <linux/bug.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/libfdt.h>
|
||||
#include <linux/printk.h>
|
||||
|
||||
#include <asm/fw/fw.h>
|
||||
#include <asm/yamon-dt.h>
|
||||
|
||||
#define MAX_MEM_ARRAY_ENTRIES 2
|
||||
|
||||
__init int yamon_dt_append_cmdline(void *fdt)
|
||||
{
|
||||
int err, chosen_off;
|
||||
|
||||
/* find or add chosen node */
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen@0");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_add_subnode(fdt, 0, "chosen");
|
||||
if (chosen_off < 0) {
|
||||
pr_err("Unable to find or add DT chosen node: %d\n",
|
||||
chosen_off);
|
||||
return chosen_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, chosen_off, "bootargs", fw_getcmdline());
|
||||
if (err) {
|
||||
pr_err("Unable to set bootargs property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int __init gen_fdt_mem_array(
|
||||
const struct yamon_mem_region *regions,
|
||||
__be32 *mem_array,
|
||||
unsigned int max_entries,
|
||||
unsigned long memsize)
|
||||
{
|
||||
const struct yamon_mem_region *mr;
|
||||
unsigned long size;
|
||||
unsigned int entries = 0;
|
||||
|
||||
for (mr = regions; mr->size && memsize; ++mr) {
|
||||
if (entries >= max_entries) {
|
||||
pr_warn("Number of regions exceeds max %u\n",
|
||||
max_entries);
|
||||
break;
|
||||
}
|
||||
|
||||
/* How much of the remaining RAM fits in the next region? */
|
||||
size = min_t(unsigned long, memsize, mr->size);
|
||||
memsize -= size;
|
||||
|
||||
/* Emit a memory region */
|
||||
*(mem_array++) = cpu_to_be32(mr->start);
|
||||
*(mem_array++) = cpu_to_be32(size);
|
||||
++entries;
|
||||
|
||||
/* Discard the next mr->discard bytes */
|
||||
memsize -= min_t(unsigned long, memsize, mr->discard);
|
||||
}
|
||||
return entries;
|
||||
}
|
||||
|
||||
__init int yamon_dt_append_memory(void *fdt,
|
||||
const struct yamon_mem_region *regions)
|
||||
{
|
||||
unsigned long phys_memsize, memsize;
|
||||
__be32 mem_array[2 * MAX_MEM_ARRAY_ENTRIES];
|
||||
unsigned int mem_entries;
|
||||
int i, err, mem_off;
|
||||
char *var, param_name[10], *var_names[] = {
|
||||
"ememsize", "memsize",
|
||||
};
|
||||
|
||||
/* find memory size from the bootloader environment */
|
||||
for (i = 0; i < ARRAY_SIZE(var_names); i++) {
|
||||
var = fw_getenv(var_names[i]);
|
||||
if (!var)
|
||||
continue;
|
||||
|
||||
err = kstrtoul(var, 0, &phys_memsize);
|
||||
if (!err)
|
||||
break;
|
||||
|
||||
pr_warn("Failed to read the '%s' env variable '%s'\n",
|
||||
var_names[i], var);
|
||||
}
|
||||
|
||||
if (!phys_memsize) {
|
||||
pr_warn("The bootloader didn't provide memsize: defaulting to 32MB\n");
|
||||
phys_memsize = 32 << 20;
|
||||
}
|
||||
|
||||
/* default to using all available RAM */
|
||||
memsize = phys_memsize;
|
||||
|
||||
/* allow the user to override the usable memory */
|
||||
for (i = 0; i < ARRAY_SIZE(var_names); i++) {
|
||||
snprintf(param_name, sizeof(param_name), "%s=", var_names[i]);
|
||||
var = strstr(arcs_cmdline, param_name);
|
||||
if (!var)
|
||||
continue;
|
||||
|
||||
memsize = memparse(var + strlen(param_name), NULL);
|
||||
}
|
||||
|
||||
/* if the user says there's more RAM than we thought, believe them */
|
||||
phys_memsize = max_t(unsigned long, phys_memsize, memsize);
|
||||
|
||||
/* find or add a memory node */
|
||||
mem_off = fdt_path_offset(fdt, "/memory");
|
||||
if (mem_off == -FDT_ERR_NOTFOUND)
|
||||
mem_off = fdt_add_subnode(fdt, 0, "memory");
|
||||
if (mem_off < 0) {
|
||||
pr_err("Unable to find or add memory DT node: %d\n", mem_off);
|
||||
return mem_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, mem_off, "device_type", "memory");
|
||||
if (err) {
|
||||
pr_err("Unable to set memory node device_type: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
mem_entries = gen_fdt_mem_array(regions, mem_array,
|
||||
MAX_MEM_ARRAY_ENTRIES, phys_memsize);
|
||||
err = fdt_setprop(fdt, mem_off, "reg",
|
||||
mem_array, mem_entries * 2 * sizeof(mem_array[0]));
|
||||
if (err) {
|
||||
pr_err("Unable to set memory regs property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
mem_entries = gen_fdt_mem_array(regions, mem_array,
|
||||
MAX_MEM_ARRAY_ENTRIES, memsize);
|
||||
err = fdt_setprop(fdt, mem_off, "linux,usable-memory",
|
||||
mem_array, mem_entries * 2 * sizeof(mem_array[0]));
|
||||
if (err) {
|
||||
pr_err("Unable to set linux,usable-memory property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__init int yamon_dt_serial_config(void *fdt)
|
||||
{
|
||||
const char *yamontty, *mode_var;
|
||||
char mode_var_name[9], path[20], parity;
|
||||
unsigned int uart, baud, stop_bits;
|
||||
bool hw_flow;
|
||||
int chosen_off, err;
|
||||
|
||||
yamontty = fw_getenv("yamontty");
|
||||
if (!yamontty || !strcmp(yamontty, "tty0")) {
|
||||
uart = 0;
|
||||
} else if (!strcmp(yamontty, "tty1")) {
|
||||
uart = 1;
|
||||
} else {
|
||||
pr_warn("yamontty environment variable '%s' invalid\n",
|
||||
yamontty);
|
||||
uart = 0;
|
||||
}
|
||||
|
||||
baud = stop_bits = 0;
|
||||
parity = 0;
|
||||
hw_flow = false;
|
||||
|
||||
snprintf(mode_var_name, sizeof(mode_var_name), "modetty%u", uart);
|
||||
mode_var = fw_getenv(mode_var_name);
|
||||
if (mode_var) {
|
||||
while (mode_var[0] >= '0' && mode_var[0] <= '9') {
|
||||
baud *= 10;
|
||||
baud += mode_var[0] - '0';
|
||||
mode_var++;
|
||||
}
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (mode_var[0])
|
||||
parity = mode_var[0];
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (mode_var[0])
|
||||
stop_bits = mode_var[0] - '0';
|
||||
if (mode_var[0] == ',')
|
||||
mode_var++;
|
||||
if (!strcmp(mode_var, "hw"))
|
||||
hw_flow = true;
|
||||
}
|
||||
|
||||
if (!baud)
|
||||
baud = 38400;
|
||||
|
||||
if (parity != 'e' && parity != 'n' && parity != 'o')
|
||||
parity = 'n';
|
||||
|
||||
if (stop_bits != 7 && stop_bits != 8)
|
||||
stop_bits = 8;
|
||||
|
||||
WARN_ON(snprintf(path, sizeof(path), "serial%u:%u%c%u%s",
|
||||
uart, baud, parity, stop_bits,
|
||||
hw_flow ? "r" : "") >= sizeof(path));
|
||||
|
||||
/* find or add chosen node */
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_path_offset(fdt, "/chosen@0");
|
||||
if (chosen_off == -FDT_ERR_NOTFOUND)
|
||||
chosen_off = fdt_add_subnode(fdt, 0, "chosen");
|
||||
if (chosen_off < 0) {
|
||||
pr_err("Unable to find or add DT chosen node: %d\n",
|
||||
chosen_off);
|
||||
return chosen_off;
|
||||
}
|
||||
|
||||
err = fdt_setprop_string(fdt, chosen_off, "stdout-path", path);
|
||||
if (err) {
|
||||
pr_err("Unable to set stdout-path property: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
@ -12,6 +12,8 @@ generic-y += mm-arch-hooks.h
|
||||
generic-y += parport.h
|
||||
generic-y += percpu.h
|
||||
generic-y += preempt.h
|
||||
generic-y += qrwlock.h
|
||||
generic-y += qspinlock.h
|
||||
generic-y += sections.h
|
||||
generic-y += segment.h
|
||||
generic-y += serial.h
|
||||
|
@ -74,10 +74,7 @@ static inline int compute_return_epc(struct pt_regs *regs)
|
||||
return __microMIPS_compute_return_epc(regs);
|
||||
if (cpu_has_mips16)
|
||||
return __MIPS16e_compute_return_epc(regs);
|
||||
return regs->cp0_epc;
|
||||
}
|
||||
|
||||
if (!delay_slot(regs)) {
|
||||
} else if (!delay_slot(regs)) {
|
||||
regs->cp0_epc += 4;
|
||||
return 0;
|
||||
}
|
||||
|
@ -13,153 +13,107 @@
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
static inline unsigned long __xchg_u32(volatile int * m, unsigned int val)
|
||||
{
|
||||
__u32 retval;
|
||||
|
||||
smp_mb__before_llsc();
|
||||
|
||||
if (kernel_uses_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long dummy;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set arch=r4000 \n"
|
||||
"1: ll %0, %3 # xchg_u32 \n"
|
||||
" .set mips0 \n"
|
||||
" move %2, %z4 \n"
|
||||
" .set arch=r4000 \n"
|
||||
" sc %2, %1 \n"
|
||||
" beqzl %2, 1b \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (retval), "=" GCC_OFF_SMALL_ASM() (*m), "=&r" (dummy)
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val)
|
||||
: "memory");
|
||||
} else if (kernel_uses_llsc) {
|
||||
unsigned long dummy;
|
||||
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" ll %0, %3 # xchg_u32 \n"
|
||||
" .set mips0 \n"
|
||||
" move %2, %z4 \n"
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" sc %2, %1 \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (retval), "=" GCC_OFF_SMALL_ASM() (*m),
|
||||
"=&r" (dummy)
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val)
|
||||
: "memory");
|
||||
} while (unlikely(!dummy));
|
||||
} else {
|
||||
unsigned long flags;
|
||||
|
||||
raw_local_irq_save(flags);
|
||||
retval = *m;
|
||||
*m = val;
|
||||
raw_local_irq_restore(flags); /* implies memory barrier */
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
static inline __u64 __xchg_u64(volatile __u64 * m, __u64 val)
|
||||
{
|
||||
__u64 retval;
|
||||
|
||||
smp_mb__before_llsc();
|
||||
|
||||
if (kernel_uses_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long dummy;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set arch=r4000 \n"
|
||||
"1: lld %0, %3 # xchg_u64 \n"
|
||||
" move %2, %z4 \n"
|
||||
" scd %2, %1 \n"
|
||||
" beqzl %2, 1b \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (retval), "=" GCC_OFF_SMALL_ASM() (*m), "=&r" (dummy)
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val)
|
||||
: "memory");
|
||||
} else if (kernel_uses_llsc) {
|
||||
unsigned long dummy;
|
||||
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n"
|
||||
" lld %0, %3 # xchg_u64 \n"
|
||||
" move %2, %z4 \n"
|
||||
" scd %2, %1 \n"
|
||||
" .set mips0 \n"
|
||||
: "=&r" (retval), "=" GCC_OFF_SMALL_ASM() (*m),
|
||||
"=&r" (dummy)
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val)
|
||||
: "memory");
|
||||
} while (unlikely(!dummy));
|
||||
} else {
|
||||
unsigned long flags;
|
||||
|
||||
raw_local_irq_save(flags);
|
||||
retval = *m;
|
||||
*m = val;
|
||||
raw_local_irq_restore(flags); /* implies memory barrier */
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
return retval;
|
||||
}
|
||||
/*
|
||||
* Using a branch-likely instruction to check the result of an sc instruction
|
||||
* works around a bug present in R10000 CPUs prior to revision 3.0 that could
|
||||
* cause ll-sc sequences to execute non-atomically.
|
||||
*/
|
||||
#if R10000_LLSC_WAR
|
||||
# define __scbeqz "beqzl"
|
||||
#else
|
||||
extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 val);
|
||||
#define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels
|
||||
# define __scbeqz "beqz"
|
||||
#endif
|
||||
|
||||
static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size)
|
||||
/*
|
||||
* These functions doesn't exist, so if they are called you'll either:
|
||||
*
|
||||
* - Get an error at compile-time due to __compiletime_error, if supported by
|
||||
* your compiler.
|
||||
*
|
||||
* or:
|
||||
*
|
||||
* - Get an error at link-time due to the call to the missing function.
|
||||
*/
|
||||
extern unsigned long __cmpxchg_called_with_bad_pointer(void)
|
||||
__compiletime_error("Bad argument size for cmpxchg");
|
||||
extern unsigned long __xchg_called_with_bad_pointer(void)
|
||||
__compiletime_error("Bad argument size for xchg");
|
||||
|
||||
#define __xchg_asm(ld, st, m, val) \
|
||||
({ \
|
||||
__typeof(*(m)) __ret; \
|
||||
\
|
||||
if (kernel_uses_llsc) { \
|
||||
__asm__ __volatile__( \
|
||||
" .set push \n" \
|
||||
" .set noat \n" \
|
||||
" .set " MIPS_ISA_ARCH_LEVEL " \n" \
|
||||
"1: " ld " %0, %2 # __xchg_asm \n" \
|
||||
" .set mips0 \n" \
|
||||
" move $1, %z3 \n" \
|
||||
" .set " MIPS_ISA_ARCH_LEVEL " \n" \
|
||||
" " st " $1, %1 \n" \
|
||||
"\t" __scbeqz " $1, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (__ret), "=" GCC_OFF_SMALL_ASM() (*m) \
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (val) \
|
||||
: "memory"); \
|
||||
} else { \
|
||||
unsigned long __flags; \
|
||||
\
|
||||
raw_local_irq_save(__flags); \
|
||||
__ret = *m; \
|
||||
*m = val; \
|
||||
raw_local_irq_restore(__flags); \
|
||||
} \
|
||||
\
|
||||
__ret; \
|
||||
})
|
||||
|
||||
extern unsigned long __xchg_small(volatile void *ptr, unsigned long val,
|
||||
unsigned int size);
|
||||
|
||||
static inline unsigned long __xchg(volatile void *ptr, unsigned long x,
|
||||
int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 4:
|
||||
return __xchg_u32(ptr, x);
|
||||
case 8:
|
||||
return __xchg_u64(ptr, x);
|
||||
}
|
||||
case 1:
|
||||
case 2:
|
||||
return __xchg_small(ptr, x, size);
|
||||
|
||||
return x;
|
||||
case 4:
|
||||
return __xchg_asm("ll", "sc", (volatile u32 *)ptr, x);
|
||||
|
||||
case 8:
|
||||
if (!IS_ENABLED(CONFIG_64BIT))
|
||||
return __xchg_called_with_bad_pointer();
|
||||
|
||||
return __xchg_asm("lld", "scd", (volatile u64 *)ptr, x);
|
||||
|
||||
default:
|
||||
return __xchg_called_with_bad_pointer();
|
||||
}
|
||||
}
|
||||
|
||||
#define xchg(ptr, x) \
|
||||
({ \
|
||||
BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \
|
||||
__typeof__(*(ptr)) __res; \
|
||||
\
|
||||
((__typeof__(*(ptr))) \
|
||||
__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \
|
||||
smp_mb__before_llsc(); \
|
||||
\
|
||||
__res = (__typeof__(*(ptr))) \
|
||||
__xchg((ptr), (unsigned long)(x), sizeof(*(ptr))); \
|
||||
\
|
||||
smp_llsc_mb(); \
|
||||
\
|
||||
__res; \
|
||||
})
|
||||
|
||||
#define __cmpxchg_asm(ld, st, m, old, new) \
|
||||
({ \
|
||||
__typeof(*(m)) __ret; \
|
||||
\
|
||||
if (kernel_uses_llsc && R10000_LLSC_WAR) { \
|
||||
__asm__ __volatile__( \
|
||||
" .set push \n" \
|
||||
" .set noat \n" \
|
||||
" .set arch=r4000 \n" \
|
||||
"1: " ld " %0, %2 # __cmpxchg_asm \n" \
|
||||
" bne %0, %z3, 2f \n" \
|
||||
" .set mips0 \n" \
|
||||
" move $1, %z4 \n" \
|
||||
" .set arch=r4000 \n" \
|
||||
" " st " $1, %1 \n" \
|
||||
" beqzl $1, 1b \n" \
|
||||
"2: \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (__ret), "=" GCC_OFF_SMALL_ASM() (*m) \
|
||||
: GCC_OFF_SMALL_ASM() (*m), "Jr" (old), "Jr" (new) \
|
||||
: "memory"); \
|
||||
} else if (kernel_uses_llsc) { \
|
||||
if (kernel_uses_llsc) { \
|
||||
__asm__ __volatile__( \
|
||||
" .set push \n" \
|
||||
" .set noat \n" \
|
||||
@ -170,7 +124,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
|
||||
" move $1, %z4 \n" \
|
||||
" .set "MIPS_ISA_ARCH_LEVEL" \n" \
|
||||
" " st " $1, %1 \n" \
|
||||
" beqz $1, 1b \n" \
|
||||
"\t" __scbeqz " $1, 1b \n" \
|
||||
" .set pop \n" \
|
||||
"2: \n" \
|
||||
: "=&r" (__ret), "=" GCC_OFF_SMALL_ASM() (*m) \
|
||||
@ -189,44 +143,50 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
|
||||
__ret; \
|
||||
})
|
||||
|
||||
/*
|
||||
* This function doesn't exist, so you'll get a linker error
|
||||
* if something tries to do an invalid cmpxchg().
|
||||
*/
|
||||
extern void __cmpxchg_called_with_bad_pointer(void);
|
||||
extern unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old,
|
||||
unsigned long new, unsigned int size);
|
||||
|
||||
#define __cmpxchg(ptr, old, new, pre_barrier, post_barrier) \
|
||||
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
|
||||
unsigned long new, unsigned int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 1:
|
||||
case 2:
|
||||
return __cmpxchg_small(ptr, old, new, size);
|
||||
|
||||
case 4:
|
||||
return __cmpxchg_asm("ll", "sc", (volatile u32 *)ptr, old, new);
|
||||
|
||||
case 8:
|
||||
/* lld/scd are only available for MIPS64 */
|
||||
if (!IS_ENABLED(CONFIG_64BIT))
|
||||
return __cmpxchg_called_with_bad_pointer();
|
||||
|
||||
return __cmpxchg_asm("lld", "scd", (volatile u64 *)ptr, old, new);
|
||||
|
||||
default:
|
||||
return __cmpxchg_called_with_bad_pointer();
|
||||
}
|
||||
}
|
||||
|
||||
#define cmpxchg_local(ptr, old, new) \
|
||||
((__typeof__(*(ptr))) \
|
||||
__cmpxchg((ptr), \
|
||||
(unsigned long)(__typeof__(*(ptr)))(old), \
|
||||
(unsigned long)(__typeof__(*(ptr)))(new), \
|
||||
sizeof(*(ptr))))
|
||||
|
||||
#define cmpxchg(ptr, old, new) \
|
||||
({ \
|
||||
__typeof__(ptr) __ptr = (ptr); \
|
||||
__typeof__(*(ptr)) __old = (old); \
|
||||
__typeof__(*(ptr)) __new = (new); \
|
||||
__typeof__(*(ptr)) __res = 0; \
|
||||
__typeof__(*(ptr)) __res; \
|
||||
\
|
||||
pre_barrier; \
|
||||
\
|
||||
switch (sizeof(*(__ptr))) { \
|
||||
case 4: \
|
||||
__res = __cmpxchg_asm("ll", "sc", __ptr, __old, __new); \
|
||||
break; \
|
||||
case 8: \
|
||||
if (sizeof(long) == 8) { \
|
||||
__res = __cmpxchg_asm("lld", "scd", __ptr, \
|
||||
__old, __new); \
|
||||
break; \
|
||||
} \
|
||||
default: \
|
||||
__cmpxchg_called_with_bad_pointer(); \
|
||||
break; \
|
||||
} \
|
||||
\
|
||||
post_barrier; \
|
||||
smp_mb__before_llsc(); \
|
||||
__res = cmpxchg_local((ptr), (old), (new)); \
|
||||
smp_llsc_mb(); \
|
||||
\
|
||||
__res; \
|
||||
})
|
||||
|
||||
#define cmpxchg(ptr, old, new) __cmpxchg(ptr, old, new, smp_mb__before_llsc(), smp_llsc_mb())
|
||||
#define cmpxchg_local(ptr, old, new) __cmpxchg(ptr, old, new, , )
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define cmpxchg64_local(ptr, o, n) \
|
||||
({ \
|
||||
@ -245,4 +205,6 @@ extern void __cmpxchg_called_with_bad_pointer(void);
|
||||
#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n))
|
||||
#endif
|
||||
|
||||
#undef __scbeqz
|
||||
|
||||
#endif /* __ASM_CMPXCHG_H */
|
||||
|
@ -138,6 +138,9 @@
|
||||
#ifndef cpu_has_mips16
|
||||
#define cpu_has_mips16 (cpu_data[0].ases & MIPS_ASE_MIPS16)
|
||||
#endif
|
||||
#ifndef cpu_has_mips16e2
|
||||
#define cpu_has_mips16e2 (cpu_data[0].ases & MIPS_ASE_MIPS16E2)
|
||||
#endif
|
||||
#ifndef cpu_has_mdmx
|
||||
#define cpu_has_mdmx (cpu_data[0].ases & MIPS_ASE_MDMX)
|
||||
#endif
|
||||
@ -487,6 +490,47 @@
|
||||
# define cpu_has_perf (cpu_data[0].options & MIPS_CPU_PERF)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SMP) && defined(__mips_isa_rev) && (__mips_isa_rev >= 6)
|
||||
/*
|
||||
* Some systems share FTLB RAMs between threads within a core (siblings in
|
||||
* kernel parlance). This means that FTLB entries may become invalid at almost
|
||||
* any point when an entry is evicted due to a sibling thread writing an entry
|
||||
* to the shared FTLB RAM.
|
||||
*
|
||||
* This is only relevant to SMP systems, and the only systems that exhibit this
|
||||
* property implement MIPSr6 or higher so we constrain support for this to
|
||||
* kernels that will run on such systems.
|
||||
*/
|
||||
# ifndef cpu_has_shared_ftlb_ram
|
||||
# define cpu_has_shared_ftlb_ram \
|
||||
(current_cpu_data.options & MIPS_CPU_SHARED_FTLB_RAM)
|
||||
# endif
|
||||
|
||||
/*
|
||||
* Some systems take this a step further & share FTLB entries between siblings.
|
||||
* This is implemented as TLB writes happening as usual, but if an entry
|
||||
* written by a sibling exists in the shared FTLB for a translation which would
|
||||
* otherwise cause a TLB refill exception then the CPU will use the entry
|
||||
* written by its sibling rather than triggering a refill & writing a matching
|
||||
* TLB entry for itself.
|
||||
*
|
||||
* This is naturally only valid if a TLB entry is known to be suitable for use
|
||||
* on all siblings in a CPU, and so it only takes effect when MMIDs are in use
|
||||
* rather than ASIDs or when a TLB entry is marked global.
|
||||
*/
|
||||
# ifndef cpu_has_shared_ftlb_entries
|
||||
# define cpu_has_shared_ftlb_entries \
|
||||
(current_cpu_data.options & MIPS_CPU_SHARED_FTLB_ENTRIES)
|
||||
# endif
|
||||
#endif /* SMP && __mips_isa_rev >= 6 */
|
||||
|
||||
#ifndef cpu_has_shared_ftlb_ram
|
||||
# define cpu_has_shared_ftlb_ram 0
|
||||
#endif
|
||||
#ifndef cpu_has_shared_ftlb_entries
|
||||
# define cpu_has_shared_ftlb_entries 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Guest capabilities
|
||||
*/
|
||||
|
@ -84,6 +84,7 @@ static inline int __pure __get_cpu_type(const int cpu_type)
|
||||
|
||||
#ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6
|
||||
case CPU_I6400:
|
||||
case CPU_I6500:
|
||||
case CPU_P6600:
|
||||
#endif
|
||||
|
||||
|
@ -124,6 +124,7 @@
|
||||
#define PRID_IMP_P5600 0xa800
|
||||
#define PRID_IMP_I6400 0xa900
|
||||
#define PRID_IMP_M6250 0xab00
|
||||
#define PRID_IMP_I6500 0xb000
|
||||
|
||||
/*
|
||||
* These are the PRID's for when 23:16 == PRID_COMP_SIBYTE
|
||||
@ -247,6 +248,7 @@
|
||||
#define PRID_REV_LOONGSON3B_R1 0x0006
|
||||
#define PRID_REV_LOONGSON3B_R2 0x0007
|
||||
#define PRID_REV_LOONGSON3A_R2 0x0008
|
||||
#define PRID_REV_LOONGSON3A_R3 0x0009
|
||||
|
||||
/*
|
||||
* Older processors used to encode processor version and revision in two
|
||||
@ -322,7 +324,7 @@ enum cpu_type_enum {
|
||||
*/
|
||||
CPU_5KC, CPU_5KE, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,
|
||||
CPU_LOONGSON3, CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS,
|
||||
CPU_CAVIUM_OCTEON2, CPU_CAVIUM_OCTEON3, CPU_XLR, CPU_XLP,
|
||||
CPU_CAVIUM_OCTEON2, CPU_CAVIUM_OCTEON3, CPU_XLR, CPU_XLP, CPU_I6500,
|
||||
|
||||
CPU_QEMU_GENERIC,
|
||||
|
||||
@ -416,6 +418,10 @@ enum cpu_type_enum {
|
||||
#define MIPS_CPU_GUESTID MBIT_ULL(51) /* CPU uses VZ ASE GuestID feature */
|
||||
#define MIPS_CPU_DRG MBIT_ULL(52) /* CPU has VZ Direct Root to Guest (DRG) */
|
||||
#define MIPS_CPU_UFR MBIT_ULL(53) /* CPU supports User mode FR switching */
|
||||
#define MIPS_CPU_SHARED_FTLB_RAM \
|
||||
MBIT_ULL(54) /* CPU shares FTLB RAM with another */
|
||||
#define MIPS_CPU_SHARED_FTLB_ENTRIES \
|
||||
MBIT_ULL(55) /* CPU shares FTLB entries with another */
|
||||
|
||||
/*
|
||||
* CPU ASE encodings
|
||||
@ -430,5 +436,6 @@ enum cpu_type_enum {
|
||||
#define MIPS_ASE_VZ 0x00000080 /* Virtualization ASE */
|
||||
#define MIPS_ASE_MSA 0x00000100 /* MIPS SIMD Architecture */
|
||||
#define MIPS_ASE_DSP3 0x00000200 /* Signal Processing ASE Rev 3*/
|
||||
#define MIPS_ASE_MIPS16E2 0x00000400 /* MIPS16e2 */
|
||||
|
||||
#endif /* _ASM_CPU_H */
|
||||
|
@ -18,7 +18,7 @@
|
||||
#include <irq.h>
|
||||
|
||||
#define IRQ_STACK_SIZE THREAD_SIZE
|
||||
#define IRQ_STACK_START (IRQ_STACK_SIZE - sizeof(unsigned long))
|
||||
#define IRQ_STACK_START (IRQ_STACK_SIZE - 16)
|
||||
|
||||
extern void *irq_stack[NR_CPUS];
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
#endif
|
||||
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -31,6 +31,7 @@
|
||||
#define cpu_has_ejtag 1
|
||||
#define cpu_has_llsc 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -19,6 +19,7 @@
|
||||
#define cpu_has_ejtag 1
|
||||
#define cpu_has_llsc 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -37,6 +37,7 @@
|
||||
#endif
|
||||
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define cpu_has_mcheck 0
|
||||
#define cpu_has_ejtag 0
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -27,7 +27,7 @@ static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
|
||||
outb_p(data, RTC_PORT(1));
|
||||
}
|
||||
|
||||
#define RTC_ALWAYS_BCD 1
|
||||
#define RTC_ALWAYS_BCD 0
|
||||
|
||||
#ifndef mc146818_decode_year
|
||||
#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1900)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#define cpu_has_32fpr 1
|
||||
#define cpu_has_counter 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_divec 0
|
||||
#define cpu_has_cache_cdex_p 1
|
||||
#define cpu_has_prefetch 0
|
||||
|
@ -43,6 +43,7 @@
|
||||
#define cpu_has_ejtag 0
|
||||
#define cpu_has_llsc 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
#define cpu_has_watch 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_divec 0
|
||||
#define cpu_has_vce 0
|
||||
#define cpu_has_cache_cdex_p 0
|
||||
|
@ -29,6 +29,7 @@
|
||||
#define cpu_has_32fpr 1
|
||||
#define cpu_has_counter 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_vce 0
|
||||
#define cpu_has_cache_cdex_s 0
|
||||
#define cpu_has_mcheck 0
|
||||
|
@ -23,6 +23,7 @@
|
||||
#define cpu_has_ejtag 1
|
||||
#define cpu_has_llsc 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -27,12 +27,22 @@ struct efi_memory_map_loongson {
|
||||
} __packed;
|
||||
|
||||
enum loongson_cpu_type {
|
||||
Loongson_2E = 0,
|
||||
Loongson_2F = 1,
|
||||
Loongson_3A = 2,
|
||||
Loongson_3B = 3,
|
||||
Loongson_1A = 4,
|
||||
Loongson_1B = 5
|
||||
Legacy_2E = 0x0,
|
||||
Legacy_2F = 0x1,
|
||||
Legacy_3A = 0x2,
|
||||
Legacy_3B = 0x3,
|
||||
Legacy_1A = 0x4,
|
||||
Legacy_1B = 0x5,
|
||||
Legacy_2G = 0x6,
|
||||
Legacy_2H = 0x7,
|
||||
Loongson_1A = 0x100,
|
||||
Loongson_1B = 0x101,
|
||||
Loongson_2E = 0x200,
|
||||
Loongson_2F = 0x201,
|
||||
Loongson_2G = 0x202,
|
||||
Loongson_2H = 0x203,
|
||||
Loongson_3A = 0x300,
|
||||
Loongson_3B = 0x301
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -32,6 +32,7 @@
|
||||
#define cpu_has_mcheck 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_mipsmt 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -13,6 +13,7 @@
|
||||
#define cpu_has_4k_cache 1
|
||||
#define cpu_has_watch 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_counter 1
|
||||
#define cpu_has_divec 1
|
||||
#define cpu_has_vce 0
|
||||
|
@ -48,6 +48,7 @@
|
||||
#define cpu_has_llsc 1
|
||||
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -17,6 +17,7 @@
|
||||
#define cpu_has_counter 1
|
||||
#define cpu_has_watch 0
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_divec 0
|
||||
#define cpu_has_cache_cdex_p 1
|
||||
#define cpu_has_prefetch 0
|
||||
|
@ -13,6 +13,7 @@
|
||||
*/
|
||||
#define cpu_has_watch 1
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_divec 1
|
||||
#define cpu_has_vce 0
|
||||
#define cpu_has_cache_cdex_p 0
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define cpu_has_inclusive_pcaches 0
|
||||
|
||||
#define cpu_has_mips16 0
|
||||
#define cpu_has_mips16e2 0
|
||||
#define cpu_has_mdmx 0
|
||||
#define cpu_has_mips3d 0
|
||||
#define cpu_has_smartmips 0
|
||||
|
@ -60,4 +60,35 @@ mips_machine_is_compatible(const struct mips_machine *mach, const void *fdt)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* struct mips_fdt_fixup - Describe a fixup to apply to an FDT
|
||||
* @apply: applies the fixup to @fdt, returns zero on success else -errno
|
||||
* @description: a short description of the fixup
|
||||
*
|
||||
* Describes a fixup applied to an FDT blob by the @apply function. The
|
||||
* @description field provides a short description of the fixup intended for
|
||||
* use in error messages if the @apply function returns non-zero.
|
||||
*/
|
||||
struct mips_fdt_fixup {
|
||||
int (*apply)(void *fdt);
|
||||
const char *description;
|
||||
};
|
||||
|
||||
/**
|
||||
* apply_mips_fdt_fixups() - apply fixups to an FDT blob
|
||||
* @fdt_out: buffer in which to place the fixed-up FDT
|
||||
* @fdt_out_size: the size of the @fdt_out buffer
|
||||
* @fdt_in: the FDT blob
|
||||
* @fixups: pointer to an array of fixups to be applied
|
||||
*
|
||||
* Loop through the array of fixups pointed to by @fixups, calling the apply
|
||||
* function on each until either one returns an error or we reach the end of
|
||||
* the list as indicated by an entry with a NULL apply field.
|
||||
*
|
||||
* Return: zero on success, else -errno
|
||||
*/
|
||||
extern int __init apply_mips_fdt_fixups(void *fdt_out, size_t fdt_out_size,
|
||||
const void *fdt_in,
|
||||
const struct mips_fdt_fixup *fixups);
|
||||
|
||||
#endif /* __MIPS_ASM_MACHINE_H__ */
|
||||
|
@ -652,6 +652,7 @@
|
||||
#define MIPS_CONF5_SBRI (_ULCAST_(1) << 6)
|
||||
#define MIPS_CONF5_FRE (_ULCAST_(1) << 8)
|
||||
#define MIPS_CONF5_UFE (_ULCAST_(1) << 9)
|
||||
#define MIPS_CONF5_CA2 (_ULCAST_(1) << 14)
|
||||
#define MIPS_CONF5_MSAEN (_ULCAST_(1) << 27)
|
||||
#define MIPS_CONF5_EVA (_ULCAST_(1) << 28)
|
||||
#define MIPS_CONF5_CV (_ULCAST_(1) << 29)
|
||||
|
@ -47,8 +47,8 @@ typedef struct {
|
||||
#define Elf_Mips_Rel Elf32_Rel
|
||||
#define Elf_Mips_Rela Elf32_Rela
|
||||
|
||||
#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM(rel.r_info)
|
||||
#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE(rel.r_info)
|
||||
#define ELF_MIPS_R_SYM(rel) ELF32_R_SYM((rel).r_info)
|
||||
#define ELF_MIPS_R_TYPE(rel) ELF32_R_TYPE((rel).r_info)
|
||||
|
||||
#endif
|
||||
|
||||
@ -65,8 +65,8 @@ typedef struct {
|
||||
#define Elf_Mips_Rel Elf64_Mips_Rel
|
||||
#define Elf_Mips_Rela Elf64_Mips_Rela
|
||||
|
||||
#define ELF_MIPS_R_SYM(rel) (rel.r_sym)
|
||||
#define ELF_MIPS_R_TYPE(rel) (rel.r_type)
|
||||
#define ELF_MIPS_R_SYM(rel) ((rel).r_sym)
|
||||
#define ELF_MIPS_R_TYPE(rel) ((rel).r_type)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -9,431 +9,9 @@
|
||||
#ifndef _ASM_SPINLOCK_H
|
||||
#define _ASM_SPINLOCK_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
/*
|
||||
* Your basic SMP spinlocks, allowing only a single CPU anywhere
|
||||
*
|
||||
* Simple spin lock operations. There are two variants, one clears IRQ's
|
||||
* on the local processor, one does not.
|
||||
*
|
||||
* These are fair FIFO ticket locks
|
||||
*
|
||||
* (the type definitions are in asm/spinlock_types.h)
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Ticket locks are conceptually two parts, one indicating the current head of
|
||||
* the queue, and the other indicating the current tail. The lock is acquired
|
||||
* by atomically noting the tail and incrementing it by one (thus adding
|
||||
* ourself to the queue and noting our position), then waiting until the head
|
||||
* becomes equal to the the initial value of the tail.
|
||||
*/
|
||||
|
||||
static inline int arch_spin_is_locked(arch_spinlock_t *lock)
|
||||
{
|
||||
u32 counters = ACCESS_ONCE(lock->lock);
|
||||
|
||||
return ((counters >> 16) ^ counters) & 0xffff;
|
||||
}
|
||||
|
||||
static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
|
||||
{
|
||||
return lock.h.serving_now == lock.h.ticket;
|
||||
}
|
||||
|
||||
#define arch_spin_lock_flags(lock, flags) arch_spin_lock(lock)
|
||||
|
||||
static inline void arch_spin_unlock_wait(arch_spinlock_t *lock)
|
||||
{
|
||||
u16 owner = READ_ONCE(lock->h.serving_now);
|
||||
smp_rmb();
|
||||
for (;;) {
|
||||
arch_spinlock_t tmp = READ_ONCE(*lock);
|
||||
|
||||
if (tmp.h.serving_now == tmp.h.ticket ||
|
||||
tmp.h.serving_now != owner)
|
||||
break;
|
||||
|
||||
cpu_relax();
|
||||
}
|
||||
smp_acquire__after_ctrl_dep();
|
||||
}
|
||||
|
||||
static inline int arch_spin_is_contended(arch_spinlock_t *lock)
|
||||
{
|
||||
u32 counters = ACCESS_ONCE(lock->lock);
|
||||
|
||||
return (((counters >> 16) - counters) & 0xffff) > 1;
|
||||
}
|
||||
#define arch_spin_is_contended arch_spin_is_contended
|
||||
|
||||
static inline void arch_spin_lock(arch_spinlock_t *lock)
|
||||
{
|
||||
int my_ticket;
|
||||
int tmp;
|
||||
int inc = 0x10000;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__ (
|
||||
" .set push # arch_spin_lock \n"
|
||||
" .set noreorder \n"
|
||||
" \n"
|
||||
"1: ll %[ticket], %[ticket_ptr] \n"
|
||||
" addu %[my_ticket], %[ticket], %[inc] \n"
|
||||
" sc %[my_ticket], %[ticket_ptr] \n"
|
||||
" beqzl %[my_ticket], 1b \n"
|
||||
" nop \n"
|
||||
" srl %[my_ticket], %[ticket], 16 \n"
|
||||
" andi %[ticket], %[ticket], 0xffff \n"
|
||||
" bne %[ticket], %[my_ticket], 4f \n"
|
||||
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
||||
"2: \n"
|
||||
" .subsection 2 \n"
|
||||
"4: andi %[ticket], %[ticket], 0xffff \n"
|
||||
" sll %[ticket], 5 \n"
|
||||
" \n"
|
||||
"6: bnez %[ticket], 6b \n"
|
||||
" subu %[ticket], 1 \n"
|
||||
" \n"
|
||||
" lhu %[ticket], %[serving_now_ptr] \n"
|
||||
" beq %[ticket], %[my_ticket], 2b \n"
|
||||
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
||||
" b 4b \n"
|
||||
" subu %[ticket], %[ticket], 1 \n"
|
||||
" .previous \n"
|
||||
" .set pop \n"
|
||||
: [ticket_ptr] "+" GCC_OFF_SMALL_ASM() (lock->lock),
|
||||
[serving_now_ptr] "+m" (lock->h.serving_now),
|
||||
[ticket] "=&r" (tmp),
|
||||
[my_ticket] "=&r" (my_ticket)
|
||||
: [inc] "r" (inc));
|
||||
} else {
|
||||
__asm__ __volatile__ (
|
||||
" .set push # arch_spin_lock \n"
|
||||
" .set noreorder \n"
|
||||
" \n"
|
||||
"1: ll %[ticket], %[ticket_ptr] \n"
|
||||
" addu %[my_ticket], %[ticket], %[inc] \n"
|
||||
" sc %[my_ticket], %[ticket_ptr] \n"
|
||||
" beqz %[my_ticket], 1b \n"
|
||||
" srl %[my_ticket], %[ticket], 16 \n"
|
||||
" andi %[ticket], %[ticket], 0xffff \n"
|
||||
" bne %[ticket], %[my_ticket], 4f \n"
|
||||
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
||||
"2: .insn \n"
|
||||
" .subsection 2 \n"
|
||||
"4: andi %[ticket], %[ticket], 0xffff \n"
|
||||
" sll %[ticket], 5 \n"
|
||||
" \n"
|
||||
"6: bnez %[ticket], 6b \n"
|
||||
" subu %[ticket], 1 \n"
|
||||
" \n"
|
||||
" lhu %[ticket], %[serving_now_ptr] \n"
|
||||
" beq %[ticket], %[my_ticket], 2b \n"
|
||||
" subu %[ticket], %[my_ticket], %[ticket] \n"
|
||||
" b 4b \n"
|
||||
" subu %[ticket], %[ticket], 1 \n"
|
||||
" .previous \n"
|
||||
" .set pop \n"
|
||||
: [ticket_ptr] "+" GCC_OFF_SMALL_ASM() (lock->lock),
|
||||
[serving_now_ptr] "+m" (lock->h.serving_now),
|
||||
[ticket] "=&r" (tmp),
|
||||
[my_ticket] "=&r" (my_ticket)
|
||||
: [inc] "r" (inc));
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
}
|
||||
|
||||
static inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||
{
|
||||
unsigned int serving_now = lock->h.serving_now + 1;
|
||||
wmb();
|
||||
lock->h.serving_now = (u16)serving_now;
|
||||
nudge_writes();
|
||||
}
|
||||
|
||||
static inline unsigned int arch_spin_trylock(arch_spinlock_t *lock)
|
||||
{
|
||||
int tmp, tmp2, tmp3;
|
||||
int inc = 0x10000;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__ (
|
||||
" .set push # arch_spin_trylock \n"
|
||||
" .set noreorder \n"
|
||||
" \n"
|
||||
"1: ll %[ticket], %[ticket_ptr] \n"
|
||||
" srl %[my_ticket], %[ticket], 16 \n"
|
||||
" andi %[now_serving], %[ticket], 0xffff \n"
|
||||
" bne %[my_ticket], %[now_serving], 3f \n"
|
||||
" addu %[ticket], %[ticket], %[inc] \n"
|
||||
" sc %[ticket], %[ticket_ptr] \n"
|
||||
" beqzl %[ticket], 1b \n"
|
||||
" li %[ticket], 1 \n"
|
||||
"2: \n"
|
||||
" .subsection 2 \n"
|
||||
"3: b 2b \n"
|
||||
" li %[ticket], 0 \n"
|
||||
" .previous \n"
|
||||
" .set pop \n"
|
||||
: [ticket_ptr] "+" GCC_OFF_SMALL_ASM() (lock->lock),
|
||||
[ticket] "=&r" (tmp),
|
||||
[my_ticket] "=&r" (tmp2),
|
||||
[now_serving] "=&r" (tmp3)
|
||||
: [inc] "r" (inc));
|
||||
} else {
|
||||
__asm__ __volatile__ (
|
||||
" .set push # arch_spin_trylock \n"
|
||||
" .set noreorder \n"
|
||||
" \n"
|
||||
"1: ll %[ticket], %[ticket_ptr] \n"
|
||||
" srl %[my_ticket], %[ticket], 16 \n"
|
||||
" andi %[now_serving], %[ticket], 0xffff \n"
|
||||
" bne %[my_ticket], %[now_serving], 3f \n"
|
||||
" addu %[ticket], %[ticket], %[inc] \n"
|
||||
" sc %[ticket], %[ticket_ptr] \n"
|
||||
" beqz %[ticket], 1b \n"
|
||||
" li %[ticket], 1 \n"
|
||||
"2: .insn \n"
|
||||
" .subsection 2 \n"
|
||||
"3: b 2b \n"
|
||||
" li %[ticket], 0 \n"
|
||||
" .previous \n"
|
||||
" .set pop \n"
|
||||
: [ticket_ptr] "+" GCC_OFF_SMALL_ASM() (lock->lock),
|
||||
[ticket] "=&r" (tmp),
|
||||
[my_ticket] "=&r" (tmp2),
|
||||
[now_serving] "=&r" (tmp3)
|
||||
: [inc] "r" (inc));
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read-write spinlocks, allowing multiple readers but only one writer.
|
||||
*
|
||||
* NOTE! it is quite common to have readers in interrupts but no interrupt
|
||||
* writers. For those circumstances we can "mix" irq-safe locks - any writer
|
||||
* needs to get a irq-safe write-lock, but readers can get non-irqsafe
|
||||
* read-locks.
|
||||
*/
|
||||
|
||||
/*
|
||||
* read_can_lock - would read_trylock() succeed?
|
||||
* @lock: the rwlock in question.
|
||||
*/
|
||||
#define arch_read_can_lock(rw) ((rw)->lock >= 0)
|
||||
|
||||
/*
|
||||
* write_can_lock - would write_trylock() succeed?
|
||||
* @lock: the rwlock in question.
|
||||
*/
|
||||
#define arch_write_can_lock(rw) (!(rw)->lock)
|
||||
|
||||
static inline void arch_read_lock(arch_rwlock_t *rw)
|
||||
{
|
||||
unsigned int tmp;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__(
|
||||
" .set noreorder # arch_read_lock \n"
|
||||
"1: ll %1, %2 \n"
|
||||
" bltz %1, 1b \n"
|
||||
" addu %1, 1 \n"
|
||||
" sc %1, %0 \n"
|
||||
" beqzl %1, 1b \n"
|
||||
" nop \n"
|
||||
" .set reorder \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} else {
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
"1: ll %1, %2 # arch_read_lock \n"
|
||||
" bltz %1, 1b \n"
|
||||
" addu %1, 1 \n"
|
||||
"2: sc %1, %0 \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} while (unlikely(!tmp));
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
}
|
||||
|
||||
static inline void arch_read_unlock(arch_rwlock_t *rw)
|
||||
{
|
||||
unsigned int tmp;
|
||||
|
||||
smp_mb__before_llsc();
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__(
|
||||
"1: ll %1, %2 # arch_read_unlock \n"
|
||||
" addiu %1, -1 \n"
|
||||
" sc %1, %0 \n"
|
||||
" beqzl %1, 1b \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} else {
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
"1: ll %1, %2 # arch_read_unlock \n"
|
||||
" addiu %1, -1 \n"
|
||||
" sc %1, %0 \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} while (unlikely(!tmp));
|
||||
}
|
||||
}
|
||||
|
||||
static inline void arch_write_lock(arch_rwlock_t *rw)
|
||||
{
|
||||
unsigned int tmp;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__(
|
||||
" .set noreorder # arch_write_lock \n"
|
||||
"1: ll %1, %2 \n"
|
||||
" bnez %1, 1b \n"
|
||||
" lui %1, 0x8000 \n"
|
||||
" sc %1, %0 \n"
|
||||
" beqzl %1, 1b \n"
|
||||
" nop \n"
|
||||
" .set reorder \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} else {
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
"1: ll %1, %2 # arch_write_lock \n"
|
||||
" bnez %1, 1b \n"
|
||||
" lui %1, 0x8000 \n"
|
||||
"2: sc %1, %0 \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} while (unlikely(!tmp));
|
||||
}
|
||||
|
||||
smp_llsc_mb();
|
||||
}
|
||||
|
||||
static inline void arch_write_unlock(arch_rwlock_t *rw)
|
||||
{
|
||||
smp_mb__before_llsc();
|
||||
|
||||
__asm__ __volatile__(
|
||||
" # arch_write_unlock \n"
|
||||
" sw $0, %0 \n"
|
||||
: "=m" (rw->lock)
|
||||
: "m" (rw->lock)
|
||||
: "memory");
|
||||
}
|
||||
|
||||
static inline int arch_read_trylock(arch_rwlock_t *rw)
|
||||
{
|
||||
unsigned int tmp;
|
||||
int ret;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__(
|
||||
" .set noreorder # arch_read_trylock \n"
|
||||
" li %2, 0 \n"
|
||||
"1: ll %1, %3 \n"
|
||||
" bltz %1, 2f \n"
|
||||
" addu %1, 1 \n"
|
||||
" sc %1, %0 \n"
|
||||
" .set reorder \n"
|
||||
" beqzl %1, 1b \n"
|
||||
" nop \n"
|
||||
__WEAK_LLSC_MB
|
||||
" li %2, 1 \n"
|
||||
"2: \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp), "=&r" (ret)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} else {
|
||||
__asm__ __volatile__(
|
||||
" .set noreorder # arch_read_trylock \n"
|
||||
" li %2, 0 \n"
|
||||
"1: ll %1, %3 \n"
|
||||
" bltz %1, 2f \n"
|
||||
" addu %1, 1 \n"
|
||||
" sc %1, %0 \n"
|
||||
" beqz %1, 1b \n"
|
||||
" nop \n"
|
||||
" .set reorder \n"
|
||||
__WEAK_LLSC_MB
|
||||
" li %2, 1 \n"
|
||||
"2: .insn \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp), "=&r" (ret)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int arch_write_trylock(arch_rwlock_t *rw)
|
||||
{
|
||||
unsigned int tmp;
|
||||
int ret;
|
||||
|
||||
if (R10000_LLSC_WAR) {
|
||||
__asm__ __volatile__(
|
||||
" .set noreorder # arch_write_trylock \n"
|
||||
" li %2, 0 \n"
|
||||
"1: ll %1, %3 \n"
|
||||
" bnez %1, 2f \n"
|
||||
" lui %1, 0x8000 \n"
|
||||
" sc %1, %0 \n"
|
||||
" beqzl %1, 1b \n"
|
||||
" nop \n"
|
||||
__WEAK_LLSC_MB
|
||||
" li %2, 1 \n"
|
||||
" .set reorder \n"
|
||||
"2: \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp), "=&r" (ret)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} else {
|
||||
do {
|
||||
__asm__ __volatile__(
|
||||
" ll %1, %3 # arch_write_trylock \n"
|
||||
" li %2, 0 \n"
|
||||
" bnez %1, 2f \n"
|
||||
" lui %1, 0x8000 \n"
|
||||
" sc %1, %0 \n"
|
||||
" li %2, 1 \n"
|
||||
"2: .insn \n"
|
||||
: "=" GCC_OFF_SMALL_ASM() (rw->lock), "=&r" (tmp),
|
||||
"=&r" (ret)
|
||||
: GCC_OFF_SMALL_ASM() (rw->lock)
|
||||
: "memory");
|
||||
} while (unlikely(!tmp));
|
||||
|
||||
smp_llsc_mb();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#include <asm/qrwlock.h>
|
||||
#include <asm/qspinlock.h>
|
||||
|
||||
#define arch_read_lock_flags(lock, flags) arch_read_lock(lock)
|
||||
#define arch_write_lock_flags(lock, flags) arch_write_lock(lock)
|
||||
|
@ -1,37 +1,7 @@
|
||||
#ifndef _ASM_SPINLOCK_TYPES_H
|
||||
#define _ASM_SPINLOCK_TYPES_H
|
||||
|
||||
#ifndef __LINUX_SPINLOCK_TYPES_H
|
||||
# error "please don't include this file directly"
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
typedef union {
|
||||
/*
|
||||
* bits 0..15 : serving_now
|
||||
* bits 16..31 : ticket
|
||||
*/
|
||||
u32 lock;
|
||||
struct {
|
||||
#ifdef __BIG_ENDIAN
|
||||
u16 ticket;
|
||||
u16 serving_now;
|
||||
#else
|
||||
u16 serving_now;
|
||||
u16 ticket;
|
||||
#endif
|
||||
} h;
|
||||
} arch_spinlock_t;
|
||||
|
||||
#define __ARCH_SPIN_LOCK_UNLOCKED { .lock = 0 }
|
||||
|
||||
typedef struct {
|
||||
volatile unsigned int lock;
|
||||
} arch_rwlock_t;
|
||||
|
||||
#define __ARCH_RW_LOCK_UNLOCKED { 0 }
|
||||
#include <asm-generic/qspinlock_types.h>
|
||||
#include <asm-generic/qrwlock_types.h>
|
||||
|
||||
#endif
|
||||
|
@ -85,7 +85,7 @@ static inline void syscall_set_return_value(struct task_struct *task,
|
||||
{
|
||||
if (error) {
|
||||
regs->regs[2] = -error;
|
||||
regs->regs[7] = -1;
|
||||
regs->regs[7] = 1;
|
||||
} else {
|
||||
regs->regs[2] = val;
|
||||
regs->regs[7] = 0;
|
||||
|
@ -72,9 +72,12 @@ Ip_u1u2s3(_beq);
|
||||
Ip_u1u2s3(_beql);
|
||||
Ip_u1s2(_bgez);
|
||||
Ip_u1s2(_bgezl);
|
||||
Ip_u1s2(_bgtz);
|
||||
Ip_u1s2(_blez);
|
||||
Ip_u1s2(_bltz);
|
||||
Ip_u1s2(_bltzl);
|
||||
Ip_u1u2s3(_bne);
|
||||
Ip_u1(_break);
|
||||
Ip_u2s3u1(_cache);
|
||||
Ip_u1u2(_cfc1);
|
||||
Ip_u2u1(_cfcmsa);
|
||||
@ -82,19 +85,28 @@ Ip_u1u2(_ctc1);
|
||||
Ip_u2u1(_ctcmsa);
|
||||
Ip_u2u1s3(_daddiu);
|
||||
Ip_u3u1u2(_daddu);
|
||||
Ip_u1u2(_ddivu);
|
||||
Ip_u1(_di);
|
||||
Ip_u2u1msbu3(_dins);
|
||||
Ip_u2u1msbu3(_dinsm);
|
||||
Ip_u2u1msbu3(_dinsu);
|
||||
Ip_u1u2(_divu);
|
||||
Ip_u1u2u3(_dmfc0);
|
||||
Ip_u1u2u3(_dmtc0);
|
||||
Ip_u1u2(_dmultu);
|
||||
Ip_u2u1u3(_drotr);
|
||||
Ip_u2u1u3(_drotr32);
|
||||
Ip_u2u1(_dsbh);
|
||||
Ip_u2u1(_dshd);
|
||||
Ip_u2u1u3(_dsll);
|
||||
Ip_u2u1u3(_dsll32);
|
||||
Ip_u3u2u1(_dsllv);
|
||||
Ip_u2u1u3(_dsra);
|
||||
Ip_u2u1u3(_dsra32);
|
||||
Ip_u3u2u1(_dsrav);
|
||||
Ip_u2u1u3(_dsrl);
|
||||
Ip_u2u1u3(_dsrl32);
|
||||
Ip_u3u2u1(_dsrlv);
|
||||
Ip_u3u1u2(_dsubu);
|
||||
Ip_0(_eret);
|
||||
Ip_u2u1msbu3(_ext);
|
||||
@ -104,6 +116,7 @@ Ip_u1(_jal);
|
||||
Ip_u2u1(_jalr);
|
||||
Ip_u1(_jr);
|
||||
Ip_u2s3u1(_lb);
|
||||
Ip_u2s3u1(_lbu);
|
||||
Ip_u2s3u1(_ld);
|
||||
Ip_u3u1u2(_ldx);
|
||||
Ip_u2s3u1(_lh);
|
||||
@ -112,27 +125,35 @@ Ip_u2s3u1(_ll);
|
||||
Ip_u2s3u1(_lld);
|
||||
Ip_u1s2(_lui);
|
||||
Ip_u2s3u1(_lw);
|
||||
Ip_u2s3u1(_lwu);
|
||||
Ip_u3u1u2(_lwx);
|
||||
Ip_u1u2u3(_mfc0);
|
||||
Ip_u1u2u3(_mfhc0);
|
||||
Ip_u1(_mfhi);
|
||||
Ip_u1(_mflo);
|
||||
Ip_u3u1u2(_movn);
|
||||
Ip_u3u1u2(_movz);
|
||||
Ip_u1u2u3(_mtc0);
|
||||
Ip_u1u2u3(_mthc0);
|
||||
Ip_u1(_mthi);
|
||||
Ip_u1(_mtlo);
|
||||
Ip_u3u1u2(_mul);
|
||||
Ip_u1u2(_multu);
|
||||
Ip_u3u1u2(_nor);
|
||||
Ip_u3u1u2(_or);
|
||||
Ip_u2u1u3(_ori);
|
||||
Ip_u2s3u1(_pref);
|
||||
Ip_0(_rfe);
|
||||
Ip_u2u1u3(_rotr);
|
||||
Ip_u2s3u1(_sb);
|
||||
Ip_u2s3u1(_sc);
|
||||
Ip_u2s3u1(_scd);
|
||||
Ip_u2s3u1(_sd);
|
||||
Ip_u2s3u1(_sh);
|
||||
Ip_u2u1u3(_sll);
|
||||
Ip_u3u2u1(_sllv);
|
||||
Ip_s3s1s2(_slt);
|
||||
Ip_u2u1s3(_slti);
|
||||
Ip_u2u1s3(_sltiu);
|
||||
Ip_u3u1u2(_sltu);
|
||||
Ip_u2u1u3(_sra);
|
||||
@ -248,6 +269,15 @@ static inline void uasm_i_dsrl_safe(u32 **p, unsigned int a1,
|
||||
uasm_i_dsrl32(p, a1, a2, a3 - 32);
|
||||
}
|
||||
|
||||
static inline void uasm_i_dsra_safe(u32 **p, unsigned int a1,
|
||||
unsigned int a2, unsigned int a3)
|
||||
{
|
||||
if (a3 < 32)
|
||||
uasm_i_dsra(p, a1, a2, a3);
|
||||
else
|
||||
uasm_i_dsra32(p, a1, a2, a3 - 32);
|
||||
}
|
||||
|
||||
/* Handle relocations. */
|
||||
struct uasm_reloc {
|
||||
u32 *addr;
|
||||
|
@ -79,8 +79,8 @@ union mips_vdso_data {
|
||||
struct {
|
||||
u64 xtime_sec;
|
||||
u64 xtime_nsec;
|
||||
u32 wall_to_mono_sec;
|
||||
u32 wall_to_mono_nsec;
|
||||
u64 wall_to_mono_sec;
|
||||
u64 wall_to_mono_nsec;
|
||||
u32 seq_count;
|
||||
u32 cs_shift;
|
||||
u8 clock_mode;
|
||||
|
64
arch/mips/include/asm/yamon-dt.h
Normal file
64
arch/mips/include/asm/yamon-dt.h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Imagination Technologies
|
||||
* Author: Paul Burton <paul.burton@imgtec.com>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef __MIPS_ASM_YAMON_DT_H__
|
||||
#define __MIPS_ASM_YAMON_DT_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* struct yamon_mem_region - Represents a contiguous range of physical RAM.
|
||||
* @start: Start physical address.
|
||||
* @size: Maximum size of region.
|
||||
* @discard: Length of additional memory to discard after the region.
|
||||
*/
|
||||
struct yamon_mem_region {
|
||||
phys_addr_t start;
|
||||
phys_addr_t size;
|
||||
phys_addr_t discard;
|
||||
};
|
||||
|
||||
/**
|
||||
* yamon_dt_append_cmdline() - Append YAMON-provided command line to /chosen
|
||||
* @fdt: the FDT blob
|
||||
*
|
||||
* Write the YAMON-provided command line to the bootargs property of the
|
||||
* /chosen node in @fdt.
|
||||
*
|
||||
* Return: 0 on success, else -errno
|
||||
*/
|
||||
extern __init int yamon_dt_append_cmdline(void *fdt);
|
||||
|
||||
/**
|
||||
* yamon_dt_append_memory() - Append YAMON-provided memory info to /memory
|
||||
* @fdt: the FDT blob
|
||||
* @regions: zero size terminated array of physical memory regions
|
||||
*
|
||||
* Generate a /memory node in @fdt based upon memory size information provided
|
||||
* by YAMON in its environment and the @regions array.
|
||||
*
|
||||
* Return: 0 on success, else -errno
|
||||
*/
|
||||
extern __init int yamon_dt_append_memory(void *fdt,
|
||||
const struct yamon_mem_region *regions);
|
||||
|
||||
/**
|
||||
* yamon_dt_serial_config() - Append YAMON-provided serial config to /chosen
|
||||
* @fdt: the FDT blob
|
||||
*
|
||||
* Generate a stdout-path property in the /chosen node of @fdt, based upon
|
||||
* information provided in the YAMON environment about the UART configuration
|
||||
* of the system.
|
||||
*
|
||||
* Return: 0 on success, else -errno
|
||||
*/
|
||||
extern __init int yamon_dt_serial_config(void *fdt);
|
||||
|
||||
#endif /* __MIPS_ASM_YAMON_DT_H__ */
|
@ -276,11 +276,18 @@ enum lx_func {
|
||||
*/
|
||||
enum bshfl_func {
|
||||
wsbh_op = 0x2,
|
||||
dshd_op = 0x5,
|
||||
seb_op = 0x10,
|
||||
seh_op = 0x18,
|
||||
};
|
||||
|
||||
/*
|
||||
* DBSHFL opcodes
|
||||
*/
|
||||
enum dbshfl_func {
|
||||
dsbh_op = 0x2,
|
||||
dshd_op = 0x5,
|
||||
};
|
||||
|
||||
/*
|
||||
* MSA minor opcodes.
|
||||
*/
|
||||
@ -755,6 +762,16 @@ struct msa_mi10_format { /* MSA MI10 */
|
||||
;))))))
|
||||
};
|
||||
|
||||
struct dsp_format { /* SPEC3 DSP format instructions */
|
||||
__BITFIELD_FIELD(unsigned int opcode : 6,
|
||||
__BITFIELD_FIELD(unsigned int base : 5,
|
||||
__BITFIELD_FIELD(unsigned int index : 5,
|
||||
__BITFIELD_FIELD(unsigned int rd : 5,
|
||||
__BITFIELD_FIELD(unsigned int op : 5,
|
||||
__BITFIELD_FIELD(unsigned int func : 6,
|
||||
;))))))
|
||||
};
|
||||
|
||||
struct spec3_format { /* SPEC3 */
|
||||
__BITFIELD_FIELD(unsigned int opcode:6,
|
||||
__BITFIELD_FIELD(unsigned int rs:5,
|
||||
@ -1046,6 +1063,7 @@ union mips_instruction {
|
||||
struct b_format b_format;
|
||||
struct ps_format ps_format;
|
||||
struct v_format v_format;
|
||||
struct dsp_format dsp_format;
|
||||
struct spec3_format spec3_format;
|
||||
struct fb_format fb_format;
|
||||
struct fp0_format fp0_format;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
extra-y := head.o vmlinux.lds
|
||||
|
||||
obj-y += cpu-probe.o branch.o elf.o entry.o genex.o idle.o irq.o \
|
||||
obj-y += cmpxchg.o cpu-probe.o branch.o elf.o entry.o genex.o idle.o irq.o \
|
||||
process.o prom.o ptrace.o reset.o setup.o signal.o \
|
||||
syscall.o time.o topology.o traps.o unaligned.o watch.o \
|
||||
vdso.o cacheinfo.o
|
||||
@ -31,7 +31,6 @@ obj-$(CONFIG_SYNC_R4K) += sync-r4k.o
|
||||
obj-$(CONFIG_DEBUG_FS) += segment.o
|
||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||
obj-$(CONFIG_MODULES) += module.o
|
||||
obj-$(CONFIG_MODULES_USE_ELF_RELA) += module-rela.o
|
||||
|
||||
obj-$(CONFIG_FTRACE_SYSCALLS) += ftrace.o
|
||||
obj-$(CONFIG_FUNCTION_TRACER) += mcount.o ftrace.o
|
||||
|
@ -399,7 +399,7 @@ int __MIPS16e_compute_return_epc(struct pt_regs *regs)
|
||||
*
|
||||
* @regs: Pointer to pt_regs
|
||||
* @insn: branch instruction to decode
|
||||
* @returns: -EFAULT on error and forces SIGBUS, and on success
|
||||
* @returns: -EFAULT on error and forces SIGILL, and on success
|
||||
* returns 0 or BRANCH_LIKELY_TAKEN as appropriate after
|
||||
* evaluating the branch.
|
||||
*
|
||||
@ -431,7 +431,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
/* Fall through */
|
||||
case jr_op:
|
||||
if (NO_R6EMU && insn.r_format.func == jr_op)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
regs->cp0_epc = regs->regs[insn.r_format.rs];
|
||||
break;
|
||||
}
|
||||
@ -446,7 +446,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
switch (insn.i_format.rt) {
|
||||
case bltzl_op:
|
||||
if (NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case bltz_op:
|
||||
if ((long)regs->regs[insn.i_format.rs] < 0) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
@ -459,7 +459,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
|
||||
case bgezl_op:
|
||||
if (NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case bgez_op:
|
||||
if ((long)regs->regs[insn.i_format.rs] >= 0) {
|
||||
epc = epc + 4 + (insn.i_format.simmediate << 2);
|
||||
@ -473,10 +473,8 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
case bltzal_op:
|
||||
case bltzall_op:
|
||||
if (NO_R6EMU && (insn.i_format.rs ||
|
||||
insn.i_format.rt == bltzall_op)) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
insn.i_format.rt == bltzall_op))
|
||||
goto sigill_r2r6;
|
||||
regs->regs[31] = epc + 8;
|
||||
/*
|
||||
* OK we are here either because we hit a NAL
|
||||
@ -507,10 +505,8 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
case bgezal_op:
|
||||
case bgezall_op:
|
||||
if (NO_R6EMU && (insn.i_format.rs ||
|
||||
insn.i_format.rt == bgezall_op)) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
insn.i_format.rt == bgezall_op))
|
||||
goto sigill_r2r6;
|
||||
regs->regs[31] = epc + 8;
|
||||
/*
|
||||
* OK we are here either because we hit a BAL
|
||||
@ -556,6 +552,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
/*
|
||||
* These are unconditional and in j_format.
|
||||
*/
|
||||
case jalx_op:
|
||||
case jal_op:
|
||||
regs->regs[31] = regs->cp0_epc + 8;
|
||||
case j_op:
|
||||
@ -573,7 +570,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
*/
|
||||
case beql_op:
|
||||
if (NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case beq_op:
|
||||
if (regs->regs[insn.i_format.rs] ==
|
||||
regs->regs[insn.i_format.rt]) {
|
||||
@ -587,7 +584,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
|
||||
case bnel_op:
|
||||
if (NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case bne_op:
|
||||
if (regs->regs[insn.i_format.rs] !=
|
||||
regs->regs[insn.i_format.rt]) {
|
||||
@ -601,7 +598,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
|
||||
case blezl_op: /* not really i_format */
|
||||
if (!insn.i_format.rt && NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case blez_op:
|
||||
/*
|
||||
* Compact branches for R6 for the
|
||||
@ -636,7 +633,7 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
|
||||
case bgtzl_op:
|
||||
if (!insn.i_format.rt && NO_R6EMU)
|
||||
goto sigill_r6;
|
||||
goto sigill_r2r6;
|
||||
case bgtz_op:
|
||||
/*
|
||||
* Compact branches for R6 for the
|
||||
@ -774,35 +771,27 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
#else
|
||||
case bc6_op:
|
||||
/* Only valid for MIPS R6 */
|
||||
if (!cpu_has_mips_r6) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
if (!cpu_has_mips_r6)
|
||||
goto sigill_r6;
|
||||
regs->cp0_epc += 8;
|
||||
break;
|
||||
case balc6_op:
|
||||
if (!cpu_has_mips_r6) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
if (!cpu_has_mips_r6)
|
||||
goto sigill_r6;
|
||||
/* Compact branch: BALC */
|
||||
regs->regs[31] = epc + 4;
|
||||
epc += 4 + (insn.i_format.simmediate << 2);
|
||||
regs->cp0_epc = epc;
|
||||
break;
|
||||
case pop66_op:
|
||||
if (!cpu_has_mips_r6) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
if (!cpu_has_mips_r6)
|
||||
goto sigill_r6;
|
||||
/* Compact branch: BEQZC || JIC */
|
||||
regs->cp0_epc += 8;
|
||||
break;
|
||||
case pop76_op:
|
||||
if (!cpu_has_mips_r6) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
if (!cpu_has_mips_r6)
|
||||
goto sigill_r6;
|
||||
/* Compact branch: BNEZC || JIALC */
|
||||
if (!insn.i_format.rs) {
|
||||
/* JIALC: set $31/ra */
|
||||
@ -814,10 +803,8 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
case pop10_op:
|
||||
case pop30_op:
|
||||
/* Only valid for MIPS R6 */
|
||||
if (!cpu_has_mips_r6) {
|
||||
ret = -SIGILL;
|
||||
break;
|
||||
}
|
||||
if (!cpu_has_mips_r6)
|
||||
goto sigill_r6;
|
||||
/*
|
||||
* Compact branches:
|
||||
* bovc, beqc, beqzalc, bnvc, bnec, bnezlac
|
||||
@ -831,12 +818,18 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
|
||||
return ret;
|
||||
|
||||
sigill_dsp:
|
||||
printk("%s: DSP branch but not DSP ASE - sending SIGBUS.\n", current->comm);
|
||||
force_sig(SIGBUS, current);
|
||||
pr_debug("%s: DSP branch but not DSP ASE - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
return -EFAULT;
|
||||
sigill_r2r6:
|
||||
pr_debug("%s: R2 branch but r2-to-r6 emulator is not present - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
return -EFAULT;
|
||||
sigill_r6:
|
||||
pr_info("%s: R2 branch but r2-to-r6 emulator is not preset - sending SIGILL.\n",
|
||||
current->comm);
|
||||
pr_debug("%s: R6 branch but no MIPSr6 ISA support - sending SIGILL.\n",
|
||||
current->comm);
|
||||
force_sig(SIGILL, current);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
109
arch/mips/kernel/cmpxchg.c
Normal file
109
arch/mips/kernel/cmpxchg.c
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Imagination Technologies
|
||||
* Author: Paul Burton <paul.burton@imgtec.com>
|
||||
*
|
||||
* 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 <linux/bitops.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
|
||||
unsigned long __xchg_small(volatile void *ptr, unsigned long val, unsigned int size)
|
||||
{
|
||||
u32 old32, new32, load32, mask;
|
||||
volatile u32 *ptr32;
|
||||
unsigned int shift;
|
||||
|
||||
/* Check that ptr is naturally aligned */
|
||||
WARN_ON((unsigned long)ptr & (size - 1));
|
||||
|
||||
/* Mask value to the correct size. */
|
||||
mask = GENMASK((size * BITS_PER_BYTE) - 1, 0);
|
||||
val &= mask;
|
||||
|
||||
/*
|
||||
* Calculate a shift & mask that correspond to the value we wish to
|
||||
* exchange within the naturally aligned 4 byte integerthat includes
|
||||
* it.
|
||||
*/
|
||||
shift = (unsigned long)ptr & 0x3;
|
||||
if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN))
|
||||
shift ^= sizeof(u32) - size;
|
||||
shift *= BITS_PER_BYTE;
|
||||
mask <<= shift;
|
||||
|
||||
/*
|
||||
* Calculate a pointer to the naturally aligned 4 byte integer that
|
||||
* includes our byte of interest, and load its value.
|
||||
*/
|
||||
ptr32 = (volatile u32 *)((unsigned long)ptr & ~0x3);
|
||||
load32 = *ptr32;
|
||||
|
||||
do {
|
||||
old32 = load32;
|
||||
new32 = (load32 & ~mask) | (val << shift);
|
||||
load32 = cmpxchg(ptr32, old32, new32);
|
||||
} while (load32 != old32);
|
||||
|
||||
return (load32 & mask) >> shift;
|
||||
}
|
||||
|
||||
unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old,
|
||||
unsigned long new, unsigned int size)
|
||||
{
|
||||
u32 mask, old32, new32, load32;
|
||||
volatile u32 *ptr32;
|
||||
unsigned int shift;
|
||||
u8 load;
|
||||
|
||||
/* Check that ptr is naturally aligned */
|
||||
WARN_ON((unsigned long)ptr & (size - 1));
|
||||
|
||||
/* Mask inputs to the correct size. */
|
||||
mask = GENMASK((size * BITS_PER_BYTE) - 1, 0);
|
||||
old &= mask;
|
||||
new &= mask;
|
||||
|
||||
/*
|
||||
* Calculate a shift & mask that correspond to the value we wish to
|
||||
* compare & exchange within the naturally aligned 4 byte integer
|
||||
* that includes it.
|
||||
*/
|
||||
shift = (unsigned long)ptr & 0x3;
|
||||
if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN))
|
||||
shift ^= sizeof(u32) - size;
|
||||
shift *= BITS_PER_BYTE;
|
||||
mask <<= shift;
|
||||
|
||||
/*
|
||||
* Calculate a pointer to the naturally aligned 4 byte integer that
|
||||
* includes our byte of interest, and load its value.
|
||||
*/
|
||||
ptr32 = (volatile u32 *)((unsigned long)ptr & ~0x3);
|
||||
load32 = *ptr32;
|
||||
|
||||
while (true) {
|
||||
/*
|
||||
* Ensure the byte we want to exchange matches the expected
|
||||
* old value, and if not then bail.
|
||||
*/
|
||||
load = (load32 & mask) >> shift;
|
||||
if (load != old)
|
||||
return load;
|
||||
|
||||
/*
|
||||
* Calculate the old & new values of the naturally aligned
|
||||
* 4 byte integer that include the byte we want to exchange.
|
||||
* Attempt to exchange the old value for the new value, and
|
||||
* return if we succeed.
|
||||
*/
|
||||
old32 = (load32 & ~mask) | (old << shift);
|
||||
new32 = (load32 & ~mask) | (new << shift);
|
||||
load32 = cmpxchg(ptr32, old32, new32);
|
||||
if (load32 == old32)
|
||||
return old;
|
||||
}
|
||||
}
|
@ -22,6 +22,7 @@
|
||||
#define GCR_CL_COHERENCE_OFS 0x2008
|
||||
#define GCR_CL_ID_OFS 0x2028
|
||||
|
||||
#define CPC_CL_VC_STOP_OFS 0x2020
|
||||
#define CPC_CL_VC_RUN_OFS 0x2028
|
||||
|
||||
.extern mips_cm_base
|
||||
@ -376,8 +377,12 @@ LEAF(mips_cps_boot_vpes)
|
||||
PTR_LI t2, UNCAC_BASE
|
||||
PTR_ADD t1, t1, t2
|
||||
|
||||
/* Set VC_RUN to the VPE mask */
|
||||
/* Start any other VPs that ought to be running */
|
||||
PTR_S ta2, CPC_CL_VC_RUN_OFS(t1)
|
||||
|
||||
/* Ensure this VP stops running if it shouldn't be */
|
||||
not ta2
|
||||
PTR_S ta2, CPC_CL_VC_STOP_OFS(t1)
|
||||
ehb
|
||||
|
||||
#elif defined(CONFIG_MIPS_MT)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user