diff options
| author | Adrian Dudau <adrian.dudau@enea.com> | 2013-12-12 17:36:38 +0100 |
|---|---|---|
| committer | Adrian Dudau <adrian.dudau@enea.com> | 2013-12-12 17:36:38 +0100 |
| commit | 2a7348129a42f21095fcd62e47a035f78d254130 (patch) | |
| tree | 544dc8019a8f8cb684ace8674193605e607f9964 /recipes-kernel | |
| download | meta-enea-master.tar.gz | |
Migrated from the internal git server on the dora-enea branch
Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
Diffstat (limited to 'recipes-kernel')
88 files changed, 38225 insertions, 0 deletions
diff --git a/recipes-kernel/linux/files/add-no-error-array-bounds.patch b/recipes-kernel/linux/files/add-no-error-array-bounds.patch new file mode 100644 index 0000000..57b3974 --- /dev/null +++ b/recipes-kernel/linux/files/add-no-error-array-bounds.patch | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | Index: git/Makefile | ||
| 2 | =================================================================== | ||
| 3 | --- git.orig/Makefile | ||
| 4 | +++ git/Makefile | ||
| 5 | @@ -558,7 +558,7 @@ endif # $(dot-config) | ||
| 6 | # Defaults to vmlinux, but the arch makefile usually adds further targets | ||
| 7 | all: vmlinux | ||
| 8 | |||
| 9 | -KBUILD_CFLAGS += -Wno-unused-but-set-variable | ||
| 10 | +KBUILD_CFLAGS += -Wno-unused-but-set-variable -Wno-error=array-bounds | ||
| 11 | |||
| 12 | ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE | ||
| 13 | KBUILD_CFLAGS += -Os | ||
diff --git a/recipes-kernel/linux/files/add-no-error-uninitialized.patch b/recipes-kernel/linux/files/add-no-error-uninitialized.patch new file mode 100644 index 0000000..a70b089 --- /dev/null +++ b/recipes-kernel/linux/files/add-no-error-uninitialized.patch | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | diff --git a/Makefile b/Makefile | ||
| 2 | index 183eff3..88fd9c1 100644 | ||
| 3 | --- a/Makefile | ||
| 4 | +++ b/Makefile | ||
| 5 | @@ -370,6 +370,7 @@ LINUXINCLUDE := \ | ||
| 6 | KBUILD_CPPFLAGS := -D__KERNEL__ | ||
| 7 | |||
| 8 | KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ | ||
| 9 | + -Wno-error=uninitialized \ | ||
| 10 | -fno-strict-aliasing -fno-common \ | ||
| 11 | -Werror-implicit-function-declaration \ | ||
| 12 | -Wno-format-security \ | ||
| 13 | diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile | ||
| 14 | index 0624909..5d13d66 100644 | ||
| 15 | --- a/arch/powerpc/Makefile | ||
| 16 | +++ b/arch/powerpc/Makefile | ||
| 17 | @@ -17,6 +17,7 @@ HAS_BIARCH := $(call cc-option-yn, -m32) | ||
| 18 | # Set default 32 bits cross compilers for vdso and boot wrapper | ||
| 19 | CROSS32_COMPILE ?= | ||
| 20 | |||
| 21 | +KBUILD_CFLAGS += -Wno-error=uninitialized | ||
| 22 | CROSS32CC := $(CROSS32_COMPILE)gcc | ||
| 23 | CROSS32AR := $(CROSS32_COMPILE)ar | ||
| 24 | |||
| 25 | @@ -67,7 +68,6 @@ LDFLAGS_vmlinux-y := -Bstatic | ||
| 26 | LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie | ||
| 27 | LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y) | ||
| 28 | |||
| 29 | -LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name) | ||
| 30 | |||
| 31 | ifeq ($(CONFIG_PPC64),y) | ||
| 32 | ifeq ($(call cc-option-yn,-mcmodel=medium),y) | ||
| 33 | @@ -176,7 +176,6 @@ core-$(CONFIG_PERF_EVENTS) += arch/powerpc/perf/ | ||
| 34 | |||
| 35 | drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/ | ||
| 36 | |||
| 37 | -libs-y += $(LIBGCC) | ||
| 38 | |||
| 39 | # Default to zImage, override when needed | ||
| 40 | all: zImage | ||
| 41 | diff --git a/arch/powerpc/perf/Makefile b/arch/powerpc/perf/Makefile | ||
| 42 | index 06dd8d5..8bf06fd 100644 | ||
| 43 | --- a/arch/powerpc/perf/Makefile | ||
| 44 | +++ b/arch/powerpc/perf/Makefile | ||
| 45 | @@ -1,4 +1,4 @@ | ||
| 46 | -subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror | ||
| 47 | +subdir-ccflags-$(CONFIG_PPC_WERROR) := -Wno-error=uninitialized | ||
| 48 | |||
| 49 | obj-$(CONFIG_PERF_EVENTS) += callchain.o | ||
| 50 | |||
| 51 | diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile | ||
| 52 | index fa63186..d592e84 100644 | ||
| 53 | --- a/arch/powerpc/sysdev/Makefile | ||
| 54 | +++ b/arch/powerpc/sysdev/Makefile | ||
| 55 | @@ -1,4 +1,4 @@ | ||
| 56 | -subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror | ||
| 57 | +subdir-ccflags-$(CONFIG_PPC_WERROR) := -Wno-error=uninitialized | ||
| 58 | |||
| 59 | ccflags-$(CONFIG_PPC64) := $(NO_MINIMAL_TOC) | ||
| 60 | |||
| 61 | @@ -67,8 +67,6 @@ endif | ||
| 62 | |||
| 63 | obj-$(CONFIG_PPC_SCOM) += scom.o | ||
| 64 | |||
| 65 | -subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror | ||
| 66 | - | ||
| 67 | obj-$(CONFIG_PPC_XICS) += xics/ | ||
| 68 | |||
| 69 | obj-$(CONFIG_GE_FPGA) += ge/ | ||
diff --git a/recipes-kernel/linux/files/add-no-unused-but-set-variable.patch b/recipes-kernel/linux/files/add-no-unused-but-set-variable.patch new file mode 100644 index 0000000..5133529 --- /dev/null +++ b/recipes-kernel/linux/files/add-no-unused-but-set-variable.patch | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | diff --git a/Makefile b/Makefile | ||
| 2 | index e821f72..cb2fcba 100644 | ||
| 3 | --- a/Makefile | ||
| 4 | +++ b/Makefile | ||
| 5 | @@ -526,6 +526,8 @@ endif # $(dot-config) | ||
| 6 | # Defaults vmlinux but it is usually overridden in the arch makefile | ||
| 7 | all: vmlinux | ||
| 8 | |||
| 9 | +KBUILD_CFLAGS += -Wno-unused-but-set-variable | ||
| 10 | + | ||
| 11 | ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE | ||
| 12 | KBUILD_CFLAGS += -Os | ||
| 13 | else | ||
diff --git a/recipes-kernel/linux/files/cfg/bootlogd.cfg b/recipes-kernel/linux/files/cfg/bootlogd.cfg new file mode 100644 index 0000000..0d83d11 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/bootlogd.cfg | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | CONFIG_LEGACY_PTYS=y | ||
| 2 | CONFIG_LEGACY_PTY_COUNT=256 | ||
diff --git a/recipes-kernel/linux/files/cfg/debug.cfg b/recipes-kernel/linux/files/cfg/debug.cfg new file mode 100644 index 0000000..e4b87d5 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/debug.cfg | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | |||
| 2 | CONFIG_STACKTRACE_SUPPORT=n | ||
| 3 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 4 | CONFIG_LOCKDEP_SUPPORT=n | ||
| 5 | |||
| 6 | CONFIG_GENERIC_TBSYNC=y | ||
| 7 | CONFIG_GENERIC_BUG=y | ||
| 8 | |||
| 9 | CONFIG_PERF_EVENTS=y | ||
| 10 | CONFIG_PERF_COUNTERS=y | ||
| 11 | |||
| 12 | CONFIG_RCU_TRACE=y | ||
| 13 | CONFIG_TREE_RCU_TRACE=y | ||
| 14 | |||
| 15 | CONFIG_DEBUG_KERNEL=y | ||
| 16 | |||
| 17 | CONFIG_EXT2_FS=y | ||
| 18 | CONFIG_EXT3_FS=y | ||
| 19 | CONFIG_EXT3_FS_XATTR=y | ||
| 20 | CONFIG_SYSFS=y | ||
| 21 | CONFIG_TMPFS=y | ||
| 22 | CONFIG_DEBUG_FS=y | ||
| 23 | |||
| 24 | CONFIG_TRACING_SUPPORT=y | ||
| 25 | CONFIG_FTRACE=n | ||
| 26 | CONFIG_FTRACE_SYSCALLS=n | ||
| 27 | CONFIG_STACK_TRACER=y | ||
diff --git a/recipes-kernel/linux/files/cfg/devtmpfs.cfg b/recipes-kernel/linux/files/cfg/devtmpfs.cfg new file mode 100644 index 0000000..5e9cf98 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/devtmpfs.cfg | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | CONFIG_DEVTMPFS=y | ||
| 2 | CONFIG_DEVTMPFS_MOUNT=y | ||
diff --git a/recipes-kernel/linux/files/cfg/dpa.cfg b/recipes-kernel/linux/files/cfg/dpa.cfg new file mode 100644 index 0000000..c873cd5 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/dpa.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_FSL_FM_MAX_FRAME_SIZE=9600 | |||
diff --git a/recipes-kernel/linux/files/cfg/e500mc_debug.cfg b/recipes-kernel/linux/files/cfg/e500mc_debug.cfg new file mode 100644 index 0000000..eaddbaf --- /dev/null +++ b/recipes-kernel/linux/files/cfg/e500mc_debug.cfg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | CONFIG_FSL_EMB_PERFMON=y | ||
| 2 | CONFIG_FSL_EMB_PERF_EVENT=y | ||
| 3 | CONFIG_FSL_EMB_PERF_EVENT_E500=y | ||
| 4 | |||
| 5 | CONFIG_PPC_OF=y | ||
| 6 | CONFIG_PPC_UDBG_16550=y | ||
diff --git a/recipes-kernel/linux/files/cfg/embedded.cfg b/recipes-kernel/linux/files/cfg/embedded.cfg new file mode 100644 index 0000000..2f0e6bf --- /dev/null +++ b/recipes-kernel/linux/files/cfg/embedded.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_EMBEDDED=y | |||
diff --git a/recipes-kernel/linux/files/cfg/i2c.cfg b/recipes-kernel/linux/files/cfg/i2c.cfg new file mode 100644 index 0000000..8dbcc3c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/i2c.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_I2C_CHARDEV=y | |||
diff --git a/recipes-kernel/linux/files/cfg/igb_drv.cfg b/recipes-kernel/linux/files/cfg/igb_drv.cfg new file mode 100644 index 0000000..3498fd0 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/igb_drv.cfg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_IGB=y | ||
| 2 | CONFIG_IGB_DCA=y | ||
| 3 | CONFIG_IGBVF=y | ||
diff --git a/recipes-kernel/linux/files/cfg/ikconfig.cfg b/recipes-kernel/linux/files/cfg/ikconfig.cfg new file mode 100644 index 0000000..9e7666c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/ikconfig.cfg | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | CONFIG_IKCONFIG=y | ||
| 2 | CONFIG_IKCONFIG_PROC=y | ||
diff --git a/recipes-kernel/linux/files/cfg/kgdb.cfg b/recipes-kernel/linux/files/cfg/kgdb.cfg new file mode 100644 index 0000000..f23cfe3 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/kgdb.cfg | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #depends | ||
| 2 | CONFIG_DEBUG_KERNEL=y | ||
| 3 | CONFIG_EXPERIMENTAL=y | ||
| 4 | |||
| 5 | #configs | ||
| 6 | CONFIG_KGDB=y | ||
| 7 | CONFIG_KGDB_SERIAL_CONSOLE=y | ||
| 8 | CONFIG_KGDB_KDB=y | ||
| 9 | CONFIG_MAGIC_SYSRQ=y | ||
diff --git a/recipes-kernel/linux/files/cfg/kprobes.cfg b/recipes-kernel/linux/files/cfg/kprobes.cfg new file mode 100644 index 0000000..e24be27 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/kprobes.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_KPROBES=y | |||
diff --git a/recipes-kernel/linux/files/cfg/latencytop.cfg b/recipes-kernel/linux/files/cfg/latencytop.cfg new file mode 100644 index 0000000..0a42694 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/latencytop.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_LATENCYTOP=y | |||
diff --git a/recipes-kernel/linux/files/cfg/localversion.cfg b/recipes-kernel/linux/files/cfg/localversion.cfg new file mode 100644 index 0000000..71481b4 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/localversion.cfg | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | CONFIG_LOCALVERSION_AUTO=n | ||
| 2 | CONFIG_DEFAULT_HOSTNAME="(none)" | ||
diff --git a/recipes-kernel/linux/files/cfg/ltp.cfg b/recipes-kernel/linux/files/cfg/ltp.cfg new file mode 100644 index 0000000..e36a9c2 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/ltp.cfg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_TUN=y | ||
| 2 | CONFIG_KSM=y | ||
| 3 | CONFIG_NUMA=y | ||
diff --git a/recipes-kernel/linux/files/cfg/lttng.cfg b/recipes-kernel/linux/files/cfg/lttng.cfg new file mode 100644 index 0000000..1334194 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/lttng.cfg | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | CONFIG_MODULES=y | ||
| 2 | CONFIG_KALLSYMS=y | ||
| 3 | CONFIG_HIGH_RES_TIMERS=y | ||
| 4 | CONFIG_TRACEPOINTS=y | ||
| 5 | CONFIG_FTRACE=y | ||
| 6 | CONFIG_PERF_EVENTS=y | ||
| 7 | CONFIG_EVENT_TRACING=y | ||
| 8 | CONFIG_KPROBES=y | ||
| 9 | CONFIG_KRETPROBES=y | ||
| 10 | CONFIG_FUNCTION_TRACER=y | ||
| 11 | CONFIG_FUNCTION_GRAPH_TRACER=y | ||
| 12 | CONFIG_IRQSOFF_TRACER=y | ||
| 13 | CONFIG_PREEMPT_TRACER=y | ||
| 14 | CONFIG_SCHED_TRACER=y | ||
| 15 | CONFIG_NOP_TRACER=y | ||
| 16 | CONFIG_CONTEXT_SWITCH_TRACER=y | ||
| 17 | CONFIG_GENERIC_TRACER=y | ||
| 18 | CONFIG_TRACER_MAX_TRACE=y | ||
| 19 | CONFIG_TRACER_SNAPSHOT=y | ||
| 20 | CONFIG_STACK_TRACER=n | ||
diff --git a/recipes-kernel/linux/files/cfg/mtd_tests.cfg b/recipes-kernel/linux/files/cfg/mtd_tests.cfg new file mode 100644 index 0000000..1477bd7 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/mtd_tests.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_MTD_TESTS=m | |||
diff --git a/recipes-kernel/linux/files/cfg/oprofile.cfg b/recipes-kernel/linux/files/cfg/oprofile.cfg new file mode 100644 index 0000000..959e94b --- /dev/null +++ b/recipes-kernel/linux/files/cfg/oprofile.cfg | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | CONFIG_PROFILING=y | ||
| 2 | CONFIG_OPROFILE=m | ||
| 3 | CONFIG_PROFILE_ALL_BRANCHES=y | ||
| 4 | CONFIG_OPROFILE_NMI_TIMER=y | ||
diff --git a/recipes-kernel/linux/files/cfg/perf.cfg b/recipes-kernel/linux/files/cfg/perf.cfg new file mode 100644 index 0000000..5fddec0 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/perf.cfg | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | CONFIG_CGROUP_PERF=y | ||
| 2 | CONFIG_PERF_EVENTS=y | ||
diff --git a/recipes-kernel/linux/files/cfg/powertop.cfg b/recipes-kernel/linux/files/cfg/powertop.cfg new file mode 100644 index 0000000..655c101 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/powertop.cfg | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | CONFIG_EXPERT=y | ||
| 2 | CONFIG_PROC_FS=y | ||
| 3 | CONFIG_DEBUG_FS=y | ||
| 4 | CONFIG_NO_HZ=y | ||
| 5 | CONFIG_HIGH_RES_TIMERS=y | ||
| 6 | CONFIG_HPET_TIMER=y | ||
| 7 | CONFIG_CPU_FREQ=y | ||
| 8 | CONFIG_CPU_FREQ_GOV_ONDEMAND=y | ||
| 9 | CONFIG_TIMER_STATS=y | ||
| 10 | CONFIG_PERF_EVENTS=y | ||
| 11 | CONFIG_TRACEPOINTS=y | ||
| 12 | CONFIG_TRACING=y | ||
| 13 | CONFIG_X86_MSR=y | ||
diff --git a/recipes-kernel/linux/files/cfg/pramfs-bsc913x.cfg b/recipes-kernel/linux/files/cfg/pramfs-bsc913x.cfg new file mode 100644 index 0000000..1476224 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/pramfs-bsc913x.cfg | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | CONFIG_MISC_FILESYSTEMS=y | ||
| 2 | CONFIG_PRAMFS=y | ||
| 3 | CONFIG_PRAMFS_TEST=y | ||
| 4 | CONFIG_TEST_MODULE=m | ||
| 5 | |||
diff --git a/recipes-kernel/linux/files/cfg/pramfs.cfg b/recipes-kernel/linux/files/cfg/pramfs.cfg new file mode 100644 index 0000000..21aabc1 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/pramfs.cfg | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | CONFIG_MISC_FILESYSTEMS=y | ||
| 2 | CONFIG_PRAMFS=y | ||
| 3 | CONFIG_PRAMFS_XATTR=y | ||
| 4 | CONFIG_PRAMFS_TEST_MODULE=m | ||
diff --git a/recipes-kernel/linux/files/cfg/preempt.cfg b/recipes-kernel/linux/files/cfg/preempt.cfg new file mode 100644 index 0000000..0d9cc42 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/preempt.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_PREEMPT=y | |||
diff --git a/recipes-kernel/linux/files/cfg/root_nfs.cfg b/recipes-kernel/linux/files/cfg/root_nfs.cfg new file mode 100644 index 0000000..f8d8748 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/root_nfs.cfg | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | CONFIG_NETWORK_FILESYSTEMS=y | ||
| 2 | CONFIG_NFS_USE_KERNEL_DNS=y | ||
| 3 | CONFIG_ROOT_NFS=y | ||
| 4 | CONFIG_NFS_FS=y | ||
| 5 | CONFIG_NFS_V3=y | ||
| 6 | CONFIG_NFS_V4=y | ||
| 7 | CONFIG_NFSD=y | ||
diff --git a/recipes-kernel/linux/files/cfg/rt.cfg b/recipes-kernel/linux/files/cfg/rt.cfg new file mode 100644 index 0000000..a15c930 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/rt.cfg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_PREEMPT_RT_FULL=y | ||
| 2 | CONFIG_HZ_1000=y | ||
| 3 | CONFIG_HZ=1000 | ||
diff --git a/recipes-kernel/linux/files/cfg/systemtap.cfg b/recipes-kernel/linux/files/cfg/systemtap.cfg new file mode 100644 index 0000000..88c278c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/systemtap.cfg | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | CONFIG_DEBUG_INFO=y | ||
| 2 | CONFIG_KPROBES=y | ||
| 3 | CONFIG_RELAY=y | ||
| 4 | CONFIG_DEBUG_FS=y | ||
| 5 | CONFIG_MODULES=y | ||
| 6 | CONFIG_MODULE_UNLOAD=y | ||
diff --git a/recipes-kernel/linux/files/cfg/uio.cfg b/recipes-kernel/linux/files/cfg/uio.cfg new file mode 100644 index 0000000..b26593e --- /dev/null +++ b/recipes-kernel/linux/files/cfg/uio.cfg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_UIO=y | ||
| 2 | CONFIG_UIO_PDRV=y | ||
| 3 | CONFIG_UIO_PDRV_GENIRQ=y | ||
diff --git a/recipes-kernel/linux/files/cfg/uio_m.cfg b/recipes-kernel/linux/files/cfg/uio_m.cfg new file mode 100644 index 0000000..d82eee4 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/uio_m.cfg | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | CONFIG_UIO=m | ||
| 2 | CONFIG_UIO_PDRV=m | ||
| 3 | CONFIG_UIO_PDRV_GENIRQ=m | ||
diff --git a/recipes-kernel/linux/files/cfg/with_modules.cfg b/recipes-kernel/linux/files/cfg/with_modules.cfg new file mode 100644 index 0000000..f4b3ae2 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/with_modules.cfg | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | CONFIG_MODULES=y | ||
| 2 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
| 3 | CONFIG_MODULE_UNLOAD=y | ||
| 4 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 5 | CONFIG_MODVERSIONS=y | ||
diff --git a/recipes-kernel/linux/files/disable_hw_checksum_offload.patch b/recipes-kernel/linux/files/disable_hw_checksum_offload.patch new file mode 100644 index 0000000..4b318c1 --- /dev/null +++ b/recipes-kernel/linux/files/disable_hw_checksum_offload.patch | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | Temporarily disable HW checksum offload | ||
| 2 | |||
| 3 | Signed-off-by: Tudor Florea <tudor.florea@enea.com> | ||
| 4 | Upstream-Status: Pending | ||
| 5 | |||
| 6 | |||
| 7 | diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts | ||
| 8 | index 16cf335..7dc9665 100644 | ||
| 9 | --- a/arch/arm/boot/dts/k2hk-evm.dts | ||
| 10 | +++ b/arch/arm/boot/dts/k2hk-evm.dts | ||
| 11 | @@ -2521,7 +2521,7 @@ | ||
| 12 | }; | ||
| 13 | pa: pa@2000000 { | ||
| 14 | label = "keystone-pa"; | ||
| 15 | - checksum-offload = <1>; /* 1 - HW offload */ | ||
| 16 | + checksum-offload = <2>; | ||
| 17 | txhook-order = <10>; | ||
| 18 | txhook-softcsum = <40>; | ||
| 19 | rxhook-order = <10>; | ||
diff --git a/recipes-kernel/linux/files/enea_image.cfg b/recipes-kernel/linux/files/enea_image.cfg new file mode 100644 index 0000000..146eff5 --- /dev/null +++ b/recipes-kernel/linux/files/enea_image.cfg | |||
| @@ -0,0 +1 @@ | |||
| CONFIG_RELAY=y | |||
diff --git a/recipes-kernel/linux/files/fix_for_CVE-2013-2094.patch b/recipes-kernel/linux/files/fix_for_CVE-2013-2094.patch new file mode 100644 index 0000000..1fbad06 --- /dev/null +++ b/recipes-kernel/linux/files/fix_for_CVE-2013-2094.patch | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | From 8176cced706b5e5d15887584150764894e94e02f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Tommi Rantala <tt.rantala@gmail.com> | ||
| 3 | Date: Sat, 13 Apr 2013 19:49:14 +0000 | ||
| 4 | Subject: perf: Treat attr.config as u64 in perf_swevent_init() | ||
| 5 | |||
| 6 | Trinity discovered that we fail to check all 64 bits of | ||
| 7 | attr.config passed by user space, resulting to out-of-bounds | ||
| 8 | access of the perf_swevent_enabled array in | ||
| 9 | sw_perf_event_destroy(). | ||
| 10 | |||
| 11 | Introduced in commit b0a873ebb ("perf: Register PMU | ||
| 12 | implementations"). | ||
| 13 | |||
| 14 | Signed-off-by: Tommi Rantala <tt.rantala@gmail.com> | ||
| 15 | Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> | ||
| 16 | Cc: davej@redhat.com | ||
| 17 | Cc: Paul Mackerras <paulus@samba.org> | ||
| 18 | Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> | ||
| 19 | Link: http://lkml.kernel.org/r/1365882554-30259-1-git-send-email-tt.rantala@gmail.com | ||
| 20 | Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
| 21 | --- | ||
| 22 | diff --git a/kernel/events/core.c b/kernel/events/core.c | ||
| 23 | index 7e0962e..4d3124b 100644 | ||
| 24 | --- a/kernel/events/core.c | ||
| 25 | +++ b/kernel/events/core.c | ||
| 26 | @@ -5331,7 +5331,7 @@ static void sw_perf_event_destroy(struct perf_event *event) | ||
| 27 | |||
| 28 | static int perf_swevent_init(struct perf_event *event) | ||
| 29 | { | ||
| 30 | - int event_id = event->attr.config; | ||
| 31 | + u64 event_id = event->attr.config; | ||
| 32 | |||
| 33 | if (event->attr.type != PERF_TYPE_SOFTWARE) | ||
| 34 | return -ENOENT; | ||
| 35 | -- | ||
| 36 | cgit v0.9.1 | ||
diff --git a/recipes-kernel/linux/files/merge_config.sh b/recipes-kernel/linux/files/merge_config.sh new file mode 100755 index 0000000..33f18d4 --- /dev/null +++ b/recipes-kernel/linux/files/merge_config.sh | |||
| @@ -0,0 +1,142 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # merge_config.sh - Takes a list of config fragment values, and merges | ||
| 3 | # them one by one. Provides warnings on overridden values, and specified | ||
| 4 | # values that did not make it to the resulting .config file (due to missed | ||
| 5 | # dependencies or config symbol removal). | ||
| 6 | # | ||
| 7 | # Portions reused from kconf_check and generate_cfg: | ||
| 8 | # http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check | ||
| 9 | # http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg | ||
| 10 | # | ||
| 11 | # Copyright (c) 2009-2010 Wind River Systems, Inc. | ||
| 12 | # Copyright 2011 Linaro | ||
| 13 | # | ||
| 14 | # This program is free software; you can redistribute it and/or modify | ||
| 15 | # it under the terms of the GNU General Public License version 2 as | ||
| 16 | # published by the Free Software Foundation. | ||
| 17 | # | ||
| 18 | # This program is distributed in the hope that it will be useful, | ||
| 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 21 | # See the GNU General Public License for more details. | ||
| 22 | |||
| 23 | |||
| 24 | usage() { | ||
| 25 | echo "Usage: $0 [OPTIONS] [CONFIG [...]]" | ||
| 26 | echo " -h display this help text" | ||
| 27 | echo " -m only merge the fragments, do not execute the make command" | ||
| 28 | echo " -n use allnoconfig instead of alldefconfig" | ||
| 29 | echo " -x use allmodconfig instead of alldefconfig" | ||
| 30 | echo " -d debug. Don't cleanup temporary files" | ||
| 31 | } | ||
| 32 | |||
| 33 | MAKE_FLAG=true | ||
| 34 | ALLTARGET=alldefconfig | ||
| 35 | |||
| 36 | # There are two variables that impact where the .config will be dropped, | ||
| 37 | # O= and KBUILD_OUTPUT=. So we'll respect those variables and use them as | ||
| 38 | # an output directory as well. These two variables are not propagating | ||
| 39 | # automatically to the kernel build, so always explicitly setting O= | ||
| 40 | # and passing it to the kernel build ensures that it is respected. | ||
| 41 | if [ -n "$KBUILD_OUTPUT" ]; then | ||
| 42 | O=$KBUILD_OUTPUT | ||
| 43 | fi | ||
| 44 | if [ -z "$O" ]; then | ||
| 45 | O=. | ||
| 46 | fi | ||
| 47 | |||
| 48 | while true; do | ||
| 49 | case $1 in | ||
| 50 | "-n") | ||
| 51 | ALLTARGET=allnoconfig | ||
| 52 | shift | ||
| 53 | continue | ||
| 54 | ;; | ||
| 55 | "-m") | ||
| 56 | MAKE_FLAG=false | ||
| 57 | shift | ||
| 58 | continue | ||
| 59 | ;; | ||
| 60 | "-d") | ||
| 61 | DEBUG=true | ||
| 62 | shift | ||
| 63 | continue | ||
| 64 | ;; | ||
| 65 | "-h") | ||
| 66 | usage | ||
| 67 | exit | ||
| 68 | ;; | ||
| 69 | *) | ||
| 70 | break | ||
| 71 | ;; | ||
| 72 | esac | ||
| 73 | done | ||
| 74 | |||
| 75 | clean_up() { | ||
| 76 | rm -f $TMP_FILE | ||
| 77 | exit | ||
| 78 | } | ||
| 79 | if [ -z "$DEBUG" ]; then | ||
| 80 | trap clean_up SIGHUP SIGINT SIGTERM | ||
| 81 | fi | ||
| 82 | |||
| 83 | |||
| 84 | MERGE_LIST=$* | ||
| 85 | SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" | ||
| 86 | TMP_FILE=$(mktemp $O/.tmp.config.XXXXXXXXXX) | ||
| 87 | |||
| 88 | # Merge files, printing warnings on overrided values | ||
| 89 | for MERGE_FILE in $MERGE_LIST ; do | ||
| 90 | echo "Merging $MERGE_FILE" | ||
| 91 | CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) | ||
| 92 | |||
| 93 | for CFG in $CFG_LIST ; do | ||
| 94 | grep -q -w $CFG $TMP_FILE | ||
| 95 | if [ $? -eq 0 ] ; then | ||
| 96 | PREV_VAL=$(grep -w $CFG $TMP_FILE) | ||
| 97 | NEW_VAL=$(grep -w $CFG $MERGE_FILE) | ||
| 98 | if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then | ||
| 99 | echo Value of $CFG is redefined by fragment $MERGE_FILE: | ||
| 100 | echo Previous value: $PREV_VAL | ||
| 101 | echo New value: $NEW_VAL | ||
| 102 | echo | ||
| 103 | fi | ||
| 104 | sed -i "/$CFG[ =]/d" $TMP_FILE | ||
| 105 | fi | ||
| 106 | done | ||
| 107 | cat $MERGE_FILE >> $TMP_FILE | ||
| 108 | done | ||
| 109 | |||
| 110 | if [ "$MAKE_FLAG" = "false" ]; then | ||
| 111 | cp $TMP_FILE $O/.config | ||
| 112 | echo "#" | ||
| 113 | echo "# merged configuration written to $O/.config (needs make)" | ||
| 114 | echo "#" | ||
| 115 | if [ -z "$DEBUG" ]; then | ||
| 116 | clean_up | ||
| 117 | fi | ||
| 118 | exit | ||
| 119 | fi | ||
| 120 | |||
| 121 | # Use the merged file as the starting point for: | ||
| 122 | # alldefconfig: Fills in any missing symbols with Kconfig default | ||
| 123 | # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set | ||
| 124 | make KCONFIG_ALLCONFIG=$TMP_FILE O=$O $ALLTARGET | ||
| 125 | |||
| 126 | |||
| 127 | # Check all specified config values took (might have missed-dependency issues) | ||
| 128 | for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do | ||
| 129 | |||
| 130 | REQUESTED_VAL=$(sed -n "$SED_CONFIG_EXP" $TMP_FILE | grep -w -e "$CFG") | ||
| 131 | ACTUAL_VAL=$(sed -n "$SED_CONFIG_EXP" $O/.config | grep -w -e "$CFG") | ||
| 132 | if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then | ||
| 133 | echo "Value requested for $CFG not in final .config" | ||
| 134 | echo "Requested value: $REQUESTED_VAL" | ||
| 135 | echo "Actual value: $ACTUAL_VAL" | ||
| 136 | echo "" | ||
| 137 | fi | ||
| 138 | done | ||
| 139 | |||
| 140 | if [ -z "$DEBUG" ]; then | ||
| 141 | clean_up | ||
| 142 | fi | ||
diff --git a/recipes-kernel/linux/files/pramfs-1.2.9-3.0Patched.tar.gz b/recipes-kernel/linux/files/pramfs-1.2.9-3.0Patched.tar.gz new file mode 100644 index 0000000..895b329 --- /dev/null +++ b/recipes-kernel/linux/files/pramfs-1.2.9-3.0Patched.tar.gz | |||
| Binary files differ | |||
diff --git a/recipes-kernel/linux/files/pramfs-1.4.2-3.10_patched.tar.gz b/recipes-kernel/linux/files/pramfs-1.4.2-3.10_patched.tar.gz new file mode 100644 index 0000000..0d71064 --- /dev/null +++ b/recipes-kernel/linux/files/pramfs-1.4.2-3.10_patched.tar.gz | |||
| Binary files differ | |||
diff --git a/recipes-kernel/linux/files/pramfs-2.6.33-1.1.6.tar.gz b/recipes-kernel/linux/files/pramfs-2.6.33-1.1.6.tar.gz new file mode 100644 index 0000000..f25bdd4 --- /dev/null +++ b/recipes-kernel/linux/files/pramfs-2.6.33-1.1.6.tar.gz | |||
| Binary files differ | |||
diff --git a/recipes-kernel/linux/files/set-keystone2-clock-frequency.patch b/recipes-kernel/linux/files/set-keystone2-clock-frequency.patch new file mode 100644 index 0000000..bc9c105 --- /dev/null +++ b/recipes-kernel/linux/files/set-keystone2-clock-frequency.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From ba87988727dcd6202a10f435ba24543410c367e0 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Valentin Cobelea <valentin.cobelea@enea.com> | ||
| 3 | Date: Tue, 8 Oct 2013 16:55:58 +0200 | ||
| 4 | Subject: [PATCH] LXCR-1831: set the keystone2 rt clock frequency | ||
| 5 | |||
| 6 | |||
| 7 | Signed-off-by: Valentin Cobelea <valentin.cobelea@enea.com> | ||
| 8 | --- | ||
| 9 | arch/arm/boot/dts/k2hk-evm.dts | 1 + | ||
| 10 | 1 file changed, 1 insertion(+) | ||
| 11 | |||
| 12 | diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts | ||
| 13 | index dc2ee9a..f535286 100644 | ||
| 14 | --- a/arch/arm/boot/dts/k2hk-evm.dts | ||
| 15 | +++ b/arch/arm/boot/dts/k2hk-evm.dts | ||
| 16 | @@ -1291,6 +1291,7 @@ | ||
| 17 | timer { | ||
| 18 | compatible = "arm,armv7-timer"; | ||
| 19 | interrupts = <1 13 0xf08 1 14 0xf08>; | ||
| 20 | + clock-frequency = <134221720>; | ||
| 21 | }; | ||
| 22 | |||
| 23 | uart0: serial@02530c00 { | ||
| 24 | -- | ||
| 25 | 1.7.10.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/files/setlocalversion.patch b/recipes-kernel/linux/files/setlocalversion.patch new file mode 100644 index 0000000..f0925de --- /dev/null +++ b/recipes-kernel/linux/files/setlocalversion.patch | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | diff -uNr a/Makefile b/Makefile | ||
| 2 | --- a/Makefile 2012-05-11 10:45:09.669169201 +0200 | ||
| 3 | +++ b/Makefile 2012-05-11 10:44:57.285708701 +0200 | ||
| 4 | @@ -949,6 +949,7 @@ | ||
| 5 | # Store (new) KERNELRELASE string in include/config/kernel.release | ||
| 6 | include/config/kernel.release: include/config/auto.conf FORCE | ||
| 7 | $(Q)rm -f $@ | ||
| 8 | + $(Q)rm -f .scmversion | ||
| 9 | $(Q)echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" > $@ | ||
| 10 | |||
| 11 | |||
| 12 | @@ -1463,6 +1464,7 @@ | ||
| 13 | $(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH) | ||
| 14 | |||
| 15 | kernelrelease: | ||
| 16 | + $(Q)rm -f .scmversion | ||
| 17 | @echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" | ||
| 18 | |||
| 19 | kernelversion: | ||
| 20 | diff -uNr a/scripts/setlocalversion b/scripts/setlocalversion | ||
| 21 | --- a/scripts/setlocalversion 2012-05-11 10:40:11.926141561 +0200 | ||
| 22 | +++ b/scripts/setlocalversion 2012-05-11 10:43:04.818608594 +0200 | ||
| 23 | @@ -49,12 +49,6 @@ | ||
| 24 | # it, because this version is defined in the top level Makefile. | ||
| 25 | if [ -z "`git describe --exact-match 2>/dev/null`" ]; then | ||
| 26 | |||
| 27 | - # If only the short version is requested, don't bother | ||
| 28 | - # running further git commands | ||
| 29 | - if $short; then | ||
| 30 | - echo "+" | ||
| 31 | - return | ||
| 32 | - fi | ||
| 33 | # If we are past a tagged commit (like | ||
| 34 | # "v2.6.30-rc5-302-g72357d5"), we pretty print it. | ||
| 35 | if atag="`git describe 2>/dev/null`"; then | ||
| 36 | @@ -98,11 +92,6 @@ | ||
| 37 | fi | ||
| 38 | fi | ||
| 39 | |||
| 40 | - # Are there uncommitted changes? | ||
| 41 | - # These are represented by + after the changeset id. | ||
| 42 | - case "$hgid" in | ||
| 43 | - *+|*+\ *) printf '%s' -dirty ;; | ||
| 44 | - esac | ||
| 45 | |||
| 46 | # All done with mercurial | ||
| 47 | return | ||
| 48 | @@ -163,15 +152,6 @@ | ||
| 49 | if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then | ||
| 50 | # full scm version string | ||
| 51 | res="$res$(scm_version)" | ||
| 52 | -else | ||
| 53 | - # append a plus sign if the repository is not in a clean | ||
| 54 | - # annotated or signed tagged state (as git describe only | ||
| 55 | - # looks at signed or annotated tags - git tag -a/-s) and | ||
| 56 | - # LOCALVERSION= is not specified | ||
| 57 | - if test "${LOCALVERSION+set}" != "set"; then | ||
| 58 | - scm=$(scm_version --short) | ||
| 59 | - res="$res${scm:++}" | ||
| 60 | - fi | ||
| 61 | fi | ||
| 62 | |||
| 63 | echo "$res" | ||
diff --git a/recipes-kernel/linux/kernel-configure.inc b/recipes-kernel/linux/kernel-configure.inc new file mode 100644 index 0000000..1e4c8a8 --- /dev/null +++ b/recipes-kernel/linux/kernel-configure.inc | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | |||
| 2 | SRC_URI += "file://cfg \ | ||
| 3 | file://merge_config.sh " | ||
| 4 | |||
| 5 | configure_kernel() { | ||
| 6 | # Add debug flavour config elements from fragments | ||
| 7 | # Listed in increasing priority order if conflicts are detected. | ||
| 8 | # | ||
| 9 | |||
| 10 | # | ||
| 11 | #combine features cfgs with defconfig | ||
| 12 | # | ||
| 13 | addon_features="" | ||
| 14 | if [ -n "${2}" ]; then | ||
| 15 | for feature in ${2}; do | ||
| 16 | addon_features="${addon_features} ${WORKDIR}/${feature}.cfg" | ||
| 17 | done | ||
| 18 | fi | ||
| 19 | |||
| 20 | O=${B} ${WORKDIR}/merge_config.sh -m ${1} ${addon_features} | ||
| 21 | |||
| 22 | mv -f ${B}/.config ${B}/.mconfig | ||
| 23 | |||
| 24 | # | ||
| 25 | #in linux kernel 2.6.33, kconfig does not support alldefconfig yet. | ||
| 26 | # | ||
| 27 | if [ "x${PV}" = "x2.6.33" ]; then | ||
| 28 | oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} allnoconfig | ||
| 29 | else | ||
| 30 | oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} alldefconfig | ||
| 31 | fi | ||
| 32 | } | ||
diff --git a/recipes-kernel/linux/linux-3.0.6.inc b/recipes-kernel/linux/linux-3.0.6.inc new file mode 100644 index 0000000..dd2a8b2 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6.inc | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-${PV}/${MACHINE}" | ||
| 2 | |||
| 3 | SRC_URI = "http://www.kernel.org/pub/linux/kernel/v3.0/linux-${PV}.tar.bz2 \ | ||
| 4 | file://defconfig \ | ||
| 5 | file://0001-add-lsi-acp3448v2-bsp-patches.patch \ | ||
| 6 | file://0002-Patch-to-head_44x.S-to-support-lsi-acp3448v2.patch \ | ||
| 7 | file://0003-Patch-drivers_dma_Makefile.patch \ | ||
| 8 | file://0004-change-arch_powerpc_kernel_setup_32_c.patch \ | ||
| 9 | file://0005-Patch-arch_powerpc_mm_tlb_nohash_c.patch \ | ||
| 10 | file://0006-backport-mmu_clear_feature-function.patch \ | ||
| 11 | file://0007-Enable-CONFIG_RELOCATABLE-for-ppc47x.patch \ | ||
| 12 | file://0008-change-serial-baudrate_to_115200.patch \ | ||
| 13 | file://0009-add-acp3448-PCIe-controller-driver.patch \ | ||
| 14 | file://0010-fix-typo-error-for-acp-pcie.patch \ | ||
| 15 | file://0011-fix-compiler.h-__attribute_const__-redefined-problem.patch \ | ||
| 16 | " | ||
| 17 | |||
| 18 | PV = "3.0.6" | ||
| 19 | PR = "r0" | ||
| 20 | |||
| 21 | S = "${WORKDIR}/linux-${PV}" | ||
| 22 | |||
| 23 | COMPATIBLE_MACHINE = "acp3448v2" | ||
| 24 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0001-add-lsi-acp3448v2-bsp-patches.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0001-add-lsi-acp3448v2-bsp-patches.patch new file mode 100644 index 0000000..33f6a96 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0001-add-lsi-acp3448v2-bsp-patches.patch | |||
| @@ -0,0 +1,29202 @@ | |||
| 1 | From a2385484a70264bfcd06f65242aafcac53cdf661 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 12:28:50 +0800 | ||
| 4 | Subject: [PATCH 1/7] add lsi acp3448v2 bsp patches to mainline linux-3.0.6 | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | Documentation/powerpc/dts-bindings/open-pic.txt | 98 + | ||
| 9 | arch/powerpc/Kconfig | 2 +- | ||
| 10 | arch/powerpc/Makefile | 13 + | ||
| 11 | arch/powerpc/boot/Makefile | 38 +- | ||
| 12 | arch/powerpc/boot/acp.c | 262 ++ | ||
| 13 | arch/powerpc/boot/crt0.S | 63 + | ||
| 14 | arch/powerpc/boot/dts/acp.dts | 129 + | ||
| 15 | arch/powerpc/boot/dts/acpiss.dts | 175 + | ||
| 16 | arch/powerpc/boot/dts/acpx1.dts | 129 + | ||
| 17 | arch/powerpc/boot/dts/iss476-amp1.dts | 124 + | ||
| 18 | arch/powerpc/boot/dts/iss476-amp2.dts | 123 + | ||
| 19 | arch/powerpc/boot/dts/iss4xx-mpic.dts | 5 +- | ||
| 20 | arch/powerpc/boot/main.c | 6 +- | ||
| 21 | arch/powerpc/boot/serial.c | 16 + | ||
| 22 | arch/powerpc/boot/treeboot-acp.c | 65 + | ||
| 23 | arch/powerpc/boot/treeboot-acpiss.c | 56 + | ||
| 24 | arch/powerpc/boot/treeboot-iss4xx-hi.c | 65 + | ||
| 25 | arch/powerpc/boot/wrapper | 10 +- | ||
| 26 | arch/powerpc/configs/acp_ACP344xV1_defconfig | 1267 +++++++ | ||
| 27 | arch/powerpc/configs/acp_dbgconfig | 1655 +++++++++ | ||
| 28 | arch/powerpc/configs/acp_defconfig | 1641 ++++++++ | ||
| 29 | arch/powerpc/configs/acp_mel_defconfig | 1859 ++++++++++ | ||
| 30 | arch/powerpc/configs/acp_srio_defconfig | 1640 ++++++++ | ||
| 31 | arch/powerpc/configs/acpiss_defconfig | 1054 ++++++ | ||
| 32 | arch/powerpc/include/asm/asm-compat.h | 23 + | ||
| 33 | arch/powerpc/include/asm/cputable.h | 2 + | ||
| 34 | arch/powerpc/include/asm/dcr-native.h | 26 +- | ||
| 35 | arch/powerpc/include/asm/lsi.h | 6 + | ||
| 36 | arch/powerpc/include/asm/mpic.h | 2 + | ||
| 37 | arch/powerpc/include/asm/ppc-opcode.h | 4 + | ||
| 38 | arch/powerpc/include/asm/reg.h | 3 +- | ||
| 39 | arch/powerpc/include/asm/reg_booke.h | 10 + | ||
| 40 | arch/powerpc/include/asm/spinlock.h | 50 +- | ||
| 41 | arch/powerpc/kernel/cputable.c | 34 +- | ||
| 42 | arch/powerpc/kernel/entry_32.S | 35 +- | ||
| 43 | arch/powerpc/kernel/head_booke.h | 6 +- | ||
| 44 | arch/powerpc/kernel/misc_32.S | 33 +- | ||
| 45 | arch/powerpc/kernel/misc_64.S | 22 + | ||
| 46 | arch/powerpc/kernel/smp.c | 13 +- | ||
| 47 | arch/powerpc/kernel/traps.c | 45 + | ||
| 48 | arch/powerpc/kernel/udbg.c | 2 + | ||
| 49 | arch/powerpc/kernel/udbg_16550.c | 132 +- | ||
| 50 | arch/powerpc/lib/copy_32.S | 7 +- | ||
| 51 | arch/powerpc/mm/44x_mmu.c | 4 - | ||
| 52 | arch/powerpc/mm/init_32.c | 5 + | ||
| 53 | arch/powerpc/platforms/44x/Kconfig | 26 + | ||
| 54 | arch/powerpc/platforms/44x/Makefile | 2 + | ||
| 55 | arch/powerpc/platforms/44x/acpx1.c | 182 + | ||
| 56 | arch/powerpc/sysdev/mpic.c | 31 +- | ||
| 57 | arch/powerpc/sysdev/ppc4xx_soc.c | 90 + | ||
| 58 | drivers/Kconfig | 2 + | ||
| 59 | drivers/Makefile | 2 + | ||
| 60 | drivers/block/Kconfig | 4 + | ||
| 61 | drivers/block/Makefile | 1 + | ||
| 62 | drivers/block/iss_blk.c | 394 ++ | ||
| 63 | drivers/dma/Kconfig | 4 + | ||
| 64 | drivers/dma/lsi-dma.c | 549 +++ | ||
| 65 | drivers/dma/lsi-dma.h | 42 + | ||
| 66 | drivers/i2c/busses/Kconfig | 6 + | ||
| 67 | drivers/i2c/busses/Makefile | 1 + | ||
| 68 | drivers/i2c/busses/i2c-lsi.c | 352 ++ | ||
| 69 | drivers/i2c/busses/i2c-lsi.h | 60 + | ||
| 70 | drivers/lsi/Kconfig | 104 + | ||
| 71 | drivers/lsi/Makefile | 1 + | ||
| 72 | drivers/lsi/acp/Makefile | 13 + | ||
| 73 | drivers/lsi/acp/clocks.c | 253 ++ | ||
| 74 | drivers/lsi/acp/nand.c | 3666 ++++++++++++++++++ | ||
| 75 | drivers/lsi/acp/ncr.c | 280 ++ | ||
| 76 | drivers/lsi/acp/ncr.h | 40 + | ||
| 77 | drivers/lsi/acp/net.c | 4534 +++++++++++++++++++++++ | ||
| 78 | drivers/lsi/acp/pci_plx.c | 795 ++++ | ||
| 79 | drivers/lsi/acp/serial.c | 1342 +++++++ | ||
| 80 | drivers/lsi/acp/test.c | 300 ++ | ||
| 81 | drivers/lsi/acp/ubootenv.c | 557 +++ | ||
| 82 | drivers/lsi/acp/version.c | 347 ++ | ||
| 83 | drivers/lsi/acp/wrappers.c | 257 ++ | ||
| 84 | drivers/lsi/common/debug.h | 63 + | ||
| 85 | drivers/lsi/common/version.h | 28 + | ||
| 86 | drivers/mtd/devices/phram.c | 1 + | ||
| 87 | drivers/mtd/nand/nand_base.c | 88 +- | ||
| 88 | drivers/mtd/nand/nand_ids.c | 1 + | ||
| 89 | drivers/rapidio/Kconfig | 2 + | ||
| 90 | drivers/rapidio/Makefile | 1 + | ||
| 91 | drivers/rapidio/mports/Kconfig | 23 + | ||
| 92 | drivers/rapidio/mports/Makefile | 5 + | ||
| 93 | drivers/rapidio/mports/tsi620/Makefile | 6 + | ||
| 94 | drivers/rapidio/mports/tsi620/tsi620.c | 703 ++++ | ||
| 95 | drivers/rapidio/mports/tsi620/tsi620.h | 123 + | ||
| 96 | drivers/rapidio/rio-scan.c | 11 +- | ||
| 97 | drivers/rapidio/rio.c | 31 +- | ||
| 98 | drivers/usb/host/Kconfig | 13 + | ||
| 99 | drivers/usb/host/ci13612.h | 887 +++++ | ||
| 100 | drivers/usb/host/ehci-ci13612.c | 215 ++ | ||
| 101 | drivers/usb/host/ehci-ci13612.h | 54 + | ||
| 102 | drivers/usb/host/ehci-hcd.c | 31 + | ||
| 103 | include/linux/rio.h | 14 + | ||
| 104 | kernel/smp.c | 19 +- | ||
| 105 | scripts/rw.sh | 120 + | ||
| 106 | scripts/tags.sh | 3 +- | ||
| 107 | 103 files changed, 28496 insertions(+), 89 deletions(-) | ||
| 108 | create mode 100644 Documentation/powerpc/dts-bindings/open-pic.txt | ||
| 109 | create mode 100644 arch/powerpc/boot/acp.c | ||
| 110 | create mode 100644 arch/powerpc/boot/dts/acp.dts | ||
| 111 | create mode 100644 arch/powerpc/boot/dts/acpiss.dts | ||
| 112 | create mode 100644 arch/powerpc/boot/dts/acpx1.dts | ||
| 113 | create mode 100644 arch/powerpc/boot/dts/iss476-amp1.dts | ||
| 114 | create mode 100644 arch/powerpc/boot/dts/iss476-amp2.dts | ||
| 115 | create mode 100644 arch/powerpc/boot/treeboot-acp.c | ||
| 116 | create mode 100644 arch/powerpc/boot/treeboot-acpiss.c | ||
| 117 | create mode 100644 arch/powerpc/boot/treeboot-iss4xx-hi.c | ||
| 118 | create mode 100644 arch/powerpc/configs/acp_ACP344xV1_defconfig | ||
| 119 | create mode 100644 arch/powerpc/configs/acp_dbgconfig | ||
| 120 | create mode 100644 arch/powerpc/configs/acp_defconfig | ||
| 121 | create mode 100644 arch/powerpc/configs/acp_mel_defconfig | ||
| 122 | create mode 100644 arch/powerpc/configs/acp_srio_defconfig | ||
| 123 | create mode 100644 arch/powerpc/configs/acpiss_defconfig | ||
| 124 | create mode 100644 arch/powerpc/include/asm/lsi.h | ||
| 125 | create mode 100644 arch/powerpc/platforms/44x/acpx1.c | ||
| 126 | create mode 100644 drivers/block/iss_blk.c | ||
| 127 | create mode 100644 drivers/dma/lsi-dma.c | ||
| 128 | create mode 100644 drivers/dma/lsi-dma.h | ||
| 129 | create mode 100644 drivers/i2c/busses/i2c-lsi.c | ||
| 130 | create mode 100644 drivers/i2c/busses/i2c-lsi.h | ||
| 131 | create mode 100644 drivers/lsi/Kconfig | ||
| 132 | create mode 100644 drivers/lsi/Makefile | ||
| 133 | create mode 100644 drivers/lsi/acp/Makefile | ||
| 134 | create mode 100644 drivers/lsi/acp/clocks.c | ||
| 135 | create mode 100644 drivers/lsi/acp/nand.c | ||
| 136 | create mode 100644 drivers/lsi/acp/ncr.c | ||
| 137 | create mode 100644 drivers/lsi/acp/ncr.h | ||
| 138 | create mode 100644 drivers/lsi/acp/net.c | ||
| 139 | create mode 100644 drivers/lsi/acp/pci_plx.c | ||
| 140 | create mode 100644 drivers/lsi/acp/serial.c | ||
| 141 | create mode 100644 drivers/lsi/acp/test.c | ||
| 142 | create mode 100644 drivers/lsi/acp/ubootenv.c | ||
| 143 | create mode 100644 drivers/lsi/acp/version.c | ||
| 144 | create mode 100644 drivers/lsi/acp/wrappers.c | ||
| 145 | create mode 100644 drivers/lsi/common/debug.h | ||
| 146 | create mode 100644 drivers/lsi/common/version.h | ||
| 147 | create mode 100644 drivers/rapidio/mports/Kconfig | ||
| 148 | create mode 100644 drivers/rapidio/mports/Makefile | ||
| 149 | create mode 100644 drivers/rapidio/mports/tsi620/Makefile | ||
| 150 | create mode 100644 drivers/rapidio/mports/tsi620/tsi620.c | ||
| 151 | create mode 100644 drivers/rapidio/mports/tsi620/tsi620.h | ||
| 152 | create mode 100644 drivers/usb/host/ci13612.h | ||
| 153 | create mode 100644 drivers/usb/host/ehci-ci13612.c | ||
| 154 | create mode 100644 drivers/usb/host/ehci-ci13612.h | ||
| 155 | create mode 100644 scripts/rw.sh | ||
| 156 | |||
| 157 | diff --git a/Documentation/powerpc/dts-bindings/open-pic.txt b/Documentation/powerpc/dts-bindings/open-pic.txt | ||
| 158 | new file mode 100644 | ||
| 159 | index 0000000..909a902 | ||
| 160 | --- /dev/null | ||
| 161 | +++ b/Documentation/powerpc/dts-bindings/open-pic.txt | ||
| 162 | @@ -0,0 +1,98 @@ | ||
| 163 | +* Open PIC Binding | ||
| 164 | + | ||
| 165 | +This binding specifies what properties must be available in the device tree | ||
| 166 | +representation of an Open PIC compliant interrupt controller. This binding is | ||
| 167 | +based on the binding defined for Open PIC in [1] and is a superset of that | ||
| 168 | +binding. | ||
| 169 | + | ||
| 170 | +Required properties: | ||
| 171 | + | ||
| 172 | + NOTE: Many of these descriptions were paraphrased here from [1] to aid | ||
| 173 | + readability. | ||
| 174 | + | ||
| 175 | + - compatible: Specifies the compatibility list for the PIC. The type | ||
| 176 | + shall be <string> and the value shall include "open-pic". | ||
| 177 | + | ||
| 178 | + - reg: Specifies the base physical address(s) and size(s) of this | ||
| 179 | + PIC's addressable register space. The type shall be <prop-encoded-array>. | ||
| 180 | + | ||
| 181 | + - interrupt-controller: The presence of this property identifies the node | ||
| 182 | + as an Open PIC. No property value shall be defined. | ||
| 183 | + | ||
| 184 | + - #interrupt-cells: Specifies the number of cells needed to encode an | ||
| 185 | + interrupt source. The type shall be a <u32> and the value shall be 2. | ||
| 186 | + | ||
| 187 | + - #address-cells: Specifies the number of cells needed to encode an | ||
| 188 | + address. The type shall be <u32> and the value shall be 0. As such, | ||
| 189 | + 'interrupt-map' nodes do not have to specify a parent unit address. | ||
| 190 | + | ||
| 191 | +Optional properties: | ||
| 192 | + | ||
| 193 | + - pic-no-reset: The presence of this property indicates that the PIC | ||
| 194 | + shall not be reset during runtime initialization. No property value shall | ||
| 195 | + be defined. The presence of this property also mandates that any | ||
| 196 | + initialization related to interrupt sources shall be limited to sources | ||
| 197 | + explicitly referenced in the device tree. | ||
| 198 | + | ||
| 199 | +* Interrupt Specifier Definition | ||
| 200 | + | ||
| 201 | + Interrupt specifiers consists of 2 cells encoded as | ||
| 202 | + follows: | ||
| 203 | + | ||
| 204 | + - <1st-cell>: The interrupt-number that identifies the interrupt source. | ||
| 205 | + | ||
| 206 | + - <2nd-cell>: The level-sense information, encoded as follows: | ||
| 207 | + 0 = low-to-high edge triggered | ||
| 208 | + 1 = active low level-sensitive | ||
| 209 | + 2 = active high level-sensitive | ||
| 210 | + 3 = high-to-low edge triggered | ||
| 211 | + | ||
| 212 | +* Examples | ||
| 213 | + | ||
| 214 | +Example 1: | ||
| 215 | + | ||
| 216 | + /* | ||
| 217 | + * An Open PIC interrupt controller | ||
| 218 | + */ | ||
| 219 | + mpic: pic@40000 { | ||
| 220 | + // This is an interrupt controller node. | ||
| 221 | + interrupt-controller; | ||
| 222 | + | ||
| 223 | + // No address cells so that 'interrupt-map' nodes which reference | ||
| 224 | + // this Open PIC node do not need a parent address specifier. | ||
| 225 | + #address-cells = <0>; | ||
| 226 | + | ||
| 227 | + // Two cells to encode interrupt sources. | ||
| 228 | + #interrupt-cells = <2>; | ||
| 229 | + | ||
| 230 | + // Offset address of 0x40000 and size of 0x40000. | ||
| 231 | + reg = <0x40000 0x40000>; | ||
| 232 | + | ||
| 233 | + // Compatible with Open PIC. | ||
| 234 | + compatible = "open-pic"; | ||
| 235 | + | ||
| 236 | + // The PIC shall not be reset. | ||
| 237 | + pic-no-reset; | ||
| 238 | + }; | ||
| 239 | + | ||
| 240 | +Example 2: | ||
| 241 | + | ||
| 242 | + /* | ||
| 243 | + * An interrupt generating device that is wired to an Open PIC. | ||
| 244 | + */ | ||
| 245 | + serial0: serial@4500 { | ||
| 246 | + // Interrupt source '42' that is active high level-sensitive. | ||
| 247 | + // Note that there are only two cells as specified in the interrupt | ||
| 248 | + // parent's '#interrupt-cells' property. | ||
| 249 | + interrupts = <42 2>; | ||
| 250 | + | ||
| 251 | + // The interrupt controller that this device is wired to. | ||
| 252 | + interrupt-parent = <&mpic>; | ||
| 253 | + }; | ||
| 254 | + | ||
| 255 | +* References | ||
| 256 | + | ||
| 257 | +[1] Power.org (TM) Standard for Embedded Power Architecture (TM) Platform | ||
| 258 | + Requirements (ePAPR), Version 1.0, July 2008. | ||
| 259 | + (http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf) | ||
| 260 | + | ||
| 261 | diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig | ||
| 262 | index 2729c66..da004ed 100644 | ||
| 263 | --- a/arch/powerpc/Kconfig | ||
| 264 | +++ b/arch/powerpc/Kconfig | ||
| 265 | @@ -890,7 +890,7 @@ config KERNEL_START | ||
| 266 | |||
| 267 | config PHYSICAL_START_BOOL | ||
| 268 | bool "Set physical address where the kernel is loaded" | ||
| 269 | - depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE | ||
| 270 | + depends on ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE || ACP | ||
| 271 | help | ||
| 272 | This gives the physical address where the kernel is loaded. | ||
| 273 | |||
| 274 | diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile | ||
| 275 | index b7212b6..22019af 100644 | ||
| 276 | --- a/arch/powerpc/Makefile | ||
| 277 | +++ b/arch/powerpc/Makefile | ||
| 278 | @@ -130,7 +130,9 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y) | ||
| 279 | KBUILD_CFLAGS += -mno-sched-epilog | ||
| 280 | endif | ||
| 281 | |||
| 282 | +ifneq ($(CONFIG_ACP),y) | ||
| 283 | cpu-as-$(CONFIG_4xx) += -Wa,-m405 | ||
| 284 | +endif | ||
| 285 | cpu-as-$(CONFIG_6xx) += -Wa,-maltivec | ||
| 286 | cpu-as-$(CONFIG_POWER4) += -Wa,-maltivec | ||
| 287 | cpu-as-$(CONFIG_E500) += -Wa,-me500 | ||
| 288 | @@ -187,6 +189,17 @@ $(BOOT_TARGETS1): vmlinux | ||
| 289 | $(BOOT_TARGETS2): vmlinux | ||
| 290 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) | ||
| 291 | |||
| 292 | +vmlinux.bin: vmlinux | ||
| 293 | + @echo -e " OBJCOPY => vmlinux.bin" | ||
| 294 | + $(Q)$(OBJCOPY) -O binary -R .note -R .comment -S vmlinux vmlinux.bin | ||
| 295 | +# | ||
| 296 | +# Generate search path for RISCWatch | ||
| 297 | +# --------------------------------------------------------------------------- | ||
| 298 | +quiet_cmd_rw = GEN | ||
| 299 | + cmd_rw = $(CONFIG_SHELL) $(srctree)/scripts/rw.sh | ||
| 300 | + | ||
| 301 | +rw.path: | ||
| 302 | + $(call cmd,rw) | ||
| 303 | |||
| 304 | bootwrapper_install: | ||
| 305 | $(Q)$(MAKE) ARCH=ppc64 $(build)=$(boot) $(patsubst %,$(boot)/%,$@) | ||
| 306 | diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile | ||
| 307 | index c26200b..3d75d98 100644 | ||
| 308 | --- a/arch/powerpc/boot/Makefile | ||
| 309 | +++ b/arch/powerpc/boot/Makefile | ||
| 310 | @@ -16,6 +16,8 @@ | ||
| 311 | # To make it easier to setup a cross compiler, | ||
| 312 | # CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE | ||
| 313 | # in the toplevel makefile. | ||
| 314 | +# | ||
| 315 | +# These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 316 | |||
| 317 | all: $(obj)/zImage | ||
| 318 | |||
| 319 | @@ -29,6 +31,16 @@ ifdef CONFIG_DEBUG_INFO | ||
| 320 | BOOTCFLAGS += -g | ||
| 321 | endif | ||
| 322 | |||
| 323 | +ifdef CONFIG_ACP | ||
| 324 | +BOOTCFLAGS += -DCONFIG_ACP | ||
| 325 | +BOOTAFLAGS += -DCONFIG_ACP | ||
| 326 | +endif | ||
| 327 | + | ||
| 328 | +ifdef CONFIG_ACPISS | ||
| 329 | +BOOTCFLAGS += -DCONFIG_ACPISS | ||
| 330 | +BOOTAFLAGS += -DCONFIG_ACPISS | ||
| 331 | +endif | ||
| 332 | + | ||
| 333 | ifeq ($(call cc-option-yn, -fstack-protector),y) | ||
| 334 | BOOTCFLAGS += -fno-stack-protector | ||
| 335 | endif | ||
| 336 | @@ -45,7 +57,11 @@ $(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405 | ||
| 337 | $(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405 | ||
| 338 | $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405 | ||
| 339 | $(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405 | ||
| 340 | +$(obj)/treeboot-iss476-amp1.o: BOOTCFLAGS += -mcpu=405 | ||
| 341 | +$(obj)/treeboot-iss476-amp2.o: BOOTCFLAGS += -mcpu=405 | ||
| 342 | $(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 | ||
| 343 | +$(obj)/treeboot-acpiss.o: BOOTCFLAGS += -mcpu=405 | ||
| 344 | +$(obj)/treeboot-acp.o: BOOTCFLAGS += -mcpu=405 | ||
| 345 | |||
| 346 | |||
| 347 | zlib := inffast.c inflate.c inftrees.c | ||
| 348 | @@ -67,7 +83,7 @@ src-wlib := string.S crt0.S crtsavres.S stdio.c main.c \ | ||
| 349 | gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ | ||
| 350 | 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ | ||
| 351 | cpm-serial.c stdlib.c mpc52xx-psc.c planetcore.c uartlite.c \ | ||
| 352 | - fsl-soc.c mpc8xx.c pq2.c ugecon.c | ||
| 353 | + fsl-soc.c mpc8xx.c pq2.c ugecon.c acp.c | ||
| 354 | src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c \ | ||
| 355 | cuboot-ebony.c cuboot-hotfoot.c epapr.c treeboot-ebony.c \ | ||
| 356 | prpmc2800.c \ | ||
| 357 | @@ -79,7 +95,8 @@ src-plat := of.c cuboot-52xx.c cuboot-824x.c cuboot-83xx.c cuboot-85xx.c holly.c | ||
| 358 | cuboot-warp.c cuboot-85xx-cpm2.c cuboot-yosemite.c simpleboot.c \ | ||
| 359 | virtex405-head.S virtex.c redboot-83xx.c cuboot-sam440ep.c \ | ||
| 360 | cuboot-acadia.c cuboot-amigaone.c cuboot-kilauea.c \ | ||
| 361 | - gamecube-head.S gamecube.c wii-head.S wii.c treeboot-iss4xx.c | ||
| 362 | + gamecube-head.S gamecube.c wii-head.S wii.c treeboot-iss4xx.c \ | ||
| 363 | + treeboot-iss4xx-hi.c treeboot-acpiss.c treeboot-acp.c | ||
| 364 | src-boot := $(src-wlib) $(src-plat) empty.c | ||
| 365 | |||
| 366 | src-boot := $(addprefix $(obj)/, $(src-boot)) | ||
| 367 | @@ -210,7 +227,12 @@ image-$(CONFIG_KATMAI) += cuImage.katmai | ||
| 368 | image-$(CONFIG_WARP) += cuImage.warp | ||
| 369 | image-$(CONFIG_YOSEMITE) += cuImage.yosemite | ||
| 370 | image-$(CONFIG_ISS4xx) += treeImage.iss4xx \ | ||
| 371 | - treeImage.iss4xx-mpic | ||
| 372 | + treeImage.iss4xx-mpic \ | ||
| 373 | + treeImage.iss476-amp1 \ | ||
| 374 | + treeImage.iss476-amp2 | ||
| 375 | +image-$(CONFIG_ACPISS) += treeImage.acpiss | ||
| 376 | +image-$(CONFIG_ACP) += treeImage.acp | ||
| 377 | + | ||
| 378 | |||
| 379 | # Board ports in arch/powerpc/platform/8xx/Kconfig | ||
| 380 | image-$(CONFIG_MPC86XADS) += cuImage.mpc866ads | ||
| 381 | @@ -283,20 +305,20 @@ initrd-y := $(patsubst zImage%, zImage.initrd%, \ | ||
| 382 | initrd-y := $(filter-out $(image-y), $(initrd-y)) | ||
| 383 | targets += $(image-y) $(initrd-y) | ||
| 384 | |||
| 385 | -$(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz | ||
| 386 | +$(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image | ||
| 387 | |||
| 388 | # Don't put the ramdisk on the pattern rule; when its missing make will try | ||
| 389 | # the pattern rule with less dependencies that also matches (even with the | ||
| 390 | # hard dependency listed). | ||
| 391 | $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) | ||
| 392 | - $(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz) | ||
| 393 | + $(call if_changed,wrap,$*,,,$(obj)/ramdisk.image) | ||
| 394 | |||
| 395 | $(obj)/zImage.%: vmlinux $(wrapperbits) | ||
| 396 | $(call if_changed,wrap,$*) | ||
| 397 | |||
| 398 | # dtbImage% - a dtbImage is a zImage with an embedded device tree blob | ||
| 399 | $(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb | ||
| 400 | - $(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) | ||
| 401 | + $(call if_changed,wrap,$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image) | ||
| 402 | |||
| 403 | $(obj)/dtbImage.%: vmlinux $(wrapperbits) $(obj)/%.dtb | ||
| 404 | $(call if_changed,wrap,$*,,$(obj)/$*.dtb) | ||
| 405 | @@ -322,13 +344,13 @@ $(obj)/cuImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
| 406 | $(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb) | ||
| 407 | |||
| 408 | $(obj)/simpleImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
| 409 | - $(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) | ||
| 410 | + $(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image) | ||
| 411 | |||
| 412 | $(obj)/simpleImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
| 413 | $(call if_changed,wrap,simpleboot-$*,,$(obj)/$*.dtb) | ||
| 414 | |||
| 415 | $(obj)/treeImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
| 416 | - $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz) | ||
| 417 | + $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image) | ||
| 418 | |||
| 419 | $(obj)/treeImage.%: vmlinux $(obj)/%.dtb $(wrapperbits) | ||
| 420 | $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb) | ||
| 421 | diff --git a/arch/powerpc/boot/acp.c b/arch/powerpc/boot/acp.c | ||
| 422 | new file mode 100644 | ||
| 423 | index 0000000..a68c8fd | ||
| 424 | --- /dev/null | ||
| 425 | +++ b/arch/powerpc/boot/acp.c | ||
| 426 | @@ -0,0 +1,262 @@ | ||
| 427 | +/* | ||
| 428 | + * arch/powerpc/boot/acp.c | ||
| 429 | + * | ||
| 430 | + * Copyright (C) 2010 LSI | ||
| 431 | + * | ||
| 432 | + * This program is free software; you can redistribute it and/or modify | ||
| 433 | + * it under the terms of the GNU General Public License as published by | ||
| 434 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 435 | + * (at your option) any later version. | ||
| 436 | + * | ||
| 437 | + * This program is distributed in the hope that it will be useful, | ||
| 438 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 439 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 440 | + * GNU General Public License for more details. | ||
| 441 | + * | ||
| 442 | + * You should have received a copy of the GNU General Public License | ||
| 443 | + * along with this program; if not, write to the Free Software | ||
| 444 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 445 | + */ | ||
| 446 | + | ||
| 447 | +#include "io.h" | ||
| 448 | +#include "ops.h" | ||
| 449 | + | ||
| 450 | +#if 1 | ||
| 451 | +#define writeapb(offset, value) out_le32((offset), (value)) | ||
| 452 | +#define readapb(offset) in_le32((offset)) | ||
| 453 | +#else | ||
| 454 | +static inline void | ||
| 455 | +writeapb(unsigned *address, int value) | ||
| 456 | +{ | ||
| 457 | + __asm__ __volatile__("stwbrx %1,0,%2" | ||
| 458 | + : "=m" (*address) | ||
| 459 | + : "r" (value), "r" (address)); | ||
| 460 | +} | ||
| 461 | +static inline unsigned | ||
| 462 | +readapb(const unsigned *address) | ||
| 463 | +{ | ||
| 464 | + unsigned value; | ||
| 465 | + | ||
| 466 | + __asm__ __volatile__("lwbrx %0,0,%1; twi 0,%0,0" | ||
| 467 | + : "=r" (value) | ||
| 468 | + : "r" (address), "m" (*address)); | ||
| 469 | + | ||
| 470 | + return value; | ||
| 471 | +} | ||
| 472 | +#endif | ||
| 473 | + | ||
| 474 | +/* | ||
| 475 | + ====================================================================== | ||
| 476 | + ====================================================================== | ||
| 477 | + Clocks and Divisors... | ||
| 478 | + ====================================================================== | ||
| 479 | + ====================================================================== | ||
| 480 | +*/ | ||
| 481 | + | ||
| 482 | +static void *timer_base; | ||
| 483 | + | ||
| 484 | +#define TIMER_LOAD 0x00 | ||
| 485 | +#define TIMER_VALUE 0x04 | ||
| 486 | +#define TIMER_CONTROL 0x08 | ||
| 487 | +#define TIMER_CONTROL_ENABLE 0x80 | ||
| 488 | +#define TIMER_CONTROL_MODE 0x40 | ||
| 489 | +#define TIMER_CONTROL_INTERRUPT_ENABLE 0x20 | ||
| 490 | +#define TIMER_CONTROL_OUTPUT_MODE 0x10 | ||
| 491 | +#define TIMER_CONTROL_PRESCALER 0x0c | ||
| 492 | +#define TIMER_CONTROL_SIZE 0x02 | ||
| 493 | +#define TIMER_CONTROL_ONE_SHOT 0x01 | ||
| 494 | +#define TIMER_INTCLR 0x0C | ||
| 495 | +#define TIMER_RIS 0x10 | ||
| 496 | +#define TIMER_MIS 0x14 | ||
| 497 | +#define TIMER_BGLOAD 0x18 | ||
| 498 | + | ||
| 499 | +/* | ||
| 500 | + ====================================================================== | ||
| 501 | +*/ | ||
| 502 | + | ||
| 503 | +struct clock_stuff { | ||
| 504 | + | ||
| 505 | + unsigned char ibrd; | ||
| 506 | + unsigned char fbrd; | ||
| 507 | + | ||
| 508 | +}; | ||
| 509 | + | ||
| 510 | +/* | ||
| 511 | + ---------------------------------------------------------------------- | ||
| 512 | + get_clock_stuff | ||
| 513 | +*/ | ||
| 514 | + | ||
| 515 | +static int | ||
| 516 | +get_clock_stuff(int baud_rate, struct clock_stuff *clock_stuff) | ||
| 517 | +{ | ||
| 518 | + | ||
| 519 | + unsigned long speed_; | ||
| 520 | + unsigned long divisor_; | ||
| 521 | + unsigned long ibrd_, fbrd_; | ||
| 522 | + | ||
| 523 | + speed_ = 6500000; | ||
| 524 | + | ||
| 525 | + /* | ||
| 526 | + The UART clock is derived from the ARM core clock using the second | ||
| 527 | + timer (timer 1). Each time timer 1 crosses zero, the UART clock | ||
| 528 | + gets toggled. The timer load value acts as a divisor. | ||
| 529 | + | ||
| 530 | + Since the IBDR (integer part of the baud rate divisor) is a 16 bit | ||
| 531 | + quatity, find the minimum load value that will let the IBDR/FBDR | ||
| 532 | + result in the desired baud rate. | ||
| 533 | + */ | ||
| 534 | + | ||
| 535 | + divisor_ = 1; | ||
| 536 | + | ||
| 537 | + do { | ||
| 538 | + ibrd_ = (speed_ / ++divisor_) / (16 * baud_rate); | ||
| 539 | + } while (0xff < ibrd_); | ||
| 540 | + | ||
| 541 | + /* | ||
| 542 | + The following forumla is from the ARM document (ARM DDI 0183E). | ||
| 543 | + | ||
| 544 | + Baud Rate Divisor = (Uart Clock / (16 * Baud Rate)) | ||
| 545 | + | ||
| 546 | + Baud Rate Divisor is then split into integral and fractional | ||
| 547 | + parts. The IBRD value is simply the itegral part. The FBRD is | ||
| 548 | + calculated as follows. | ||
| 549 | + | ||
| 550 | + FBRD = fractional part of the Baud Rate Divisor * 64 + 0.5 | ||
| 551 | + | ||
| 552 | + The fractional part of the Baud Rate Divisor can be represented as | ||
| 553 | + follows. | ||
| 554 | + | ||
| 555 | + (Uart Clock % (16 * baud_rate)) / (16 * baud_rate) | ||
| 556 | + | ||
| 557 | + As long as the division isn't done till the end. So, the above * | ||
| 558 | + 64 + 0.5 is the FBRD. Also note that x/y + 1/2 = (2x+y)/2y. This | ||
| 559 | + leads to | ||
| 560 | + | ||
| 561 | + ((Uart Clock % (16 * baud_rate)) * 64 * 2 + (16 * baud_rate)) | ||
| 562 | + --------------------------------------------------------------------- | ||
| 563 | + 2 * (16 * baud_rate) | ||
| 564 | + */ | ||
| 565 | + | ||
| 566 | + fbrd_ = (speed_ / divisor_) % (16 * baud_rate); | ||
| 567 | + fbrd_ *= 128; | ||
| 568 | + fbrd_ += (16 * baud_rate); | ||
| 569 | + fbrd_ /= (2 * (16 * baud_rate)); | ||
| 570 | + | ||
| 571 | + --divisor_; | ||
| 572 | + clock_stuff->ibrd = ibrd_; | ||
| 573 | + clock_stuff->fbrd = fbrd_; | ||
| 574 | + | ||
| 575 | + /* | ||
| 576 | + * Set up the clock. | ||
| 577 | + */ | ||
| 578 | + | ||
| 579 | + writeapb(timer_base + TIMER_CONTROL, 0); | ||
| 580 | + writeapb(timer_base + TIMER_LOAD, divisor_); | ||
| 581 | + writeapb(timer_base + TIMER_CONTROL, | ||
| 582 | + (TIMER_CONTROL_ENABLE | TIMER_CONTROL_MODE)); | ||
| 583 | + | ||
| 584 | + return 0; | ||
| 585 | + | ||
| 586 | +} | ||
| 587 | + | ||
| 588 | +/* | ||
| 589 | + ====================================================================== | ||
| 590 | + ====================================================================== | ||
| 591 | + serial | ||
| 592 | + ====================================================================== | ||
| 593 | + ====================================================================== | ||
| 594 | +*/ | ||
| 595 | + | ||
| 596 | +static void *uart0_base; | ||
| 597 | + | ||
| 598 | +#define UART_DR 0x00 | ||
| 599 | +#define UART_FR 0x18 | ||
| 600 | +#define UART_IBRD 0x24 | ||
| 601 | +#define UART_FBRD 0x28 | ||
| 602 | +#define UART_LCR_H 0x2c | ||
| 603 | +#define UART_CR 0x30 | ||
| 604 | +#define UART_IFLS 0x34 | ||
| 605 | +#define UART_IMSC 0x38 | ||
| 606 | +#define UART_ECR 0x04 | ||
| 607 | + | ||
| 608 | +#define FR_RXFE 0x10 | ||
| 609 | +#define FR_TXFF 0x20 | ||
| 610 | + | ||
| 611 | +static int | ||
| 612 | +acp_serial_open(void) | ||
| 613 | +{ | ||
| 614 | + struct clock_stuff clock_stuff; | ||
| 615 | + | ||
| 616 | + get_clock_stuff(9600, &clock_stuff); | ||
| 617 | + writeapb(uart0_base + UART_IBRD, clock_stuff.ibrd); | ||
| 618 | + writeapb(uart0_base + UART_FBRD, clock_stuff.fbrd); | ||
| 619 | + writeapb(uart0_base + UART_LCR_H, 0x70); | ||
| 620 | + writeapb(uart0_base + UART_CR, 0x301); | ||
| 621 | + writeapb(uart0_base + UART_IFLS, 0); | ||
| 622 | + writeapb(uart0_base + UART_IMSC, 0x700); | ||
| 623 | + writeapb(uart0_base + UART_ECR, 0); | ||
| 624 | + | ||
| 625 | + return 0; | ||
| 626 | +} | ||
| 627 | + | ||
| 628 | +static void | ||
| 629 | +acp_serial_putc(unsigned char c) | ||
| 630 | +{ | ||
| 631 | + while (0 != (readapb(uart0_base + UART_FR) & FR_TXFF)) | ||
| 632 | + ; | ||
| 633 | + | ||
| 634 | + if ('\n' == c) { | ||
| 635 | + writeapb(uart0_base + UART_DR, '\r'); | ||
| 636 | + while (0 != (readapb(uart0_base + UART_FR) & FR_TXFF)) | ||
| 637 | + ; | ||
| 638 | + } | ||
| 639 | + | ||
| 640 | + writeapb(uart0_base + UART_DR, c); | ||
| 641 | + | ||
| 642 | + return; | ||
| 643 | +} | ||
| 644 | + | ||
| 645 | +static unsigned char | ||
| 646 | +acp_serial_getc(void) | ||
| 647 | +{ | ||
| 648 | + while (0 != (readapb(uart0_base + UART_FR) & FR_RXFE)) | ||
| 649 | + ; | ||
| 650 | + return readapb(uart0_base + UART_DR); | ||
| 651 | +} | ||
| 652 | + | ||
| 653 | +static unsigned char | ||
| 654 | +acp_serial_tstc(void) | ||
| 655 | +{ | ||
| 656 | + return (0 != (readapb(uart0_base + UART_FR) & FR_RXFE)); | ||
| 657 | +} | ||
| 658 | + | ||
| 659 | +int | ||
| 660 | +acp_console_init(void *devp, struct serial_console_data *scdp) | ||
| 661 | +{ | ||
| 662 | +#if 0 | ||
| 663 | + unsigned long reg_offset; | ||
| 664 | + | ||
| 665 | + if (dt_get_virtual_reg(devp, (void **) &uart0_base, 1) < 1) | ||
| 666 | + return -1; | ||
| 667 | + | ||
| 668 | + if (sizeof(reg_offset) == | ||
| 669 | + getprop(devp, "reg-offset", ®_offset, sizeof(reg_offset))) | ||
| 670 | + uart0_base += reg_offset; | ||
| 671 | + | ||
| 672 | + if (sizeof(reg_shift) != | ||
| 673 | + getprop(devp, "reg-shift", ®_shift, sizeof(reg_shift))) | ||
| 674 | + reg_shift = 0; | ||
| 675 | +#else | ||
| 676 | + uart0_base = (void *) 0xf0004000; | ||
| 677 | + /*uart0_base = (void *) 0xf0024000;*/ | ||
| 678 | + timer_base = (void *) 0xf0008040; | ||
| 679 | + /*timer_base = (void *) 0xf0029040;*/ | ||
| 680 | +#endif | ||
| 681 | + scdp->open = acp_serial_open; | ||
| 682 | + scdp->putc = acp_serial_putc; | ||
| 683 | + scdp->getc = acp_serial_getc; | ||
| 684 | + scdp->tstc = acp_serial_tstc; | ||
| 685 | + scdp->close = NULL; | ||
| 686 | + | ||
| 687 | + return 0; | ||
| 688 | +} | ||
| 689 | diff --git a/arch/powerpc/boot/crt0.S b/arch/powerpc/boot/crt0.S | ||
| 690 | index 0f7428a..db5db46 100644 | ||
| 691 | --- a/arch/powerpc/boot/crt0.S | ||
| 692 | +++ b/arch/powerpc/boot/crt0.S | ||
| 693 | @@ -34,6 +34,69 @@ p_pstack: .long _platform_stack_top | ||
| 694 | _zimage_start: | ||
| 695 | .globl _zimage_start_lib | ||
| 696 | _zimage_start_lib: | ||
| 697 | + | ||
| 698 | +#ifdef CONFIG_PPC47x | ||
| 699 | + /* Clear all UTLB entries as recommended by IBM (work-around) */ | ||
| 700 | + | ||
| 701 | + addis r3,0,0x8000 | ||
| 702 | + addi r4,0,0 | ||
| 703 | + addi r5,0,0 | ||
| 704 | + b clear_utlb_entry | ||
| 705 | + | ||
| 706 | + #; Align the loop to speed things up a bit. | ||
| 707 | + .align 6 | ||
| 708 | + | ||
| 709 | +clear_utlb_entry: | ||
| 710 | + | ||
| 711 | + tlbwe r4,r3,0 | ||
| 712 | + tlbwe r5,r3,1 | ||
| 713 | + tlbwe r5,r3,2 | ||
| 714 | + addo r6,r6,r6 | ||
| 715 | + addo r6,r6,r6 | ||
| 716 | + addo r6,r6,r6 | ||
| 717 | + addo r6,r6,r6 | ||
| 718 | + addo r6,r6,r6 | ||
| 719 | + addis r3,r3,0x2000 | ||
| 720 | + cmpwi r3,0 | ||
| 721 | + bne clear_utlb_entry | ||
| 722 | + addis r3,0,0x8000 | ||
| 723 | + addis r4,r4,0x100 | ||
| 724 | + cmpwi r4,0 | ||
| 725 | + bne clear_utlb_entry | ||
| 726 | + | ||
| 727 | + #; Restore the inital UTLB entries. | ||
| 728 | + addi r23,0,0 | ||
| 729 | + addi r24,0,0xbf0 | ||
| 730 | + addi r25,0,0 | ||
| 731 | + lis r26,(0x00030307)@h | ||
| 732 | + ori r26,r26,(0x00030307)@l | ||
| 733 | + tlbwe r24,r23,0 | ||
| 734 | + tlbwe r25,r23,1 | ||
| 735 | + tlbwe r26,r23,2 | ||
| 736 | + addo r6,r6,r6 | ||
| 737 | + addo r6,r6,r6 | ||
| 738 | + addo r6,r6,r6 | ||
| 739 | + addo r6,r6,r6 | ||
| 740 | + addo r6,r6,r6 | ||
| 741 | + lis r23,(0x00f00000)@h | ||
| 742 | + ori r23,r23,(0x00f0000)@l | ||
| 743 | + lis r24,(0xf0000870)@h | ||
| 744 | + ori r24,r24,(0xf0000870)@l | ||
| 745 | + lis r25,(0x00400020)@h | ||
| 746 | + ori r25,r25,(0x00400020)@l | ||
| 747 | + lis r26,(0x00030707)@h | ||
| 748 | + ori r26,r26,(0x00030707)@l | ||
| 749 | + tlbwe r24,r23,0 | ||
| 750 | + tlbwe r25,r23,1 | ||
| 751 | + tlbwe r26,r23,2 | ||
| 752 | + addo r6,r6,r6 | ||
| 753 | + addo r6,r6,r6 | ||
| 754 | + addo r6,r6,r6 | ||
| 755 | + addo r6,r6,r6 | ||
| 756 | + addo r6,r6,r6 | ||
| 757 | + isync | ||
| 758 | +#endif | ||
| 759 | + | ||
| 760 | /* Work out the offset between the address we were linked at | ||
| 761 | and the address where we're running. */ | ||
| 762 | bl .+4 | ||
| 763 | diff --git a/arch/powerpc/boot/dts/acp.dts b/arch/powerpc/boot/dts/acp.dts | ||
| 764 | new file mode 100644 | ||
| 765 | index 0000000..90965db | ||
| 766 | --- /dev/null | ||
| 767 | +++ b/arch/powerpc/boot/dts/acp.dts | ||
| 768 | @@ -0,0 +1,129 @@ | ||
| 769 | +/* | ||
| 770 | + * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 771 | + * | ||
| 772 | + * Copyright 2009 Torez Smith, IBM Corporation. | ||
| 773 | + * | ||
| 774 | + * Based on earlier code: | ||
| 775 | + * Copyright (c) 2006, 2007 IBM Corp. | ||
| 776 | + * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> | ||
| 777 | + * | ||
| 778 | + * This file is licensed under the terms of the GNU General Public | ||
| 779 | + * License version 2. This program is licensed "as is" without | ||
| 780 | + * any warranty of any kind, whether express or implied. | ||
| 781 | + * | ||
| 782 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 783 | + */ | ||
| 784 | + | ||
| 785 | +/dts-v1/; | ||
| 786 | + | ||
| 787 | +/memreserve/ 0x01f00000 0x00100000; | ||
| 788 | + | ||
| 789 | +/ { | ||
| 790 | + #address-cells = <2>; | ||
| 791 | + #size-cells = <1>; | ||
| 792 | + model = "ibm,acpx1-4xx"; | ||
| 793 | + compatible = "ibm,acpx1-4xx"; | ||
| 794 | + dcr-parent = <&{/cpus/cpu@0}>; | ||
| 795 | + | ||
| 796 | + aliases { | ||
| 797 | + serial0 = &UART0; | ||
| 798 | + }; | ||
| 799 | + | ||
| 800 | + cpus { | ||
| 801 | + #address-cells = <1>; | ||
| 802 | + #size-cells = <0>; | ||
| 803 | + | ||
| 804 | + cpu@0 { | ||
| 805 | + device_type = "cpu"; | ||
| 806 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 807 | + reg = <0>; | ||
| 808 | + clock-frequency = <12500000>; // 12.5 MHz | ||
| 809 | + //timebase-frequency = <781250>; // CCR1 is div by 16 | ||
| 810 | + timebase-frequency = <12500000>; // 12.5 MHz | ||
| 811 | + //timebase-frequency = <50000000>; // 50 MHz | ||
| 812 | + i-cache-line-size = <32>; | ||
| 813 | + d-cache-line-size = <32>; | ||
| 814 | + i-cache-size = <32768>; | ||
| 815 | + d-cache-size = <32768>; | ||
| 816 | + dcr-controller; | ||
| 817 | + dcr-access-method = "native"; | ||
| 818 | + status = "ok"; | ||
| 819 | + }; | ||
| 820 | + }; | ||
| 821 | + | ||
| 822 | + memory { | ||
| 823 | + device_type = "memory"; | ||
| 824 | + /* | ||
| 825 | + * Originally we have 256M of RAM on the system. Start at 4M | ||
| 826 | + * offset and define the RAM to be 252M instead (256M - 4M). | ||
| 827 | + * | ||
| 828 | + * Since we are hard coding RAM, comment out the | ||
| 829 | + * line platform_ops.fixups = iss_4xx_fixups; | ||
| 830 | + * inside file arch/powerpc/boot/treeboot-iss4xx.c | ||
| 831 | + * This allows us to statically define it instead of later calling | ||
| 832 | + * dt_fixup_memory() to define it and re-write found value inside | ||
| 833 | + * device tree. | ||
| 834 | + * | ||
| 835 | + * Using 2 Address Cell and 1 Size Cell notation | ||
| 836 | + */ | ||
| 837 | + /* | ||
| 838 | + * This is the original RAM line...filled in later by dt_fixup_memory() | ||
| 839 | + * routine. | ||
| 840 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 841 | + */ | ||
| 842 | + | ||
| 843 | + reg = < 0x0 0x400000 0xFC00000 >; // hardcode 252M starting at 4M | ||
| 844 | + }; | ||
| 845 | + | ||
| 846 | + MPIC: interrupt-controller { | ||
| 847 | + compatible = "chrp,open-pic"; | ||
| 848 | + interrupt-controller; | ||
| 849 | + dcr-reg = <0xffc00000 0x00030000>; | ||
| 850 | + #address-cells = <0>; | ||
| 851 | + #size-cells = <0>; | ||
| 852 | + #interrupt-cells = <2>; | ||
| 853 | + | ||
| 854 | + }; | ||
| 855 | + | ||
| 856 | + plb { | ||
| 857 | + compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */ | ||
| 858 | + #address-cells = <2>; | ||
| 859 | + #size-cells = <1>; | ||
| 860 | + ranges; | ||
| 861 | + clock-frequency = <0>; // Filled in by zImage | ||
| 862 | + | ||
| 863 | + POB0: opb { | ||
| 864 | + compatible = "ibm,opb-4xx", "ibm,opb"; | ||
| 865 | + #address-cells = <1>; | ||
| 866 | + #size-cells = <1>; | ||
| 867 | + /* Wish there was a nicer way of specifying a full 32-bit | ||
| 868 | + range */ | ||
| 869 | + ranges = <0x00000000 0x00000001 0x00000000 0x80000000 | ||
| 870 | + 0x80000000 0x00000001 0x80000000 0x80000000>; | ||
| 871 | + clock-frequency = <0>; // Filled in by zImage | ||
| 872 | + UART0: serial@00404000 { | ||
| 873 | + device_type = "serial"; | ||
| 874 | + compatible = "acp-uart0"; | ||
| 875 | + reg = <0x00404000 0x00001000>; | ||
| 876 | + virtual-reg = <0xf0004000>; | ||
| 877 | + clock-frequency = <33333333>; | ||
| 878 | + current-speed = <9600>; | ||
| 879 | + interrupt-parent = <&MPIC>; | ||
| 880 | + interrupts = <22>; | ||
| 881 | + }; | ||
| 882 | + }; | ||
| 883 | + }; | ||
| 884 | + | ||
| 885 | + nvrtc { | ||
| 886 | + compatible = "ds1743-nvram", "ds1743", "rtc-ds1743"; | ||
| 887 | + reg = <0 0xEF703000 0x2000>; | ||
| 888 | + }; | ||
| 889 | + iss-block { | ||
| 890 | + compatible = "ibm,iss-sim-block-device"; | ||
| 891 | + reg = <0 0xEF701000 0x1000>; | ||
| 892 | + }; | ||
| 893 | + | ||
| 894 | + chosen { | ||
| 895 | + linux,stdout-path = "/plb/opb/serial@40000200"; | ||
| 896 | + }; | ||
| 897 | +}; | ||
| 898 | diff --git a/arch/powerpc/boot/dts/acpiss.dts b/arch/powerpc/boot/dts/acpiss.dts | ||
| 899 | new file mode 100644 | ||
| 900 | index 0000000..5dbc143 | ||
| 901 | --- /dev/null | ||
| 902 | +++ b/arch/powerpc/boot/dts/acpiss.dts | ||
| 903 | @@ -0,0 +1,175 @@ | ||
| 904 | +/* | ||
| 905 | + * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 906 | + * | ||
| 907 | + * Copyright 2009 Torez Smith, IBM Corporation. | ||
| 908 | + * | ||
| 909 | + * Based on earlier code: | ||
| 910 | + * Copyright (c) 2006, 2007 IBM Corp. | ||
| 911 | + * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> | ||
| 912 | + * | ||
| 913 | + * This file is licensed under the terms of the GNU General Public | ||
| 914 | + * License version 2. This program is licensed "as is" without | ||
| 915 | + * any warranty of any kind, whether express or implied. | ||
| 916 | + * | ||
| 917 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 918 | + */ | ||
| 919 | + | ||
| 920 | +/dts-v1/; | ||
| 921 | + | ||
| 922 | +/memreserve/ 0x01f00000 0x00100000; | ||
| 923 | + | ||
| 924 | +/ { | ||
| 925 | + #address-cells = <2>; | ||
| 926 | + #size-cells = <1>; | ||
| 927 | + model = "ibm,iss-4xx"; | ||
| 928 | + compatible = "ibm,iss-4xx"; | ||
| 929 | + dcr-parent = <&{/cpus/cpu@0}>; | ||
| 930 | + | ||
| 931 | + aliases { | ||
| 932 | + serial0 = &UART0; | ||
| 933 | + serial1 = &UART1; | ||
| 934 | + }; | ||
| 935 | + | ||
| 936 | + cpus { | ||
| 937 | + #address-cells = <1>; | ||
| 938 | + #size-cells = <0>; | ||
| 939 | + | ||
| 940 | + cpu@0 { | ||
| 941 | + device_type = "cpu"; | ||
| 942 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 943 | + reg = <0>; | ||
| 944 | + clock-frequency = <0x5f5e1000>; // 1.6Ghz :-) | ||
| 945 | + timebase-frequency = <0x5f5e1000>; | ||
| 946 | + //clock-frequency = <100000000>; // 100Mhz :-) | ||
| 947 | + //timebase-frequency = <100000000>; | ||
| 948 | + i-cache-line-size = <32>; // may need fixup in sim | ||
| 949 | + d-cache-line-size = <32>; // may need fixup in sim | ||
| 950 | + i-cache-size = <32768>; /* may need fixup in sim */ | ||
| 951 | + d-cache-size = <32768>; /* may need fixup in sim */ | ||
| 952 | + dcr-controller; | ||
| 953 | + dcr-access-method = "native"; | ||
| 954 | + status = "ok"; | ||
| 955 | + }; | ||
| 956 | + cpu@1 { | ||
| 957 | + device_type = "cpu"; | ||
| 958 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 959 | + reg = <1>; | ||
| 960 | + clock-frequency = <0x5f5e1000>; // 1.6Ghz :-) | ||
| 961 | + timebase-frequency = <0x5f5e1000>; | ||
| 962 | + //clock-frequency = <100000000>; // 100Mhz :-) | ||
| 963 | + //timebase-frequency = <100000000>; | ||
| 964 | + i-cache-line-size = <32>; // may need fixup in sim | ||
| 965 | + d-cache-line-size = <32>; // may need fixup in sim | ||
| 966 | + i-cache-size = <32768>; /* may need fixup in sim */ | ||
| 967 | + d-cache-size = <32768>; /* may need fixup in sim */ | ||
| 968 | + dcr-controller; | ||
| 969 | + dcr-access-method = "native"; | ||
| 970 | + status = "disabled"; | ||
| 971 | + enable-method = "spin-table"; | ||
| 972 | + cpu-release-addr = <0 0x01f00100>; | ||
| 973 | + }; | ||
| 974 | + cpu@2 { | ||
| 975 | + device_type = "cpu"; | ||
| 976 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 977 | + reg = <2>; | ||
| 978 | + clock-frequency = <0x5f5e1000>; // 1.6Ghz :-) | ||
| 979 | + timebase-frequency = <0x5f5e1000>; | ||
| 980 | + //clock-frequency = <100000000>; // 100Mhz :-) | ||
| 981 | + //timebase-frequency = <100000000>; | ||
| 982 | + i-cache-line-size = <32>; // may need fixup in sim | ||
| 983 | + d-cache-line-size = <32>; // may need fixup in sim | ||
| 984 | + i-cache-size = <32768>; /* may need fixup in sim */ | ||
| 985 | + d-cache-size = <32768>; /* may need fixup in sim */ | ||
| 986 | + dcr-controller; | ||
| 987 | + dcr-access-method = "native"; | ||
| 988 | + status = "disabled"; | ||
| 989 | + enable-method = "spin-table"; | ||
| 990 | + cpu-release-addr = <0 0x01f00200>; | ||
| 991 | + }; | ||
| 992 | + cpu@3 { | ||
| 993 | + device_type = "cpu"; | ||
| 994 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 995 | + reg = <3>; | ||
| 996 | + clock-frequency = <0x5f5e1000>; // 1.6Ghz :-) | ||
| 997 | + timebase-frequency = <0x5f5e1000>; | ||
| 998 | + //clock-frequency = <100000000>; // 100Mhz :-) | ||
| 999 | + //timebase-frequency = <100000000>; | ||
| 1000 | + i-cache-line-size = <32>; // may need fixup in sim | ||
| 1001 | + d-cache-line-size = <32>; // may need fixup in sim | ||
| 1002 | + i-cache-size = <32768>; /* may need fixup in sim */ | ||
| 1003 | + d-cache-size = <32768>; /* may need fixup in sim */ | ||
| 1004 | + dcr-controller; | ||
| 1005 | + dcr-access-method = "native"; | ||
| 1006 | + status = "disabled"; | ||
| 1007 | + enable-method = "spin-table"; | ||
| 1008 | + cpu-release-addr = <0 0x01f00300>; | ||
| 1009 | + }; | ||
| 1010 | + }; | ||
| 1011 | + | ||
| 1012 | + memory { | ||
| 1013 | + device_type = "memory"; | ||
| 1014 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1015 | + }; | ||
| 1016 | + | ||
| 1017 | + MPIC: interrupt-controller { | ||
| 1018 | + compatible = "chrp,open-pic"; | ||
| 1019 | + interrupt-controller; | ||
| 1020 | + dcr-reg = <0xffc00000 0x00030000>; | ||
| 1021 | + #address-cells = <0>; | ||
| 1022 | + #size-cells = <0>; | ||
| 1023 | + #interrupt-cells = <2>; | ||
| 1024 | + | ||
| 1025 | + }; | ||
| 1026 | + | ||
| 1027 | + plb { | ||
| 1028 | + compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */ | ||
| 1029 | + #address-cells = <2>; | ||
| 1030 | + #size-cells = <1>; | ||
| 1031 | + ranges; | ||
| 1032 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1033 | + | ||
| 1034 | + POB0: opb { | ||
| 1035 | + compatible = "ibm,opb-4xx", "ibm,opb"; | ||
| 1036 | + #address-cells = <1>; | ||
| 1037 | + #size-cells = <1>; | ||
| 1038 | + /* Wish there was a nicer way of specifying a full 32-bit | ||
| 1039 | + range */ | ||
| 1040 | + ranges = <0x00000000 0x00000001 0x00000000 0x80000000 | ||
| 1041 | + 0x80000000 0x00000001 0x80000000 0x80000000>; | ||
| 1042 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1043 | + UART0: serial@40000200 { | ||
| 1044 | + device_type = "serial"; | ||
| 1045 | + compatible = "ns16550", "ns16550a"; | ||
| 1046 | + reg = <0x40000200 0x00000008>; | ||
| 1047 | + virtual-reg = <0xe0000200>; | ||
| 1048 | + clock-frequency = <11059200>; | ||
| 1049 | + current-speed = <115200>; | ||
| 1050 | + interrupt-parent = <&MPIC>; | ||
| 1051 | + interrupts = <0x0 0x2>; | ||
| 1052 | + }; | ||
| 1053 | + UART1: serial@40000300 { | ||
| 1054 | + device_type = "serial"; | ||
| 1055 | + compatible = "ns16550", "ns16550a"; | ||
| 1056 | + reg = <0x40000300 0x00000008>; | ||
| 1057 | + virtual-reg = <0xe0000300>; | ||
| 1058 | + clock-frequency = <11059200>; | ||
| 1059 | + current-speed = <115200>; | ||
| 1060 | + interrupt-parent = <&MPIC>; | ||
| 1061 | + interrupts = <23 0x2>; | ||
| 1062 | + }; | ||
| 1063 | + }; | ||
| 1064 | + }; | ||
| 1065 | + | ||
| 1066 | + nvrtc { | ||
| 1067 | + compatible = "ds1743-nvram", "ds1743", "rtc-ds1743"; | ||
| 1068 | + reg = <0 0xEF703000 0x2000>; | ||
| 1069 | + }; | ||
| 1070 | + iss-block { | ||
| 1071 | + compatible = "ibm,iss-sim-block-device"; | ||
| 1072 | + reg = <0 0xEF701000 0x1000>; | ||
| 1073 | + }; | ||
| 1074 | + | ||
| 1075 | + chosen { | ||
| 1076 | + linux,stdout-path = "/plb/opb/serial@40000200"; | ||
| 1077 | + }; | ||
| 1078 | +}; | ||
| 1079 | diff --git a/arch/powerpc/boot/dts/acpx1.dts b/arch/powerpc/boot/dts/acpx1.dts | ||
| 1080 | new file mode 100644 | ||
| 1081 | index 0000000..90965db | ||
| 1082 | --- /dev/null | ||
| 1083 | +++ b/arch/powerpc/boot/dts/acpx1.dts | ||
| 1084 | @@ -0,0 +1,129 @@ | ||
| 1085 | +/* | ||
| 1086 | + * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 1087 | + * | ||
| 1088 | + * Copyright 2009 Torez Smith, IBM Corporation. | ||
| 1089 | + * | ||
| 1090 | + * Based on earlier code: | ||
| 1091 | + * Copyright (c) 2006, 2007 IBM Corp. | ||
| 1092 | + * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> | ||
| 1093 | + * | ||
| 1094 | + * This file is licensed under the terms of the GNU General Public | ||
| 1095 | + * License version 2. This program is licensed "as is" without | ||
| 1096 | + * any warranty of any kind, whether express or implied. | ||
| 1097 | + * | ||
| 1098 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 1099 | + */ | ||
| 1100 | + | ||
| 1101 | +/dts-v1/; | ||
| 1102 | + | ||
| 1103 | +/memreserve/ 0x01f00000 0x00100000; | ||
| 1104 | + | ||
| 1105 | +/ { | ||
| 1106 | + #address-cells = <2>; | ||
| 1107 | + #size-cells = <1>; | ||
| 1108 | + model = "ibm,acpx1-4xx"; | ||
| 1109 | + compatible = "ibm,acpx1-4xx"; | ||
| 1110 | + dcr-parent = <&{/cpus/cpu@0}>; | ||
| 1111 | + | ||
| 1112 | + aliases { | ||
| 1113 | + serial0 = &UART0; | ||
| 1114 | + }; | ||
| 1115 | + | ||
| 1116 | + cpus { | ||
| 1117 | + #address-cells = <1>; | ||
| 1118 | + #size-cells = <0>; | ||
| 1119 | + | ||
| 1120 | + cpu@0 { | ||
| 1121 | + device_type = "cpu"; | ||
| 1122 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 1123 | + reg = <0>; | ||
| 1124 | + clock-frequency = <12500000>; // 12.5 MHz | ||
| 1125 | + //timebase-frequency = <781250>; // CCR1 is div by 16 | ||
| 1126 | + timebase-frequency = <12500000>; // 12.5 MHz | ||
| 1127 | + //timebase-frequency = <50000000>; // 50 MHz | ||
| 1128 | + i-cache-line-size = <32>; | ||
| 1129 | + d-cache-line-size = <32>; | ||
| 1130 | + i-cache-size = <32768>; | ||
| 1131 | + d-cache-size = <32768>; | ||
| 1132 | + dcr-controller; | ||
| 1133 | + dcr-access-method = "native"; | ||
| 1134 | + status = "ok"; | ||
| 1135 | + }; | ||
| 1136 | + }; | ||
| 1137 | + | ||
| 1138 | + memory { | ||
| 1139 | + device_type = "memory"; | ||
| 1140 | + /* | ||
| 1141 | + * Originally we have 256M of RAM on the system. Start at 4M | ||
| 1142 | + * offset and define the RAM to be 252M instead (256M - 4M). | ||
| 1143 | + * | ||
| 1144 | + * Since we are hard coding RAM, comment out the | ||
| 1145 | + * line platform_ops.fixups = iss_4xx_fixups; | ||
| 1146 | + * inside file arch/powerpc/boot/treeboot-iss4xx.c | ||
| 1147 | + * This allows us to statically define it instead of later calling | ||
| 1148 | + * dt_fixup_memory() to define it and re-write found value inside | ||
| 1149 | + * device tree. | ||
| 1150 | + * | ||
| 1151 | + * Using 2 Address Cell and 1 Size Cell notation | ||
| 1152 | + */ | ||
| 1153 | + /* | ||
| 1154 | + * This is the original RAM line...filled in later by dt_fixup_memory() | ||
| 1155 | + * routine. | ||
| 1156 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1157 | + */ | ||
| 1158 | + | ||
| 1159 | + reg = < 0x0 0x400000 0xFC00000 >; // hardcode 252M starting at 4M | ||
| 1160 | + }; | ||
| 1161 | + | ||
| 1162 | + MPIC: interrupt-controller { | ||
| 1163 | + compatible = "chrp,open-pic"; | ||
| 1164 | + interrupt-controller; | ||
| 1165 | + dcr-reg = <0xffc00000 0x00030000>; | ||
| 1166 | + #address-cells = <0>; | ||
| 1167 | + #size-cells = <0>; | ||
| 1168 | + #interrupt-cells = <2>; | ||
| 1169 | + | ||
| 1170 | + }; | ||
| 1171 | + | ||
| 1172 | + plb { | ||
| 1173 | + compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */ | ||
| 1174 | + #address-cells = <2>; | ||
| 1175 | + #size-cells = <1>; | ||
| 1176 | + ranges; | ||
| 1177 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1178 | + | ||
| 1179 | + POB0: opb { | ||
| 1180 | + compatible = "ibm,opb-4xx", "ibm,opb"; | ||
| 1181 | + #address-cells = <1>; | ||
| 1182 | + #size-cells = <1>; | ||
| 1183 | + /* Wish there was a nicer way of specifying a full 32-bit | ||
| 1184 | + range */ | ||
| 1185 | + ranges = <0x00000000 0x00000001 0x00000000 0x80000000 | ||
| 1186 | + 0x80000000 0x00000001 0x80000000 0x80000000>; | ||
| 1187 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1188 | + UART0: serial@00404000 { | ||
| 1189 | + device_type = "serial"; | ||
| 1190 | + compatible = "acp-uart0"; | ||
| 1191 | + reg = <0x00404000 0x00001000>; | ||
| 1192 | + virtual-reg = <0xf0004000>; | ||
| 1193 | + clock-frequency = <33333333>; | ||
| 1194 | + current-speed = <9600>; | ||
| 1195 | + interrupt-parent = <&MPIC>; | ||
| 1196 | + interrupts = <22>; | ||
| 1197 | + }; | ||
| 1198 | + }; | ||
| 1199 | + }; | ||
| 1200 | + | ||
| 1201 | + nvrtc { | ||
| 1202 | + compatible = "ds1743-nvram", "ds1743", "rtc-ds1743"; | ||
| 1203 | + reg = <0 0xEF703000 0x2000>; | ||
| 1204 | + }; | ||
| 1205 | + iss-block { | ||
| 1206 | + compatible = "ibm,iss-sim-block-device"; | ||
| 1207 | + reg = <0 0xEF701000 0x1000>; | ||
| 1208 | + }; | ||
| 1209 | + | ||
| 1210 | + chosen { | ||
| 1211 | + linux,stdout-path = "/plb/opb/serial@40000200"; | ||
| 1212 | + }; | ||
| 1213 | +}; | ||
| 1214 | diff --git a/arch/powerpc/boot/dts/iss476-amp1.dts b/arch/powerpc/boot/dts/iss476-amp1.dts | ||
| 1215 | new file mode 100644 | ||
| 1216 | index 0000000..1b4e6e4 | ||
| 1217 | --- /dev/null | ||
| 1218 | +++ b/arch/powerpc/boot/dts/iss476-amp1.dts | ||
| 1219 | @@ -0,0 +1,124 @@ | ||
| 1220 | +/* | ||
| 1221 | + * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 1222 | + * | ||
| 1223 | + * Copyright 2010 Torez Smith, IBM Corporation. | ||
| 1224 | + * | ||
| 1225 | + * Based on earlier code: | ||
| 1226 | + * Copyright (c) 2006, 2007 IBM Corp. | ||
| 1227 | + * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> | ||
| 1228 | + * | ||
| 1229 | + * This file is licensed under the terms of the GNU General Public | ||
| 1230 | + * License version 2. This program is licensed "as is" without | ||
| 1231 | + * any warranty of any kind, whether express or implied. | ||
| 1232 | + */ | ||
| 1233 | + | ||
| 1234 | +/dts-v1/; | ||
| 1235 | + | ||
| 1236 | +/memreserve/ 0x01f00000 0x00100000; | ||
| 1237 | + | ||
| 1238 | +/ { | ||
| 1239 | + #address-cells = <2>; | ||
| 1240 | + #size-cells = <1>; | ||
| 1241 | + model = "ibm,iss-4xx"; | ||
| 1242 | + compatible = "ibm,iss-4xx", "ibm,47x-AMP"; | ||
| 1243 | + dcr-parent = <&{/cpus/cpu@0}>; | ||
| 1244 | + | ||
| 1245 | + aliases { | ||
| 1246 | + serial0 = &UART0; | ||
| 1247 | + }; | ||
| 1248 | + | ||
| 1249 | + cpus { | ||
| 1250 | + #address-cells = <1>; | ||
| 1251 | + #size-cells = <0>; | ||
| 1252 | + | ||
| 1253 | + cpu@0 { | ||
| 1254 | + device_type = "cpu"; | ||
| 1255 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 1256 | + reg = <0>; | ||
| 1257 | + clock-frequency = <100000000>; // 100Mhz :-) | ||
| 1258 | + timebase-frequency = <100000000>; | ||
| 1259 | + i-cache-line-size = <32>; | ||
| 1260 | + d-cache-line-size = <32>; | ||
| 1261 | + i-cache-size = <32768>; | ||
| 1262 | + d-cache-size = <32768>; | ||
| 1263 | + dcr-controller; | ||
| 1264 | + dcr-access-method = "native"; | ||
| 1265 | + status = "ok"; | ||
| 1266 | + }; | ||
| 1267 | + cpu@1 { | ||
| 1268 | + device_type = "cpu"; | ||
| 1269 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 1270 | + reg = <1>; | ||
| 1271 | + clock-frequency = <100000000>; // 100Mhz :-) | ||
| 1272 | + timebase-frequency = <100000000>; | ||
| 1273 | + i-cache-line-size = <32>; | ||
| 1274 | + d-cache-line-size = <32>; | ||
| 1275 | + i-cache-size = <32768>; | ||
| 1276 | + d-cache-size = <32768>; | ||
| 1277 | + dcr-controller; | ||
| 1278 | + dcr-access-method = "native"; | ||
| 1279 | + status = "disabled"; | ||
| 1280 | + enable-method = "spin-table"; | ||
| 1281 | + cpu-release-addr = <0 0x01f00100>; | ||
| 1282 | + }; | ||
| 1283 | + }; | ||
| 1284 | + | ||
| 1285 | + memory { | ||
| 1286 | + device_type = "memory"; | ||
| 1287 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1288 | + | ||
| 1289 | + }; | ||
| 1290 | + | ||
| 1291 | + MPIC: interrupt-controller { | ||
| 1292 | + compatible = "chrp,open-pic"; | ||
| 1293 | + interrupt-controller; | ||
| 1294 | + dcr-reg = <0xffc00000 0x00030000>; | ||
| 1295 | + #address-cells = <0>; | ||
| 1296 | + #size-cells = <0>; | ||
| 1297 | + #interrupt-cells = <2>; | ||
| 1298 | + | ||
| 1299 | + }; | ||
| 1300 | + | ||
| 1301 | + plb { | ||
| 1302 | + compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */ | ||
| 1303 | + #address-cells = <2>; | ||
| 1304 | + #size-cells = <1>; | ||
| 1305 | + ranges; | ||
| 1306 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1307 | + | ||
| 1308 | + POB0: opb { | ||
| 1309 | + compatible = "ibm,opb-4xx", "ibm,opb"; | ||
| 1310 | + #address-cells = <1>; | ||
| 1311 | + #size-cells = <1>; | ||
| 1312 | + /* Wish there was a nicer way of specifying a full 32-bit | ||
| 1313 | + range */ | ||
| 1314 | + ranges = <0x00000000 0x00000001 0x00000000 0x80000000 | ||
| 1315 | + 0x80000000 0x00000001 0x80000000 0x80000000>; | ||
| 1316 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1317 | + UART0: serial@40000200 { | ||
| 1318 | + device_type = "serial"; | ||
| 1319 | + compatible = "ns16550a"; | ||
| 1320 | + reg = <0x40000200 0x00000008>; | ||
| 1321 | + virtual-reg = <0xe0000200>; | ||
| 1322 | + clock-frequency = <11059200>; | ||
| 1323 | + current-speed = <115200>; | ||
| 1324 | + interrupt-parent = <&MPIC>; | ||
| 1325 | + interrupts = <0x0 0x2>; | ||
| 1326 | + }; | ||
| 1327 | + }; | ||
| 1328 | + }; | ||
| 1329 | + | ||
| 1330 | + nvrtc { | ||
| 1331 | + compatible = "ds1743-nvram", "ds1743", "rtc-ds1743"; | ||
| 1332 | + reg = <0 0xEF703000 0x2000>; | ||
| 1333 | + }; | ||
| 1334 | + | ||
| 1335 | + iss-block { | ||
| 1336 | + compatible = "ibm,iss-sim-block-device"; | ||
| 1337 | + reg = <0 0xEF701000 0x1000>; | ||
| 1338 | + }; | ||
| 1339 | + | ||
| 1340 | + chosen { | ||
| 1341 | + linux,stdout-path = "/plb/opb/serial@40000200"; | ||
| 1342 | + }; | ||
| 1343 | +}; | ||
| 1344 | diff --git a/arch/powerpc/boot/dts/iss476-amp2.dts b/arch/powerpc/boot/dts/iss476-amp2.dts | ||
| 1345 | new file mode 100644 | ||
| 1346 | index 0000000..df38ee5 | ||
| 1347 | --- /dev/null | ||
| 1348 | +++ b/arch/powerpc/boot/dts/iss476-amp2.dts | ||
| 1349 | @@ -0,0 +1,123 @@ | ||
| 1350 | +/* | ||
| 1351 | + * Device Tree Source for IBM Embedded PPC 476 Platform | ||
| 1352 | + * | ||
| 1353 | + * Copyright 2010 Torez Smith, IBM Corporation. | ||
| 1354 | + * | ||
| 1355 | + * Based on earlier code: | ||
| 1356 | + * Copyright (c) 2006, 2007 IBM Corp. | ||
| 1357 | + * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com> | ||
| 1358 | + * | ||
| 1359 | + * This file is licensed under the terms of the GNU General Public | ||
| 1360 | + * License version 2. This program is licensed "as is" without | ||
| 1361 | + * any warranty of any kind, whether express or implied. | ||
| 1362 | + */ | ||
| 1363 | + | ||
| 1364 | +/dts-v1/; | ||
| 1365 | + | ||
| 1366 | +/memreserve/ 0x11f00000 0x00100000; | ||
| 1367 | + | ||
| 1368 | +/ { | ||
| 1369 | + #address-cells = <2>; | ||
| 1370 | + #size-cells = <1>; | ||
| 1371 | + model = "ibm,iss-4xx"; | ||
| 1372 | + compatible = "ibm,iss-4xx", "ibm,47x-AMP"; | ||
| 1373 | + dcr-parent = <&{/cpus/cpu@2}>; | ||
| 1374 | + | ||
| 1375 | + aliases { | ||
| 1376 | + serial0 = &UART0; | ||
| 1377 | + }; | ||
| 1378 | + | ||
| 1379 | + cpus { | ||
| 1380 | + #address-cells = <1>; | ||
| 1381 | + #size-cells = <0>; | ||
| 1382 | + | ||
| 1383 | + cpu@2 { | ||
| 1384 | + device_type = "cpu"; | ||
| 1385 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 1386 | + reg = <2>; | ||
| 1387 | + clock-frequency = <100000000>; // 100Mhz :-) | ||
| 1388 | + timebase-frequency = <100000000>; | ||
| 1389 | + i-cache-line-size = <32>; | ||
| 1390 | + d-cache-line-size = <32>; | ||
| 1391 | + i-cache-size = <32768>; | ||
| 1392 | + d-cache-size = <32768>; | ||
| 1393 | + dcr-controller; | ||
| 1394 | + dcr-access-method = "native"; | ||
| 1395 | + status = "ok"; | ||
| 1396 | + }; | ||
| 1397 | + cpu@3 { | ||
| 1398 | + device_type = "cpu"; | ||
| 1399 | + model = "PowerPC,4xx"; // real CPU changed in sim | ||
| 1400 | + reg = <3>; | ||
| 1401 | + clock-frequency = <100000000>; // 100Mhz :-) | ||
| 1402 | + timebase-frequency = <100000000>; | ||
| 1403 | + i-cache-line-size = <32>; | ||
| 1404 | + d-cache-line-size = <32>; | ||
| 1405 | + i-cache-size = <32768>; | ||
| 1406 | + d-cache-size = <32768>; | ||
| 1407 | + dcr-controller; | ||
| 1408 | + dcr-access-method = "native"; | ||
| 1409 | + status = "disabled"; | ||
| 1410 | + enable-method = "spin-table"; | ||
| 1411 | + cpu-release-addr = <0 0x11f00300>; | ||
| 1412 | + }; | ||
| 1413 | + }; | ||
| 1414 | + | ||
| 1415 | + memory { | ||
| 1416 | + device_type = "memory"; | ||
| 1417 | +/* | ||
| 1418 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1419 | + */ | ||
| 1420 | + reg = < 0x0 0x10000000 0x02000000 >; | ||
| 1421 | + | ||
| 1422 | + }; | ||
| 1423 | + | ||
| 1424 | + MPIC: interrupt-controller { | ||
| 1425 | + compatible = "chrp,open-pic"; | ||
| 1426 | + interrupt-controller; | ||
| 1427 | + dcr-reg = <0xffc00000 0x00030000>; | ||
| 1428 | + #address-cells = <0>; | ||
| 1429 | + #size-cells = <0>; | ||
| 1430 | + #interrupt-cells = <2>; | ||
| 1431 | + | ||
| 1432 | + }; | ||
| 1433 | + | ||
| 1434 | + plb { | ||
| 1435 | + compatible = "ibm,plb-4xx", "ibm,plb4"; /* Could be PLB6, doesn't matter */ | ||
| 1436 | + #address-cells = <2>; | ||
| 1437 | + #size-cells = <1>; | ||
| 1438 | + ranges; | ||
| 1439 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1440 | + | ||
| 1441 | + POB0: opb { | ||
| 1442 | + compatible = "ibm,opb-4xx", "ibm,opb"; | ||
| 1443 | + #address-cells = <1>; | ||
| 1444 | + #size-cells = <1>; | ||
| 1445 | + /* Wish there was a nicer way of specifying a full 32-bit | ||
| 1446 | + range */ | ||
| 1447 | + ranges = <0x00000000 0x00000001 0x00000000 0x80000000 | ||
| 1448 | + 0x80000000 0x00000001 0x80000000 0x80000000>; | ||
| 1449 | + clock-frequency = <0>; // Filled in by zImage | ||
| 1450 | + UART0: serial@40001200 { | ||
| 1451 | + device_type = "serial"; | ||
| 1452 | + compatible = "ns16550a"; | ||
| 1453 | + reg = <0x40001200 0x00000008>; | ||
| 1454 | + virtual-reg = <0xe0001200>; | ||
| 1455 | + clock-frequency = <11059200>; | ||
| 1456 | + current-speed = <115200>; | ||
| 1457 | + interrupt-parent = <&MPIC>; | ||
| 1458 | + interrupts = <0x1 0x2>; | ||
| 1459 | + }; | ||
| 1460 | + }; | ||
| 1461 | + }; | ||
| 1462 | + | ||
| 1463 | + nvrtc { | ||
| 1464 | + compatible = "ds1743-nvram", "ds1743", "rtc-ds1743"; | ||
| 1465 | + reg = <0 0xEF703000 0x2000>; | ||
| 1466 | + }; | ||
| 1467 | + | ||
| 1468 | + chosen { | ||
| 1469 | + bootargs = "uart_addr=0xf0001200"; | ||
| 1470 | + linux,stdout-path = "/plb/opb/serial@40001200"; | ||
| 1471 | + }; | ||
| 1472 | +}; | ||
| 1473 | diff --git a/arch/powerpc/boot/dts/iss4xx-mpic.dts b/arch/powerpc/boot/dts/iss4xx-mpic.dts | ||
| 1474 | index 23e9d9b..b899a10 100644 | ||
| 1475 | --- a/arch/powerpc/boot/dts/iss4xx-mpic.dts | ||
| 1476 | +++ b/arch/powerpc/boot/dts/iss4xx-mpic.dts | ||
| 1477 | @@ -97,7 +97,10 @@ | ||
| 1478 | |||
| 1479 | memory { | ||
| 1480 | device_type = "memory"; | ||
| 1481 | - reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1482 | +/* | ||
| 1483 | + reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage | ||
| 1484 | +*/ | ||
| 1485 | + reg = <0x0 0x400000 0x1C00000>; | ||
| 1486 | |||
| 1487 | }; | ||
| 1488 | |||
| 1489 | diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c | ||
| 1490 | index a28f021..adc778d 100644 | ||
| 1491 | --- a/arch/powerpc/boot/main.c | ||
| 1492 | +++ b/arch/powerpc/boot/main.c | ||
| 1493 | @@ -7,6 +7,8 @@ | ||
| 1494 | * modify it under the terms of the GNU General Public License | ||
| 1495 | * as published by the Free Software Foundation; either version | ||
| 1496 | * 2 of the License, or (at your option) any later version. | ||
| 1497 | + * | ||
| 1498 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 1499 | */ | ||
| 1500 | #include <stdarg.h> | ||
| 1501 | #include <stddef.h> | ||
| 1502 | @@ -32,7 +34,7 @@ static struct addr_range prep_kernel(void) | ||
| 1503 | char elfheader[256]; | ||
| 1504 | void *vmlinuz_addr = _vmlinux_start; | ||
| 1505 | unsigned long vmlinuz_size = _vmlinux_end - _vmlinux_start; | ||
| 1506 | - void *addr = 0; | ||
| 1507 | + void *addr = 0x400000; /* This NEEDS to be tunable.... */ | ||
| 1508 | struct elf_info ei; | ||
| 1509 | int len; | ||
| 1510 | |||
| 1511 | @@ -149,8 +151,10 @@ static void prep_cmdline(void *chosen) | ||
| 1512 | |||
| 1513 | printf("\n\rLinux/PowerPC load: %s", cmdline); | ||
| 1514 | /* If possible, edit the command line */ | ||
| 1515 | +#if 0 | ||
| 1516 | if (console_ops.edit_cmdline) | ||
| 1517 | console_ops.edit_cmdline(cmdline, COMMAND_LINE_SIZE); | ||
| 1518 | +#endif | ||
| 1519 | printf("\n\r"); | ||
| 1520 | |||
| 1521 | /* Put the command line back into the devtree for the kernel */ | ||
| 1522 | diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c | ||
| 1523 | index f2156f0..6bf7cef 100644 | ||
| 1524 | --- a/arch/powerpc/boot/serial.c | ||
| 1525 | +++ b/arch/powerpc/boot/serial.c | ||
| 1526 | @@ -10,6 +10,8 @@ | ||
| 1527 | * the terms of the GNU General Public License version 2. This program | ||
| 1528 | * is licensed "as is" without any warranty of any kind, whether express | ||
| 1529 | * or implied. | ||
| 1530 | + * | ||
| 1531 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 1532 | */ | ||
| 1533 | #include <stdarg.h> | ||
| 1534 | #include <stddef.h> | ||
| 1535 | @@ -113,6 +115,19 @@ int serial_console_init(void) | ||
| 1536 | void *devp; | ||
| 1537 | int rc = -1; | ||
| 1538 | |||
| 1539 | +#if defined(CONFIG_ACPX1) && !defined(CONFIG_ACPISS) | ||
| 1540 | + rc = acp_console_init(devp, &serial_cd); | ||
| 1541 | + | ||
| 1542 | + if (0 != rc) | ||
| 1543 | + return -1; | ||
| 1544 | + | ||
| 1545 | + console_ops.open = serial_open; | ||
| 1546 | + console_ops.write = serial_write; | ||
| 1547 | + console_ops.close = serial_close; | ||
| 1548 | + console_ops.data = &serial_cd; | ||
| 1549 | + | ||
| 1550 | + return 0; | ||
| 1551 | +#else | ||
| 1552 | devp = serial_get_stdout_devp(); | ||
| 1553 | if (devp == NULL) | ||
| 1554 | goto err_out; | ||
| 1555 | @@ -148,4 +163,5 @@ int serial_console_init(void) | ||
| 1556 | } | ||
| 1557 | err_out: | ||
| 1558 | return -1; | ||
| 1559 | +#endif | ||
| 1560 | } | ||
| 1561 | diff --git a/arch/powerpc/boot/treeboot-acp.c b/arch/powerpc/boot/treeboot-acp.c | ||
| 1562 | new file mode 100644 | ||
| 1563 | index 0000000..3a126a3 | ||
| 1564 | --- /dev/null | ||
| 1565 | +++ b/arch/powerpc/boot/treeboot-acp.c | ||
| 1566 | @@ -0,0 +1,65 @@ | ||
| 1567 | +/* | ||
| 1568 | + * Copyright 2008 Ben. Herrenschmidt, IBM Corporation. | ||
| 1569 | + * | ||
| 1570 | + * Based on earlier code: | ||
| 1571 | + * Copyright (C) Paul Mackerras 1997. | ||
| 1572 | + * | ||
| 1573 | + * Matt Porter <mporter@kernel.crashing.org> | ||
| 1574 | + * Copyright 2002-2005 MontaVista Software Inc. | ||
| 1575 | + * | ||
| 1576 | + * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
| 1577 | + * Copyright (c) 2003, 2004 Zultys Technologies | ||
| 1578 | + * | ||
| 1579 | + * Copyright 2007 David Gibson, IBM Corporation. | ||
| 1580 | + * | ||
| 1581 | + * This program is free software; you can redistribute it and/or | ||
| 1582 | + * modify it under the terms of the GNU General Public License | ||
| 1583 | + * as published by the Free Software Foundation; either version | ||
| 1584 | + * 2 of the License, or (at your option) any later version. | ||
| 1585 | + */ | ||
| 1586 | +#include <stdarg.h> | ||
| 1587 | +#include <stddef.h> | ||
| 1588 | +#include "types.h" | ||
| 1589 | +#include "elf.h" | ||
| 1590 | +#include "string.h" | ||
| 1591 | +#include "stdio.h" | ||
| 1592 | +#include "page.h" | ||
| 1593 | +#include "ops.h" | ||
| 1594 | +#include "reg.h" | ||
| 1595 | +#include "io.h" | ||
| 1596 | +#include "dcr.h" | ||
| 1597 | +#include "4xx.h" | ||
| 1598 | +#include "44x.h" | ||
| 1599 | +#include "libfdt.h" | ||
| 1600 | + | ||
| 1601 | +BSS_STACK(4096); | ||
| 1602 | + | ||
| 1603 | +static void iss_4xx_fixups(void) | ||
| 1604 | +{ | ||
| 1605 | + ibm4xx_sdram_fixup_memsize(); | ||
| 1606 | + | ||
| 1607 | + /* Need to fixup icache/dcache info base on core type */ | ||
| 1608 | +} | ||
| 1609 | +#define SPRN_PIR 0x11E /* Processor Identification Register */ | ||
| 1610 | +void platform_init(void) | ||
| 1611 | +{ | ||
| 1612 | + /* Sim has at least 128M of RAM ok ? */ | ||
| 1613 | + unsigned long end_of_ram = 0x08000000; | ||
| 1614 | + unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
| 1615 | + u32 pir_reg; | ||
| 1616 | + | ||
| 1617 | + simple_alloc_init(_end, avail_ram, 128, 64); | ||
| 1618 | + /* | ||
| 1619 | + * Hard code RAM to be 252M with a 4M offset... | ||
| 1620 | + * and don't dynamically determine the size. This should | ||
| 1621 | + * change when we start working on real HW and have the | ||
| 1622 | + * ability to query the HW to determine where memory is | ||
| 1623 | + * located. | ||
| 1624 | + platform_ops.fixups = iss_4xx_fixups; | ||
| 1625 | + */ | ||
| 1626 | + platform_ops.exit = ibm44x_dbcr_reset; | ||
| 1627 | + pir_reg = mfspr(SPRN_PIR); | ||
| 1628 | + fdt_set_boot_cpuid_phys(_dtb_start, pir_reg); | ||
| 1629 | + fdt_init(_dtb_start); | ||
| 1630 | + serial_console_init(); | ||
| 1631 | +} | ||
| 1632 | diff --git a/arch/powerpc/boot/treeboot-acpiss.c b/arch/powerpc/boot/treeboot-acpiss.c | ||
| 1633 | new file mode 100644 | ||
| 1634 | index 0000000..479ed00 | ||
| 1635 | --- /dev/null | ||
| 1636 | +++ b/arch/powerpc/boot/treeboot-acpiss.c | ||
| 1637 | @@ -0,0 +1,56 @@ | ||
| 1638 | +/* | ||
| 1639 | + * Copyright 2008 Ben. Herrenschmidt, IBM Corporation. | ||
| 1640 | + * | ||
| 1641 | + * Based on earlier code: | ||
| 1642 | + * Copyright (C) Paul Mackerras 1997. | ||
| 1643 | + * | ||
| 1644 | + * Matt Porter <mporter@kernel.crashing.org> | ||
| 1645 | + * Copyright 2002-2005 MontaVista Software Inc. | ||
| 1646 | + * | ||
| 1647 | + * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
| 1648 | + * Copyright (c) 2003, 2004 Zultys Technologies | ||
| 1649 | + * | ||
| 1650 | + * Copyright 2007 David Gibson, IBM Corporation. | ||
| 1651 | + * | ||
| 1652 | + * This program is free software; you can redistribute it and/or | ||
| 1653 | + * modify it under the terms of the GNU General Public License | ||
| 1654 | + * as published by the Free Software Foundation; either version | ||
| 1655 | + * 2 of the License, or (at your option) any later version. | ||
| 1656 | + * | ||
| 1657 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 1658 | + */ | ||
| 1659 | +#include <stdarg.h> | ||
| 1660 | +#include <stddef.h> | ||
| 1661 | +#include "types.h" | ||
| 1662 | +#include "elf.h" | ||
| 1663 | +#include "string.h" | ||
| 1664 | +#include "stdio.h" | ||
| 1665 | +#include "page.h" | ||
| 1666 | +#include "ops.h" | ||
| 1667 | +#include "reg.h" | ||
| 1668 | +#include "io.h" | ||
| 1669 | +#include "dcr.h" | ||
| 1670 | +#include "4xx.h" | ||
| 1671 | +#include "44x.h" | ||
| 1672 | + | ||
| 1673 | +BSS_STACK(4096); | ||
| 1674 | + | ||
| 1675 | +static void iss_4xx_fixups(void) | ||
| 1676 | +{ | ||
| 1677 | + ibm4xx_sdram_fixup_memsize(); | ||
| 1678 | + | ||
| 1679 | + /* Need to fixup icache/dcache info base on core type */ | ||
| 1680 | +} | ||
| 1681 | + | ||
| 1682 | +void platform_init(void) | ||
| 1683 | +{ | ||
| 1684 | + /* Sim has at least 128M of RAM ok ? */ | ||
| 1685 | + unsigned long end_of_ram = 0x08000000; | ||
| 1686 | + unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
| 1687 | + | ||
| 1688 | + simple_alloc_init(_end, avail_ram, 128, 64); | ||
| 1689 | + platform_ops.fixups = iss_4xx_fixups; | ||
| 1690 | + platform_ops.exit = ibm44x_dbcr_reset; | ||
| 1691 | + fdt_init(_dtb_start); | ||
| 1692 | + serial_console_init(); | ||
| 1693 | +} | ||
| 1694 | diff --git a/arch/powerpc/boot/treeboot-iss4xx-hi.c b/arch/powerpc/boot/treeboot-iss4xx-hi.c | ||
| 1695 | new file mode 100644 | ||
| 1696 | index 0000000..c6f376f | ||
| 1697 | --- /dev/null | ||
| 1698 | +++ b/arch/powerpc/boot/treeboot-iss4xx-hi.c | ||
| 1699 | @@ -0,0 +1,65 @@ | ||
| 1700 | +/* | ||
| 1701 | + * Copyright 2010 Ben. Herrenschmidt, IBM Corporation. | ||
| 1702 | + * | ||
| 1703 | + * Based on earlier code: | ||
| 1704 | + * Copyright (C) Paul Mackerras 1997. | ||
| 1705 | + * | ||
| 1706 | + * Matt Porter <mporter@kernel.crashing.org> | ||
| 1707 | + * Copyright 2002-2005 MontaVista Software Inc. | ||
| 1708 | + * | ||
| 1709 | + * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
| 1710 | + * Copyright (c) 2003, 2004 Zultys Technologies | ||
| 1711 | + * | ||
| 1712 | + * Copyright 2007 David Gibson, IBM Corporation. | ||
| 1713 | + * | ||
| 1714 | + * This program is free software; you can redistribute it and/or | ||
| 1715 | + * modify it under the terms of the GNU General Public License | ||
| 1716 | + * as published by the Free Software Foundation; either version | ||
| 1717 | + * 2 of the License, or (at your option) any later version. | ||
| 1718 | + */ | ||
| 1719 | +#include <stdarg.h> | ||
| 1720 | +#include <stddef.h> | ||
| 1721 | +#include "types.h" | ||
| 1722 | +#include "elf.h" | ||
| 1723 | +#include "string.h" | ||
| 1724 | +#include "stdio.h" | ||
| 1725 | +#include "page.h" | ||
| 1726 | +#include "ops.h" | ||
| 1727 | +#include "reg.h" | ||
| 1728 | +#include "io.h" | ||
| 1729 | +#include "dcr.h" | ||
| 1730 | +#include "4xx.h" | ||
| 1731 | +#include "44x.h" | ||
| 1732 | +#include "libfdt.h" | ||
| 1733 | + | ||
| 1734 | +BSS_STACK(4096); | ||
| 1735 | + | ||
| 1736 | +static void iss_4xx_fixups(void) | ||
| 1737 | +{ | ||
| 1738 | + ibm4xx_sdram_fixup_memsize(); | ||
| 1739 | +} | ||
| 1740 | + | ||
| 1741 | +/* | ||
| 1742 | + * Quick and dirty hack for loading a kernel at fixed address 0x10000000 | ||
| 1743 | + */ | ||
| 1744 | +static void *iss_4xx_vmlinux_alloc(unsigned long size) | ||
| 1745 | +{ | ||
| 1746 | + return (void *)0x10000000; | ||
| 1747 | +} | ||
| 1748 | + | ||
| 1749 | +#define SPRN_PIR 0x11E /* Processor Indentification Register */ | ||
| 1750 | +void platform_init(void) | ||
| 1751 | +{ | ||
| 1752 | + unsigned long end_of_ram = 0x08000000; | ||
| 1753 | + unsigned long avail_ram = end_of_ram - (unsigned long)_end; | ||
| 1754 | + u32 pir_reg; | ||
| 1755 | + | ||
| 1756 | + simple_alloc_init(_end, avail_ram, 128, 64); | ||
| 1757 | + /* platform_ops.fixups = iss_4xx_fixups; */ | ||
| 1758 | + platform_ops.vmlinux_alloc = iss_4xx_vmlinux_alloc; | ||
| 1759 | + platform_ops.exit = ibm44x_dbcr_reset; | ||
| 1760 | + pir_reg = mfspr(SPRN_PIR); | ||
| 1761 | + fdt_set_boot_cpuid_phys(_dtb_start, pir_reg); | ||
| 1762 | + fdt_init(_dtb_start); | ||
| 1763 | + serial_console_init(); | ||
| 1764 | +} | ||
| 1765 | diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper | ||
| 1766 | index c74531a..6475baa 100755 | ||
| 1767 | --- a/arch/powerpc/boot/wrapper | ||
| 1768 | +++ b/arch/powerpc/boot/wrapper | ||
| 1769 | @@ -143,7 +143,7 @@ objflags=-S | ||
| 1770 | tmp=$tmpdir/zImage.$$.o | ||
| 1771 | ksection=.kernel:vmlinux.strip | ||
| 1772 | isection=.kernel:initrd | ||
| 1773 | -link_address='0x400000' | ||
| 1774 | +link_address='0x800000' | ||
| 1775 | |||
| 1776 | case "$platform" in | ||
| 1777 | pseries) | ||
| 1778 | @@ -247,6 +247,14 @@ gamecube|wii) | ||
| 1779 | treeboot-iss4xx-mpic) | ||
| 1780 | platformo="$object/treeboot-iss4xx.o" | ||
| 1781 | ;; | ||
| 1782 | +treeboot-iss476-amp1) | ||
| 1783 | + platformo="$object/treeboot-iss4xx.o" | ||
| 1784 | + link_address='0x400000' | ||
| 1785 | + ;; | ||
| 1786 | +treeboot-iss476-amp2) | ||
| 1787 | + platformo="$object/treeboot-iss4xx-hi.o" | ||
| 1788 | + link_address='0x10400000' | ||
| 1789 | + ;; | ||
| 1790 | epapr) | ||
| 1791 | link_address='0x20000000' | ||
| 1792 | pie=-pie | ||
| 1793 | diff --git a/arch/powerpc/configs/acp_ACP344xV1_defconfig b/arch/powerpc/configs/acp_ACP344xV1_defconfig | ||
| 1794 | new file mode 100644 | ||
| 1795 | index 0000000..7e164dc | ||
| 1796 | --- /dev/null | ||
| 1797 | +++ b/arch/powerpc/configs/acp_ACP344xV1_defconfig | ||
| 1798 | @@ -0,0 +1,1267 @@ | ||
| 1799 | +# | ||
| 1800 | +# Automatically generated make config: don't edit | ||
| 1801 | +# Linux kernel version: 2.6.35 | ||
| 1802 | +# Mon Jul 18 18:05:45 2011 | ||
| 1803 | +# | ||
| 1804 | +# CONFIG_PPC64 is not set | ||
| 1805 | + | ||
| 1806 | +# | ||
| 1807 | +# Processor support | ||
| 1808 | +# | ||
| 1809 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 1810 | +# CONFIG_PPC_85xx is not set | ||
| 1811 | +# CONFIG_PPC_8xx is not set | ||
| 1812 | +# CONFIG_40x is not set | ||
| 1813 | +CONFIG_44x=y | ||
| 1814 | +# CONFIG_E200 is not set | ||
| 1815 | +CONFIG_PPC_FPU=y | ||
| 1816 | +CONFIG_4xx=y | ||
| 1817 | +CONFIG_BOOKE=y | ||
| 1818 | +CONFIG_PTE_64BIT=y | ||
| 1819 | +CONFIG_PHYS_64BIT=y | ||
| 1820 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 1821 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 1822 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 1823 | +CONFIG_SMP=y | ||
| 1824 | +CONFIG_NR_CPUS=4 | ||
| 1825 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 1826 | +CONFIG_PPC32=y | ||
| 1827 | +CONFIG_WORD_SIZE=32 | ||
| 1828 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 1829 | +CONFIG_MMU=y | ||
| 1830 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 1831 | +CONFIG_GENERIC_TIME=y | ||
| 1832 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 1833 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 1834 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 1835 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 1836 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 1837 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 1838 | +CONFIG_IRQ_PER_CPU=y | ||
| 1839 | +CONFIG_NR_IRQS=512 | ||
| 1840 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 1841 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 1842 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 1843 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 1844 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 1845 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 1846 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 1847 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 1848 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 1849 | +CONFIG_PPC=y | ||
| 1850 | +CONFIG_EARLY_PRINTK=y | ||
| 1851 | +CONFIG_GENERIC_NVRAM=y | ||
| 1852 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 1853 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 1854 | +CONFIG_PPC_OF=y | ||
| 1855 | +CONFIG_OF=y | ||
| 1856 | +CONFIG_PPC_UDBG_16550=y | ||
| 1857 | +CONFIG_GENERIC_TBSYNC=y | ||
| 1858 | +CONFIG_AUDIT_ARCH=y | ||
| 1859 | +CONFIG_GENERIC_BUG=y | ||
| 1860 | +CONFIG_DTC=y | ||
| 1861 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 1862 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 1863 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 1864 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 1865 | +CONFIG_PPC_DCR=y | ||
| 1866 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 1867 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 1868 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 1869 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 1870 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 1871 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 1872 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 1873 | +CONFIG_CONSTRUCTORS=y | ||
| 1874 | + | ||
| 1875 | +# | ||
| 1876 | +# General setup | ||
| 1877 | +# | ||
| 1878 | +CONFIG_EXPERIMENTAL=y | ||
| 1879 | +CONFIG_LOCK_KERNEL=y | ||
| 1880 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 1881 | +CONFIG_CROSS_COMPILE="powerpc-linux-" | ||
| 1882 | +CONFIG_LOCALVERSION="" | ||
| 1883 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 1884 | +CONFIG_SWAP=y | ||
| 1885 | +CONFIG_SYSVIPC=y | ||
| 1886 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 1887 | +CONFIG_POSIX_MQUEUE=y | ||
| 1888 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 1889 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 1890 | +# CONFIG_TASKSTATS is not set | ||
| 1891 | +# CONFIG_AUDIT is not set | ||
| 1892 | + | ||
| 1893 | +# | ||
| 1894 | +# RCU Subsystem | ||
| 1895 | +# | ||
| 1896 | +CONFIG_TREE_RCU=y | ||
| 1897 | +# CONFIG_TREE_PREEMPT_RCU is not set | ||
| 1898 | +# CONFIG_TINY_RCU is not set | ||
| 1899 | +# CONFIG_RCU_TRACE is not set | ||
| 1900 | +CONFIG_RCU_FANOUT=32 | ||
| 1901 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 1902 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 1903 | +# CONFIG_IKCONFIG is not set | ||
| 1904 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 1905 | +# CONFIG_CGROUPS is not set | ||
| 1906 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 1907 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 1908 | +# CONFIG_RELAY is not set | ||
| 1909 | +# CONFIG_NAMESPACES is not set | ||
| 1910 | +CONFIG_BLK_DEV_INITRD=y | ||
| 1911 | +CONFIG_INITRAMFS_SOURCE="" | ||
| 1912 | +CONFIG_RD_GZIP=y | ||
| 1913 | +# CONFIG_RD_BZIP2 is not set | ||
| 1914 | +# CONFIG_RD_LZMA is not set | ||
| 1915 | +# CONFIG_RD_LZO is not set | ||
| 1916 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 1917 | +CONFIG_SYSCTL=y | ||
| 1918 | +CONFIG_ANON_INODES=y | ||
| 1919 | +CONFIG_EMBEDDED=y | ||
| 1920 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 1921 | +CONFIG_KALLSYMS=y | ||
| 1922 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 1923 | +CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 1924 | +CONFIG_HOTPLUG=y | ||
| 1925 | +CONFIG_PRINTK=y | ||
| 1926 | +CONFIG_BUG=y | ||
| 1927 | +CONFIG_ELF_CORE=y | ||
| 1928 | +CONFIG_BASE_FULL=y | ||
| 1929 | +CONFIG_FUTEX=y | ||
| 1930 | +CONFIG_EPOLL=y | ||
| 1931 | +CONFIG_SIGNALFD=y | ||
| 1932 | +CONFIG_TIMERFD=y | ||
| 1933 | +CONFIG_EVENTFD=y | ||
| 1934 | +CONFIG_SHMEM=y | ||
| 1935 | +CONFIG_AIO=y | ||
| 1936 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 1937 | + | ||
| 1938 | +# | ||
| 1939 | +# Kernel Performance Events And Counters | ||
| 1940 | +# | ||
| 1941 | +# CONFIG_PERF_EVENTS is not set | ||
| 1942 | +# CONFIG_PERF_COUNTERS is not set | ||
| 1943 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 1944 | +CONFIG_PCI_QUIRKS=y | ||
| 1945 | +CONFIG_SLUB_DEBUG=y | ||
| 1946 | +CONFIG_COMPAT_BRK=y | ||
| 1947 | +# CONFIG_SLAB is not set | ||
| 1948 | +CONFIG_SLUB=y | ||
| 1949 | +# CONFIG_SLOB is not set | ||
| 1950 | +CONFIG_PROFILING=y | ||
| 1951 | +CONFIG_OPROFILE=y | ||
| 1952 | +CONFIG_HAVE_OPROFILE=y | ||
| 1953 | +# CONFIG_KPROBES is not set | ||
| 1954 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 1955 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 1956 | +CONFIG_HAVE_KPROBES=y | ||
| 1957 | +CONFIG_HAVE_KRETPROBES=y | ||
| 1958 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 1959 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 1960 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 1961 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 1962 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 1963 | + | ||
| 1964 | +# | ||
| 1965 | +# GCOV-based kernel profiling | ||
| 1966 | +# | ||
| 1967 | +# CONFIG_GCOV_KERNEL is not set | ||
| 1968 | +# CONFIG_SLOW_WORK is not set | ||
| 1969 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 1970 | +CONFIG_SLABINFO=y | ||
| 1971 | +CONFIG_RT_MUTEXES=y | ||
| 1972 | +CONFIG_BASE_SMALL=0 | ||
| 1973 | +CONFIG_MODULES=y | ||
| 1974 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 1975 | +CONFIG_MODULE_UNLOAD=y | ||
| 1976 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 1977 | +CONFIG_MODVERSIONS=y | ||
| 1978 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 1979 | +CONFIG_STOP_MACHINE=y | ||
| 1980 | +CONFIG_BLOCK=y | ||
| 1981 | +CONFIG_LBDAF=y | ||
| 1982 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 1983 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 1984 | + | ||
| 1985 | +# | ||
| 1986 | +# IO Schedulers | ||
| 1987 | +# | ||
| 1988 | +CONFIG_IOSCHED_NOOP=y | ||
| 1989 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 1990 | +CONFIG_IOSCHED_CFQ=y | ||
| 1991 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 1992 | +CONFIG_DEFAULT_CFQ=y | ||
| 1993 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 1994 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 1995 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 1996 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 1997 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 1998 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 1999 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 2000 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 2001 | +CONFIG_INLINE_SPIN_UNLOCK=y | ||
| 2002 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 2003 | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
| 2004 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 2005 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 2006 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 2007 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 2008 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 2009 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 2010 | +CONFIG_INLINE_READ_UNLOCK=y | ||
| 2011 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 2012 | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
| 2013 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 2014 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 2015 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 2016 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 2017 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 2018 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 2019 | +CONFIG_INLINE_WRITE_UNLOCK=y | ||
| 2020 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 2021 | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
| 2022 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 2023 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 2024 | +# CONFIG_FREEZER is not set | ||
| 2025 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 2026 | +CONFIG_PPC_MSI_BITMAP=y | ||
| 2027 | +# CONFIG_RAPIDIO_FSL is not set | ||
| 2028 | + | ||
| 2029 | +# | ||
| 2030 | +# Platform support | ||
| 2031 | +# | ||
| 2032 | +# CONFIG_PPC_CELL is not set | ||
| 2033 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 2034 | +# CONFIG_PQ2ADS is not set | ||
| 2035 | +CONFIG_PPC_47x=y | ||
| 2036 | +# CONFIG_BAMBOO is not set | ||
| 2037 | +# CONFIG_EBONY is not set | ||
| 2038 | +# CONFIG_SAM440EP is not set | ||
| 2039 | +# CONFIG_SEQUOIA is not set | ||
| 2040 | +# CONFIG_TAISHAN is not set | ||
| 2041 | +# CONFIG_KATMAI is not set | ||
| 2042 | +# CONFIG_RAINIER is not set | ||
| 2043 | +# CONFIG_WARP is not set | ||
| 2044 | +# CONFIG_ARCHES is not set | ||
| 2045 | +# CONFIG_CANYONLANDS is not set | ||
| 2046 | +# CONFIG_GLACIER is not set | ||
| 2047 | +# CONFIG_REDWOOD is not set | ||
| 2048 | +# CONFIG_EIGER is not set | ||
| 2049 | +# CONFIG_YOSEMITE is not set | ||
| 2050 | +# CONFIG_ISS4xx is not set | ||
| 2051 | +# CONFIG_ICON is not set | ||
| 2052 | +CONFIG_ACP=y | ||
| 2053 | +# CONFIG_ACPISS is not set | ||
| 2054 | +CONFIG_ACP_X1V1=y | ||
| 2055 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 2056 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 2057 | +# CONFIG_PPC4xx_GPIO is not set | ||
| 2058 | +CONFIG_440GP=y | ||
| 2059 | +# CONFIG_IPIC is not set | ||
| 2060 | +CONFIG_MPIC=y | ||
| 2061 | +# CONFIG_MPIC_WEIRD is not set | ||
| 2062 | +# CONFIG_PPC_I8259 is not set | ||
| 2063 | +# CONFIG_PPC_RTAS is not set | ||
| 2064 | +# CONFIG_MMIO_NVRAM is not set | ||
| 2065 | +# CONFIG_PPC_MPC106 is not set | ||
| 2066 | +# CONFIG_PPC_970_NAP is not set | ||
| 2067 | +# CONFIG_PPC_INDIRECT_IO is not set | ||
| 2068 | +# CONFIG_GENERIC_IOMAP is not set | ||
| 2069 | +# CONFIG_CPU_FREQ is not set | ||
| 2070 | +# CONFIG_FSL_ULI1575 is not set | ||
| 2071 | +# CONFIG_SIMPLE_GPIO is not set | ||
| 2072 | + | ||
| 2073 | +# | ||
| 2074 | +# Kernel options | ||
| 2075 | +# | ||
| 2076 | +CONFIG_HIGHMEM=y | ||
| 2077 | +CONFIG_TICK_ONESHOT=y | ||
| 2078 | +# CONFIG_NO_HZ is not set | ||
| 2079 | +CONFIG_HIGH_RES_TIMERS=y | ||
| 2080 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 2081 | +CONFIG_HZ_100=y | ||
| 2082 | +# CONFIG_HZ_250 is not set | ||
| 2083 | +# CONFIG_HZ_300 is not set | ||
| 2084 | +# CONFIG_HZ_1000 is not set | ||
| 2085 | +CONFIG_HZ=100 | ||
| 2086 | +CONFIG_SCHED_HRTICK=y | ||
| 2087 | +CONFIG_PREEMPT_NONE=y | ||
| 2088 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 2089 | +# CONFIG_PREEMPT is not set | ||
| 2090 | +CONFIG_BINFMT_ELF=y | ||
| 2091 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 2092 | +# CONFIG_HAVE_AOUT is not set | ||
| 2093 | +# CONFIG_BINFMT_MISC is not set | ||
| 2094 | +# CONFIG_MATH_EMULATION is not set | ||
| 2095 | +# CONFIG_IOMMU_HELPER is not set | ||
| 2096 | +# CONFIG_SWIOTLB is not set | ||
| 2097 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 2098 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 2099 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 2100 | +# CONFIG_IRQ_ALL_CPUS is not set | ||
| 2101 | +CONFIG_SPARSE_IRQ=y | ||
| 2102 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 2103 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 2104 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 2105 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 2106 | +CONFIG_FLATMEM_MANUAL=y | ||
| 2107 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 2108 | +# CONFIG_SPARSEMEM_MANUAL is not set | ||
| 2109 | +CONFIG_FLATMEM=y | ||
| 2110 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 2111 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 2112 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 2113 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 2114 | +CONFIG_MIGRATION=y | ||
| 2115 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 2116 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 2117 | +CONFIG_BOUNCE=y | ||
| 2118 | +CONFIG_VIRT_TO_BUS=y | ||
| 2119 | +# CONFIG_KSM is not set | ||
| 2120 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 2121 | +CONFIG_STDBINUTILS=y | ||
| 2122 | +CONFIG_PPC_4K_PAGES=y | ||
| 2123 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 2124 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 2125 | +# CONFIG_PPC_256K_PAGES is not set | ||
| 2126 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 2127 | +# CONFIG_PROC_DEVICETREE is not set | ||
| 2128 | +CONFIG_CMDLINE_BOOL=y | ||
| 2129 | +CONFIG_CMDLINE="console=ttyS0 mtdparts=acp-nand:512K(2ndStage),512K(env-0),512K(env-1),512K(3rdStage),-(fs) ip=dhcp root=/dev/nfs" | ||
| 2130 | +CONFIG_EXTRA_TARGETS="" | ||
| 2131 | +CONFIG_SECCOMP=y | ||
| 2132 | +CONFIG_ISA_DMA_API=y | ||
| 2133 | + | ||
| 2134 | +# | ||
| 2135 | +# Bus options | ||
| 2136 | +# | ||
| 2137 | +CONFIG_ZONE_DMA=y | ||
| 2138 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 2139 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 2140 | +CONFIG_PPC_INDIRECT_PCI=y | ||
| 2141 | +CONFIG_4xx_SOC=y | ||
| 2142 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 2143 | +CONFIG_PCI=y | ||
| 2144 | +CONFIG_PCI_DOMAINS=y | ||
| 2145 | +CONFIG_PCI_SYSCALL=y | ||
| 2146 | +CONFIG_PCIEPORTBUS=y | ||
| 2147 | +# CONFIG_PCIEAER is not set | ||
| 2148 | +CONFIG_PCIEASPM=y | ||
| 2149 | +# CONFIG_PCIEASPM_DEBUG is not set | ||
| 2150 | +CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 2151 | +CONFIG_PCI_MSI=y | ||
| 2152 | +# CONFIG_PCI_DEBUG is not set | ||
| 2153 | +# CONFIG_PCI_STUB is not set | ||
| 2154 | +# CONFIG_PCI_IOV is not set | ||
| 2155 | +# CONFIG_PCCARD is not set | ||
| 2156 | +# CONFIG_HOTPLUG_PCI is not set | ||
| 2157 | +CONFIG_HAS_RAPIDIO=y | ||
| 2158 | +CONFIG_RAPIDIO=y | ||
| 2159 | +CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 2160 | +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 2161 | +CONFIG_RAPIDIO_ACP=y | ||
| 2162 | +CONFIG_RAPIDIO_ACP_RX_SIZE=128 | ||
| 2163 | +# CONFIG_RAPIDIO_TSI57X is not set | ||
| 2164 | +# CONFIG_RAPIDIO_CPS_XX is not set | ||
| 2165 | +# CONFIG_RAPIDIO_TSI568 is not set | ||
| 2166 | +# CONFIG_RAPIDIO_TSI500 is not set | ||
| 2167 | +# CONFIG_RAPIDIO_DEBUG is not set | ||
| 2168 | + | ||
| 2169 | +# | ||
| 2170 | +# Advanced setup | ||
| 2171 | +# | ||
| 2172 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 2173 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 2174 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 2175 | +CONFIG_RELOCATABLE=y | ||
| 2176 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 2177 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 2178 | +CONFIG_KERNEL_START_BOOL=y | ||
| 2179 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 2180 | +CONFIG_PHYSICAL_START=0x00000000 | ||
| 2181 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 2182 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 2183 | +CONFIG_NET=y | ||
| 2184 | + | ||
| 2185 | +# | ||
| 2186 | +# Networking options | ||
| 2187 | +# | ||
| 2188 | +CONFIG_PACKET=y | ||
| 2189 | +CONFIG_UNIX=y | ||
| 2190 | +CONFIG_XFRM=y | ||
| 2191 | +CONFIG_XFRM_USER=y | ||
| 2192 | +CONFIG_XFRM_SUB_POLICY=y | ||
| 2193 | +CONFIG_XFRM_MIGRATE=y | ||
| 2194 | +CONFIG_XFRM_STATISTICS=y | ||
| 2195 | +CONFIG_XFRM_IPCOMP=y | ||
| 2196 | +CONFIG_NET_KEY=y | ||
| 2197 | +# CONFIG_NET_KEY_MIGRATE is not set | ||
| 2198 | +CONFIG_INET=y | ||
| 2199 | +CONFIG_IP_MULTICAST=y | ||
| 2200 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 2201 | +CONFIG_IP_FIB_HASH=y | ||
| 2202 | +CONFIG_IP_PNP=y | ||
| 2203 | +CONFIG_IP_PNP_DHCP=y | ||
| 2204 | +CONFIG_IP_PNP_BOOTP=y | ||
| 2205 | +CONFIG_IP_PNP_RARP=y | ||
| 2206 | +CONFIG_NET_IPIP=y | ||
| 2207 | +# CONFIG_NET_IPGRE is not set | ||
| 2208 | +# CONFIG_IP_MROUTE is not set | ||
| 2209 | +# CONFIG_ARPD is not set | ||
| 2210 | +CONFIG_SYN_COOKIES=y | ||
| 2211 | +CONFIG_INET_AH=y | ||
| 2212 | +CONFIG_INET_ESP=y | ||
| 2213 | +CONFIG_INET_IPCOMP=y | ||
| 2214 | +CONFIG_INET_XFRM_TUNNEL=y | ||
| 2215 | +CONFIG_INET_TUNNEL=y | ||
| 2216 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 2217 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 2218 | +CONFIG_INET_XFRM_MODE_BEET=y | ||
| 2219 | +# CONFIG_INET_LRO is not set | ||
| 2220 | +CONFIG_INET_DIAG=y | ||
| 2221 | +CONFIG_INET_TCP_DIAG=y | ||
| 2222 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 2223 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 2224 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 2225 | +# CONFIG_TCP_MD5SIG is not set | ||
| 2226 | +CONFIG_IPV6=y | ||
| 2227 | +# CONFIG_IPV6_PRIVACY is not set | ||
| 2228 | +# CONFIG_IPV6_ROUTER_PREF is not set | ||
| 2229 | +# CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 2230 | +CONFIG_INET6_AH=y | ||
| 2231 | +CONFIG_INET6_ESP=y | ||
| 2232 | +CONFIG_INET6_IPCOMP=y | ||
| 2233 | +CONFIG_IPV6_MIP6=y | ||
| 2234 | +CONFIG_INET6_XFRM_TUNNEL=y | ||
| 2235 | +CONFIG_INET6_TUNNEL=y | ||
| 2236 | +CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 2237 | +CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 2238 | +CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 2239 | +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 2240 | +CONFIG_IPV6_SIT=y | ||
| 2241 | +# CONFIG_IPV6_SIT_6RD is not set | ||
| 2242 | +CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 2243 | +CONFIG_IPV6_TUNNEL=y | ||
| 2244 | +# CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 2245 | +# CONFIG_IPV6_MROUTE is not set | ||
| 2246 | +CONFIG_NETWORK_SECMARK=y | ||
| 2247 | +CONFIG_NETFILTER=y | ||
| 2248 | +# CONFIG_NETFILTER_DEBUG is not set | ||
| 2249 | +CONFIG_NETFILTER_ADVANCED=y | ||
| 2250 | + | ||
| 2251 | +# | ||
| 2252 | +# Core Netfilter Configuration | ||
| 2253 | +# | ||
| 2254 | +# CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 2255 | +# CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 2256 | +# CONFIG_NF_CONNTRACK is not set | ||
| 2257 | +# CONFIG_NETFILTER_XTABLES is not set | ||
| 2258 | +# CONFIG_IP_VS is not set | ||
| 2259 | + | ||
| 2260 | +# | ||
| 2261 | +# IP: Netfilter Configuration | ||
| 2262 | +# | ||
| 2263 | +# CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 2264 | +# CONFIG_IP_NF_QUEUE is not set | ||
| 2265 | +# CONFIG_IP_NF_IPTABLES is not set | ||
| 2266 | +# CONFIG_IP_NF_ARPTABLES is not set | ||
| 2267 | + | ||
| 2268 | +# | ||
| 2269 | +# IPv6: Netfilter Configuration | ||
| 2270 | +# | ||
| 2271 | +# CONFIG_IP6_NF_QUEUE is not set | ||
| 2272 | +# CONFIG_IP6_NF_IPTABLES is not set | ||
| 2273 | +# CONFIG_IP_DCCP is not set | ||
| 2274 | +# CONFIG_IP_SCTP is not set | ||
| 2275 | +# CONFIG_RDS is not set | ||
| 2276 | +# CONFIG_TIPC is not set | ||
| 2277 | +# CONFIG_ATM is not set | ||
| 2278 | +# CONFIG_L2TP is not set | ||
| 2279 | +# CONFIG_BRIDGE is not set | ||
| 2280 | +# CONFIG_NET_DSA is not set | ||
| 2281 | +CONFIG_VLAN_8021Q=y | ||
| 2282 | +# CONFIG_VLAN_8021Q_GVRP is not set | ||
| 2283 | +# CONFIG_DECNET is not set | ||
| 2284 | +# CONFIG_LLC2 is not set | ||
| 2285 | +# CONFIG_IPX is not set | ||
| 2286 | +# CONFIG_ATALK is not set | ||
| 2287 | +# CONFIG_X25 is not set | ||
| 2288 | +# CONFIG_LAPB is not set | ||
| 2289 | +# CONFIG_ECONET is not set | ||
| 2290 | +# CONFIG_WAN_ROUTER is not set | ||
| 2291 | +# CONFIG_PHONET is not set | ||
| 2292 | +# CONFIG_IEEE802154 is not set | ||
| 2293 | +# CONFIG_NET_SCHED is not set | ||
| 2294 | +# CONFIG_DCB is not set | ||
| 2295 | +CONFIG_RPS=y | ||
| 2296 | + | ||
| 2297 | +# | ||
| 2298 | +# Network testing | ||
| 2299 | +# | ||
| 2300 | +# CONFIG_NET_PKTGEN is not set | ||
| 2301 | +# CONFIG_HAMRADIO is not set | ||
| 2302 | +# CONFIG_CAN is not set | ||
| 2303 | +# CONFIG_IRDA is not set | ||
| 2304 | +# CONFIG_BT is not set | ||
| 2305 | +# CONFIG_AF_RXRPC is not set | ||
| 2306 | +CONFIG_WIRELESS=y | ||
| 2307 | +# CONFIG_CFG80211 is not set | ||
| 2308 | +# CONFIG_LIB80211 is not set | ||
| 2309 | + | ||
| 2310 | +# | ||
| 2311 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 2312 | +# | ||
| 2313 | + | ||
| 2314 | +# | ||
| 2315 | +# Some wireless drivers require a rate control algorithm | ||
| 2316 | +# | ||
| 2317 | +# CONFIG_WIMAX is not set | ||
| 2318 | +# CONFIG_RFKILL is not set | ||
| 2319 | +# CONFIG_NET_9P is not set | ||
| 2320 | +# CONFIG_CAIF is not set | ||
| 2321 | + | ||
| 2322 | +# | ||
| 2323 | +# Device Drivers | ||
| 2324 | +# | ||
| 2325 | + | ||
| 2326 | +# | ||
| 2327 | +# Generic Driver Options | ||
| 2328 | +# | ||
| 2329 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 2330 | +# CONFIG_DEVTMPFS is not set | ||
| 2331 | +CONFIG_STANDALONE=y | ||
| 2332 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 2333 | +# CONFIG_FW_LOADER is not set | ||
| 2334 | +# CONFIG_DEBUG_DRIVER is not set | ||
| 2335 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 2336 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 2337 | +# CONFIG_CONNECTOR is not set | ||
| 2338 | +CONFIG_MTD=y | ||
| 2339 | +# CONFIG_MTD_DEBUG is not set | ||
| 2340 | +# CONFIG_MTD_TESTS is not set | ||
| 2341 | +# CONFIG_MTD_CONCAT is not set | ||
| 2342 | +CONFIG_MTD_PARTITIONS=y | ||
| 2343 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 2344 | +CONFIG_MTD_CMDLINE_PARTS=y | ||
| 2345 | +CONFIG_MTD_OF_PARTS=y | ||
| 2346 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 2347 | + | ||
| 2348 | +# | ||
| 2349 | +# User Modules And Translation Layers | ||
| 2350 | +# | ||
| 2351 | +CONFIG_MTD_CHAR=y | ||
| 2352 | +CONFIG_MTD_BLKDEVS=y | ||
| 2353 | +CONFIG_MTD_BLOCK=y | ||
| 2354 | +# CONFIG_FTL is not set | ||
| 2355 | +# CONFIG_NFTL is not set | ||
| 2356 | +# CONFIG_INFTL is not set | ||
| 2357 | +# CONFIG_RFD_FTL is not set | ||
| 2358 | +# CONFIG_SSFDC is not set | ||
| 2359 | +# CONFIG_SM_FTL is not set | ||
| 2360 | +# CONFIG_MTD_OOPS is not set | ||
| 2361 | + | ||
| 2362 | +# | ||
| 2363 | +# RAM/ROM/Flash chip drivers | ||
| 2364 | +# | ||
| 2365 | +# CONFIG_MTD_CFI is not set | ||
| 2366 | +CONFIG_MTD_JEDECPROBE=y | ||
| 2367 | +CONFIG_MTD_GEN_PROBE=y | ||
| 2368 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 2369 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 2370 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 2371 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 2372 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 2373 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 2374 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 2375 | +CONFIG_MTD_CFI_I1=y | ||
| 2376 | +CONFIG_MTD_CFI_I2=y | ||
| 2377 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 2378 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 2379 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 2380 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 2381 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 2382 | +CONFIG_MTD_CFI_UTIL=y | ||
| 2383 | +# CONFIG_MTD_RAM is not set | ||
| 2384 | +# CONFIG_MTD_ROM is not set | ||
| 2385 | +# CONFIG_MTD_ABSENT is not set | ||
| 2386 | + | ||
| 2387 | +# | ||
| 2388 | +# Mapping drivers for chip access | ||
| 2389 | +# | ||
| 2390 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 2391 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 2392 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 2393 | +# CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 2394 | +# CONFIG_MTD_PLATRAM is not set | ||
| 2395 | + | ||
| 2396 | +# | ||
| 2397 | +# Self-contained MTD device drivers | ||
| 2398 | +# | ||
| 2399 | +# CONFIG_MTD_PMC551 is not set | ||
| 2400 | +# CONFIG_MTD_SLRAM is not set | ||
| 2401 | +# CONFIG_MTD_PHRAM is not set | ||
| 2402 | +# CONFIG_MTD_MTDRAM is not set | ||
| 2403 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 2404 | + | ||
| 2405 | +# | ||
| 2406 | +# Disk-On-Chip Device Drivers | ||
| 2407 | +# | ||
| 2408 | +# CONFIG_MTD_DOC2000 is not set | ||
| 2409 | +# CONFIG_MTD_DOC2001 is not set | ||
| 2410 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 2411 | +CONFIG_MTD_NAND_ECC=y | ||
| 2412 | +# CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 2413 | +CONFIG_MTD_NAND=y | ||
| 2414 | +# CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 2415 | +# CONFIG_MTD_SM_COMMON is not set | ||
| 2416 | +# CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 2417 | +# CONFIG_MTD_NAND_DENALI is not set | ||
| 2418 | +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
| 2419 | +CONFIG_MTD_NAND_IDS=y | ||
| 2420 | +# CONFIG_MTD_NAND_RICOH is not set | ||
| 2421 | +# CONFIG_MTD_NAND_NDFC is not set | ||
| 2422 | +# CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 2423 | +# CONFIG_MTD_NAND_CAFE is not set | ||
| 2424 | +# CONFIG_MTD_NAND_NANDSIM is not set | ||
| 2425 | +CONFIG_MTD_NAND_PLATFORM=y | ||
| 2426 | +# CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 2427 | +# CONFIG_MTD_ONENAND is not set | ||
| 2428 | + | ||
| 2429 | +# | ||
| 2430 | +# LPDDR flash memory drivers | ||
| 2431 | +# | ||
| 2432 | +# CONFIG_MTD_LPDDR is not set | ||
| 2433 | + | ||
| 2434 | +# | ||
| 2435 | +# UBI - Unsorted block images | ||
| 2436 | +# | ||
| 2437 | +# CONFIG_MTD_UBI is not set | ||
| 2438 | +CONFIG_OF_FLATTREE=y | ||
| 2439 | +CONFIG_OF_DYNAMIC=y | ||
| 2440 | +CONFIG_OF_DEVICE=y | ||
| 2441 | +# CONFIG_PARPORT is not set | ||
| 2442 | +CONFIG_BLK_DEV=y | ||
| 2443 | +# CONFIG_BLK_DEV_FD is not set | ||
| 2444 | +# CONFIG_BLK_CPQ_DA is not set | ||
| 2445 | +# CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 2446 | +# CONFIG_BLK_DEV_DAC960 is not set | ||
| 2447 | +# CONFIG_BLK_DEV_UMEM is not set | ||
| 2448 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 2449 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 2450 | + | ||
| 2451 | +# | ||
| 2452 | +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 2453 | +# | ||
| 2454 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 2455 | +# CONFIG_BLK_DEV_SX8 is not set | ||
| 2456 | +CONFIG_BLK_DEV_RAM=y | ||
| 2457 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 2458 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 2459 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 2460 | +# CONFIG_BLK_DEV_ISS is not set | ||
| 2461 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 2462 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 2463 | +# CONFIG_XILINX_SYSACE is not set | ||
| 2464 | +# CONFIG_BLK_DEV_HD is not set | ||
| 2465 | +CONFIG_MISC_DEVICES=y | ||
| 2466 | +# CONFIG_PHANTOM is not set | ||
| 2467 | +# CONFIG_SGI_IOC4 is not set | ||
| 2468 | +# CONFIG_TIFM_CORE is not set | ||
| 2469 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 2470 | +# CONFIG_HP_ILO is not set | ||
| 2471 | +# CONFIG_C2PORT is not set | ||
| 2472 | + | ||
| 2473 | +# | ||
| 2474 | +# EEPROM support | ||
| 2475 | +# | ||
| 2476 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 2477 | +# CONFIG_CB710_CORE is not set | ||
| 2478 | +CONFIG_HAVE_IDE=y | ||
| 2479 | +# CONFIG_IDE is not set | ||
| 2480 | + | ||
| 2481 | +# | ||
| 2482 | +# SCSI device support | ||
| 2483 | +# | ||
| 2484 | +CONFIG_SCSI_MOD=y | ||
| 2485 | +# CONFIG_RAID_ATTRS is not set | ||
| 2486 | +# CONFIG_SCSI is not set | ||
| 2487 | +# CONFIG_SCSI_DMA is not set | ||
| 2488 | +# CONFIG_SCSI_NETLINK is not set | ||
| 2489 | +# CONFIG_ATA is not set | ||
| 2490 | +# CONFIG_MD is not set | ||
| 2491 | +# CONFIG_FUSION is not set | ||
| 2492 | + | ||
| 2493 | +# | ||
| 2494 | +# IEEE 1394 (FireWire) support | ||
| 2495 | +# | ||
| 2496 | + | ||
| 2497 | +# | ||
| 2498 | +# You can enable one or both FireWire driver stacks. | ||
| 2499 | +# | ||
| 2500 | + | ||
| 2501 | +# | ||
| 2502 | +# The newer stack is recommended. | ||
| 2503 | +# | ||
| 2504 | +# CONFIG_FIREWIRE is not set | ||
| 2505 | +# CONFIG_IEEE1394 is not set | ||
| 2506 | +# CONFIG_I2O is not set | ||
| 2507 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 2508 | +CONFIG_NETDEVICES=y | ||
| 2509 | +CONFIG_DUMMY=y | ||
| 2510 | +# CONFIG_BONDING is not set | ||
| 2511 | +# CONFIG_MACVLAN is not set | ||
| 2512 | +# CONFIG_EQUALIZER is not set | ||
| 2513 | +CONFIG_TUN=y | ||
| 2514 | +# CONFIG_VETH is not set | ||
| 2515 | +# CONFIG_ARCNET is not set | ||
| 2516 | +# CONFIG_PHYLIB is not set | ||
| 2517 | +CONFIG_NET_ETHERNET=y | ||
| 2518 | +CONFIG_MII=y | ||
| 2519 | +# CONFIG_HAPPYMEAL is not set | ||
| 2520 | +# CONFIG_SUNGEM is not set | ||
| 2521 | +# CONFIG_CASSINI is not set | ||
| 2522 | +# CONFIG_NET_VENDOR_3COM is not set | ||
| 2523 | +# CONFIG_ETHOC is not set | ||
| 2524 | +# CONFIG_DNET is not set | ||
| 2525 | +# CONFIG_NET_TULIP is not set | ||
| 2526 | +# CONFIG_HP100 is not set | ||
| 2527 | +# CONFIG_IBM_NEW_EMAC is not set | ||
| 2528 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 2529 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 2530 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 2531 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 2532 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 2533 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 2534 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 2535 | +# CONFIG_NET_PCI is not set | ||
| 2536 | +# CONFIG_B44 is not set | ||
| 2537 | +# CONFIG_KS8842 is not set | ||
| 2538 | +# CONFIG_KS8851_MLL is not set | ||
| 2539 | +# CONFIG_ATL2 is not set | ||
| 2540 | +# CONFIG_XILINX_EMACLITE is not set | ||
| 2541 | +CONFIG_NETDEV_1000=y | ||
| 2542 | +# CONFIG_ACENIC is not set | ||
| 2543 | +# CONFIG_DL2K is not set | ||
| 2544 | +CONFIG_E1000=y | ||
| 2545 | +CONFIG_E1000E=y | ||
| 2546 | +# CONFIG_IP1000 is not set | ||
| 2547 | +CONFIG_IGB=y | ||
| 2548 | +CONFIG_IGBVF=y | ||
| 2549 | +# CONFIG_NS83820 is not set | ||
| 2550 | +# CONFIG_HAMACHI is not set | ||
| 2551 | +# CONFIG_YELLOWFIN is not set | ||
| 2552 | +# CONFIG_R8169 is not set | ||
| 2553 | +# CONFIG_SIS190 is not set | ||
| 2554 | +# CONFIG_SKGE is not set | ||
| 2555 | +# CONFIG_SKY2 is not set | ||
| 2556 | +# CONFIG_VIA_VELOCITY is not set | ||
| 2557 | +# CONFIG_TIGON3 is not set | ||
| 2558 | +# CONFIG_BNX2 is not set | ||
| 2559 | +# CONFIG_CNIC is not set | ||
| 2560 | +# CONFIG_MV643XX_ETH is not set | ||
| 2561 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 2562 | +# CONFIG_QLA3XXX is not set | ||
| 2563 | +# CONFIG_ATL1 is not set | ||
| 2564 | +# CONFIG_ATL1E is not set | ||
| 2565 | +# CONFIG_ATL1C is not set | ||
| 2566 | +# CONFIG_JME is not set | ||
| 2567 | +# CONFIG_NETDEV_10000 is not set | ||
| 2568 | +# CONFIG_TR is not set | ||
| 2569 | +CONFIG_WLAN=y | ||
| 2570 | +# CONFIG_AIRO is not set | ||
| 2571 | +# CONFIG_ATMEL is not set | ||
| 2572 | +# CONFIG_PRISM54 is not set | ||
| 2573 | +# CONFIG_HOSTAP is not set | ||
| 2574 | + | ||
| 2575 | +# | ||
| 2576 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 2577 | +# | ||
| 2578 | +# CONFIG_WAN is not set | ||
| 2579 | +# CONFIG_RIONET is not set | ||
| 2580 | +# CONFIG_FDDI is not set | ||
| 2581 | +# CONFIG_HIPPI is not set | ||
| 2582 | +# CONFIG_PPP is not set | ||
| 2583 | +# CONFIG_SLIP is not set | ||
| 2584 | +# CONFIG_NETCONSOLE is not set | ||
| 2585 | +# CONFIG_NETPOLL is not set | ||
| 2586 | +# CONFIG_NET_POLL_CONTROLLER is not set | ||
| 2587 | +# CONFIG_VMXNET3 is not set | ||
| 2588 | +# CONFIG_ISDN is not set | ||
| 2589 | +# CONFIG_PHONE is not set | ||
| 2590 | + | ||
| 2591 | +# | ||
| 2592 | +# Input device support | ||
| 2593 | +# | ||
| 2594 | +# CONFIG_INPUT is not set | ||
| 2595 | + | ||
| 2596 | +# | ||
| 2597 | +# Hardware I/O ports | ||
| 2598 | +# | ||
| 2599 | +# CONFIG_SERIO is not set | ||
| 2600 | +# CONFIG_GAMEPORT is not set | ||
| 2601 | + | ||
| 2602 | +# | ||
| 2603 | +# Character devices | ||
| 2604 | +# | ||
| 2605 | +# CONFIG_VT is not set | ||
| 2606 | +CONFIG_DEVKMEM=y | ||
| 2607 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 2608 | +# CONFIG_N_GSM is not set | ||
| 2609 | +# CONFIG_NOZOMI is not set | ||
| 2610 | + | ||
| 2611 | +# | ||
| 2612 | +# Serial drivers | ||
| 2613 | +# | ||
| 2614 | +# CONFIG_SERIAL_8250 is not set | ||
| 2615 | + | ||
| 2616 | +# | ||
| 2617 | +# Non-8250 serial port support | ||
| 2618 | +# | ||
| 2619 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 2620 | +CONFIG_SERIAL_CORE=y | ||
| 2621 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 2622 | +# CONFIG_SERIAL_JSM is not set | ||
| 2623 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 2624 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 2625 | +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 2626 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 2627 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 2628 | +CONFIG_UNIX98_PTYS=y | ||
| 2629 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 2630 | +CONFIG_LEGACY_PTYS=y | ||
| 2631 | +CONFIG_LEGACY_PTY_COUNT=20 | ||
| 2632 | +# CONFIG_HVC_UDBG is not set | ||
| 2633 | +# CONFIG_IPMI_HANDLER is not set | ||
| 2634 | +# CONFIG_HW_RANDOM is not set | ||
| 2635 | +# CONFIG_NVRAM is not set | ||
| 2636 | +# CONFIG_GEN_RTC is not set | ||
| 2637 | +# CONFIG_R3964 is not set | ||
| 2638 | +# CONFIG_APPLICOM is not set | ||
| 2639 | +# CONFIG_RAW_DRIVER is not set | ||
| 2640 | +# CONFIG_TCG_TPM is not set | ||
| 2641 | +CONFIG_DEVPORT=y | ||
| 2642 | +# CONFIG_RAMOOPS is not set | ||
| 2643 | +# CONFIG_I2C is not set | ||
| 2644 | +# CONFIG_SPI is not set | ||
| 2645 | + | ||
| 2646 | +# | ||
| 2647 | +# PPS support | ||
| 2648 | +# | ||
| 2649 | +# CONFIG_PPS is not set | ||
| 2650 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 2651 | +# CONFIG_GPIOLIB is not set | ||
| 2652 | +# CONFIG_W1 is not set | ||
| 2653 | +# CONFIG_POWER_SUPPLY is not set | ||
| 2654 | +# CONFIG_HWMON is not set | ||
| 2655 | +CONFIG_THERMAL=y | ||
| 2656 | +# CONFIG_WATCHDOG is not set | ||
| 2657 | +CONFIG_SSB_POSSIBLE=y | ||
| 2658 | + | ||
| 2659 | +# | ||
| 2660 | +# Sonics Silicon Backplane | ||
| 2661 | +# | ||
| 2662 | +# CONFIG_SSB is not set | ||
| 2663 | +# CONFIG_MFD_SUPPORT is not set | ||
| 2664 | +# CONFIG_REGULATOR is not set | ||
| 2665 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 2666 | + | ||
| 2667 | +# | ||
| 2668 | +# Graphics support | ||
| 2669 | +# | ||
| 2670 | +# CONFIG_AGP is not set | ||
| 2671 | +# CONFIG_VGA_ARB is not set | ||
| 2672 | +# CONFIG_DRM is not set | ||
| 2673 | +# CONFIG_VGASTATE is not set | ||
| 2674 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 2675 | +# CONFIG_FB is not set | ||
| 2676 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 2677 | + | ||
| 2678 | +# | ||
| 2679 | +# Display device support | ||
| 2680 | +# | ||
| 2681 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 2682 | +# CONFIG_SOUND is not set | ||
| 2683 | +# CONFIG_USB_SUPPORT is not set | ||
| 2684 | +# CONFIG_UWB is not set | ||
| 2685 | +# CONFIG_MMC is not set | ||
| 2686 | +# CONFIG_MEMSTICK is not set | ||
| 2687 | +# CONFIG_NEW_LEDS is not set | ||
| 2688 | +# CONFIG_ACCESSIBILITY is not set | ||
| 2689 | +# CONFIG_INFINIBAND is not set | ||
| 2690 | +# CONFIG_EDAC is not set | ||
| 2691 | +# CONFIG_RTC_CLASS is not set | ||
| 2692 | +# CONFIG_DMADEVICES is not set | ||
| 2693 | +# CONFIG_AUXDISPLAY is not set | ||
| 2694 | +# CONFIG_UIO is not set | ||
| 2695 | +# CONFIG_STAGING is not set | ||
| 2696 | + | ||
| 2697 | +# | ||
| 2698 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 2699 | +# | ||
| 2700 | +CONFIG_SERIAL_ACP=y | ||
| 2701 | +CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 2702 | +# CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 2703 | +CONFIG_LSI_NET=y | ||
| 2704 | +CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 2705 | +CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 2706 | +CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 2707 | +CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 2708 | +CONFIG_LSI_NAND=y | ||
| 2709 | +CONFIG_LSI_UBOOTENV=y | ||
| 2710 | +# CONFIG_LSI_PLX_PCIE_BRIDGE is not set | ||
| 2711 | + | ||
| 2712 | +# | ||
| 2713 | +# File systems | ||
| 2714 | +# | ||
| 2715 | +CONFIG_EXT2_FS=y | ||
| 2716 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 2717 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 2718 | +# CONFIG_EXT3_FS is not set | ||
| 2719 | +# CONFIG_EXT4_FS is not set | ||
| 2720 | +# CONFIG_REISERFS_FS is not set | ||
| 2721 | +# CONFIG_JFS_FS is not set | ||
| 2722 | +CONFIG_FS_POSIX_ACL=y | ||
| 2723 | +# CONFIG_XFS_FS is not set | ||
| 2724 | +# CONFIG_GFS2_FS is not set | ||
| 2725 | +# CONFIG_OCFS2_FS is not set | ||
| 2726 | +# CONFIG_BTRFS_FS is not set | ||
| 2727 | +# CONFIG_NILFS2_FS is not set | ||
| 2728 | +CONFIG_FILE_LOCKING=y | ||
| 2729 | +CONFIG_FSNOTIFY=y | ||
| 2730 | +# CONFIG_DNOTIFY is not set | ||
| 2731 | +CONFIG_INOTIFY=y | ||
| 2732 | +CONFIG_INOTIFY_USER=y | ||
| 2733 | +# CONFIG_QUOTA is not set | ||
| 2734 | +CONFIG_AUTOFS_FS=y | ||
| 2735 | +CONFIG_AUTOFS4_FS=y | ||
| 2736 | +# CONFIG_FUSE_FS is not set | ||
| 2737 | + | ||
| 2738 | +# | ||
| 2739 | +# Caches | ||
| 2740 | +# | ||
| 2741 | +# CONFIG_FSCACHE is not set | ||
| 2742 | + | ||
| 2743 | +# | ||
| 2744 | +# CD-ROM/DVD Filesystems | ||
| 2745 | +# | ||
| 2746 | +# CONFIG_ISO9660_FS is not set | ||
| 2747 | +# CONFIG_UDF_FS is not set | ||
| 2748 | + | ||
| 2749 | +# | ||
| 2750 | +# DOS/FAT/NT Filesystems | ||
| 2751 | +# | ||
| 2752 | +# CONFIG_MSDOS_FS is not set | ||
| 2753 | +# CONFIG_VFAT_FS is not set | ||
| 2754 | +# CONFIG_NTFS_FS is not set | ||
| 2755 | + | ||
| 2756 | +# | ||
| 2757 | +# Pseudo filesystems | ||
| 2758 | +# | ||
| 2759 | +CONFIG_PROC_FS=y | ||
| 2760 | +# CONFIG_PROC_KCORE is not set | ||
| 2761 | +CONFIG_PROC_SYSCTL=y | ||
| 2762 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 2763 | +CONFIG_SYSFS=y | ||
| 2764 | +CONFIG_TMPFS=y | ||
| 2765 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 2766 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 2767 | +# CONFIG_CONFIGFS_FS is not set | ||
| 2768 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 2769 | +# CONFIG_ADFS_FS is not set | ||
| 2770 | +# CONFIG_AFFS_FS is not set | ||
| 2771 | +# CONFIG_ECRYPT_FS is not set | ||
| 2772 | +# CONFIG_HFS_FS is not set | ||
| 2773 | +# CONFIG_HFSPLUS_FS is not set | ||
| 2774 | +# CONFIG_BEFS_FS is not set | ||
| 2775 | +# CONFIG_BFS_FS is not set | ||
| 2776 | +# CONFIG_EFS_FS is not set | ||
| 2777 | +CONFIG_JFFS2_FS=y | ||
| 2778 | +CONFIG_JFFS2_FS_DEBUG=0 | ||
| 2779 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 2780 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 2781 | +# CONFIG_JFFS2_SUMMARY is not set | ||
| 2782 | +# CONFIG_JFFS2_FS_XATTR is not set | ||
| 2783 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 2784 | +CONFIG_JFFS2_ZLIB=y | ||
| 2785 | +# CONFIG_JFFS2_LZO is not set | ||
| 2786 | +CONFIG_JFFS2_RTIME=y | ||
| 2787 | +# CONFIG_JFFS2_RUBIN is not set | ||
| 2788 | +# CONFIG_LOGFS is not set | ||
| 2789 | +# CONFIG_CRAMFS is not set | ||
| 2790 | +# CONFIG_SQUASHFS is not set | ||
| 2791 | +# CONFIG_VXFS_FS is not set | ||
| 2792 | +# CONFIG_MINIX_FS is not set | ||
| 2793 | +# CONFIG_OMFS_FS is not set | ||
| 2794 | +# CONFIG_HPFS_FS is not set | ||
| 2795 | +# CONFIG_QNX4FS_FS is not set | ||
| 2796 | +# CONFIG_ROMFS_FS is not set | ||
| 2797 | +# CONFIG_SYSV_FS is not set | ||
| 2798 | +# CONFIG_UFS_FS is not set | ||
| 2799 | +CONFIG_NETWORK_FILESYSTEMS=y | ||
| 2800 | +CONFIG_NFS_FS=y | ||
| 2801 | +CONFIG_NFS_V3=y | ||
| 2802 | +CONFIG_NFS_V3_ACL=y | ||
| 2803 | +CONFIG_NFS_V4=y | ||
| 2804 | +# CONFIG_NFS_V4_1 is not set | ||
| 2805 | +CONFIG_ROOT_NFS=y | ||
| 2806 | +# CONFIG_NFSD is not set | ||
| 2807 | +CONFIG_LOCKD=y | ||
| 2808 | +CONFIG_LOCKD_V4=y | ||
| 2809 | +CONFIG_NFS_ACL_SUPPORT=y | ||
| 2810 | +CONFIG_NFS_COMMON=y | ||
| 2811 | +CONFIG_SUNRPC=y | ||
| 2812 | +CONFIG_SUNRPC_GSS=y | ||
| 2813 | +CONFIG_RPCSEC_GSS_KRB5=y | ||
| 2814 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 2815 | +# CONFIG_SMB_FS is not set | ||
| 2816 | +# CONFIG_CEPH_FS is not set | ||
| 2817 | +# CONFIG_CIFS is not set | ||
| 2818 | +# CONFIG_NCP_FS is not set | ||
| 2819 | +# CONFIG_CODA_FS is not set | ||
| 2820 | +# CONFIG_AFS_FS is not set | ||
| 2821 | + | ||
| 2822 | +# | ||
| 2823 | +# Partition Types | ||
| 2824 | +# | ||
| 2825 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 2826 | +CONFIG_MSDOS_PARTITION=y | ||
| 2827 | +# CONFIG_NLS is not set | ||
| 2828 | +# CONFIG_DLM is not set | ||
| 2829 | +# CONFIG_BINARY_PRINTF is not set | ||
| 2830 | + | ||
| 2831 | +# | ||
| 2832 | +# Library routines | ||
| 2833 | +# | ||
| 2834 | +CONFIG_BITREVERSE=y | ||
| 2835 | +CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 2836 | +# CONFIG_CRC_CCITT is not set | ||
| 2837 | +# CONFIG_CRC16 is not set | ||
| 2838 | +# CONFIG_CRC_T10DIF is not set | ||
| 2839 | +# CONFIG_CRC_ITU_T is not set | ||
| 2840 | +CONFIG_CRC32=y | ||
| 2841 | +# CONFIG_CRC7 is not set | ||
| 2842 | +# CONFIG_LIBCRC32C is not set | ||
| 2843 | +CONFIG_ZLIB_INFLATE=y | ||
| 2844 | +CONFIG_ZLIB_DEFLATE=y | ||
| 2845 | +CONFIG_DECOMPRESS_GZIP=y | ||
| 2846 | +CONFIG_HAS_IOMEM=y | ||
| 2847 | +CONFIG_HAS_IOPORT=y | ||
| 2848 | +CONFIG_HAS_DMA=y | ||
| 2849 | +CONFIG_NLATTR=y | ||
| 2850 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 2851 | + | ||
| 2852 | +# | ||
| 2853 | +# Kernel hacking | ||
| 2854 | +# | ||
| 2855 | +# CONFIG_PRINTK_TIME is not set | ||
| 2856 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 2857 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 2858 | +CONFIG_FRAME_WARN=1024 | ||
| 2859 | +CONFIG_MAGIC_SYSRQ=y | ||
| 2860 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 2861 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 2862 | +CONFIG_DEBUG_FS=y | ||
| 2863 | +# CONFIG_HEADERS_CHECK is not set | ||
| 2864 | +CONFIG_DEBUG_KERNEL=y | ||
| 2865 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 2866 | +# CONFIG_DETECT_SOFTLOCKUP is not set | ||
| 2867 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 2868 | +CONFIG_SCHED_DEBUG=y | ||
| 2869 | +# CONFIG_SCHEDSTATS is not set | ||
| 2870 | +# CONFIG_TIMER_STATS is not set | ||
| 2871 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 2872 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 2873 | +# CONFIG_SLUB_STATS is not set | ||
| 2874 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 2875 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 2876 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 2877 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 2878 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 2879 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 2880 | +# CONFIG_PROVE_LOCKING is not set | ||
| 2881 | +# CONFIG_LOCK_STAT is not set | ||
| 2882 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 2883 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 2884 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 2885 | +# CONFIG_DEBUG_HIGHMEM is not set | ||
| 2886 | +CONFIG_DEBUG_BUGVERBOSE=y | ||
| 2887 | +CONFIG_DEBUG_INFO=y | ||
| 2888 | +# CONFIG_DEBUG_VM is not set | ||
| 2889 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 2890 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 2891 | +# CONFIG_DEBUG_LIST is not set | ||
| 2892 | +# CONFIG_DEBUG_SG is not set | ||
| 2893 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 2894 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 2895 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 2896 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 2897 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 2898 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 2899 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 2900 | +# CONFIG_LKDTM is not set | ||
| 2901 | +# CONFIG_FAULT_INJECTION is not set | ||
| 2902 | +# CONFIG_LATENCYTOP is not set | ||
| 2903 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 2904 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 2905 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 2906 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 2907 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 2908 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 2909 | +CONFIG_RING_BUFFER=y | ||
| 2910 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 2911 | +CONFIG_TRACING_SUPPORT=y | ||
| 2912 | +CONFIG_FTRACE=y | ||
| 2913 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 2914 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 2915 | +# CONFIG_SCHED_TRACER is not set | ||
| 2916 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 2917 | +# CONFIG_BOOT_TRACER is not set | ||
| 2918 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 2919 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 2920 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 2921 | +# CONFIG_STACK_TRACER is not set | ||
| 2922 | +# CONFIG_KMEMTRACE is not set | ||
| 2923 | +# CONFIG_WORKQUEUE_TRACER is not set | ||
| 2924 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 2925 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 2926 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 2927 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 2928 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 2929 | +# CONFIG_SAMPLES is not set | ||
| 2930 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 2931 | +# CONFIG_KGDB is not set | ||
| 2932 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 2933 | +CONFIG_PPC_WERROR=y | ||
| 2934 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 2935 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 2936 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 2937 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 2938 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 2939 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 2940 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 2941 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 2942 | +CONFIG_XMON=y | ||
| 2943 | +CONFIG_XMON_DEFAULT=y | ||
| 2944 | +CONFIG_XMON_DISASSEMBLY=y | ||
| 2945 | +CONFIG_DEBUGGER=y | ||
| 2946 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 2947 | +# CONFIG_BDI_SWITCH is not set | ||
| 2948 | +# CONFIG_PPC_EARLY_DEBUG is not set | ||
| 2949 | + | ||
| 2950 | +# | ||
| 2951 | +# Security options | ||
| 2952 | +# | ||
| 2953 | +CONFIG_KEYS=y | ||
| 2954 | +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 2955 | +# CONFIG_SECURITY is not set | ||
| 2956 | +# CONFIG_SECURITYFS is not set | ||
| 2957 | +# CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 2958 | +# CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 2959 | +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 2960 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 2961 | +CONFIG_DEFAULT_SECURITY="" | ||
| 2962 | +CONFIG_CRYPTO=y | ||
| 2963 | + | ||
| 2964 | +# | ||
| 2965 | +# Crypto core or helper | ||
| 2966 | +# | ||
| 2967 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 2968 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 2969 | +CONFIG_CRYPTO_AEAD=y | ||
| 2970 | +CONFIG_CRYPTO_AEAD2=y | ||
| 2971 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 2972 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 2973 | +CONFIG_CRYPTO_HASH=y | ||
| 2974 | +CONFIG_CRYPTO_HASH2=y | ||
| 2975 | +CONFIG_CRYPTO_RNG=y | ||
| 2976 | +CONFIG_CRYPTO_RNG2=y | ||
| 2977 | +CONFIG_CRYPTO_PCOMP=y | ||
| 2978 | +CONFIG_CRYPTO_MANAGER=y | ||
| 2979 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 2980 | +CONFIG_CRYPTO_GF128MUL=y | ||
| 2981 | +CONFIG_CRYPTO_NULL=y | ||
| 2982 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 2983 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 2984 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 2985 | +CONFIG_CRYPTO_AUTHENC=y | ||
| 2986 | +# CONFIG_CRYPTO_TEST is not set | ||
| 2987 | + | ||
| 2988 | +# | ||
| 2989 | +# Authenticated Encryption with Associated Data | ||
| 2990 | +# | ||
| 2991 | +# CONFIG_CRYPTO_CCM is not set | ||
| 2992 | +CONFIG_CRYPTO_GCM=y | ||
| 2993 | +CONFIG_CRYPTO_SEQIV=y | ||
| 2994 | + | ||
| 2995 | +# | ||
| 2996 | +# Block modes | ||
| 2997 | +# | ||
| 2998 | +CONFIG_CRYPTO_CBC=y | ||
| 2999 | +CONFIG_CRYPTO_CTR=y | ||
| 3000 | +# CONFIG_CRYPTO_CTS is not set | ||
| 3001 | +# CONFIG_CRYPTO_ECB is not set | ||
| 3002 | +# CONFIG_CRYPTO_LRW is not set | ||
| 3003 | +# CONFIG_CRYPTO_PCBC is not set | ||
| 3004 | +# CONFIG_CRYPTO_XTS is not set | ||
| 3005 | + | ||
| 3006 | +# | ||
| 3007 | +# Hash modes | ||
| 3008 | +# | ||
| 3009 | +CONFIG_CRYPTO_HMAC=y | ||
| 3010 | +CONFIG_CRYPTO_XCBC=y | ||
| 3011 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 3012 | + | ||
| 3013 | +# | ||
| 3014 | +# Digest | ||
| 3015 | +# | ||
| 3016 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 3017 | +CONFIG_CRYPTO_GHASH=y | ||
| 3018 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 3019 | +CONFIG_CRYPTO_MD5=y | ||
| 3020 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 3021 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 3022 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 3023 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 3024 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 3025 | +CONFIG_CRYPTO_SHA1=y | ||
| 3026 | +CONFIG_CRYPTO_SHA256=y | ||
| 3027 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 3028 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 3029 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 3030 | + | ||
| 3031 | +# | ||
| 3032 | +# Ciphers | ||
| 3033 | +# | ||
| 3034 | +CONFIG_CRYPTO_AES=y | ||
| 3035 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 3036 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 3037 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 3038 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 3039 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 3040 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 3041 | +CONFIG_CRYPTO_DES=y | ||
| 3042 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 3043 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 3044 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 3045 | +# CONFIG_CRYPTO_SEED is not set | ||
| 3046 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 3047 | +# CONFIG_CRYPTO_TEA is not set | ||
| 3048 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 3049 | + | ||
| 3050 | +# | ||
| 3051 | +# Compression | ||
| 3052 | +# | ||
| 3053 | +CONFIG_CRYPTO_DEFLATE=y | ||
| 3054 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 3055 | +# CONFIG_CRYPTO_LZO is not set | ||
| 3056 | + | ||
| 3057 | +# | ||
| 3058 | +# Random Number Generation | ||
| 3059 | +# | ||
| 3060 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 3061 | +CONFIG_CRYPTO_HW=y | ||
| 3062 | +# CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 3063 | +CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 3064 | +# CONFIG_PPC_CLOCK is not set | ||
| 3065 | +# CONFIG_VIRTUALIZATION is not set | ||
| 3066 | diff --git a/arch/powerpc/configs/acp_dbgconfig b/arch/powerpc/configs/acp_dbgconfig | ||
| 3067 | new file mode 100644 | ||
| 3068 | index 0000000..2d206e5 | ||
| 3069 | --- /dev/null | ||
| 3070 | +++ b/arch/powerpc/configs/acp_dbgconfig | ||
| 3071 | @@ -0,0 +1,1655 @@ | ||
| 3072 | +# | ||
| 3073 | +# Automatically generated make config: don't edit | ||
| 3074 | +# Linux kernel version: 2.6.35 | ||
| 3075 | +# Tue Sep 13 11:37:01 2011 | ||
| 3076 | +# | ||
| 3077 | +# CONFIG_PPC64 is not set | ||
| 3078 | + | ||
| 3079 | +# | ||
| 3080 | +# Processor support | ||
| 3081 | +# | ||
| 3082 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 3083 | +# CONFIG_PPC_85xx is not set | ||
| 3084 | +# CONFIG_PPC_8xx is not set | ||
| 3085 | +# CONFIG_40x is not set | ||
| 3086 | +CONFIG_44x=y | ||
| 3087 | +# CONFIG_E200 is not set | ||
| 3088 | +CONFIG_PPC_FPU=y | ||
| 3089 | +CONFIG_4xx=y | ||
| 3090 | +CONFIG_BOOKE=y | ||
| 3091 | +CONFIG_PTE_64BIT=y | ||
| 3092 | +CONFIG_PHYS_64BIT=y | ||
| 3093 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 3094 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 3095 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 3096 | +CONFIG_SMP=y | ||
| 3097 | +CONFIG_NR_CPUS=4 | ||
| 3098 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 3099 | +CONFIG_PPC32=y | ||
| 3100 | +CONFIG_WORD_SIZE=32 | ||
| 3101 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 3102 | +CONFIG_MMU=y | ||
| 3103 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 3104 | +CONFIG_GENERIC_TIME=y | ||
| 3105 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 3106 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 3107 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 3108 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 3109 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 3110 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 3111 | +CONFIG_IRQ_PER_CPU=y | ||
| 3112 | +CONFIG_NR_IRQS=512 | ||
| 3113 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 3114 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 3115 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 3116 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 3117 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 3118 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 3119 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 3120 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 3121 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 3122 | +CONFIG_PPC=y | ||
| 3123 | +CONFIG_EARLY_PRINTK=y | ||
| 3124 | +CONFIG_GENERIC_NVRAM=y | ||
| 3125 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 3126 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 3127 | +CONFIG_PPC_OF=y | ||
| 3128 | +CONFIG_OF=y | ||
| 3129 | +CONFIG_PPC_UDBG_16550=y | ||
| 3130 | +CONFIG_GENERIC_TBSYNC=y | ||
| 3131 | +CONFIG_AUDIT_ARCH=y | ||
| 3132 | +CONFIG_GENERIC_BUG=y | ||
| 3133 | +CONFIG_DTC=y | ||
| 3134 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 3135 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 3136 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 3137 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 3138 | +CONFIG_PPC_DCR=y | ||
| 3139 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 3140 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 3141 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 3142 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 3143 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 3144 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 3145 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 3146 | +CONFIG_CONSTRUCTORS=y | ||
| 3147 | + | ||
| 3148 | +# | ||
| 3149 | +# General setup | ||
| 3150 | +# | ||
| 3151 | +CONFIG_EXPERIMENTAL=y | ||
| 3152 | +CONFIG_LOCK_KERNEL=y | ||
| 3153 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 3154 | +CONFIG_CROSS_COMPILE="powerpc-linux-" | ||
| 3155 | +CONFIG_LOCALVERSION="" | ||
| 3156 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 3157 | +CONFIG_SWAP=y | ||
| 3158 | +CONFIG_SYSVIPC=y | ||
| 3159 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 3160 | +CONFIG_POSIX_MQUEUE=y | ||
| 3161 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 3162 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 3163 | +# CONFIG_TASKSTATS is not set | ||
| 3164 | +# CONFIG_AUDIT is not set | ||
| 3165 | + | ||
| 3166 | +# | ||
| 3167 | +# RCU Subsystem | ||
| 3168 | +# | ||
| 3169 | +CONFIG_TREE_RCU=y | ||
| 3170 | +# CONFIG_TREE_PREEMPT_RCU is not set | ||
| 3171 | +# CONFIG_TINY_RCU is not set | ||
| 3172 | +# CONFIG_RCU_TRACE is not set | ||
| 3173 | +CONFIG_RCU_FANOUT=32 | ||
| 3174 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 3175 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 3176 | +# CONFIG_IKCONFIG is not set | ||
| 3177 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 3178 | +# CONFIG_CGROUPS is not set | ||
| 3179 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 3180 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 3181 | +# CONFIG_RELAY is not set | ||
| 3182 | +# CONFIG_NAMESPACES is not set | ||
| 3183 | +CONFIG_BLK_DEV_INITRD=y | ||
| 3184 | +CONFIG_INITRAMFS_SOURCE="" | ||
| 3185 | +CONFIG_RD_GZIP=y | ||
| 3186 | +# CONFIG_RD_BZIP2 is not set | ||
| 3187 | +# CONFIG_RD_LZMA is not set | ||
| 3188 | +# CONFIG_RD_LZO is not set | ||
| 3189 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 3190 | +CONFIG_SYSCTL=y | ||
| 3191 | +CONFIG_ANON_INODES=y | ||
| 3192 | +CONFIG_EMBEDDED=y | ||
| 3193 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 3194 | +CONFIG_KALLSYMS=y | ||
| 3195 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 3196 | +CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 3197 | +CONFIG_HOTPLUG=y | ||
| 3198 | +CONFIG_PRINTK=y | ||
| 3199 | +CONFIG_BUG=y | ||
| 3200 | +CONFIG_ELF_CORE=y | ||
| 3201 | +CONFIG_BASE_FULL=y | ||
| 3202 | +CONFIG_FUTEX=y | ||
| 3203 | +CONFIG_EPOLL=y | ||
| 3204 | +CONFIG_SIGNALFD=y | ||
| 3205 | +CONFIG_TIMERFD=y | ||
| 3206 | +CONFIG_EVENTFD=y | ||
| 3207 | +CONFIG_SHMEM=y | ||
| 3208 | +CONFIG_AIO=y | ||
| 3209 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 3210 | + | ||
| 3211 | +# | ||
| 3212 | +# Kernel Performance Events And Counters | ||
| 3213 | +# | ||
| 3214 | +# CONFIG_PERF_EVENTS is not set | ||
| 3215 | +# CONFIG_PERF_COUNTERS is not set | ||
| 3216 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 3217 | +CONFIG_PCI_QUIRKS=y | ||
| 3218 | +CONFIG_SLUB_DEBUG=y | ||
| 3219 | +CONFIG_COMPAT_BRK=y | ||
| 3220 | +# CONFIG_SLAB is not set | ||
| 3221 | +CONFIG_SLUB=y | ||
| 3222 | +# CONFIG_SLOB is not set | ||
| 3223 | +CONFIG_PROFILING=y | ||
| 3224 | +CONFIG_OPROFILE=y | ||
| 3225 | +CONFIG_HAVE_OPROFILE=y | ||
| 3226 | +# CONFIG_KPROBES is not set | ||
| 3227 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 3228 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 3229 | +CONFIG_HAVE_KPROBES=y | ||
| 3230 | +CONFIG_HAVE_KRETPROBES=y | ||
| 3231 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 3232 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 3233 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 3234 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 3235 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 3236 | + | ||
| 3237 | +# | ||
| 3238 | +# GCOV-based kernel profiling | ||
| 3239 | +# | ||
| 3240 | +# CONFIG_GCOV_KERNEL is not set | ||
| 3241 | +# CONFIG_SLOW_WORK is not set | ||
| 3242 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 3243 | +CONFIG_SLABINFO=y | ||
| 3244 | +CONFIG_RT_MUTEXES=y | ||
| 3245 | +CONFIG_BASE_SMALL=0 | ||
| 3246 | +CONFIG_MODULES=y | ||
| 3247 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 3248 | +CONFIG_MODULE_UNLOAD=y | ||
| 3249 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 3250 | +CONFIG_MODVERSIONS=y | ||
| 3251 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 3252 | +CONFIG_STOP_MACHINE=y | ||
| 3253 | +CONFIG_BLOCK=y | ||
| 3254 | +CONFIG_LBDAF=y | ||
| 3255 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 3256 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 3257 | + | ||
| 3258 | +# | ||
| 3259 | +# IO Schedulers | ||
| 3260 | +# | ||
| 3261 | +CONFIG_IOSCHED_NOOP=y | ||
| 3262 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 3263 | +CONFIG_IOSCHED_CFQ=y | ||
| 3264 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 3265 | +CONFIG_DEFAULT_CFQ=y | ||
| 3266 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 3267 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 3268 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 3269 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 3270 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 3271 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 3272 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 3273 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 3274 | +CONFIG_INLINE_SPIN_UNLOCK=y | ||
| 3275 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 3276 | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
| 3277 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 3278 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 3279 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 3280 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 3281 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 3282 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 3283 | +CONFIG_INLINE_READ_UNLOCK=y | ||
| 3284 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 3285 | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
| 3286 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 3287 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 3288 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 3289 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 3290 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 3291 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 3292 | +CONFIG_INLINE_WRITE_UNLOCK=y | ||
| 3293 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 3294 | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
| 3295 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 3296 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 3297 | +# CONFIG_FREEZER is not set | ||
| 3298 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 3299 | +CONFIG_PPC_MSI_BITMAP=y | ||
| 3300 | +# CONFIG_RAPIDIO_FSL is not set | ||
| 3301 | + | ||
| 3302 | +# | ||
| 3303 | +# Platform support | ||
| 3304 | +# | ||
| 3305 | +# CONFIG_PPC_CELL is not set | ||
| 3306 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 3307 | +# CONFIG_PQ2ADS is not set | ||
| 3308 | +CONFIG_PPC_47x=y | ||
| 3309 | +# CONFIG_BAMBOO is not set | ||
| 3310 | +# CONFIG_EBONY is not set | ||
| 3311 | +# CONFIG_SAM440EP is not set | ||
| 3312 | +# CONFIG_SEQUOIA is not set | ||
| 3313 | +# CONFIG_TAISHAN is not set | ||
| 3314 | +# CONFIG_KATMAI is not set | ||
| 3315 | +# CONFIG_RAINIER is not set | ||
| 3316 | +# CONFIG_WARP is not set | ||
| 3317 | +# CONFIG_ARCHES is not set | ||
| 3318 | +# CONFIG_CANYONLANDS is not set | ||
| 3319 | +# CONFIG_GLACIER is not set | ||
| 3320 | +# CONFIG_REDWOOD is not set | ||
| 3321 | +# CONFIG_EIGER is not set | ||
| 3322 | +# CONFIG_YOSEMITE is not set | ||
| 3323 | +# CONFIG_ISS4xx is not set | ||
| 3324 | +# CONFIG_ICON is not set | ||
| 3325 | +CONFIG_ACP=y | ||
| 3326 | +# CONFIG_ACPISS is not set | ||
| 3327 | +# CONFIG_ACP_X1V1 is not set | ||
| 3328 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 3329 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 3330 | +# CONFIG_PPC4xx_GPIO is not set | ||
| 3331 | +CONFIG_440GP=y | ||
| 3332 | +# CONFIG_IPIC is not set | ||
| 3333 | +CONFIG_MPIC=y | ||
| 3334 | +# CONFIG_MPIC_WEIRD is not set | ||
| 3335 | +# CONFIG_PPC_I8259 is not set | ||
| 3336 | +# CONFIG_PPC_RTAS is not set | ||
| 3337 | +# CONFIG_MMIO_NVRAM is not set | ||
| 3338 | +# CONFIG_PPC_MPC106 is not set | ||
| 3339 | +# CONFIG_PPC_970_NAP is not set | ||
| 3340 | +# CONFIG_PPC_INDIRECT_IO is not set | ||
| 3341 | +# CONFIG_GENERIC_IOMAP is not set | ||
| 3342 | +# CONFIG_CPU_FREQ is not set | ||
| 3343 | +# CONFIG_FSL_ULI1575 is not set | ||
| 3344 | +# CONFIG_SIMPLE_GPIO is not set | ||
| 3345 | + | ||
| 3346 | +# | ||
| 3347 | +# Kernel options | ||
| 3348 | +# | ||
| 3349 | +CONFIG_HIGHMEM=y | ||
| 3350 | +CONFIG_TICK_ONESHOT=y | ||
| 3351 | +# CONFIG_NO_HZ is not set | ||
| 3352 | +CONFIG_HIGH_RES_TIMERS=y | ||
| 3353 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 3354 | +CONFIG_HZ_100=y | ||
| 3355 | +# CONFIG_HZ_250 is not set | ||
| 3356 | +# CONFIG_HZ_300 is not set | ||
| 3357 | +# CONFIG_HZ_1000 is not set | ||
| 3358 | +CONFIG_HZ=100 | ||
| 3359 | +CONFIG_SCHED_HRTICK=y | ||
| 3360 | +CONFIG_PREEMPT_NONE=y | ||
| 3361 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 3362 | +# CONFIG_PREEMPT is not set | ||
| 3363 | +CONFIG_BINFMT_ELF=y | ||
| 3364 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 3365 | +# CONFIG_HAVE_AOUT is not set | ||
| 3366 | +# CONFIG_BINFMT_MISC is not set | ||
| 3367 | +# CONFIG_MATH_EMULATION is not set | ||
| 3368 | +# CONFIG_IOMMU_HELPER is not set | ||
| 3369 | +# CONFIG_SWIOTLB is not set | ||
| 3370 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 3371 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 3372 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 3373 | +# CONFIG_IRQ_ALL_CPUS is not set | ||
| 3374 | +CONFIG_SPARSE_IRQ=y | ||
| 3375 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 3376 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 3377 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 3378 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 3379 | +CONFIG_FLATMEM_MANUAL=y | ||
| 3380 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 3381 | +# CONFIG_SPARSEMEM_MANUAL is not set | ||
| 3382 | +CONFIG_FLATMEM=y | ||
| 3383 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 3384 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 3385 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 3386 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 3387 | +CONFIG_MIGRATION=y | ||
| 3388 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 3389 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 3390 | +CONFIG_BOUNCE=y | ||
| 3391 | +CONFIG_VIRT_TO_BUS=y | ||
| 3392 | +# CONFIG_KSM is not set | ||
| 3393 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 3394 | +CONFIG_STDBINUTILS=y | ||
| 3395 | +CONFIG_PPC_4K_PAGES=y | ||
| 3396 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 3397 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 3398 | +# CONFIG_PPC_256K_PAGES is not set | ||
| 3399 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 3400 | +# CONFIG_PROC_DEVICETREE is not set | ||
| 3401 | +CONFIG_CMDLINE_BOOL=y | ||
| 3402 | +CONFIG_CMDLINE="console=ttyS0 mtdparts=acp-nand:512K(2ndStage),512K(env-0),512K(env-1),512K(3rdStage),-(fs) ip=dhcp root=/dev/nfs" | ||
| 3403 | +CONFIG_EXTRA_TARGETS="" | ||
| 3404 | +CONFIG_SECCOMP=y | ||
| 3405 | +CONFIG_ISA_DMA_API=y | ||
| 3406 | + | ||
| 3407 | +# | ||
| 3408 | +# Bus options | ||
| 3409 | +# | ||
| 3410 | +CONFIG_ZONE_DMA=y | ||
| 3411 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 3412 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 3413 | +CONFIG_PPC_INDIRECT_PCI=y | ||
| 3414 | +CONFIG_4xx_SOC=y | ||
| 3415 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 3416 | +CONFIG_PCI=y | ||
| 3417 | +CONFIG_PCI_DOMAINS=y | ||
| 3418 | +CONFIG_PCI_SYSCALL=y | ||
| 3419 | +CONFIG_PCIEPORTBUS=y | ||
| 3420 | +# CONFIG_PCIEAER is not set | ||
| 3421 | +CONFIG_PCIEASPM=y | ||
| 3422 | +# CONFIG_PCIEASPM_DEBUG is not set | ||
| 3423 | +CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 3424 | +CONFIG_PCI_MSI=y | ||
| 3425 | +# CONFIG_PCI_DEBUG is not set | ||
| 3426 | +# CONFIG_PCI_STUB is not set | ||
| 3427 | +# CONFIG_PCI_IOV is not set | ||
| 3428 | +# CONFIG_PCCARD is not set | ||
| 3429 | +# CONFIG_HOTPLUG_PCI is not set | ||
| 3430 | +CONFIG_HAS_RAPIDIO=y | ||
| 3431 | +CONFIG_RAPIDIO=y | ||
| 3432 | +CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 3433 | +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 3434 | +# CONFIG_RAPIDIO_ACP is not set | ||
| 3435 | +CONFIG_RAPIDIO_TSI57X=y | ||
| 3436 | +CONFIG_RAPIDIO_CPS_XX=y | ||
| 3437 | +CONFIG_RAPIDIO_TSI568=y | ||
| 3438 | +CONFIG_RAPIDIO_TSI500=y | ||
| 3439 | +CONFIG_RAPIDIO_DEBUG=y | ||
| 3440 | + | ||
| 3441 | +# | ||
| 3442 | +# Advanced setup | ||
| 3443 | +# | ||
| 3444 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 3445 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 3446 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 3447 | +CONFIG_RELOCATABLE=y | ||
| 3448 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 3449 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 3450 | +CONFIG_KERNEL_START_BOOL=y | ||
| 3451 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 3452 | +CONFIG_PHYSICAL_START=0x00000000 | ||
| 3453 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 3454 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 3455 | +CONFIG_NET=y | ||
| 3456 | + | ||
| 3457 | +# | ||
| 3458 | +# Networking options | ||
| 3459 | +# | ||
| 3460 | +CONFIG_PACKET=y | ||
| 3461 | +CONFIG_UNIX=y | ||
| 3462 | +CONFIG_XFRM=y | ||
| 3463 | +CONFIG_XFRM_USER=y | ||
| 3464 | +CONFIG_XFRM_SUB_POLICY=y | ||
| 3465 | +CONFIG_XFRM_MIGRATE=y | ||
| 3466 | +CONFIG_XFRM_STATISTICS=y | ||
| 3467 | +CONFIG_XFRM_IPCOMP=y | ||
| 3468 | +CONFIG_NET_KEY=y | ||
| 3469 | +# CONFIG_NET_KEY_MIGRATE is not set | ||
| 3470 | +CONFIG_INET=y | ||
| 3471 | +CONFIG_IP_MULTICAST=y | ||
| 3472 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 3473 | +CONFIG_IP_FIB_HASH=y | ||
| 3474 | +CONFIG_IP_PNP=y | ||
| 3475 | +CONFIG_IP_PNP_DHCP=y | ||
| 3476 | +CONFIG_IP_PNP_BOOTP=y | ||
| 3477 | +CONFIG_IP_PNP_RARP=y | ||
| 3478 | +CONFIG_NET_IPIP=y | ||
| 3479 | +# CONFIG_NET_IPGRE is not set | ||
| 3480 | +# CONFIG_IP_MROUTE is not set | ||
| 3481 | +# CONFIG_ARPD is not set | ||
| 3482 | +CONFIG_SYN_COOKIES=y | ||
| 3483 | +CONFIG_INET_AH=y | ||
| 3484 | +CONFIG_INET_ESP=y | ||
| 3485 | +CONFIG_INET_IPCOMP=y | ||
| 3486 | +CONFIG_INET_XFRM_TUNNEL=y | ||
| 3487 | +CONFIG_INET_TUNNEL=y | ||
| 3488 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 3489 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 3490 | +CONFIG_INET_XFRM_MODE_BEET=y | ||
| 3491 | +# CONFIG_INET_LRO is not set | ||
| 3492 | +CONFIG_INET_DIAG=y | ||
| 3493 | +CONFIG_INET_TCP_DIAG=y | ||
| 3494 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 3495 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 3496 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 3497 | +# CONFIG_TCP_MD5SIG is not set | ||
| 3498 | +CONFIG_IPV6=y | ||
| 3499 | +# CONFIG_IPV6_PRIVACY is not set | ||
| 3500 | +# CONFIG_IPV6_ROUTER_PREF is not set | ||
| 3501 | +# CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 3502 | +CONFIG_INET6_AH=y | ||
| 3503 | +CONFIG_INET6_ESP=y | ||
| 3504 | +CONFIG_INET6_IPCOMP=y | ||
| 3505 | +CONFIG_IPV6_MIP6=y | ||
| 3506 | +CONFIG_INET6_XFRM_TUNNEL=y | ||
| 3507 | +CONFIG_INET6_TUNNEL=y | ||
| 3508 | +CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 3509 | +CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 3510 | +CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 3511 | +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 3512 | +CONFIG_IPV6_SIT=y | ||
| 3513 | +# CONFIG_IPV6_SIT_6RD is not set | ||
| 3514 | +CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 3515 | +CONFIG_IPV6_TUNNEL=y | ||
| 3516 | +# CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 3517 | +# CONFIG_IPV6_MROUTE is not set | ||
| 3518 | +CONFIG_NETWORK_SECMARK=y | ||
| 3519 | +CONFIG_NETFILTER=y | ||
| 3520 | +# CONFIG_NETFILTER_DEBUG is not set | ||
| 3521 | +CONFIG_NETFILTER_ADVANCED=y | ||
| 3522 | + | ||
| 3523 | +# | ||
| 3524 | +# Core Netfilter Configuration | ||
| 3525 | +# | ||
| 3526 | +# CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 3527 | +# CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 3528 | +# CONFIG_NF_CONNTRACK is not set | ||
| 3529 | +# CONFIG_NETFILTER_XTABLES is not set | ||
| 3530 | +# CONFIG_IP_VS is not set | ||
| 3531 | + | ||
| 3532 | +# | ||
| 3533 | +# IP: Netfilter Configuration | ||
| 3534 | +# | ||
| 3535 | +# CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 3536 | +# CONFIG_IP_NF_QUEUE is not set | ||
| 3537 | +# CONFIG_IP_NF_IPTABLES is not set | ||
| 3538 | +# CONFIG_IP_NF_ARPTABLES is not set | ||
| 3539 | + | ||
| 3540 | +# | ||
| 3541 | +# IPv6: Netfilter Configuration | ||
| 3542 | +# | ||
| 3543 | +# CONFIG_IP6_NF_QUEUE is not set | ||
| 3544 | +# CONFIG_IP6_NF_IPTABLES is not set | ||
| 3545 | +# CONFIG_IP_DCCP is not set | ||
| 3546 | +# CONFIG_IP_SCTP is not set | ||
| 3547 | +# CONFIG_RDS is not set | ||
| 3548 | +# CONFIG_TIPC is not set | ||
| 3549 | +# CONFIG_ATM is not set | ||
| 3550 | +# CONFIG_L2TP is not set | ||
| 3551 | +# CONFIG_BRIDGE is not set | ||
| 3552 | +# CONFIG_NET_DSA is not set | ||
| 3553 | +CONFIG_VLAN_8021Q=y | ||
| 3554 | +# CONFIG_VLAN_8021Q_GVRP is not set | ||
| 3555 | +# CONFIG_DECNET is not set | ||
| 3556 | +# CONFIG_LLC2 is not set | ||
| 3557 | +# CONFIG_IPX is not set | ||
| 3558 | +# CONFIG_ATALK is not set | ||
| 3559 | +# CONFIG_X25 is not set | ||
| 3560 | +# CONFIG_LAPB is not set | ||
| 3561 | +# CONFIG_ECONET is not set | ||
| 3562 | +# CONFIG_WAN_ROUTER is not set | ||
| 3563 | +# CONFIG_PHONET is not set | ||
| 3564 | +# CONFIG_IEEE802154 is not set | ||
| 3565 | +# CONFIG_NET_SCHED is not set | ||
| 3566 | +# CONFIG_DCB is not set | ||
| 3567 | +CONFIG_RPS=y | ||
| 3568 | + | ||
| 3569 | +# | ||
| 3570 | +# Network testing | ||
| 3571 | +# | ||
| 3572 | +# CONFIG_NET_PKTGEN is not set | ||
| 3573 | +# CONFIG_HAMRADIO is not set | ||
| 3574 | +# CONFIG_CAN is not set | ||
| 3575 | +# CONFIG_IRDA is not set | ||
| 3576 | +# CONFIG_BT is not set | ||
| 3577 | +# CONFIG_AF_RXRPC is not set | ||
| 3578 | +CONFIG_WIRELESS=y | ||
| 3579 | +CONFIG_WIRELESS_EXT=y | ||
| 3580 | +CONFIG_WEXT_CORE=y | ||
| 3581 | +CONFIG_WEXT_PROC=y | ||
| 3582 | +CONFIG_WEXT_PRIV=y | ||
| 3583 | +# CONFIG_CFG80211 is not set | ||
| 3584 | +CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 3585 | +# CONFIG_LIB80211 is not set | ||
| 3586 | + | ||
| 3587 | +# | ||
| 3588 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 3589 | +# | ||
| 3590 | + | ||
| 3591 | +# | ||
| 3592 | +# Some wireless drivers require a rate control algorithm | ||
| 3593 | +# | ||
| 3594 | +# CONFIG_WIMAX is not set | ||
| 3595 | +# CONFIG_RFKILL is not set | ||
| 3596 | +# CONFIG_NET_9P is not set | ||
| 3597 | +# CONFIG_CAIF is not set | ||
| 3598 | + | ||
| 3599 | +# | ||
| 3600 | +# Device Drivers | ||
| 3601 | +# | ||
| 3602 | + | ||
| 3603 | +# | ||
| 3604 | +# Generic Driver Options | ||
| 3605 | +# | ||
| 3606 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 3607 | +# CONFIG_DEVTMPFS is not set | ||
| 3608 | +CONFIG_STANDALONE=y | ||
| 3609 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 3610 | +CONFIG_FW_LOADER=y | ||
| 3611 | +CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 3612 | +CONFIG_EXTRA_FIRMWARE="" | ||
| 3613 | +# CONFIG_DEBUG_DRIVER is not set | ||
| 3614 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 3615 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 3616 | +# CONFIG_CONNECTOR is not set | ||
| 3617 | +CONFIG_MTD=y | ||
| 3618 | +# CONFIG_MTD_DEBUG is not set | ||
| 3619 | +# CONFIG_MTD_TESTS is not set | ||
| 3620 | +# CONFIG_MTD_CONCAT is not set | ||
| 3621 | +CONFIG_MTD_PARTITIONS=y | ||
| 3622 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 3623 | +CONFIG_MTD_CMDLINE_PARTS=y | ||
| 3624 | +CONFIG_MTD_OF_PARTS=y | ||
| 3625 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 3626 | + | ||
| 3627 | +# | ||
| 3628 | +# User Modules And Translation Layers | ||
| 3629 | +# | ||
| 3630 | +CONFIG_MTD_CHAR=y | ||
| 3631 | +CONFIG_MTD_BLKDEVS=y | ||
| 3632 | +CONFIG_MTD_BLOCK=y | ||
| 3633 | +# CONFIG_FTL is not set | ||
| 3634 | +# CONFIG_NFTL is not set | ||
| 3635 | +# CONFIG_INFTL is not set | ||
| 3636 | +# CONFIG_RFD_FTL is not set | ||
| 3637 | +# CONFIG_SSFDC is not set | ||
| 3638 | +# CONFIG_SM_FTL is not set | ||
| 3639 | +# CONFIG_MTD_OOPS is not set | ||
| 3640 | + | ||
| 3641 | +# | ||
| 3642 | +# RAM/ROM/Flash chip drivers | ||
| 3643 | +# | ||
| 3644 | +# CONFIG_MTD_CFI is not set | ||
| 3645 | +CONFIG_MTD_JEDECPROBE=y | ||
| 3646 | +CONFIG_MTD_GEN_PROBE=y | ||
| 3647 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 3648 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 3649 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 3650 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 3651 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 3652 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 3653 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 3654 | +CONFIG_MTD_CFI_I1=y | ||
| 3655 | +CONFIG_MTD_CFI_I2=y | ||
| 3656 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 3657 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 3658 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 3659 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 3660 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 3661 | +CONFIG_MTD_CFI_UTIL=y | ||
| 3662 | +# CONFIG_MTD_RAM is not set | ||
| 3663 | +# CONFIG_MTD_ROM is not set | ||
| 3664 | +# CONFIG_MTD_ABSENT is not set | ||
| 3665 | + | ||
| 3666 | +# | ||
| 3667 | +# Mapping drivers for chip access | ||
| 3668 | +# | ||
| 3669 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 3670 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 3671 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 3672 | +# CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 3673 | +# CONFIG_MTD_PLATRAM is not set | ||
| 3674 | + | ||
| 3675 | +# | ||
| 3676 | +# Self-contained MTD device drivers | ||
| 3677 | +# | ||
| 3678 | +# CONFIG_MTD_PMC551 is not set | ||
| 3679 | +# CONFIG_MTD_SLRAM is not set | ||
| 3680 | +# CONFIG_MTD_PHRAM is not set | ||
| 3681 | +# CONFIG_MTD_MTDRAM is not set | ||
| 3682 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 3683 | + | ||
| 3684 | +# | ||
| 3685 | +# Disk-On-Chip Device Drivers | ||
| 3686 | +# | ||
| 3687 | +# CONFIG_MTD_DOC2000 is not set | ||
| 3688 | +# CONFIG_MTD_DOC2001 is not set | ||
| 3689 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 3690 | +CONFIG_MTD_NAND_ECC=y | ||
| 3691 | +# CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 3692 | +CONFIG_MTD_NAND=y | ||
| 3693 | +# CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 3694 | +# CONFIG_MTD_SM_COMMON is not set | ||
| 3695 | +# CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 3696 | +# CONFIG_MTD_NAND_DENALI is not set | ||
| 3697 | +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
| 3698 | +CONFIG_MTD_NAND_IDS=y | ||
| 3699 | +# CONFIG_MTD_NAND_RICOH is not set | ||
| 3700 | +# CONFIG_MTD_NAND_NDFC is not set | ||
| 3701 | +# CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 3702 | +# CONFIG_MTD_NAND_CAFE is not set | ||
| 3703 | +# CONFIG_MTD_NAND_NANDSIM is not set | ||
| 3704 | +CONFIG_MTD_NAND_PLATFORM=y | ||
| 3705 | +# CONFIG_MTD_ALAUDA is not set | ||
| 3706 | +# CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 3707 | +# CONFIG_MTD_ONENAND is not set | ||
| 3708 | + | ||
| 3709 | +# | ||
| 3710 | +# LPDDR flash memory drivers | ||
| 3711 | +# | ||
| 3712 | +# CONFIG_MTD_LPDDR is not set | ||
| 3713 | + | ||
| 3714 | +# | ||
| 3715 | +# UBI - Unsorted block images | ||
| 3716 | +# | ||
| 3717 | +# CONFIG_MTD_UBI is not set | ||
| 3718 | +CONFIG_OF_FLATTREE=y | ||
| 3719 | +CONFIG_OF_DYNAMIC=y | ||
| 3720 | +CONFIG_OF_DEVICE=y | ||
| 3721 | +# CONFIG_PARPORT is not set | ||
| 3722 | +CONFIG_BLK_DEV=y | ||
| 3723 | +# CONFIG_BLK_DEV_FD is not set | ||
| 3724 | +# CONFIG_BLK_CPQ_DA is not set | ||
| 3725 | +# CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 3726 | +# CONFIG_BLK_DEV_DAC960 is not set | ||
| 3727 | +# CONFIG_BLK_DEV_UMEM is not set | ||
| 3728 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 3729 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 3730 | + | ||
| 3731 | +# | ||
| 3732 | +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 3733 | +# | ||
| 3734 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 3735 | +# CONFIG_BLK_DEV_SX8 is not set | ||
| 3736 | +CONFIG_BLK_DEV_UB=y | ||
| 3737 | +CONFIG_BLK_DEV_RAM=y | ||
| 3738 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 3739 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 3740 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 3741 | +# CONFIG_BLK_DEV_ISS is not set | ||
| 3742 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 3743 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 3744 | +# CONFIG_XILINX_SYSACE is not set | ||
| 3745 | +# CONFIG_BLK_DEV_HD is not set | ||
| 3746 | +CONFIG_MISC_DEVICES=y | ||
| 3747 | +# CONFIG_PHANTOM is not set | ||
| 3748 | +# CONFIG_SGI_IOC4 is not set | ||
| 3749 | +# CONFIG_TIFM_CORE is not set | ||
| 3750 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 3751 | +# CONFIG_HP_ILO is not set | ||
| 3752 | +# CONFIG_C2PORT is not set | ||
| 3753 | + | ||
| 3754 | +# | ||
| 3755 | +# EEPROM support | ||
| 3756 | +# | ||
| 3757 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 3758 | +# CONFIG_CB710_CORE is not set | ||
| 3759 | +CONFIG_HAVE_IDE=y | ||
| 3760 | +# CONFIG_IDE is not set | ||
| 3761 | + | ||
| 3762 | +# | ||
| 3763 | +# SCSI device support | ||
| 3764 | +# | ||
| 3765 | +CONFIG_SCSI_MOD=y | ||
| 3766 | +# CONFIG_RAID_ATTRS is not set | ||
| 3767 | +CONFIG_SCSI=y | ||
| 3768 | +CONFIG_SCSI_DMA=y | ||
| 3769 | +CONFIG_SCSI_TGT=y | ||
| 3770 | +# CONFIG_SCSI_NETLINK is not set | ||
| 3771 | +CONFIG_SCSI_PROC_FS=y | ||
| 3772 | + | ||
| 3773 | +# | ||
| 3774 | +# SCSI support type (disk, tape, CD-ROM) | ||
| 3775 | +# | ||
| 3776 | +CONFIG_BLK_DEV_SD=y | ||
| 3777 | +# CONFIG_CHR_DEV_ST is not set | ||
| 3778 | +# CONFIG_CHR_DEV_OSST is not set | ||
| 3779 | +# CONFIG_BLK_DEV_SR is not set | ||
| 3780 | +# CONFIG_CHR_DEV_SG is not set | ||
| 3781 | +# CONFIG_CHR_DEV_SCH is not set | ||
| 3782 | +# CONFIG_SCSI_MULTI_LUN is not set | ||
| 3783 | +CONFIG_SCSI_CONSTANTS=y | ||
| 3784 | +# CONFIG_SCSI_LOGGING is not set | ||
| 3785 | +# CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 3786 | +CONFIG_SCSI_WAIT_SCAN=m | ||
| 3787 | + | ||
| 3788 | +# | ||
| 3789 | +# SCSI Transports | ||
| 3790 | +# | ||
| 3791 | +# CONFIG_SCSI_SPI_ATTRS is not set | ||
| 3792 | +# CONFIG_SCSI_FC_ATTRS is not set | ||
| 3793 | +# CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 3794 | +# CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 3795 | +# CONFIG_SCSI_SRP_ATTRS is not set | ||
| 3796 | +CONFIG_SCSI_LOWLEVEL=y | ||
| 3797 | +# CONFIG_ISCSI_TCP is not set | ||
| 3798 | +# CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 3799 | +# CONFIG_BE2ISCSI is not set | ||
| 3800 | +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 3801 | +# CONFIG_SCSI_HPSA is not set | ||
| 3802 | +# CONFIG_SCSI_3W_9XXX is not set | ||
| 3803 | +# CONFIG_SCSI_3W_SAS is not set | ||
| 3804 | +# CONFIG_SCSI_ACARD is not set | ||
| 3805 | +# CONFIG_SCSI_AACRAID is not set | ||
| 3806 | +# CONFIG_SCSI_AIC7XXX is not set | ||
| 3807 | +# CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 3808 | +# CONFIG_SCSI_AIC79XX is not set | ||
| 3809 | +# CONFIG_SCSI_AIC94XX is not set | ||
| 3810 | +# CONFIG_SCSI_MVSAS is not set | ||
| 3811 | +# CONFIG_SCSI_DPT_I2O is not set | ||
| 3812 | +# CONFIG_SCSI_ADVANSYS is not set | ||
| 3813 | +# CONFIG_SCSI_ARCMSR is not set | ||
| 3814 | +# CONFIG_MEGARAID_NEWGEN is not set | ||
| 3815 | +# CONFIG_MEGARAID_LEGACY is not set | ||
| 3816 | +# CONFIG_MEGARAID_SAS is not set | ||
| 3817 | +# CONFIG_SCSI_MPT2SAS is not set | ||
| 3818 | +# CONFIG_SCSI_HPTIOP is not set | ||
| 3819 | +# CONFIG_SCSI_BUSLOGIC is not set | ||
| 3820 | +# CONFIG_LIBFC is not set | ||
| 3821 | +# CONFIG_LIBFCOE is not set | ||
| 3822 | +# CONFIG_FCOE is not set | ||
| 3823 | +# CONFIG_SCSI_DMX3191D is not set | ||
| 3824 | +# CONFIG_SCSI_EATA is not set | ||
| 3825 | +# CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 3826 | +# CONFIG_SCSI_GDTH is not set | ||
| 3827 | +# CONFIG_SCSI_IPS is not set | ||
| 3828 | +# CONFIG_SCSI_INITIO is not set | ||
| 3829 | +# CONFIG_SCSI_INIA100 is not set | ||
| 3830 | +# CONFIG_SCSI_STEX is not set | ||
| 3831 | +# CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 3832 | +# CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 3833 | +# CONFIG_SCSI_QLA_FC is not set | ||
| 3834 | +# CONFIG_SCSI_QLA_ISCSI is not set | ||
| 3835 | +# CONFIG_SCSI_LPFC is not set | ||
| 3836 | +# CONFIG_SCSI_DC395x is not set | ||
| 3837 | +# CONFIG_SCSI_DC390T is not set | ||
| 3838 | +# CONFIG_SCSI_NSP32 is not set | ||
| 3839 | +# CONFIG_SCSI_DEBUG is not set | ||
| 3840 | +# CONFIG_SCSI_PMCRAID is not set | ||
| 3841 | +# CONFIG_SCSI_PM8001 is not set | ||
| 3842 | +# CONFIG_SCSI_SRP is not set | ||
| 3843 | +# CONFIG_SCSI_BFA_FC is not set | ||
| 3844 | +# CONFIG_SCSI_DH is not set | ||
| 3845 | +# CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 3846 | +# CONFIG_ATA is not set | ||
| 3847 | +CONFIG_MD=y | ||
| 3848 | +CONFIG_BLK_DEV_MD=y | ||
| 3849 | +CONFIG_MD_AUTODETECT=y | ||
| 3850 | +CONFIG_MD_LINEAR=y | ||
| 3851 | +CONFIG_MD_RAID0=y | ||
| 3852 | +CONFIG_MD_RAID1=y | ||
| 3853 | +CONFIG_MD_RAID10=y | ||
| 3854 | +# CONFIG_MD_RAID456 is not set | ||
| 3855 | +CONFIG_MD_MULTIPATH=y | ||
| 3856 | +CONFIG_MD_FAULTY=y | ||
| 3857 | +CONFIG_BLK_DEV_DM=y | ||
| 3858 | +# CONFIG_DM_DEBUG is not set | ||
| 3859 | +CONFIG_DM_CRYPT=y | ||
| 3860 | +CONFIG_DM_SNAPSHOT=y | ||
| 3861 | +CONFIG_DM_MIRROR=y | ||
| 3862 | +# CONFIG_DM_LOG_USERSPACE is not set | ||
| 3863 | +CONFIG_DM_ZERO=y | ||
| 3864 | +# CONFIG_DM_MULTIPATH is not set | ||
| 3865 | +# CONFIG_DM_DELAY is not set | ||
| 3866 | +# CONFIG_DM_UEVENT is not set | ||
| 3867 | +# CONFIG_FUSION is not set | ||
| 3868 | + | ||
| 3869 | +# | ||
| 3870 | +# IEEE 1394 (FireWire) support | ||
| 3871 | +# | ||
| 3872 | + | ||
| 3873 | +# | ||
| 3874 | +# You can enable one or both FireWire driver stacks. | ||
| 3875 | +# | ||
| 3876 | + | ||
| 3877 | +# | ||
| 3878 | +# The newer stack is recommended. | ||
| 3879 | +# | ||
| 3880 | +# CONFIG_FIREWIRE is not set | ||
| 3881 | +# CONFIG_IEEE1394 is not set | ||
| 3882 | +# CONFIG_I2O is not set | ||
| 3883 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 3884 | +CONFIG_NETDEVICES=y | ||
| 3885 | +CONFIG_DUMMY=y | ||
| 3886 | +# CONFIG_BONDING is not set | ||
| 3887 | +# CONFIG_MACVLAN is not set | ||
| 3888 | +# CONFIG_EQUALIZER is not set | ||
| 3889 | +CONFIG_TUN=y | ||
| 3890 | +# CONFIG_VETH is not set | ||
| 3891 | +# CONFIG_ARCNET is not set | ||
| 3892 | +# CONFIG_PHYLIB is not set | ||
| 3893 | +CONFIG_NET_ETHERNET=y | ||
| 3894 | +CONFIG_MII=y | ||
| 3895 | +# CONFIG_HAPPYMEAL is not set | ||
| 3896 | +# CONFIG_SUNGEM is not set | ||
| 3897 | +# CONFIG_CASSINI is not set | ||
| 3898 | +# CONFIG_NET_VENDOR_3COM is not set | ||
| 3899 | +# CONFIG_ETHOC is not set | ||
| 3900 | +# CONFIG_DNET is not set | ||
| 3901 | +# CONFIG_NET_TULIP is not set | ||
| 3902 | +# CONFIG_HP100 is not set | ||
| 3903 | +# CONFIG_IBM_NEW_EMAC is not set | ||
| 3904 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 3905 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 3906 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 3907 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 3908 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 3909 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 3910 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 3911 | +# CONFIG_NET_PCI is not set | ||
| 3912 | +# CONFIG_B44 is not set | ||
| 3913 | +# CONFIG_KS8842 is not set | ||
| 3914 | +# CONFIG_KS8851_MLL is not set | ||
| 3915 | +# CONFIG_ATL2 is not set | ||
| 3916 | +# CONFIG_XILINX_EMACLITE is not set | ||
| 3917 | +CONFIG_NETDEV_1000=y | ||
| 3918 | +# CONFIG_ACENIC is not set | ||
| 3919 | +# CONFIG_DL2K is not set | ||
| 3920 | +CONFIG_E1000=y | ||
| 3921 | +CONFIG_E1000E=y | ||
| 3922 | +# CONFIG_IP1000 is not set | ||
| 3923 | +CONFIG_IGB=y | ||
| 3924 | +CONFIG_IGBVF=y | ||
| 3925 | +# CONFIG_NS83820 is not set | ||
| 3926 | +# CONFIG_HAMACHI is not set | ||
| 3927 | +# CONFIG_YELLOWFIN is not set | ||
| 3928 | +# CONFIG_R8169 is not set | ||
| 3929 | +# CONFIG_SIS190 is not set | ||
| 3930 | +# CONFIG_SKGE is not set | ||
| 3931 | +# CONFIG_SKY2 is not set | ||
| 3932 | +# CONFIG_VIA_VELOCITY is not set | ||
| 3933 | +# CONFIG_TIGON3 is not set | ||
| 3934 | +# CONFIG_BNX2 is not set | ||
| 3935 | +# CONFIG_CNIC is not set | ||
| 3936 | +# CONFIG_MV643XX_ETH is not set | ||
| 3937 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 3938 | +# CONFIG_QLA3XXX is not set | ||
| 3939 | +# CONFIG_ATL1 is not set | ||
| 3940 | +# CONFIG_ATL1E is not set | ||
| 3941 | +# CONFIG_ATL1C is not set | ||
| 3942 | +# CONFIG_JME is not set | ||
| 3943 | +# CONFIG_NETDEV_10000 is not set | ||
| 3944 | +# CONFIG_TR is not set | ||
| 3945 | +CONFIG_WLAN=y | ||
| 3946 | +# CONFIG_AIRO is not set | ||
| 3947 | +# CONFIG_ATMEL is not set | ||
| 3948 | +# CONFIG_PRISM54 is not set | ||
| 3949 | +CONFIG_USB_ZD1201=y | ||
| 3950 | +# CONFIG_HOSTAP is not set | ||
| 3951 | + | ||
| 3952 | +# | ||
| 3953 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 3954 | +# | ||
| 3955 | + | ||
| 3956 | +# | ||
| 3957 | +# USB Network Adapters | ||
| 3958 | +# | ||
| 3959 | +# CONFIG_USB_CATC is not set | ||
| 3960 | +# CONFIG_USB_KAWETH is not set | ||
| 3961 | +# CONFIG_USB_PEGASUS is not set | ||
| 3962 | +# CONFIG_USB_RTL8150 is not set | ||
| 3963 | +# CONFIG_USB_USBNET is not set | ||
| 3964 | +# CONFIG_USB_IPHETH is not set | ||
| 3965 | +# CONFIG_WAN is not set | ||
| 3966 | +# CONFIG_RIONET is not set | ||
| 3967 | +# CONFIG_FDDI is not set | ||
| 3968 | +# CONFIG_HIPPI is not set | ||
| 3969 | +CONFIG_PPP=m | ||
| 3970 | +CONFIG_PPP_MULTILINK=y | ||
| 3971 | +CONFIG_PPP_FILTER=y | ||
| 3972 | +CONFIG_PPP_ASYNC=m | ||
| 3973 | +CONFIG_PPP_SYNC_TTY=m | ||
| 3974 | +CONFIG_PPP_DEFLATE=m | ||
| 3975 | +CONFIG_PPP_BSDCOMP=m | ||
| 3976 | +# CONFIG_PPP_MPPE is not set | ||
| 3977 | +CONFIG_PPPOE=m | ||
| 3978 | +CONFIG_SLIP=m | ||
| 3979 | +CONFIG_SLIP_COMPRESSED=y | ||
| 3980 | +CONFIG_SLHC=m | ||
| 3981 | +CONFIG_SLIP_SMART=y | ||
| 3982 | +CONFIG_SLIP_MODE_SLIP6=y | ||
| 3983 | +# CONFIG_NET_FC is not set | ||
| 3984 | +CONFIG_NETCONSOLE=y | ||
| 3985 | +# CONFIG_NETCONSOLE_DYNAMIC is not set | ||
| 3986 | +CONFIG_NETPOLL=y | ||
| 3987 | +CONFIG_NETPOLL_TRAP=y | ||
| 3988 | +CONFIG_NET_POLL_CONTROLLER=y | ||
| 3989 | +# CONFIG_VMXNET3 is not set | ||
| 3990 | +# CONFIG_ISDN is not set | ||
| 3991 | +# CONFIG_PHONE is not set | ||
| 3992 | + | ||
| 3993 | +# | ||
| 3994 | +# Input device support | ||
| 3995 | +# | ||
| 3996 | +CONFIG_INPUT=y | ||
| 3997 | +# CONFIG_INPUT_FF_MEMLESS is not set | ||
| 3998 | +# CONFIG_INPUT_POLLDEV is not set | ||
| 3999 | +# CONFIG_INPUT_SPARSEKMAP is not set | ||
| 4000 | + | ||
| 4001 | +# | ||
| 4002 | +# Userland interfaces | ||
| 4003 | +# | ||
| 4004 | +CONFIG_INPUT_MOUSEDEV=y | ||
| 4005 | +CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 4006 | +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 4007 | +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 4008 | +# CONFIG_INPUT_JOYDEV is not set | ||
| 4009 | +# CONFIG_INPUT_EVDEV is not set | ||
| 4010 | +# CONFIG_INPUT_EVBUG is not set | ||
| 4011 | + | ||
| 4012 | +# | ||
| 4013 | +# Input Device Drivers | ||
| 4014 | +# | ||
| 4015 | +# CONFIG_INPUT_KEYBOARD is not set | ||
| 4016 | +# CONFIG_INPUT_MOUSE is not set | ||
| 4017 | +# CONFIG_INPUT_JOYSTICK is not set | ||
| 4018 | +# CONFIG_INPUT_TABLET is not set | ||
| 4019 | +# CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 4020 | +# CONFIG_INPUT_MISC is not set | ||
| 4021 | + | ||
| 4022 | +# | ||
| 4023 | +# Hardware I/O ports | ||
| 4024 | +# | ||
| 4025 | +CONFIG_SERIO=y | ||
| 4026 | +CONFIG_SERIO_I8042=y | ||
| 4027 | +CONFIG_SERIO_SERPORT=y | ||
| 4028 | +# CONFIG_SERIO_PCIPS2 is not set | ||
| 4029 | +CONFIG_SERIO_LIBPS2=y | ||
| 4030 | +# CONFIG_SERIO_RAW is not set | ||
| 4031 | +# CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 4032 | +# CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 4033 | +# CONFIG_GAMEPORT is not set | ||
| 4034 | + | ||
| 4035 | +# | ||
| 4036 | +# Character devices | ||
| 4037 | +# | ||
| 4038 | +CONFIG_VT=y | ||
| 4039 | +CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 4040 | +CONFIG_VT_CONSOLE=y | ||
| 4041 | +CONFIG_HW_CONSOLE=y | ||
| 4042 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 4043 | +CONFIG_DEVKMEM=y | ||
| 4044 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 4045 | +CONFIG_N_GSM=y | ||
| 4046 | +# CONFIG_NOZOMI is not set | ||
| 4047 | + | ||
| 4048 | +# | ||
| 4049 | +# Serial drivers | ||
| 4050 | +# | ||
| 4051 | +# CONFIG_SERIAL_8250 is not set | ||
| 4052 | + | ||
| 4053 | +# | ||
| 4054 | +# Non-8250 serial port support | ||
| 4055 | +# | ||
| 4056 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 4057 | +CONFIG_SERIAL_CORE=y | ||
| 4058 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 4059 | +# CONFIG_SERIAL_JSM is not set | ||
| 4060 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 4061 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 4062 | +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 4063 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 4064 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 4065 | +CONFIG_UNIX98_PTYS=y | ||
| 4066 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 4067 | +CONFIG_LEGACY_PTYS=y | ||
| 4068 | +CONFIG_LEGACY_PTY_COUNT=20 | ||
| 4069 | +# CONFIG_HVC_UDBG is not set | ||
| 4070 | +# CONFIG_IPMI_HANDLER is not set | ||
| 4071 | +# CONFIG_HW_RANDOM is not set | ||
| 4072 | +# CONFIG_NVRAM is not set | ||
| 4073 | +# CONFIG_GEN_RTC is not set | ||
| 4074 | +# CONFIG_R3964 is not set | ||
| 4075 | +# CONFIG_APPLICOM is not set | ||
| 4076 | +# CONFIG_RAW_DRIVER is not set | ||
| 4077 | +# CONFIG_TCG_TPM is not set | ||
| 4078 | +CONFIG_DEVPORT=y | ||
| 4079 | +# CONFIG_RAMOOPS is not set | ||
| 4080 | +# CONFIG_I2C is not set | ||
| 4081 | +# CONFIG_SPI is not set | ||
| 4082 | + | ||
| 4083 | +# | ||
| 4084 | +# PPS support | ||
| 4085 | +# | ||
| 4086 | +# CONFIG_PPS is not set | ||
| 4087 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 4088 | +# CONFIG_GPIOLIB is not set | ||
| 4089 | +# CONFIG_W1 is not set | ||
| 4090 | +# CONFIG_POWER_SUPPLY is not set | ||
| 4091 | +# CONFIG_HWMON is not set | ||
| 4092 | +CONFIG_THERMAL=y | ||
| 4093 | +# CONFIG_WATCHDOG is not set | ||
| 4094 | +CONFIG_SSB_POSSIBLE=y | ||
| 4095 | + | ||
| 4096 | +# | ||
| 4097 | +# Sonics Silicon Backplane | ||
| 4098 | +# | ||
| 4099 | +# CONFIG_SSB is not set | ||
| 4100 | +# CONFIG_MFD_SUPPORT is not set | ||
| 4101 | +# CONFIG_REGULATOR is not set | ||
| 4102 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 4103 | + | ||
| 4104 | +# | ||
| 4105 | +# Graphics support | ||
| 4106 | +# | ||
| 4107 | +# CONFIG_AGP is not set | ||
| 4108 | +# CONFIG_VGA_ARB is not set | ||
| 4109 | +# CONFIG_DRM is not set | ||
| 4110 | +# CONFIG_VGASTATE is not set | ||
| 4111 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 4112 | +# CONFIG_FB is not set | ||
| 4113 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 4114 | + | ||
| 4115 | +# | ||
| 4116 | +# Display device support | ||
| 4117 | +# | ||
| 4118 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 4119 | + | ||
| 4120 | +# | ||
| 4121 | +# Console display driver support | ||
| 4122 | +# | ||
| 4123 | +CONFIG_DUMMY_CONSOLE=y | ||
| 4124 | +# CONFIG_SOUND is not set | ||
| 4125 | +CONFIG_HID_SUPPORT=y | ||
| 4126 | +CONFIG_HID=y | ||
| 4127 | +CONFIG_HIDRAW=y | ||
| 4128 | + | ||
| 4129 | +# | ||
| 4130 | +# USB Input Devices | ||
| 4131 | +# | ||
| 4132 | +CONFIG_USB_HID=y | ||
| 4133 | +CONFIG_HID_PID=y | ||
| 4134 | +CONFIG_USB_HIDDEV=y | ||
| 4135 | + | ||
| 4136 | +# | ||
| 4137 | +# Special HID drivers | ||
| 4138 | +# | ||
| 4139 | +CONFIG_HID_3M_PCT=y | ||
| 4140 | +CONFIG_HID_A4TECH=y | ||
| 4141 | +CONFIG_HID_APPLE=y | ||
| 4142 | +# CONFIG_HID_BELKIN is not set | ||
| 4143 | +# CONFIG_HID_CANDO is not set | ||
| 4144 | +# CONFIG_HID_CHERRY is not set | ||
| 4145 | +# CONFIG_HID_CHICONY is not set | ||
| 4146 | +# CONFIG_HID_CYPRESS is not set | ||
| 4147 | +# CONFIG_HID_DRAGONRISE is not set | ||
| 4148 | +# CONFIG_HID_EGALAX is not set | ||
| 4149 | +# CONFIG_HID_EZKEY is not set | ||
| 4150 | +# CONFIG_HID_KYE is not set | ||
| 4151 | +# CONFIG_HID_GYRATION is not set | ||
| 4152 | +# CONFIG_HID_TWINHAN is not set | ||
| 4153 | +# CONFIG_HID_KENSINGTON is not set | ||
| 4154 | +# CONFIG_HID_LOGITECH is not set | ||
| 4155 | +# CONFIG_HID_MICROSOFT is not set | ||
| 4156 | +# CONFIG_HID_MOSART is not set | ||
| 4157 | +# CONFIG_HID_MONTEREY is not set | ||
| 4158 | +# CONFIG_HID_NTRIG is not set | ||
| 4159 | +# CONFIG_HID_ORTEK is not set | ||
| 4160 | +# CONFIG_HID_PANTHERLORD is not set | ||
| 4161 | +# CONFIG_HID_PETALYNX is not set | ||
| 4162 | +# CONFIG_HID_PICOLCD is not set | ||
| 4163 | +# CONFIG_HID_QUANTA is not set | ||
| 4164 | +# CONFIG_HID_ROCCAT is not set | ||
| 4165 | +# CONFIG_HID_ROCCAT_KONE is not set | ||
| 4166 | +# CONFIG_HID_SAMSUNG is not set | ||
| 4167 | +# CONFIG_HID_SONY is not set | ||
| 4168 | +# CONFIG_HID_STANTUM is not set | ||
| 4169 | +# CONFIG_HID_SUNPLUS is not set | ||
| 4170 | +# CONFIG_HID_GREENASIA is not set | ||
| 4171 | +# CONFIG_HID_SMARTJOYPLUS is not set | ||
| 4172 | +# CONFIG_HID_TOPSEED is not set | ||
| 4173 | +# CONFIG_HID_THRUSTMASTER is not set | ||
| 4174 | +# CONFIG_HID_ZEROPLUS is not set | ||
| 4175 | +# CONFIG_HID_ZYDACRON is not set | ||
| 4176 | +CONFIG_USB_SUPPORT=y | ||
| 4177 | +CONFIG_USB_ARCH_HAS_HCD=y | ||
| 4178 | +CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 4179 | +CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 4180 | +CONFIG_USB=y | ||
| 4181 | +# CONFIG_USB_DEBUG is not set | ||
| 4182 | +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
| 4183 | + | ||
| 4184 | +# | ||
| 4185 | +# Miscellaneous USB options | ||
| 4186 | +# | ||
| 4187 | +CONFIG_USB_DEVICEFS=y | ||
| 4188 | +CONFIG_USB_DEVICE_CLASS=y | ||
| 4189 | +CONFIG_USB_DYNAMIC_MINORS=y | ||
| 4190 | +# CONFIG_USB_OTG_WHITELIST is not set | ||
| 4191 | +# CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 4192 | +CONFIG_USB_MON=y | ||
| 4193 | +# CONFIG_USB_WUSB is not set | ||
| 4194 | +# CONFIG_USB_WUSB_CBAF is not set | ||
| 4195 | + | ||
| 4196 | +# | ||
| 4197 | +# USB Host Controller Drivers | ||
| 4198 | +# | ||
| 4199 | +# CONFIG_USB_C67X00_HCD is not set | ||
| 4200 | +# CONFIG_USB_XHCI_HCD is not set | ||
| 4201 | +CONFIG_USB_EHCI_HCD=y | ||
| 4202 | +CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 4203 | +# CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 4204 | +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
| 4205 | +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y | ||
| 4206 | +CONFIG_XPS_USB_HCD_XILINX=y | ||
| 4207 | +# CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
| 4208 | +# CONFIG_USB_OXU210HP_HCD is not set | ||
| 4209 | +CONFIG_USB_CI13612_HCD=y | ||
| 4210 | +# CONFIG_USB_ISP116X_HCD is not set | ||
| 4211 | +# CONFIG_USB_ISP1760_HCD is not set | ||
| 4212 | +# CONFIG_USB_ISP1362_HCD is not set | ||
| 4213 | +# CONFIG_USB_OHCI_HCD is not set | ||
| 4214 | +# CONFIG_USB_UHCI_HCD is not set | ||
| 4215 | +# CONFIG_USB_SL811_HCD is not set | ||
| 4216 | +# CONFIG_USB_R8A66597_HCD is not set | ||
| 4217 | +# CONFIG_USB_WHCI_HCD is not set | ||
| 4218 | +# CONFIG_USB_HWA_HCD is not set | ||
| 4219 | + | ||
| 4220 | +# | ||
| 4221 | +# USB Device Class drivers | ||
| 4222 | +# | ||
| 4223 | +# CONFIG_USB_ACM is not set | ||
| 4224 | +# CONFIG_USB_PRINTER is not set | ||
| 4225 | +# CONFIG_USB_WDM is not set | ||
| 4226 | +# CONFIG_USB_TMC is not set | ||
| 4227 | + | ||
| 4228 | +# | ||
| 4229 | +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 4230 | +# | ||
| 4231 | + | ||
| 4232 | +# | ||
| 4233 | +# also be needed; see USB_STORAGE Help for more info | ||
| 4234 | +# | ||
| 4235 | +CONFIG_USB_STORAGE=y | ||
| 4236 | +# CONFIG_USB_STORAGE_DEBUG is not set | ||
| 4237 | +# CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 4238 | +# CONFIG_USB_STORAGE_FREECOM is not set | ||
| 4239 | +# CONFIG_USB_STORAGE_ISD200 is not set | ||
| 4240 | +# CONFIG_USB_STORAGE_USBAT is not set | ||
| 4241 | +# CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 4242 | +# CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 4243 | +# CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 4244 | +# CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 4245 | +# CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 4246 | +# CONFIG_USB_STORAGE_KARMA is not set | ||
| 4247 | +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 4248 | +CONFIG_USB_LIBUSUAL=y | ||
| 4249 | + | ||
| 4250 | +# | ||
| 4251 | +# USB Imaging devices | ||
| 4252 | +# | ||
| 4253 | +# CONFIG_USB_MDC800 is not set | ||
| 4254 | +# CONFIG_USB_MICROTEK is not set | ||
| 4255 | + | ||
| 4256 | +# | ||
| 4257 | +# USB port drivers | ||
| 4258 | +# | ||
| 4259 | +# CONFIG_USB_SERIAL is not set | ||
| 4260 | + | ||
| 4261 | +# | ||
| 4262 | +# USB Miscellaneous drivers | ||
| 4263 | +# | ||
| 4264 | +# CONFIG_USB_EMI62 is not set | ||
| 4265 | +# CONFIG_USB_EMI26 is not set | ||
| 4266 | +# CONFIG_USB_ADUTUX is not set | ||
| 4267 | +# CONFIG_USB_SEVSEG is not set | ||
| 4268 | +# CONFIG_USB_RIO500 is not set | ||
| 4269 | +# CONFIG_USB_LEGOTOWER is not set | ||
| 4270 | +# CONFIG_USB_LCD is not set | ||
| 4271 | +# CONFIG_USB_LED is not set | ||
| 4272 | +# CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 4273 | +# CONFIG_USB_CYTHERM is not set | ||
| 4274 | +# CONFIG_USB_IDMOUSE is not set | ||
| 4275 | +# CONFIG_USB_FTDI_ELAN is not set | ||
| 4276 | +# CONFIG_USB_APPLEDISPLAY is not set | ||
| 4277 | +# CONFIG_USB_SISUSBVGA is not set | ||
| 4278 | +# CONFIG_USB_LD is not set | ||
| 4279 | +# CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 4280 | +# CONFIG_USB_IOWARRIOR is not set | ||
| 4281 | +# CONFIG_USB_TEST is not set | ||
| 4282 | +# CONFIG_USB_ISIGHTFW is not set | ||
| 4283 | +# CONFIG_USB_GADGET is not set | ||
| 4284 | + | ||
| 4285 | +# | ||
| 4286 | +# OTG and related infrastructure | ||
| 4287 | +# | ||
| 4288 | +# CONFIG_NOP_USB_XCEIV is not set | ||
| 4289 | +# CONFIG_UWB is not set | ||
| 4290 | +# CONFIG_MMC is not set | ||
| 4291 | +# CONFIG_MEMSTICK is not set | ||
| 4292 | +# CONFIG_NEW_LEDS is not set | ||
| 4293 | +# CONFIG_ACCESSIBILITY is not set | ||
| 4294 | +# CONFIG_INFINIBAND is not set | ||
| 4295 | +# CONFIG_EDAC is not set | ||
| 4296 | +# CONFIG_RTC_CLASS is not set | ||
| 4297 | +# CONFIG_DMADEVICES is not set | ||
| 4298 | +# CONFIG_AUXDISPLAY is not set | ||
| 4299 | +# CONFIG_UIO is not set | ||
| 4300 | +# CONFIG_STAGING is not set | ||
| 4301 | + | ||
| 4302 | +# | ||
| 4303 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 4304 | +# | ||
| 4305 | +CONFIG_SERIAL_ACP=y | ||
| 4306 | +CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 4307 | +# CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 4308 | +CONFIG_LSI_NET=y | ||
| 4309 | +CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 4310 | +CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 4311 | +CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 4312 | +CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 4313 | +CONFIG_LSI_NAND=y | ||
| 4314 | +CONFIG_LSI_UBOOTENV=y | ||
| 4315 | +CONFIG_LSI_PLX_PCIE_BRIDGE=y | ||
| 4316 | + | ||
| 4317 | +# | ||
| 4318 | +# File systems | ||
| 4319 | +# | ||
| 4320 | +CONFIG_EXT2_FS=y | ||
| 4321 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 4322 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 4323 | +# CONFIG_EXT3_FS is not set | ||
| 4324 | +# CONFIG_EXT4_FS is not set | ||
| 4325 | +# CONFIG_REISERFS_FS is not set | ||
| 4326 | +# CONFIG_JFS_FS is not set | ||
| 4327 | +CONFIG_FS_POSIX_ACL=y | ||
| 4328 | +# CONFIG_XFS_FS is not set | ||
| 4329 | +# CONFIG_GFS2_FS is not set | ||
| 4330 | +# CONFIG_OCFS2_FS is not set | ||
| 4331 | +# CONFIG_BTRFS_FS is not set | ||
| 4332 | +# CONFIG_NILFS2_FS is not set | ||
| 4333 | +CONFIG_FILE_LOCKING=y | ||
| 4334 | +CONFIG_FSNOTIFY=y | ||
| 4335 | +# CONFIG_DNOTIFY is not set | ||
| 4336 | +CONFIG_INOTIFY=y | ||
| 4337 | +CONFIG_INOTIFY_USER=y | ||
| 4338 | +# CONFIG_QUOTA is not set | ||
| 4339 | +CONFIG_AUTOFS_FS=y | ||
| 4340 | +CONFIG_AUTOFS4_FS=y | ||
| 4341 | +# CONFIG_FUSE_FS is not set | ||
| 4342 | + | ||
| 4343 | +# | ||
| 4344 | +# Caches | ||
| 4345 | +# | ||
| 4346 | +# CONFIG_FSCACHE is not set | ||
| 4347 | + | ||
| 4348 | +# | ||
| 4349 | +# CD-ROM/DVD Filesystems | ||
| 4350 | +# | ||
| 4351 | +# CONFIG_ISO9660_FS is not set | ||
| 4352 | +# CONFIG_UDF_FS is not set | ||
| 4353 | + | ||
| 4354 | +# | ||
| 4355 | +# DOS/FAT/NT Filesystems | ||
| 4356 | +# | ||
| 4357 | +CONFIG_FAT_FS=y | ||
| 4358 | +CONFIG_MSDOS_FS=y | ||
| 4359 | +CONFIG_VFAT_FS=y | ||
| 4360 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 4361 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 4362 | +# CONFIG_NTFS_FS is not set | ||
| 4363 | + | ||
| 4364 | +# | ||
| 4365 | +# Pseudo filesystems | ||
| 4366 | +# | ||
| 4367 | +CONFIG_PROC_FS=y | ||
| 4368 | +# CONFIG_PROC_KCORE is not set | ||
| 4369 | +CONFIG_PROC_SYSCTL=y | ||
| 4370 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 4371 | +CONFIG_SYSFS=y | ||
| 4372 | +CONFIG_TMPFS=y | ||
| 4373 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 4374 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 4375 | +# CONFIG_CONFIGFS_FS is not set | ||
| 4376 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 4377 | +# CONFIG_ADFS_FS is not set | ||
| 4378 | +# CONFIG_AFFS_FS is not set | ||
| 4379 | +# CONFIG_ECRYPT_FS is not set | ||
| 4380 | +# CONFIG_HFS_FS is not set | ||
| 4381 | +# CONFIG_HFSPLUS_FS is not set | ||
| 4382 | +# CONFIG_BEFS_FS is not set | ||
| 4383 | +# CONFIG_BFS_FS is not set | ||
| 4384 | +# CONFIG_EFS_FS is not set | ||
| 4385 | +CONFIG_JFFS2_FS=y | ||
| 4386 | +CONFIG_JFFS2_FS_DEBUG=0 | ||
| 4387 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 4388 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 4389 | +# CONFIG_JFFS2_SUMMARY is not set | ||
| 4390 | +# CONFIG_JFFS2_FS_XATTR is not set | ||
| 4391 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 4392 | +CONFIG_JFFS2_ZLIB=y | ||
| 4393 | +# CONFIG_JFFS2_LZO is not set | ||
| 4394 | +CONFIG_JFFS2_RTIME=y | ||
| 4395 | +# CONFIG_JFFS2_RUBIN is not set | ||
| 4396 | +# CONFIG_LOGFS is not set | ||
| 4397 | +# CONFIG_CRAMFS is not set | ||
| 4398 | +# CONFIG_SQUASHFS is not set | ||
| 4399 | +# CONFIG_VXFS_FS is not set | ||
| 4400 | +# CONFIG_MINIX_FS is not set | ||
| 4401 | +# CONFIG_OMFS_FS is not set | ||
| 4402 | +# CONFIG_HPFS_FS is not set | ||
| 4403 | +# CONFIG_QNX4FS_FS is not set | ||
| 4404 | +# CONFIG_ROMFS_FS is not set | ||
| 4405 | +# CONFIG_SYSV_FS is not set | ||
| 4406 | +# CONFIG_UFS_FS is not set | ||
| 4407 | +CONFIG_NETWORK_FILESYSTEMS=y | ||
| 4408 | +CONFIG_NFS_FS=y | ||
| 4409 | +CONFIG_NFS_V3=y | ||
| 4410 | +CONFIG_NFS_V3_ACL=y | ||
| 4411 | +CONFIG_NFS_V4=y | ||
| 4412 | +# CONFIG_NFS_V4_1 is not set | ||
| 4413 | +CONFIG_ROOT_NFS=y | ||
| 4414 | +# CONFIG_NFSD is not set | ||
| 4415 | +CONFIG_LOCKD=y | ||
| 4416 | +CONFIG_LOCKD_V4=y | ||
| 4417 | +CONFIG_NFS_ACL_SUPPORT=y | ||
| 4418 | +CONFIG_NFS_COMMON=y | ||
| 4419 | +CONFIG_SUNRPC=y | ||
| 4420 | +CONFIG_SUNRPC_GSS=y | ||
| 4421 | +CONFIG_RPCSEC_GSS_KRB5=y | ||
| 4422 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 4423 | +# CONFIG_SMB_FS is not set | ||
| 4424 | +# CONFIG_CEPH_FS is not set | ||
| 4425 | +# CONFIG_CIFS is not set | ||
| 4426 | +# CONFIG_NCP_FS is not set | ||
| 4427 | +# CONFIG_CODA_FS is not set | ||
| 4428 | +# CONFIG_AFS_FS is not set | ||
| 4429 | + | ||
| 4430 | +# | ||
| 4431 | +# Partition Types | ||
| 4432 | +# | ||
| 4433 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 4434 | +CONFIG_MSDOS_PARTITION=y | ||
| 4435 | +CONFIG_NLS=y | ||
| 4436 | +CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 4437 | +CONFIG_NLS_CODEPAGE_437=y | ||
| 4438 | +# CONFIG_NLS_CODEPAGE_737 is not set | ||
| 4439 | +# CONFIG_NLS_CODEPAGE_775 is not set | ||
| 4440 | +CONFIG_NLS_CODEPAGE_850=y | ||
| 4441 | +# CONFIG_NLS_CODEPAGE_852 is not set | ||
| 4442 | +# CONFIG_NLS_CODEPAGE_855 is not set | ||
| 4443 | +# CONFIG_NLS_CODEPAGE_857 is not set | ||
| 4444 | +# CONFIG_NLS_CODEPAGE_860 is not set | ||
| 4445 | +# CONFIG_NLS_CODEPAGE_861 is not set | ||
| 4446 | +# CONFIG_NLS_CODEPAGE_862 is not set | ||
| 4447 | +# CONFIG_NLS_CODEPAGE_863 is not set | ||
| 4448 | +# CONFIG_NLS_CODEPAGE_864 is not set | ||
| 4449 | +CONFIG_NLS_CODEPAGE_865=y | ||
| 4450 | +# CONFIG_NLS_CODEPAGE_866 is not set | ||
| 4451 | +# CONFIG_NLS_CODEPAGE_869 is not set | ||
| 4452 | +# CONFIG_NLS_CODEPAGE_936 is not set | ||
| 4453 | +# CONFIG_NLS_CODEPAGE_950 is not set | ||
| 4454 | +# CONFIG_NLS_CODEPAGE_932 is not set | ||
| 4455 | +# CONFIG_NLS_CODEPAGE_949 is not set | ||
| 4456 | +# CONFIG_NLS_CODEPAGE_874 is not set | ||
| 4457 | +# CONFIG_NLS_ISO8859_8 is not set | ||
| 4458 | +# CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 4459 | +# CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 4460 | +CONFIG_NLS_ASCII=y | ||
| 4461 | +CONFIG_NLS_ISO8859_1=y | ||
| 4462 | +# CONFIG_NLS_ISO8859_2 is not set | ||
| 4463 | +# CONFIG_NLS_ISO8859_3 is not set | ||
| 4464 | +# CONFIG_NLS_ISO8859_4 is not set | ||
| 4465 | +# CONFIG_NLS_ISO8859_5 is not set | ||
| 4466 | +# CONFIG_NLS_ISO8859_6 is not set | ||
| 4467 | +# CONFIG_NLS_ISO8859_7 is not set | ||
| 4468 | +# CONFIG_NLS_ISO8859_9 is not set | ||
| 4469 | +# CONFIG_NLS_ISO8859_13 is not set | ||
| 4470 | +# CONFIG_NLS_ISO8859_14 is not set | ||
| 4471 | +# CONFIG_NLS_ISO8859_15 is not set | ||
| 4472 | +# CONFIG_NLS_KOI8_R is not set | ||
| 4473 | +# CONFIG_NLS_KOI8_U is not set | ||
| 4474 | +# CONFIG_NLS_UTF8 is not set | ||
| 4475 | +# CONFIG_DLM is not set | ||
| 4476 | +# CONFIG_BINARY_PRINTF is not set | ||
| 4477 | + | ||
| 4478 | +# | ||
| 4479 | +# Library routines | ||
| 4480 | +# | ||
| 4481 | +CONFIG_BITREVERSE=y | ||
| 4482 | +CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 4483 | +CONFIG_CRC_CCITT=m | ||
| 4484 | +# CONFIG_CRC16 is not set | ||
| 4485 | +# CONFIG_CRC_T10DIF is not set | ||
| 4486 | +# CONFIG_CRC_ITU_T is not set | ||
| 4487 | +CONFIG_CRC32=y | ||
| 4488 | +# CONFIG_CRC7 is not set | ||
| 4489 | +# CONFIG_LIBCRC32C is not set | ||
| 4490 | +CONFIG_ZLIB_INFLATE=y | ||
| 4491 | +CONFIG_ZLIB_DEFLATE=y | ||
| 4492 | +CONFIG_DECOMPRESS_GZIP=y | ||
| 4493 | +CONFIG_HAS_IOMEM=y | ||
| 4494 | +CONFIG_HAS_IOPORT=y | ||
| 4495 | +CONFIG_HAS_DMA=y | ||
| 4496 | +CONFIG_NLATTR=y | ||
| 4497 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 4498 | + | ||
| 4499 | +# | ||
| 4500 | +# Kernel hacking | ||
| 4501 | +# | ||
| 4502 | +# CONFIG_PRINTK_TIME is not set | ||
| 4503 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 4504 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 4505 | +CONFIG_FRAME_WARN=1024 | ||
| 4506 | +CONFIG_MAGIC_SYSRQ=y | ||
| 4507 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 4508 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 4509 | +CONFIG_DEBUG_FS=y | ||
| 4510 | +# CONFIG_HEADERS_CHECK is not set | ||
| 4511 | +CONFIG_DEBUG_KERNEL=y | ||
| 4512 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 4513 | +# CONFIG_DETECT_SOFTLOCKUP is not set | ||
| 4514 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 4515 | +CONFIG_SCHED_DEBUG=y | ||
| 4516 | +# CONFIG_SCHEDSTATS is not set | ||
| 4517 | +# CONFIG_TIMER_STATS is not set | ||
| 4518 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 4519 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 4520 | +# CONFIG_SLUB_STATS is not set | ||
| 4521 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 4522 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 4523 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 4524 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 4525 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 4526 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 4527 | +# CONFIG_PROVE_LOCKING is not set | ||
| 4528 | +# CONFIG_LOCK_STAT is not set | ||
| 4529 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 4530 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 4531 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 4532 | +# CONFIG_DEBUG_HIGHMEM is not set | ||
| 4533 | +CONFIG_DEBUG_BUGVERBOSE=y | ||
| 4534 | +CONFIG_DEBUG_INFO=y | ||
| 4535 | +# CONFIG_DEBUG_VM is not set | ||
| 4536 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 4537 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 4538 | +# CONFIG_DEBUG_LIST is not set | ||
| 4539 | +# CONFIG_DEBUG_SG is not set | ||
| 4540 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 4541 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 4542 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 4543 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 4544 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 4545 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 4546 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 4547 | +# CONFIG_LKDTM is not set | ||
| 4548 | +# CONFIG_FAULT_INJECTION is not set | ||
| 4549 | +# CONFIG_LATENCYTOP is not set | ||
| 4550 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 4551 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 4552 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 4553 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 4554 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 4555 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 4556 | +CONFIG_RING_BUFFER=y | ||
| 4557 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 4558 | +CONFIG_TRACING_SUPPORT=y | ||
| 4559 | +CONFIG_FTRACE=y | ||
| 4560 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 4561 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 4562 | +# CONFIG_SCHED_TRACER is not set | ||
| 4563 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 4564 | +# CONFIG_BOOT_TRACER is not set | ||
| 4565 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 4566 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 4567 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 4568 | +# CONFIG_STACK_TRACER is not set | ||
| 4569 | +# CONFIG_KMEMTRACE is not set | ||
| 4570 | +# CONFIG_WORKQUEUE_TRACER is not set | ||
| 4571 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 4572 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 4573 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 4574 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 4575 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 4576 | +# CONFIG_SAMPLES is not set | ||
| 4577 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 4578 | +# CONFIG_KGDB is not set | ||
| 4579 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 4580 | +CONFIG_PPC_WERROR=y | ||
| 4581 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 4582 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 4583 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 4584 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 4585 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 4586 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 4587 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 4588 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 4589 | +CONFIG_XMON=y | ||
| 4590 | +CONFIG_XMON_DEFAULT=y | ||
| 4591 | +CONFIG_XMON_DISASSEMBLY=y | ||
| 4592 | +CONFIG_DEBUGGER=y | ||
| 4593 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 4594 | +# CONFIG_BDI_SWITCH is not set | ||
| 4595 | +CONFIG_PPC_EARLY_DEBUG=y | ||
| 4596 | +# CONFIG_PPC_EARLY_DEBUG_LPAR is not set | ||
| 4597 | +# CONFIG_PPC_EARLY_DEBUG_G5 is not set | ||
| 4598 | +# CONFIG_PPC_EARLY_DEBUG_RTAS_PANEL is not set | ||
| 4599 | +# CONFIG_PPC_EARLY_DEBUG_RTAS_CONSOLE is not set | ||
| 4600 | +# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set | ||
| 4601 | +# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set | ||
| 4602 | +# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set | ||
| 4603 | +# CONFIG_PPC_EARLY_DEBUG_BEAT is not set | ||
| 4604 | +CONFIG_PPC_EARLY_DEBUG_44x=y | ||
| 4605 | +# CONFIG_PPC_EARLY_DEBUG_40x is not set | ||
| 4606 | +# CONFIG_PPC_EARLY_DEBUG_CPM is not set | ||
| 4607 | +# CONFIG_PPC_EARLY_DEBUG_USBGECKO is not set | ||
| 4608 | +CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0x00424000 | ||
| 4609 | +CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x20 | ||
| 4610 | + | ||
| 4611 | +# | ||
| 4612 | +# Security options | ||
| 4613 | +# | ||
| 4614 | +CONFIG_KEYS=y | ||
| 4615 | +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 4616 | +# CONFIG_SECURITY is not set | ||
| 4617 | +# CONFIG_SECURITYFS is not set | ||
| 4618 | +# CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 4619 | +# CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 4620 | +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 4621 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 4622 | +CONFIG_DEFAULT_SECURITY="" | ||
| 4623 | +CONFIG_CRYPTO=y | ||
| 4624 | + | ||
| 4625 | +# | ||
| 4626 | +# Crypto core or helper | ||
| 4627 | +# | ||
| 4628 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 4629 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 4630 | +CONFIG_CRYPTO_AEAD=y | ||
| 4631 | +CONFIG_CRYPTO_AEAD2=y | ||
| 4632 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 4633 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 4634 | +CONFIG_CRYPTO_HASH=y | ||
| 4635 | +CONFIG_CRYPTO_HASH2=y | ||
| 4636 | +CONFIG_CRYPTO_RNG=y | ||
| 4637 | +CONFIG_CRYPTO_RNG2=y | ||
| 4638 | +CONFIG_CRYPTO_PCOMP=y | ||
| 4639 | +CONFIG_CRYPTO_MANAGER=y | ||
| 4640 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 4641 | +CONFIG_CRYPTO_GF128MUL=y | ||
| 4642 | +CONFIG_CRYPTO_NULL=y | ||
| 4643 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 4644 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 4645 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 4646 | +CONFIG_CRYPTO_AUTHENC=y | ||
| 4647 | +# CONFIG_CRYPTO_TEST is not set | ||
| 4648 | + | ||
| 4649 | +# | ||
| 4650 | +# Authenticated Encryption with Associated Data | ||
| 4651 | +# | ||
| 4652 | +# CONFIG_CRYPTO_CCM is not set | ||
| 4653 | +CONFIG_CRYPTO_GCM=y | ||
| 4654 | +CONFIG_CRYPTO_SEQIV=y | ||
| 4655 | + | ||
| 4656 | +# | ||
| 4657 | +# Block modes | ||
| 4658 | +# | ||
| 4659 | +CONFIG_CRYPTO_CBC=y | ||
| 4660 | +CONFIG_CRYPTO_CTR=y | ||
| 4661 | +# CONFIG_CRYPTO_CTS is not set | ||
| 4662 | +# CONFIG_CRYPTO_ECB is not set | ||
| 4663 | +# CONFIG_CRYPTO_LRW is not set | ||
| 4664 | +# CONFIG_CRYPTO_PCBC is not set | ||
| 4665 | +# CONFIG_CRYPTO_XTS is not set | ||
| 4666 | + | ||
| 4667 | +# | ||
| 4668 | +# Hash modes | ||
| 4669 | +# | ||
| 4670 | +CONFIG_CRYPTO_HMAC=y | ||
| 4671 | +CONFIG_CRYPTO_XCBC=y | ||
| 4672 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 4673 | + | ||
| 4674 | +# | ||
| 4675 | +# Digest | ||
| 4676 | +# | ||
| 4677 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 4678 | +CONFIG_CRYPTO_GHASH=y | ||
| 4679 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 4680 | +CONFIG_CRYPTO_MD5=y | ||
| 4681 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 4682 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 4683 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 4684 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 4685 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 4686 | +CONFIG_CRYPTO_SHA1=y | ||
| 4687 | +CONFIG_CRYPTO_SHA256=y | ||
| 4688 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 4689 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 4690 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 4691 | + | ||
| 4692 | +# | ||
| 4693 | +# Ciphers | ||
| 4694 | +# | ||
| 4695 | +CONFIG_CRYPTO_AES=y | ||
| 4696 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 4697 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 4698 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 4699 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 4700 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 4701 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 4702 | +CONFIG_CRYPTO_DES=y | ||
| 4703 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 4704 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 4705 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 4706 | +# CONFIG_CRYPTO_SEED is not set | ||
| 4707 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 4708 | +# CONFIG_CRYPTO_TEA is not set | ||
| 4709 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 4710 | + | ||
| 4711 | +# | ||
| 4712 | +# Compression | ||
| 4713 | +# | ||
| 4714 | +CONFIG_CRYPTO_DEFLATE=y | ||
| 4715 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 4716 | +# CONFIG_CRYPTO_LZO is not set | ||
| 4717 | + | ||
| 4718 | +# | ||
| 4719 | +# Random Number Generation | ||
| 4720 | +# | ||
| 4721 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 4722 | +CONFIG_CRYPTO_HW=y | ||
| 4723 | +# CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 4724 | +CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 4725 | +# CONFIG_PPC_CLOCK is not set | ||
| 4726 | +# CONFIG_VIRTUALIZATION is not set | ||
| 4727 | diff --git a/arch/powerpc/configs/acp_defconfig b/arch/powerpc/configs/acp_defconfig | ||
| 4728 | new file mode 100644 | ||
| 4729 | index 0000000..cc35347 | ||
| 4730 | --- /dev/null | ||
| 4731 | +++ b/arch/powerpc/configs/acp_defconfig | ||
| 4732 | @@ -0,0 +1,1641 @@ | ||
| 4733 | +# | ||
| 4734 | +# Automatically generated make config: don't edit | ||
| 4735 | +# Linux kernel version: 2.6.35 | ||
| 4736 | +# Fri Jul 15 11:26:48 2011 | ||
| 4737 | +# | ||
| 4738 | +# CONFIG_PPC64 is not set | ||
| 4739 | + | ||
| 4740 | +# | ||
| 4741 | +# Processor support | ||
| 4742 | +# | ||
| 4743 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 4744 | +# CONFIG_PPC_85xx is not set | ||
| 4745 | +# CONFIG_PPC_8xx is not set | ||
| 4746 | +# CONFIG_40x is not set | ||
| 4747 | +CONFIG_44x=y | ||
| 4748 | +# CONFIG_E200 is not set | ||
| 4749 | +CONFIG_PPC_FPU=y | ||
| 4750 | +CONFIG_4xx=y | ||
| 4751 | +CONFIG_BOOKE=y | ||
| 4752 | +CONFIG_PTE_64BIT=y | ||
| 4753 | +CONFIG_PHYS_64BIT=y | ||
| 4754 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 4755 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 4756 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 4757 | +CONFIG_SMP=y | ||
| 4758 | +CONFIG_NR_CPUS=4 | ||
| 4759 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 4760 | +CONFIG_PPC32=y | ||
| 4761 | +CONFIG_WORD_SIZE=32 | ||
| 4762 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 4763 | +CONFIG_MMU=y | ||
| 4764 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 4765 | +CONFIG_GENERIC_TIME=y | ||
| 4766 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 4767 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 4768 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 4769 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 4770 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 4771 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 4772 | +CONFIG_IRQ_PER_CPU=y | ||
| 4773 | +CONFIG_NR_IRQS=512 | ||
| 4774 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 4775 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 4776 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 4777 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 4778 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 4779 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 4780 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 4781 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 4782 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 4783 | +CONFIG_PPC=y | ||
| 4784 | +CONFIG_EARLY_PRINTK=y | ||
| 4785 | +CONFIG_GENERIC_NVRAM=y | ||
| 4786 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 4787 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 4788 | +CONFIG_PPC_OF=y | ||
| 4789 | +CONFIG_OF=y | ||
| 4790 | +CONFIG_PPC_UDBG_16550=y | ||
| 4791 | +CONFIG_GENERIC_TBSYNC=y | ||
| 4792 | +CONFIG_AUDIT_ARCH=y | ||
| 4793 | +CONFIG_GENERIC_BUG=y | ||
| 4794 | +CONFIG_DTC=y | ||
| 4795 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 4796 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 4797 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 4798 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 4799 | +CONFIG_PPC_DCR=y | ||
| 4800 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 4801 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 4802 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 4803 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 4804 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 4805 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 4806 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 4807 | +CONFIG_CONSTRUCTORS=y | ||
| 4808 | + | ||
| 4809 | +# | ||
| 4810 | +# General setup | ||
| 4811 | +# | ||
| 4812 | +CONFIG_EXPERIMENTAL=y | ||
| 4813 | +CONFIG_LOCK_KERNEL=y | ||
| 4814 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 4815 | +CONFIG_CROSS_COMPILE="powerpc-linux-" | ||
| 4816 | +CONFIG_LOCALVERSION="" | ||
| 4817 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 4818 | +CONFIG_SWAP=y | ||
| 4819 | +CONFIG_SYSVIPC=y | ||
| 4820 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 4821 | +CONFIG_POSIX_MQUEUE=y | ||
| 4822 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 4823 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 4824 | +# CONFIG_TASKSTATS is not set | ||
| 4825 | +# CONFIG_AUDIT is not set | ||
| 4826 | + | ||
| 4827 | +# | ||
| 4828 | +# RCU Subsystem | ||
| 4829 | +# | ||
| 4830 | +CONFIG_TREE_RCU=y | ||
| 4831 | +# CONFIG_TREE_PREEMPT_RCU is not set | ||
| 4832 | +# CONFIG_TINY_RCU is not set | ||
| 4833 | +# CONFIG_RCU_TRACE is not set | ||
| 4834 | +CONFIG_RCU_FANOUT=32 | ||
| 4835 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 4836 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 4837 | +# CONFIG_IKCONFIG is not set | ||
| 4838 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 4839 | +# CONFIG_CGROUPS is not set | ||
| 4840 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 4841 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 4842 | +# CONFIG_RELAY is not set | ||
| 4843 | +# CONFIG_NAMESPACES is not set | ||
| 4844 | +CONFIG_BLK_DEV_INITRD=y | ||
| 4845 | +CONFIG_INITRAMFS_SOURCE="" | ||
| 4846 | +CONFIG_RD_GZIP=y | ||
| 4847 | +# CONFIG_RD_BZIP2 is not set | ||
| 4848 | +# CONFIG_RD_LZMA is not set | ||
| 4849 | +# CONFIG_RD_LZO is not set | ||
| 4850 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 4851 | +CONFIG_SYSCTL=y | ||
| 4852 | +CONFIG_ANON_INODES=y | ||
| 4853 | +CONFIG_EMBEDDED=y | ||
| 4854 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 4855 | +CONFIG_KALLSYMS=y | ||
| 4856 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 4857 | +CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 4858 | +CONFIG_HOTPLUG=y | ||
| 4859 | +CONFIG_PRINTK=y | ||
| 4860 | +CONFIG_BUG=y | ||
| 4861 | +CONFIG_ELF_CORE=y | ||
| 4862 | +CONFIG_BASE_FULL=y | ||
| 4863 | +CONFIG_FUTEX=y | ||
| 4864 | +CONFIG_EPOLL=y | ||
| 4865 | +CONFIG_SIGNALFD=y | ||
| 4866 | +CONFIG_TIMERFD=y | ||
| 4867 | +CONFIG_EVENTFD=y | ||
| 4868 | +CONFIG_SHMEM=y | ||
| 4869 | +CONFIG_AIO=y | ||
| 4870 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 4871 | + | ||
| 4872 | +# | ||
| 4873 | +# Kernel Performance Events And Counters | ||
| 4874 | +# | ||
| 4875 | +# CONFIG_PERF_EVENTS is not set | ||
| 4876 | +# CONFIG_PERF_COUNTERS is not set | ||
| 4877 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 4878 | +CONFIG_PCI_QUIRKS=y | ||
| 4879 | +CONFIG_SLUB_DEBUG=y | ||
| 4880 | +CONFIG_COMPAT_BRK=y | ||
| 4881 | +# CONFIG_SLAB is not set | ||
| 4882 | +CONFIG_SLUB=y | ||
| 4883 | +# CONFIG_SLOB is not set | ||
| 4884 | +CONFIG_PROFILING=y | ||
| 4885 | +CONFIG_OPROFILE=y | ||
| 4886 | +CONFIG_HAVE_OPROFILE=y | ||
| 4887 | +# CONFIG_KPROBES is not set | ||
| 4888 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 4889 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 4890 | +CONFIG_HAVE_KPROBES=y | ||
| 4891 | +CONFIG_HAVE_KRETPROBES=y | ||
| 4892 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 4893 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 4894 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 4895 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 4896 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 4897 | + | ||
| 4898 | +# | ||
| 4899 | +# GCOV-based kernel profiling | ||
| 4900 | +# | ||
| 4901 | +# CONFIG_GCOV_KERNEL is not set | ||
| 4902 | +# CONFIG_SLOW_WORK is not set | ||
| 4903 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 4904 | +CONFIG_SLABINFO=y | ||
| 4905 | +CONFIG_RT_MUTEXES=y | ||
| 4906 | +CONFIG_BASE_SMALL=0 | ||
| 4907 | +CONFIG_MODULES=y | ||
| 4908 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 4909 | +CONFIG_MODULE_UNLOAD=y | ||
| 4910 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 4911 | +CONFIG_MODVERSIONS=y | ||
| 4912 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 4913 | +CONFIG_STOP_MACHINE=y | ||
| 4914 | +CONFIG_BLOCK=y | ||
| 4915 | +CONFIG_LBDAF=y | ||
| 4916 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 4917 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 4918 | + | ||
| 4919 | +# | ||
| 4920 | +# IO Schedulers | ||
| 4921 | +# | ||
| 4922 | +CONFIG_IOSCHED_NOOP=y | ||
| 4923 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 4924 | +CONFIG_IOSCHED_CFQ=y | ||
| 4925 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 4926 | +CONFIG_DEFAULT_CFQ=y | ||
| 4927 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 4928 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 4929 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 4930 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 4931 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 4932 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 4933 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 4934 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 4935 | +CONFIG_INLINE_SPIN_UNLOCK=y | ||
| 4936 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 4937 | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
| 4938 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 4939 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 4940 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 4941 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 4942 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 4943 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 4944 | +CONFIG_INLINE_READ_UNLOCK=y | ||
| 4945 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 4946 | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
| 4947 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 4948 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 4949 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 4950 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 4951 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 4952 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 4953 | +CONFIG_INLINE_WRITE_UNLOCK=y | ||
| 4954 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 4955 | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
| 4956 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 4957 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 4958 | +# CONFIG_FREEZER is not set | ||
| 4959 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 4960 | +CONFIG_PPC_MSI_BITMAP=y | ||
| 4961 | +# CONFIG_RAPIDIO_FSL is not set | ||
| 4962 | + | ||
| 4963 | +# | ||
| 4964 | +# Platform support | ||
| 4965 | +# | ||
| 4966 | +# CONFIG_PPC_CELL is not set | ||
| 4967 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 4968 | +# CONFIG_PQ2ADS is not set | ||
| 4969 | +CONFIG_PPC_47x=y | ||
| 4970 | +# CONFIG_BAMBOO is not set | ||
| 4971 | +# CONFIG_EBONY is not set | ||
| 4972 | +# CONFIG_SAM440EP is not set | ||
| 4973 | +# CONFIG_SEQUOIA is not set | ||
| 4974 | +# CONFIG_TAISHAN is not set | ||
| 4975 | +# CONFIG_KATMAI is not set | ||
| 4976 | +# CONFIG_RAINIER is not set | ||
| 4977 | +# CONFIG_WARP is not set | ||
| 4978 | +# CONFIG_ARCHES is not set | ||
| 4979 | +# CONFIG_CANYONLANDS is not set | ||
| 4980 | +# CONFIG_GLACIER is not set | ||
| 4981 | +# CONFIG_REDWOOD is not set | ||
| 4982 | +# CONFIG_EIGER is not set | ||
| 4983 | +# CONFIG_YOSEMITE is not set | ||
| 4984 | +# CONFIG_ISS4xx is not set | ||
| 4985 | +# CONFIG_ICON is not set | ||
| 4986 | +CONFIG_ACP=y | ||
| 4987 | +# CONFIG_ACPISS is not set | ||
| 4988 | +# CONFIG_ACP_X1V1 is not set | ||
| 4989 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 4990 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 4991 | +# CONFIG_PPC4xx_GPIO is not set | ||
| 4992 | +CONFIG_440GP=y | ||
| 4993 | +# CONFIG_IPIC is not set | ||
| 4994 | +CONFIG_MPIC=y | ||
| 4995 | +# CONFIG_MPIC_WEIRD is not set | ||
| 4996 | +# CONFIG_PPC_I8259 is not set | ||
| 4997 | +# CONFIG_PPC_RTAS is not set | ||
| 4998 | +# CONFIG_MMIO_NVRAM is not set | ||
| 4999 | +# CONFIG_PPC_MPC106 is not set | ||
| 5000 | +# CONFIG_PPC_970_NAP is not set | ||
| 5001 | +# CONFIG_PPC_INDIRECT_IO is not set | ||
| 5002 | +# CONFIG_GENERIC_IOMAP is not set | ||
| 5003 | +# CONFIG_CPU_FREQ is not set | ||
| 5004 | +# CONFIG_FSL_ULI1575 is not set | ||
| 5005 | +# CONFIG_SIMPLE_GPIO is not set | ||
| 5006 | + | ||
| 5007 | +# | ||
| 5008 | +# Kernel options | ||
| 5009 | +# | ||
| 5010 | +CONFIG_HIGHMEM=y | ||
| 5011 | +CONFIG_TICK_ONESHOT=y | ||
| 5012 | +# CONFIG_NO_HZ is not set | ||
| 5013 | +CONFIG_HIGH_RES_TIMERS=y | ||
| 5014 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 5015 | +CONFIG_HZ_100=y | ||
| 5016 | +# CONFIG_HZ_250 is not set | ||
| 5017 | +# CONFIG_HZ_300 is not set | ||
| 5018 | +# CONFIG_HZ_1000 is not set | ||
| 5019 | +CONFIG_HZ=100 | ||
| 5020 | +CONFIG_SCHED_HRTICK=y | ||
| 5021 | +CONFIG_PREEMPT_NONE=y | ||
| 5022 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 5023 | +# CONFIG_PREEMPT is not set | ||
| 5024 | +CONFIG_BINFMT_ELF=y | ||
| 5025 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 5026 | +# CONFIG_HAVE_AOUT is not set | ||
| 5027 | +# CONFIG_BINFMT_MISC is not set | ||
| 5028 | +# CONFIG_MATH_EMULATION is not set | ||
| 5029 | +# CONFIG_IOMMU_HELPER is not set | ||
| 5030 | +# CONFIG_SWIOTLB is not set | ||
| 5031 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 5032 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 5033 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 5034 | +# CONFIG_IRQ_ALL_CPUS is not set | ||
| 5035 | +CONFIG_SPARSE_IRQ=y | ||
| 5036 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 5037 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 5038 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 5039 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 5040 | +CONFIG_FLATMEM_MANUAL=y | ||
| 5041 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 5042 | +# CONFIG_SPARSEMEM_MANUAL is not set | ||
| 5043 | +CONFIG_FLATMEM=y | ||
| 5044 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 5045 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 5046 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 5047 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 5048 | +CONFIG_MIGRATION=y | ||
| 5049 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 5050 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 5051 | +CONFIG_BOUNCE=y | ||
| 5052 | +CONFIG_VIRT_TO_BUS=y | ||
| 5053 | +# CONFIG_KSM is not set | ||
| 5054 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 5055 | +CONFIG_STDBINUTILS=y | ||
| 5056 | +CONFIG_PPC_4K_PAGES=y | ||
| 5057 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 5058 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 5059 | +# CONFIG_PPC_256K_PAGES is not set | ||
| 5060 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 5061 | +# CONFIG_PROC_DEVICETREE is not set | ||
| 5062 | +CONFIG_CMDLINE_BOOL=y | ||
| 5063 | +CONFIG_CMDLINE="console=ttyS0 mtdparts=acp-nand:512K(2ndStage),512K(env-0),512K(env-1),512K(3rdStage),-(fs) ip=dhcp root=/dev/nfs" | ||
| 5064 | +CONFIG_EXTRA_TARGETS="" | ||
| 5065 | +CONFIG_SECCOMP=y | ||
| 5066 | +CONFIG_ISA_DMA_API=y | ||
| 5067 | + | ||
| 5068 | +# | ||
| 5069 | +# Bus options | ||
| 5070 | +# | ||
| 5071 | +CONFIG_ZONE_DMA=y | ||
| 5072 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 5073 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 5074 | +CONFIG_PPC_INDIRECT_PCI=y | ||
| 5075 | +CONFIG_4xx_SOC=y | ||
| 5076 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 5077 | +CONFIG_PCI=y | ||
| 5078 | +CONFIG_PCI_DOMAINS=y | ||
| 5079 | +CONFIG_PCI_SYSCALL=y | ||
| 5080 | +CONFIG_PCIEPORTBUS=y | ||
| 5081 | +# CONFIG_PCIEAER is not set | ||
| 5082 | +CONFIG_PCIEASPM=y | ||
| 5083 | +# CONFIG_PCIEASPM_DEBUG is not set | ||
| 5084 | +CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 5085 | +CONFIG_PCI_MSI=y | ||
| 5086 | +# CONFIG_PCI_DEBUG is not set | ||
| 5087 | +# CONFIG_PCI_STUB is not set | ||
| 5088 | +# CONFIG_PCI_IOV is not set | ||
| 5089 | +# CONFIG_PCCARD is not set | ||
| 5090 | +# CONFIG_HOTPLUG_PCI is not set | ||
| 5091 | +CONFIG_HAS_RAPIDIO=y | ||
| 5092 | +CONFIG_RAPIDIO=y | ||
| 5093 | +CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 5094 | +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 5095 | +# CONFIG_RAPIDIO_ACP is not set | ||
| 5096 | +CONFIG_RAPIDIO_TSI57X=y | ||
| 5097 | +CONFIG_RAPIDIO_CPS_XX=y | ||
| 5098 | +CONFIG_RAPIDIO_TSI568=y | ||
| 5099 | +CONFIG_RAPIDIO_TSI500=y | ||
| 5100 | +CONFIG_RAPIDIO_DEBUG=y | ||
| 5101 | + | ||
| 5102 | +# | ||
| 5103 | +# Advanced setup | ||
| 5104 | +# | ||
| 5105 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 5106 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 5107 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 5108 | +CONFIG_RELOCATABLE=y | ||
| 5109 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 5110 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 5111 | +CONFIG_KERNEL_START_BOOL=y | ||
| 5112 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 5113 | +CONFIG_PHYSICAL_START=0x00000000 | ||
| 5114 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 5115 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 5116 | +CONFIG_NET=y | ||
| 5117 | + | ||
| 5118 | +# | ||
| 5119 | +# Networking options | ||
| 5120 | +# | ||
| 5121 | +CONFIG_PACKET=y | ||
| 5122 | +CONFIG_UNIX=y | ||
| 5123 | +CONFIG_XFRM=y | ||
| 5124 | +CONFIG_XFRM_USER=y | ||
| 5125 | +CONFIG_XFRM_SUB_POLICY=y | ||
| 5126 | +CONFIG_XFRM_MIGRATE=y | ||
| 5127 | +CONFIG_XFRM_STATISTICS=y | ||
| 5128 | +CONFIG_XFRM_IPCOMP=y | ||
| 5129 | +CONFIG_NET_KEY=y | ||
| 5130 | +# CONFIG_NET_KEY_MIGRATE is not set | ||
| 5131 | +CONFIG_INET=y | ||
| 5132 | +CONFIG_IP_MULTICAST=y | ||
| 5133 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 5134 | +CONFIG_IP_FIB_HASH=y | ||
| 5135 | +CONFIG_IP_PNP=y | ||
| 5136 | +CONFIG_IP_PNP_DHCP=y | ||
| 5137 | +CONFIG_IP_PNP_BOOTP=y | ||
| 5138 | +CONFIG_IP_PNP_RARP=y | ||
| 5139 | +CONFIG_NET_IPIP=y | ||
| 5140 | +# CONFIG_NET_IPGRE is not set | ||
| 5141 | +# CONFIG_IP_MROUTE is not set | ||
| 5142 | +# CONFIG_ARPD is not set | ||
| 5143 | +CONFIG_SYN_COOKIES=y | ||
| 5144 | +CONFIG_INET_AH=y | ||
| 5145 | +CONFIG_INET_ESP=y | ||
| 5146 | +CONFIG_INET_IPCOMP=y | ||
| 5147 | +CONFIG_INET_XFRM_TUNNEL=y | ||
| 5148 | +CONFIG_INET_TUNNEL=y | ||
| 5149 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 5150 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 5151 | +CONFIG_INET_XFRM_MODE_BEET=y | ||
| 5152 | +# CONFIG_INET_LRO is not set | ||
| 5153 | +CONFIG_INET_DIAG=y | ||
| 5154 | +CONFIG_INET_TCP_DIAG=y | ||
| 5155 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 5156 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 5157 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 5158 | +# CONFIG_TCP_MD5SIG is not set | ||
| 5159 | +CONFIG_IPV6=y | ||
| 5160 | +# CONFIG_IPV6_PRIVACY is not set | ||
| 5161 | +# CONFIG_IPV6_ROUTER_PREF is not set | ||
| 5162 | +# CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 5163 | +CONFIG_INET6_AH=y | ||
| 5164 | +CONFIG_INET6_ESP=y | ||
| 5165 | +CONFIG_INET6_IPCOMP=y | ||
| 5166 | +CONFIG_IPV6_MIP6=y | ||
| 5167 | +CONFIG_INET6_XFRM_TUNNEL=y | ||
| 5168 | +CONFIG_INET6_TUNNEL=y | ||
| 5169 | +CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 5170 | +CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 5171 | +CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 5172 | +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 5173 | +CONFIG_IPV6_SIT=y | ||
| 5174 | +# CONFIG_IPV6_SIT_6RD is not set | ||
| 5175 | +CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 5176 | +CONFIG_IPV6_TUNNEL=y | ||
| 5177 | +# CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 5178 | +# CONFIG_IPV6_MROUTE is not set | ||
| 5179 | +CONFIG_NETWORK_SECMARK=y | ||
| 5180 | +CONFIG_NETFILTER=y | ||
| 5181 | +# CONFIG_NETFILTER_DEBUG is not set | ||
| 5182 | +CONFIG_NETFILTER_ADVANCED=y | ||
| 5183 | + | ||
| 5184 | +# | ||
| 5185 | +# Core Netfilter Configuration | ||
| 5186 | +# | ||
| 5187 | +# CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 5188 | +# CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 5189 | +# CONFIG_NF_CONNTRACK is not set | ||
| 5190 | +# CONFIG_NETFILTER_XTABLES is not set | ||
| 5191 | +# CONFIG_IP_VS is not set | ||
| 5192 | + | ||
| 5193 | +# | ||
| 5194 | +# IP: Netfilter Configuration | ||
| 5195 | +# | ||
| 5196 | +# CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 5197 | +# CONFIG_IP_NF_QUEUE is not set | ||
| 5198 | +# CONFIG_IP_NF_IPTABLES is not set | ||
| 5199 | +# CONFIG_IP_NF_ARPTABLES is not set | ||
| 5200 | + | ||
| 5201 | +# | ||
| 5202 | +# IPv6: Netfilter Configuration | ||
| 5203 | +# | ||
| 5204 | +# CONFIG_IP6_NF_QUEUE is not set | ||
| 5205 | +# CONFIG_IP6_NF_IPTABLES is not set | ||
| 5206 | +# CONFIG_IP_DCCP is not set | ||
| 5207 | +# CONFIG_IP_SCTP is not set | ||
| 5208 | +# CONFIG_RDS is not set | ||
| 5209 | +# CONFIG_TIPC is not set | ||
| 5210 | +# CONFIG_ATM is not set | ||
| 5211 | +# CONFIG_L2TP is not set | ||
| 5212 | +# CONFIG_BRIDGE is not set | ||
| 5213 | +# CONFIG_NET_DSA is not set | ||
| 5214 | +CONFIG_VLAN_8021Q=y | ||
| 5215 | +# CONFIG_VLAN_8021Q_GVRP is not set | ||
| 5216 | +# CONFIG_DECNET is not set | ||
| 5217 | +# CONFIG_LLC2 is not set | ||
| 5218 | +# CONFIG_IPX is not set | ||
| 5219 | +# CONFIG_ATALK is not set | ||
| 5220 | +# CONFIG_X25 is not set | ||
| 5221 | +# CONFIG_LAPB is not set | ||
| 5222 | +# CONFIG_ECONET is not set | ||
| 5223 | +# CONFIG_WAN_ROUTER is not set | ||
| 5224 | +# CONFIG_PHONET is not set | ||
| 5225 | +# CONFIG_IEEE802154 is not set | ||
| 5226 | +# CONFIG_NET_SCHED is not set | ||
| 5227 | +# CONFIG_DCB is not set | ||
| 5228 | +CONFIG_RPS=y | ||
| 5229 | + | ||
| 5230 | +# | ||
| 5231 | +# Network testing | ||
| 5232 | +# | ||
| 5233 | +# CONFIG_NET_PKTGEN is not set | ||
| 5234 | +# CONFIG_HAMRADIO is not set | ||
| 5235 | +# CONFIG_CAN is not set | ||
| 5236 | +# CONFIG_IRDA is not set | ||
| 5237 | +# CONFIG_BT is not set | ||
| 5238 | +# CONFIG_AF_RXRPC is not set | ||
| 5239 | +CONFIG_WIRELESS=y | ||
| 5240 | +CONFIG_WIRELESS_EXT=y | ||
| 5241 | +CONFIG_WEXT_CORE=y | ||
| 5242 | +CONFIG_WEXT_PROC=y | ||
| 5243 | +CONFIG_WEXT_PRIV=y | ||
| 5244 | +# CONFIG_CFG80211 is not set | ||
| 5245 | +CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 5246 | +# CONFIG_LIB80211 is not set | ||
| 5247 | + | ||
| 5248 | +# | ||
| 5249 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 5250 | +# | ||
| 5251 | + | ||
| 5252 | +# | ||
| 5253 | +# Some wireless drivers require a rate control algorithm | ||
| 5254 | +# | ||
| 5255 | +# CONFIG_WIMAX is not set | ||
| 5256 | +# CONFIG_RFKILL is not set | ||
| 5257 | +# CONFIG_NET_9P is not set | ||
| 5258 | +# CONFIG_CAIF is not set | ||
| 5259 | + | ||
| 5260 | +# | ||
| 5261 | +# Device Drivers | ||
| 5262 | +# | ||
| 5263 | + | ||
| 5264 | +# | ||
| 5265 | +# Generic Driver Options | ||
| 5266 | +# | ||
| 5267 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 5268 | +# CONFIG_DEVTMPFS is not set | ||
| 5269 | +CONFIG_STANDALONE=y | ||
| 5270 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 5271 | +CONFIG_FW_LOADER=y | ||
| 5272 | +CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 5273 | +CONFIG_EXTRA_FIRMWARE="" | ||
| 5274 | +# CONFIG_DEBUG_DRIVER is not set | ||
| 5275 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 5276 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 5277 | +# CONFIG_CONNECTOR is not set | ||
| 5278 | +CONFIG_MTD=y | ||
| 5279 | +# CONFIG_MTD_DEBUG is not set | ||
| 5280 | +# CONFIG_MTD_TESTS is not set | ||
| 5281 | +# CONFIG_MTD_CONCAT is not set | ||
| 5282 | +CONFIG_MTD_PARTITIONS=y | ||
| 5283 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 5284 | +CONFIG_MTD_CMDLINE_PARTS=y | ||
| 5285 | +CONFIG_MTD_OF_PARTS=y | ||
| 5286 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 5287 | + | ||
| 5288 | +# | ||
| 5289 | +# User Modules And Translation Layers | ||
| 5290 | +# | ||
| 5291 | +CONFIG_MTD_CHAR=y | ||
| 5292 | +CONFIG_MTD_BLKDEVS=y | ||
| 5293 | +CONFIG_MTD_BLOCK=y | ||
| 5294 | +# CONFIG_FTL is not set | ||
| 5295 | +# CONFIG_NFTL is not set | ||
| 5296 | +# CONFIG_INFTL is not set | ||
| 5297 | +# CONFIG_RFD_FTL is not set | ||
| 5298 | +# CONFIG_SSFDC is not set | ||
| 5299 | +# CONFIG_SM_FTL is not set | ||
| 5300 | +# CONFIG_MTD_OOPS is not set | ||
| 5301 | + | ||
| 5302 | +# | ||
| 5303 | +# RAM/ROM/Flash chip drivers | ||
| 5304 | +# | ||
| 5305 | +# CONFIG_MTD_CFI is not set | ||
| 5306 | +CONFIG_MTD_JEDECPROBE=y | ||
| 5307 | +CONFIG_MTD_GEN_PROBE=y | ||
| 5308 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 5309 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 5310 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 5311 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 5312 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 5313 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 5314 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 5315 | +CONFIG_MTD_CFI_I1=y | ||
| 5316 | +CONFIG_MTD_CFI_I2=y | ||
| 5317 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 5318 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 5319 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 5320 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 5321 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 5322 | +CONFIG_MTD_CFI_UTIL=y | ||
| 5323 | +# CONFIG_MTD_RAM is not set | ||
| 5324 | +# CONFIG_MTD_ROM is not set | ||
| 5325 | +# CONFIG_MTD_ABSENT is not set | ||
| 5326 | + | ||
| 5327 | +# | ||
| 5328 | +# Mapping drivers for chip access | ||
| 5329 | +# | ||
| 5330 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 5331 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 5332 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 5333 | +# CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 5334 | +# CONFIG_MTD_PLATRAM is not set | ||
| 5335 | + | ||
| 5336 | +# | ||
| 5337 | +# Self-contained MTD device drivers | ||
| 5338 | +# | ||
| 5339 | +# CONFIG_MTD_PMC551 is not set | ||
| 5340 | +# CONFIG_MTD_SLRAM is not set | ||
| 5341 | +# CONFIG_MTD_PHRAM is not set | ||
| 5342 | +# CONFIG_MTD_MTDRAM is not set | ||
| 5343 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 5344 | + | ||
| 5345 | +# | ||
| 5346 | +# Disk-On-Chip Device Drivers | ||
| 5347 | +# | ||
| 5348 | +# CONFIG_MTD_DOC2000 is not set | ||
| 5349 | +# CONFIG_MTD_DOC2001 is not set | ||
| 5350 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 5351 | +CONFIG_MTD_NAND_ECC=y | ||
| 5352 | +# CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 5353 | +CONFIG_MTD_NAND=y | ||
| 5354 | +# CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 5355 | +# CONFIG_MTD_SM_COMMON is not set | ||
| 5356 | +# CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 5357 | +# CONFIG_MTD_NAND_DENALI is not set | ||
| 5358 | +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
| 5359 | +CONFIG_MTD_NAND_IDS=y | ||
| 5360 | +# CONFIG_MTD_NAND_RICOH is not set | ||
| 5361 | +# CONFIG_MTD_NAND_NDFC is not set | ||
| 5362 | +# CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 5363 | +# CONFIG_MTD_NAND_CAFE is not set | ||
| 5364 | +# CONFIG_MTD_NAND_NANDSIM is not set | ||
| 5365 | +CONFIG_MTD_NAND_PLATFORM=y | ||
| 5366 | +# CONFIG_MTD_ALAUDA is not set | ||
| 5367 | +# CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 5368 | +# CONFIG_MTD_ONENAND is not set | ||
| 5369 | + | ||
| 5370 | +# | ||
| 5371 | +# LPDDR flash memory drivers | ||
| 5372 | +# | ||
| 5373 | +# CONFIG_MTD_LPDDR is not set | ||
| 5374 | + | ||
| 5375 | +# | ||
| 5376 | +# UBI - Unsorted block images | ||
| 5377 | +# | ||
| 5378 | +# CONFIG_MTD_UBI is not set | ||
| 5379 | +CONFIG_OF_FLATTREE=y | ||
| 5380 | +CONFIG_OF_DYNAMIC=y | ||
| 5381 | +CONFIG_OF_DEVICE=y | ||
| 5382 | +# CONFIG_PARPORT is not set | ||
| 5383 | +CONFIG_BLK_DEV=y | ||
| 5384 | +# CONFIG_BLK_DEV_FD is not set | ||
| 5385 | +# CONFIG_BLK_CPQ_DA is not set | ||
| 5386 | +# CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 5387 | +# CONFIG_BLK_DEV_DAC960 is not set | ||
| 5388 | +# CONFIG_BLK_DEV_UMEM is not set | ||
| 5389 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 5390 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 5391 | + | ||
| 5392 | +# | ||
| 5393 | +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 5394 | +# | ||
| 5395 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 5396 | +# CONFIG_BLK_DEV_SX8 is not set | ||
| 5397 | +CONFIG_BLK_DEV_UB=y | ||
| 5398 | +CONFIG_BLK_DEV_RAM=y | ||
| 5399 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 5400 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 5401 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 5402 | +# CONFIG_BLK_DEV_ISS is not set | ||
| 5403 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 5404 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 5405 | +# CONFIG_XILINX_SYSACE is not set | ||
| 5406 | +# CONFIG_BLK_DEV_HD is not set | ||
| 5407 | +CONFIG_MISC_DEVICES=y | ||
| 5408 | +# CONFIG_PHANTOM is not set | ||
| 5409 | +# CONFIG_SGI_IOC4 is not set | ||
| 5410 | +# CONFIG_TIFM_CORE is not set | ||
| 5411 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 5412 | +# CONFIG_HP_ILO is not set | ||
| 5413 | +# CONFIG_C2PORT is not set | ||
| 5414 | + | ||
| 5415 | +# | ||
| 5416 | +# EEPROM support | ||
| 5417 | +# | ||
| 5418 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 5419 | +# CONFIG_CB710_CORE is not set | ||
| 5420 | +CONFIG_HAVE_IDE=y | ||
| 5421 | +# CONFIG_IDE is not set | ||
| 5422 | + | ||
| 5423 | +# | ||
| 5424 | +# SCSI device support | ||
| 5425 | +# | ||
| 5426 | +CONFIG_SCSI_MOD=y | ||
| 5427 | +# CONFIG_RAID_ATTRS is not set | ||
| 5428 | +CONFIG_SCSI=y | ||
| 5429 | +CONFIG_SCSI_DMA=y | ||
| 5430 | +CONFIG_SCSI_TGT=y | ||
| 5431 | +# CONFIG_SCSI_NETLINK is not set | ||
| 5432 | +CONFIG_SCSI_PROC_FS=y | ||
| 5433 | + | ||
| 5434 | +# | ||
| 5435 | +# SCSI support type (disk, tape, CD-ROM) | ||
| 5436 | +# | ||
| 5437 | +CONFIG_BLK_DEV_SD=y | ||
| 5438 | +# CONFIG_CHR_DEV_ST is not set | ||
| 5439 | +# CONFIG_CHR_DEV_OSST is not set | ||
| 5440 | +# CONFIG_BLK_DEV_SR is not set | ||
| 5441 | +# CONFIG_CHR_DEV_SG is not set | ||
| 5442 | +# CONFIG_CHR_DEV_SCH is not set | ||
| 5443 | +# CONFIG_SCSI_MULTI_LUN is not set | ||
| 5444 | +CONFIG_SCSI_CONSTANTS=y | ||
| 5445 | +# CONFIG_SCSI_LOGGING is not set | ||
| 5446 | +# CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 5447 | +CONFIG_SCSI_WAIT_SCAN=m | ||
| 5448 | + | ||
| 5449 | +# | ||
| 5450 | +# SCSI Transports | ||
| 5451 | +# | ||
| 5452 | +# CONFIG_SCSI_SPI_ATTRS is not set | ||
| 5453 | +# CONFIG_SCSI_FC_ATTRS is not set | ||
| 5454 | +# CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 5455 | +# CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 5456 | +# CONFIG_SCSI_SRP_ATTRS is not set | ||
| 5457 | +CONFIG_SCSI_LOWLEVEL=y | ||
| 5458 | +# CONFIG_ISCSI_TCP is not set | ||
| 5459 | +# CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 5460 | +# CONFIG_BE2ISCSI is not set | ||
| 5461 | +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 5462 | +# CONFIG_SCSI_HPSA is not set | ||
| 5463 | +# CONFIG_SCSI_3W_9XXX is not set | ||
| 5464 | +# CONFIG_SCSI_3W_SAS is not set | ||
| 5465 | +# CONFIG_SCSI_ACARD is not set | ||
| 5466 | +# CONFIG_SCSI_AACRAID is not set | ||
| 5467 | +# CONFIG_SCSI_AIC7XXX is not set | ||
| 5468 | +# CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 5469 | +# CONFIG_SCSI_AIC79XX is not set | ||
| 5470 | +# CONFIG_SCSI_AIC94XX is not set | ||
| 5471 | +# CONFIG_SCSI_MVSAS is not set | ||
| 5472 | +# CONFIG_SCSI_DPT_I2O is not set | ||
| 5473 | +# CONFIG_SCSI_ADVANSYS is not set | ||
| 5474 | +# CONFIG_SCSI_ARCMSR is not set | ||
| 5475 | +# CONFIG_MEGARAID_NEWGEN is not set | ||
| 5476 | +# CONFIG_MEGARAID_LEGACY is not set | ||
| 5477 | +# CONFIG_MEGARAID_SAS is not set | ||
| 5478 | +# CONFIG_SCSI_MPT2SAS is not set | ||
| 5479 | +# CONFIG_SCSI_HPTIOP is not set | ||
| 5480 | +# CONFIG_SCSI_BUSLOGIC is not set | ||
| 5481 | +# CONFIG_LIBFC is not set | ||
| 5482 | +# CONFIG_LIBFCOE is not set | ||
| 5483 | +# CONFIG_FCOE is not set | ||
| 5484 | +# CONFIG_SCSI_DMX3191D is not set | ||
| 5485 | +# CONFIG_SCSI_EATA is not set | ||
| 5486 | +# CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 5487 | +# CONFIG_SCSI_GDTH is not set | ||
| 5488 | +# CONFIG_SCSI_IPS is not set | ||
| 5489 | +# CONFIG_SCSI_INITIO is not set | ||
| 5490 | +# CONFIG_SCSI_INIA100 is not set | ||
| 5491 | +# CONFIG_SCSI_STEX is not set | ||
| 5492 | +# CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 5493 | +# CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 5494 | +# CONFIG_SCSI_QLA_FC is not set | ||
| 5495 | +# CONFIG_SCSI_QLA_ISCSI is not set | ||
| 5496 | +# CONFIG_SCSI_LPFC is not set | ||
| 5497 | +# CONFIG_SCSI_DC395x is not set | ||
| 5498 | +# CONFIG_SCSI_DC390T is not set | ||
| 5499 | +# CONFIG_SCSI_NSP32 is not set | ||
| 5500 | +# CONFIG_SCSI_DEBUG is not set | ||
| 5501 | +# CONFIG_SCSI_PMCRAID is not set | ||
| 5502 | +# CONFIG_SCSI_PM8001 is not set | ||
| 5503 | +# CONFIG_SCSI_SRP is not set | ||
| 5504 | +# CONFIG_SCSI_BFA_FC is not set | ||
| 5505 | +# CONFIG_SCSI_DH is not set | ||
| 5506 | +# CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 5507 | +# CONFIG_ATA is not set | ||
| 5508 | +CONFIG_MD=y | ||
| 5509 | +CONFIG_BLK_DEV_MD=y | ||
| 5510 | +CONFIG_MD_AUTODETECT=y | ||
| 5511 | +CONFIG_MD_LINEAR=y | ||
| 5512 | +CONFIG_MD_RAID0=y | ||
| 5513 | +CONFIG_MD_RAID1=y | ||
| 5514 | +CONFIG_MD_RAID10=y | ||
| 5515 | +# CONFIG_MD_RAID456 is not set | ||
| 5516 | +CONFIG_MD_MULTIPATH=y | ||
| 5517 | +CONFIG_MD_FAULTY=y | ||
| 5518 | +CONFIG_BLK_DEV_DM=y | ||
| 5519 | +# CONFIG_DM_DEBUG is not set | ||
| 5520 | +CONFIG_DM_CRYPT=y | ||
| 5521 | +CONFIG_DM_SNAPSHOT=y | ||
| 5522 | +CONFIG_DM_MIRROR=y | ||
| 5523 | +# CONFIG_DM_LOG_USERSPACE is not set | ||
| 5524 | +CONFIG_DM_ZERO=y | ||
| 5525 | +# CONFIG_DM_MULTIPATH is not set | ||
| 5526 | +# CONFIG_DM_DELAY is not set | ||
| 5527 | +# CONFIG_DM_UEVENT is not set | ||
| 5528 | +# CONFIG_FUSION is not set | ||
| 5529 | + | ||
| 5530 | +# | ||
| 5531 | +# IEEE 1394 (FireWire) support | ||
| 5532 | +# | ||
| 5533 | + | ||
| 5534 | +# | ||
| 5535 | +# You can enable one or both FireWire driver stacks. | ||
| 5536 | +# | ||
| 5537 | + | ||
| 5538 | +# | ||
| 5539 | +# The newer stack is recommended. | ||
| 5540 | +# | ||
| 5541 | +# CONFIG_FIREWIRE is not set | ||
| 5542 | +# CONFIG_IEEE1394 is not set | ||
| 5543 | +# CONFIG_I2O is not set | ||
| 5544 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 5545 | +CONFIG_NETDEVICES=y | ||
| 5546 | +CONFIG_DUMMY=y | ||
| 5547 | +# CONFIG_BONDING is not set | ||
| 5548 | +# CONFIG_MACVLAN is not set | ||
| 5549 | +# CONFIG_EQUALIZER is not set | ||
| 5550 | +CONFIG_TUN=y | ||
| 5551 | +# CONFIG_VETH is not set | ||
| 5552 | +# CONFIG_ARCNET is not set | ||
| 5553 | +# CONFIG_PHYLIB is not set | ||
| 5554 | +CONFIG_NET_ETHERNET=y | ||
| 5555 | +CONFIG_MII=y | ||
| 5556 | +# CONFIG_HAPPYMEAL is not set | ||
| 5557 | +# CONFIG_SUNGEM is not set | ||
| 5558 | +# CONFIG_CASSINI is not set | ||
| 5559 | +# CONFIG_NET_VENDOR_3COM is not set | ||
| 5560 | +# CONFIG_ETHOC is not set | ||
| 5561 | +# CONFIG_DNET is not set | ||
| 5562 | +# CONFIG_NET_TULIP is not set | ||
| 5563 | +# CONFIG_HP100 is not set | ||
| 5564 | +# CONFIG_IBM_NEW_EMAC is not set | ||
| 5565 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 5566 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 5567 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 5568 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 5569 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 5570 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 5571 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 5572 | +# CONFIG_NET_PCI is not set | ||
| 5573 | +# CONFIG_B44 is not set | ||
| 5574 | +# CONFIG_KS8842 is not set | ||
| 5575 | +# CONFIG_KS8851_MLL is not set | ||
| 5576 | +# CONFIG_ATL2 is not set | ||
| 5577 | +# CONFIG_XILINX_EMACLITE is not set | ||
| 5578 | +CONFIG_NETDEV_1000=y | ||
| 5579 | +# CONFIG_ACENIC is not set | ||
| 5580 | +# CONFIG_DL2K is not set | ||
| 5581 | +CONFIG_E1000=y | ||
| 5582 | +CONFIG_E1000E=y | ||
| 5583 | +# CONFIG_IP1000 is not set | ||
| 5584 | +CONFIG_IGB=y | ||
| 5585 | +CONFIG_IGBVF=y | ||
| 5586 | +# CONFIG_NS83820 is not set | ||
| 5587 | +# CONFIG_HAMACHI is not set | ||
| 5588 | +# CONFIG_YELLOWFIN is not set | ||
| 5589 | +# CONFIG_R8169 is not set | ||
| 5590 | +# CONFIG_SIS190 is not set | ||
| 5591 | +# CONFIG_SKGE is not set | ||
| 5592 | +# CONFIG_SKY2 is not set | ||
| 5593 | +# CONFIG_VIA_VELOCITY is not set | ||
| 5594 | +# CONFIG_TIGON3 is not set | ||
| 5595 | +# CONFIG_BNX2 is not set | ||
| 5596 | +# CONFIG_CNIC is not set | ||
| 5597 | +# CONFIG_MV643XX_ETH is not set | ||
| 5598 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 5599 | +# CONFIG_QLA3XXX is not set | ||
| 5600 | +# CONFIG_ATL1 is not set | ||
| 5601 | +# CONFIG_ATL1E is not set | ||
| 5602 | +# CONFIG_ATL1C is not set | ||
| 5603 | +# CONFIG_JME is not set | ||
| 5604 | +# CONFIG_NETDEV_10000 is not set | ||
| 5605 | +# CONFIG_TR is not set | ||
| 5606 | +CONFIG_WLAN=y | ||
| 5607 | +# CONFIG_AIRO is not set | ||
| 5608 | +# CONFIG_ATMEL is not set | ||
| 5609 | +# CONFIG_PRISM54 is not set | ||
| 5610 | +CONFIG_USB_ZD1201=y | ||
| 5611 | +# CONFIG_HOSTAP is not set | ||
| 5612 | + | ||
| 5613 | +# | ||
| 5614 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 5615 | +# | ||
| 5616 | + | ||
| 5617 | +# | ||
| 5618 | +# USB Network Adapters | ||
| 5619 | +# | ||
| 5620 | +# CONFIG_USB_CATC is not set | ||
| 5621 | +# CONFIG_USB_KAWETH is not set | ||
| 5622 | +# CONFIG_USB_PEGASUS is not set | ||
| 5623 | +# CONFIG_USB_RTL8150 is not set | ||
| 5624 | +# CONFIG_USB_USBNET is not set | ||
| 5625 | +# CONFIG_USB_IPHETH is not set | ||
| 5626 | +# CONFIG_WAN is not set | ||
| 5627 | +# CONFIG_RIONET is not set | ||
| 5628 | +# CONFIG_FDDI is not set | ||
| 5629 | +# CONFIG_HIPPI is not set | ||
| 5630 | +CONFIG_PPP=m | ||
| 5631 | +CONFIG_PPP_MULTILINK=y | ||
| 5632 | +CONFIG_PPP_FILTER=y | ||
| 5633 | +CONFIG_PPP_ASYNC=m | ||
| 5634 | +CONFIG_PPP_SYNC_TTY=m | ||
| 5635 | +CONFIG_PPP_DEFLATE=m | ||
| 5636 | +CONFIG_PPP_BSDCOMP=m | ||
| 5637 | +# CONFIG_PPP_MPPE is not set | ||
| 5638 | +CONFIG_PPPOE=m | ||
| 5639 | +CONFIG_SLIP=m | ||
| 5640 | +CONFIG_SLIP_COMPRESSED=y | ||
| 5641 | +CONFIG_SLHC=m | ||
| 5642 | +CONFIG_SLIP_SMART=y | ||
| 5643 | +CONFIG_SLIP_MODE_SLIP6=y | ||
| 5644 | +# CONFIG_NET_FC is not set | ||
| 5645 | +CONFIG_NETCONSOLE=y | ||
| 5646 | +# CONFIG_NETCONSOLE_DYNAMIC is not set | ||
| 5647 | +CONFIG_NETPOLL=y | ||
| 5648 | +CONFIG_NETPOLL_TRAP=y | ||
| 5649 | +CONFIG_NET_POLL_CONTROLLER=y | ||
| 5650 | +# CONFIG_VMXNET3 is not set | ||
| 5651 | +# CONFIG_ISDN is not set | ||
| 5652 | +# CONFIG_PHONE is not set | ||
| 5653 | + | ||
| 5654 | +# | ||
| 5655 | +# Input device support | ||
| 5656 | +# | ||
| 5657 | +CONFIG_INPUT=y | ||
| 5658 | +# CONFIG_INPUT_FF_MEMLESS is not set | ||
| 5659 | +# CONFIG_INPUT_POLLDEV is not set | ||
| 5660 | +# CONFIG_INPUT_SPARSEKMAP is not set | ||
| 5661 | + | ||
| 5662 | +# | ||
| 5663 | +# Userland interfaces | ||
| 5664 | +# | ||
| 5665 | +CONFIG_INPUT_MOUSEDEV=y | ||
| 5666 | +CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 5667 | +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 5668 | +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 5669 | +# CONFIG_INPUT_JOYDEV is not set | ||
| 5670 | +# CONFIG_INPUT_EVDEV is not set | ||
| 5671 | +# CONFIG_INPUT_EVBUG is not set | ||
| 5672 | + | ||
| 5673 | +# | ||
| 5674 | +# Input Device Drivers | ||
| 5675 | +# | ||
| 5676 | +# CONFIG_INPUT_KEYBOARD is not set | ||
| 5677 | +# CONFIG_INPUT_MOUSE is not set | ||
| 5678 | +# CONFIG_INPUT_JOYSTICK is not set | ||
| 5679 | +# CONFIG_INPUT_TABLET is not set | ||
| 5680 | +# CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 5681 | +# CONFIG_INPUT_MISC is not set | ||
| 5682 | + | ||
| 5683 | +# | ||
| 5684 | +# Hardware I/O ports | ||
| 5685 | +# | ||
| 5686 | +CONFIG_SERIO=y | ||
| 5687 | +CONFIG_SERIO_I8042=y | ||
| 5688 | +CONFIG_SERIO_SERPORT=y | ||
| 5689 | +# CONFIG_SERIO_PCIPS2 is not set | ||
| 5690 | +CONFIG_SERIO_LIBPS2=y | ||
| 5691 | +# CONFIG_SERIO_RAW is not set | ||
| 5692 | +# CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 5693 | +# CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 5694 | +# CONFIG_GAMEPORT is not set | ||
| 5695 | + | ||
| 5696 | +# | ||
| 5697 | +# Character devices | ||
| 5698 | +# | ||
| 5699 | +CONFIG_VT=y | ||
| 5700 | +CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 5701 | +CONFIG_VT_CONSOLE=y | ||
| 5702 | +CONFIG_HW_CONSOLE=y | ||
| 5703 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 5704 | +CONFIG_DEVKMEM=y | ||
| 5705 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 5706 | +CONFIG_N_GSM=y | ||
| 5707 | +# CONFIG_NOZOMI is not set | ||
| 5708 | + | ||
| 5709 | +# | ||
| 5710 | +# Serial drivers | ||
| 5711 | +# | ||
| 5712 | +# CONFIG_SERIAL_8250 is not set | ||
| 5713 | + | ||
| 5714 | +# | ||
| 5715 | +# Non-8250 serial port support | ||
| 5716 | +# | ||
| 5717 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 5718 | +CONFIG_SERIAL_CORE=y | ||
| 5719 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 5720 | +# CONFIG_SERIAL_JSM is not set | ||
| 5721 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 5722 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 5723 | +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 5724 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 5725 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 5726 | +CONFIG_UNIX98_PTYS=y | ||
| 5727 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 5728 | +CONFIG_LEGACY_PTYS=y | ||
| 5729 | +CONFIG_LEGACY_PTY_COUNT=20 | ||
| 5730 | +# CONFIG_HVC_UDBG is not set | ||
| 5731 | +# CONFIG_IPMI_HANDLER is not set | ||
| 5732 | +# CONFIG_HW_RANDOM is not set | ||
| 5733 | +# CONFIG_NVRAM is not set | ||
| 5734 | +# CONFIG_GEN_RTC is not set | ||
| 5735 | +# CONFIG_R3964 is not set | ||
| 5736 | +# CONFIG_APPLICOM is not set | ||
| 5737 | +# CONFIG_RAW_DRIVER is not set | ||
| 5738 | +# CONFIG_TCG_TPM is not set | ||
| 5739 | +CONFIG_DEVPORT=y | ||
| 5740 | +# CONFIG_RAMOOPS is not set | ||
| 5741 | +# CONFIG_I2C is not set | ||
| 5742 | +# CONFIG_SPI is not set | ||
| 5743 | + | ||
| 5744 | +# | ||
| 5745 | +# PPS support | ||
| 5746 | +# | ||
| 5747 | +# CONFIG_PPS is not set | ||
| 5748 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 5749 | +# CONFIG_GPIOLIB is not set | ||
| 5750 | +# CONFIG_W1 is not set | ||
| 5751 | +# CONFIG_POWER_SUPPLY is not set | ||
| 5752 | +# CONFIG_HWMON is not set | ||
| 5753 | +CONFIG_THERMAL=y | ||
| 5754 | +# CONFIG_WATCHDOG is not set | ||
| 5755 | +CONFIG_SSB_POSSIBLE=y | ||
| 5756 | + | ||
| 5757 | +# | ||
| 5758 | +# Sonics Silicon Backplane | ||
| 5759 | +# | ||
| 5760 | +# CONFIG_SSB is not set | ||
| 5761 | +# CONFIG_MFD_SUPPORT is not set | ||
| 5762 | +# CONFIG_REGULATOR is not set | ||
| 5763 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 5764 | + | ||
| 5765 | +# | ||
| 5766 | +# Graphics support | ||
| 5767 | +# | ||
| 5768 | +# CONFIG_AGP is not set | ||
| 5769 | +# CONFIG_VGA_ARB is not set | ||
| 5770 | +# CONFIG_DRM is not set | ||
| 5771 | +# CONFIG_VGASTATE is not set | ||
| 5772 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 5773 | +# CONFIG_FB is not set | ||
| 5774 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 5775 | + | ||
| 5776 | +# | ||
| 5777 | +# Display device support | ||
| 5778 | +# | ||
| 5779 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 5780 | + | ||
| 5781 | +# | ||
| 5782 | +# Console display driver support | ||
| 5783 | +# | ||
| 5784 | +CONFIG_DUMMY_CONSOLE=y | ||
| 5785 | +# CONFIG_SOUND is not set | ||
| 5786 | +CONFIG_HID_SUPPORT=y | ||
| 5787 | +CONFIG_HID=y | ||
| 5788 | +CONFIG_HIDRAW=y | ||
| 5789 | + | ||
| 5790 | +# | ||
| 5791 | +# USB Input Devices | ||
| 5792 | +# | ||
| 5793 | +CONFIG_USB_HID=y | ||
| 5794 | +CONFIG_HID_PID=y | ||
| 5795 | +CONFIG_USB_HIDDEV=y | ||
| 5796 | + | ||
| 5797 | +# | ||
| 5798 | +# Special HID drivers | ||
| 5799 | +# | ||
| 5800 | +CONFIG_HID_3M_PCT=y | ||
| 5801 | +CONFIG_HID_A4TECH=y | ||
| 5802 | +CONFIG_HID_APPLE=y | ||
| 5803 | +# CONFIG_HID_BELKIN is not set | ||
| 5804 | +# CONFIG_HID_CANDO is not set | ||
| 5805 | +# CONFIG_HID_CHERRY is not set | ||
| 5806 | +# CONFIG_HID_CHICONY is not set | ||
| 5807 | +# CONFIG_HID_CYPRESS is not set | ||
| 5808 | +# CONFIG_HID_DRAGONRISE is not set | ||
| 5809 | +# CONFIG_HID_EGALAX is not set | ||
| 5810 | +# CONFIG_HID_EZKEY is not set | ||
| 5811 | +# CONFIG_HID_KYE is not set | ||
| 5812 | +# CONFIG_HID_GYRATION is not set | ||
| 5813 | +# CONFIG_HID_TWINHAN is not set | ||
| 5814 | +# CONFIG_HID_KENSINGTON is not set | ||
| 5815 | +# CONFIG_HID_LOGITECH is not set | ||
| 5816 | +# CONFIG_HID_MICROSOFT is not set | ||
| 5817 | +# CONFIG_HID_MOSART is not set | ||
| 5818 | +# CONFIG_HID_MONTEREY is not set | ||
| 5819 | +# CONFIG_HID_NTRIG is not set | ||
| 5820 | +# CONFIG_HID_ORTEK is not set | ||
| 5821 | +# CONFIG_HID_PANTHERLORD is not set | ||
| 5822 | +# CONFIG_HID_PETALYNX is not set | ||
| 5823 | +# CONFIG_HID_PICOLCD is not set | ||
| 5824 | +# CONFIG_HID_QUANTA is not set | ||
| 5825 | +# CONFIG_HID_ROCCAT is not set | ||
| 5826 | +# CONFIG_HID_ROCCAT_KONE is not set | ||
| 5827 | +# CONFIG_HID_SAMSUNG is not set | ||
| 5828 | +# CONFIG_HID_SONY is not set | ||
| 5829 | +# CONFIG_HID_STANTUM is not set | ||
| 5830 | +# CONFIG_HID_SUNPLUS is not set | ||
| 5831 | +# CONFIG_HID_GREENASIA is not set | ||
| 5832 | +# CONFIG_HID_SMARTJOYPLUS is not set | ||
| 5833 | +# CONFIG_HID_TOPSEED is not set | ||
| 5834 | +# CONFIG_HID_THRUSTMASTER is not set | ||
| 5835 | +# CONFIG_HID_ZEROPLUS is not set | ||
| 5836 | +# CONFIG_HID_ZYDACRON is not set | ||
| 5837 | +CONFIG_USB_SUPPORT=y | ||
| 5838 | +CONFIG_USB_ARCH_HAS_HCD=y | ||
| 5839 | +CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 5840 | +CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 5841 | +CONFIG_USB=y | ||
| 5842 | +# CONFIG_USB_DEBUG is not set | ||
| 5843 | +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
| 5844 | + | ||
| 5845 | +# | ||
| 5846 | +# Miscellaneous USB options | ||
| 5847 | +# | ||
| 5848 | +CONFIG_USB_DEVICEFS=y | ||
| 5849 | +CONFIG_USB_DEVICE_CLASS=y | ||
| 5850 | +CONFIG_USB_DYNAMIC_MINORS=y | ||
| 5851 | +# CONFIG_USB_OTG_WHITELIST is not set | ||
| 5852 | +# CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 5853 | +CONFIG_USB_MON=y | ||
| 5854 | +# CONFIG_USB_WUSB is not set | ||
| 5855 | +# CONFIG_USB_WUSB_CBAF is not set | ||
| 5856 | + | ||
| 5857 | +# | ||
| 5858 | +# USB Host Controller Drivers | ||
| 5859 | +# | ||
| 5860 | +# CONFIG_USB_C67X00_HCD is not set | ||
| 5861 | +# CONFIG_USB_XHCI_HCD is not set | ||
| 5862 | +CONFIG_USB_EHCI_HCD=y | ||
| 5863 | +CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 5864 | +# CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 5865 | +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
| 5866 | +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y | ||
| 5867 | +CONFIG_XPS_USB_HCD_XILINX=y | ||
| 5868 | +# CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
| 5869 | +# CONFIG_USB_OXU210HP_HCD is not set | ||
| 5870 | +CONFIG_USB_CI13612_HCD=y | ||
| 5871 | +# CONFIG_USB_ISP116X_HCD is not set | ||
| 5872 | +# CONFIG_USB_ISP1760_HCD is not set | ||
| 5873 | +# CONFIG_USB_ISP1362_HCD is not set | ||
| 5874 | +# CONFIG_USB_OHCI_HCD is not set | ||
| 5875 | +# CONFIG_USB_UHCI_HCD is not set | ||
| 5876 | +# CONFIG_USB_SL811_HCD is not set | ||
| 5877 | +# CONFIG_USB_R8A66597_HCD is not set | ||
| 5878 | +# CONFIG_USB_WHCI_HCD is not set | ||
| 5879 | +# CONFIG_USB_HWA_HCD is not set | ||
| 5880 | + | ||
| 5881 | +# | ||
| 5882 | +# USB Device Class drivers | ||
| 5883 | +# | ||
| 5884 | +# CONFIG_USB_ACM is not set | ||
| 5885 | +# CONFIG_USB_PRINTER is not set | ||
| 5886 | +# CONFIG_USB_WDM is not set | ||
| 5887 | +# CONFIG_USB_TMC is not set | ||
| 5888 | + | ||
| 5889 | +# | ||
| 5890 | +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 5891 | +# | ||
| 5892 | + | ||
| 5893 | +# | ||
| 5894 | +# also be needed; see USB_STORAGE Help for more info | ||
| 5895 | +# | ||
| 5896 | +CONFIG_USB_STORAGE=y | ||
| 5897 | +# CONFIG_USB_STORAGE_DEBUG is not set | ||
| 5898 | +# CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 5899 | +# CONFIG_USB_STORAGE_FREECOM is not set | ||
| 5900 | +# CONFIG_USB_STORAGE_ISD200 is not set | ||
| 5901 | +# CONFIG_USB_STORAGE_USBAT is not set | ||
| 5902 | +# CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 5903 | +# CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 5904 | +# CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 5905 | +# CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 5906 | +# CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 5907 | +# CONFIG_USB_STORAGE_KARMA is not set | ||
| 5908 | +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 5909 | +CONFIG_USB_LIBUSUAL=y | ||
| 5910 | + | ||
| 5911 | +# | ||
| 5912 | +# USB Imaging devices | ||
| 5913 | +# | ||
| 5914 | +# CONFIG_USB_MDC800 is not set | ||
| 5915 | +# CONFIG_USB_MICROTEK is not set | ||
| 5916 | + | ||
| 5917 | +# | ||
| 5918 | +# USB port drivers | ||
| 5919 | +# | ||
| 5920 | +# CONFIG_USB_SERIAL is not set | ||
| 5921 | + | ||
| 5922 | +# | ||
| 5923 | +# USB Miscellaneous drivers | ||
| 5924 | +# | ||
| 5925 | +# CONFIG_USB_EMI62 is not set | ||
| 5926 | +# CONFIG_USB_EMI26 is not set | ||
| 5927 | +# CONFIG_USB_ADUTUX is not set | ||
| 5928 | +# CONFIG_USB_SEVSEG is not set | ||
| 5929 | +# CONFIG_USB_RIO500 is not set | ||
| 5930 | +# CONFIG_USB_LEGOTOWER is not set | ||
| 5931 | +# CONFIG_USB_LCD is not set | ||
| 5932 | +# CONFIG_USB_LED is not set | ||
| 5933 | +# CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 5934 | +# CONFIG_USB_CYTHERM is not set | ||
| 5935 | +# CONFIG_USB_IDMOUSE is not set | ||
| 5936 | +# CONFIG_USB_FTDI_ELAN is not set | ||
| 5937 | +# CONFIG_USB_APPLEDISPLAY is not set | ||
| 5938 | +# CONFIG_USB_SISUSBVGA is not set | ||
| 5939 | +# CONFIG_USB_LD is not set | ||
| 5940 | +# CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 5941 | +# CONFIG_USB_IOWARRIOR is not set | ||
| 5942 | +# CONFIG_USB_TEST is not set | ||
| 5943 | +# CONFIG_USB_ISIGHTFW is not set | ||
| 5944 | +# CONFIG_USB_GADGET is not set | ||
| 5945 | + | ||
| 5946 | +# | ||
| 5947 | +# OTG and related infrastructure | ||
| 5948 | +# | ||
| 5949 | +# CONFIG_NOP_USB_XCEIV is not set | ||
| 5950 | +# CONFIG_UWB is not set | ||
| 5951 | +# CONFIG_MMC is not set | ||
| 5952 | +# CONFIG_MEMSTICK is not set | ||
| 5953 | +# CONFIG_NEW_LEDS is not set | ||
| 5954 | +# CONFIG_ACCESSIBILITY is not set | ||
| 5955 | +# CONFIG_INFINIBAND is not set | ||
| 5956 | +# CONFIG_EDAC is not set | ||
| 5957 | +# CONFIG_RTC_CLASS is not set | ||
| 5958 | +# CONFIG_DMADEVICES is not set | ||
| 5959 | +# CONFIG_AUXDISPLAY is not set | ||
| 5960 | +# CONFIG_UIO is not set | ||
| 5961 | +# CONFIG_STAGING is not set | ||
| 5962 | + | ||
| 5963 | +# | ||
| 5964 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 5965 | +# | ||
| 5966 | +CONFIG_SERIAL_ACP=y | ||
| 5967 | +CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 5968 | +# CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 5969 | +CONFIG_LSI_NET=y | ||
| 5970 | +CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 5971 | +CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 5972 | +CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 5973 | +CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 5974 | +CONFIG_LSI_NAND=y | ||
| 5975 | +CONFIG_LSI_UBOOTENV=y | ||
| 5976 | +CONFIG_LSI_PLX_PCIE_BRIDGE=y | ||
| 5977 | + | ||
| 5978 | +# | ||
| 5979 | +# File systems | ||
| 5980 | +# | ||
| 5981 | +CONFIG_EXT2_FS=y | ||
| 5982 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 5983 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 5984 | +# CONFIG_EXT3_FS is not set | ||
| 5985 | +# CONFIG_EXT4_FS is not set | ||
| 5986 | +# CONFIG_REISERFS_FS is not set | ||
| 5987 | +# CONFIG_JFS_FS is not set | ||
| 5988 | +CONFIG_FS_POSIX_ACL=y | ||
| 5989 | +# CONFIG_XFS_FS is not set | ||
| 5990 | +# CONFIG_GFS2_FS is not set | ||
| 5991 | +# CONFIG_OCFS2_FS is not set | ||
| 5992 | +# CONFIG_BTRFS_FS is not set | ||
| 5993 | +# CONFIG_NILFS2_FS is not set | ||
| 5994 | +CONFIG_FILE_LOCKING=y | ||
| 5995 | +CONFIG_FSNOTIFY=y | ||
| 5996 | +# CONFIG_DNOTIFY is not set | ||
| 5997 | +CONFIG_INOTIFY=y | ||
| 5998 | +CONFIG_INOTIFY_USER=y | ||
| 5999 | +# CONFIG_QUOTA is not set | ||
| 6000 | +CONFIG_AUTOFS_FS=y | ||
| 6001 | +CONFIG_AUTOFS4_FS=y | ||
| 6002 | +# CONFIG_FUSE_FS is not set | ||
| 6003 | + | ||
| 6004 | +# | ||
| 6005 | +# Caches | ||
| 6006 | +# | ||
| 6007 | +# CONFIG_FSCACHE is not set | ||
| 6008 | + | ||
| 6009 | +# | ||
| 6010 | +# CD-ROM/DVD Filesystems | ||
| 6011 | +# | ||
| 6012 | +# CONFIG_ISO9660_FS is not set | ||
| 6013 | +# CONFIG_UDF_FS is not set | ||
| 6014 | + | ||
| 6015 | +# | ||
| 6016 | +# DOS/FAT/NT Filesystems | ||
| 6017 | +# | ||
| 6018 | +CONFIG_FAT_FS=y | ||
| 6019 | +CONFIG_MSDOS_FS=y | ||
| 6020 | +CONFIG_VFAT_FS=y | ||
| 6021 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 6022 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 6023 | +# CONFIG_NTFS_FS is not set | ||
| 6024 | + | ||
| 6025 | +# | ||
| 6026 | +# Pseudo filesystems | ||
| 6027 | +# | ||
| 6028 | +CONFIG_PROC_FS=y | ||
| 6029 | +# CONFIG_PROC_KCORE is not set | ||
| 6030 | +CONFIG_PROC_SYSCTL=y | ||
| 6031 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 6032 | +CONFIG_SYSFS=y | ||
| 6033 | +CONFIG_TMPFS=y | ||
| 6034 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 6035 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 6036 | +# CONFIG_CONFIGFS_FS is not set | ||
| 6037 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 6038 | +# CONFIG_ADFS_FS is not set | ||
| 6039 | +# CONFIG_AFFS_FS is not set | ||
| 6040 | +# CONFIG_ECRYPT_FS is not set | ||
| 6041 | +# CONFIG_HFS_FS is not set | ||
| 6042 | +# CONFIG_HFSPLUS_FS is not set | ||
| 6043 | +# CONFIG_BEFS_FS is not set | ||
| 6044 | +# CONFIG_BFS_FS is not set | ||
| 6045 | +# CONFIG_EFS_FS is not set | ||
| 6046 | +CONFIG_JFFS2_FS=y | ||
| 6047 | +CONFIG_JFFS2_FS_DEBUG=0 | ||
| 6048 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 6049 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 6050 | +# CONFIG_JFFS2_SUMMARY is not set | ||
| 6051 | +# CONFIG_JFFS2_FS_XATTR is not set | ||
| 6052 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 6053 | +CONFIG_JFFS2_ZLIB=y | ||
| 6054 | +# CONFIG_JFFS2_LZO is not set | ||
| 6055 | +CONFIG_JFFS2_RTIME=y | ||
| 6056 | +# CONFIG_JFFS2_RUBIN is not set | ||
| 6057 | +# CONFIG_LOGFS is not set | ||
| 6058 | +# CONFIG_CRAMFS is not set | ||
| 6059 | +# CONFIG_SQUASHFS is not set | ||
| 6060 | +# CONFIG_VXFS_FS is not set | ||
| 6061 | +# CONFIG_MINIX_FS is not set | ||
| 6062 | +# CONFIG_OMFS_FS is not set | ||
| 6063 | +# CONFIG_HPFS_FS is not set | ||
| 6064 | +# CONFIG_QNX4FS_FS is not set | ||
| 6065 | +# CONFIG_ROMFS_FS is not set | ||
| 6066 | +# CONFIG_SYSV_FS is not set | ||
| 6067 | +# CONFIG_UFS_FS is not set | ||
| 6068 | +CONFIG_NETWORK_FILESYSTEMS=y | ||
| 6069 | +CONFIG_NFS_FS=y | ||
| 6070 | +CONFIG_NFS_V3=y | ||
| 6071 | +CONFIG_NFS_V3_ACL=y | ||
| 6072 | +CONFIG_NFS_V4=y | ||
| 6073 | +# CONFIG_NFS_V4_1 is not set | ||
| 6074 | +CONFIG_ROOT_NFS=y | ||
| 6075 | +# CONFIG_NFSD is not set | ||
| 6076 | +CONFIG_LOCKD=y | ||
| 6077 | +CONFIG_LOCKD_V4=y | ||
| 6078 | +CONFIG_NFS_ACL_SUPPORT=y | ||
| 6079 | +CONFIG_NFS_COMMON=y | ||
| 6080 | +CONFIG_SUNRPC=y | ||
| 6081 | +CONFIG_SUNRPC_GSS=y | ||
| 6082 | +CONFIG_RPCSEC_GSS_KRB5=y | ||
| 6083 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 6084 | +# CONFIG_SMB_FS is not set | ||
| 6085 | +# CONFIG_CEPH_FS is not set | ||
| 6086 | +# CONFIG_CIFS is not set | ||
| 6087 | +# CONFIG_NCP_FS is not set | ||
| 6088 | +# CONFIG_CODA_FS is not set | ||
| 6089 | +# CONFIG_AFS_FS is not set | ||
| 6090 | + | ||
| 6091 | +# | ||
| 6092 | +# Partition Types | ||
| 6093 | +# | ||
| 6094 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 6095 | +CONFIG_MSDOS_PARTITION=y | ||
| 6096 | +CONFIG_NLS=y | ||
| 6097 | +CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 6098 | +CONFIG_NLS_CODEPAGE_437=y | ||
| 6099 | +# CONFIG_NLS_CODEPAGE_737 is not set | ||
| 6100 | +# CONFIG_NLS_CODEPAGE_775 is not set | ||
| 6101 | +CONFIG_NLS_CODEPAGE_850=y | ||
| 6102 | +# CONFIG_NLS_CODEPAGE_852 is not set | ||
| 6103 | +# CONFIG_NLS_CODEPAGE_855 is not set | ||
| 6104 | +# CONFIG_NLS_CODEPAGE_857 is not set | ||
| 6105 | +# CONFIG_NLS_CODEPAGE_860 is not set | ||
| 6106 | +# CONFIG_NLS_CODEPAGE_861 is not set | ||
| 6107 | +# CONFIG_NLS_CODEPAGE_862 is not set | ||
| 6108 | +# CONFIG_NLS_CODEPAGE_863 is not set | ||
| 6109 | +# CONFIG_NLS_CODEPAGE_864 is not set | ||
| 6110 | +CONFIG_NLS_CODEPAGE_865=y | ||
| 6111 | +# CONFIG_NLS_CODEPAGE_866 is not set | ||
| 6112 | +# CONFIG_NLS_CODEPAGE_869 is not set | ||
| 6113 | +# CONFIG_NLS_CODEPAGE_936 is not set | ||
| 6114 | +# CONFIG_NLS_CODEPAGE_950 is not set | ||
| 6115 | +# CONFIG_NLS_CODEPAGE_932 is not set | ||
| 6116 | +# CONFIG_NLS_CODEPAGE_949 is not set | ||
| 6117 | +# CONFIG_NLS_CODEPAGE_874 is not set | ||
| 6118 | +# CONFIG_NLS_ISO8859_8 is not set | ||
| 6119 | +# CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 6120 | +# CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 6121 | +CONFIG_NLS_ASCII=y | ||
| 6122 | +CONFIG_NLS_ISO8859_1=y | ||
| 6123 | +# CONFIG_NLS_ISO8859_2 is not set | ||
| 6124 | +# CONFIG_NLS_ISO8859_3 is not set | ||
| 6125 | +# CONFIG_NLS_ISO8859_4 is not set | ||
| 6126 | +# CONFIG_NLS_ISO8859_5 is not set | ||
| 6127 | +# CONFIG_NLS_ISO8859_6 is not set | ||
| 6128 | +# CONFIG_NLS_ISO8859_7 is not set | ||
| 6129 | +# CONFIG_NLS_ISO8859_9 is not set | ||
| 6130 | +# CONFIG_NLS_ISO8859_13 is not set | ||
| 6131 | +# CONFIG_NLS_ISO8859_14 is not set | ||
| 6132 | +# CONFIG_NLS_ISO8859_15 is not set | ||
| 6133 | +# CONFIG_NLS_KOI8_R is not set | ||
| 6134 | +# CONFIG_NLS_KOI8_U is not set | ||
| 6135 | +# CONFIG_NLS_UTF8 is not set | ||
| 6136 | +# CONFIG_DLM is not set | ||
| 6137 | +# CONFIG_BINARY_PRINTF is not set | ||
| 6138 | + | ||
| 6139 | +# | ||
| 6140 | +# Library routines | ||
| 6141 | +# | ||
| 6142 | +CONFIG_BITREVERSE=y | ||
| 6143 | +CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 6144 | +CONFIG_CRC_CCITT=m | ||
| 6145 | +# CONFIG_CRC16 is not set | ||
| 6146 | +# CONFIG_CRC_T10DIF is not set | ||
| 6147 | +# CONFIG_CRC_ITU_T is not set | ||
| 6148 | +CONFIG_CRC32=y | ||
| 6149 | +# CONFIG_CRC7 is not set | ||
| 6150 | +# CONFIG_LIBCRC32C is not set | ||
| 6151 | +CONFIG_ZLIB_INFLATE=y | ||
| 6152 | +CONFIG_ZLIB_DEFLATE=y | ||
| 6153 | +CONFIG_DECOMPRESS_GZIP=y | ||
| 6154 | +CONFIG_HAS_IOMEM=y | ||
| 6155 | +CONFIG_HAS_IOPORT=y | ||
| 6156 | +CONFIG_HAS_DMA=y | ||
| 6157 | +CONFIG_NLATTR=y | ||
| 6158 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 6159 | + | ||
| 6160 | +# | ||
| 6161 | +# Kernel hacking | ||
| 6162 | +# | ||
| 6163 | +# CONFIG_PRINTK_TIME is not set | ||
| 6164 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 6165 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 6166 | +CONFIG_FRAME_WARN=1024 | ||
| 6167 | +CONFIG_MAGIC_SYSRQ=y | ||
| 6168 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 6169 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 6170 | +CONFIG_DEBUG_FS=y | ||
| 6171 | +# CONFIG_HEADERS_CHECK is not set | ||
| 6172 | +CONFIG_DEBUG_KERNEL=y | ||
| 6173 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 6174 | +# CONFIG_DETECT_SOFTLOCKUP is not set | ||
| 6175 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 6176 | +CONFIG_SCHED_DEBUG=y | ||
| 6177 | +# CONFIG_SCHEDSTATS is not set | ||
| 6178 | +# CONFIG_TIMER_STATS is not set | ||
| 6179 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 6180 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 6181 | +# CONFIG_SLUB_STATS is not set | ||
| 6182 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 6183 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 6184 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 6185 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 6186 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 6187 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 6188 | +# CONFIG_PROVE_LOCKING is not set | ||
| 6189 | +# CONFIG_LOCK_STAT is not set | ||
| 6190 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 6191 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 6192 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 6193 | +# CONFIG_DEBUG_HIGHMEM is not set | ||
| 6194 | +CONFIG_DEBUG_BUGVERBOSE=y | ||
| 6195 | +CONFIG_DEBUG_INFO=y | ||
| 6196 | +# CONFIG_DEBUG_VM is not set | ||
| 6197 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 6198 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 6199 | +# CONFIG_DEBUG_LIST is not set | ||
| 6200 | +# CONFIG_DEBUG_SG is not set | ||
| 6201 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 6202 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 6203 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 6204 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 6205 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 6206 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 6207 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 6208 | +# CONFIG_LKDTM is not set | ||
| 6209 | +# CONFIG_FAULT_INJECTION is not set | ||
| 6210 | +# CONFIG_LATENCYTOP is not set | ||
| 6211 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 6212 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 6213 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 6214 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 6215 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 6216 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 6217 | +CONFIG_RING_BUFFER=y | ||
| 6218 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 6219 | +CONFIG_TRACING_SUPPORT=y | ||
| 6220 | +CONFIG_FTRACE=y | ||
| 6221 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 6222 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 6223 | +# CONFIG_SCHED_TRACER is not set | ||
| 6224 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 6225 | +# CONFIG_BOOT_TRACER is not set | ||
| 6226 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 6227 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 6228 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 6229 | +# CONFIG_STACK_TRACER is not set | ||
| 6230 | +# CONFIG_KMEMTRACE is not set | ||
| 6231 | +# CONFIG_WORKQUEUE_TRACER is not set | ||
| 6232 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 6233 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 6234 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 6235 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 6236 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 6237 | +# CONFIG_SAMPLES is not set | ||
| 6238 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 6239 | +# CONFIG_KGDB is not set | ||
| 6240 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 6241 | +CONFIG_PPC_WERROR=y | ||
| 6242 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 6243 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 6244 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 6245 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 6246 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 6247 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 6248 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 6249 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 6250 | +CONFIG_XMON=y | ||
| 6251 | +CONFIG_XMON_DEFAULT=y | ||
| 6252 | +CONFIG_XMON_DISASSEMBLY=y | ||
| 6253 | +CONFIG_DEBUGGER=y | ||
| 6254 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 6255 | +# CONFIG_BDI_SWITCH is not set | ||
| 6256 | +# CONFIG_PPC_EARLY_DEBUG is not set | ||
| 6257 | + | ||
| 6258 | +# | ||
| 6259 | +# Security options | ||
| 6260 | +# | ||
| 6261 | +CONFIG_KEYS=y | ||
| 6262 | +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 6263 | +# CONFIG_SECURITY is not set | ||
| 6264 | +# CONFIG_SECURITYFS is not set | ||
| 6265 | +# CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 6266 | +# CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 6267 | +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 6268 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 6269 | +CONFIG_DEFAULT_SECURITY="" | ||
| 6270 | +CONFIG_CRYPTO=y | ||
| 6271 | + | ||
| 6272 | +# | ||
| 6273 | +# Crypto core or helper | ||
| 6274 | +# | ||
| 6275 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 6276 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 6277 | +CONFIG_CRYPTO_AEAD=y | ||
| 6278 | +CONFIG_CRYPTO_AEAD2=y | ||
| 6279 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 6280 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 6281 | +CONFIG_CRYPTO_HASH=y | ||
| 6282 | +CONFIG_CRYPTO_HASH2=y | ||
| 6283 | +CONFIG_CRYPTO_RNG=y | ||
| 6284 | +CONFIG_CRYPTO_RNG2=y | ||
| 6285 | +CONFIG_CRYPTO_PCOMP=y | ||
| 6286 | +CONFIG_CRYPTO_MANAGER=y | ||
| 6287 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 6288 | +CONFIG_CRYPTO_GF128MUL=y | ||
| 6289 | +CONFIG_CRYPTO_NULL=y | ||
| 6290 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 6291 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 6292 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 6293 | +CONFIG_CRYPTO_AUTHENC=y | ||
| 6294 | +# CONFIG_CRYPTO_TEST is not set | ||
| 6295 | + | ||
| 6296 | +# | ||
| 6297 | +# Authenticated Encryption with Associated Data | ||
| 6298 | +# | ||
| 6299 | +# CONFIG_CRYPTO_CCM is not set | ||
| 6300 | +CONFIG_CRYPTO_GCM=y | ||
| 6301 | +CONFIG_CRYPTO_SEQIV=y | ||
| 6302 | + | ||
| 6303 | +# | ||
| 6304 | +# Block modes | ||
| 6305 | +# | ||
| 6306 | +CONFIG_CRYPTO_CBC=y | ||
| 6307 | +CONFIG_CRYPTO_CTR=y | ||
| 6308 | +# CONFIG_CRYPTO_CTS is not set | ||
| 6309 | +# CONFIG_CRYPTO_ECB is not set | ||
| 6310 | +# CONFIG_CRYPTO_LRW is not set | ||
| 6311 | +# CONFIG_CRYPTO_PCBC is not set | ||
| 6312 | +# CONFIG_CRYPTO_XTS is not set | ||
| 6313 | + | ||
| 6314 | +# | ||
| 6315 | +# Hash modes | ||
| 6316 | +# | ||
| 6317 | +CONFIG_CRYPTO_HMAC=y | ||
| 6318 | +CONFIG_CRYPTO_XCBC=y | ||
| 6319 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 6320 | + | ||
| 6321 | +# | ||
| 6322 | +# Digest | ||
| 6323 | +# | ||
| 6324 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 6325 | +CONFIG_CRYPTO_GHASH=y | ||
| 6326 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 6327 | +CONFIG_CRYPTO_MD5=y | ||
| 6328 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 6329 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 6330 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 6331 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 6332 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 6333 | +CONFIG_CRYPTO_SHA1=y | ||
| 6334 | +CONFIG_CRYPTO_SHA256=y | ||
| 6335 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 6336 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 6337 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 6338 | + | ||
| 6339 | +# | ||
| 6340 | +# Ciphers | ||
| 6341 | +# | ||
| 6342 | +CONFIG_CRYPTO_AES=y | ||
| 6343 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 6344 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 6345 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 6346 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 6347 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 6348 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 6349 | +CONFIG_CRYPTO_DES=y | ||
| 6350 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 6351 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 6352 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 6353 | +# CONFIG_CRYPTO_SEED is not set | ||
| 6354 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 6355 | +# CONFIG_CRYPTO_TEA is not set | ||
| 6356 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 6357 | + | ||
| 6358 | +# | ||
| 6359 | +# Compression | ||
| 6360 | +# | ||
| 6361 | +CONFIG_CRYPTO_DEFLATE=y | ||
| 6362 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 6363 | +# CONFIG_CRYPTO_LZO is not set | ||
| 6364 | + | ||
| 6365 | +# | ||
| 6366 | +# Random Number Generation | ||
| 6367 | +# | ||
| 6368 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 6369 | +CONFIG_CRYPTO_HW=y | ||
| 6370 | +# CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 6371 | +CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 6372 | +# CONFIG_PPC_CLOCK is not set | ||
| 6373 | +# CONFIG_VIRTUALIZATION is not set | ||
| 6374 | diff --git a/arch/powerpc/configs/acp_mel_defconfig b/arch/powerpc/configs/acp_mel_defconfig | ||
| 6375 | new file mode 100644 | ||
| 6376 | index 0000000..d18cc50 | ||
| 6377 | --- /dev/null | ||
| 6378 | +++ b/arch/powerpc/configs/acp_mel_defconfig | ||
| 6379 | @@ -0,0 +1,1859 @@ | ||
| 6380 | +# | ||
| 6381 | +# Automatically generated file; DO NOT EDIT. | ||
| 6382 | +# Linux/powerpc 3.1.0-rc9 Kernel Configuration | ||
| 6383 | +# | ||
| 6384 | +# CONFIG_PPC64 is not set | ||
| 6385 | + | ||
| 6386 | +# | ||
| 6387 | +# Processor support | ||
| 6388 | +# | ||
| 6389 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 6390 | +# CONFIG_PPC_85xx is not set | ||
| 6391 | +# CONFIG_PPC_8xx is not set | ||
| 6392 | +# CONFIG_40x is not set | ||
| 6393 | +CONFIG_44x=y | ||
| 6394 | +# CONFIG_E200 is not set | ||
| 6395 | +CONFIG_PPC_FPU=y | ||
| 6396 | +CONFIG_4xx=y | ||
| 6397 | +CONFIG_BOOKE=y | ||
| 6398 | +CONFIG_PTE_64BIT=y | ||
| 6399 | +CONFIG_PHYS_64BIT=y | ||
| 6400 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 6401 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 6402 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 6403 | +CONFIG_SMP=y | ||
| 6404 | +CONFIG_NR_CPUS=4 | ||
| 6405 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 6406 | +CONFIG_PPC32=y | ||
| 6407 | +CONFIG_32BIT=y | ||
| 6408 | +CONFIG_WORD_SIZE=32 | ||
| 6409 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 6410 | +CONFIG_ARCH_DMA_ADDR_T_64BIT=y | ||
| 6411 | +CONFIG_MMU=y | ||
| 6412 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 6413 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 6414 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 6415 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 6416 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 6417 | +CONFIG_NR_IRQS=512 | ||
| 6418 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 6419 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 6420 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 6421 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 6422 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 6423 | +CONFIG_GENERIC_LOCKBREAK=y | ||
| 6424 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 6425 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 6426 | +CONFIG_GENERIC_GPIO=y | ||
| 6427 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 6428 | +CONFIG_PPC=y | ||
| 6429 | +CONFIG_EARLY_PRINTK=y | ||
| 6430 | +CONFIG_GENERIC_NVRAM=y | ||
| 6431 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 6432 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 6433 | +CONFIG_PPC_OF=y | ||
| 6434 | +CONFIG_PPC_UDBG_16550=y | ||
| 6435 | +CONFIG_GENERIC_TBSYNC=y | ||
| 6436 | +CONFIG_AUDIT_ARCH=y | ||
| 6437 | +CONFIG_GENERIC_BUG=y | ||
| 6438 | +# CONFIG_EPAPR_BOOT is not set | ||
| 6439 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 6440 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 6441 | +CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
| 6442 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 6443 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 6444 | +CONFIG_PPC_DCR=y | ||
| 6445 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 6446 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 6447 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 6448 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 6449 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 6450 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 6451 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 6452 | +CONFIG_HAVE_IRQ_WORK=y | ||
| 6453 | + | ||
| 6454 | +# | ||
| 6455 | +# General setup | ||
| 6456 | +# | ||
| 6457 | +CONFIG_EXPERIMENTAL=y | ||
| 6458 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 6459 | +CONFIG_CROSS_COMPILE="powerpc-linux-gnu-" | ||
| 6460 | +CONFIG_LOCALVERSION="" | ||
| 6461 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 6462 | +CONFIG_DEFAULT_HOSTNAME="el-paso" | ||
| 6463 | +CONFIG_SWAP=y | ||
| 6464 | +CONFIG_SYSVIPC=y | ||
| 6465 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 6466 | +CONFIG_POSIX_MQUEUE=y | ||
| 6467 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 6468 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 6469 | +# CONFIG_FHANDLE is not set | ||
| 6470 | +# CONFIG_TASKSTATS is not set | ||
| 6471 | +# CONFIG_AUDIT is not set | ||
| 6472 | +CONFIG_HAVE_GENERIC_HARDIRQS=y | ||
| 6473 | + | ||
| 6474 | +# | ||
| 6475 | +# IRQ subsystem | ||
| 6476 | +# | ||
| 6477 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 6478 | +CONFIG_HAVE_SPARSE_IRQ=y | ||
| 6479 | +CONFIG_GENERIC_IRQ_SHOW=y | ||
| 6480 | +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y | ||
| 6481 | +CONFIG_SPARSE_IRQ=y | ||
| 6482 | + | ||
| 6483 | +# | ||
| 6484 | +# RCU Subsystem | ||
| 6485 | +# | ||
| 6486 | +CONFIG_TREE_PREEMPT_RCU=y | ||
| 6487 | +CONFIG_PREEMPT_RCU=y | ||
| 6488 | +# CONFIG_RCU_TRACE is not set | ||
| 6489 | +CONFIG_RCU_FANOUT=32 | ||
| 6490 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 6491 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 6492 | +# CONFIG_RCU_BOOST is not set | ||
| 6493 | +CONFIG_IKCONFIG=m | ||
| 6494 | +CONFIG_IKCONFIG_PROC=y | ||
| 6495 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 6496 | +# CONFIG_CGROUPS is not set | ||
| 6497 | +# CONFIG_NAMESPACES is not set | ||
| 6498 | +# CONFIG_SCHED_AUTOGROUP is not set | ||
| 6499 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 6500 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 6501 | +# CONFIG_RELAY is not set | ||
| 6502 | +# CONFIG_BLK_DEV_INITRD is not set | ||
| 6503 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 6504 | +CONFIG_SYSCTL=y | ||
| 6505 | +CONFIG_ANON_INODES=y | ||
| 6506 | +CONFIG_EXPERT=y | ||
| 6507 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 6508 | +CONFIG_KALLSYMS=y | ||
| 6509 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 6510 | +CONFIG_HOTPLUG=y | ||
| 6511 | +CONFIG_PRINTK=y | ||
| 6512 | +CONFIG_BUG=y | ||
| 6513 | +CONFIG_ELF_CORE=y | ||
| 6514 | +CONFIG_BASE_FULL=y | ||
| 6515 | +CONFIG_FUTEX=y | ||
| 6516 | +CONFIG_EPOLL=y | ||
| 6517 | +CONFIG_SIGNALFD=y | ||
| 6518 | +CONFIG_TIMERFD=y | ||
| 6519 | +CONFIG_EVENTFD=y | ||
| 6520 | +CONFIG_SHMEM=y | ||
| 6521 | +CONFIG_AIO=y | ||
| 6522 | +CONFIG_EMBEDDED=y | ||
| 6523 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 6524 | + | ||
| 6525 | +# | ||
| 6526 | +# Kernel Performance Events And Counters | ||
| 6527 | +# | ||
| 6528 | +# CONFIG_PERF_EVENTS is not set | ||
| 6529 | +# CONFIG_PERF_COUNTERS is not set | ||
| 6530 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 6531 | +CONFIG_PCI_QUIRKS=y | ||
| 6532 | +CONFIG_SLUB_DEBUG=y | ||
| 6533 | +CONFIG_COMPAT_BRK=y | ||
| 6534 | +# CONFIG_SLAB is not set | ||
| 6535 | +CONFIG_SLUB=y | ||
| 6536 | +# CONFIG_SLOB is not set | ||
| 6537 | +CONFIG_PROFILING=y | ||
| 6538 | +CONFIG_OPROFILE=y | ||
| 6539 | +CONFIG_HAVE_OPROFILE=y | ||
| 6540 | +# CONFIG_KPROBES is not set | ||
| 6541 | +# CONFIG_JUMP_LABEL is not set | ||
| 6542 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 6543 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 6544 | +CONFIG_HAVE_KPROBES=y | ||
| 6545 | +CONFIG_HAVE_KRETPROBES=y | ||
| 6546 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 6547 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 6548 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 6549 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 6550 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 6551 | +CONFIG_HAVE_ARCH_JUMP_LABEL=y | ||
| 6552 | +CONFIG_HAVE_RCU_TABLE_FREE=y | ||
| 6553 | +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y | ||
| 6554 | + | ||
| 6555 | +# | ||
| 6556 | +# GCOV-based kernel profiling | ||
| 6557 | +# | ||
| 6558 | +# CONFIG_GCOV_KERNEL is not set | ||
| 6559 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 6560 | +CONFIG_SLABINFO=y | ||
| 6561 | +CONFIG_RT_MUTEXES=y | ||
| 6562 | +CONFIG_BASE_SMALL=0 | ||
| 6563 | +CONFIG_MODULES=y | ||
| 6564 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 6565 | +CONFIG_MODULE_UNLOAD=y | ||
| 6566 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 6567 | +CONFIG_MODVERSIONS=y | ||
| 6568 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 6569 | +CONFIG_STOP_MACHINE=y | ||
| 6570 | +CONFIG_BLOCK=y | ||
| 6571 | +CONFIG_LBDAF=y | ||
| 6572 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 6573 | +# CONFIG_BLK_DEV_BSGLIB is not set | ||
| 6574 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 6575 | + | ||
| 6576 | +# | ||
| 6577 | +# IO Schedulers | ||
| 6578 | +# | ||
| 6579 | +CONFIG_IOSCHED_NOOP=y | ||
| 6580 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 6581 | +CONFIG_IOSCHED_CFQ=y | ||
| 6582 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 6583 | +CONFIG_DEFAULT_CFQ=y | ||
| 6584 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 6585 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 6586 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 6587 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 6588 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 6589 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 6590 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 6591 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 6592 | +# CONFIG_INLINE_SPIN_UNLOCK is not set | ||
| 6593 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 6594 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
| 6595 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 6596 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 6597 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 6598 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 6599 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 6600 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 6601 | +# CONFIG_INLINE_READ_UNLOCK is not set | ||
| 6602 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 6603 | +# CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
| 6604 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 6605 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 6606 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 6607 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 6608 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 6609 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 6610 | +# CONFIG_INLINE_WRITE_UNLOCK is not set | ||
| 6611 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 6612 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
| 6613 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 6614 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 6615 | +CONFIG_FREEZER=y | ||
| 6616 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 6617 | +# CONFIG_PPC4xx_MSI is not set | ||
| 6618 | +CONFIG_PPC_MSI_BITMAP=y | ||
| 6619 | +# CONFIG_PPC_XICS is not set | ||
| 6620 | +# CONFIG_PPC_ICP_NATIVE is not set | ||
| 6621 | +# CONFIG_PPC_ICP_HV is not set | ||
| 6622 | +# CONFIG_PPC_ICS_RTAS is not set | ||
| 6623 | + | ||
| 6624 | +# | ||
| 6625 | +# Platform support | ||
| 6626 | +# | ||
| 6627 | +# CONFIG_PPC_CELL is not set | ||
| 6628 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 6629 | +# CONFIG_PQ2ADS is not set | ||
| 6630 | +CONFIG_PPC_47x=y | ||
| 6631 | +# CONFIG_BAMBOO is not set | ||
| 6632 | +# CONFIG_BLUESTONE is not set | ||
| 6633 | +# CONFIG_EBONY is not set | ||
| 6634 | +# CONFIG_SAM440EP is not set | ||
| 6635 | +# CONFIG_SEQUOIA is not set | ||
| 6636 | +# CONFIG_TAISHAN is not set | ||
| 6637 | +# CONFIG_KATMAI is not set | ||
| 6638 | +# CONFIG_RAINIER is not set | ||
| 6639 | +# CONFIG_WARP is not set | ||
| 6640 | +# CONFIG_ARCHES is not set | ||
| 6641 | +# CONFIG_CANYONLANDS is not set | ||
| 6642 | +# CONFIG_GLACIER is not set | ||
| 6643 | +# CONFIG_REDWOOD is not set | ||
| 6644 | +# CONFIG_EIGER is not set | ||
| 6645 | +# CONFIG_YOSEMITE is not set | ||
| 6646 | +# CONFIG_ISS4xx is not set | ||
| 6647 | +# CONFIG_ICON is not set | ||
| 6648 | +CONFIG_ACP=y | ||
| 6649 | +# CONFIG_ACPISS is not set | ||
| 6650 | +# CONFIG_ACP_X1V1 is not set | ||
| 6651 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 6652 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 6653 | +CONFIG_PPC4xx_GPIO=y | ||
| 6654 | +CONFIG_440GP=y | ||
| 6655 | +# CONFIG_PPC_WSP is not set | ||
| 6656 | +# CONFIG_KVM_GUEST is not set | ||
| 6657 | +# CONFIG_IPIC is not set | ||
| 6658 | +CONFIG_MPIC=y | ||
| 6659 | +# CONFIG_PPC_EPAPR_HV_PIC is not set | ||
| 6660 | +# CONFIG_MPIC_WEIRD is not set | ||
| 6661 | +# CONFIG_PPC_I8259 is not set | ||
| 6662 | +# CONFIG_PPC_RTAS is not set | ||
| 6663 | +# CONFIG_MMIO_NVRAM is not set | ||
| 6664 | +# CONFIG_MPIC_U3_HT_IRQS is not set | ||
| 6665 | +# CONFIG_PPC_MPC106 is not set | ||
| 6666 | +# CONFIG_PPC_970_NAP is not set | ||
| 6667 | +# CONFIG_PPC_P7_NAP is not set | ||
| 6668 | + | ||
| 6669 | +# | ||
| 6670 | +# CPU Frequency scaling | ||
| 6671 | +# | ||
| 6672 | +# CONFIG_CPU_FREQ is not set | ||
| 6673 | +# CONFIG_FSL_ULI1575 is not set | ||
| 6674 | +CONFIG_SIMPLE_GPIO=y | ||
| 6675 | + | ||
| 6676 | +# | ||
| 6677 | +# Kernel options | ||
| 6678 | +# | ||
| 6679 | +CONFIG_HIGHMEM=y | ||
| 6680 | +CONFIG_TICK_ONESHOT=y | ||
| 6681 | +# CONFIG_NO_HZ is not set | ||
| 6682 | +CONFIG_HIGH_RES_TIMERS=y | ||
| 6683 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 6684 | +CONFIG_HZ_100=y | ||
| 6685 | +# CONFIG_HZ_250 is not set | ||
| 6686 | +# CONFIG_HZ_300 is not set | ||
| 6687 | +# CONFIG_HZ_1000 is not set | ||
| 6688 | +CONFIG_HZ=100 | ||
| 6689 | +CONFIG_SCHED_HRTICK=y | ||
| 6690 | +# CONFIG_PREEMPT_NONE is not set | ||
| 6691 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 6692 | +CONFIG_PREEMPT=y | ||
| 6693 | +CONFIG_PREEMPT_COUNT=y | ||
| 6694 | +CONFIG_BINFMT_ELF=y | ||
| 6695 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 6696 | +# CONFIG_HAVE_AOUT is not set | ||
| 6697 | +# CONFIG_BINFMT_MISC is not set | ||
| 6698 | +# CONFIG_MATH_EMULATION is not set | ||
| 6699 | +# CONFIG_IOMMU_HELPER is not set | ||
| 6700 | +# CONFIG_SWIOTLB is not set | ||
| 6701 | +CONFIG_HOTPLUG_CPU=y | ||
| 6702 | +CONFIG_ARCH_CPU_PROBE_RELEASE=y | ||
| 6703 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 6704 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 6705 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 6706 | +# CONFIG_IRQ_ALL_CPUS is not set | ||
| 6707 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 6708 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 6709 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 6710 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 6711 | +CONFIG_FLATMEM_MANUAL=y | ||
| 6712 | +CONFIG_FLATMEM=y | ||
| 6713 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 6714 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 6715 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 6716 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 6717 | +# CONFIG_COMPACTION is not set | ||
| 6718 | +CONFIG_MIGRATION=y | ||
| 6719 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 6720 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 6721 | +CONFIG_BOUNCE=y | ||
| 6722 | +CONFIG_VIRT_TO_BUS=y | ||
| 6723 | +# CONFIG_KSM is not set | ||
| 6724 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 6725 | +# CONFIG_CLEANCACHE is not set | ||
| 6726 | +CONFIG_STDBINUTILS=y | ||
| 6727 | +CONFIG_PPC_4K_PAGES=y | ||
| 6728 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 6729 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 6730 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 6731 | +# CONFIG_CMDLINE_BOOL is not set | ||
| 6732 | +CONFIG_EXTRA_TARGETS="" | ||
| 6733 | +CONFIG_SUSPEND=y | ||
| 6734 | +CONFIG_SUSPEND_FREEZER=y | ||
| 6735 | +# CONFIG_HIBERNATION is not set | ||
| 6736 | +CONFIG_PM_SLEEP=y | ||
| 6737 | +CONFIG_PM_SLEEP_SMP=y | ||
| 6738 | +# CONFIG_PM_RUNTIME is not set | ||
| 6739 | +CONFIG_PM=y | ||
| 6740 | +# CONFIG_PM_DEBUG is not set | ||
| 6741 | +CONFIG_SECCOMP=y | ||
| 6742 | +CONFIG_ISA_DMA_API=y | ||
| 6743 | + | ||
| 6744 | +# | ||
| 6745 | +# Bus options | ||
| 6746 | +# | ||
| 6747 | +CONFIG_ZONE_DMA=y | ||
| 6748 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 6749 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 6750 | +CONFIG_GENERIC_ISA_DMA=y | ||
| 6751 | +CONFIG_PPC_INDIRECT_PCI=y | ||
| 6752 | +CONFIG_PPC4xx_CPM=y | ||
| 6753 | +CONFIG_4xx_SOC=y | ||
| 6754 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 6755 | +CONFIG_PCI=y | ||
| 6756 | +CONFIG_PCI_DOMAINS=y | ||
| 6757 | +CONFIG_PCI_SYSCALL=y | ||
| 6758 | +CONFIG_PCIEPORTBUS=y | ||
| 6759 | +# CONFIG_PCIEAER is not set | ||
| 6760 | +CONFIG_PCIEASPM=y | ||
| 6761 | +# CONFIG_PCIEASPM_DEBUG is not set | ||
| 6762 | +CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 6763 | +CONFIG_PCI_MSI=y | ||
| 6764 | +# CONFIG_PCI_DEBUG is not set | ||
| 6765 | +# CONFIG_PCI_STUB is not set | ||
| 6766 | +# CONFIG_PCI_IOV is not set | ||
| 6767 | +# CONFIG_PCCARD is not set | ||
| 6768 | +# CONFIG_HOTPLUG_PCI is not set | ||
| 6769 | +CONFIG_HAS_RAPIDIO=y | ||
| 6770 | +CONFIG_RAPIDIO=y | ||
| 6771 | +# CONFIG_FSL_RIO is not set | ||
| 6772 | +CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 6773 | +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 6774 | +# CONFIG_RAPIDIO_ACP is not set | ||
| 6775 | +CONFIG_RAPIDIO_TSI57X=y | ||
| 6776 | +CONFIG_RAPIDIO_CPS_XX=y | ||
| 6777 | +CONFIG_RAPIDIO_TSI568=y | ||
| 6778 | +# CONFIG_RAPIDIO_CPS_GEN2 is not set | ||
| 6779 | +CONFIG_RAPIDIO_TSI500=y | ||
| 6780 | +CONFIG_RAPIDIO_DEBUG=y | ||
| 6781 | + | ||
| 6782 | +# | ||
| 6783 | +# Advanced setup | ||
| 6784 | +# | ||
| 6785 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 6786 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 6787 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 6788 | +CONFIG_RELOCATABLE=y | ||
| 6789 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 6790 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 6791 | +CONFIG_KERNEL_START_BOOL=y | ||
| 6792 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 6793 | +CONFIG_PHYSICAL_START_BOOL=y | ||
| 6794 | +CONFIG_PHYSICAL_START=0x00400000 | ||
| 6795 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 6796 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 6797 | +CONFIG_NET=y | ||
| 6798 | + | ||
| 6799 | +# | ||
| 6800 | +# Networking options | ||
| 6801 | +# | ||
| 6802 | +CONFIG_PACKET=y | ||
| 6803 | +CONFIG_UNIX=y | ||
| 6804 | +CONFIG_XFRM=y | ||
| 6805 | +CONFIG_XFRM_USER=y | ||
| 6806 | +CONFIG_XFRM_SUB_POLICY=y | ||
| 6807 | +CONFIG_XFRM_MIGRATE=y | ||
| 6808 | +CONFIG_XFRM_STATISTICS=y | ||
| 6809 | +CONFIG_XFRM_IPCOMP=y | ||
| 6810 | +CONFIG_NET_KEY=y | ||
| 6811 | +# CONFIG_NET_KEY_MIGRATE is not set | ||
| 6812 | +CONFIG_INET=y | ||
| 6813 | +CONFIG_IP_MULTICAST=y | ||
| 6814 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 6815 | +CONFIG_IP_PNP=y | ||
| 6816 | +CONFIG_IP_PNP_DHCP=y | ||
| 6817 | +CONFIG_IP_PNP_BOOTP=y | ||
| 6818 | +CONFIG_IP_PNP_RARP=y | ||
| 6819 | +CONFIG_NET_IPIP=y | ||
| 6820 | +# CONFIG_NET_IPGRE_DEMUX is not set | ||
| 6821 | +# CONFIG_IP_MROUTE is not set | ||
| 6822 | +# CONFIG_ARPD is not set | ||
| 6823 | +CONFIG_SYN_COOKIES=y | ||
| 6824 | +CONFIG_INET_AH=y | ||
| 6825 | +CONFIG_INET_ESP=y | ||
| 6826 | +CONFIG_INET_IPCOMP=y | ||
| 6827 | +CONFIG_INET_XFRM_TUNNEL=y | ||
| 6828 | +CONFIG_INET_TUNNEL=y | ||
| 6829 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 6830 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 6831 | +CONFIG_INET_XFRM_MODE_BEET=y | ||
| 6832 | +# CONFIG_INET_LRO is not set | ||
| 6833 | +CONFIG_INET_DIAG=y | ||
| 6834 | +CONFIG_INET_TCP_DIAG=y | ||
| 6835 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 6836 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 6837 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 6838 | +# CONFIG_TCP_MD5SIG is not set | ||
| 6839 | +CONFIG_IPV6=y | ||
| 6840 | +# CONFIG_IPV6_PRIVACY is not set | ||
| 6841 | +# CONFIG_IPV6_ROUTER_PREF is not set | ||
| 6842 | +# CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 6843 | +CONFIG_INET6_AH=y | ||
| 6844 | +CONFIG_INET6_ESP=y | ||
| 6845 | +CONFIG_INET6_IPCOMP=y | ||
| 6846 | +CONFIG_IPV6_MIP6=y | ||
| 6847 | +CONFIG_INET6_XFRM_TUNNEL=y | ||
| 6848 | +CONFIG_INET6_TUNNEL=y | ||
| 6849 | +CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 6850 | +CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 6851 | +CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 6852 | +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 6853 | +CONFIG_IPV6_SIT=y | ||
| 6854 | +# CONFIG_IPV6_SIT_6RD is not set | ||
| 6855 | +CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 6856 | +CONFIG_IPV6_TUNNEL=y | ||
| 6857 | +# CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 6858 | +# CONFIG_IPV6_MROUTE is not set | ||
| 6859 | +CONFIG_NETWORK_SECMARK=y | ||
| 6860 | +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set | ||
| 6861 | +CONFIG_NETFILTER=y | ||
| 6862 | +# CONFIG_NETFILTER_DEBUG is not set | ||
| 6863 | +CONFIG_NETFILTER_ADVANCED=y | ||
| 6864 | + | ||
| 6865 | +# | ||
| 6866 | +# Core Netfilter Configuration | ||
| 6867 | +# | ||
| 6868 | +# CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 6869 | +# CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 6870 | +# CONFIG_NF_CONNTRACK is not set | ||
| 6871 | +# CONFIG_NETFILTER_XTABLES is not set | ||
| 6872 | +# CONFIG_IP_VS is not set | ||
| 6873 | + | ||
| 6874 | +# | ||
| 6875 | +# IP: Netfilter Configuration | ||
| 6876 | +# | ||
| 6877 | +# CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 6878 | +# CONFIG_IP_NF_QUEUE is not set | ||
| 6879 | +# CONFIG_IP_NF_IPTABLES is not set | ||
| 6880 | +# CONFIG_IP_NF_ARPTABLES is not set | ||
| 6881 | + | ||
| 6882 | +# | ||
| 6883 | +# IPv6: Netfilter Configuration | ||
| 6884 | +# | ||
| 6885 | +# CONFIG_NF_DEFRAG_IPV6 is not set | ||
| 6886 | +# CONFIG_IP6_NF_QUEUE is not set | ||
| 6887 | +# CONFIG_IP6_NF_IPTABLES is not set | ||
| 6888 | +# CONFIG_IP_DCCP is not set | ||
| 6889 | +# CONFIG_IP_SCTP is not set | ||
| 6890 | +# CONFIG_RDS is not set | ||
| 6891 | +# CONFIG_TIPC is not set | ||
| 6892 | +# CONFIG_ATM is not set | ||
| 6893 | +# CONFIG_L2TP is not set | ||
| 6894 | +# CONFIG_BRIDGE is not set | ||
| 6895 | +# CONFIG_NET_DSA is not set | ||
| 6896 | +CONFIG_VLAN_8021Q=y | ||
| 6897 | +# CONFIG_VLAN_8021Q_GVRP is not set | ||
| 6898 | +# CONFIG_DECNET is not set | ||
| 6899 | +# CONFIG_LLC2 is not set | ||
| 6900 | +# CONFIG_IPX is not set | ||
| 6901 | +# CONFIG_ATALK is not set | ||
| 6902 | +# CONFIG_X25 is not set | ||
| 6903 | +# CONFIG_LAPB is not set | ||
| 6904 | +# CONFIG_ECONET is not set | ||
| 6905 | +# CONFIG_WAN_ROUTER is not set | ||
| 6906 | +# CONFIG_PHONET is not set | ||
| 6907 | +# CONFIG_IEEE802154 is not set | ||
| 6908 | +# CONFIG_NET_SCHED is not set | ||
| 6909 | +# CONFIG_DCB is not set | ||
| 6910 | +CONFIG_DNS_RESOLVER=y | ||
| 6911 | +# CONFIG_BATMAN_ADV is not set | ||
| 6912 | +CONFIG_RPS=y | ||
| 6913 | +CONFIG_RFS_ACCEL=y | ||
| 6914 | +CONFIG_XPS=y | ||
| 6915 | + | ||
| 6916 | +# | ||
| 6917 | +# Network testing | ||
| 6918 | +# | ||
| 6919 | +# CONFIG_NET_PKTGEN is not set | ||
| 6920 | +# CONFIG_HAMRADIO is not set | ||
| 6921 | +# CONFIG_CAN is not set | ||
| 6922 | +# CONFIG_IRDA is not set | ||
| 6923 | +# CONFIG_BT is not set | ||
| 6924 | +# CONFIG_AF_RXRPC is not set | ||
| 6925 | +CONFIG_WIRELESS=y | ||
| 6926 | +CONFIG_WIRELESS_EXT=y | ||
| 6927 | +CONFIG_WEXT_CORE=y | ||
| 6928 | +CONFIG_WEXT_PROC=y | ||
| 6929 | +CONFIG_WEXT_PRIV=y | ||
| 6930 | +# CONFIG_CFG80211 is not set | ||
| 6931 | +CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 6932 | +# CONFIG_LIB80211 is not set | ||
| 6933 | + | ||
| 6934 | +# | ||
| 6935 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 6936 | +# | ||
| 6937 | +# CONFIG_WIMAX is not set | ||
| 6938 | +# CONFIG_RFKILL is not set | ||
| 6939 | +# CONFIG_NET_9P is not set | ||
| 6940 | +# CONFIG_CAIF is not set | ||
| 6941 | +# CONFIG_CEPH_LIB is not set | ||
| 6942 | +# CONFIG_NFC is not set | ||
| 6943 | + | ||
| 6944 | +# | ||
| 6945 | +# Device Drivers | ||
| 6946 | +# | ||
| 6947 | + | ||
| 6948 | +# | ||
| 6949 | +# Generic Driver Options | ||
| 6950 | +# | ||
| 6951 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 6952 | +# CONFIG_DEVTMPFS is not set | ||
| 6953 | +CONFIG_STANDALONE=y | ||
| 6954 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 6955 | +CONFIG_FW_LOADER=y | ||
| 6956 | +CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 6957 | +CONFIG_EXTRA_FIRMWARE="" | ||
| 6958 | +CONFIG_DEBUG_DRIVER=y | ||
| 6959 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 6960 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 6961 | +# CONFIG_CONNECTOR is not set | ||
| 6962 | +CONFIG_MTD=y | ||
| 6963 | +# CONFIG_MTD_DEBUG is not set | ||
| 6964 | +# CONFIG_MTD_TESTS is not set | ||
| 6965 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 6966 | +CONFIG_MTD_CMDLINE_PARTS=y | ||
| 6967 | +CONFIG_MTD_OF_PARTS=y | ||
| 6968 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 6969 | + | ||
| 6970 | +# | ||
| 6971 | +# User Modules And Translation Layers | ||
| 6972 | +# | ||
| 6973 | +CONFIG_MTD_CHAR=y | ||
| 6974 | +CONFIG_MTD_BLKDEVS=y | ||
| 6975 | +CONFIG_MTD_BLOCK=y | ||
| 6976 | +# CONFIG_FTL is not set | ||
| 6977 | +# CONFIG_NFTL is not set | ||
| 6978 | +# CONFIG_INFTL is not set | ||
| 6979 | +# CONFIG_RFD_FTL is not set | ||
| 6980 | +# CONFIG_SSFDC is not set | ||
| 6981 | +# CONFIG_SM_FTL is not set | ||
| 6982 | +# CONFIG_MTD_OOPS is not set | ||
| 6983 | +# CONFIG_MTD_SWAP is not set | ||
| 6984 | + | ||
| 6985 | +# | ||
| 6986 | +# RAM/ROM/Flash chip drivers | ||
| 6987 | +# | ||
| 6988 | +# CONFIG_MTD_CFI is not set | ||
| 6989 | +CONFIG_MTD_JEDECPROBE=y | ||
| 6990 | +CONFIG_MTD_GEN_PROBE=y | ||
| 6991 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 6992 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 6993 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 6994 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 6995 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 6996 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 6997 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 6998 | +CONFIG_MTD_CFI_I1=y | ||
| 6999 | +CONFIG_MTD_CFI_I2=y | ||
| 7000 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 7001 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 7002 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 7003 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 7004 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 7005 | +CONFIG_MTD_CFI_UTIL=y | ||
| 7006 | +# CONFIG_MTD_RAM is not set | ||
| 7007 | +# CONFIG_MTD_ROM is not set | ||
| 7008 | +# CONFIG_MTD_ABSENT is not set | ||
| 7009 | + | ||
| 7010 | +# | ||
| 7011 | +# Mapping drivers for chip access | ||
| 7012 | +# | ||
| 7013 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 7014 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 7015 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 7016 | +# CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 7017 | +# CONFIG_MTD_PLATRAM is not set | ||
| 7018 | + | ||
| 7019 | +# | ||
| 7020 | +# Self-contained MTD device drivers | ||
| 7021 | +# | ||
| 7022 | +# CONFIG_MTD_PMC551 is not set | ||
| 7023 | +# CONFIG_MTD_SLRAM is not set | ||
| 7024 | +# CONFIG_MTD_PHRAM is not set | ||
| 7025 | +# CONFIG_MTD_MTDRAM is not set | ||
| 7026 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 7027 | + | ||
| 7028 | +# | ||
| 7029 | +# Disk-On-Chip Device Drivers | ||
| 7030 | +# | ||
| 7031 | +# CONFIG_MTD_DOC2000 is not set | ||
| 7032 | +# CONFIG_MTD_DOC2001 is not set | ||
| 7033 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 7034 | +CONFIG_MTD_NAND_ECC=y | ||
| 7035 | +# CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 7036 | +CONFIG_MTD_NAND=y | ||
| 7037 | +# CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 7038 | +# CONFIG_MTD_NAND_ECC_BCH is not set | ||
| 7039 | +# CONFIG_MTD_SM_COMMON is not set | ||
| 7040 | +# CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 7041 | +# CONFIG_MTD_NAND_DENALI is not set | ||
| 7042 | +CONFIG_MTD_NAND_IDS=y | ||
| 7043 | +# CONFIG_MTD_NAND_RICOH is not set | ||
| 7044 | +# CONFIG_MTD_NAND_NDFC is not set | ||
| 7045 | +# CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 7046 | +# CONFIG_MTD_NAND_CAFE is not set | ||
| 7047 | +# CONFIG_MTD_NAND_NANDSIM is not set | ||
| 7048 | +CONFIG_MTD_NAND_PLATFORM=y | ||
| 7049 | +# CONFIG_MTD_ALAUDA is not set | ||
| 7050 | +# CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 7051 | +# CONFIG_MTD_ONENAND is not set | ||
| 7052 | + | ||
| 7053 | +# | ||
| 7054 | +# LPDDR flash memory drivers | ||
| 7055 | +# | ||
| 7056 | +# CONFIG_MTD_LPDDR is not set | ||
| 7057 | +# CONFIG_MTD_UBI is not set | ||
| 7058 | +CONFIG_DTC=y | ||
| 7059 | +CONFIG_OF=y | ||
| 7060 | + | ||
| 7061 | +# | ||
| 7062 | +# Device Tree and Open Firmware support | ||
| 7063 | +# | ||
| 7064 | +CONFIG_PROC_DEVICETREE=y | ||
| 7065 | +CONFIG_OF_FLATTREE=y | ||
| 7066 | +CONFIG_OF_EARLY_FLATTREE=y | ||
| 7067 | +CONFIG_OF_DYNAMIC=y | ||
| 7068 | +CONFIG_OF_ADDRESS=y | ||
| 7069 | +CONFIG_OF_IRQ=y | ||
| 7070 | +CONFIG_OF_DEVICE=y | ||
| 7071 | +CONFIG_OF_GPIO=y | ||
| 7072 | +CONFIG_OF_NET=y | ||
| 7073 | +CONFIG_OF_PCI=y | ||
| 7074 | +CONFIG_OF_PCI_IRQ=y | ||
| 7075 | +# CONFIG_PARPORT is not set | ||
| 7076 | +CONFIG_BLK_DEV=y | ||
| 7077 | +# CONFIG_BLK_DEV_FD is not set | ||
| 7078 | +# CONFIG_BLK_CPQ_DA is not set | ||
| 7079 | +# CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 7080 | +# CONFIG_BLK_DEV_DAC960 is not set | ||
| 7081 | +# CONFIG_BLK_DEV_UMEM is not set | ||
| 7082 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 7083 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 7084 | + | ||
| 7085 | +# | ||
| 7086 | +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 7087 | +# | ||
| 7088 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 7089 | +# CONFIG_BLK_DEV_SX8 is not set | ||
| 7090 | +CONFIG_BLK_DEV_UB=y | ||
| 7091 | +CONFIG_BLK_DEV_RAM=y | ||
| 7092 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 7093 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 7094 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 7095 | +# CONFIG_BLK_DEV_ISS is not set | ||
| 7096 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 7097 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 7098 | +# CONFIG_XILINX_SYSACE is not set | ||
| 7099 | +# CONFIG_BLK_DEV_HD is not set | ||
| 7100 | +# CONFIG_BLK_DEV_RBD is not set | ||
| 7101 | +# CONFIG_SENSORS_LIS3LV02D is not set | ||
| 7102 | +CONFIG_MISC_DEVICES=y | ||
| 7103 | +# CONFIG_PHANTOM is not set | ||
| 7104 | +# CONFIG_INTEL_MID_PTI is not set | ||
| 7105 | +# CONFIG_SGI_IOC4 is not set | ||
| 7106 | +# CONFIG_TIFM_CORE is not set | ||
| 7107 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 7108 | +# CONFIG_HP_ILO is not set | ||
| 7109 | +# CONFIG_PCH_PHUB is not set | ||
| 7110 | +# CONFIG_C2PORT is not set | ||
| 7111 | + | ||
| 7112 | +# | ||
| 7113 | +# EEPROM support | ||
| 7114 | +# | ||
| 7115 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 7116 | +# CONFIG_CB710_CORE is not set | ||
| 7117 | + | ||
| 7118 | +# | ||
| 7119 | +# Texas Instruments shared transport line discipline | ||
| 7120 | +# | ||
| 7121 | +# CONFIG_TI_ST is not set | ||
| 7122 | +CONFIG_HAVE_IDE=y | ||
| 7123 | +# CONFIG_IDE is not set | ||
| 7124 | + | ||
| 7125 | +# | ||
| 7126 | +# SCSI device support | ||
| 7127 | +# | ||
| 7128 | +CONFIG_SCSI_MOD=y | ||
| 7129 | +# CONFIG_RAID_ATTRS is not set | ||
| 7130 | +CONFIG_SCSI=y | ||
| 7131 | +CONFIG_SCSI_DMA=y | ||
| 7132 | +CONFIG_SCSI_TGT=y | ||
| 7133 | +# CONFIG_SCSI_NETLINK is not set | ||
| 7134 | +CONFIG_SCSI_PROC_FS=y | ||
| 7135 | + | ||
| 7136 | +# | ||
| 7137 | +# SCSI support type (disk, tape, CD-ROM) | ||
| 7138 | +# | ||
| 7139 | +CONFIG_BLK_DEV_SD=y | ||
| 7140 | +# CONFIG_CHR_DEV_ST is not set | ||
| 7141 | +# CONFIG_CHR_DEV_OSST is not set | ||
| 7142 | +# CONFIG_BLK_DEV_SR is not set | ||
| 7143 | +# CONFIG_CHR_DEV_SG is not set | ||
| 7144 | +# CONFIG_CHR_DEV_SCH is not set | ||
| 7145 | +# CONFIG_SCSI_MULTI_LUN is not set | ||
| 7146 | +CONFIG_SCSI_CONSTANTS=y | ||
| 7147 | +# CONFIG_SCSI_LOGGING is not set | ||
| 7148 | +# CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 7149 | +CONFIG_SCSI_WAIT_SCAN=m | ||
| 7150 | + | ||
| 7151 | +# | ||
| 7152 | +# SCSI Transports | ||
| 7153 | +# | ||
| 7154 | +# CONFIG_SCSI_SPI_ATTRS is not set | ||
| 7155 | +# CONFIG_SCSI_FC_ATTRS is not set | ||
| 7156 | +# CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 7157 | +# CONFIG_SCSI_SAS_ATTRS is not set | ||
| 7158 | +# CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 7159 | +# CONFIG_SCSI_SRP_ATTRS is not set | ||
| 7160 | +CONFIG_SCSI_LOWLEVEL=y | ||
| 7161 | +# CONFIG_ISCSI_TCP is not set | ||
| 7162 | +# CONFIG_ISCSI_BOOT_SYSFS is not set | ||
| 7163 | +# CONFIG_SCSI_CXGB3_ISCSI is not set | ||
| 7164 | +# CONFIG_SCSI_CXGB4_ISCSI is not set | ||
| 7165 | +# CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 7166 | +# CONFIG_SCSI_BNX2X_FCOE is not set | ||
| 7167 | +# CONFIG_BE2ISCSI is not set | ||
| 7168 | +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 7169 | +# CONFIG_SCSI_HPSA is not set | ||
| 7170 | +# CONFIG_SCSI_3W_9XXX is not set | ||
| 7171 | +# CONFIG_SCSI_3W_SAS is not set | ||
| 7172 | +# CONFIG_SCSI_ACARD is not set | ||
| 7173 | +# CONFIG_SCSI_AACRAID is not set | ||
| 7174 | +# CONFIG_SCSI_AIC7XXX is not set | ||
| 7175 | +# CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 7176 | +# CONFIG_SCSI_AIC79XX is not set | ||
| 7177 | +# CONFIG_SCSI_AIC94XX is not set | ||
| 7178 | +# CONFIG_SCSI_MVSAS is not set | ||
| 7179 | +# CONFIG_SCSI_DPT_I2O is not set | ||
| 7180 | +# CONFIG_SCSI_ADVANSYS is not set | ||
| 7181 | +# CONFIG_SCSI_ARCMSR is not set | ||
| 7182 | +# CONFIG_MEGARAID_NEWGEN is not set | ||
| 7183 | +# CONFIG_MEGARAID_LEGACY is not set | ||
| 7184 | +# CONFIG_MEGARAID_SAS is not set | ||
| 7185 | +# CONFIG_SCSI_MPT2SAS is not set | ||
| 7186 | +# CONFIG_SCSI_HPTIOP is not set | ||
| 7187 | +# CONFIG_SCSI_BUSLOGIC is not set | ||
| 7188 | +# CONFIG_LIBFC is not set | ||
| 7189 | +# CONFIG_LIBFCOE is not set | ||
| 7190 | +# CONFIG_FCOE is not set | ||
| 7191 | +# CONFIG_SCSI_DMX3191D is not set | ||
| 7192 | +# CONFIG_SCSI_EATA is not set | ||
| 7193 | +# CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 7194 | +# CONFIG_SCSI_GDTH is not set | ||
| 7195 | +# CONFIG_SCSI_IPS is not set | ||
| 7196 | +# CONFIG_SCSI_INITIO is not set | ||
| 7197 | +# CONFIG_SCSI_INIA100 is not set | ||
| 7198 | +# CONFIG_SCSI_STEX is not set | ||
| 7199 | +# CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 7200 | +# CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 7201 | +# CONFIG_SCSI_QLA_FC is not set | ||
| 7202 | +# CONFIG_SCSI_QLA_ISCSI is not set | ||
| 7203 | +# CONFIG_SCSI_LPFC is not set | ||
| 7204 | +# CONFIG_SCSI_DC395x is not set | ||
| 7205 | +# CONFIG_SCSI_DC390T is not set | ||
| 7206 | +# CONFIG_SCSI_NSP32 is not set | ||
| 7207 | +# CONFIG_SCSI_DEBUG is not set | ||
| 7208 | +# CONFIG_SCSI_PMCRAID is not set | ||
| 7209 | +# CONFIG_SCSI_PM8001 is not set | ||
| 7210 | +# CONFIG_SCSI_SRP is not set | ||
| 7211 | +# CONFIG_SCSI_BFA_FC is not set | ||
| 7212 | +# CONFIG_SCSI_DH is not set | ||
| 7213 | +# CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 7214 | +# CONFIG_ATA is not set | ||
| 7215 | +CONFIG_MD=y | ||
| 7216 | +CONFIG_BLK_DEV_MD=y | ||
| 7217 | +CONFIG_MD_AUTODETECT=y | ||
| 7218 | +CONFIG_MD_LINEAR=y | ||
| 7219 | +CONFIG_MD_RAID0=y | ||
| 7220 | +CONFIG_MD_RAID1=y | ||
| 7221 | +CONFIG_MD_RAID10=y | ||
| 7222 | +# CONFIG_MD_RAID456 is not set | ||
| 7223 | +CONFIG_MD_MULTIPATH=y | ||
| 7224 | +CONFIG_MD_FAULTY=y | ||
| 7225 | +CONFIG_BLK_DEV_DM=y | ||
| 7226 | +# CONFIG_DM_DEBUG is not set | ||
| 7227 | +CONFIG_DM_CRYPT=y | ||
| 7228 | +CONFIG_DM_SNAPSHOT=y | ||
| 7229 | +CONFIG_DM_MIRROR=y | ||
| 7230 | +# CONFIG_DM_RAID is not set | ||
| 7231 | +# CONFIG_DM_LOG_USERSPACE is not set | ||
| 7232 | +CONFIG_DM_ZERO=y | ||
| 7233 | +# CONFIG_DM_MULTIPATH is not set | ||
| 7234 | +# CONFIG_DM_DELAY is not set | ||
| 7235 | +# CONFIG_DM_UEVENT is not set | ||
| 7236 | +# CONFIG_DM_FLAKEY is not set | ||
| 7237 | +# CONFIG_TARGET_CORE is not set | ||
| 7238 | +# CONFIG_FUSION is not set | ||
| 7239 | + | ||
| 7240 | +# | ||
| 7241 | +# IEEE 1394 (FireWire) support | ||
| 7242 | +# | ||
| 7243 | +# CONFIG_FIREWIRE is not set | ||
| 7244 | +# CONFIG_FIREWIRE_NOSY is not set | ||
| 7245 | +# CONFIG_I2O is not set | ||
| 7246 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 7247 | +CONFIG_NETDEVICES=y | ||
| 7248 | +CONFIG_DUMMY=y | ||
| 7249 | +# CONFIG_BONDING is not set | ||
| 7250 | +# CONFIG_MACVLAN is not set | ||
| 7251 | +# CONFIG_EQUALIZER is not set | ||
| 7252 | +CONFIG_TUN=y | ||
| 7253 | +# CONFIG_VETH is not set | ||
| 7254 | +# CONFIG_ARCNET is not set | ||
| 7255 | +CONFIG_MII=y | ||
| 7256 | +# CONFIG_PHYLIB is not set | ||
| 7257 | +CONFIG_NET_ETHERNET=y | ||
| 7258 | +# CONFIG_HAPPYMEAL is not set | ||
| 7259 | +# CONFIG_SUNGEM is not set | ||
| 7260 | +# CONFIG_CASSINI is not set | ||
| 7261 | +# CONFIG_NET_VENDOR_3COM is not set | ||
| 7262 | +# CONFIG_ETHOC is not set | ||
| 7263 | +# CONFIG_DNET is not set | ||
| 7264 | +# CONFIG_NET_TULIP is not set | ||
| 7265 | +# CONFIG_HP100 is not set | ||
| 7266 | +# CONFIG_IBM_NEW_EMAC is not set | ||
| 7267 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 7268 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 7269 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 7270 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 7271 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 7272 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 7273 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 7274 | +# CONFIG_NET_PCI is not set | ||
| 7275 | +# CONFIG_B44 is not set | ||
| 7276 | +# CONFIG_KS8842 is not set | ||
| 7277 | +# CONFIG_KS8851_MLL is not set | ||
| 7278 | +# CONFIG_ATL2 is not set | ||
| 7279 | +# CONFIG_XILINX_EMACLITE is not set | ||
| 7280 | +CONFIG_NETDEV_1000=y | ||
| 7281 | +# CONFIG_ACENIC is not set | ||
| 7282 | +# CONFIG_DL2K is not set | ||
| 7283 | +CONFIG_E1000=y | ||
| 7284 | +CONFIG_E1000E=y | ||
| 7285 | +# CONFIG_IP1000 is not set | ||
| 7286 | +CONFIG_IGB=y | ||
| 7287 | +CONFIG_IGBVF=y | ||
| 7288 | +# CONFIG_NS83820 is not set | ||
| 7289 | +# CONFIG_HAMACHI is not set | ||
| 7290 | +# CONFIG_YELLOWFIN is not set | ||
| 7291 | +# CONFIG_R8169 is not set | ||
| 7292 | +# CONFIG_SIS190 is not set | ||
| 7293 | +# CONFIG_SKGE is not set | ||
| 7294 | +# CONFIG_SKY2 is not set | ||
| 7295 | +# CONFIG_VIA_VELOCITY is not set | ||
| 7296 | +# CONFIG_TIGON3 is not set | ||
| 7297 | +# CONFIG_BNX2 is not set | ||
| 7298 | +# CONFIG_CNIC is not set | ||
| 7299 | +# CONFIG_MV643XX_ETH is not set | ||
| 7300 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 7301 | +# CONFIG_QLA3XXX is not set | ||
| 7302 | +# CONFIG_ATL1 is not set | ||
| 7303 | +# CONFIG_ATL1E is not set | ||
| 7304 | +# CONFIG_ATL1C is not set | ||
| 7305 | +# CONFIG_JME is not set | ||
| 7306 | +# CONFIG_STMMAC_ETH is not set | ||
| 7307 | +# CONFIG_PCH_GBE is not set | ||
| 7308 | +# CONFIG_NETDEV_10000 is not set | ||
| 7309 | +# CONFIG_TR is not set | ||
| 7310 | +CONFIG_WLAN=y | ||
| 7311 | +# CONFIG_AIRO is not set | ||
| 7312 | +# CONFIG_ATMEL is not set | ||
| 7313 | +# CONFIG_PRISM54 is not set | ||
| 7314 | +CONFIG_USB_ZD1201=y | ||
| 7315 | +# CONFIG_HOSTAP is not set | ||
| 7316 | + | ||
| 7317 | +# | ||
| 7318 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 7319 | +# | ||
| 7320 | + | ||
| 7321 | +# | ||
| 7322 | +# USB Network Adapters | ||
| 7323 | +# | ||
| 7324 | +# CONFIG_USB_CATC is not set | ||
| 7325 | +# CONFIG_USB_KAWETH is not set | ||
| 7326 | +# CONFIG_USB_PEGASUS is not set | ||
| 7327 | +# CONFIG_USB_RTL8150 is not set | ||
| 7328 | +# CONFIG_USB_USBNET is not set | ||
| 7329 | +# CONFIG_USB_IPHETH is not set | ||
| 7330 | +# CONFIG_WAN is not set | ||
| 7331 | + | ||
| 7332 | +# | ||
| 7333 | +# CAIF transport drivers | ||
| 7334 | +# | ||
| 7335 | +# CONFIG_RIONET is not set | ||
| 7336 | +# CONFIG_FDDI is not set | ||
| 7337 | +# CONFIG_HIPPI is not set | ||
| 7338 | +CONFIG_PPP=m | ||
| 7339 | +CONFIG_PPP_MULTILINK=y | ||
| 7340 | +CONFIG_PPP_FILTER=y | ||
| 7341 | +CONFIG_PPP_ASYNC=m | ||
| 7342 | +CONFIG_PPP_SYNC_TTY=m | ||
| 7343 | +CONFIG_PPP_DEFLATE=m | ||
| 7344 | +CONFIG_PPP_BSDCOMP=m | ||
| 7345 | +# CONFIG_PPP_MPPE is not set | ||
| 7346 | +CONFIG_PPPOE=m | ||
| 7347 | +CONFIG_SLIP=m | ||
| 7348 | +CONFIG_SLIP_COMPRESSED=y | ||
| 7349 | +CONFIG_SLHC=m | ||
| 7350 | +CONFIG_SLIP_SMART=y | ||
| 7351 | +CONFIG_SLIP_MODE_SLIP6=y | ||
| 7352 | +# CONFIG_NET_FC is not set | ||
| 7353 | +CONFIG_NETCONSOLE=y | ||
| 7354 | +CONFIG_NETPOLL=y | ||
| 7355 | +CONFIG_NETPOLL_TRAP=y | ||
| 7356 | +CONFIG_NET_POLL_CONTROLLER=y | ||
| 7357 | +# CONFIG_VMXNET3 is not set | ||
| 7358 | +# CONFIG_ISDN is not set | ||
| 7359 | +# CONFIG_PHONE is not set | ||
| 7360 | + | ||
| 7361 | +# | ||
| 7362 | +# Input device support | ||
| 7363 | +# | ||
| 7364 | +CONFIG_INPUT=y | ||
| 7365 | +# CONFIG_INPUT_FF_MEMLESS is not set | ||
| 7366 | +# CONFIG_INPUT_POLLDEV is not set | ||
| 7367 | +# CONFIG_INPUT_SPARSEKMAP is not set | ||
| 7368 | + | ||
| 7369 | +# | ||
| 7370 | +# Userland interfaces | ||
| 7371 | +# | ||
| 7372 | +CONFIG_INPUT_MOUSEDEV=y | ||
| 7373 | +CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 7374 | +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 7375 | +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 7376 | +# CONFIG_INPUT_JOYDEV is not set | ||
| 7377 | +# CONFIG_INPUT_EVDEV is not set | ||
| 7378 | +# CONFIG_INPUT_EVBUG is not set | ||
| 7379 | + | ||
| 7380 | +# | ||
| 7381 | +# Input Device Drivers | ||
| 7382 | +# | ||
| 7383 | +# CONFIG_INPUT_KEYBOARD is not set | ||
| 7384 | +# CONFIG_INPUT_MOUSE is not set | ||
| 7385 | +# CONFIG_INPUT_JOYSTICK is not set | ||
| 7386 | +# CONFIG_INPUT_TABLET is not set | ||
| 7387 | +# CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 7388 | +# CONFIG_INPUT_MISC is not set | ||
| 7389 | + | ||
| 7390 | +# | ||
| 7391 | +# Hardware I/O ports | ||
| 7392 | +# | ||
| 7393 | +CONFIG_SERIO=y | ||
| 7394 | +CONFIG_SERIO_I8042=y | ||
| 7395 | +CONFIG_SERIO_SERPORT=y | ||
| 7396 | +# CONFIG_SERIO_PCIPS2 is not set | ||
| 7397 | +CONFIG_SERIO_LIBPS2=y | ||
| 7398 | +# CONFIG_SERIO_RAW is not set | ||
| 7399 | +# CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 7400 | +# CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 7401 | +# CONFIG_SERIO_PS2MULT is not set | ||
| 7402 | +# CONFIG_GAMEPORT is not set | ||
| 7403 | + | ||
| 7404 | +# | ||
| 7405 | +# Character devices | ||
| 7406 | +# | ||
| 7407 | +CONFIG_VT=y | ||
| 7408 | +CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 7409 | +CONFIG_VT_CONSOLE=y | ||
| 7410 | +CONFIG_HW_CONSOLE=y | ||
| 7411 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 7412 | +CONFIG_UNIX98_PTYS=y | ||
| 7413 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 7414 | +CONFIG_LEGACY_PTYS=y | ||
| 7415 | +CONFIG_LEGACY_PTY_COUNT=20 | ||
| 7416 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 7417 | +# CONFIG_NOZOMI is not set | ||
| 7418 | +CONFIG_N_GSM=y | ||
| 7419 | +# CONFIG_TRACE_SINK is not set | ||
| 7420 | +CONFIG_DEVKMEM=y | ||
| 7421 | + | ||
| 7422 | +# | ||
| 7423 | +# Serial drivers | ||
| 7424 | +# | ||
| 7425 | +# CONFIG_SERIAL_8250 is not set | ||
| 7426 | + | ||
| 7427 | +# | ||
| 7428 | +# Non-8250 serial port support | ||
| 7429 | +# | ||
| 7430 | +# CONFIG_SERIAL_MFD_HSU is not set | ||
| 7431 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 7432 | +CONFIG_SERIAL_CORE=y | ||
| 7433 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 7434 | +# CONFIG_SERIAL_JSM is not set | ||
| 7435 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 7436 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 7437 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 7438 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 7439 | +# CONFIG_SERIAL_PCH_UART is not set | ||
| 7440 | +# CONFIG_SERIAL_XILINX_PS_UART is not set | ||
| 7441 | +# CONFIG_TTY_PRINTK is not set | ||
| 7442 | +# CONFIG_HVC_UDBG is not set | ||
| 7443 | +# CONFIG_IPMI_HANDLER is not set | ||
| 7444 | +# CONFIG_HW_RANDOM is not set | ||
| 7445 | +# CONFIG_NVRAM is not set | ||
| 7446 | +# CONFIG_R3964 is not set | ||
| 7447 | +# CONFIG_APPLICOM is not set | ||
| 7448 | +# CONFIG_RAW_DRIVER is not set | ||
| 7449 | +# CONFIG_TCG_TPM is not set | ||
| 7450 | +CONFIG_DEVPORT=y | ||
| 7451 | +# CONFIG_RAMOOPS is not set | ||
| 7452 | +# CONFIG_I2C is not set | ||
| 7453 | +# CONFIG_SPI is not set | ||
| 7454 | + | ||
| 7455 | +# | ||
| 7456 | +# PPS support | ||
| 7457 | +# | ||
| 7458 | +# CONFIG_PPS is not set | ||
| 7459 | + | ||
| 7460 | +# | ||
| 7461 | +# PPS generators support | ||
| 7462 | +# | ||
| 7463 | + | ||
| 7464 | +# | ||
| 7465 | +# PTP clock support | ||
| 7466 | +# | ||
| 7467 | + | ||
| 7468 | +# | ||
| 7469 | +# Enable Device Drivers -> PPS to see the PTP clock options. | ||
| 7470 | +# | ||
| 7471 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 7472 | +CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
| 7473 | +CONFIG_GPIOLIB=y | ||
| 7474 | +# CONFIG_DEBUG_GPIO is not set | ||
| 7475 | +CONFIG_GPIO_SYSFS=y | ||
| 7476 | + | ||
| 7477 | +# | ||
| 7478 | +# Memory mapped GPIO drivers: | ||
| 7479 | +# | ||
| 7480 | +# CONFIG_GPIO_GENERIC_PLATFORM is not set | ||
| 7481 | +# CONFIG_GPIO_IT8761E is not set | ||
| 7482 | +# CONFIG_GPIO_XILINX is not set | ||
| 7483 | + | ||
| 7484 | +# | ||
| 7485 | +# I2C GPIO expanders: | ||
| 7486 | +# | ||
| 7487 | + | ||
| 7488 | +# | ||
| 7489 | +# PCI GPIO expanders: | ||
| 7490 | +# | ||
| 7491 | +# CONFIG_GPIO_BT8XX is not set | ||
| 7492 | +# CONFIG_GPIO_ML_IOH is not set | ||
| 7493 | +# CONFIG_GPIO_RDC321X is not set | ||
| 7494 | + | ||
| 7495 | +# | ||
| 7496 | +# SPI GPIO expanders: | ||
| 7497 | +# | ||
| 7498 | + | ||
| 7499 | +# | ||
| 7500 | +# AC97 GPIO expanders: | ||
| 7501 | +# | ||
| 7502 | + | ||
| 7503 | +# | ||
| 7504 | +# MODULbus GPIO expanders: | ||
| 7505 | +# | ||
| 7506 | +# CONFIG_W1 is not set | ||
| 7507 | +# CONFIG_POWER_SUPPLY is not set | ||
| 7508 | +# CONFIG_HWMON is not set | ||
| 7509 | +CONFIG_THERMAL=y | ||
| 7510 | +# CONFIG_WATCHDOG is not set | ||
| 7511 | +CONFIG_SSB_POSSIBLE=y | ||
| 7512 | + | ||
| 7513 | +# | ||
| 7514 | +# Sonics Silicon Backplane | ||
| 7515 | +# | ||
| 7516 | +# CONFIG_SSB is not set | ||
| 7517 | +CONFIG_BCMA_POSSIBLE=y | ||
| 7518 | + | ||
| 7519 | +# | ||
| 7520 | +# Broadcom specific AMBA | ||
| 7521 | +# | ||
| 7522 | +# CONFIG_BCMA is not set | ||
| 7523 | +# CONFIG_MFD_SUPPORT is not set | ||
| 7524 | +# CONFIG_REGULATOR is not set | ||
| 7525 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 7526 | + | ||
| 7527 | +# | ||
| 7528 | +# Graphics support | ||
| 7529 | +# | ||
| 7530 | +# CONFIG_AGP is not set | ||
| 7531 | +# CONFIG_VGA_ARB is not set | ||
| 7532 | +# CONFIG_DRM is not set | ||
| 7533 | +# CONFIG_STUB_POULSBO is not set | ||
| 7534 | +# CONFIG_VGASTATE is not set | ||
| 7535 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 7536 | +# CONFIG_FB is not set | ||
| 7537 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 7538 | + | ||
| 7539 | +# | ||
| 7540 | +# Display device support | ||
| 7541 | +# | ||
| 7542 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 7543 | + | ||
| 7544 | +# | ||
| 7545 | +# Console display driver support | ||
| 7546 | +# | ||
| 7547 | +CONFIG_DUMMY_CONSOLE=y | ||
| 7548 | +# CONFIG_SOUND is not set | ||
| 7549 | +CONFIG_HID_SUPPORT=y | ||
| 7550 | +CONFIG_HID=y | ||
| 7551 | +CONFIG_HIDRAW=y | ||
| 7552 | + | ||
| 7553 | +# | ||
| 7554 | +# USB Input Devices | ||
| 7555 | +# | ||
| 7556 | +CONFIG_USB_HID=y | ||
| 7557 | +CONFIG_HID_PID=y | ||
| 7558 | +CONFIG_USB_HIDDEV=y | ||
| 7559 | + | ||
| 7560 | +# | ||
| 7561 | +# Special HID drivers | ||
| 7562 | +# | ||
| 7563 | +CONFIG_HID_A4TECH=y | ||
| 7564 | +# CONFIG_HID_ACRUX is not set | ||
| 7565 | +CONFIG_HID_APPLE=y | ||
| 7566 | +# CONFIG_HID_BELKIN is not set | ||
| 7567 | +# CONFIG_HID_CHERRY is not set | ||
| 7568 | +# CONFIG_HID_CHICONY is not set | ||
| 7569 | +# CONFIG_HID_CYPRESS is not set | ||
| 7570 | +# CONFIG_HID_DRAGONRISE is not set | ||
| 7571 | +# CONFIG_HID_EMS_FF is not set | ||
| 7572 | +# CONFIG_HID_EZKEY is not set | ||
| 7573 | +# CONFIG_HID_HOLTEK is not set | ||
| 7574 | +# CONFIG_HID_KEYTOUCH is not set | ||
| 7575 | +# CONFIG_HID_KYE is not set | ||
| 7576 | +# CONFIG_HID_UCLOGIC is not set | ||
| 7577 | +# CONFIG_HID_WALTOP is not set | ||
| 7578 | +# CONFIG_HID_GYRATION is not set | ||
| 7579 | +# CONFIG_HID_TWINHAN is not set | ||
| 7580 | +# CONFIG_HID_KENSINGTON is not set | ||
| 7581 | +# CONFIG_HID_LCPOWER is not set | ||
| 7582 | +# CONFIG_HID_LOGITECH is not set | ||
| 7583 | +# CONFIG_HID_MICROSOFT is not set | ||
| 7584 | +# CONFIG_HID_MONTEREY is not set | ||
| 7585 | +# CONFIG_HID_MULTITOUCH is not set | ||
| 7586 | +# CONFIG_HID_NTRIG is not set | ||
| 7587 | +# CONFIG_HID_ORTEK is not set | ||
| 7588 | +# CONFIG_HID_PANTHERLORD is not set | ||
| 7589 | +# CONFIG_HID_PETALYNX is not set | ||
| 7590 | +# CONFIG_HID_PICOLCD is not set | ||
| 7591 | +# CONFIG_HID_QUANTA is not set | ||
| 7592 | +# CONFIG_HID_ROCCAT is not set | ||
| 7593 | +# CONFIG_HID_SAMSUNG is not set | ||
| 7594 | +# CONFIG_HID_SONY is not set | ||
| 7595 | +# CONFIG_HID_SPEEDLINK is not set | ||
| 7596 | +# CONFIG_HID_SUNPLUS is not set | ||
| 7597 | +# CONFIG_HID_GREENASIA is not set | ||
| 7598 | +# CONFIG_HID_SMARTJOYPLUS is not set | ||
| 7599 | +# CONFIG_HID_TOPSEED is not set | ||
| 7600 | +# CONFIG_HID_THRUSTMASTER is not set | ||
| 7601 | +# CONFIG_HID_ZEROPLUS is not set | ||
| 7602 | +# CONFIG_HID_ZYDACRON is not set | ||
| 7603 | +CONFIG_USB_SUPPORT=y | ||
| 7604 | +CONFIG_USB_ARCH_HAS_HCD=y | ||
| 7605 | +CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 7606 | +CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 7607 | +CONFIG_USB=y | ||
| 7608 | +# CONFIG_USB_DEBUG is not set | ||
| 7609 | +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
| 7610 | + | ||
| 7611 | +# | ||
| 7612 | +# Miscellaneous USB options | ||
| 7613 | +# | ||
| 7614 | +CONFIG_USB_DEVICEFS=y | ||
| 7615 | +CONFIG_USB_DEVICE_CLASS=y | ||
| 7616 | +CONFIG_USB_DYNAMIC_MINORS=y | ||
| 7617 | +# CONFIG_USB_OTG_WHITELIST is not set | ||
| 7618 | +# CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 7619 | +CONFIG_USB_MON=y | ||
| 7620 | +# CONFIG_USB_WUSB is not set | ||
| 7621 | +# CONFIG_USB_WUSB_CBAF is not set | ||
| 7622 | + | ||
| 7623 | +# | ||
| 7624 | +# USB Host Controller Drivers | ||
| 7625 | +# | ||
| 7626 | +# CONFIG_USB_C67X00_HCD is not set | ||
| 7627 | +# CONFIG_USB_XHCI_HCD is not set | ||
| 7628 | +CONFIG_USB_EHCI_HCD=y | ||
| 7629 | +CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 7630 | +# CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 7631 | +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
| 7632 | +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y | ||
| 7633 | +CONFIG_XPS_USB_HCD_XILINX=y | ||
| 7634 | +# CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
| 7635 | +# CONFIG_USB_OXU210HP_HCD is not set | ||
| 7636 | +CONFIG_USB_CI13612_HCD=y | ||
| 7637 | +# CONFIG_USB_ISP116X_HCD is not set | ||
| 7638 | +# CONFIG_USB_ISP1760_HCD is not set | ||
| 7639 | +# CONFIG_USB_ISP1362_HCD is not set | ||
| 7640 | +# CONFIG_USB_OHCI_HCD is not set | ||
| 7641 | +# CONFIG_USB_UHCI_HCD is not set | ||
| 7642 | +# CONFIG_USB_SL811_HCD is not set | ||
| 7643 | +# CONFIG_USB_R8A66597_HCD is not set | ||
| 7644 | +# CONFIG_USB_WHCI_HCD is not set | ||
| 7645 | +# CONFIG_USB_HWA_HCD is not set | ||
| 7646 | + | ||
| 7647 | +# | ||
| 7648 | +# USB Device Class drivers | ||
| 7649 | +# | ||
| 7650 | +# CONFIG_USB_ACM is not set | ||
| 7651 | +# CONFIG_USB_PRINTER is not set | ||
| 7652 | +# CONFIG_USB_WDM is not set | ||
| 7653 | +# CONFIG_USB_TMC is not set | ||
| 7654 | + | ||
| 7655 | +# | ||
| 7656 | +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 7657 | +# | ||
| 7658 | + | ||
| 7659 | +# | ||
| 7660 | +# also be needed; see USB_STORAGE Help for more info | ||
| 7661 | +# | ||
| 7662 | +CONFIG_USB_STORAGE=y | ||
| 7663 | +# CONFIG_USB_STORAGE_DEBUG is not set | ||
| 7664 | +# CONFIG_USB_STORAGE_REALTEK is not set | ||
| 7665 | +# CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 7666 | +# CONFIG_USB_STORAGE_FREECOM is not set | ||
| 7667 | +# CONFIG_USB_STORAGE_ISD200 is not set | ||
| 7668 | +# CONFIG_USB_STORAGE_USBAT is not set | ||
| 7669 | +# CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 7670 | +# CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 7671 | +# CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 7672 | +# CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 7673 | +# CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 7674 | +# CONFIG_USB_STORAGE_KARMA is not set | ||
| 7675 | +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 7676 | +# CONFIG_USB_STORAGE_ENE_UB6250 is not set | ||
| 7677 | +# CONFIG_USB_UAS is not set | ||
| 7678 | +CONFIG_USB_LIBUSUAL=y | ||
| 7679 | + | ||
| 7680 | +# | ||
| 7681 | +# USB Imaging devices | ||
| 7682 | +# | ||
| 7683 | +# CONFIG_USB_MDC800 is not set | ||
| 7684 | +# CONFIG_USB_MICROTEK is not set | ||
| 7685 | + | ||
| 7686 | +# | ||
| 7687 | +# USB port drivers | ||
| 7688 | +# | ||
| 7689 | +# CONFIG_USB_SERIAL is not set | ||
| 7690 | + | ||
| 7691 | +# | ||
| 7692 | +# USB Miscellaneous drivers | ||
| 7693 | +# | ||
| 7694 | +# CONFIG_USB_EMI62 is not set | ||
| 7695 | +# CONFIG_USB_EMI26 is not set | ||
| 7696 | +# CONFIG_USB_ADUTUX is not set | ||
| 7697 | +# CONFIG_USB_SEVSEG is not set | ||
| 7698 | +# CONFIG_USB_RIO500 is not set | ||
| 7699 | +# CONFIG_USB_LEGOTOWER is not set | ||
| 7700 | +# CONFIG_USB_LCD is not set | ||
| 7701 | +# CONFIG_USB_LED is not set | ||
| 7702 | +# CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 7703 | +# CONFIG_USB_CYTHERM is not set | ||
| 7704 | +# CONFIG_USB_IDMOUSE is not set | ||
| 7705 | +# CONFIG_USB_FTDI_ELAN is not set | ||
| 7706 | +# CONFIG_USB_APPLEDISPLAY is not set | ||
| 7707 | +# CONFIG_USB_SISUSBVGA is not set | ||
| 7708 | +# CONFIG_USB_LD is not set | ||
| 7709 | +# CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 7710 | +# CONFIG_USB_IOWARRIOR is not set | ||
| 7711 | +# CONFIG_USB_TEST is not set | ||
| 7712 | +# CONFIG_USB_ISIGHTFW is not set | ||
| 7713 | +# CONFIG_USB_YUREX is not set | ||
| 7714 | +# CONFIG_USB_GADGET is not set | ||
| 7715 | + | ||
| 7716 | +# | ||
| 7717 | +# OTG and related infrastructure | ||
| 7718 | +# | ||
| 7719 | +# CONFIG_USB_GPIO_VBUS is not set | ||
| 7720 | +# CONFIG_NOP_USB_XCEIV is not set | ||
| 7721 | +# CONFIG_UWB is not set | ||
| 7722 | +# CONFIG_MMC is not set | ||
| 7723 | +# CONFIG_MEMSTICK is not set | ||
| 7724 | +# CONFIG_NEW_LEDS is not set | ||
| 7725 | +# CONFIG_ACCESSIBILITY is not set | ||
| 7726 | +# CONFIG_INFINIBAND is not set | ||
| 7727 | +# CONFIG_EDAC is not set | ||
| 7728 | +CONFIG_RTC_LIB=y | ||
| 7729 | +CONFIG_RTC_CLASS=y | ||
| 7730 | +CONFIG_RTC_HCTOSYS=y | ||
| 7731 | +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 7732 | +# CONFIG_RTC_DEBUG is not set | ||
| 7733 | + | ||
| 7734 | +# | ||
| 7735 | +# RTC interfaces | ||
| 7736 | +# | ||
| 7737 | +CONFIG_RTC_INTF_SYSFS=y | ||
| 7738 | +CONFIG_RTC_INTF_PROC=y | ||
| 7739 | +CONFIG_RTC_INTF_DEV=y | ||
| 7740 | +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 7741 | +# CONFIG_RTC_DRV_TEST is not set | ||
| 7742 | + | ||
| 7743 | +# | ||
| 7744 | +# SPI RTC drivers | ||
| 7745 | +# | ||
| 7746 | + | ||
| 7747 | +# | ||
| 7748 | +# Platform RTC drivers | ||
| 7749 | +# | ||
| 7750 | +# CONFIG_RTC_DRV_CMOS is not set | ||
| 7751 | +# CONFIG_RTC_DRV_DS1286 is not set | ||
| 7752 | +# CONFIG_RTC_DRV_DS1511 is not set | ||
| 7753 | +# CONFIG_RTC_DRV_DS1553 is not set | ||
| 7754 | +CONFIG_RTC_DRV_DS1742=y | ||
| 7755 | +# CONFIG_RTC_DRV_STK17TA8 is not set | ||
| 7756 | +# CONFIG_RTC_DRV_M48T86 is not set | ||
| 7757 | +# CONFIG_RTC_DRV_M48T35 is not set | ||
| 7758 | +# CONFIG_RTC_DRV_M48T59 is not set | ||
| 7759 | +# CONFIG_RTC_DRV_MSM6242 is not set | ||
| 7760 | +# CONFIG_RTC_DRV_BQ4802 is not set | ||
| 7761 | +# CONFIG_RTC_DRV_RP5C01 is not set | ||
| 7762 | +# CONFIG_RTC_DRV_V3020 is not set | ||
| 7763 | + | ||
| 7764 | +# | ||
| 7765 | +# on-CPU RTC drivers | ||
| 7766 | +# | ||
| 7767 | +# CONFIG_RTC_DRV_GENERIC is not set | ||
| 7768 | +CONFIG_DMADEVICES=y | ||
| 7769 | +CONFIG_DMADEVICES_DEBUG=y | ||
| 7770 | +CONFIG_DMADEVICES_VDEBUG=y | ||
| 7771 | + | ||
| 7772 | +# | ||
| 7773 | +# DMA Devices | ||
| 7774 | +# | ||
| 7775 | +# CONFIG_TIMB_DMA is not set | ||
| 7776 | +CONFIG_LSI_DMA=y | ||
| 7777 | +CONFIG_DMA_ENGINE=y | ||
| 7778 | + | ||
| 7779 | +# | ||
| 7780 | +# DMA Clients | ||
| 7781 | +# | ||
| 7782 | +# CONFIG_NET_DMA is not set | ||
| 7783 | +# CONFIG_ASYNC_TX_DMA is not set | ||
| 7784 | +CONFIG_DMATEST=m | ||
| 7785 | +# CONFIG_AUXDISPLAY is not set | ||
| 7786 | +# CONFIG_UIO is not set | ||
| 7787 | + | ||
| 7788 | +# | ||
| 7789 | +# Virtio drivers | ||
| 7790 | +# | ||
| 7791 | +# CONFIG_VIRTIO_PCI is not set | ||
| 7792 | +# CONFIG_VIRTIO_BALLOON is not set | ||
| 7793 | +# CONFIG_STAGING is not set | ||
| 7794 | +CONFIG_IOMMU_SUPPORT=y | ||
| 7795 | +# CONFIG_VIRT_DRIVERS is not set | ||
| 7796 | + | ||
| 7797 | +# | ||
| 7798 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 7799 | +# | ||
| 7800 | +CONFIG_SERIAL_ACP=y | ||
| 7801 | +CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 7802 | +# CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 7803 | +CONFIG_LSI_NET=y | ||
| 7804 | +CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 7805 | +CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 7806 | +CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 7807 | +CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 7808 | +CONFIG_LSI_NAND=y | ||
| 7809 | +CONFIG_LSI_UBOOTENV=y | ||
| 7810 | +CONFIG_LSI_PLX_PCIE_BRIDGE=y | ||
| 7811 | + | ||
| 7812 | +# | ||
| 7813 | +# File systems | ||
| 7814 | +# | ||
| 7815 | +CONFIG_EXT2_FS=y | ||
| 7816 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 7817 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 7818 | +CONFIG_EXT3_FS=y | ||
| 7819 | +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y | ||
| 7820 | +CONFIG_EXT3_FS_XATTR=y | ||
| 7821 | +# CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 7822 | +# CONFIG_EXT3_FS_SECURITY is not set | ||
| 7823 | +CONFIG_EXT4_FS=y | ||
| 7824 | +CONFIG_EXT4_FS_XATTR=y | ||
| 7825 | +# CONFIG_EXT4_FS_POSIX_ACL is not set | ||
| 7826 | +# CONFIG_EXT4_FS_SECURITY is not set | ||
| 7827 | +# CONFIG_EXT4_DEBUG is not set | ||
| 7828 | +CONFIG_JBD=y | ||
| 7829 | +# CONFIG_JBD_DEBUG is not set | ||
| 7830 | +CONFIG_JBD2=y | ||
| 7831 | +# CONFIG_JBD2_DEBUG is not set | ||
| 7832 | +CONFIG_FS_MBCACHE=y | ||
| 7833 | +# CONFIG_REISERFS_FS is not set | ||
| 7834 | +# CONFIG_JFS_FS is not set | ||
| 7835 | +# CONFIG_XFS_FS is not set | ||
| 7836 | +# CONFIG_GFS2_FS is not set | ||
| 7837 | +# CONFIG_OCFS2_FS is not set | ||
| 7838 | +# CONFIG_BTRFS_FS is not set | ||
| 7839 | +# CONFIG_NILFS2_FS is not set | ||
| 7840 | +CONFIG_FS_POSIX_ACL=y | ||
| 7841 | +CONFIG_EXPORTFS=m | ||
| 7842 | +CONFIG_FILE_LOCKING=y | ||
| 7843 | +CONFIG_FSNOTIFY=y | ||
| 7844 | +CONFIG_DNOTIFY=y | ||
| 7845 | +CONFIG_INOTIFY_USER=y | ||
| 7846 | +CONFIG_FANOTIFY=y | ||
| 7847 | +# CONFIG_QUOTA is not set | ||
| 7848 | +# CONFIG_QUOTACTL is not set | ||
| 7849 | +CONFIG_AUTOFS4_FS=y | ||
| 7850 | +# CONFIG_FUSE_FS is not set | ||
| 7851 | + | ||
| 7852 | +# | ||
| 7853 | +# Caches | ||
| 7854 | +# | ||
| 7855 | +# CONFIG_FSCACHE is not set | ||
| 7856 | + | ||
| 7857 | +# | ||
| 7858 | +# CD-ROM/DVD Filesystems | ||
| 7859 | +# | ||
| 7860 | +# CONFIG_ISO9660_FS is not set | ||
| 7861 | +# CONFIG_UDF_FS is not set | ||
| 7862 | + | ||
| 7863 | +# | ||
| 7864 | +# DOS/FAT/NT Filesystems | ||
| 7865 | +# | ||
| 7866 | +CONFIG_FAT_FS=y | ||
| 7867 | +CONFIG_MSDOS_FS=y | ||
| 7868 | +CONFIG_VFAT_FS=y | ||
| 7869 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 7870 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 7871 | +CONFIG_NTFS_FS=m | ||
| 7872 | +# CONFIG_NTFS_DEBUG is not set | ||
| 7873 | +CONFIG_NTFS_RW=y | ||
| 7874 | + | ||
| 7875 | +# | ||
| 7876 | +# Pseudo filesystems | ||
| 7877 | +# | ||
| 7878 | +CONFIG_PROC_FS=y | ||
| 7879 | +# CONFIG_PROC_KCORE is not set | ||
| 7880 | +CONFIG_PROC_SYSCTL=y | ||
| 7881 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 7882 | +CONFIG_SYSFS=y | ||
| 7883 | +CONFIG_TMPFS=y | ||
| 7884 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 7885 | +# CONFIG_TMPFS_XATTR is not set | ||
| 7886 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 7887 | +CONFIG_CONFIGFS_FS=m | ||
| 7888 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 7889 | +# CONFIG_ADFS_FS is not set | ||
| 7890 | +# CONFIG_AFFS_FS is not set | ||
| 7891 | +# CONFIG_ECRYPT_FS is not set | ||
| 7892 | +# CONFIG_HFS_FS is not set | ||
| 7893 | +# CONFIG_HFSPLUS_FS is not set | ||
| 7894 | +# CONFIG_BEFS_FS is not set | ||
| 7895 | +# CONFIG_BFS_FS is not set | ||
| 7896 | +# CONFIG_EFS_FS is not set | ||
| 7897 | +CONFIG_JFFS2_FS=y | ||
| 7898 | +CONFIG_JFFS2_FS_DEBUG=0 | ||
| 7899 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 7900 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 7901 | +# CONFIG_JFFS2_SUMMARY is not set | ||
| 7902 | +# CONFIG_JFFS2_FS_XATTR is not set | ||
| 7903 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 7904 | +CONFIG_JFFS2_ZLIB=y | ||
| 7905 | +# CONFIG_JFFS2_LZO is not set | ||
| 7906 | +CONFIG_JFFS2_RTIME=y | ||
| 7907 | +# CONFIG_JFFS2_RUBIN is not set | ||
| 7908 | +# CONFIG_LOGFS is not set | ||
| 7909 | +# CONFIG_CRAMFS is not set | ||
| 7910 | +# CONFIG_SQUASHFS is not set | ||
| 7911 | +# CONFIG_VXFS_FS is not set | ||
| 7912 | +# CONFIG_MINIX_FS is not set | ||
| 7913 | +# CONFIG_OMFS_FS is not set | ||
| 7914 | +# CONFIG_HPFS_FS is not set | ||
| 7915 | +# CONFIG_QNX4FS_FS is not set | ||
| 7916 | +# CONFIG_ROMFS_FS is not set | ||
| 7917 | +# CONFIG_PSTORE is not set | ||
| 7918 | +# CONFIG_SYSV_FS is not set | ||
| 7919 | +# CONFIG_UFS_FS is not set | ||
| 7920 | +CONFIG_NETWORK_FILESYSTEMS=y | ||
| 7921 | +CONFIG_NFS_FS=y | ||
| 7922 | +CONFIG_NFS_V3=y | ||
| 7923 | +# CONFIG_NFS_V3_ACL is not set | ||
| 7924 | +# CONFIG_NFS_V4 is not set | ||
| 7925 | +CONFIG_ROOT_NFS=y | ||
| 7926 | +CONFIG_NFSD=m | ||
| 7927 | +CONFIG_NFSD_V3=y | ||
| 7928 | +# CONFIG_NFSD_V3_ACL is not set | ||
| 7929 | +CONFIG_NFSD_V4=y | ||
| 7930 | +CONFIG_LOCKD=y | ||
| 7931 | +CONFIG_LOCKD_V4=y | ||
| 7932 | +CONFIG_NFS_COMMON=y | ||
| 7933 | +CONFIG_SUNRPC=y | ||
| 7934 | +CONFIG_SUNRPC_GSS=m | ||
| 7935 | +# CONFIG_CEPH_FS is not set | ||
| 7936 | +# CONFIG_CIFS is not set | ||
| 7937 | +# CONFIG_NCP_FS is not set | ||
| 7938 | +# CONFIG_CODA_FS is not set | ||
| 7939 | +# CONFIG_AFS_FS is not set | ||
| 7940 | + | ||
| 7941 | +# | ||
| 7942 | +# Partition Types | ||
| 7943 | +# | ||
| 7944 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 7945 | +CONFIG_MSDOS_PARTITION=y | ||
| 7946 | +CONFIG_NLS=y | ||
| 7947 | +CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 7948 | +CONFIG_NLS_CODEPAGE_437=y | ||
| 7949 | +# CONFIG_NLS_CODEPAGE_737 is not set | ||
| 7950 | +# CONFIG_NLS_CODEPAGE_775 is not set | ||
| 7951 | +CONFIG_NLS_CODEPAGE_850=y | ||
| 7952 | +# CONFIG_NLS_CODEPAGE_852 is not set | ||
| 7953 | +# CONFIG_NLS_CODEPAGE_855 is not set | ||
| 7954 | +# CONFIG_NLS_CODEPAGE_857 is not set | ||
| 7955 | +# CONFIG_NLS_CODEPAGE_860 is not set | ||
| 7956 | +# CONFIG_NLS_CODEPAGE_861 is not set | ||
| 7957 | +# CONFIG_NLS_CODEPAGE_862 is not set | ||
| 7958 | +# CONFIG_NLS_CODEPAGE_863 is not set | ||
| 7959 | +# CONFIG_NLS_CODEPAGE_864 is not set | ||
| 7960 | +CONFIG_NLS_CODEPAGE_865=y | ||
| 7961 | +# CONFIG_NLS_CODEPAGE_866 is not set | ||
| 7962 | +# CONFIG_NLS_CODEPAGE_869 is not set | ||
| 7963 | +# CONFIG_NLS_CODEPAGE_936 is not set | ||
| 7964 | +# CONFIG_NLS_CODEPAGE_950 is not set | ||
| 7965 | +# CONFIG_NLS_CODEPAGE_932 is not set | ||
| 7966 | +# CONFIG_NLS_CODEPAGE_949 is not set | ||
| 7967 | +# CONFIG_NLS_CODEPAGE_874 is not set | ||
| 7968 | +# CONFIG_NLS_ISO8859_8 is not set | ||
| 7969 | +# CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 7970 | +# CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 7971 | +CONFIG_NLS_ASCII=y | ||
| 7972 | +CONFIG_NLS_ISO8859_1=y | ||
| 7973 | +# CONFIG_NLS_ISO8859_2 is not set | ||
| 7974 | +# CONFIG_NLS_ISO8859_3 is not set | ||
| 7975 | +# CONFIG_NLS_ISO8859_4 is not set | ||
| 7976 | +# CONFIG_NLS_ISO8859_5 is not set | ||
| 7977 | +# CONFIG_NLS_ISO8859_6 is not set | ||
| 7978 | +# CONFIG_NLS_ISO8859_7 is not set | ||
| 7979 | +# CONFIG_NLS_ISO8859_9 is not set | ||
| 7980 | +# CONFIG_NLS_ISO8859_13 is not set | ||
| 7981 | +# CONFIG_NLS_ISO8859_14 is not set | ||
| 7982 | +# CONFIG_NLS_ISO8859_15 is not set | ||
| 7983 | +# CONFIG_NLS_KOI8_R is not set | ||
| 7984 | +# CONFIG_NLS_KOI8_U is not set | ||
| 7985 | +# CONFIG_NLS_UTF8 is not set | ||
| 7986 | +# CONFIG_DLM is not set | ||
| 7987 | +# CONFIG_BINARY_PRINTF is not set | ||
| 7988 | + | ||
| 7989 | +# | ||
| 7990 | +# Library routines | ||
| 7991 | +# | ||
| 7992 | +CONFIG_BITREVERSE=y | ||
| 7993 | +CONFIG_CRC_CCITT=m | ||
| 7994 | +CONFIG_CRC16=y | ||
| 7995 | +# CONFIG_CRC_T10DIF is not set | ||
| 7996 | +# CONFIG_CRC_ITU_T is not set | ||
| 7997 | +CONFIG_CRC32=y | ||
| 7998 | +# CONFIG_CRC7 is not set | ||
| 7999 | +# CONFIG_LIBCRC32C is not set | ||
| 8000 | +# CONFIG_CRC8 is not set | ||
| 8001 | +CONFIG_ZLIB_INFLATE=y | ||
| 8002 | +CONFIG_ZLIB_DEFLATE=y | ||
| 8003 | +# CONFIG_XZ_DEC is not set | ||
| 8004 | +# CONFIG_XZ_DEC_BCJ is not set | ||
| 8005 | +CONFIG_HAS_IOMEM=y | ||
| 8006 | +CONFIG_HAS_IOPORT=y | ||
| 8007 | +CONFIG_HAS_DMA=y | ||
| 8008 | +CONFIG_CPU_RMAP=y | ||
| 8009 | +CONFIG_NLATTR=y | ||
| 8010 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 8011 | +# CONFIG_AVERAGE is not set | ||
| 8012 | +# CONFIG_CORDIC is not set | ||
| 8013 | + | ||
| 8014 | +# | ||
| 8015 | +# Kernel hacking | ||
| 8016 | +# | ||
| 8017 | +# CONFIG_PRINTK_TIME is not set | ||
| 8018 | +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 | ||
| 8019 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 8020 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 8021 | +CONFIG_FRAME_WARN=1024 | ||
| 8022 | +CONFIG_MAGIC_SYSRQ=y | ||
| 8023 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 8024 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 8025 | +CONFIG_DEBUG_FS=y | ||
| 8026 | +# CONFIG_HEADERS_CHECK is not set | ||
| 8027 | +# CONFIG_DEBUG_SECTION_MISMATCH is not set | ||
| 8028 | +CONFIG_DEBUG_KERNEL=y | ||
| 8029 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 8030 | +# CONFIG_LOCKUP_DETECTOR is not set | ||
| 8031 | +# CONFIG_HARDLOCKUP_DETECTOR is not set | ||
| 8032 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 8033 | +CONFIG_SCHED_DEBUG=y | ||
| 8034 | +# CONFIG_SCHEDSTATS is not set | ||
| 8035 | +# CONFIG_TIMER_STATS is not set | ||
| 8036 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 8037 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 8038 | +# CONFIG_SLUB_STATS is not set | ||
| 8039 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 8040 | +CONFIG_DEBUG_PREEMPT=y | ||
| 8041 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 8042 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 8043 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 8044 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 8045 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 8046 | +# CONFIG_PROVE_LOCKING is not set | ||
| 8047 | +# CONFIG_SPARSE_RCU_POINTER is not set | ||
| 8048 | +# CONFIG_LOCK_STAT is not set | ||
| 8049 | +# CONFIG_DEBUG_ATOMIC_SLEEP is not set | ||
| 8050 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 8051 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 8052 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 8053 | +# CONFIG_DEBUG_HIGHMEM is not set | ||
| 8054 | +CONFIG_DEBUG_BUGVERBOSE=y | ||
| 8055 | +CONFIG_DEBUG_INFO=y | ||
| 8056 | +# CONFIG_DEBUG_INFO_REDUCED is not set | ||
| 8057 | +# CONFIG_DEBUG_VM is not set | ||
| 8058 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 8059 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 8060 | +# CONFIG_DEBUG_LIST is not set | ||
| 8061 | +# CONFIG_TEST_LIST_SORT is not set | ||
| 8062 | +# CONFIG_DEBUG_SG is not set | ||
| 8063 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 8064 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 8065 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 8066 | +CONFIG_RCU_CPU_STALL_TIMEOUT=60 | ||
| 8067 | +CONFIG_RCU_CPU_STALL_VERBOSE=y | ||
| 8068 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 8069 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 8070 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 8071 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 8072 | +# CONFIG_LKDTM is not set | ||
| 8073 | +# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set | ||
| 8074 | +# CONFIG_FAULT_INJECTION is not set | ||
| 8075 | +# CONFIG_LATENCYTOP is not set | ||
| 8076 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 8077 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 8078 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 8079 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 8080 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 8081 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 8082 | +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y | ||
| 8083 | +CONFIG_RING_BUFFER=y | ||
| 8084 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 8085 | +CONFIG_TRACING_SUPPORT=y | ||
| 8086 | +CONFIG_FTRACE=y | ||
| 8087 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 8088 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 8089 | +# CONFIG_PREEMPT_TRACER is not set | ||
| 8090 | +# CONFIG_SCHED_TRACER is not set | ||
| 8091 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 8092 | +# CONFIG_FTRACE_SYSCALLS is not set | ||
| 8093 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 8094 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 8095 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 8096 | +# CONFIG_STACK_TRACER is not set | ||
| 8097 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 8098 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 8099 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 8100 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 8101 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 8102 | +# CONFIG_SAMPLES is not set | ||
| 8103 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 8104 | +# CONFIG_KGDB is not set | ||
| 8105 | +# CONFIG_TEST_KSTRTOX is not set | ||
| 8106 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 8107 | +CONFIG_PPC_WERROR=y | ||
| 8108 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 8109 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 8110 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 8111 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 8112 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 8113 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 8114 | +CONFIG_XMON=y | ||
| 8115 | +CONFIG_XMON_DEFAULT=y | ||
| 8116 | +CONFIG_XMON_DISASSEMBLY=y | ||
| 8117 | +CONFIG_DEBUGGER=y | ||
| 8118 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 8119 | +# CONFIG_BDI_SWITCH is not set | ||
| 8120 | +# CONFIG_PPC_EARLY_DEBUG is not set | ||
| 8121 | + | ||
| 8122 | +# | ||
| 8123 | +# Security options | ||
| 8124 | +# | ||
| 8125 | +CONFIG_KEYS=y | ||
| 8126 | +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 8127 | +# CONFIG_SECURITY_DMESG_RESTRICT is not set | ||
| 8128 | +# CONFIG_SECURITY is not set | ||
| 8129 | +# CONFIG_SECURITYFS is not set | ||
| 8130 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 8131 | +CONFIG_DEFAULT_SECURITY="" | ||
| 8132 | +CONFIG_CRYPTO=y | ||
| 8133 | + | ||
| 8134 | +# | ||
| 8135 | +# Crypto core or helper | ||
| 8136 | +# | ||
| 8137 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 8138 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 8139 | +CONFIG_CRYPTO_AEAD=y | ||
| 8140 | +CONFIG_CRYPTO_AEAD2=y | ||
| 8141 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 8142 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 8143 | +CONFIG_CRYPTO_HASH=y | ||
| 8144 | +CONFIG_CRYPTO_HASH2=y | ||
| 8145 | +CONFIG_CRYPTO_RNG=y | ||
| 8146 | +CONFIG_CRYPTO_RNG2=y | ||
| 8147 | +CONFIG_CRYPTO_PCOMP2=y | ||
| 8148 | +CONFIG_CRYPTO_MANAGER=y | ||
| 8149 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 8150 | +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y | ||
| 8151 | +CONFIG_CRYPTO_GF128MUL=y | ||
| 8152 | +CONFIG_CRYPTO_NULL=y | ||
| 8153 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 8154 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 8155 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 8156 | +CONFIG_CRYPTO_AUTHENC=y | ||
| 8157 | +# CONFIG_CRYPTO_TEST is not set | ||
| 8158 | + | ||
| 8159 | +# | ||
| 8160 | +# Authenticated Encryption with Associated Data | ||
| 8161 | +# | ||
| 8162 | +# CONFIG_CRYPTO_CCM is not set | ||
| 8163 | +CONFIG_CRYPTO_GCM=y | ||
| 8164 | +CONFIG_CRYPTO_SEQIV=y | ||
| 8165 | + | ||
| 8166 | +# | ||
| 8167 | +# Block modes | ||
| 8168 | +# | ||
| 8169 | +CONFIG_CRYPTO_CBC=y | ||
| 8170 | +CONFIG_CRYPTO_CTR=y | ||
| 8171 | +# CONFIG_CRYPTO_CTS is not set | ||
| 8172 | +# CONFIG_CRYPTO_ECB is not set | ||
| 8173 | +# CONFIG_CRYPTO_LRW is not set | ||
| 8174 | +# CONFIG_CRYPTO_PCBC is not set | ||
| 8175 | +# CONFIG_CRYPTO_XTS is not set | ||
| 8176 | + | ||
| 8177 | +# | ||
| 8178 | +# Hash modes | ||
| 8179 | +# | ||
| 8180 | +CONFIG_CRYPTO_HMAC=y | ||
| 8181 | +CONFIG_CRYPTO_XCBC=y | ||
| 8182 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 8183 | + | ||
| 8184 | +# | ||
| 8185 | +# Digest | ||
| 8186 | +# | ||
| 8187 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 8188 | +CONFIG_CRYPTO_GHASH=y | ||
| 8189 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 8190 | +CONFIG_CRYPTO_MD5=y | ||
| 8191 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 8192 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 8193 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 8194 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 8195 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 8196 | +CONFIG_CRYPTO_SHA1=y | ||
| 8197 | +CONFIG_CRYPTO_SHA256=y | ||
| 8198 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 8199 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 8200 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 8201 | + | ||
| 8202 | +# | ||
| 8203 | +# Ciphers | ||
| 8204 | +# | ||
| 8205 | +CONFIG_CRYPTO_AES=y | ||
| 8206 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 8207 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 8208 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 8209 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 8210 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 8211 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 8212 | +CONFIG_CRYPTO_DES=y | ||
| 8213 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 8214 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 8215 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 8216 | +# CONFIG_CRYPTO_SEED is not set | ||
| 8217 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 8218 | +# CONFIG_CRYPTO_TEA is not set | ||
| 8219 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 8220 | + | ||
| 8221 | +# | ||
| 8222 | +# Compression | ||
| 8223 | +# | ||
| 8224 | +CONFIG_CRYPTO_DEFLATE=y | ||
| 8225 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 8226 | +# CONFIG_CRYPTO_LZO is not set | ||
| 8227 | + | ||
| 8228 | +# | ||
| 8229 | +# Random Number Generation | ||
| 8230 | +# | ||
| 8231 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 8232 | +# CONFIG_CRYPTO_USER_API_HASH is not set | ||
| 8233 | +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set | ||
| 8234 | +CONFIG_CRYPTO_HW=y | ||
| 8235 | +# CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 8236 | +CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 8237 | +# CONFIG_PPC_CLOCK is not set | ||
| 8238 | +# CONFIG_VIRTUALIZATION is not set | ||
| 8239 | diff --git a/arch/powerpc/configs/acp_srio_defconfig b/arch/powerpc/configs/acp_srio_defconfig | ||
| 8240 | new file mode 100644 | ||
| 8241 | index 0000000..9e81676 | ||
| 8242 | --- /dev/null | ||
| 8243 | +++ b/arch/powerpc/configs/acp_srio_defconfig | ||
| 8244 | @@ -0,0 +1,1640 @@ | ||
| 8245 | +# | ||
| 8246 | +# Automatically generated make config: don't edit | ||
| 8247 | +# Linux kernel version: 2.6.35 | ||
| 8248 | +# Thu Jun 2 16:17:43 2011 | ||
| 8249 | +# | ||
| 8250 | +# CONFIG_PPC64 is not set | ||
| 8251 | + | ||
| 8252 | +# | ||
| 8253 | +# Processor support | ||
| 8254 | +# | ||
| 8255 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 8256 | +# CONFIG_PPC_85xx is not set | ||
| 8257 | +# CONFIG_PPC_8xx is not set | ||
| 8258 | +# CONFIG_40x is not set | ||
| 8259 | +CONFIG_44x=y | ||
| 8260 | +# CONFIG_E200 is not set | ||
| 8261 | +CONFIG_PPC_FPU=y | ||
| 8262 | +CONFIG_4xx=y | ||
| 8263 | +CONFIG_BOOKE=y | ||
| 8264 | +CONFIG_PTE_64BIT=y | ||
| 8265 | +CONFIG_PHYS_64BIT=y | ||
| 8266 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 8267 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 8268 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 8269 | +CONFIG_SMP=y | ||
| 8270 | +CONFIG_NR_CPUS=4 | ||
| 8271 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 8272 | +CONFIG_PPC32=y | ||
| 8273 | +CONFIG_WORD_SIZE=32 | ||
| 8274 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 8275 | +CONFIG_MMU=y | ||
| 8276 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 8277 | +CONFIG_GENERIC_TIME=y | ||
| 8278 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 8279 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 8280 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 8281 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 8282 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 8283 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 8284 | +CONFIG_IRQ_PER_CPU=y | ||
| 8285 | +CONFIG_NR_IRQS=512 | ||
| 8286 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 8287 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 8288 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 8289 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 8290 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 8291 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 8292 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 8293 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 8294 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 8295 | +CONFIG_PPC=y | ||
| 8296 | +CONFIG_EARLY_PRINTK=y | ||
| 8297 | +CONFIG_GENERIC_NVRAM=y | ||
| 8298 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 8299 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 8300 | +CONFIG_PPC_OF=y | ||
| 8301 | +CONFIG_OF=y | ||
| 8302 | +CONFIG_PPC_UDBG_16550=y | ||
| 8303 | +CONFIG_GENERIC_TBSYNC=y | ||
| 8304 | +CONFIG_AUDIT_ARCH=y | ||
| 8305 | +CONFIG_GENERIC_BUG=y | ||
| 8306 | +CONFIG_DTC=y | ||
| 8307 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 8308 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 8309 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 8310 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 8311 | +CONFIG_PPC_DCR=y | ||
| 8312 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 8313 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 8314 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 8315 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 8316 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 8317 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 8318 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 8319 | +CONFIG_CONSTRUCTORS=y | ||
| 8320 | + | ||
| 8321 | +# | ||
| 8322 | +# General setup | ||
| 8323 | +# | ||
| 8324 | +CONFIG_EXPERIMENTAL=y | ||
| 8325 | +CONFIG_LOCK_KERNEL=y | ||
| 8326 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 8327 | +CONFIG_CROSS_COMPILE="powerpc-linux-" | ||
| 8328 | +CONFIG_LOCALVERSION="" | ||
| 8329 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 8330 | +CONFIG_SWAP=y | ||
| 8331 | +CONFIG_SYSVIPC=y | ||
| 8332 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 8333 | +CONFIG_POSIX_MQUEUE=y | ||
| 8334 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 8335 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 8336 | +# CONFIG_TASKSTATS is not set | ||
| 8337 | +# CONFIG_AUDIT is not set | ||
| 8338 | + | ||
| 8339 | +# | ||
| 8340 | +# RCU Subsystem | ||
| 8341 | +# | ||
| 8342 | +CONFIG_TREE_RCU=y | ||
| 8343 | +# CONFIG_TREE_PREEMPT_RCU is not set | ||
| 8344 | +# CONFIG_TINY_RCU is not set | ||
| 8345 | +# CONFIG_RCU_TRACE is not set | ||
| 8346 | +CONFIG_RCU_FANOUT=32 | ||
| 8347 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 8348 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 8349 | +# CONFIG_IKCONFIG is not set | ||
| 8350 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 8351 | +# CONFIG_CGROUPS is not set | ||
| 8352 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 8353 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 8354 | +# CONFIG_RELAY is not set | ||
| 8355 | +# CONFIG_NAMESPACES is not set | ||
| 8356 | +CONFIG_BLK_DEV_INITRD=y | ||
| 8357 | +CONFIG_INITRAMFS_SOURCE="" | ||
| 8358 | +CONFIG_RD_GZIP=y | ||
| 8359 | +# CONFIG_RD_BZIP2 is not set | ||
| 8360 | +# CONFIG_RD_LZMA is not set | ||
| 8361 | +# CONFIG_RD_LZO is not set | ||
| 8362 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 8363 | +CONFIG_SYSCTL=y | ||
| 8364 | +CONFIG_ANON_INODES=y | ||
| 8365 | +CONFIG_EMBEDDED=y | ||
| 8366 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 8367 | +CONFIG_KALLSYMS=y | ||
| 8368 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 8369 | +CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 8370 | +CONFIG_HOTPLUG=y | ||
| 8371 | +CONFIG_PRINTK=y | ||
| 8372 | +CONFIG_BUG=y | ||
| 8373 | +CONFIG_ELF_CORE=y | ||
| 8374 | +CONFIG_BASE_FULL=y | ||
| 8375 | +CONFIG_FUTEX=y | ||
| 8376 | +CONFIG_EPOLL=y | ||
| 8377 | +CONFIG_SIGNALFD=y | ||
| 8378 | +CONFIG_TIMERFD=y | ||
| 8379 | +CONFIG_EVENTFD=y | ||
| 8380 | +CONFIG_SHMEM=y | ||
| 8381 | +CONFIG_AIO=y | ||
| 8382 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 8383 | + | ||
| 8384 | +# | ||
| 8385 | +# Kernel Performance Events And Counters | ||
| 8386 | +# | ||
| 8387 | +# CONFIG_PERF_EVENTS is not set | ||
| 8388 | +# CONFIG_PERF_COUNTERS is not set | ||
| 8389 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 8390 | +CONFIG_PCI_QUIRKS=y | ||
| 8391 | +CONFIG_SLUB_DEBUG=y | ||
| 8392 | +CONFIG_COMPAT_BRK=y | ||
| 8393 | +# CONFIG_SLAB is not set | ||
| 8394 | +CONFIG_SLUB=y | ||
| 8395 | +# CONFIG_SLOB is not set | ||
| 8396 | +CONFIG_PROFILING=y | ||
| 8397 | +CONFIG_OPROFILE=y | ||
| 8398 | +CONFIG_HAVE_OPROFILE=y | ||
| 8399 | +# CONFIG_KPROBES is not set | ||
| 8400 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 8401 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 8402 | +CONFIG_HAVE_KPROBES=y | ||
| 8403 | +CONFIG_HAVE_KRETPROBES=y | ||
| 8404 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 8405 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 8406 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 8407 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 8408 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 8409 | + | ||
| 8410 | +# | ||
| 8411 | +# GCOV-based kernel profiling | ||
| 8412 | +# | ||
| 8413 | +# CONFIG_GCOV_KERNEL is not set | ||
| 8414 | +# CONFIG_SLOW_WORK is not set | ||
| 8415 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 8416 | +CONFIG_SLABINFO=y | ||
| 8417 | +CONFIG_RT_MUTEXES=y | ||
| 8418 | +CONFIG_BASE_SMALL=0 | ||
| 8419 | +CONFIG_MODULES=y | ||
| 8420 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 8421 | +CONFIG_MODULE_UNLOAD=y | ||
| 8422 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 8423 | +CONFIG_MODVERSIONS=y | ||
| 8424 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 8425 | +CONFIG_STOP_MACHINE=y | ||
| 8426 | +CONFIG_BLOCK=y | ||
| 8427 | +CONFIG_LBDAF=y | ||
| 8428 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 8429 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 8430 | + | ||
| 8431 | +# | ||
| 8432 | +# IO Schedulers | ||
| 8433 | +# | ||
| 8434 | +CONFIG_IOSCHED_NOOP=y | ||
| 8435 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 8436 | +CONFIG_IOSCHED_CFQ=y | ||
| 8437 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 8438 | +CONFIG_DEFAULT_CFQ=y | ||
| 8439 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 8440 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 8441 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 8442 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 8443 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 8444 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 8445 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 8446 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 8447 | +CONFIG_INLINE_SPIN_UNLOCK=y | ||
| 8448 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 8449 | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
| 8450 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 8451 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 8452 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 8453 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 8454 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 8455 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 8456 | +CONFIG_INLINE_READ_UNLOCK=y | ||
| 8457 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 8458 | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
| 8459 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 8460 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 8461 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 8462 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 8463 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 8464 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 8465 | +CONFIG_INLINE_WRITE_UNLOCK=y | ||
| 8466 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 8467 | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
| 8468 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 8469 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 8470 | +# CONFIG_FREEZER is not set | ||
| 8471 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 8472 | +CONFIG_PPC_MSI_BITMAP=y | ||
| 8473 | +# CONFIG_RAPIDIO_FSL is not set | ||
| 8474 | + | ||
| 8475 | +# | ||
| 8476 | +# Platform support | ||
| 8477 | +# | ||
| 8478 | +# CONFIG_PPC_CELL is not set | ||
| 8479 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 8480 | +# CONFIG_PQ2ADS is not set | ||
| 8481 | +CONFIG_PPC_47x=y | ||
| 8482 | +# CONFIG_BAMBOO is not set | ||
| 8483 | +# CONFIG_EBONY is not set | ||
| 8484 | +# CONFIG_SAM440EP is not set | ||
| 8485 | +# CONFIG_SEQUOIA is not set | ||
| 8486 | +# CONFIG_TAISHAN is not set | ||
| 8487 | +# CONFIG_KATMAI is not set | ||
| 8488 | +# CONFIG_RAINIER is not set | ||
| 8489 | +# CONFIG_WARP is not set | ||
| 8490 | +# CONFIG_ARCHES is not set | ||
| 8491 | +# CONFIG_CANYONLANDS is not set | ||
| 8492 | +# CONFIG_GLACIER is not set | ||
| 8493 | +# CONFIG_REDWOOD is not set | ||
| 8494 | +# CONFIG_EIGER is not set | ||
| 8495 | +# CONFIG_YOSEMITE is not set | ||
| 8496 | +# CONFIG_ISS4xx is not set | ||
| 8497 | +# CONFIG_ICON is not set | ||
| 8498 | +CONFIG_ACP=y | ||
| 8499 | +# CONFIG_ACPISS is not set | ||
| 8500 | +# CONFIG_ACP_X1V1 is not set | ||
| 8501 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 8502 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 8503 | +# CONFIG_PPC4xx_GPIO is not set | ||
| 8504 | +CONFIG_440GP=y | ||
| 8505 | +# CONFIG_IPIC is not set | ||
| 8506 | +CONFIG_MPIC=y | ||
| 8507 | +# CONFIG_MPIC_WEIRD is not set | ||
| 8508 | +# CONFIG_PPC_I8259 is not set | ||
| 8509 | +# CONFIG_PPC_RTAS is not set | ||
| 8510 | +# CONFIG_MMIO_NVRAM is not set | ||
| 8511 | +# CONFIG_PPC_MPC106 is not set | ||
| 8512 | +# CONFIG_PPC_970_NAP is not set | ||
| 8513 | +# CONFIG_PPC_INDIRECT_IO is not set | ||
| 8514 | +# CONFIG_GENERIC_IOMAP is not set | ||
| 8515 | +# CONFIG_CPU_FREQ is not set | ||
| 8516 | +# CONFIG_FSL_ULI1575 is not set | ||
| 8517 | +# CONFIG_SIMPLE_GPIO is not set | ||
| 8518 | + | ||
| 8519 | +# | ||
| 8520 | +# Kernel options | ||
| 8521 | +# | ||
| 8522 | +CONFIG_HIGHMEM=y | ||
| 8523 | +CONFIG_TICK_ONESHOT=y | ||
| 8524 | +# CONFIG_NO_HZ is not set | ||
| 8525 | +CONFIG_HIGH_RES_TIMERS=y | ||
| 8526 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 8527 | +CONFIG_HZ_100=y | ||
| 8528 | +# CONFIG_HZ_250 is not set | ||
| 8529 | +# CONFIG_HZ_300 is not set | ||
| 8530 | +# CONFIG_HZ_1000 is not set | ||
| 8531 | +CONFIG_HZ=100 | ||
| 8532 | +CONFIG_SCHED_HRTICK=y | ||
| 8533 | +CONFIG_PREEMPT_NONE=y | ||
| 8534 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 8535 | +# CONFIG_PREEMPT is not set | ||
| 8536 | +CONFIG_BINFMT_ELF=y | ||
| 8537 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 8538 | +# CONFIG_HAVE_AOUT is not set | ||
| 8539 | +# CONFIG_BINFMT_MISC is not set | ||
| 8540 | +# CONFIG_MATH_EMULATION is not set | ||
| 8541 | +# CONFIG_IOMMU_HELPER is not set | ||
| 8542 | +# CONFIG_SWIOTLB is not set | ||
| 8543 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 8544 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 8545 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 8546 | +# CONFIG_IRQ_ALL_CPUS is not set | ||
| 8547 | +CONFIG_SPARSE_IRQ=y | ||
| 8548 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 8549 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 8550 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 8551 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 8552 | +CONFIG_FLATMEM_MANUAL=y | ||
| 8553 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 8554 | +# CONFIG_SPARSEMEM_MANUAL is not set | ||
| 8555 | +CONFIG_FLATMEM=y | ||
| 8556 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 8557 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 8558 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 8559 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 8560 | +CONFIG_MIGRATION=y | ||
| 8561 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 8562 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 8563 | +CONFIG_BOUNCE=y | ||
| 8564 | +CONFIG_VIRT_TO_BUS=y | ||
| 8565 | +# CONFIG_KSM is not set | ||
| 8566 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 8567 | +CONFIG_STDBINUTILS=y | ||
| 8568 | +CONFIG_PPC_4K_PAGES=y | ||
| 8569 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 8570 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 8571 | +# CONFIG_PPC_256K_PAGES is not set | ||
| 8572 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 8573 | +# CONFIG_PROC_DEVICETREE is not set | ||
| 8574 | +CONFIG_CMDLINE_BOOL=y | ||
| 8575 | +CONFIG_CMDLINE="console=ttyS0 mtdparts=acp-nand:512K(2ndStage),512K(env-0),512K(env-1),512K(3rdStage),-(fs) ip=dhcp root=/dev/nfs" | ||
| 8576 | +CONFIG_EXTRA_TARGETS="" | ||
| 8577 | +CONFIG_SECCOMP=y | ||
| 8578 | +CONFIG_ISA_DMA_API=y | ||
| 8579 | + | ||
| 8580 | +# | ||
| 8581 | +# Bus options | ||
| 8582 | +# | ||
| 8583 | +CONFIG_ZONE_DMA=y | ||
| 8584 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 8585 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 8586 | +CONFIG_PPC_INDIRECT_PCI=y | ||
| 8587 | +CONFIG_4xx_SOC=y | ||
| 8588 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 8589 | +CONFIG_PCI=y | ||
| 8590 | +CONFIG_PCI_DOMAINS=y | ||
| 8591 | +CONFIG_PCI_SYSCALL=y | ||
| 8592 | +CONFIG_PCIEPORTBUS=y | ||
| 8593 | +# CONFIG_PCIEAER is not set | ||
| 8594 | +CONFIG_PCIEASPM=y | ||
| 8595 | +# CONFIG_PCIEASPM_DEBUG is not set | ||
| 8596 | +CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 8597 | +CONFIG_PCI_MSI=y | ||
| 8598 | +# CONFIG_PCI_DEBUG is not set | ||
| 8599 | +# CONFIG_PCI_STUB is not set | ||
| 8600 | +# CONFIG_PCI_IOV is not set | ||
| 8601 | +# CONFIG_PCCARD is not set | ||
| 8602 | +# CONFIG_HOTPLUG_PCI is not set | ||
| 8603 | +CONFIG_HAS_RAPIDIO=y | ||
| 8604 | +CONFIG_RAPIDIO=y | ||
| 8605 | +CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 8606 | +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 8607 | +# CONFIG_RAPIDIO_ACP is not set | ||
| 8608 | +CONFIG_RAPIDIO_TSI57X=y | ||
| 8609 | +CONFIG_RAPIDIO_CPS_XX=y | ||
| 8610 | +CONFIG_RAPIDIO_TSI568=y | ||
| 8611 | +CONFIG_RAPIDIO_TSI500=y | ||
| 8612 | +CONFIG_RAPIDIO_DEBUG=y | ||
| 8613 | + | ||
| 8614 | +# | ||
| 8615 | +# Advanced setup | ||
| 8616 | +# | ||
| 8617 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 8618 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 8619 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 8620 | +CONFIG_RELOCATABLE=y | ||
| 8621 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 8622 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 8623 | +CONFIG_KERNEL_START_BOOL=y | ||
| 8624 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 8625 | +CONFIG_PHYSICAL_START=0x00000000 | ||
| 8626 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 8627 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 8628 | +CONFIG_NET=y | ||
| 8629 | + | ||
| 8630 | +# | ||
| 8631 | +# Networking options | ||
| 8632 | +# | ||
| 8633 | +CONFIG_PACKET=y | ||
| 8634 | +CONFIG_UNIX=y | ||
| 8635 | +CONFIG_XFRM=y | ||
| 8636 | +CONFIG_XFRM_USER=y | ||
| 8637 | +CONFIG_XFRM_SUB_POLICY=y | ||
| 8638 | +CONFIG_XFRM_MIGRATE=y | ||
| 8639 | +CONFIG_XFRM_STATISTICS=y | ||
| 8640 | +CONFIG_XFRM_IPCOMP=y | ||
| 8641 | +CONFIG_NET_KEY=y | ||
| 8642 | +# CONFIG_NET_KEY_MIGRATE is not set | ||
| 8643 | +CONFIG_INET=y | ||
| 8644 | +CONFIG_IP_MULTICAST=y | ||
| 8645 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 8646 | +CONFIG_IP_FIB_HASH=y | ||
| 8647 | +CONFIG_IP_PNP=y | ||
| 8648 | +CONFIG_IP_PNP_DHCP=y | ||
| 8649 | +CONFIG_IP_PNP_BOOTP=y | ||
| 8650 | +CONFIG_IP_PNP_RARP=y | ||
| 8651 | +CONFIG_NET_IPIP=y | ||
| 8652 | +# CONFIG_NET_IPGRE is not set | ||
| 8653 | +# CONFIG_IP_MROUTE is not set | ||
| 8654 | +# CONFIG_ARPD is not set | ||
| 8655 | +CONFIG_SYN_COOKIES=y | ||
| 8656 | +CONFIG_INET_AH=y | ||
| 8657 | +CONFIG_INET_ESP=y | ||
| 8658 | +CONFIG_INET_IPCOMP=y | ||
| 8659 | +CONFIG_INET_XFRM_TUNNEL=y | ||
| 8660 | +CONFIG_INET_TUNNEL=y | ||
| 8661 | +CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 8662 | +CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 8663 | +CONFIG_INET_XFRM_MODE_BEET=y | ||
| 8664 | +# CONFIG_INET_LRO is not set | ||
| 8665 | +CONFIG_INET_DIAG=y | ||
| 8666 | +CONFIG_INET_TCP_DIAG=y | ||
| 8667 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 8668 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 8669 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 8670 | +# CONFIG_TCP_MD5SIG is not set | ||
| 8671 | +CONFIG_IPV6=y | ||
| 8672 | +# CONFIG_IPV6_PRIVACY is not set | ||
| 8673 | +# CONFIG_IPV6_ROUTER_PREF is not set | ||
| 8674 | +# CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 8675 | +CONFIG_INET6_AH=y | ||
| 8676 | +CONFIG_INET6_ESP=y | ||
| 8677 | +CONFIG_INET6_IPCOMP=y | ||
| 8678 | +CONFIG_IPV6_MIP6=y | ||
| 8679 | +CONFIG_INET6_XFRM_TUNNEL=y | ||
| 8680 | +CONFIG_INET6_TUNNEL=y | ||
| 8681 | +CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 8682 | +CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 8683 | +CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 8684 | +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 8685 | +CONFIG_IPV6_SIT=y | ||
| 8686 | +# CONFIG_IPV6_SIT_6RD is not set | ||
| 8687 | +CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 8688 | +CONFIG_IPV6_TUNNEL=y | ||
| 8689 | +# CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 8690 | +# CONFIG_IPV6_MROUTE is not set | ||
| 8691 | +CONFIG_NETWORK_SECMARK=y | ||
| 8692 | +CONFIG_NETFILTER=y | ||
| 8693 | +# CONFIG_NETFILTER_DEBUG is not set | ||
| 8694 | +CONFIG_NETFILTER_ADVANCED=y | ||
| 8695 | + | ||
| 8696 | +# | ||
| 8697 | +# Core Netfilter Configuration | ||
| 8698 | +# | ||
| 8699 | +# CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 8700 | +# CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 8701 | +# CONFIG_NF_CONNTRACK is not set | ||
| 8702 | +# CONFIG_NETFILTER_XTABLES is not set | ||
| 8703 | +# CONFIG_IP_VS is not set | ||
| 8704 | + | ||
| 8705 | +# | ||
| 8706 | +# IP: Netfilter Configuration | ||
| 8707 | +# | ||
| 8708 | +# CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 8709 | +# CONFIG_IP_NF_QUEUE is not set | ||
| 8710 | +# CONFIG_IP_NF_IPTABLES is not set | ||
| 8711 | +# CONFIG_IP_NF_ARPTABLES is not set | ||
| 8712 | + | ||
| 8713 | +# | ||
| 8714 | +# IPv6: Netfilter Configuration | ||
| 8715 | +# | ||
| 8716 | +# CONFIG_IP6_NF_QUEUE is not set | ||
| 8717 | +# CONFIG_IP6_NF_IPTABLES is not set | ||
| 8718 | +# CONFIG_IP_DCCP is not set | ||
| 8719 | +# CONFIG_IP_SCTP is not set | ||
| 8720 | +# CONFIG_RDS is not set | ||
| 8721 | +# CONFIG_TIPC is not set | ||
| 8722 | +# CONFIG_ATM is not set | ||
| 8723 | +# CONFIG_L2TP is not set | ||
| 8724 | +# CONFIG_BRIDGE is not set | ||
| 8725 | +# CONFIG_NET_DSA is not set | ||
| 8726 | +CONFIG_VLAN_8021Q=y | ||
| 8727 | +# CONFIG_VLAN_8021Q_GVRP is not set | ||
| 8728 | +# CONFIG_DECNET is not set | ||
| 8729 | +# CONFIG_LLC2 is not set | ||
| 8730 | +# CONFIG_IPX is not set | ||
| 8731 | +# CONFIG_ATALK is not set | ||
| 8732 | +# CONFIG_X25 is not set | ||
| 8733 | +# CONFIG_LAPB is not set | ||
| 8734 | +# CONFIG_ECONET is not set | ||
| 8735 | +# CONFIG_WAN_ROUTER is not set | ||
| 8736 | +# CONFIG_PHONET is not set | ||
| 8737 | +# CONFIG_IEEE802154 is not set | ||
| 8738 | +# CONFIG_NET_SCHED is not set | ||
| 8739 | +# CONFIG_DCB is not set | ||
| 8740 | +CONFIG_RPS=y | ||
| 8741 | + | ||
| 8742 | +# | ||
| 8743 | +# Network testing | ||
| 8744 | +# | ||
| 8745 | +# CONFIG_NET_PKTGEN is not set | ||
| 8746 | +# CONFIG_HAMRADIO is not set | ||
| 8747 | +# CONFIG_CAN is not set | ||
| 8748 | +# CONFIG_IRDA is not set | ||
| 8749 | +# CONFIG_BT is not set | ||
| 8750 | +# CONFIG_AF_RXRPC is not set | ||
| 8751 | +CONFIG_WIRELESS=y | ||
| 8752 | +CONFIG_WIRELESS_EXT=y | ||
| 8753 | +CONFIG_WEXT_CORE=y | ||
| 8754 | +CONFIG_WEXT_PROC=y | ||
| 8755 | +CONFIG_WEXT_PRIV=y | ||
| 8756 | +# CONFIG_CFG80211 is not set | ||
| 8757 | +CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 8758 | +# CONFIG_LIB80211 is not set | ||
| 8759 | + | ||
| 8760 | +# | ||
| 8761 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 8762 | +# | ||
| 8763 | + | ||
| 8764 | +# | ||
| 8765 | +# Some wireless drivers require a rate control algorithm | ||
| 8766 | +# | ||
| 8767 | +# CONFIG_WIMAX is not set | ||
| 8768 | +# CONFIG_RFKILL is not set | ||
| 8769 | +# CONFIG_NET_9P is not set | ||
| 8770 | +# CONFIG_CAIF is not set | ||
| 8771 | + | ||
| 8772 | +# | ||
| 8773 | +# Device Drivers | ||
| 8774 | +# | ||
| 8775 | + | ||
| 8776 | +# | ||
| 8777 | +# Generic Driver Options | ||
| 8778 | +# | ||
| 8779 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 8780 | +# CONFIG_DEVTMPFS is not set | ||
| 8781 | +CONFIG_STANDALONE=y | ||
| 8782 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 8783 | +CONFIG_FW_LOADER=y | ||
| 8784 | +CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 8785 | +CONFIG_EXTRA_FIRMWARE="" | ||
| 8786 | +# CONFIG_DEBUG_DRIVER is not set | ||
| 8787 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 8788 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 8789 | +# CONFIG_CONNECTOR is not set | ||
| 8790 | +CONFIG_MTD=y | ||
| 8791 | +# CONFIG_MTD_DEBUG is not set | ||
| 8792 | +# CONFIG_MTD_TESTS is not set | ||
| 8793 | +# CONFIG_MTD_CONCAT is not set | ||
| 8794 | +CONFIG_MTD_PARTITIONS=y | ||
| 8795 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 8796 | +CONFIG_MTD_CMDLINE_PARTS=y | ||
| 8797 | +CONFIG_MTD_OF_PARTS=y | ||
| 8798 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 8799 | + | ||
| 8800 | +# | ||
| 8801 | +# User Modules And Translation Layers | ||
| 8802 | +# | ||
| 8803 | +CONFIG_MTD_CHAR=y | ||
| 8804 | +CONFIG_MTD_BLKDEVS=y | ||
| 8805 | +CONFIG_MTD_BLOCK=y | ||
| 8806 | +# CONFIG_FTL is not set | ||
| 8807 | +# CONFIG_NFTL is not set | ||
| 8808 | +# CONFIG_INFTL is not set | ||
| 8809 | +# CONFIG_RFD_FTL is not set | ||
| 8810 | +# CONFIG_SSFDC is not set | ||
| 8811 | +# CONFIG_SM_FTL is not set | ||
| 8812 | +# CONFIG_MTD_OOPS is not set | ||
| 8813 | + | ||
| 8814 | +# | ||
| 8815 | +# RAM/ROM/Flash chip drivers | ||
| 8816 | +# | ||
| 8817 | +# CONFIG_MTD_CFI is not set | ||
| 8818 | +CONFIG_MTD_JEDECPROBE=y | ||
| 8819 | +CONFIG_MTD_GEN_PROBE=y | ||
| 8820 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 8821 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 8822 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 8823 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 8824 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 8825 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 8826 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 8827 | +CONFIG_MTD_CFI_I1=y | ||
| 8828 | +CONFIG_MTD_CFI_I2=y | ||
| 8829 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 8830 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 8831 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 8832 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 8833 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 8834 | +CONFIG_MTD_CFI_UTIL=y | ||
| 8835 | +# CONFIG_MTD_RAM is not set | ||
| 8836 | +# CONFIG_MTD_ROM is not set | ||
| 8837 | +# CONFIG_MTD_ABSENT is not set | ||
| 8838 | + | ||
| 8839 | +# | ||
| 8840 | +# Mapping drivers for chip access | ||
| 8841 | +# | ||
| 8842 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 8843 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 8844 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 8845 | +# CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 8846 | +# CONFIG_MTD_PLATRAM is not set | ||
| 8847 | + | ||
| 8848 | +# | ||
| 8849 | +# Self-contained MTD device drivers | ||
| 8850 | +# | ||
| 8851 | +# CONFIG_MTD_PMC551 is not set | ||
| 8852 | +# CONFIG_MTD_SLRAM is not set | ||
| 8853 | +# CONFIG_MTD_PHRAM is not set | ||
| 8854 | +# CONFIG_MTD_MTDRAM is not set | ||
| 8855 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 8856 | + | ||
| 8857 | +# | ||
| 8858 | +# Disk-On-Chip Device Drivers | ||
| 8859 | +# | ||
| 8860 | +# CONFIG_MTD_DOC2000 is not set | ||
| 8861 | +# CONFIG_MTD_DOC2001 is not set | ||
| 8862 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 8863 | +CONFIG_MTD_NAND_ECC=y | ||
| 8864 | +# CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 8865 | +CONFIG_MTD_NAND=y | ||
| 8866 | +# CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 8867 | +# CONFIG_MTD_SM_COMMON is not set | ||
| 8868 | +# CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 8869 | +# CONFIG_MTD_NAND_DENALI is not set | ||
| 8870 | +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018 | ||
| 8871 | +CONFIG_MTD_NAND_IDS=y | ||
| 8872 | +# CONFIG_MTD_NAND_RICOH is not set | ||
| 8873 | +# CONFIG_MTD_NAND_NDFC is not set | ||
| 8874 | +# CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 8875 | +# CONFIG_MTD_NAND_CAFE is not set | ||
| 8876 | +# CONFIG_MTD_NAND_NANDSIM is not set | ||
| 8877 | +CONFIG_MTD_NAND_PLATFORM=y | ||
| 8878 | +# CONFIG_MTD_ALAUDA is not set | ||
| 8879 | +# CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 8880 | +# CONFIG_MTD_ONENAND is not set | ||
| 8881 | + | ||
| 8882 | +# | ||
| 8883 | +# LPDDR flash memory drivers | ||
| 8884 | +# | ||
| 8885 | +# CONFIG_MTD_LPDDR is not set | ||
| 8886 | + | ||
| 8887 | +# | ||
| 8888 | +# UBI - Unsorted block images | ||
| 8889 | +# | ||
| 8890 | +# CONFIG_MTD_UBI is not set | ||
| 8891 | +CONFIG_OF_FLATTREE=y | ||
| 8892 | +CONFIG_OF_DYNAMIC=y | ||
| 8893 | +CONFIG_OF_DEVICE=y | ||
| 8894 | +# CONFIG_PARPORT is not set | ||
| 8895 | +CONFIG_BLK_DEV=y | ||
| 8896 | +# CONFIG_BLK_DEV_FD is not set | ||
| 8897 | +# CONFIG_BLK_CPQ_DA is not set | ||
| 8898 | +# CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 8899 | +# CONFIG_BLK_DEV_DAC960 is not set | ||
| 8900 | +# CONFIG_BLK_DEV_UMEM is not set | ||
| 8901 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 8902 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 8903 | + | ||
| 8904 | +# | ||
| 8905 | +# DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 8906 | +# | ||
| 8907 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 8908 | +# CONFIG_BLK_DEV_SX8 is not set | ||
| 8909 | +CONFIG_BLK_DEV_UB=y | ||
| 8910 | +CONFIG_BLK_DEV_RAM=y | ||
| 8911 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 8912 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 8913 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 8914 | +# CONFIG_BLK_DEV_ISS is not set | ||
| 8915 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 8916 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 8917 | +# CONFIG_XILINX_SYSACE is not set | ||
| 8918 | +# CONFIG_BLK_DEV_HD is not set | ||
| 8919 | +CONFIG_MISC_DEVICES=y | ||
| 8920 | +# CONFIG_PHANTOM is not set | ||
| 8921 | +# CONFIG_SGI_IOC4 is not set | ||
| 8922 | +# CONFIG_TIFM_CORE is not set | ||
| 8923 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 8924 | +# CONFIG_HP_ILO is not set | ||
| 8925 | +# CONFIG_C2PORT is not set | ||
| 8926 | + | ||
| 8927 | +# | ||
| 8928 | +# EEPROM support | ||
| 8929 | +# | ||
| 8930 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 8931 | +# CONFIG_CB710_CORE is not set | ||
| 8932 | +CONFIG_HAVE_IDE=y | ||
| 8933 | +# CONFIG_IDE is not set | ||
| 8934 | + | ||
| 8935 | +# | ||
| 8936 | +# SCSI device support | ||
| 8937 | +# | ||
| 8938 | +CONFIG_SCSI_MOD=y | ||
| 8939 | +# CONFIG_RAID_ATTRS is not set | ||
| 8940 | +CONFIG_SCSI=y | ||
| 8941 | +CONFIG_SCSI_DMA=y | ||
| 8942 | +CONFIG_SCSI_TGT=y | ||
| 8943 | +# CONFIG_SCSI_NETLINK is not set | ||
| 8944 | +CONFIG_SCSI_PROC_FS=y | ||
| 8945 | + | ||
| 8946 | +# | ||
| 8947 | +# SCSI support type (disk, tape, CD-ROM) | ||
| 8948 | +# | ||
| 8949 | +CONFIG_BLK_DEV_SD=y | ||
| 8950 | +# CONFIG_CHR_DEV_ST is not set | ||
| 8951 | +# CONFIG_CHR_DEV_OSST is not set | ||
| 8952 | +# CONFIG_BLK_DEV_SR is not set | ||
| 8953 | +# CONFIG_CHR_DEV_SG is not set | ||
| 8954 | +# CONFIG_CHR_DEV_SCH is not set | ||
| 8955 | +# CONFIG_SCSI_MULTI_LUN is not set | ||
| 8956 | +CONFIG_SCSI_CONSTANTS=y | ||
| 8957 | +# CONFIG_SCSI_LOGGING is not set | ||
| 8958 | +# CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 8959 | +CONFIG_SCSI_WAIT_SCAN=m | ||
| 8960 | + | ||
| 8961 | +# | ||
| 8962 | +# SCSI Transports | ||
| 8963 | +# | ||
| 8964 | +# CONFIG_SCSI_SPI_ATTRS is not set | ||
| 8965 | +# CONFIG_SCSI_FC_ATTRS is not set | ||
| 8966 | +# CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 8967 | +# CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 8968 | +# CONFIG_SCSI_SRP_ATTRS is not set | ||
| 8969 | +CONFIG_SCSI_LOWLEVEL=y | ||
| 8970 | +# CONFIG_ISCSI_TCP is not set | ||
| 8971 | +# CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 8972 | +# CONFIG_BE2ISCSI is not set | ||
| 8973 | +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 8974 | +# CONFIG_SCSI_HPSA is not set | ||
| 8975 | +# CONFIG_SCSI_3W_9XXX is not set | ||
| 8976 | +# CONFIG_SCSI_3W_SAS is not set | ||
| 8977 | +# CONFIG_SCSI_ACARD is not set | ||
| 8978 | +# CONFIG_SCSI_AACRAID is not set | ||
| 8979 | +# CONFIG_SCSI_AIC7XXX is not set | ||
| 8980 | +# CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 8981 | +# CONFIG_SCSI_AIC79XX is not set | ||
| 8982 | +# CONFIG_SCSI_AIC94XX is not set | ||
| 8983 | +# CONFIG_SCSI_MVSAS is not set | ||
| 8984 | +# CONFIG_SCSI_DPT_I2O is not set | ||
| 8985 | +# CONFIG_SCSI_ADVANSYS is not set | ||
| 8986 | +# CONFIG_SCSI_ARCMSR is not set | ||
| 8987 | +# CONFIG_MEGARAID_NEWGEN is not set | ||
| 8988 | +# CONFIG_MEGARAID_LEGACY is not set | ||
| 8989 | +# CONFIG_MEGARAID_SAS is not set | ||
| 8990 | +# CONFIG_SCSI_MPT2SAS is not set | ||
| 8991 | +# CONFIG_SCSI_HPTIOP is not set | ||
| 8992 | +# CONFIG_SCSI_BUSLOGIC is not set | ||
| 8993 | +# CONFIG_LIBFC is not set | ||
| 8994 | +# CONFIG_LIBFCOE is not set | ||
| 8995 | +# CONFIG_FCOE is not set | ||
| 8996 | +# CONFIG_SCSI_DMX3191D is not set | ||
| 8997 | +# CONFIG_SCSI_EATA is not set | ||
| 8998 | +# CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 8999 | +# CONFIG_SCSI_GDTH is not set | ||
| 9000 | +# CONFIG_SCSI_IPS is not set | ||
| 9001 | +# CONFIG_SCSI_INITIO is not set | ||
| 9002 | +# CONFIG_SCSI_INIA100 is not set | ||
| 9003 | +# CONFIG_SCSI_STEX is not set | ||
| 9004 | +# CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 9005 | +# CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 9006 | +# CONFIG_SCSI_QLA_FC is not set | ||
| 9007 | +# CONFIG_SCSI_QLA_ISCSI is not set | ||
| 9008 | +# CONFIG_SCSI_LPFC is not set | ||
| 9009 | +# CONFIG_SCSI_DC395x is not set | ||
| 9010 | +# CONFIG_SCSI_DC390T is not set | ||
| 9011 | +# CONFIG_SCSI_NSP32 is not set | ||
| 9012 | +# CONFIG_SCSI_DEBUG is not set | ||
| 9013 | +# CONFIG_SCSI_PMCRAID is not set | ||
| 9014 | +# CONFIG_SCSI_PM8001 is not set | ||
| 9015 | +# CONFIG_SCSI_SRP is not set | ||
| 9016 | +# CONFIG_SCSI_BFA_FC is not set | ||
| 9017 | +# CONFIG_SCSI_DH is not set | ||
| 9018 | +# CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 9019 | +# CONFIG_ATA is not set | ||
| 9020 | +CONFIG_MD=y | ||
| 9021 | +CONFIG_BLK_DEV_MD=y | ||
| 9022 | +CONFIG_MD_AUTODETECT=y | ||
| 9023 | +CONFIG_MD_LINEAR=y | ||
| 9024 | +CONFIG_MD_RAID0=y | ||
| 9025 | +CONFIG_MD_RAID1=y | ||
| 9026 | +CONFIG_MD_RAID10=y | ||
| 9027 | +# CONFIG_MD_RAID456 is not set | ||
| 9028 | +CONFIG_MD_MULTIPATH=y | ||
| 9029 | +CONFIG_MD_FAULTY=y | ||
| 9030 | +CONFIG_BLK_DEV_DM=y | ||
| 9031 | +# CONFIG_DM_DEBUG is not set | ||
| 9032 | +CONFIG_DM_CRYPT=y | ||
| 9033 | +CONFIG_DM_SNAPSHOT=y | ||
| 9034 | +CONFIG_DM_MIRROR=y | ||
| 9035 | +# CONFIG_DM_LOG_USERSPACE is not set | ||
| 9036 | +CONFIG_DM_ZERO=y | ||
| 9037 | +# CONFIG_DM_MULTIPATH is not set | ||
| 9038 | +# CONFIG_DM_DELAY is not set | ||
| 9039 | +# CONFIG_DM_UEVENT is not set | ||
| 9040 | +# CONFIG_FUSION is not set | ||
| 9041 | + | ||
| 9042 | +# | ||
| 9043 | +# IEEE 1394 (FireWire) support | ||
| 9044 | +# | ||
| 9045 | + | ||
| 9046 | +# | ||
| 9047 | +# You can enable one or both FireWire driver stacks. | ||
| 9048 | +# | ||
| 9049 | + | ||
| 9050 | +# | ||
| 9051 | +# The newer stack is recommended. | ||
| 9052 | +# | ||
| 9053 | +# CONFIG_FIREWIRE is not set | ||
| 9054 | +# CONFIG_IEEE1394 is not set | ||
| 9055 | +# CONFIG_I2O is not set | ||
| 9056 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 9057 | +CONFIG_NETDEVICES=y | ||
| 9058 | +CONFIG_DUMMY=y | ||
| 9059 | +# CONFIG_BONDING is not set | ||
| 9060 | +# CONFIG_MACVLAN is not set | ||
| 9061 | +# CONFIG_EQUALIZER is not set | ||
| 9062 | +CONFIG_TUN=y | ||
| 9063 | +# CONFIG_VETH is not set | ||
| 9064 | +# CONFIG_ARCNET is not set | ||
| 9065 | +# CONFIG_PHYLIB is not set | ||
| 9066 | +CONFIG_NET_ETHERNET=y | ||
| 9067 | +CONFIG_MII=y | ||
| 9068 | +# CONFIG_HAPPYMEAL is not set | ||
| 9069 | +# CONFIG_SUNGEM is not set | ||
| 9070 | +# CONFIG_CASSINI is not set | ||
| 9071 | +# CONFIG_NET_VENDOR_3COM is not set | ||
| 9072 | +# CONFIG_ETHOC is not set | ||
| 9073 | +# CONFIG_DNET is not set | ||
| 9074 | +# CONFIG_NET_TULIP is not set | ||
| 9075 | +# CONFIG_HP100 is not set | ||
| 9076 | +# CONFIG_IBM_NEW_EMAC is not set | ||
| 9077 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 9078 | +# CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 9079 | +# CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 9080 | +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 9081 | +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 9082 | +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 9083 | +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 9084 | +# CONFIG_NET_PCI is not set | ||
| 9085 | +# CONFIG_B44 is not set | ||
| 9086 | +# CONFIG_KS8842 is not set | ||
| 9087 | +# CONFIG_KS8851_MLL is not set | ||
| 9088 | +# CONFIG_ATL2 is not set | ||
| 9089 | +# CONFIG_XILINX_EMACLITE is not set | ||
| 9090 | +CONFIG_NETDEV_1000=y | ||
| 9091 | +# CONFIG_ACENIC is not set | ||
| 9092 | +# CONFIG_DL2K is not set | ||
| 9093 | +CONFIG_E1000=y | ||
| 9094 | +CONFIG_E1000E=y | ||
| 9095 | +# CONFIG_IP1000 is not set | ||
| 9096 | +CONFIG_IGB=y | ||
| 9097 | +CONFIG_IGBVF=y | ||
| 9098 | +# CONFIG_NS83820 is not set | ||
| 9099 | +# CONFIG_HAMACHI is not set | ||
| 9100 | +# CONFIG_YELLOWFIN is not set | ||
| 9101 | +# CONFIG_R8169 is not set | ||
| 9102 | +# CONFIG_SIS190 is not set | ||
| 9103 | +# CONFIG_SKGE is not set | ||
| 9104 | +# CONFIG_SKY2 is not set | ||
| 9105 | +# CONFIG_VIA_VELOCITY is not set | ||
| 9106 | +# CONFIG_TIGON3 is not set | ||
| 9107 | +# CONFIG_BNX2 is not set | ||
| 9108 | +# CONFIG_CNIC is not set | ||
| 9109 | +# CONFIG_MV643XX_ETH is not set | ||
| 9110 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 9111 | +# CONFIG_QLA3XXX is not set | ||
| 9112 | +# CONFIG_ATL1 is not set | ||
| 9113 | +# CONFIG_ATL1E is not set | ||
| 9114 | +# CONFIG_ATL1C is not set | ||
| 9115 | +# CONFIG_JME is not set | ||
| 9116 | +# CONFIG_NETDEV_10000 is not set | ||
| 9117 | +# CONFIG_TR is not set | ||
| 9118 | +CONFIG_WLAN=y | ||
| 9119 | +# CONFIG_AIRO is not set | ||
| 9120 | +# CONFIG_ATMEL is not set | ||
| 9121 | +# CONFIG_PRISM54 is not set | ||
| 9122 | +CONFIG_USB_ZD1201=y | ||
| 9123 | +# CONFIG_HOSTAP is not set | ||
| 9124 | + | ||
| 9125 | +# | ||
| 9126 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 9127 | +# | ||
| 9128 | + | ||
| 9129 | +# | ||
| 9130 | +# USB Network Adapters | ||
| 9131 | +# | ||
| 9132 | +# CONFIG_USB_CATC is not set | ||
| 9133 | +# CONFIG_USB_KAWETH is not set | ||
| 9134 | +# CONFIG_USB_PEGASUS is not set | ||
| 9135 | +# CONFIG_USB_RTL8150 is not set | ||
| 9136 | +# CONFIG_USB_USBNET is not set | ||
| 9137 | +# CONFIG_USB_IPHETH is not set | ||
| 9138 | +# CONFIG_WAN is not set | ||
| 9139 | +# CONFIG_RIONET is not set | ||
| 9140 | +# CONFIG_FDDI is not set | ||
| 9141 | +# CONFIG_HIPPI is not set | ||
| 9142 | +CONFIG_PPP=m | ||
| 9143 | +CONFIG_PPP_MULTILINK=y | ||
| 9144 | +CONFIG_PPP_FILTER=y | ||
| 9145 | +CONFIG_PPP_ASYNC=m | ||
| 9146 | +CONFIG_PPP_SYNC_TTY=m | ||
| 9147 | +CONFIG_PPP_DEFLATE=m | ||
| 9148 | +CONFIG_PPP_BSDCOMP=m | ||
| 9149 | +# CONFIG_PPP_MPPE is not set | ||
| 9150 | +CONFIG_PPPOE=m | ||
| 9151 | +CONFIG_SLIP=m | ||
| 9152 | +CONFIG_SLIP_COMPRESSED=y | ||
| 9153 | +CONFIG_SLHC=m | ||
| 9154 | +CONFIG_SLIP_SMART=y | ||
| 9155 | +CONFIG_SLIP_MODE_SLIP6=y | ||
| 9156 | +# CONFIG_NET_FC is not set | ||
| 9157 | +CONFIG_NETCONSOLE=y | ||
| 9158 | +# CONFIG_NETCONSOLE_DYNAMIC is not set | ||
| 9159 | +CONFIG_NETPOLL=y | ||
| 9160 | +CONFIG_NETPOLL_TRAP=y | ||
| 9161 | +CONFIG_NET_POLL_CONTROLLER=y | ||
| 9162 | +# CONFIG_VMXNET3 is not set | ||
| 9163 | +# CONFIG_ISDN is not set | ||
| 9164 | +# CONFIG_PHONE is not set | ||
| 9165 | + | ||
| 9166 | +# | ||
| 9167 | +# Input device support | ||
| 9168 | +# | ||
| 9169 | +CONFIG_INPUT=y | ||
| 9170 | +# CONFIG_INPUT_FF_MEMLESS is not set | ||
| 9171 | +# CONFIG_INPUT_POLLDEV is not set | ||
| 9172 | +# CONFIG_INPUT_SPARSEKMAP is not set | ||
| 9173 | + | ||
| 9174 | +# | ||
| 9175 | +# Userland interfaces | ||
| 9176 | +# | ||
| 9177 | +CONFIG_INPUT_MOUSEDEV=y | ||
| 9178 | +CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 9179 | +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 9180 | +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 9181 | +# CONFIG_INPUT_JOYDEV is not set | ||
| 9182 | +# CONFIG_INPUT_EVDEV is not set | ||
| 9183 | +# CONFIG_INPUT_EVBUG is not set | ||
| 9184 | + | ||
| 9185 | +# | ||
| 9186 | +# Input Device Drivers | ||
| 9187 | +# | ||
| 9188 | +# CONFIG_INPUT_KEYBOARD is not set | ||
| 9189 | +# CONFIG_INPUT_MOUSE is not set | ||
| 9190 | +# CONFIG_INPUT_JOYSTICK is not set | ||
| 9191 | +# CONFIG_INPUT_TABLET is not set | ||
| 9192 | +# CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 9193 | +# CONFIG_INPUT_MISC is not set | ||
| 9194 | + | ||
| 9195 | +# | ||
| 9196 | +# Hardware I/O ports | ||
| 9197 | +# | ||
| 9198 | +CONFIG_SERIO=y | ||
| 9199 | +CONFIG_SERIO_I8042=y | ||
| 9200 | +CONFIG_SERIO_SERPORT=y | ||
| 9201 | +# CONFIG_SERIO_PCIPS2 is not set | ||
| 9202 | +CONFIG_SERIO_LIBPS2=y | ||
| 9203 | +# CONFIG_SERIO_RAW is not set | ||
| 9204 | +# CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 9205 | +# CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 9206 | +# CONFIG_GAMEPORT is not set | ||
| 9207 | + | ||
| 9208 | +# | ||
| 9209 | +# Character devices | ||
| 9210 | +# | ||
| 9211 | +CONFIG_VT=y | ||
| 9212 | +CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 9213 | +CONFIG_VT_CONSOLE=y | ||
| 9214 | +CONFIG_HW_CONSOLE=y | ||
| 9215 | +# CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 9216 | +CONFIG_DEVKMEM=y | ||
| 9217 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 9218 | +CONFIG_N_GSM=y | ||
| 9219 | +# CONFIG_NOZOMI is not set | ||
| 9220 | + | ||
| 9221 | +# | ||
| 9222 | +# Serial drivers | ||
| 9223 | +# | ||
| 9224 | +# CONFIG_SERIAL_8250 is not set | ||
| 9225 | + | ||
| 9226 | +# | ||
| 9227 | +# Non-8250 serial port support | ||
| 9228 | +# | ||
| 9229 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 9230 | +CONFIG_SERIAL_CORE=y | ||
| 9231 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 9232 | +# CONFIG_SERIAL_JSM is not set | ||
| 9233 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 9234 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 9235 | +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 9236 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 9237 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 9238 | +CONFIG_UNIX98_PTYS=y | ||
| 9239 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 9240 | +CONFIG_LEGACY_PTYS=y | ||
| 9241 | +CONFIG_LEGACY_PTY_COUNT=20 | ||
| 9242 | +# CONFIG_HVC_UDBG is not set | ||
| 9243 | +# CONFIG_IPMI_HANDLER is not set | ||
| 9244 | +# CONFIG_HW_RANDOM is not set | ||
| 9245 | +# CONFIG_NVRAM is not set | ||
| 9246 | +# CONFIG_GEN_RTC is not set | ||
| 9247 | +# CONFIG_R3964 is not set | ||
| 9248 | +# CONFIG_APPLICOM is not set | ||
| 9249 | +# CONFIG_RAW_DRIVER is not set | ||
| 9250 | +# CONFIG_TCG_TPM is not set | ||
| 9251 | +CONFIG_DEVPORT=y | ||
| 9252 | +# CONFIG_RAMOOPS is not set | ||
| 9253 | +# CONFIG_I2C is not set | ||
| 9254 | +# CONFIG_SPI is not set | ||
| 9255 | + | ||
| 9256 | +# | ||
| 9257 | +# PPS support | ||
| 9258 | +# | ||
| 9259 | +# CONFIG_PPS is not set | ||
| 9260 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 9261 | +# CONFIG_GPIOLIB is not set | ||
| 9262 | +# CONFIG_W1 is not set | ||
| 9263 | +# CONFIG_POWER_SUPPLY is not set | ||
| 9264 | +# CONFIG_HWMON is not set | ||
| 9265 | +CONFIG_THERMAL=y | ||
| 9266 | +# CONFIG_WATCHDOG is not set | ||
| 9267 | +CONFIG_SSB_POSSIBLE=y | ||
| 9268 | + | ||
| 9269 | +# | ||
| 9270 | +# Sonics Silicon Backplane | ||
| 9271 | +# | ||
| 9272 | +# CONFIG_SSB is not set | ||
| 9273 | +# CONFIG_MFD_SUPPORT is not set | ||
| 9274 | +# CONFIG_REGULATOR is not set | ||
| 9275 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 9276 | + | ||
| 9277 | +# | ||
| 9278 | +# Graphics support | ||
| 9279 | +# | ||
| 9280 | +# CONFIG_AGP is not set | ||
| 9281 | +# CONFIG_VGA_ARB is not set | ||
| 9282 | +# CONFIG_DRM is not set | ||
| 9283 | +# CONFIG_VGASTATE is not set | ||
| 9284 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 9285 | +# CONFIG_FB is not set | ||
| 9286 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 9287 | + | ||
| 9288 | +# | ||
| 9289 | +# Display device support | ||
| 9290 | +# | ||
| 9291 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 9292 | + | ||
| 9293 | +# | ||
| 9294 | +# Console display driver support | ||
| 9295 | +# | ||
| 9296 | +CONFIG_DUMMY_CONSOLE=y | ||
| 9297 | +# CONFIG_SOUND is not set | ||
| 9298 | +CONFIG_HID_SUPPORT=y | ||
| 9299 | +CONFIG_HID=y | ||
| 9300 | +CONFIG_HIDRAW=y | ||
| 9301 | + | ||
| 9302 | +# | ||
| 9303 | +# USB Input Devices | ||
| 9304 | +# | ||
| 9305 | +CONFIG_USB_HID=y | ||
| 9306 | +CONFIG_HID_PID=y | ||
| 9307 | +CONFIG_USB_HIDDEV=y | ||
| 9308 | + | ||
| 9309 | +# | ||
| 9310 | +# Special HID drivers | ||
| 9311 | +# | ||
| 9312 | +CONFIG_HID_3M_PCT=y | ||
| 9313 | +CONFIG_HID_A4TECH=y | ||
| 9314 | +CONFIG_HID_APPLE=y | ||
| 9315 | +# CONFIG_HID_BELKIN is not set | ||
| 9316 | +# CONFIG_HID_CANDO is not set | ||
| 9317 | +# CONFIG_HID_CHERRY is not set | ||
| 9318 | +# CONFIG_HID_CHICONY is not set | ||
| 9319 | +# CONFIG_HID_CYPRESS is not set | ||
| 9320 | +# CONFIG_HID_DRAGONRISE is not set | ||
| 9321 | +# CONFIG_HID_EGALAX is not set | ||
| 9322 | +# CONFIG_HID_EZKEY is not set | ||
| 9323 | +# CONFIG_HID_KYE is not set | ||
| 9324 | +# CONFIG_HID_GYRATION is not set | ||
| 9325 | +# CONFIG_HID_TWINHAN is not set | ||
| 9326 | +# CONFIG_HID_KENSINGTON is not set | ||
| 9327 | +# CONFIG_HID_LOGITECH is not set | ||
| 9328 | +# CONFIG_HID_MICROSOFT is not set | ||
| 9329 | +# CONFIG_HID_MOSART is not set | ||
| 9330 | +# CONFIG_HID_MONTEREY is not set | ||
| 9331 | +# CONFIG_HID_NTRIG is not set | ||
| 9332 | +# CONFIG_HID_ORTEK is not set | ||
| 9333 | +# CONFIG_HID_PANTHERLORD is not set | ||
| 9334 | +# CONFIG_HID_PETALYNX is not set | ||
| 9335 | +# CONFIG_HID_PICOLCD is not set | ||
| 9336 | +# CONFIG_HID_QUANTA is not set | ||
| 9337 | +# CONFIG_HID_ROCCAT is not set | ||
| 9338 | +# CONFIG_HID_ROCCAT_KONE is not set | ||
| 9339 | +# CONFIG_HID_SAMSUNG is not set | ||
| 9340 | +# CONFIG_HID_SONY is not set | ||
| 9341 | +# CONFIG_HID_STANTUM is not set | ||
| 9342 | +# CONFIG_HID_SUNPLUS is not set | ||
| 9343 | +# CONFIG_HID_GREENASIA is not set | ||
| 9344 | +# CONFIG_HID_SMARTJOYPLUS is not set | ||
| 9345 | +# CONFIG_HID_TOPSEED is not set | ||
| 9346 | +# CONFIG_HID_THRUSTMASTER is not set | ||
| 9347 | +# CONFIG_HID_ZEROPLUS is not set | ||
| 9348 | +# CONFIG_HID_ZYDACRON is not set | ||
| 9349 | +CONFIG_USB_SUPPORT=y | ||
| 9350 | +CONFIG_USB_ARCH_HAS_HCD=y | ||
| 9351 | +CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 9352 | +CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 9353 | +CONFIG_USB=y | ||
| 9354 | +# CONFIG_USB_DEBUG is not set | ||
| 9355 | +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
| 9356 | + | ||
| 9357 | +# | ||
| 9358 | +# Miscellaneous USB options | ||
| 9359 | +# | ||
| 9360 | +CONFIG_USB_DEVICEFS=y | ||
| 9361 | +CONFIG_USB_DEVICE_CLASS=y | ||
| 9362 | +CONFIG_USB_DYNAMIC_MINORS=y | ||
| 9363 | +# CONFIG_USB_OTG_WHITELIST is not set | ||
| 9364 | +# CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 9365 | +CONFIG_USB_MON=y | ||
| 9366 | +# CONFIG_USB_WUSB is not set | ||
| 9367 | +# CONFIG_USB_WUSB_CBAF is not set | ||
| 9368 | + | ||
| 9369 | +# | ||
| 9370 | +# USB Host Controller Drivers | ||
| 9371 | +# | ||
| 9372 | +# CONFIG_USB_C67X00_HCD is not set | ||
| 9373 | +# CONFIG_USB_XHCI_HCD is not set | ||
| 9374 | +CONFIG_USB_EHCI_HCD=y | ||
| 9375 | +CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 9376 | +# CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 9377 | +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
| 9378 | +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y | ||
| 9379 | +CONFIG_XPS_USB_HCD_XILINX=y | ||
| 9380 | +# CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
| 9381 | +# CONFIG_USB_OXU210HP_HCD is not set | ||
| 9382 | +CONFIG_USB_CI13612_HCD=y | ||
| 9383 | +# CONFIG_USB_ISP116X_HCD is not set | ||
| 9384 | +# CONFIG_USB_ISP1760_HCD is not set | ||
| 9385 | +# CONFIG_USB_ISP1362_HCD is not set | ||
| 9386 | +# CONFIG_USB_OHCI_HCD is not set | ||
| 9387 | +# CONFIG_USB_UHCI_HCD is not set | ||
| 9388 | +# CONFIG_USB_SL811_HCD is not set | ||
| 9389 | +# CONFIG_USB_R8A66597_HCD is not set | ||
| 9390 | +# CONFIG_USB_WHCI_HCD is not set | ||
| 9391 | +# CONFIG_USB_HWA_HCD is not set | ||
| 9392 | + | ||
| 9393 | +# | ||
| 9394 | +# USB Device Class drivers | ||
| 9395 | +# | ||
| 9396 | +# CONFIG_USB_ACM is not set | ||
| 9397 | +# CONFIG_USB_PRINTER is not set | ||
| 9398 | +# CONFIG_USB_WDM is not set | ||
| 9399 | +# CONFIG_USB_TMC is not set | ||
| 9400 | + | ||
| 9401 | +# | ||
| 9402 | +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 9403 | +# | ||
| 9404 | + | ||
| 9405 | +# | ||
| 9406 | +# also be needed; see USB_STORAGE Help for more info | ||
| 9407 | +# | ||
| 9408 | +CONFIG_USB_STORAGE=y | ||
| 9409 | +# CONFIG_USB_STORAGE_DEBUG is not set | ||
| 9410 | +# CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 9411 | +# CONFIG_USB_STORAGE_FREECOM is not set | ||
| 9412 | +# CONFIG_USB_STORAGE_ISD200 is not set | ||
| 9413 | +# CONFIG_USB_STORAGE_USBAT is not set | ||
| 9414 | +# CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 9415 | +# CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 9416 | +# CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 9417 | +# CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 9418 | +# CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 9419 | +# CONFIG_USB_STORAGE_KARMA is not set | ||
| 9420 | +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 9421 | +CONFIG_USB_LIBUSUAL=y | ||
| 9422 | + | ||
| 9423 | +# | ||
| 9424 | +# USB Imaging devices | ||
| 9425 | +# | ||
| 9426 | +# CONFIG_USB_MDC800 is not set | ||
| 9427 | +# CONFIG_USB_MICROTEK is not set | ||
| 9428 | + | ||
| 9429 | +# | ||
| 9430 | +# USB port drivers | ||
| 9431 | +# | ||
| 9432 | +# CONFIG_USB_SERIAL is not set | ||
| 9433 | + | ||
| 9434 | +# | ||
| 9435 | +# USB Miscellaneous drivers | ||
| 9436 | +# | ||
| 9437 | +# CONFIG_USB_EMI62 is not set | ||
| 9438 | +# CONFIG_USB_EMI26 is not set | ||
| 9439 | +# CONFIG_USB_ADUTUX is not set | ||
| 9440 | +# CONFIG_USB_SEVSEG is not set | ||
| 9441 | +# CONFIG_USB_RIO500 is not set | ||
| 9442 | +# CONFIG_USB_LEGOTOWER is not set | ||
| 9443 | +# CONFIG_USB_LCD is not set | ||
| 9444 | +# CONFIG_USB_LED is not set | ||
| 9445 | +# CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 9446 | +# CONFIG_USB_CYTHERM is not set | ||
| 9447 | +# CONFIG_USB_IDMOUSE is not set | ||
| 9448 | +# CONFIG_USB_FTDI_ELAN is not set | ||
| 9449 | +# CONFIG_USB_APPLEDISPLAY is not set | ||
| 9450 | +# CONFIG_USB_SISUSBVGA is not set | ||
| 9451 | +# CONFIG_USB_LD is not set | ||
| 9452 | +# CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 9453 | +# CONFIG_USB_IOWARRIOR is not set | ||
| 9454 | +# CONFIG_USB_TEST is not set | ||
| 9455 | +# CONFIG_USB_ISIGHTFW is not set | ||
| 9456 | +# CONFIG_USB_GADGET is not set | ||
| 9457 | + | ||
| 9458 | +# | ||
| 9459 | +# OTG and related infrastructure | ||
| 9460 | +# | ||
| 9461 | +# CONFIG_NOP_USB_XCEIV is not set | ||
| 9462 | +# CONFIG_UWB is not set | ||
| 9463 | +# CONFIG_MMC is not set | ||
| 9464 | +# CONFIG_MEMSTICK is not set | ||
| 9465 | +# CONFIG_NEW_LEDS is not set | ||
| 9466 | +# CONFIG_ACCESSIBILITY is not set | ||
| 9467 | +# CONFIG_INFINIBAND is not set | ||
| 9468 | +# CONFIG_EDAC is not set | ||
| 9469 | +# CONFIG_RTC_CLASS is not set | ||
| 9470 | +# CONFIG_DMADEVICES is not set | ||
| 9471 | +# CONFIG_AUXDISPLAY is not set | ||
| 9472 | +# CONFIG_UIO is not set | ||
| 9473 | +# CONFIG_STAGING is not set | ||
| 9474 | + | ||
| 9475 | +# | ||
| 9476 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 9477 | +# | ||
| 9478 | +CONFIG_SERIAL_ACP=y | ||
| 9479 | +CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 9480 | +# CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 9481 | +CONFIG_LSI_NET=y | ||
| 9482 | +CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 9483 | +CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 9484 | +CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 9485 | +CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 9486 | +CONFIG_LSI_NAND=y | ||
| 9487 | +CONFIG_LSI_UBOOTENV=y | ||
| 9488 | + | ||
| 9489 | +# | ||
| 9490 | +# File systems | ||
| 9491 | +# | ||
| 9492 | +CONFIG_EXT2_FS=y | ||
| 9493 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 9494 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 9495 | +# CONFIG_EXT3_FS is not set | ||
| 9496 | +# CONFIG_EXT4_FS is not set | ||
| 9497 | +# CONFIG_REISERFS_FS is not set | ||
| 9498 | +# CONFIG_JFS_FS is not set | ||
| 9499 | +CONFIG_FS_POSIX_ACL=y | ||
| 9500 | +# CONFIG_XFS_FS is not set | ||
| 9501 | +# CONFIG_GFS2_FS is not set | ||
| 9502 | +# CONFIG_OCFS2_FS is not set | ||
| 9503 | +# CONFIG_BTRFS_FS is not set | ||
| 9504 | +# CONFIG_NILFS2_FS is not set | ||
| 9505 | +CONFIG_FILE_LOCKING=y | ||
| 9506 | +CONFIG_FSNOTIFY=y | ||
| 9507 | +# CONFIG_DNOTIFY is not set | ||
| 9508 | +CONFIG_INOTIFY=y | ||
| 9509 | +CONFIG_INOTIFY_USER=y | ||
| 9510 | +# CONFIG_QUOTA is not set | ||
| 9511 | +CONFIG_AUTOFS_FS=y | ||
| 9512 | +CONFIG_AUTOFS4_FS=y | ||
| 9513 | +# CONFIG_FUSE_FS is not set | ||
| 9514 | + | ||
| 9515 | +# | ||
| 9516 | +# Caches | ||
| 9517 | +# | ||
| 9518 | +# CONFIG_FSCACHE is not set | ||
| 9519 | + | ||
| 9520 | +# | ||
| 9521 | +# CD-ROM/DVD Filesystems | ||
| 9522 | +# | ||
| 9523 | +# CONFIG_ISO9660_FS is not set | ||
| 9524 | +# CONFIG_UDF_FS is not set | ||
| 9525 | + | ||
| 9526 | +# | ||
| 9527 | +# DOS/FAT/NT Filesystems | ||
| 9528 | +# | ||
| 9529 | +CONFIG_FAT_FS=y | ||
| 9530 | +CONFIG_MSDOS_FS=y | ||
| 9531 | +CONFIG_VFAT_FS=y | ||
| 9532 | +CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 9533 | +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 9534 | +# CONFIG_NTFS_FS is not set | ||
| 9535 | + | ||
| 9536 | +# | ||
| 9537 | +# Pseudo filesystems | ||
| 9538 | +# | ||
| 9539 | +CONFIG_PROC_FS=y | ||
| 9540 | +# CONFIG_PROC_KCORE is not set | ||
| 9541 | +CONFIG_PROC_SYSCTL=y | ||
| 9542 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 9543 | +CONFIG_SYSFS=y | ||
| 9544 | +CONFIG_TMPFS=y | ||
| 9545 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 9546 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 9547 | +# CONFIG_CONFIGFS_FS is not set | ||
| 9548 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 9549 | +# CONFIG_ADFS_FS is not set | ||
| 9550 | +# CONFIG_AFFS_FS is not set | ||
| 9551 | +# CONFIG_ECRYPT_FS is not set | ||
| 9552 | +# CONFIG_HFS_FS is not set | ||
| 9553 | +# CONFIG_HFSPLUS_FS is not set | ||
| 9554 | +# CONFIG_BEFS_FS is not set | ||
| 9555 | +# CONFIG_BFS_FS is not set | ||
| 9556 | +# CONFIG_EFS_FS is not set | ||
| 9557 | +CONFIG_JFFS2_FS=y | ||
| 9558 | +CONFIG_JFFS2_FS_DEBUG=0 | ||
| 9559 | +CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 9560 | +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 9561 | +# CONFIG_JFFS2_SUMMARY is not set | ||
| 9562 | +# CONFIG_JFFS2_FS_XATTR is not set | ||
| 9563 | +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 9564 | +CONFIG_JFFS2_ZLIB=y | ||
| 9565 | +# CONFIG_JFFS2_LZO is not set | ||
| 9566 | +CONFIG_JFFS2_RTIME=y | ||
| 9567 | +# CONFIG_JFFS2_RUBIN is not set | ||
| 9568 | +# CONFIG_LOGFS is not set | ||
| 9569 | +# CONFIG_CRAMFS is not set | ||
| 9570 | +# CONFIG_SQUASHFS is not set | ||
| 9571 | +# CONFIG_VXFS_FS is not set | ||
| 9572 | +# CONFIG_MINIX_FS is not set | ||
| 9573 | +# CONFIG_OMFS_FS is not set | ||
| 9574 | +# CONFIG_HPFS_FS is not set | ||
| 9575 | +# CONFIG_QNX4FS_FS is not set | ||
| 9576 | +# CONFIG_ROMFS_FS is not set | ||
| 9577 | +# CONFIG_SYSV_FS is not set | ||
| 9578 | +# CONFIG_UFS_FS is not set | ||
| 9579 | +CONFIG_NETWORK_FILESYSTEMS=y | ||
| 9580 | +CONFIG_NFS_FS=y | ||
| 9581 | +CONFIG_NFS_V3=y | ||
| 9582 | +CONFIG_NFS_V3_ACL=y | ||
| 9583 | +CONFIG_NFS_V4=y | ||
| 9584 | +# CONFIG_NFS_V4_1 is not set | ||
| 9585 | +CONFIG_ROOT_NFS=y | ||
| 9586 | +# CONFIG_NFSD is not set | ||
| 9587 | +CONFIG_LOCKD=y | ||
| 9588 | +CONFIG_LOCKD_V4=y | ||
| 9589 | +CONFIG_NFS_ACL_SUPPORT=y | ||
| 9590 | +CONFIG_NFS_COMMON=y | ||
| 9591 | +CONFIG_SUNRPC=y | ||
| 9592 | +CONFIG_SUNRPC_GSS=y | ||
| 9593 | +CONFIG_RPCSEC_GSS_KRB5=y | ||
| 9594 | +# CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 9595 | +# CONFIG_SMB_FS is not set | ||
| 9596 | +# CONFIG_CEPH_FS is not set | ||
| 9597 | +# CONFIG_CIFS is not set | ||
| 9598 | +# CONFIG_NCP_FS is not set | ||
| 9599 | +# CONFIG_CODA_FS is not set | ||
| 9600 | +# CONFIG_AFS_FS is not set | ||
| 9601 | + | ||
| 9602 | +# | ||
| 9603 | +# Partition Types | ||
| 9604 | +# | ||
| 9605 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 9606 | +CONFIG_MSDOS_PARTITION=y | ||
| 9607 | +CONFIG_NLS=y | ||
| 9608 | +CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 9609 | +CONFIG_NLS_CODEPAGE_437=y | ||
| 9610 | +# CONFIG_NLS_CODEPAGE_737 is not set | ||
| 9611 | +# CONFIG_NLS_CODEPAGE_775 is not set | ||
| 9612 | +CONFIG_NLS_CODEPAGE_850=y | ||
| 9613 | +# CONFIG_NLS_CODEPAGE_852 is not set | ||
| 9614 | +# CONFIG_NLS_CODEPAGE_855 is not set | ||
| 9615 | +# CONFIG_NLS_CODEPAGE_857 is not set | ||
| 9616 | +# CONFIG_NLS_CODEPAGE_860 is not set | ||
| 9617 | +# CONFIG_NLS_CODEPAGE_861 is not set | ||
| 9618 | +# CONFIG_NLS_CODEPAGE_862 is not set | ||
| 9619 | +# CONFIG_NLS_CODEPAGE_863 is not set | ||
| 9620 | +# CONFIG_NLS_CODEPAGE_864 is not set | ||
| 9621 | +CONFIG_NLS_CODEPAGE_865=y | ||
| 9622 | +# CONFIG_NLS_CODEPAGE_866 is not set | ||
| 9623 | +# CONFIG_NLS_CODEPAGE_869 is not set | ||
| 9624 | +# CONFIG_NLS_CODEPAGE_936 is not set | ||
| 9625 | +# CONFIG_NLS_CODEPAGE_950 is not set | ||
| 9626 | +# CONFIG_NLS_CODEPAGE_932 is not set | ||
| 9627 | +# CONFIG_NLS_CODEPAGE_949 is not set | ||
| 9628 | +# CONFIG_NLS_CODEPAGE_874 is not set | ||
| 9629 | +# CONFIG_NLS_ISO8859_8 is not set | ||
| 9630 | +# CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 9631 | +# CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 9632 | +CONFIG_NLS_ASCII=y | ||
| 9633 | +CONFIG_NLS_ISO8859_1=y | ||
| 9634 | +# CONFIG_NLS_ISO8859_2 is not set | ||
| 9635 | +# CONFIG_NLS_ISO8859_3 is not set | ||
| 9636 | +# CONFIG_NLS_ISO8859_4 is not set | ||
| 9637 | +# CONFIG_NLS_ISO8859_5 is not set | ||
| 9638 | +# CONFIG_NLS_ISO8859_6 is not set | ||
| 9639 | +# CONFIG_NLS_ISO8859_7 is not set | ||
| 9640 | +# CONFIG_NLS_ISO8859_9 is not set | ||
| 9641 | +# CONFIG_NLS_ISO8859_13 is not set | ||
| 9642 | +# CONFIG_NLS_ISO8859_14 is not set | ||
| 9643 | +# CONFIG_NLS_ISO8859_15 is not set | ||
| 9644 | +# CONFIG_NLS_KOI8_R is not set | ||
| 9645 | +# CONFIG_NLS_KOI8_U is not set | ||
| 9646 | +# CONFIG_NLS_UTF8 is not set | ||
| 9647 | +# CONFIG_DLM is not set | ||
| 9648 | +# CONFIG_BINARY_PRINTF is not set | ||
| 9649 | + | ||
| 9650 | +# | ||
| 9651 | +# Library routines | ||
| 9652 | +# | ||
| 9653 | +CONFIG_BITREVERSE=y | ||
| 9654 | +CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 9655 | +CONFIG_CRC_CCITT=m | ||
| 9656 | +# CONFIG_CRC16 is not set | ||
| 9657 | +# CONFIG_CRC_T10DIF is not set | ||
| 9658 | +# CONFIG_CRC_ITU_T is not set | ||
| 9659 | +CONFIG_CRC32=y | ||
| 9660 | +# CONFIG_CRC7 is not set | ||
| 9661 | +# CONFIG_LIBCRC32C is not set | ||
| 9662 | +CONFIG_ZLIB_INFLATE=y | ||
| 9663 | +CONFIG_ZLIB_DEFLATE=y | ||
| 9664 | +CONFIG_DECOMPRESS_GZIP=y | ||
| 9665 | +CONFIG_HAS_IOMEM=y | ||
| 9666 | +CONFIG_HAS_IOPORT=y | ||
| 9667 | +CONFIG_HAS_DMA=y | ||
| 9668 | +CONFIG_NLATTR=y | ||
| 9669 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 9670 | + | ||
| 9671 | +# | ||
| 9672 | +# Kernel hacking | ||
| 9673 | +# | ||
| 9674 | +# CONFIG_PRINTK_TIME is not set | ||
| 9675 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 9676 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 9677 | +CONFIG_FRAME_WARN=1024 | ||
| 9678 | +CONFIG_MAGIC_SYSRQ=y | ||
| 9679 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 9680 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 9681 | +CONFIG_DEBUG_FS=y | ||
| 9682 | +# CONFIG_HEADERS_CHECK is not set | ||
| 9683 | +CONFIG_DEBUG_KERNEL=y | ||
| 9684 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 9685 | +# CONFIG_DETECT_SOFTLOCKUP is not set | ||
| 9686 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 9687 | +CONFIG_SCHED_DEBUG=y | ||
| 9688 | +# CONFIG_SCHEDSTATS is not set | ||
| 9689 | +# CONFIG_TIMER_STATS is not set | ||
| 9690 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 9691 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 9692 | +# CONFIG_SLUB_STATS is not set | ||
| 9693 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 9694 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 9695 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 9696 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 9697 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 9698 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 9699 | +# CONFIG_PROVE_LOCKING is not set | ||
| 9700 | +# CONFIG_LOCK_STAT is not set | ||
| 9701 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 9702 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 9703 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 9704 | +# CONFIG_DEBUG_HIGHMEM is not set | ||
| 9705 | +CONFIG_DEBUG_BUGVERBOSE=y | ||
| 9706 | +CONFIG_DEBUG_INFO=y | ||
| 9707 | +# CONFIG_DEBUG_VM is not set | ||
| 9708 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 9709 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 9710 | +# CONFIG_DEBUG_LIST is not set | ||
| 9711 | +# CONFIG_DEBUG_SG is not set | ||
| 9712 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 9713 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 9714 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 9715 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 9716 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 9717 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 9718 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 9719 | +# CONFIG_LKDTM is not set | ||
| 9720 | +# CONFIG_FAULT_INJECTION is not set | ||
| 9721 | +# CONFIG_LATENCYTOP is not set | ||
| 9722 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 9723 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 9724 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 9725 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 9726 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 9727 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 9728 | +CONFIG_RING_BUFFER=y | ||
| 9729 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 9730 | +CONFIG_TRACING_SUPPORT=y | ||
| 9731 | +CONFIG_FTRACE=y | ||
| 9732 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 9733 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 9734 | +# CONFIG_SCHED_TRACER is not set | ||
| 9735 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 9736 | +# CONFIG_BOOT_TRACER is not set | ||
| 9737 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 9738 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 9739 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 9740 | +# CONFIG_STACK_TRACER is not set | ||
| 9741 | +# CONFIG_KMEMTRACE is not set | ||
| 9742 | +# CONFIG_WORKQUEUE_TRACER is not set | ||
| 9743 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 9744 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 9745 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 9746 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 9747 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 9748 | +# CONFIG_SAMPLES is not set | ||
| 9749 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 9750 | +# CONFIG_KGDB is not set | ||
| 9751 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 9752 | +CONFIG_PPC_WERROR=y | ||
| 9753 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 9754 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 9755 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 9756 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 9757 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 9758 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 9759 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 9760 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 9761 | +CONFIG_XMON=y | ||
| 9762 | +CONFIG_XMON_DEFAULT=y | ||
| 9763 | +CONFIG_XMON_DISASSEMBLY=y | ||
| 9764 | +CONFIG_DEBUGGER=y | ||
| 9765 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 9766 | +# CONFIG_BDI_SWITCH is not set | ||
| 9767 | +# CONFIG_PPC_EARLY_DEBUG is not set | ||
| 9768 | + | ||
| 9769 | +# | ||
| 9770 | +# Security options | ||
| 9771 | +# | ||
| 9772 | +CONFIG_KEYS=y | ||
| 9773 | +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 9774 | +# CONFIG_SECURITY is not set | ||
| 9775 | +# CONFIG_SECURITYFS is not set | ||
| 9776 | +# CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 9777 | +# CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 9778 | +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 9779 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 9780 | +CONFIG_DEFAULT_SECURITY="" | ||
| 9781 | +CONFIG_CRYPTO=y | ||
| 9782 | + | ||
| 9783 | +# | ||
| 9784 | +# Crypto core or helper | ||
| 9785 | +# | ||
| 9786 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 9787 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 9788 | +CONFIG_CRYPTO_AEAD=y | ||
| 9789 | +CONFIG_CRYPTO_AEAD2=y | ||
| 9790 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 9791 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 9792 | +CONFIG_CRYPTO_HASH=y | ||
| 9793 | +CONFIG_CRYPTO_HASH2=y | ||
| 9794 | +CONFIG_CRYPTO_RNG=y | ||
| 9795 | +CONFIG_CRYPTO_RNG2=y | ||
| 9796 | +CONFIG_CRYPTO_PCOMP=y | ||
| 9797 | +CONFIG_CRYPTO_MANAGER=y | ||
| 9798 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 9799 | +CONFIG_CRYPTO_GF128MUL=y | ||
| 9800 | +CONFIG_CRYPTO_NULL=y | ||
| 9801 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 9802 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 9803 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 9804 | +CONFIG_CRYPTO_AUTHENC=y | ||
| 9805 | +# CONFIG_CRYPTO_TEST is not set | ||
| 9806 | + | ||
| 9807 | +# | ||
| 9808 | +# Authenticated Encryption with Associated Data | ||
| 9809 | +# | ||
| 9810 | +# CONFIG_CRYPTO_CCM is not set | ||
| 9811 | +CONFIG_CRYPTO_GCM=y | ||
| 9812 | +CONFIG_CRYPTO_SEQIV=y | ||
| 9813 | + | ||
| 9814 | +# | ||
| 9815 | +# Block modes | ||
| 9816 | +# | ||
| 9817 | +CONFIG_CRYPTO_CBC=y | ||
| 9818 | +CONFIG_CRYPTO_CTR=y | ||
| 9819 | +# CONFIG_CRYPTO_CTS is not set | ||
| 9820 | +# CONFIG_CRYPTO_ECB is not set | ||
| 9821 | +# CONFIG_CRYPTO_LRW is not set | ||
| 9822 | +# CONFIG_CRYPTO_PCBC is not set | ||
| 9823 | +# CONFIG_CRYPTO_XTS is not set | ||
| 9824 | + | ||
| 9825 | +# | ||
| 9826 | +# Hash modes | ||
| 9827 | +# | ||
| 9828 | +CONFIG_CRYPTO_HMAC=y | ||
| 9829 | +CONFIG_CRYPTO_XCBC=y | ||
| 9830 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 9831 | + | ||
| 9832 | +# | ||
| 9833 | +# Digest | ||
| 9834 | +# | ||
| 9835 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 9836 | +CONFIG_CRYPTO_GHASH=y | ||
| 9837 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 9838 | +CONFIG_CRYPTO_MD5=y | ||
| 9839 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 9840 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 9841 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 9842 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 9843 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 9844 | +CONFIG_CRYPTO_SHA1=y | ||
| 9845 | +CONFIG_CRYPTO_SHA256=y | ||
| 9846 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 9847 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 9848 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 9849 | + | ||
| 9850 | +# | ||
| 9851 | +# Ciphers | ||
| 9852 | +# | ||
| 9853 | +CONFIG_CRYPTO_AES=y | ||
| 9854 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 9855 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 9856 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 9857 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 9858 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 9859 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 9860 | +CONFIG_CRYPTO_DES=y | ||
| 9861 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 9862 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 9863 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 9864 | +# CONFIG_CRYPTO_SEED is not set | ||
| 9865 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 9866 | +# CONFIG_CRYPTO_TEA is not set | ||
| 9867 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 9868 | + | ||
| 9869 | +# | ||
| 9870 | +# Compression | ||
| 9871 | +# | ||
| 9872 | +CONFIG_CRYPTO_DEFLATE=y | ||
| 9873 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 9874 | +# CONFIG_CRYPTO_LZO is not set | ||
| 9875 | + | ||
| 9876 | +# | ||
| 9877 | +# Random Number Generation | ||
| 9878 | +# | ||
| 9879 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 9880 | +CONFIG_CRYPTO_HW=y | ||
| 9881 | +# CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 9882 | +CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 9883 | +# CONFIG_PPC_CLOCK is not set | ||
| 9884 | +# CONFIG_VIRTUALIZATION is not set | ||
| 9885 | diff --git a/arch/powerpc/configs/acpiss_defconfig b/arch/powerpc/configs/acpiss_defconfig | ||
| 9886 | new file mode 100644 | ||
| 9887 | index 0000000..a9e909f | ||
| 9888 | --- /dev/null | ||
| 9889 | +++ b/arch/powerpc/configs/acpiss_defconfig | ||
| 9890 | @@ -0,0 +1,1054 @@ | ||
| 9891 | +# | ||
| 9892 | +# Automatically generated make config: don't edit | ||
| 9893 | +# Linux kernel version: 2.6.35 | ||
| 9894 | +# Wed Sep 14 11:18:14 2011 | ||
| 9895 | +# | ||
| 9896 | +# CONFIG_PPC64 is not set | ||
| 9897 | + | ||
| 9898 | +# | ||
| 9899 | +# Processor support | ||
| 9900 | +# | ||
| 9901 | +# CONFIG_PPC_BOOK3S_32 is not set | ||
| 9902 | +# CONFIG_PPC_85xx is not set | ||
| 9903 | +# CONFIG_PPC_8xx is not set | ||
| 9904 | +# CONFIG_40x is not set | ||
| 9905 | +CONFIG_44x=y | ||
| 9906 | +# CONFIG_E200 is not set | ||
| 9907 | +CONFIG_PPC_FPU=y | ||
| 9908 | +CONFIG_4xx=y | ||
| 9909 | +CONFIG_BOOKE=y | ||
| 9910 | +CONFIG_PTE_64BIT=y | ||
| 9911 | +CONFIG_PHYS_64BIT=y | ||
| 9912 | +CONFIG_PPC_MMU_NOHASH=y | ||
| 9913 | +CONFIG_PPC_MMU_NOHASH_32=y | ||
| 9914 | +# CONFIG_PPC_MM_SLICES is not set | ||
| 9915 | +CONFIG_SMP=y | ||
| 9916 | +CONFIG_NR_CPUS=4 | ||
| 9917 | +# CONFIG_NOT_COHERENT_CACHE is not set | ||
| 9918 | +CONFIG_PPC32=y | ||
| 9919 | +CONFIG_WORD_SIZE=32 | ||
| 9920 | +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 9921 | +CONFIG_MMU=y | ||
| 9922 | +CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 9923 | +CONFIG_GENERIC_TIME=y | ||
| 9924 | +CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 9925 | +CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 9926 | +CONFIG_GENERIC_HARDIRQS=y | ||
| 9927 | +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 9928 | +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 9929 | +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 9930 | +CONFIG_IRQ_PER_CPU=y | ||
| 9931 | +CONFIG_NR_IRQS=512 | ||
| 9932 | +CONFIG_STACKTRACE_SUPPORT=y | ||
| 9933 | +CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 9934 | +CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 9935 | +CONFIG_LOCKDEP_SUPPORT=y | ||
| 9936 | +CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 9937 | +CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 9938 | +CONFIG_GENERIC_HWEIGHT=y | ||
| 9939 | +CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 9940 | +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 9941 | +CONFIG_PPC=y | ||
| 9942 | +CONFIG_EARLY_PRINTK=y | ||
| 9943 | +CONFIG_GENERIC_NVRAM=y | ||
| 9944 | +CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 9945 | +CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 9946 | +CONFIG_PPC_OF=y | ||
| 9947 | +CONFIG_OF=y | ||
| 9948 | +CONFIG_PPC_UDBG_16550=y | ||
| 9949 | +CONFIG_GENERIC_TBSYNC=y | ||
| 9950 | +CONFIG_AUDIT_ARCH=y | ||
| 9951 | +CONFIG_GENERIC_BUG=y | ||
| 9952 | +CONFIG_DTC=y | ||
| 9953 | +# CONFIG_DEFAULT_UIMAGE is not set | ||
| 9954 | +CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 9955 | +CONFIG_PPC_DCR_NATIVE=y | ||
| 9956 | +# CONFIG_PPC_DCR_MMIO is not set | ||
| 9957 | +CONFIG_PPC_DCR=y | ||
| 9958 | +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 9959 | +CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 9960 | +CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 9961 | +CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 9962 | +CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 9963 | +CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 9964 | +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 9965 | +CONFIG_CONSTRUCTORS=y | ||
| 9966 | + | ||
| 9967 | +# | ||
| 9968 | +# General setup | ||
| 9969 | +# | ||
| 9970 | +CONFIG_EXPERIMENTAL=y | ||
| 9971 | +CONFIG_LOCK_KERNEL=y | ||
| 9972 | +CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 9973 | +CONFIG_CROSS_COMPILE="powerpc-linux-" | ||
| 9974 | +CONFIG_LOCALVERSION="" | ||
| 9975 | +CONFIG_LOCALVERSION_AUTO=y | ||
| 9976 | +CONFIG_SWAP=y | ||
| 9977 | +CONFIG_SYSVIPC=y | ||
| 9978 | +CONFIG_SYSVIPC_SYSCTL=y | ||
| 9979 | +CONFIG_POSIX_MQUEUE=y | ||
| 9980 | +CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 9981 | +# CONFIG_BSD_PROCESS_ACCT is not set | ||
| 9982 | +# CONFIG_TASKSTATS is not set | ||
| 9983 | +# CONFIG_AUDIT is not set | ||
| 9984 | + | ||
| 9985 | +# | ||
| 9986 | +# RCU Subsystem | ||
| 9987 | +# | ||
| 9988 | +CONFIG_TREE_RCU=y | ||
| 9989 | +# CONFIG_TREE_PREEMPT_RCU is not set | ||
| 9990 | +# CONFIG_TINY_RCU is not set | ||
| 9991 | +# CONFIG_RCU_TRACE is not set | ||
| 9992 | +CONFIG_RCU_FANOUT=32 | ||
| 9993 | +# CONFIG_RCU_FANOUT_EXACT is not set | ||
| 9994 | +# CONFIG_TREE_RCU_TRACE is not set | ||
| 9995 | +# CONFIG_IKCONFIG is not set | ||
| 9996 | +CONFIG_LOG_BUF_SHIFT=14 | ||
| 9997 | +# CONFIG_CGROUPS is not set | ||
| 9998 | +CONFIG_SYSFS_DEPRECATED=y | ||
| 9999 | +CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 10000 | +# CONFIG_RELAY is not set | ||
| 10001 | +# CONFIG_NAMESPACES is not set | ||
| 10002 | +CONFIG_BLK_DEV_INITRD=y | ||
| 10003 | +CONFIG_INITRAMFS_SOURCE="" | ||
| 10004 | +CONFIG_RD_GZIP=y | ||
| 10005 | +# CONFIG_RD_BZIP2 is not set | ||
| 10006 | +# CONFIG_RD_LZMA is not set | ||
| 10007 | +# CONFIG_RD_LZO is not set | ||
| 10008 | +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 10009 | +CONFIG_SYSCTL=y | ||
| 10010 | +CONFIG_ANON_INODES=y | ||
| 10011 | +CONFIG_EMBEDDED=y | ||
| 10012 | +CONFIG_SYSCTL_SYSCALL=y | ||
| 10013 | +CONFIG_KALLSYMS=y | ||
| 10014 | +# CONFIG_KALLSYMS_ALL is not set | ||
| 10015 | +CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 10016 | +CONFIG_HOTPLUG=y | ||
| 10017 | +CONFIG_PRINTK=y | ||
| 10018 | +CONFIG_BUG=y | ||
| 10019 | +CONFIG_ELF_CORE=y | ||
| 10020 | +CONFIG_BASE_FULL=y | ||
| 10021 | +CONFIG_FUTEX=y | ||
| 10022 | +CONFIG_EPOLL=y | ||
| 10023 | +CONFIG_SIGNALFD=y | ||
| 10024 | +CONFIG_TIMERFD=y | ||
| 10025 | +CONFIG_EVENTFD=y | ||
| 10026 | +CONFIG_SHMEM=y | ||
| 10027 | +CONFIG_AIO=y | ||
| 10028 | +CONFIG_HAVE_PERF_EVENTS=y | ||
| 10029 | + | ||
| 10030 | +# | ||
| 10031 | +# Kernel Performance Events And Counters | ||
| 10032 | +# | ||
| 10033 | +CONFIG_PERF_EVENTS=y | ||
| 10034 | +# CONFIG_PERF_COUNTERS is not set | ||
| 10035 | +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set | ||
| 10036 | +CONFIG_VM_EVENT_COUNTERS=y | ||
| 10037 | +CONFIG_SLUB_DEBUG=y | ||
| 10038 | +CONFIG_COMPAT_BRK=y | ||
| 10039 | +# CONFIG_SLAB is not set | ||
| 10040 | +CONFIG_SLUB=y | ||
| 10041 | +# CONFIG_SLOB is not set | ||
| 10042 | +CONFIG_PROFILING=y | ||
| 10043 | +CONFIG_OPROFILE=y | ||
| 10044 | +CONFIG_HAVE_OPROFILE=y | ||
| 10045 | +# CONFIG_KPROBES is not set | ||
| 10046 | +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 10047 | +CONFIG_HAVE_IOREMAP_PROT=y | ||
| 10048 | +CONFIG_HAVE_KPROBES=y | ||
| 10049 | +CONFIG_HAVE_KRETPROBES=y | ||
| 10050 | +CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 10051 | +CONFIG_HAVE_DMA_ATTRS=y | ||
| 10052 | +CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 10053 | +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 10054 | +CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 10055 | + | ||
| 10056 | +# | ||
| 10057 | +# GCOV-based kernel profiling | ||
| 10058 | +# | ||
| 10059 | +# CONFIG_GCOV_KERNEL is not set | ||
| 10060 | +# CONFIG_SLOW_WORK is not set | ||
| 10061 | +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 10062 | +CONFIG_SLABINFO=y | ||
| 10063 | +CONFIG_RT_MUTEXES=y | ||
| 10064 | +CONFIG_BASE_SMALL=0 | ||
| 10065 | +CONFIG_MODULES=y | ||
| 10066 | +CONFIG_MODULE_FORCE_LOAD=y | ||
| 10067 | +CONFIG_MODULE_UNLOAD=y | ||
| 10068 | +CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 10069 | +CONFIG_MODVERSIONS=y | ||
| 10070 | +CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 10071 | +CONFIG_STOP_MACHINE=y | ||
| 10072 | +CONFIG_BLOCK=y | ||
| 10073 | +CONFIG_LBDAF=y | ||
| 10074 | +# CONFIG_BLK_DEV_BSG is not set | ||
| 10075 | +# CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 10076 | + | ||
| 10077 | +# | ||
| 10078 | +# IO Schedulers | ||
| 10079 | +# | ||
| 10080 | +CONFIG_IOSCHED_NOOP=y | ||
| 10081 | +CONFIG_IOSCHED_DEADLINE=y | ||
| 10082 | +CONFIG_IOSCHED_CFQ=y | ||
| 10083 | +# CONFIG_DEFAULT_DEADLINE is not set | ||
| 10084 | +CONFIG_DEFAULT_CFQ=y | ||
| 10085 | +# CONFIG_DEFAULT_NOOP is not set | ||
| 10086 | +CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 10087 | +# CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 10088 | +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 10089 | +# CONFIG_INLINE_SPIN_LOCK is not set | ||
| 10090 | +# CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 10091 | +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 10092 | +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 10093 | +CONFIG_INLINE_SPIN_UNLOCK=y | ||
| 10094 | +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 10095 | +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y | ||
| 10096 | +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 10097 | +# CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 10098 | +# CONFIG_INLINE_READ_LOCK is not set | ||
| 10099 | +# CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 10100 | +# CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 10101 | +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 10102 | +CONFIG_INLINE_READ_UNLOCK=y | ||
| 10103 | +# CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 10104 | +CONFIG_INLINE_READ_UNLOCK_IRQ=y | ||
| 10105 | +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 10106 | +# CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 10107 | +# CONFIG_INLINE_WRITE_LOCK is not set | ||
| 10108 | +# CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 10109 | +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 10110 | +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 10111 | +CONFIG_INLINE_WRITE_UNLOCK=y | ||
| 10112 | +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 10113 | +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y | ||
| 10114 | +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 10115 | +CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 10116 | +# CONFIG_FREEZER is not set | ||
| 10117 | +CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 10118 | + | ||
| 10119 | +# | ||
| 10120 | +# Platform support | ||
| 10121 | +# | ||
| 10122 | +# CONFIG_PPC_CELL is not set | ||
| 10123 | +# CONFIG_PPC_CELL_NATIVE is not set | ||
| 10124 | +# CONFIG_PQ2ADS is not set | ||
| 10125 | +CONFIG_PPC_47x=y | ||
| 10126 | +# CONFIG_BAMBOO is not set | ||
| 10127 | +# CONFIG_EBONY is not set | ||
| 10128 | +# CONFIG_SAM440EP is not set | ||
| 10129 | +# CONFIG_SEQUOIA is not set | ||
| 10130 | +# CONFIG_TAISHAN is not set | ||
| 10131 | +# CONFIG_KATMAI is not set | ||
| 10132 | +# CONFIG_RAINIER is not set | ||
| 10133 | +# CONFIG_WARP is not set | ||
| 10134 | +# CONFIG_ARCHES is not set | ||
| 10135 | +# CONFIG_CANYONLANDS is not set | ||
| 10136 | +# CONFIG_GLACIER is not set | ||
| 10137 | +# CONFIG_REDWOOD is not set | ||
| 10138 | +# CONFIG_EIGER is not set | ||
| 10139 | +# CONFIG_YOSEMITE is not set | ||
| 10140 | +# CONFIG_ISS4xx is not set | ||
| 10141 | +# CONFIG_ICON is not set | ||
| 10142 | +CONFIG_ACP=y | ||
| 10143 | +CONFIG_ACPISS=y | ||
| 10144 | +# CONFIG_ACP_X1V1 is not set | ||
| 10145 | +# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 10146 | +# CONFIG_PPC44x_SIMPLE is not set | ||
| 10147 | +# CONFIG_PPC4xx_GPIO is not set | ||
| 10148 | +CONFIG_440GP=y | ||
| 10149 | +# CONFIG_IPIC is not set | ||
| 10150 | +CONFIG_MPIC=y | ||
| 10151 | +# CONFIG_MPIC_WEIRD is not set | ||
| 10152 | +# CONFIG_PPC_I8259 is not set | ||
| 10153 | +# CONFIG_PPC_RTAS is not set | ||
| 10154 | +# CONFIG_MMIO_NVRAM is not set | ||
| 10155 | +# CONFIG_PPC_MPC106 is not set | ||
| 10156 | +# CONFIG_PPC_970_NAP is not set | ||
| 10157 | +# CONFIG_PPC_INDIRECT_IO is not set | ||
| 10158 | +# CONFIG_GENERIC_IOMAP is not set | ||
| 10159 | +# CONFIG_CPU_FREQ is not set | ||
| 10160 | +# CONFIG_FSL_ULI1575 is not set | ||
| 10161 | +CONFIG_OF_RTC=y | ||
| 10162 | +# CONFIG_SIMPLE_GPIO is not set | ||
| 10163 | + | ||
| 10164 | +# | ||
| 10165 | +# Kernel options | ||
| 10166 | +# | ||
| 10167 | +# CONFIG_HIGHMEM is not set | ||
| 10168 | +# CONFIG_NO_HZ is not set | ||
| 10169 | +# CONFIG_HIGH_RES_TIMERS is not set | ||
| 10170 | +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 10171 | +CONFIG_HZ_100=y | ||
| 10172 | +# CONFIG_HZ_250 is not set | ||
| 10173 | +# CONFIG_HZ_300 is not set | ||
| 10174 | +# CONFIG_HZ_1000 is not set | ||
| 10175 | +CONFIG_HZ=100 | ||
| 10176 | +# CONFIG_SCHED_HRTICK is not set | ||
| 10177 | +CONFIG_PREEMPT_NONE=y | ||
| 10178 | +# CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 10179 | +# CONFIG_PREEMPT is not set | ||
| 10180 | +CONFIG_BINFMT_ELF=y | ||
| 10181 | +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 10182 | +# CONFIG_HAVE_AOUT is not set | ||
| 10183 | +# CONFIG_BINFMT_MISC is not set | ||
| 10184 | +CONFIG_MATH_EMULATION=y | ||
| 10185 | +# CONFIG_IOMMU_HELPER is not set | ||
| 10186 | +# CONFIG_SWIOTLB is not set | ||
| 10187 | +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 10188 | +CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 10189 | +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 10190 | +CONFIG_IRQ_ALL_CPUS=y | ||
| 10191 | +CONFIG_SPARSE_IRQ=y | ||
| 10192 | +CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 10193 | +CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 10194 | +CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 10195 | +CONFIG_SELECT_MEMORY_MODEL=y | ||
| 10196 | +CONFIG_FLATMEM_MANUAL=y | ||
| 10197 | +# CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 10198 | +# CONFIG_SPARSEMEM_MANUAL is not set | ||
| 10199 | +CONFIG_FLATMEM=y | ||
| 10200 | +CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 10201 | +CONFIG_HAVE_MEMBLOCK=y | ||
| 10202 | +CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 10203 | +CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 10204 | +CONFIG_MIGRATION=y | ||
| 10205 | +CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 10206 | +CONFIG_ZONE_DMA_FLAG=1 | ||
| 10207 | +CONFIG_BOUNCE=y | ||
| 10208 | +CONFIG_VIRT_TO_BUS=y | ||
| 10209 | +# CONFIG_KSM is not set | ||
| 10210 | +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 10211 | +CONFIG_STDBINUTILS=y | ||
| 10212 | +CONFIG_PPC_4K_PAGES=y | ||
| 10213 | +# CONFIG_PPC_16K_PAGES is not set | ||
| 10214 | +# CONFIG_PPC_64K_PAGES is not set | ||
| 10215 | +# CONFIG_PPC_256K_PAGES is not set | ||
| 10216 | +CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 10217 | +CONFIG_PROC_DEVICETREE=y | ||
| 10218 | +CONFIG_CMDLINE_BOOL=y | ||
| 10219 | +CONFIG_CMDLINE="root=/dev/issblk3 rw mem=256M lpj=15990784" | ||
| 10220 | +CONFIG_EXTRA_TARGETS="" | ||
| 10221 | +CONFIG_SECCOMP=y | ||
| 10222 | +CONFIG_ISA_DMA_API=y | ||
| 10223 | + | ||
| 10224 | +# | ||
| 10225 | +# Bus options | ||
| 10226 | +# | ||
| 10227 | +CONFIG_ZONE_DMA=y | ||
| 10228 | +# CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 10229 | +CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 10230 | +CONFIG_4xx_SOC=y | ||
| 10231 | +CONFIG_PPC_PCI_CHOICE=y | ||
| 10232 | +# CONFIG_PCI is not set | ||
| 10233 | +# CONFIG_PCI_DOMAINS is not set | ||
| 10234 | +# CONFIG_PCI_SYSCALL is not set | ||
| 10235 | +# CONFIG_ARCH_SUPPORTS_MSI is not set | ||
| 10236 | +# CONFIG_PCCARD is not set | ||
| 10237 | +CONFIG_HAS_RAPIDIO=y | ||
| 10238 | +# CONFIG_RAPIDIO is not set | ||
| 10239 | + | ||
| 10240 | +# | ||
| 10241 | +# Advanced setup | ||
| 10242 | +# | ||
| 10243 | +CONFIG_ADVANCED_OPTIONS=y | ||
| 10244 | +# CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 10245 | +CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 10246 | +CONFIG_RELOCATABLE=y | ||
| 10247 | +CONFIG_PAGE_OFFSET_BOOL=y | ||
| 10248 | +CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 10249 | +CONFIG_KERNEL_START_BOOL=y | ||
| 10250 | +CONFIG_KERNEL_START=0xc0400000 | ||
| 10251 | +CONFIG_PHYSICAL_START=0x00000000 | ||
| 10252 | +CONFIG_TASK_SIZE_BOOL=y | ||
| 10253 | +CONFIG_TASK_SIZE=0xc0000000 | ||
| 10254 | +CONFIG_NET=y | ||
| 10255 | + | ||
| 10256 | +# | ||
| 10257 | +# Networking options | ||
| 10258 | +# | ||
| 10259 | +CONFIG_PACKET=y | ||
| 10260 | +CONFIG_UNIX=y | ||
| 10261 | +# CONFIG_NET_KEY is not set | ||
| 10262 | +CONFIG_INET=y | ||
| 10263 | +# CONFIG_IP_MULTICAST is not set | ||
| 10264 | +# CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 10265 | +CONFIG_IP_FIB_HASH=y | ||
| 10266 | +CONFIG_IP_PNP=y | ||
| 10267 | +CONFIG_IP_PNP_DHCP=y | ||
| 10268 | +CONFIG_IP_PNP_BOOTP=y | ||
| 10269 | +# CONFIG_IP_PNP_RARP is not set | ||
| 10270 | +# CONFIG_NET_IPIP is not set | ||
| 10271 | +# CONFIG_NET_IPGRE is not set | ||
| 10272 | +# CONFIG_ARPD is not set | ||
| 10273 | +# CONFIG_SYN_COOKIES is not set | ||
| 10274 | +# CONFIG_INET_AH is not set | ||
| 10275 | +# CONFIG_INET_ESP is not set | ||
| 10276 | +# CONFIG_INET_IPCOMP is not set | ||
| 10277 | +# CONFIG_INET_XFRM_TUNNEL is not set | ||
| 10278 | +# CONFIG_INET_TUNNEL is not set | ||
| 10279 | +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
| 10280 | +# CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
| 10281 | +# CONFIG_INET_XFRM_MODE_BEET is not set | ||
| 10282 | +# CONFIG_INET_LRO is not set | ||
| 10283 | +CONFIG_INET_DIAG=y | ||
| 10284 | +CONFIG_INET_TCP_DIAG=y | ||
| 10285 | +# CONFIG_TCP_CONG_ADVANCED is not set | ||
| 10286 | +CONFIG_TCP_CONG_CUBIC=y | ||
| 10287 | +CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 10288 | +# CONFIG_TCP_MD5SIG is not set | ||
| 10289 | +# CONFIG_IPV6 is not set | ||
| 10290 | +# CONFIG_NETWORK_SECMARK is not set | ||
| 10291 | +# CONFIG_NETFILTER is not set | ||
| 10292 | +# CONFIG_IP_DCCP is not set | ||
| 10293 | +# CONFIG_IP_SCTP is not set | ||
| 10294 | +# CONFIG_RDS is not set | ||
| 10295 | +# CONFIG_TIPC is not set | ||
| 10296 | +# CONFIG_ATM is not set | ||
| 10297 | +# CONFIG_L2TP is not set | ||
| 10298 | +# CONFIG_BRIDGE is not set | ||
| 10299 | +# CONFIG_VLAN_8021Q is not set | ||
| 10300 | +# CONFIG_DECNET is not set | ||
| 10301 | +# CONFIG_LLC2 is not set | ||
| 10302 | +# CONFIG_IPX is not set | ||
| 10303 | +# CONFIG_ATALK is not set | ||
| 10304 | +# CONFIG_X25 is not set | ||
| 10305 | +# CONFIG_LAPB is not set | ||
| 10306 | +# CONFIG_ECONET is not set | ||
| 10307 | +# CONFIG_WAN_ROUTER is not set | ||
| 10308 | +# CONFIG_PHONET is not set | ||
| 10309 | +# CONFIG_IEEE802154 is not set | ||
| 10310 | +# CONFIG_NET_SCHED is not set | ||
| 10311 | +# CONFIG_DCB is not set | ||
| 10312 | +CONFIG_RPS=y | ||
| 10313 | + | ||
| 10314 | +# | ||
| 10315 | +# Network testing | ||
| 10316 | +# | ||
| 10317 | +# CONFIG_NET_PKTGEN is not set | ||
| 10318 | +# CONFIG_HAMRADIO is not set | ||
| 10319 | +# CONFIG_CAN is not set | ||
| 10320 | +# CONFIG_IRDA is not set | ||
| 10321 | +# CONFIG_BT is not set | ||
| 10322 | +# CONFIG_AF_RXRPC is not set | ||
| 10323 | +CONFIG_WIRELESS=y | ||
| 10324 | +# CONFIG_CFG80211 is not set | ||
| 10325 | +# CONFIG_LIB80211 is not set | ||
| 10326 | + | ||
| 10327 | +# | ||
| 10328 | +# CFG80211 needs to be enabled for MAC80211 | ||
| 10329 | +# | ||
| 10330 | + | ||
| 10331 | +# | ||
| 10332 | +# Some wireless drivers require a rate control algorithm | ||
| 10333 | +# | ||
| 10334 | +# CONFIG_WIMAX is not set | ||
| 10335 | +# CONFIG_RFKILL is not set | ||
| 10336 | +# CONFIG_NET_9P is not set | ||
| 10337 | +# CONFIG_CAIF is not set | ||
| 10338 | + | ||
| 10339 | +# | ||
| 10340 | +# Device Drivers | ||
| 10341 | +# | ||
| 10342 | + | ||
| 10343 | +# | ||
| 10344 | +# Generic Driver Options | ||
| 10345 | +# | ||
| 10346 | +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 10347 | +# CONFIG_DEVTMPFS is not set | ||
| 10348 | +CONFIG_STANDALONE=y | ||
| 10349 | +CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 10350 | +CONFIG_FW_LOADER=y | ||
| 10351 | +CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 10352 | +CONFIG_EXTRA_FIRMWARE="" | ||
| 10353 | +# CONFIG_DEBUG_DRIVER is not set | ||
| 10354 | +# CONFIG_DEBUG_DEVRES is not set | ||
| 10355 | +# CONFIG_SYS_HYPERVISOR is not set | ||
| 10356 | +CONFIG_CONNECTOR=y | ||
| 10357 | +CONFIG_PROC_EVENTS=y | ||
| 10358 | +CONFIG_MTD=y | ||
| 10359 | +# CONFIG_MTD_DEBUG is not set | ||
| 10360 | +# CONFIG_MTD_TESTS is not set | ||
| 10361 | +# CONFIG_MTD_CONCAT is not set | ||
| 10362 | +CONFIG_MTD_PARTITIONS=y | ||
| 10363 | +# CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 10364 | +# CONFIG_MTD_CMDLINE_PARTS is not set | ||
| 10365 | +CONFIG_MTD_OF_PARTS=y | ||
| 10366 | +# CONFIG_MTD_AR7_PARTS is not set | ||
| 10367 | + | ||
| 10368 | +# | ||
| 10369 | +# User Modules And Translation Layers | ||
| 10370 | +# | ||
| 10371 | +CONFIG_MTD_CHAR=y | ||
| 10372 | +CONFIG_MTD_BLKDEVS=y | ||
| 10373 | +CONFIG_MTD_BLOCK=y | ||
| 10374 | +# CONFIG_FTL is not set | ||
| 10375 | +# CONFIG_NFTL is not set | ||
| 10376 | +# CONFIG_INFTL is not set | ||
| 10377 | +# CONFIG_RFD_FTL is not set | ||
| 10378 | +# CONFIG_SSFDC is not set | ||
| 10379 | +# CONFIG_SM_FTL is not set | ||
| 10380 | +# CONFIG_MTD_OOPS is not set | ||
| 10381 | + | ||
| 10382 | +# | ||
| 10383 | +# RAM/ROM/Flash chip drivers | ||
| 10384 | +# | ||
| 10385 | +# CONFIG_MTD_CFI is not set | ||
| 10386 | +CONFIG_MTD_JEDECPROBE=y | ||
| 10387 | +CONFIG_MTD_GEN_PROBE=y | ||
| 10388 | +# CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 10389 | +CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 10390 | +CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 10391 | +CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 10392 | +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 10393 | +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 10394 | +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 10395 | +CONFIG_MTD_CFI_I1=y | ||
| 10396 | +CONFIG_MTD_CFI_I2=y | ||
| 10397 | +# CONFIG_MTD_CFI_I4 is not set | ||
| 10398 | +# CONFIG_MTD_CFI_I8 is not set | ||
| 10399 | +# CONFIG_MTD_CFI_INTELEXT is not set | ||
| 10400 | +CONFIG_MTD_CFI_AMDSTD=y | ||
| 10401 | +# CONFIG_MTD_CFI_STAA is not set | ||
| 10402 | +CONFIG_MTD_CFI_UTIL=y | ||
| 10403 | +# CONFIG_MTD_RAM is not set | ||
| 10404 | +# CONFIG_MTD_ROM is not set | ||
| 10405 | +# CONFIG_MTD_ABSENT is not set | ||
| 10406 | + | ||
| 10407 | +# | ||
| 10408 | +# Mapping drivers for chip access | ||
| 10409 | +# | ||
| 10410 | +# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 10411 | +# CONFIG_MTD_PHYSMAP is not set | ||
| 10412 | +CONFIG_MTD_PHYSMAP_OF=y | ||
| 10413 | +# CONFIG_MTD_PLATRAM is not set | ||
| 10414 | + | ||
| 10415 | +# | ||
| 10416 | +# Self-contained MTD device drivers | ||
| 10417 | +# | ||
| 10418 | +# CONFIG_MTD_SLRAM is not set | ||
| 10419 | +# CONFIG_MTD_PHRAM is not set | ||
| 10420 | +# CONFIG_MTD_MTDRAM is not set | ||
| 10421 | +# CONFIG_MTD_BLOCK2MTD is not set | ||
| 10422 | + | ||
| 10423 | +# | ||
| 10424 | +# Disk-On-Chip Device Drivers | ||
| 10425 | +# | ||
| 10426 | +# CONFIG_MTD_DOC2000 is not set | ||
| 10427 | +# CONFIG_MTD_DOC2001 is not set | ||
| 10428 | +# CONFIG_MTD_DOC2001PLUS is not set | ||
| 10429 | +# CONFIG_MTD_NAND is not set | ||
| 10430 | +# CONFIG_MTD_ONENAND is not set | ||
| 10431 | + | ||
| 10432 | +# | ||
| 10433 | +# LPDDR flash memory drivers | ||
| 10434 | +# | ||
| 10435 | +# CONFIG_MTD_LPDDR is not set | ||
| 10436 | + | ||
| 10437 | +# | ||
| 10438 | +# UBI - Unsorted block images | ||
| 10439 | +# | ||
| 10440 | +# CONFIG_MTD_UBI is not set | ||
| 10441 | +CONFIG_OF_FLATTREE=y | ||
| 10442 | +CONFIG_OF_DYNAMIC=y | ||
| 10443 | +CONFIG_OF_DEVICE=y | ||
| 10444 | +# CONFIG_PARPORT is not set | ||
| 10445 | +CONFIG_BLK_DEV=y | ||
| 10446 | +# CONFIG_BLK_DEV_FD is not set | ||
| 10447 | +# CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 10448 | +# CONFIG_BLK_DEV_LOOP is not set | ||
| 10449 | +# CONFIG_BLK_DEV_DRBD is not set | ||
| 10450 | +# CONFIG_BLK_DEV_NBD is not set | ||
| 10451 | +CONFIG_BLK_DEV_RAM=y | ||
| 10452 | +CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 10453 | +CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 10454 | +# CONFIG_BLK_DEV_XIP is not set | ||
| 10455 | +CONFIG_BLK_DEV_ISS=y | ||
| 10456 | +# CONFIG_CDROM_PKTCDVD is not set | ||
| 10457 | +# CONFIG_ATA_OVER_ETH is not set | ||
| 10458 | +# CONFIG_XILINX_SYSACE is not set | ||
| 10459 | +# CONFIG_BLK_DEV_HD is not set | ||
| 10460 | +CONFIG_MISC_DEVICES=y | ||
| 10461 | +# CONFIG_ENCLOSURE_SERVICES is not set | ||
| 10462 | +# CONFIG_C2PORT is not set | ||
| 10463 | + | ||
| 10464 | +# | ||
| 10465 | +# EEPROM support | ||
| 10466 | +# | ||
| 10467 | +# CONFIG_EEPROM_93CX6 is not set | ||
| 10468 | +CONFIG_HAVE_IDE=y | ||
| 10469 | +# CONFIG_IDE is not set | ||
| 10470 | + | ||
| 10471 | +# | ||
| 10472 | +# SCSI device support | ||
| 10473 | +# | ||
| 10474 | +CONFIG_SCSI_MOD=y | ||
| 10475 | +# CONFIG_RAID_ATTRS is not set | ||
| 10476 | +# CONFIG_SCSI is not set | ||
| 10477 | +# CONFIG_SCSI_DMA is not set | ||
| 10478 | +# CONFIG_SCSI_NETLINK is not set | ||
| 10479 | +# CONFIG_ATA is not set | ||
| 10480 | +# CONFIG_MD is not set | ||
| 10481 | +# CONFIG_MACINTOSH_DRIVERS is not set | ||
| 10482 | +CONFIG_NETDEVICES=y | ||
| 10483 | +CONFIG_DUMMY=y | ||
| 10484 | +# CONFIG_BONDING is not set | ||
| 10485 | +# CONFIG_MACVLAN is not set | ||
| 10486 | +# CONFIG_EQUALIZER is not set | ||
| 10487 | +CONFIG_TUN=y | ||
| 10488 | +# CONFIG_VETH is not set | ||
| 10489 | +# CONFIG_NET_ETHERNET is not set | ||
| 10490 | +CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 10491 | +CONFIG_NETDEV_1000=y | ||
| 10492 | +# CONFIG_MV643XX_ETH is not set | ||
| 10493 | +# CONFIG_XILINX_LL_TEMAC is not set | ||
| 10494 | +CONFIG_NETDEV_10000=y | ||
| 10495 | +CONFIG_WLAN=y | ||
| 10496 | +# CONFIG_HOSTAP is not set | ||
| 10497 | + | ||
| 10498 | +# | ||
| 10499 | +# Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 10500 | +# | ||
| 10501 | +# CONFIG_WAN is not set | ||
| 10502 | +# CONFIG_PPP is not set | ||
| 10503 | +# CONFIG_SLIP is not set | ||
| 10504 | +# CONFIG_NETCONSOLE is not set | ||
| 10505 | +# CONFIG_NETPOLL is not set | ||
| 10506 | +# CONFIG_NET_POLL_CONTROLLER is not set | ||
| 10507 | +# CONFIG_ISDN is not set | ||
| 10508 | +# CONFIG_PHONE is not set | ||
| 10509 | + | ||
| 10510 | +# | ||
| 10511 | +# Input device support | ||
| 10512 | +# | ||
| 10513 | +# CONFIG_INPUT is not set | ||
| 10514 | + | ||
| 10515 | +# | ||
| 10516 | +# Hardware I/O ports | ||
| 10517 | +# | ||
| 10518 | +# CONFIG_SERIO is not set | ||
| 10519 | +# CONFIG_GAMEPORT is not set | ||
| 10520 | + | ||
| 10521 | +# | ||
| 10522 | +# Character devices | ||
| 10523 | +# | ||
| 10524 | +# CONFIG_VT is not set | ||
| 10525 | +CONFIG_DEVKMEM=y | ||
| 10526 | +# CONFIG_SERIAL_NONSTANDARD is not set | ||
| 10527 | +# CONFIG_N_GSM is not set | ||
| 10528 | + | ||
| 10529 | +# | ||
| 10530 | +# Serial drivers | ||
| 10531 | +# | ||
| 10532 | +CONFIG_SERIAL_8250=y | ||
| 10533 | +CONFIG_SERIAL_8250_CONSOLE=y | ||
| 10534 | +CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 10535 | +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
| 10536 | +CONFIG_SERIAL_8250_EXTENDED=y | ||
| 10537 | +# CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
| 10538 | +CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
| 10539 | +# CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
| 10540 | +# CONFIG_SERIAL_8250_RSA is not set | ||
| 10541 | + | ||
| 10542 | +# | ||
| 10543 | +# Non-8250 serial port support | ||
| 10544 | +# | ||
| 10545 | +# CONFIG_SERIAL_UARTLITE is not set | ||
| 10546 | +CONFIG_SERIAL_CORE=y | ||
| 10547 | +CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 10548 | +CONFIG_SERIAL_OF_PLATFORM=y | ||
| 10549 | +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 10550 | +# CONFIG_SERIAL_TIMBERDALE is not set | ||
| 10551 | +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 10552 | +# CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 10553 | +# CONFIG_SERIAL_ALTERA_UART is not set | ||
| 10554 | +CONFIG_UNIX98_PTYS=y | ||
| 10555 | +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 10556 | +CONFIG_LEGACY_PTYS=y | ||
| 10557 | +CONFIG_LEGACY_PTY_COUNT=256 | ||
| 10558 | +# CONFIG_HVC_UDBG is not set | ||
| 10559 | +# CONFIG_IPMI_HANDLER is not set | ||
| 10560 | +# CONFIG_HW_RANDOM is not set | ||
| 10561 | +# CONFIG_NVRAM is not set | ||
| 10562 | +# CONFIG_GEN_RTC is not set | ||
| 10563 | +# CONFIG_R3964 is not set | ||
| 10564 | +# CONFIG_RAW_DRIVER is not set | ||
| 10565 | +# CONFIG_TCG_TPM is not set | ||
| 10566 | +# CONFIG_RAMOOPS is not set | ||
| 10567 | +# CONFIG_I2C is not set | ||
| 10568 | +# CONFIG_SPI is not set | ||
| 10569 | + | ||
| 10570 | +# | ||
| 10571 | +# PPS support | ||
| 10572 | +# | ||
| 10573 | +# CONFIG_PPS is not set | ||
| 10574 | +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 10575 | +# CONFIG_GPIOLIB is not set | ||
| 10576 | +# CONFIG_W1 is not set | ||
| 10577 | +# CONFIG_POWER_SUPPLY is not set | ||
| 10578 | +# CONFIG_HWMON is not set | ||
| 10579 | +CONFIG_THERMAL=y | ||
| 10580 | +# CONFIG_WATCHDOG is not set | ||
| 10581 | +CONFIG_SSB_POSSIBLE=y | ||
| 10582 | + | ||
| 10583 | +# | ||
| 10584 | +# Sonics Silicon Backplane | ||
| 10585 | +# | ||
| 10586 | +# CONFIG_SSB is not set | ||
| 10587 | +# CONFIG_MFD_SUPPORT is not set | ||
| 10588 | +# CONFIG_REGULATOR is not set | ||
| 10589 | +# CONFIG_MEDIA_SUPPORT is not set | ||
| 10590 | + | ||
| 10591 | +# | ||
| 10592 | +# Graphics support | ||
| 10593 | +# | ||
| 10594 | +# CONFIG_VGASTATE is not set | ||
| 10595 | +# CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 10596 | +# CONFIG_FB is not set | ||
| 10597 | +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 10598 | + | ||
| 10599 | +# | ||
| 10600 | +# Display device support | ||
| 10601 | +# | ||
| 10602 | +# CONFIG_DISPLAY_SUPPORT is not set | ||
| 10603 | +# CONFIG_SOUND is not set | ||
| 10604 | +# CONFIG_USB_SUPPORT is not set | ||
| 10605 | +# CONFIG_MMC is not set | ||
| 10606 | +# CONFIG_MEMSTICK is not set | ||
| 10607 | +# CONFIG_NEW_LEDS is not set | ||
| 10608 | +# CONFIG_ACCESSIBILITY is not set | ||
| 10609 | +# CONFIG_EDAC is not set | ||
| 10610 | +# CONFIG_RTC_CLASS is not set | ||
| 10611 | +# CONFIG_DMADEVICES is not set | ||
| 10612 | +# CONFIG_AUXDISPLAY is not set | ||
| 10613 | +# CONFIG_UIO is not set | ||
| 10614 | +# CONFIG_STAGING is not set | ||
| 10615 | + | ||
| 10616 | +# | ||
| 10617 | +# LSI Drivers (APP3, APP3K, and ACP) | ||
| 10618 | +# | ||
| 10619 | +# CONFIG_SERIAL_ACP is not set | ||
| 10620 | +# CONFIG_LSI_NET is not set | ||
| 10621 | +# CONFIG_LSI_NAND is not set | ||
| 10622 | +# CONFIG_LSI_PLX_PCIE_BRIDGE is not set | ||
| 10623 | + | ||
| 10624 | +# | ||
| 10625 | +# File systems | ||
| 10626 | +# | ||
| 10627 | +CONFIG_EXT2_FS=y | ||
| 10628 | +# CONFIG_EXT2_FS_XATTR is not set | ||
| 10629 | +# CONFIG_EXT2_FS_XIP is not set | ||
| 10630 | +CONFIG_EXT3_FS=y | ||
| 10631 | +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
| 10632 | +CONFIG_EXT3_FS_XATTR=y | ||
| 10633 | +# CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 10634 | +# CONFIG_EXT3_FS_SECURITY is not set | ||
| 10635 | +# CONFIG_EXT4_FS is not set | ||
| 10636 | +CONFIG_JBD=y | ||
| 10637 | +# CONFIG_JBD_DEBUG is not set | ||
| 10638 | +CONFIG_FS_MBCACHE=y | ||
| 10639 | +# CONFIG_REISERFS_FS is not set | ||
| 10640 | +# CONFIG_JFS_FS is not set | ||
| 10641 | +# CONFIG_FS_POSIX_ACL is not set | ||
| 10642 | +# CONFIG_XFS_FS is not set | ||
| 10643 | +# CONFIG_GFS2_FS is not set | ||
| 10644 | +# CONFIG_OCFS2_FS is not set | ||
| 10645 | +# CONFIG_BTRFS_FS is not set | ||
| 10646 | +# CONFIG_NILFS2_FS is not set | ||
| 10647 | +CONFIG_FILE_LOCKING=y | ||
| 10648 | +CONFIG_FSNOTIFY=y | ||
| 10649 | +CONFIG_DNOTIFY=y | ||
| 10650 | +CONFIG_INOTIFY=y | ||
| 10651 | +CONFIG_INOTIFY_USER=y | ||
| 10652 | +# CONFIG_QUOTA is not set | ||
| 10653 | +# CONFIG_AUTOFS_FS is not set | ||
| 10654 | +# CONFIG_AUTOFS4_FS is not set | ||
| 10655 | +# CONFIG_FUSE_FS is not set | ||
| 10656 | + | ||
| 10657 | +# | ||
| 10658 | +# Caches | ||
| 10659 | +# | ||
| 10660 | +# CONFIG_FSCACHE is not set | ||
| 10661 | + | ||
| 10662 | +# | ||
| 10663 | +# CD-ROM/DVD Filesystems | ||
| 10664 | +# | ||
| 10665 | +# CONFIG_ISO9660_FS is not set | ||
| 10666 | +# CONFIG_UDF_FS is not set | ||
| 10667 | + | ||
| 10668 | +# | ||
| 10669 | +# DOS/FAT/NT Filesystems | ||
| 10670 | +# | ||
| 10671 | +# CONFIG_MSDOS_FS is not set | ||
| 10672 | +# CONFIG_VFAT_FS is not set | ||
| 10673 | +# CONFIG_NTFS_FS is not set | ||
| 10674 | + | ||
| 10675 | +# | ||
| 10676 | +# Pseudo filesystems | ||
| 10677 | +# | ||
| 10678 | +CONFIG_PROC_FS=y | ||
| 10679 | +CONFIG_PROC_KCORE=y | ||
| 10680 | +CONFIG_PROC_SYSCTL=y | ||
| 10681 | +CONFIG_PROC_PAGE_MONITOR=y | ||
| 10682 | +CONFIG_SYSFS=y | ||
| 10683 | +CONFIG_TMPFS=y | ||
| 10684 | +# CONFIG_TMPFS_POSIX_ACL is not set | ||
| 10685 | +# CONFIG_HUGETLB_PAGE is not set | ||
| 10686 | +# CONFIG_CONFIGFS_FS is not set | ||
| 10687 | +CONFIG_MISC_FILESYSTEMS=y | ||
| 10688 | +# CONFIG_ADFS_FS is not set | ||
| 10689 | +# CONFIG_AFFS_FS is not set | ||
| 10690 | +# CONFIG_HFS_FS is not set | ||
| 10691 | +# CONFIG_HFSPLUS_FS is not set | ||
| 10692 | +# CONFIG_BEFS_FS is not set | ||
| 10693 | +# CONFIG_BFS_FS is not set | ||
| 10694 | +# CONFIG_EFS_FS is not set | ||
| 10695 | +# CONFIG_JFFS2_FS is not set | ||
| 10696 | +# CONFIG_LOGFS is not set | ||
| 10697 | +CONFIG_CRAMFS=y | ||
| 10698 | +# CONFIG_SQUASHFS is not set | ||
| 10699 | +# CONFIG_VXFS_FS is not set | ||
| 10700 | +# CONFIG_MINIX_FS is not set | ||
| 10701 | +# CONFIG_OMFS_FS is not set | ||
| 10702 | +# CONFIG_HPFS_FS is not set | ||
| 10703 | +# CONFIG_QNX4FS_FS is not set | ||
| 10704 | +# CONFIG_ROMFS_FS is not set | ||
| 10705 | +# CONFIG_SYSV_FS is not set | ||
| 10706 | +# CONFIG_UFS_FS is not set | ||
| 10707 | +# CONFIG_NETWORK_FILESYSTEMS is not set | ||
| 10708 | + | ||
| 10709 | +# | ||
| 10710 | +# Partition Types | ||
| 10711 | +# | ||
| 10712 | +# CONFIG_PARTITION_ADVANCED is not set | ||
| 10713 | +CONFIG_MSDOS_PARTITION=y | ||
| 10714 | +# CONFIG_NLS is not set | ||
| 10715 | +# CONFIG_DLM is not set | ||
| 10716 | +# CONFIG_BINARY_PRINTF is not set | ||
| 10717 | + | ||
| 10718 | +# | ||
| 10719 | +# Library routines | ||
| 10720 | +# | ||
| 10721 | +CONFIG_BITREVERSE=y | ||
| 10722 | +CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 10723 | +# CONFIG_CRC_CCITT is not set | ||
| 10724 | +# CONFIG_CRC16 is not set | ||
| 10725 | +# CONFIG_CRC_T10DIF is not set | ||
| 10726 | +# CONFIG_CRC_ITU_T is not set | ||
| 10727 | +CONFIG_CRC32=y | ||
| 10728 | +# CONFIG_CRC7 is not set | ||
| 10729 | +# CONFIG_LIBCRC32C is not set | ||
| 10730 | +CONFIG_ZLIB_INFLATE=y | ||
| 10731 | +CONFIG_DECOMPRESS_GZIP=y | ||
| 10732 | +CONFIG_HAS_IOMEM=y | ||
| 10733 | +CONFIG_HAS_IOPORT=y | ||
| 10734 | +CONFIG_HAS_DMA=y | ||
| 10735 | +CONFIG_NLATTR=y | ||
| 10736 | +CONFIG_GENERIC_ATOMIC64=y | ||
| 10737 | + | ||
| 10738 | +# | ||
| 10739 | +# Kernel hacking | ||
| 10740 | +# | ||
| 10741 | +# CONFIG_PRINTK_TIME is not set | ||
| 10742 | +CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 10743 | +CONFIG_ENABLE_MUST_CHECK=y | ||
| 10744 | +CONFIG_FRAME_WARN=1024 | ||
| 10745 | +CONFIG_MAGIC_SYSRQ=y | ||
| 10746 | +# CONFIG_STRIP_ASM_SYMS is not set | ||
| 10747 | +# CONFIG_UNUSED_SYMBOLS is not set | ||
| 10748 | +CONFIG_DEBUG_FS=y | ||
| 10749 | +# CONFIG_HEADERS_CHECK is not set | ||
| 10750 | +CONFIG_DEBUG_KERNEL=y | ||
| 10751 | +# CONFIG_DEBUG_SHIRQ is not set | ||
| 10752 | +CONFIG_DETECT_SOFTLOCKUP=y | ||
| 10753 | +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||
| 10754 | +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||
| 10755 | +# CONFIG_DETECT_HUNG_TASK is not set | ||
| 10756 | +CONFIG_SCHED_DEBUG=y | ||
| 10757 | +# CONFIG_SCHEDSTATS is not set | ||
| 10758 | +# CONFIG_TIMER_STATS is not set | ||
| 10759 | +# CONFIG_DEBUG_OBJECTS is not set | ||
| 10760 | +# CONFIG_SLUB_DEBUG_ON is not set | ||
| 10761 | +# CONFIG_SLUB_STATS is not set | ||
| 10762 | +# CONFIG_DEBUG_KMEMLEAK is not set | ||
| 10763 | +# CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 10764 | +# CONFIG_RT_MUTEX_TESTER is not set | ||
| 10765 | +# CONFIG_DEBUG_SPINLOCK is not set | ||
| 10766 | +# CONFIG_DEBUG_MUTEXES is not set | ||
| 10767 | +# CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 10768 | +# CONFIG_PROVE_LOCKING is not set | ||
| 10769 | +# CONFIG_LOCK_STAT is not set | ||
| 10770 | +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 10771 | +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 10772 | +# CONFIG_DEBUG_KOBJECT is not set | ||
| 10773 | +# CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 10774 | +CONFIG_DEBUG_INFO=y | ||
| 10775 | +# CONFIG_DEBUG_VM is not set | ||
| 10776 | +# CONFIG_DEBUG_WRITECOUNT is not set | ||
| 10777 | +# CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 10778 | +# CONFIG_DEBUG_LIST is not set | ||
| 10779 | +# CONFIG_DEBUG_SG is not set | ||
| 10780 | +# CONFIG_DEBUG_NOTIFIERS is not set | ||
| 10781 | +# CONFIG_DEBUG_CREDENTIALS is not set | ||
| 10782 | +# CONFIG_RCU_TORTURE_TEST is not set | ||
| 10783 | +# CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 10784 | +# CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 10785 | +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 10786 | +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 10787 | +# CONFIG_LKDTM is not set | ||
| 10788 | +# CONFIG_FAULT_INJECTION is not set | ||
| 10789 | +# CONFIG_LATENCYTOP is not set | ||
| 10790 | +CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 10791 | +# CONFIG_DEBUG_PAGEALLOC is not set | ||
| 10792 | +CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 10793 | +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 10794 | +CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 10795 | +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 10796 | +CONFIG_RING_BUFFER=y | ||
| 10797 | +CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 10798 | +CONFIG_TRACING_SUPPORT=y | ||
| 10799 | +CONFIG_FTRACE=y | ||
| 10800 | +# CONFIG_FUNCTION_TRACER is not set | ||
| 10801 | +# CONFIG_IRQSOFF_TRACER is not set | ||
| 10802 | +# CONFIG_SCHED_TRACER is not set | ||
| 10803 | +# CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 10804 | +# CONFIG_BOOT_TRACER is not set | ||
| 10805 | +CONFIG_BRANCH_PROFILE_NONE=y | ||
| 10806 | +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 10807 | +# CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 10808 | +# CONFIG_STACK_TRACER is not set | ||
| 10809 | +# CONFIG_KMEMTRACE is not set | ||
| 10810 | +# CONFIG_WORKQUEUE_TRACER is not set | ||
| 10811 | +# CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 10812 | +# CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 10813 | +# CONFIG_DYNAMIC_DEBUG is not set | ||
| 10814 | +# CONFIG_DMA_API_DEBUG is not set | ||
| 10815 | +# CONFIG_ATOMIC64_SELFTEST is not set | ||
| 10816 | +# CONFIG_SAMPLES is not set | ||
| 10817 | +CONFIG_HAVE_ARCH_KGDB=y | ||
| 10818 | +# CONFIG_KGDB is not set | ||
| 10819 | +# CONFIG_PPC_DISABLE_WERROR is not set | ||
| 10820 | +CONFIG_PPC_WERROR=y | ||
| 10821 | +CONFIG_PRINT_STACK_DEPTH=64 | ||
| 10822 | +# CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 10823 | +# CONFIG_DEBUG_STACK_USAGE is not set | ||
| 10824 | +# CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 10825 | +# CONFIG_PPC_EMULATED_STATS is not set | ||
| 10826 | +# CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 10827 | +# CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 10828 | +# CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 10829 | +# CONFIG_XMON is not set | ||
| 10830 | +# CONFIG_VIRQ_DEBUG is not set | ||
| 10831 | +# CONFIG_BDI_SWITCH is not set | ||
| 10832 | +# CONFIG_PPC_EARLY_DEBUG is not set | ||
| 10833 | + | ||
| 10834 | +# | ||
| 10835 | +# Security options | ||
| 10836 | +# | ||
| 10837 | +# CONFIG_KEYS is not set | ||
| 10838 | +# CONFIG_SECURITY is not set | ||
| 10839 | +# CONFIG_SECURITYFS is not set | ||
| 10840 | +# CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 10841 | +# CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 10842 | +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 10843 | +CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 10844 | +CONFIG_DEFAULT_SECURITY="" | ||
| 10845 | +CONFIG_CRYPTO=y | ||
| 10846 | + | ||
| 10847 | +# | ||
| 10848 | +# Crypto core or helper | ||
| 10849 | +# | ||
| 10850 | +CONFIG_CRYPTO_ALGAPI=y | ||
| 10851 | +CONFIG_CRYPTO_ALGAPI2=y | ||
| 10852 | +CONFIG_CRYPTO_AEAD2=y | ||
| 10853 | +CONFIG_CRYPTO_BLKCIPHER=y | ||
| 10854 | +CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 10855 | +CONFIG_CRYPTO_HASH=y | ||
| 10856 | +CONFIG_CRYPTO_HASH2=y | ||
| 10857 | +CONFIG_CRYPTO_RNG2=y | ||
| 10858 | +CONFIG_CRYPTO_PCOMP=y | ||
| 10859 | +CONFIG_CRYPTO_MANAGER=y | ||
| 10860 | +CONFIG_CRYPTO_MANAGER2=y | ||
| 10861 | +# CONFIG_CRYPTO_GF128MUL is not set | ||
| 10862 | +# CONFIG_CRYPTO_NULL is not set | ||
| 10863 | +# CONFIG_CRYPTO_PCRYPT is not set | ||
| 10864 | +CONFIG_CRYPTO_WORKQUEUE=y | ||
| 10865 | +# CONFIG_CRYPTO_CRYPTD is not set | ||
| 10866 | +# CONFIG_CRYPTO_AUTHENC is not set | ||
| 10867 | +# CONFIG_CRYPTO_TEST is not set | ||
| 10868 | + | ||
| 10869 | +# | ||
| 10870 | +# Authenticated Encryption with Associated Data | ||
| 10871 | +# | ||
| 10872 | +# CONFIG_CRYPTO_CCM is not set | ||
| 10873 | +# CONFIG_CRYPTO_GCM is not set | ||
| 10874 | +# CONFIG_CRYPTO_SEQIV is not set | ||
| 10875 | + | ||
| 10876 | +# | ||
| 10877 | +# Block modes | ||
| 10878 | +# | ||
| 10879 | +CONFIG_CRYPTO_CBC=y | ||
| 10880 | +# CONFIG_CRYPTO_CTR is not set | ||
| 10881 | +# CONFIG_CRYPTO_CTS is not set | ||
| 10882 | +CONFIG_CRYPTO_ECB=y | ||
| 10883 | +# CONFIG_CRYPTO_LRW is not set | ||
| 10884 | +CONFIG_CRYPTO_PCBC=y | ||
| 10885 | +# CONFIG_CRYPTO_XTS is not set | ||
| 10886 | + | ||
| 10887 | +# | ||
| 10888 | +# Hash modes | ||
| 10889 | +# | ||
| 10890 | +# CONFIG_CRYPTO_HMAC is not set | ||
| 10891 | +# CONFIG_CRYPTO_XCBC is not set | ||
| 10892 | +# CONFIG_CRYPTO_VMAC is not set | ||
| 10893 | + | ||
| 10894 | +# | ||
| 10895 | +# Digest | ||
| 10896 | +# | ||
| 10897 | +# CONFIG_CRYPTO_CRC32C is not set | ||
| 10898 | +# CONFIG_CRYPTO_GHASH is not set | ||
| 10899 | +# CONFIG_CRYPTO_MD4 is not set | ||
| 10900 | +CONFIG_CRYPTO_MD5=y | ||
| 10901 | +# CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 10902 | +# CONFIG_CRYPTO_RMD128 is not set | ||
| 10903 | +# CONFIG_CRYPTO_RMD160 is not set | ||
| 10904 | +# CONFIG_CRYPTO_RMD256 is not set | ||
| 10905 | +# CONFIG_CRYPTO_RMD320 is not set | ||
| 10906 | +# CONFIG_CRYPTO_SHA1 is not set | ||
| 10907 | +# CONFIG_CRYPTO_SHA256 is not set | ||
| 10908 | +# CONFIG_CRYPTO_SHA512 is not set | ||
| 10909 | +# CONFIG_CRYPTO_TGR192 is not set | ||
| 10910 | +# CONFIG_CRYPTO_WP512 is not set | ||
| 10911 | + | ||
| 10912 | +# | ||
| 10913 | +# Ciphers | ||
| 10914 | +# | ||
| 10915 | +# CONFIG_CRYPTO_AES is not set | ||
| 10916 | +# CONFIG_CRYPTO_ANUBIS is not set | ||
| 10917 | +# CONFIG_CRYPTO_ARC4 is not set | ||
| 10918 | +# CONFIG_CRYPTO_BLOWFISH is not set | ||
| 10919 | +# CONFIG_CRYPTO_CAMELLIA is not set | ||
| 10920 | +# CONFIG_CRYPTO_CAST5 is not set | ||
| 10921 | +# CONFIG_CRYPTO_CAST6 is not set | ||
| 10922 | +CONFIG_CRYPTO_DES=y | ||
| 10923 | +# CONFIG_CRYPTO_FCRYPT is not set | ||
| 10924 | +# CONFIG_CRYPTO_KHAZAD is not set | ||
| 10925 | +# CONFIG_CRYPTO_SALSA20 is not set | ||
| 10926 | +# CONFIG_CRYPTO_SEED is not set | ||
| 10927 | +# CONFIG_CRYPTO_SERPENT is not set | ||
| 10928 | +# CONFIG_CRYPTO_TEA is not set | ||
| 10929 | +# CONFIG_CRYPTO_TWOFISH is not set | ||
| 10930 | + | ||
| 10931 | +# | ||
| 10932 | +# Compression | ||
| 10933 | +# | ||
| 10934 | +# CONFIG_CRYPTO_DEFLATE is not set | ||
| 10935 | +# CONFIG_CRYPTO_ZLIB is not set | ||
| 10936 | +# CONFIG_CRYPTO_LZO is not set | ||
| 10937 | + | ||
| 10938 | +# | ||
| 10939 | +# Random Number Generation | ||
| 10940 | +# | ||
| 10941 | +# CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 10942 | +# CONFIG_CRYPTO_HW is not set | ||
| 10943 | +# CONFIG_PPC_CLOCK is not set | ||
| 10944 | +# CONFIG_VIRTUALIZATION is not set | ||
| 10945 | diff --git a/arch/powerpc/include/asm/asm-compat.h b/arch/powerpc/include/asm/asm-compat.h | ||
| 10946 | index decad95..1e65560 100644 | ||
| 10947 | --- a/arch/powerpc/include/asm/asm-compat.h | ||
| 10948 | +++ b/arch/powerpc/include/asm/asm-compat.h | ||
| 10949 | @@ -71,6 +71,29 @@ | ||
| 10950 | #define PPC405_ERR77(ra,rb) | ||
| 10951 | #define PPC405_ERR77_SYNC | ||
| 10952 | #endif | ||
| 10953 | + | ||
| 10954 | +#ifdef CONFIG_PPC_47x | ||
| 10955 | +#define PPC476_ERR_DCBx() \ | ||
| 10956 | + BEGIN_FTR_SECTION; \ | ||
| 10957 | + lwsync; \ | ||
| 10958 | + END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 10959 | +#define PPC476_ERR_MTPID PPC476_ERR_DCBx | ||
| 10960 | +#define PPC476_ERR_DCI() \ | ||
| 10961 | + BEGIN_FTR_SECTION; \ | ||
| 10962 | + dci; \ | ||
| 10963 | + END_FTR_SECTION_IFSET(CPU_FTR_476_DD1) | ||
| 10964 | +#define PPC476_ERR_ISYNC() \ | ||
| 10965 | + BEGIN_FTR_SECTION; \ | ||
| 10966 | + isync; \ | ||
| 10967 | + END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 10968 | +#else /* ! CONFIG_PPC_47x */ | ||
| 10969 | +#define PPC476_ERR_DCBx() | ||
| 10970 | +#define PPC476_ERR_MTPID() | ||
| 10971 | +#define PPC476_ERR_DCI() | ||
| 10972 | +#define PPC476_ERR_ISYNC() | ||
| 10973 | +#endif /* CONFIG_PPC_47x */ | ||
| 10974 | + | ||
| 10975 | #endif | ||
| 10976 | |||
| 10977 | + | ||
| 10978 | #endif /* _ASM_POWERPC_ASM_COMPAT_H */ | ||
| 10979 | diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h | ||
| 10980 | index c0d842c..49c4c6a 100644 | ||
| 10981 | --- a/arch/powerpc/include/asm/cputable.h | ||
| 10982 | +++ b/arch/powerpc/include/asm/cputable.h | ||
| 10983 | @@ -158,6 +158,7 @@ extern const char *powerpc_base_platform; | ||
| 10984 | #define CPU_FTR_NEED_COHERENT ASM_CONST(0x0000000000020000) | ||
| 10985 | #define CPU_FTR_NO_BTIC ASM_CONST(0x0000000000040000) | ||
| 10986 | #define CPU_FTR_DEBUG_LVL_EXC ASM_CONST(0x0000000000080000) | ||
| 10987 | +#define CPU_FTR_476_DD1_1 CPU_FTR_DEBUG_LVL_EXC | ||
| 10988 | #define CPU_FTR_NODSISRALIGN ASM_CONST(0x0000000000100000) | ||
| 10989 | #define CPU_FTR_PPC_LE ASM_CONST(0x0000000000200000) | ||
| 10990 | #define CPU_FTR_REAL_LE ASM_CONST(0x0000000000400000) | ||
| 10991 | @@ -168,6 +169,7 @@ extern const char *powerpc_base_platform; | ||
| 10992 | #define CPU_FTR_LWSYNC ASM_CONST(0x0000000008000000) | ||
| 10993 | #define CPU_FTR_NOEXECUTE ASM_CONST(0x0000000010000000) | ||
| 10994 | #define CPU_FTR_INDEXED_DCR ASM_CONST(0x0000000020000000) | ||
| 10995 | +#define CPU_FTR_476_DD1 ASM_CONST(0x0000000040000000) | ||
| 10996 | |||
| 10997 | /* | ||
| 10998 | * Add the 64-bit processor unique features in the top half of the word; | ||
| 10999 | diff --git a/arch/powerpc/include/asm/dcr-native.h b/arch/powerpc/include/asm/dcr-native.h | ||
| 11000 | index 7d2e623..52e2ae7 100644 | ||
| 11001 | --- a/arch/powerpc/include/asm/dcr-native.h | ||
| 11002 | +++ b/arch/powerpc/include/asm/dcr-native.h | ||
| 11003 | @@ -50,15 +50,35 @@ extern unsigned int __mfdcr(unsigned int reg); | ||
| 11004 | static inline unsigned int mfdcrx(unsigned int reg) | ||
| 11005 | { | ||
| 11006 | unsigned int ret; | ||
| 11007 | - asm volatile(".long 0x7c000206 | (%0 << 21) | (%1 << 16)" | ||
| 11008 | + asm volatile( | ||
| 11009 | +#ifdef CONFIG_PPC_47x | ||
| 11010 | + /* | ||
| 11011 | + * Workaround: move reg to an spr prior to mfdcrx instruction | ||
| 11012 | + */ | ||
| 11013 | + /* __stringify(BEGIN_FTR_SECTION) */ | ||
| 11014 | + "mtspr "__stringify(SPRN_SPRG_WSCRATCH_CRIT)",%1;" | ||
| 11015 | + /* __stringify(END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1)) */ | ||
| 11016 | +#endif | ||
| 11017 | + ".long 0x7c000206 | (%0 << 21) | (%1 << 16)" | ||
| 11018 | : "=r" (ret) : "r" (reg)); | ||
| 11019 | return ret; | ||
| 11020 | } | ||
| 11021 | |||
| 11022 | static inline void mtdcrx(unsigned int reg, unsigned int val) | ||
| 11023 | { | ||
| 11024 | - asm volatile(".long 0x7c000306 | (%0 << 21) | (%1 << 16)" | ||
| 11025 | - : : "r" (val), "r" (reg)); | ||
| 11026 | + asm volatile( | ||
| 11027 | +#ifdef CONFIG_PPC_47x | ||
| 11028 | + /* | ||
| 11029 | + * Workaround: move reg to an spr prior to mtdcrx instruction. | ||
| 11030 | + * (Would love to get the FTR_SECTION macros working for | ||
| 11031 | + * inlined assembler -- shaggy) | ||
| 11032 | + */ | ||
| 11033 | + /* __stringify(BEGIN_FTR_SECTION) */ | ||
| 11034 | + "mtspr "__stringify(SPRN_SPRG_WSCRATCH_CRIT)",%1;" | ||
| 11035 | + /* __stringify(END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1)) */ | ||
| 11036 | +#endif | ||
| 11037 | + ".long 0x7c000306 | (%0 << 21) | (%1 << 16)" | ||
| 11038 | + : : "r" (val), "r" (reg)); | ||
| 11039 | } | ||
| 11040 | |||
| 11041 | #define mfdcr(rn) \ | ||
| 11042 | diff --git a/arch/powerpc/include/asm/lsi.h b/arch/powerpc/include/asm/lsi.h | ||
| 11043 | new file mode 100644 | ||
| 11044 | index 0000000..c2a3d44 | ||
| 11045 | --- /dev/null | ||
| 11046 | +++ b/arch/powerpc/include/asm/lsi.h | ||
| 11047 | @@ -0,0 +1,6 @@ | ||
| 11048 | +#ifndef __ASM_LSI_H | ||
| 11049 | +#define __ASM_LSI_H | ||
| 11050 | + | ||
| 11051 | +extern int acp_clock_get(int, unsigned long *); | ||
| 11052 | + | ||
| 11053 | +#endif | ||
| 11054 | diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h | ||
| 11055 | index df18989..8cc514e 100644 | ||
| 11056 | --- a/arch/powerpc/include/asm/mpic.h | ||
| 11057 | +++ b/arch/powerpc/include/asm/mpic.h | ||
| 11058 | @@ -323,6 +323,8 @@ struct mpic | ||
| 11059 | #ifdef CONFIG_PM | ||
| 11060 | struct mpic_irq_save *save_data; | ||
| 11061 | #endif | ||
| 11062 | + | ||
| 11063 | + int cpu; | ||
| 11064 | }; | ||
| 11065 | |||
| 11066 | /* | ||
| 11067 | diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h | ||
| 11068 | index e472659..25e15a9 100644 | ||
| 11069 | --- a/arch/powerpc/include/asm/ppc-opcode.h | ||
| 11070 | +++ b/arch/powerpc/include/asm/ppc-opcode.h | ||
| 11071 | @@ -19,6 +19,10 @@ | ||
| 11072 | #define PPC_INST_DCBA 0x7c0005ec | ||
| 11073 | #define PPC_INST_DCBA_MASK 0xfc0007fe | ||
| 11074 | #define PPC_INST_DCBAL 0x7c2005ec | ||
| 11075 | +#define PPC_INST_DCBF 0x7c0000ac | ||
| 11076 | +#define PPC_INST_DCBF_MASK 0xfc0007fe | ||
| 11077 | +#define PPC_INST_DCBZ 0x7c0007ec | ||
| 11078 | +#define PPC_INST_DCBZ_MASK 0xfc0007fe | ||
| 11079 | #define PPC_INST_DCBZL 0x7c2007ec | ||
| 11080 | #define PPC_INST_ISEL 0x7c00001e | ||
| 11081 | #define PPC_INST_ISEL_MASK 0xfc00003e | ||
| 11082 | diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h | ||
| 11083 | index c5cae0d..a1dcdb3 100644 | ||
| 11084 | --- a/arch/powerpc/include/asm/reg.h | ||
| 11085 | +++ b/arch/powerpc/include/asm/reg.h | ||
| 11086 | @@ -933,7 +933,8 @@ | ||
| 11087 | #define PVR_403GC 0x00200200 | ||
| 11088 | #define PVR_403GCX 0x00201400 | ||
| 11089 | #define PVR_405GP 0x40110000 | ||
| 11090 | -#define PVR_476 0x11a52000 | ||
| 11091 | +#define PVR_476 0x00050000 | ||
| 11092 | +#define PVR_476X2 0x11b22080 | ||
| 11093 | #define PVR_STB03XXX 0x40310000 | ||
| 11094 | #define PVR_NP405H 0x41410000 | ||
| 11095 | #define PVR_NP405L 0x41610000 | ||
| 11096 | diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h | ||
| 11097 | index 0f0ad9f..85aaed6 100644 | ||
| 11098 | --- a/arch/powerpc/include/asm/reg_booke.h | ||
| 11099 | +++ b/arch/powerpc/include/asm/reg_booke.h | ||
| 11100 | @@ -307,6 +307,8 @@ | ||
| 11101 | #define ESR_IMCN 0x40000000 /* Instr. Machine Check - Non-config */ | ||
| 11102 | #define ESR_IMCB 0x20000000 /* Instr. Machine Check - Bus error */ | ||
| 11103 | #define ESR_IMCT 0x10000000 /* Instr. Machine Check - Timeout */ | ||
| 11104 | +#define ESR_POT1 0x20000000 /* 476 - IOCR1 trap */ | ||
| 11105 | +#define ESR_POT2 0x10000000 /* 476 - IOCR2 trap */ | ||
| 11106 | #define ESR_PIL 0x08000000 /* Program Exception - Illegal */ | ||
| 11107 | #define ESR_PPR 0x04000000 /* Program Exception - Privileged */ | ||
| 11108 | #define ESR_PTR 0x02000000 /* Program Exception - Trap */ | ||
| 11109 | @@ -658,6 +660,14 @@ | ||
| 11110 | #define MMUBE1_VBE3 0x00000004 | ||
| 11111 | #define MMUBE1_VBE4 0x00000002 | ||
| 11112 | #define MMUBE1_VBE5 0x00000001 | ||
| 11113 | +#define SPRN_IOCCR 860 | ||
| 11114 | +#define IOCCR_IOCR1EN 0x80000000 | ||
| 11115 | +#define IOCCR_IOCR1M 0x40000000 | ||
| 11116 | +#define IOCCR_IOCR2EN 0x20000000 | ||
| 11117 | +#define IOCCR_IOCR2M 0x10000000 | ||
| 11118 | +#define SPRN_IOCR1 861 | ||
| 11119 | +#define SPRN_IOCR2 862 | ||
| 11120 | + | ||
| 11121 | |||
| 11122 | #endif /* __ASM_POWERPC_REG_BOOKE_H__ */ | ||
| 11123 | #endif /* __KERNEL__ */ | ||
| 11124 | diff --git a/arch/powerpc/include/asm/spinlock.h b/arch/powerpc/include/asm/spinlock.h | ||
| 11125 | index f9611bd..3d783e6 100644 | ||
| 11126 | --- a/arch/powerpc/include/asm/spinlock.h | ||
| 11127 | +++ b/arch/powerpc/include/asm/spinlock.h | ||
| 11128 | @@ -109,16 +109,14 @@ extern void __rw_yield(arch_rwlock_t *lock); | ||
| 11129 | static inline void arch_spin_lock(arch_spinlock_t *lock) | ||
| 11130 | { | ||
| 11131 | CLEAR_IO_SYNC; | ||
| 11132 | - while (1) { | ||
| 11133 | - if (likely(__arch_spin_trylock(lock) == 0)) | ||
| 11134 | - break; | ||
| 11135 | - do { | ||
| 11136 | - HMT_low(); | ||
| 11137 | - if (SHARED_PROCESSOR) | ||
| 11138 | - __spin_yield(lock); | ||
| 11139 | - } while (unlikely(lock->slock != 0)); | ||
| 11140 | - HMT_medium(); | ||
| 11141 | - } | ||
| 11142 | + if (likely(__arch_spin_trylock(lock) == 0)) | ||
| 11143 | + return; | ||
| 11144 | + do { | ||
| 11145 | + HMT_low(); | ||
| 11146 | + if (SHARED_PROCESSOR) | ||
| 11147 | + __spin_yield(lock); | ||
| 11148 | + } while (unlikely(__arch_spin_trylock(lock) != 0)); | ||
| 11149 | + HMT_medium(); | ||
| 11150 | } | ||
| 11151 | |||
| 11152 | static inline | ||
| 11153 | @@ -132,11 +130,9 @@ void arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long flags) | ||
| 11154 | break; | ||
| 11155 | local_save_flags(flags_dis); | ||
| 11156 | local_irq_restore(flags); | ||
| 11157 | - do { | ||
| 11158 | - HMT_low(); | ||
| 11159 | - if (SHARED_PROCESSOR) | ||
| 11160 | - __spin_yield(lock); | ||
| 11161 | - } while (unlikely(lock->slock != 0)); | ||
| 11162 | + HMT_low(); | ||
| 11163 | + if (SHARED_PROCESSOR) | ||
| 11164 | + __spin_yield(lock); | ||
| 11165 | HMT_medium(); | ||
| 11166 | local_irq_restore(flags_dis); | ||
| 11167 | } | ||
| 11168 | @@ -229,28 +225,20 @@ static inline long __arch_write_trylock(arch_rwlock_t *rw) | ||
| 11169 | |||
| 11170 | static inline void arch_read_lock(arch_rwlock_t *rw) | ||
| 11171 | { | ||
| 11172 | - while (1) { | ||
| 11173 | - if (likely(__arch_read_trylock(rw) > 0)) | ||
| 11174 | - break; | ||
| 11175 | - do { | ||
| 11176 | - HMT_low(); | ||
| 11177 | - if (SHARED_PROCESSOR) | ||
| 11178 | - __rw_yield(rw); | ||
| 11179 | - } while (unlikely(rw->lock < 0)); | ||
| 11180 | + while (unlikely(__arch_read_trylock(rw) <= 0)) { | ||
| 11181 | + HMT_low(); | ||
| 11182 | + if (SHARED_PROCESSOR) | ||
| 11183 | + __rw_yield(rw); | ||
| 11184 | HMT_medium(); | ||
| 11185 | } | ||
| 11186 | } | ||
| 11187 | |||
| 11188 | static inline void arch_write_lock(arch_rwlock_t *rw) | ||
| 11189 | { | ||
| 11190 | - while (1) { | ||
| 11191 | - if (likely(__arch_write_trylock(rw) == 0)) | ||
| 11192 | - break; | ||
| 11193 | - do { | ||
| 11194 | - HMT_low(); | ||
| 11195 | - if (SHARED_PROCESSOR) | ||
| 11196 | - __rw_yield(rw); | ||
| 11197 | - } while (unlikely(rw->lock != 0)); | ||
| 11198 | + while (unlikely(__arch_write_trylock(rw) != 0)) { | ||
| 11199 | + HMT_low(); | ||
| 11200 | + if (SHARED_PROCESSOR) | ||
| 11201 | + __rw_yield(rw); | ||
| 11202 | HMT_medium(); | ||
| 11203 | } | ||
| 11204 | } | ||
| 11205 | diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c | ||
| 11206 | index 9fb9332..7096cc1 100644 | ||
| 11207 | --- a/arch/powerpc/kernel/cputable.c | ||
| 11208 | +++ b/arch/powerpc/kernel/cputable.c | ||
| 11209 | @@ -8,6 +8,8 @@ | ||
| 11210 | * modify it under the terms of the GNU General Public License | ||
| 11211 | * as published by the Free Software Foundation; either version | ||
| 11212 | * 2 of the License, or (at your option) any later version. | ||
| 11213 | + * | ||
| 11214 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 11215 | */ | ||
| 11216 | |||
| 11217 | #include <linux/string.h> | ||
| 11218 | @@ -1816,9 +1818,35 @@ static struct cpu_spec __initdata cpu_specs[] = { | ||
| 11219 | .machine_check = machine_check_440A, | ||
| 11220 | .platform = "ppc440", | ||
| 11221 | }, | ||
| 11222 | + { /* 476 DD1 core - needs DD1.1 feature as well */ | ||
| 11223 | + .pvr_mask = 0x800fffff, | ||
| 11224 | + .pvr_value = 0x11a50000, | ||
| 11225 | + .cpu_name = "476 DD1", | ||
| 11226 | + .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD1 | | ||
| 11227 | + CPU_FTR_476_DD1_1 | CPU_FTR_FPU_UNAVAILABLE, | ||
| 11228 | + .cpu_user_features = COMMON_USER_BOOKE, | ||
| 11229 | + .mmu_features = MMU_FTR_TYPE_47x, | ||
| 11230 | + .icache_bsize = 32, | ||
| 11231 | + .dcache_bsize = 128, | ||
| 11232 | + .machine_check = machine_check_47x, | ||
| 11233 | + .platform = "ppc470", | ||
| 11234 | + }, | ||
| 11235 | + { /* 476 DD1.1 core */ | ||
| 11236 | + .pvr_mask = 0x800fffff, | ||
| 11237 | + .pvr_value = 0x00052040, | ||
| 11238 | + .cpu_name = "476", | ||
| 11239 | + .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD1_1 | | ||
| 11240 | + CPU_FTR_FPU_UNAVAILABLE, | ||
| 11241 | + .cpu_user_features = COMMON_USER_BOOKE, | ||
| 11242 | + .mmu_features = MMU_FTR_TYPE_47x, | ||
| 11243 | + .icache_bsize = 32, | ||
| 11244 | + .dcache_bsize = 128, | ||
| 11245 | + .machine_check = machine_check_47x, | ||
| 11246 | + .platform = "ppc470", | ||
| 11247 | + }, | ||
| 11248 | { /* 476 DD2 core */ | ||
| 11249 | - .pvr_mask = 0xffffffff, | ||
| 11250 | - .pvr_value = 0x11a52080, | ||
| 11251 | + .pvr_mask = 0x800fffff, | ||
| 11252 | + .pvr_value = 0x00052080, | ||
| 11253 | .cpu_name = "476", | ||
| 11254 | .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2, | ||
| 11255 | .cpu_user_features = COMMON_USER_BOOKE | | ||
| 11256 | @@ -1833,7 +1861,7 @@ static struct cpu_spec __initdata cpu_specs[] = { | ||
| 11257 | { /* 476 iss */ | ||
| 11258 | .pvr_mask = 0xffff0000, | ||
| 11259 | .pvr_value = 0x00050000, | ||
| 11260 | - .cpu_name = "476", | ||
| 11261 | + .cpu_name = "476 ISS", | ||
| 11262 | .cpu_features = CPU_FTRS_47X, | ||
| 11263 | .cpu_user_features = COMMON_USER_BOOKE | | ||
| 11264 | PPC_FEATURE_HAS_FPU, | ||
| 11265 | diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S | ||
| 11266 | index 56212bc..49e40c5 100644 | ||
| 11267 | --- a/arch/powerpc/kernel/entry_32.S | ||
| 11268 | +++ b/arch/powerpc/kernel/entry_32.S | ||
| 11269 | @@ -143,6 +143,12 @@ transfer_to_handler: | ||
| 11270 | addi r2,r12,-THREAD | ||
| 11271 | tovirt(r2,r2) /* set r2 to current */ | ||
| 11272 | beq 2f /* if from user, fix up THREAD.regs */ | ||
| 11273 | +#ifdef CONFIG_PPC_47x | ||
| 11274 | +BEGIN_FTR_SECTION | ||
| 11275 | + li r11,0 | ||
| 11276 | + mtspr SPRN_IOCCR,r11 | ||
| 11277 | +END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 11278 | +#endif /* CONFIG_PPC_47x */ | ||
| 11279 | addi r11,r1,STACK_FRAME_OVERHEAD | ||
| 11280 | stw r11,PT_REGS(r12) | ||
| 11281 | #if defined(CONFIG_40x) || defined(CONFIG_BOOKE) | ||
| 11282 | @@ -281,6 +287,12 @@ stack_ovf: | ||
| 11283 | 0: | ||
| 11284 | |||
| 11285 | _GLOBAL(DoSyscall) | ||
| 11286 | +#ifdef CONFIG_PPC_47x | ||
| 11287 | +BEGIN_FTR_SECTION | ||
| 11288 | + li r11,0 | ||
| 11289 | + mtspr SPRN_IOCCR,r11 | ||
| 11290 | +END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 11291 | +#endif /* CONFIG_PPC_47x */ | ||
| 11292 | stw r3,ORIG_GPR3(r1) | ||
| 11293 | li r12,0 | ||
| 11294 | stw r12,RESULT(r1) | ||
| 11295 | @@ -382,6 +394,16 @@ BEGIN_MMU_FTR_SECTION | ||
| 11296 | 1: | ||
| 11297 | END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_47x) | ||
| 11298 | #endif /* CONFIG_44x */ | ||
| 11299 | +#ifdef CONFIG_PPC_47x | ||
| 11300 | +BEGIN_FTR_SECTION | ||
| 11301 | + lwz r7,_MSR(r1) | ||
| 11302 | + andi. r5,r7,MSR_PR | ||
| 11303 | + beq 11f | ||
| 11304 | + lis r4,(IOCCR_IOCR1EN|IOCCR_IOCR2EN)@h | ||
| 11305 | + mtspr SPRN_IOCCR,r4 | ||
| 11306 | +11: | ||
| 11307 | +END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 11308 | +#endif /* CONFIG_PPC_47x */ | ||
| 11309 | BEGIN_FTR_SECTION | ||
| 11310 | lwarx r7,0,r1 | ||
| 11311 | END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX) | ||
| 11312 | @@ -717,7 +739,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_SPE) | ||
| 11313 | fast_exception_return: | ||
| 11314 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE)) | ||
| 11315 | andi. r10,r9,MSR_RI /* check for recoverable interrupt */ | ||
| 11316 | - beq 1f /* if not, we've got problems */ | ||
| 11317 | + beq try_recov_exception /* if not, we've got problems */ | ||
| 11318 | #endif | ||
| 11319 | |||
| 11320 | 2: REST_4GPRS(3, r11) | ||
| 11321 | @@ -737,7 +759,8 @@ fast_exception_return: | ||
| 11322 | |||
| 11323 | #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE)) | ||
| 11324 | /* check if the exception happened in a restartable section */ | ||
| 11325 | -1: lis r3,exc_exit_restart_end@ha | ||
| 11326 | +try_recov_exception: | ||
| 11327 | + lis r3,exc_exit_restart_end@ha | ||
| 11328 | addi r3,r3,exc_exit_restart_end@l | ||
| 11329 | cmplw r12,r3 | ||
| 11330 | bge 3f | ||
| 11331 | @@ -811,6 +834,14 @@ restore_user: | ||
| 11332 | bnel- load_dbcr0 | ||
| 11333 | #endif | ||
| 11334 | |||
| 11335 | +#ifdef CONFIG_PPC_47x | ||
| 11336 | +BEGIN_FTR_SECTION | ||
| 11337 | + lis r0,(IOCCR_IOCR1EN|IOCCR_IOCR2EN)@h | ||
| 11338 | + mtspr SPRN_IOCCR,r0 | ||
| 11339 | +1: | ||
| 11340 | +END_FTR_SECTION_IFSET(CPU_FTR_476_DD1_1) | ||
| 11341 | +#endif /* CONFIG_PPC_47x */ | ||
| 11342 | + | ||
| 11343 | #ifdef CONFIG_PREEMPT | ||
| 11344 | b restore | ||
| 11345 | |||
| 11346 | diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h | ||
| 11347 | index a0bf158..c8e38c8 100644 | ||
| 11348 | --- a/arch/powerpc/kernel/head_booke.h | ||
| 11349 | +++ b/arch/powerpc/kernel/head_booke.h | ||
| 11350 | @@ -164,7 +164,8 @@ | ||
| 11351 | */ | ||
| 11352 | #define START_EXCEPTION(label) \ | ||
| 11353 | .align 5; \ | ||
| 11354 | -label: | ||
| 11355 | +label: \ | ||
| 11356 | + PPC476_ERR_ISYNC() | ||
| 11357 | |||
| 11358 | #define FINISH_EXCEPTION(func) \ | ||
| 11359 | bl transfer_to_handler_full; \ | ||
| 11360 | @@ -173,12 +174,14 @@ label: | ||
| 11361 | |||
| 11362 | #define EXCEPTION(n, label, hdlr, xfer) \ | ||
| 11363 | START_EXCEPTION(label); \ | ||
| 11364 | + PPC476_ERR_DCI(); \ | ||
| 11365 | NORMAL_EXCEPTION_PROLOG; \ | ||
| 11366 | addi r3,r1,STACK_FRAME_OVERHEAD; \ | ||
| 11367 | xfer(n, hdlr) | ||
| 11368 | |||
| 11369 | #define CRITICAL_EXCEPTION(n, label, hdlr) \ | ||
| 11370 | START_EXCEPTION(label); \ | ||
| 11371 | + PPC476_ERR_DCI(); \ | ||
| 11372 | CRITICAL_EXCEPTION_PROLOG; \ | ||
| 11373 | addi r3,r1,STACK_FRAME_OVERHEAD; \ | ||
| 11374 | EXC_XFER_TEMPLATE(hdlr, n+2, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \ | ||
| 11375 | @@ -378,6 +381,7 @@ label: | ||
| 11376 | |||
| 11377 | #define DECREMENTER_EXCEPTION \ | ||
| 11378 | START_EXCEPTION(Decrementer) \ | ||
| 11379 | + PPC476_ERR_DCI(); \ | ||
| 11380 | NORMAL_EXCEPTION_PROLOG; \ | ||
| 11381 | lis r0,TSR_DIS@h; /* Setup the DEC interrupt mask */ \ | ||
| 11382 | mtspr SPRN_TSR,r0; /* Clear the DEC interrupt */ \ | ||
| 11383 | diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S | ||
| 11384 | index 998a100..88c1793 100644 | ||
| 11385 | --- a/arch/powerpc/kernel/misc_32.S | ||
| 11386 | +++ b/arch/powerpc/kernel/misc_32.S | ||
| 11387 | @@ -392,7 +392,10 @@ _GLOBAL(flush_dcache_range) | ||
| 11388 | beqlr | ||
| 11389 | mtctr r4 | ||
| 11390 | |||
| 11391 | -1: dcbf 0,r3 | ||
| 11392 | +1: PPC476_ERR_DCBx() | ||
| 11393 | + dcbf 0,r3 | ||
| 11394 | + PPC476_ERR_DCBx() | ||
| 11395 | + | ||
| 11396 | addi r3,r3,L1_CACHE_BYTES | ||
| 11397 | bdnz 1b | ||
| 11398 | sync /* wait for dcbst's to get to ram */ | ||
| 11399 | @@ -506,7 +509,9 @@ _GLOBAL(clear_pages) | ||
| 11400 | li r0,PAGE_SIZE/L1_CACHE_BYTES | ||
| 11401 | slw r0,r0,r4 | ||
| 11402 | mtctr r0 | ||
| 11403 | -1: dcbz 0,r3 | ||
| 11404 | +1: PPC476_ERR_DCBx() | ||
| 11405 | + dcbz 0,r3 | ||
| 11406 | + PPC476_ERR_DCBx() | ||
| 11407 | addi r3,r3,L1_CACHE_BYTES | ||
| 11408 | bdnz 1b | ||
| 11409 | blr | ||
| 11410 | @@ -550,7 +555,9 @@ _GLOBAL(copy_page) | ||
| 11411 | mtctr r0 | ||
| 11412 | 1: | ||
| 11413 | dcbt r11,r4 | ||
| 11414 | + PPC476_ERR_DCBx() | ||
| 11415 | dcbz r5,r3 | ||
| 11416 | + PPC476_ERR_DCBx() | ||
| 11417 | COPY_16_BYTES | ||
| 11418 | #if L1_CACHE_BYTES >= 32 | ||
| 11419 | COPY_16_BYTES | ||
| 11420 | @@ -837,3 +844,25 @@ relocate_new_kernel_end: | ||
| 11421 | relocate_new_kernel_size: | ||
| 11422 | .long relocate_new_kernel_end - relocate_new_kernel | ||
| 11423 | #endif | ||
| 11424 | + | ||
| 11425 | +#ifdef CONFIG_PPC_47x | ||
| 11426 | +_GLOBAL(__dcbf) | ||
| 11427 | + lwsync | ||
| 11428 | +1: dcbf 0,r3 | ||
| 11429 | + lwsync | ||
| 11430 | + li r3,0 | ||
| 11431 | + blr | ||
| 11432 | +_GLOBAL(__dcbz) | ||
| 11433 | + lwsync | ||
| 11434 | +2: dcbz 0,r3 | ||
| 11435 | + lwsync | ||
| 11436 | + li r3,0 | ||
| 11437 | + blr | ||
| 11438 | +3: li r3,-EFAULT | ||
| 11439 | + blr | ||
| 11440 | + .section __ex_table,"a" | ||
| 11441 | + .align 2 | ||
| 11442 | + .long 1b,3b | ||
| 11443 | + .long 2b,3b | ||
| 11444 | + .text | ||
| 11445 | +#endif /* CONFIG_PPC_47x */ | ||
| 11446 | diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S | ||
| 11447 | index e89df59..6238a0d 100644 | ||
| 11448 | --- a/arch/powerpc/kernel/misc_64.S | ||
| 11449 | +++ b/arch/powerpc/kernel/misc_64.S | ||
| 11450 | @@ -631,3 +631,25 @@ _GLOBAL(kexec_sequence) | ||
| 11451 | li r5,0 | ||
| 11452 | blr /* image->start(physid, image->start, 0); */ | ||
| 11453 | #endif /* CONFIG_KEXEC */ | ||
| 11454 | + | ||
| 11455 | +#ifdef CONFIG_PPC_47x | ||
| 11456 | +_GLOBAL(__dcbf) | ||
| 11457 | + lwsync | ||
| 11458 | +1: dcbf 0,r3 | ||
| 11459 | + lwsync | ||
| 11460 | + li r3,0 | ||
| 11461 | + blr | ||
| 11462 | +_GLOBAL(__dcbz) | ||
| 11463 | + lwsync | ||
| 11464 | +2: dcbz 0,r3 | ||
| 11465 | + lwsync | ||
| 11466 | + li r3,0 | ||
| 11467 | + blr | ||
| 11468 | +3: li r3,-EFAULT | ||
| 11469 | + blr | ||
| 11470 | + .section __ex_table,"a" | ||
| 11471 | + .align 2 | ||
| 11472 | + .long 1b,3b | ||
| 11473 | + .long 2b,3b | ||
| 11474 | + .text | ||
| 11475 | +#endif /* CONFIG_PPC_47x */ | ||
| 11476 | diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c | ||
| 11477 | index 8ebc670..fae9a08 100644 | ||
| 11478 | --- a/arch/powerpc/kernel/smp.c | ||
| 11479 | +++ b/arch/powerpc/kernel/smp.c | ||
| 11480 | @@ -13,6 +13,8 @@ | ||
| 11481 | * modify it under the terms of the GNU General Public License | ||
| 11482 | * as published by the Free Software Foundation; either version | ||
| 11483 | * 2 of the License, or (at your option) any later version. | ||
| 11484 | + * | ||
| 11485 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 11486 | */ | ||
| 11487 | |||
| 11488 | #undef DEBUG | ||
| 11489 | @@ -357,6 +359,9 @@ int generic_cpu_disable(void) | ||
| 11490 | { | ||
| 11491 | unsigned int cpu = smp_processor_id(); | ||
| 11492 | |||
| 11493 | +#ifdef CONFIG_ACP | ||
| 11494 | + printk("%s:%d - cpu=%u\n", __FILE__, __LINE__, cpu); | ||
| 11495 | +#endif | ||
| 11496 | if (cpu == boot_cpuid) | ||
| 11497 | return -EBUSY; | ||
| 11498 | |||
| 11499 | @@ -493,9 +498,15 @@ int __cpuinit __cpu_up(unsigned int cpu) | ||
| 11500 | * use this value that I found through experimentation. | ||
| 11501 | * -- Cort | ||
| 11502 | */ | ||
| 11503 | - if (system_state < SYSTEM_RUNNING) | ||
| 11504 | + if (system_state < SYSTEM_RUNNING) { | ||
| 11505 | +#ifndef CONFIG_ACPISS | ||
| 11506 | for (c = 50000; c && !cpu_callin_map[cpu]; c--) | ||
| 11507 | udelay(100); | ||
| 11508 | +#else /* CONFIG_ACPISS */ | ||
| 11509 | + for (c = 500; c && !cpu_callin_map[cpu]; c--) | ||
| 11510 | + udelay(10); | ||
| 11511 | +#endif /* CONFIG_ACPISS */ | ||
| 11512 | + } | ||
| 11513 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 11514 | else | ||
| 11515 | /* | ||
| 11516 | diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c | ||
| 11517 | index 1a01414..f404950 100644 | ||
| 11518 | --- a/arch/powerpc/kernel/traps.c | ||
| 11519 | +++ b/arch/powerpc/kernel/traps.c | ||
| 11520 | @@ -866,6 +866,31 @@ static int emulate_isel(struct pt_regs *regs, u32 instword) | ||
| 11521 | return 0; | ||
| 11522 | } | ||
| 11523 | |||
| 11524 | +#ifdef CONFIG_PPC_47x | ||
| 11525 | + | ||
| 11526 | +extern int __dcbf(unsigned long ea); | ||
| 11527 | +extern int __dcbz(unsigned long ea); | ||
| 11528 | + | ||
| 11529 | +static int emulate_dcbf(struct pt_regs *regs, u32 instword) | ||
| 11530 | +{ | ||
| 11531 | + u8 rA = (instword >> 16) & 0x1f; | ||
| 11532 | + u8 rB = (instword >> 11) & 0x1f; | ||
| 11533 | + unsigned long ea = regs->gpr[rB] + ((rA == 0) ? 0 : regs->gpr[rA]); | ||
| 11534 | + | ||
| 11535 | + return __dcbf(ea); | ||
| 11536 | +} | ||
| 11537 | + | ||
| 11538 | +static int emulate_dcbz(struct pt_regs *regs, u32 instword) | ||
| 11539 | +{ | ||
| 11540 | + u8 rA = (instword >> 16) & 0x1f; | ||
| 11541 | + u8 rB = (instword >> 11) & 0x1f; | ||
| 11542 | + unsigned long ea = regs->gpr[rB] + ((rA == 0) ? 0 : regs->gpr[rA]); | ||
| 11543 | + | ||
| 11544 | + return __dcbz(ea); | ||
| 11545 | +} | ||
| 11546 | + | ||
| 11547 | +#endif /* CONFIG_PPC_47x */ | ||
| 11548 | + | ||
| 11549 | static int emulate_instruction(struct pt_regs *regs) | ||
| 11550 | { | ||
| 11551 | u32 instword; | ||
| 11552 | @@ -941,6 +966,18 @@ static int emulate_instruction(struct pt_regs *regs) | ||
| 11553 | } | ||
| 11554 | #endif | ||
| 11555 | |||
| 11556 | +#ifdef CONFIG_PPC_47x | ||
| 11557 | + /* Emulate dcbf instruction */ | ||
| 11558 | + if ((instword & PPC_INST_DCBF_MASK) == PPC_INST_DCBF) { | ||
| 11559 | + return emulate_dcbf(regs, instword); | ||
| 11560 | + } | ||
| 11561 | + | ||
| 11562 | + /* Emulate dcbz instruction */ | ||
| 11563 | + if ((instword & PPC_INST_DCBZ_MASK) == PPC_INST_DCBZ) { | ||
| 11564 | + return emulate_dcbz(regs, instword); | ||
| 11565 | + } | ||
| 11566 | +#endif /* CONFIG_47x */ | ||
| 11567 | + | ||
| 11568 | return -EINVAL; | ||
| 11569 | } | ||
| 11570 | |||
| 11571 | @@ -956,6 +993,14 @@ void __kprobes program_check_exception(struct pt_regs *regs) | ||
| 11572 | |||
| 11573 | /* We can now get here via a FP Unavailable exception if the core | ||
| 11574 | * has no FPU, in that case the reason flags will be 0 */ | ||
| 11575 | +#ifdef CONFIG_PPC_47x | ||
| 11576 | + /* Make IOC instruction traps look like illegal instructions | ||
| 11577 | + * so we hit the proper emulation code path | ||
| 11578 | + */ | ||
| 11579 | + if (mmu_has_feature(MMU_FTR_TYPE_47x) && | ||
| 11580 | + (reason & (ESR_POT1 | ESR_POT2))) | ||
| 11581 | + reason |= ESR_PIL; | ||
| 11582 | +#endif /* CONFIG_PPC_47x */ | ||
| 11583 | |||
| 11584 | if (reason & REASON_FP) { | ||
| 11585 | /* IEEE FP exception */ | ||
| 11586 | diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c | ||
| 11587 | index 23d65ab..2f5a3f4 100644 | ||
| 11588 | --- a/arch/powerpc/kernel/udbg.c | ||
| 11589 | +++ b/arch/powerpc/kernel/udbg.c | ||
| 11590 | @@ -7,6 +7,8 @@ | ||
| 11591 | * modify it under the terms of the GNU General Public License | ||
| 11592 | * as published by the Free Software Foundation; either version | ||
| 11593 | * 2 of the License, or (at your option) any later version. | ||
| 11594 | + * | ||
| 11595 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 11596 | */ | ||
| 11597 | |||
| 11598 | #include <stdarg.h> | ||
| 11599 | diff --git a/arch/powerpc/kernel/udbg_16550.c b/arch/powerpc/kernel/udbg_16550.c | ||
| 11600 | index 6837f83..9470841 100644 | ||
| 11601 | --- a/arch/powerpc/kernel/udbg_16550.c | ||
| 11602 | +++ b/arch/powerpc/kernel/udbg_16550.c | ||
| 11603 | @@ -3,11 +3,108 @@ | ||
| 11604 | * | ||
| 11605 | * Copyright (C) 2001-2005 PPC 64 Team, IBM Corp | ||
| 11606 | * | ||
| 11607 | - * This program is free software; you can redistribute it and/or | ||
| 11608 | - * modify it under the terms of the GNU General Public License | ||
| 11609 | - * as published by the Free Software Foundation; either version | ||
| 11610 | - * 2 of the License, or (at your option) any later version. | ||
| 11611 | + * This program is free software; you can redistribute it and/or | ||
| 11612 | + * modify it under the terms of the GNU General Public License | ||
| 11613 | + * as published by the Free Software Foundation; either version | ||
| 11614 | + * 2 of the License, or (at your option) any later version. | ||
| 11615 | + * | ||
| 11616 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 11617 | */ | ||
| 11618 | + | ||
| 11619 | +#if defined(CONFIG_ACP) && !defined(CONFIG_ACPISS) | ||
| 11620 | + | ||
| 11621 | +#include <asm/io.h> | ||
| 11622 | +#include <asm/udbg.h> | ||
| 11623 | + | ||
| 11624 | +/* | ||
| 11625 | + ====================================================================== | ||
| 11626 | + ====================================================================== | ||
| 11627 | + serial | ||
| 11628 | + ====================================================================== | ||
| 11629 | + ====================================================================== | ||
| 11630 | +*/ | ||
| 11631 | + | ||
| 11632 | +static void *uart_base; | ||
| 11633 | + | ||
| 11634 | +#define UART_DR 0x00 | ||
| 11635 | +#define UART_FR 0x18 | ||
| 11636 | +#define UART_IBRD 0x24 | ||
| 11637 | +#define UART_FBRD 0x28 | ||
| 11638 | +#define UART_LCR_H 0x2c | ||
| 11639 | +#define UART_CR 0x30 | ||
| 11640 | +#define UART_IFLS 0x34 | ||
| 11641 | +#define UART_IMSC 0x38 | ||
| 11642 | +#define UART_ECR 0x04 | ||
| 11643 | + | ||
| 11644 | +#define FR_RXFE 0x10 | ||
| 11645 | +#define FR_TXFF 0x20 | ||
| 11646 | + | ||
| 11647 | +#if defined(CONFIG_PPC_EARLY_DEBUG_44x) || defined(CONFIG_ACPISS) | ||
| 11648 | +static void | ||
| 11649 | +acp_putc(char c) | ||
| 11650 | +{ | ||
| 11651 | + while (0 != (in_le32(uart_base + UART_FR) & FR_TXFF)) | ||
| 11652 | + ; | ||
| 11653 | + | ||
| 11654 | + if ('\n' == c) { | ||
| 11655 | + out_le32(uart_base + UART_DR, '\r'); | ||
| 11656 | + while (0 != (in_le32(uart_base + UART_FR) & FR_TXFF)) | ||
| 11657 | + ; | ||
| 11658 | + } | ||
| 11659 | + | ||
| 11660 | + out_le32(uart_base + UART_DR, c); | ||
| 11661 | + | ||
| 11662 | + return; | ||
| 11663 | +} | ||
| 11664 | + | ||
| 11665 | +static int | ||
| 11666 | +acp_getc(void) | ||
| 11667 | +{ | ||
| 11668 | + while (0 != (in_le32(uart_base + UART_FR) & FR_RXFE)) | ||
| 11669 | + ; | ||
| 11670 | + return in_le32(uart_base + UART_DR); | ||
| 11671 | +} | ||
| 11672 | +#endif | ||
| 11673 | + | ||
| 11674 | +unsigned int | ||
| 11675 | +udbg_probe_uart_speed(void __iomem *comport, unsigned int clock) | ||
| 11676 | +{ | ||
| 11677 | + return 9600; | ||
| 11678 | +} | ||
| 11679 | + | ||
| 11680 | +void | ||
| 11681 | +udbg_init_uart(void __iomem *comport, unsigned int speed, unsigned int clock) | ||
| 11682 | +{ | ||
| 11683 | + out_le32(uart_base + UART_IFLS, 0); | ||
| 11684 | + out_le32(uart_base + UART_IMSC, 0x700); | ||
| 11685 | + out_le32(uart_base + UART_ECR, 0); | ||
| 11686 | + | ||
| 11687 | + return; | ||
| 11688 | +} | ||
| 11689 | + | ||
| 11690 | +void __init | ||
| 11691 | +udbg_init_44x_as1(void) | ||
| 11692 | +{ | ||
| 11693 | +#if defined(CONFIG_ACPISS) | ||
| 11694 | + uart_base = (void *)0xf0004000; | ||
| 11695 | + udbg_putc = acp_putc; | ||
| 11696 | + udbg_getc = acp_getc; | ||
| 11697 | +#elif defined(CONFIG_PPC_EARLY_DEBUG_44x) | ||
| 11698 | + unsigned long long uart_phys_address; | ||
| 11699 | + | ||
| 11700 | + uart_phys_address = | ||
| 11701 | + ((unsigned long long)CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH << 32) | | ||
| 11702 | + (unsigned long long)CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW; | ||
| 11703 | + uart_base = ioremap(uart_phys_address, 0x1000); | ||
| 11704 | + udbg_putc = acp_putc; | ||
| 11705 | + udbg_getc = acp_getc; | ||
| 11706 | +#endif | ||
| 11707 | + | ||
| 11708 | + return; | ||
| 11709 | +} | ||
| 11710 | + | ||
| 11711 | +#else | ||
| 11712 | + | ||
| 11713 | #include <linux/types.h> | ||
| 11714 | #include <asm/udbg.h> | ||
| 11715 | #include <asm/io.h> | ||
| 11716 | @@ -36,14 +133,14 @@ struct NS16550 { | ||
| 11717 | #define dlm ier | ||
| 11718 | #define dlab lcr | ||
| 11719 | |||
| 11720 | -#define LSR_DR 0x01 /* Data ready */ | ||
| 11721 | -#define LSR_OE 0x02 /* Overrun */ | ||
| 11722 | -#define LSR_PE 0x04 /* Parity error */ | ||
| 11723 | -#define LSR_FE 0x08 /* Framing error */ | ||
| 11724 | -#define LSR_BI 0x10 /* Break */ | ||
| 11725 | +#define LSR_DR 0x01 /* Data ready */ | ||
| 11726 | +#define LSR_OE 0x02 /* Overrun */ | ||
| 11727 | +#define LSR_PE 0x04 /* Parity error */ | ||
| 11728 | +#define LSR_FE 0x08 /* Framing error */ | ||
| 11729 | +#define LSR_BI 0x10 /* Break */ | ||
| 11730 | #define LSR_THRE 0x20 /* Xmit holding register empty */ | ||
| 11731 | #define LSR_TEMT 0x40 /* Xmitter empty */ | ||
| 11732 | -#define LSR_ERR 0x80 /* Error */ | ||
| 11733 | +#define LSR_ERR 0x80 /* Error */ | ||
| 11734 | |||
| 11735 | #define LCR_DLAB 0x80 | ||
| 11736 | |||
| 11737 | @@ -220,6 +317,17 @@ void udbg_init_pas_realmode(void) | ||
| 11738 | #ifdef CONFIG_PPC_EARLY_DEBUG_44x | ||
| 11739 | #include <platforms/44x/44x.h> | ||
| 11740 | |||
| 11741 | +static unsigned long udbg_44x_comport = PPC44x_EARLY_DEBUG_VIRTADDR; | ||
| 11742 | + | ||
| 11743 | +static int __init early_parse_comport(char *p) | ||
| 11744 | +{ | ||
| 11745 | + if (!p || !(*p)) | ||
| 11746 | + return 0; | ||
| 11747 | + udbg_44x_comport = simple_strtoul(p, 0, 16); | ||
| 11748 | + return 0; | ||
| 11749 | +} | ||
| 11750 | +early_param("uart_addr", early_parse_comport); | ||
| 11751 | + | ||
| 11752 | static void udbg_44x_as1_flush(void) | ||
| 11753 | { | ||
| 11754 | if (udbg_comport) { | ||
| 11755 | @@ -251,7 +359,7 @@ static int udbg_44x_as1_getc(void) | ||
| 11756 | void __init udbg_init_44x_as1(void) | ||
| 11757 | { | ||
| 11758 | udbg_comport = | ||
| 11759 | - (struct NS16550 __iomem *)PPC44x_EARLY_DEBUG_VIRTADDR; | ||
| 11760 | + (struct NS16550 __iomem *)udbg_44x_comport; | ||
| 11761 | |||
| 11762 | udbg_putc = udbg_44x_as1_putc; | ||
| 11763 | udbg_flush = udbg_44x_as1_flush; | ||
| 11764 | @@ -349,3 +457,5 @@ void __init udbg_init_wsp(void) | ||
| 11765 | udbg_getc_poll = udbg_wsp_getc_poll; | ||
| 11766 | } | ||
| 11767 | #endif /* CONFIG_PPC_EARLY_DEBUG_WSP */ | ||
| 11768 | + | ||
| 11769 | +#endif | ||
| 11770 | diff --git a/arch/powerpc/lib/copy_32.S b/arch/powerpc/lib/copy_32.S | ||
| 11771 | index 55f19f9..b47a0f6 100644 | ||
| 11772 | --- a/arch/powerpc/lib/copy_32.S | ||
| 11773 | +++ b/arch/powerpc/lib/copy_32.S | ||
| 11774 | @@ -12,6 +12,7 @@ | ||
| 11775 | #include <asm/cache.h> | ||
| 11776 | #include <asm/errno.h> | ||
| 11777 | #include <asm/ppc_asm.h> | ||
| 11778 | +#include <asm/cputable.h> | ||
| 11779 | |||
| 11780 | #define COPY_16_BYTES \ | ||
| 11781 | lwz r7,4(r4); \ | ||
| 11782 | @@ -98,7 +99,9 @@ _GLOBAL(cacheable_memzero) | ||
| 11783 | bdnz 4b | ||
| 11784 | 3: mtctr r9 | ||
| 11785 | li r7,4 | ||
| 11786 | -10: dcbz r7,r6 | ||
| 11787 | +10: PPC476_ERR_DCBx() | ||
| 11788 | + dcbz r7,r6 | ||
| 11789 | + PPC476_ERR_DCBx() | ||
| 11790 | addi r6,r6,CACHELINE_BYTES | ||
| 11791 | bdnz 10b | ||
| 11792 | clrlwi r5,r8,32-LG_CACHELINE_BYTES | ||
| 11793 | @@ -368,7 +371,9 @@ _GLOBAL(__copy_tofrom_user) | ||
| 11794 | mtctr r8 | ||
| 11795 | |||
| 11796 | 53: dcbt r3,r4 | ||
| 11797 | + PPC476_ERR_DCBx() | ||
| 11798 | 54: dcbz r11,r6 | ||
| 11799 | + PPC476_ERR_DCBx() | ||
| 11800 | .section __ex_table,"a" | ||
| 11801 | .align 2 | ||
| 11802 | .long 54b,105f | ||
| 11803 | diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c | ||
| 11804 | index 024acab..c16d796 100644 | ||
| 11805 | --- a/arch/powerpc/mm/44x_mmu.c | ||
| 11806 | +++ b/arch/powerpc/mm/44x_mmu.c | ||
| 11807 | @@ -78,11 +78,7 @@ static void __init ppc44x_pin_tlb(unsigned int virt, unsigned int phys) | ||
| 11808 | "tlbwe %1,%3,%5\n" | ||
| 11809 | "tlbwe %0,%3,%6\n" | ||
| 11810 | : | ||
| 11811 | -#ifdef CONFIG_PPC47x | ||
| 11812 | - : "r" (PPC47x_TLB2_S_RWX), | ||
| 11813 | -#else | ||
| 11814 | : "r" (PPC44x_TLB_SW | PPC44x_TLB_SR | PPC44x_TLB_SX | PPC44x_TLB_G), | ||
| 11815 | -#endif | ||
| 11816 | "r" (phys), | ||
| 11817 | "r" (virt | PPC44x_TLB_VALID | PPC44x_TLB_256M), | ||
| 11818 | "r" (entry), | ||
| 11819 | diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c | ||
| 11820 | index 5de0f25..960b9cc 100644 | ||
| 11821 | --- a/arch/powerpc/mm/init_32.c | ||
| 11822 | +++ b/arch/powerpc/mm/init_32.c | ||
| 11823 | @@ -141,6 +141,11 @@ void __init MMU_init(void) | ||
| 11824 | * entries, so we need to adjust lowmem to match the amount we can map | ||
| 11825 | * in the fixed entries */ | ||
| 11826 | adjust_total_lowmem(); | ||
| 11827 | +#elif CONFIG_PPC_47x && CONFIG_RELOCATABLE | ||
| 11828 | + /* | ||
| 11829 | + * FIXME: Probably not the safest calculation, but it works for now | ||
| 11830 | + */ | ||
| 11831 | +/* __initial_memory_limit_addr += memstart_addr; */ | ||
| 11832 | #endif /* CONFIG_FSL_BOOKE */ | ||
| 11833 | |||
| 11834 | if (total_lowmem > __max_low_memory) { | ||
| 11835 | diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig | ||
| 11836 | index e958b6f..e187e4a 100644 | ||
| 11837 | --- a/arch/powerpc/platforms/44x/Kconfig | ||
| 11838 | +++ b/arch/powerpc/platforms/44x/Kconfig | ||
| 11839 | @@ -197,6 +197,32 @@ config ICON | ||
| 11840 | help | ||
| 11841 | This option enables support for the AMCC PPC440SPe evaluation board. | ||
| 11842 | |||
| 11843 | +config ACP | ||
| 11844 | + bool "Support for LSI's ACP Platform" | ||
| 11845 | + depends on (44x || 40x) | ||
| 11846 | + select PPC4xx_PCI_EXPRESS | ||
| 11847 | + default n | ||
| 11848 | + select 440GP | ||
| 11849 | + select PPC_FPU | ||
| 11850 | + select HAS_RAPIDIO | ||
| 11851 | + | ||
| 11852 | +config ACPISS | ||
| 11853 | + bool "ACP on the ISS 4xx Simulator" | ||
| 11854 | + depends on ACP | ||
| 11855 | + default n | ||
| 11856 | + select OF_RTC | ||
| 11857 | + help | ||
| 11858 | + This option enables support for the ACP on the IBM ISS | ||
| 11859 | + simulation environment | ||
| 11860 | + | ||
| 11861 | +config ACP_X1V1 | ||
| 11862 | + bool "ACP, X1V1 Version" | ||
| 11863 | + depends on ACP | ||
| 11864 | + default n | ||
| 11865 | + select HAS_RAPIDIO | ||
| 11866 | + help | ||
| 11867 | + Workarounds for the X1V1 version of the ACP. | ||
| 11868 | + | ||
| 11869 | #config LUAN | ||
| 11870 | # bool "Luan" | ||
| 11871 | # depends on 44x | ||
| 11872 | diff --git a/arch/powerpc/platforms/44x/Makefile b/arch/powerpc/platforms/44x/Makefile | ||
| 11873 | index 553db60..d3388ed 100644 | ||
| 11874 | --- a/arch/powerpc/platforms/44x/Makefile | ||
| 11875 | +++ b/arch/powerpc/platforms/44x/Makefile | ||
| 11876 | @@ -10,3 +10,5 @@ obj-$(CONFIG_XILINX_VIRTEX_5_FXT) += virtex.o | ||
| 11877 | obj-$(CONFIG_XILINX_ML510) += virtex_ml510.o | ||
| 11878 | obj-$(CONFIG_ISS4xx) += iss4xx.o | ||
| 11879 | obj-$(CONFIG_CANYONLANDS)+= canyonlands.o | ||
| 11880 | +obj-$(CONFIG_ACPISS) += iss4xx.o | ||
| 11881 | +obj-$(CONFIG_ACP) += acpx1.o | ||
| 11882 | diff --git a/arch/powerpc/platforms/44x/acpx1.c b/arch/powerpc/platforms/44x/acpx1.c | ||
| 11883 | new file mode 100644 | ||
| 11884 | index 0000000..85d4059 | ||
| 11885 | --- /dev/null | ||
| 11886 | +++ b/arch/powerpc/platforms/44x/acpx1.c | ||
| 11887 | @@ -0,0 +1,182 @@ | ||
| 11888 | +/* | ||
| 11889 | + * PPC476 board specific routines | ||
| 11890 | + * | ||
| 11891 | + * Copyright 2009 Torez Smith, IBM Corporation. | ||
| 11892 | + * | ||
| 11893 | + * Based on earlier code: | ||
| 11894 | + * Matt Porter <mporter@kernel.crashing.org> | ||
| 11895 | + * Copyright 2002-2005 MontaVista Software Inc. | ||
| 11896 | + * | ||
| 11897 | + * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> | ||
| 11898 | + * Copyright (c) 2003-2005 Zultys Technologies | ||
| 11899 | + * | ||
| 11900 | + * Rewritten and ported to the merged powerpc tree: | ||
| 11901 | + * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation. | ||
| 11902 | + * | ||
| 11903 | + * This program is free software; you can redistribute it and/or modify it | ||
| 11904 | + * under the terms of the GNU General Public License as published by the | ||
| 11905 | + * Free Software Foundation; either version 2 of the License, or (at your | ||
| 11906 | + * option) any later version. | ||
| 11907 | + * | ||
| 11908 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 11909 | + */ | ||
| 11910 | + | ||
| 11911 | +#include <linux/init.h> | ||
| 11912 | +#include <linux/of_platform.h> | ||
| 11913 | +#include <linux/rtc.h> | ||
| 11914 | + | ||
| 11915 | +#include <asm/machdep.h> | ||
| 11916 | +#include <asm/prom.h> | ||
| 11917 | +#include <asm/udbg.h> | ||
| 11918 | +#include <asm/time.h> | ||
| 11919 | +#include <asm/uic.h> | ||
| 11920 | +#include <asm/ppc4xx.h> | ||
| 11921 | +#include <asm/mpic.h> | ||
| 11922 | +#include <asm/mmu.h> | ||
| 11923 | + | ||
| 11924 | +static __initdata struct of_device_id acpx14xx_of_bus[] = { | ||
| 11925 | + { .compatible = "ibm,plb4", }, | ||
| 11926 | + { .compatible = "ibm,plb6", }, | ||
| 11927 | + { .compatible = "ibm,opb", }, | ||
| 11928 | + { .compatible = "ibm,ebc", }, | ||
| 11929 | + { .compatible = "acp,rapidio-delta", }, | ||
| 11930 | + {}, | ||
| 11931 | +}; | ||
| 11932 | + | ||
| 11933 | +static __initdata struct of_device_id acp_rtc[] = { | ||
| 11934 | + { .compatible = "ds1743-nvram", }, | ||
| 11935 | + {} | ||
| 11936 | +}; | ||
| 11937 | + | ||
| 11938 | + | ||
| 11939 | +static int __init acpx14xx_device_probe(void) | ||
| 11940 | +{ | ||
| 11941 | + struct device_node *child; | ||
| 11942 | + | ||
| 11943 | + of_platform_bus_probe(NULL, acpx14xx_of_bus, NULL); | ||
| 11944 | + | ||
| 11945 | + for_each_child_of_node(of_find_node_by_path("/"), child) { | ||
| 11946 | + if (of_match_node(acp_rtc, child)) { | ||
| 11947 | + of_platform_device_create(child, "rtc", NULL); | ||
| 11948 | + } | ||
| 11949 | + } | ||
| 11950 | + | ||
| 11951 | + return 0; | ||
| 11952 | +} | ||
| 11953 | +machine_device_initcall(acpx14xx, acpx14xx_device_probe); | ||
| 11954 | + | ||
| 11955 | +/* We can have either UICs or MPICs */ | ||
| 11956 | +static void __init acpx14xx_init_irq(void) | ||
| 11957 | +{ | ||
| 11958 | + struct device_node *np; | ||
| 11959 | + | ||
| 11960 | + /* Find top level interrupt controller */ | ||
| 11961 | + for_each_node_with_property(np, "interrupt-controller") { | ||
| 11962 | + if (of_get_property(np, "interrupts", NULL) == NULL) | ||
| 11963 | + break; | ||
| 11964 | + } | ||
| 11965 | + if (np == NULL) | ||
| 11966 | + panic("Can't find top level interrupt controller"); | ||
| 11967 | + | ||
| 11968 | + /* Check type and do appropriate initialization */ | ||
| 11969 | + if (of_device_is_compatible(np, "chrp,open-pic")) { | ||
| 11970 | + /* The MPIC driver will get everything it needs from the | ||
| 11971 | + * device-tree, just pass 0 to all arguments | ||
| 11972 | + */ | ||
| 11973 | + struct mpic *mpic = | ||
| 11974 | + mpic_alloc(np, 0, MPIC_PRIMARY, 0, 0, " MPIC "); | ||
| 11975 | + BUG_ON(mpic == NULL); | ||
| 11976 | + mpic_init(mpic); | ||
| 11977 | + ppc_md.get_irq = mpic_get_irq; | ||
| 11978 | + } else | ||
| 11979 | + panic("Unrecognized top level interrupt controller"); | ||
| 11980 | +} | ||
| 11981 | + | ||
| 11982 | +#ifdef CONFIG_SMP | ||
| 11983 | +static void __cpuinit smp_acpx14xx_setup_cpu(int cpu) | ||
| 11984 | +{ | ||
| 11985 | + mpic_setup_this_cpu(); | ||
| 11986 | +} | ||
| 11987 | + | ||
| 11988 | +static int __cpuinit smp_acpx14xx_kick_cpu(int cpu) | ||
| 11989 | +{ | ||
| 11990 | + struct device_node *cpunode = of_get_cpu_node(cpu, NULL); | ||
| 11991 | + const u64 *spin_table_addr_prop; | ||
| 11992 | + u32 *spin_table; | ||
| 11993 | + extern void start_secondary_47x(void); | ||
| 11994 | + | ||
| 11995 | + BUG_ON(cpunode == NULL); | ||
| 11996 | + | ||
| 11997 | + /* Assume spin table. We could test for the enable-method in | ||
| 11998 | + * the device-tree but currently there's little point as it's | ||
| 11999 | + * our only supported method | ||
| 12000 | + */ | ||
| 12001 | + spin_table_addr_prop = | ||
| 12002 | + of_get_property(cpunode, "cpu-release-addr", NULL); | ||
| 12003 | + | ||
| 12004 | + if (spin_table_addr_prop == NULL) { | ||
| 12005 | + pr_err("CPU%d: Can't start, macpx1ing cpu-release-addr !\n", | ||
| 12006 | + cpu); | ||
| 12007 | + return -ENOSYS; | ||
| 12008 | + } | ||
| 12009 | + | ||
| 12010 | + /* Assume it's mapped as part of the linear mapping. This is a bit | ||
| 12011 | + * fishy but will work fine for now | ||
| 12012 | + */ | ||
| 12013 | + spin_table = (u32 *)__va(*spin_table_addr_prop); | ||
| 12014 | + pr_debug("CPU%d: Spin table mapped at %p\n", cpu, spin_table); | ||
| 12015 | + | ||
| 12016 | + spin_table[3] = cpu; | ||
| 12017 | + smp_wmb(); | ||
| 12018 | + spin_table[1] = __pa(start_secondary_47x); | ||
| 12019 | + mb(); | ||
| 12020 | + | ||
| 12021 | + return 0; | ||
| 12022 | +} | ||
| 12023 | + | ||
| 12024 | +static struct smp_ops_t acpx1_smp_ops = { | ||
| 12025 | + .probe = smp_mpic_probe, | ||
| 12026 | + .message_pass = smp_mpic_message_pass, | ||
| 12027 | + .setup_cpu = smp_acpx14xx_setup_cpu, | ||
| 12028 | + .kick_cpu = smp_acpx14xx_kick_cpu, | ||
| 12029 | + .give_timebase = smp_generic_give_timebase, | ||
| 12030 | + .take_timebase = smp_generic_take_timebase, | ||
| 12031 | +}; | ||
| 12032 | + | ||
| 12033 | +static void __init acpx14xx_smp_init(void) | ||
| 12034 | +{ | ||
| 12035 | + if (mmu_has_feature(MMU_FTR_TYPE_47x)) | ||
| 12036 | + smp_ops = &acpx1_smp_ops; | ||
| 12037 | +} | ||
| 12038 | + | ||
| 12039 | +#else /* CONFIG_SMP */ | ||
| 12040 | +static void __init acpx14xx_smp_init(void) { } | ||
| 12041 | +#endif /* CONFIG_SMP */ | ||
| 12042 | + | ||
| 12043 | +static void __init acpx14xx_setup_arch(void) | ||
| 12044 | +{ | ||
| 12045 | + acpx14xx_smp_init(); | ||
| 12046 | +} | ||
| 12047 | + | ||
| 12048 | +/* | ||
| 12049 | + * Called very early, MMU is off, device-tree isn't unflattened | ||
| 12050 | + */ | ||
| 12051 | +static int __init acpx14xx_probe(void) | ||
| 12052 | +{ | ||
| 12053 | + unsigned long root = of_get_flat_dt_root(); | ||
| 12054 | + | ||
| 12055 | + if (!of_flat_dt_is_compatible(root, "ibm,acpx1-4xx")) | ||
| 12056 | + return 0; | ||
| 12057 | + | ||
| 12058 | + return 1; | ||
| 12059 | +} | ||
| 12060 | + | ||
| 12061 | +define_machine(acpx14xx) { | ||
| 12062 | + .name = "ACPX1", | ||
| 12063 | + .probe = acpx14xx_probe, | ||
| 12064 | + .progress = udbg_progress, | ||
| 12065 | + .init_IRQ = acpx14xx_init_irq, | ||
| 12066 | + .setup_arch = acpx14xx_setup_arch, | ||
| 12067 | + .restart = ppc4xx_reset_system, | ||
| 12068 | + .calibrate_decr = generic_calibrate_decr, | ||
| 12069 | +}; | ||
| 12070 | diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c | ||
| 12071 | index 58d7a53..862bf7b 100644 | ||
| 12072 | --- a/arch/powerpc/sysdev/mpic.c | ||
| 12073 | +++ b/arch/powerpc/sysdev/mpic.c | ||
| 12074 | @@ -155,7 +155,7 @@ static inline unsigned int mpic_processor_id(struct mpic *mpic) | ||
| 12075 | unsigned int cpu = 0; | ||
| 12076 | |||
| 12077 | if (mpic->flags & MPIC_PRIMARY) | ||
| 12078 | - cpu = hard_smp_processor_id(); | ||
| 12079 | + cpu = raw_smp_processor_id(); | ||
| 12080 | |||
| 12081 | return cpu; | ||
| 12082 | } | ||
| 12083 | @@ -340,6 +340,15 @@ static inline void mpic_map(struct mpic *mpic, struct device_node *node, | ||
| 12084 | #define mpic_map(m,n,p,b,o,s) _mpic_map_mmio(m,p,b,o,s) | ||
| 12085 | #endif /* !CONFIG_PPC_DCR */ | ||
| 12086 | |||
| 12087 | +static inline void mpic_init_vector(struct mpic *mpic, int source) | ||
| 12088 | +{ | ||
| 12089 | + /* start with vector = source number, and masked */ | ||
| 12090 | + u32 vecpri = MPIC_VECPRI_MASK | source | (8 << MPIC_VECPRI_PRIORITY_SHIFT); | ||
| 12091 | + | ||
| 12092 | + /* init hw */ | ||
| 12093 | + mpic_irq_write(source, MPIC_INFO(IRQ_VECTOR_PRI), vecpri); | ||
| 12094 | + mpic_irq_write(source, MPIC_INFO(IRQ_DESTINATION), 1 << mpic->cpu); | ||
| 12095 | +} | ||
| 12096 | |||
| 12097 | |||
| 12098 | /* Check if we have one of those nice broken MPICs with a flipped endian on | ||
| 12099 | @@ -701,6 +710,14 @@ static inline void mpic_eoi(struct mpic *mpic) | ||
| 12100 | * Linux descriptor level callbacks | ||
| 12101 | */ | ||
| 12102 | |||
| 12103 | +/* Determine if the linux irq is a timer interrupt */ | ||
| 12104 | +static unsigned int mpic_is_timer_interrupt(struct mpic *mpic, unsigned int irq) | ||
| 12105 | +{ | ||
| 12106 | + unsigned int src = virq_to_hw(irq); | ||
| 12107 | + | ||
| 12108 | + return (src >= mpic->timer_vecs[0] && src <= mpic->timer_vecs[3]); | ||
| 12109 | +} | ||
| 12110 | + | ||
| 12111 | |||
| 12112 | void mpic_unmask_irq(struct irq_data *d) | ||
| 12113 | { | ||
| 12114 | @@ -1051,6 +1068,15 @@ static int mpic_host_map(struct irq_host *h, unsigned int virq, | ||
| 12115 | if (hw >= mpic->irq_count) | ||
| 12116 | return -EINVAL; | ||
| 12117 | |||
| 12118 | + /* If the MPIC was reset, then all vectors have already been | ||
| 12119 | + * initialized. Otherwise, the appropriate vector needs to be | ||
| 12120 | + * initialized here to ensure that only used sources are setup with | ||
| 12121 | + * a vector. | ||
| 12122 | + */ | ||
| 12123 | + if (mpic->flags & MPIC_NO_RESET) | ||
| 12124 | + if (!(mpic_is_ipi(mpic, hw) || mpic_is_timer_interrupt(mpic, hw))) | ||
| 12125 | + mpic_init_vector(mpic, hw); | ||
| 12126 | + | ||
| 12127 | mpic_msi_reserve_hwirq(mpic, hw); | ||
| 12128 | |||
| 12129 | /* Default chip */ | ||
| 12130 | @@ -1417,8 +1443,7 @@ void __init mpic_set_default_senses(struct mpic *mpic, u8 *senses, int count) | ||
| 12131 | |||
| 12132 | void __init mpic_init(struct mpic *mpic) | ||
| 12133 | { | ||
| 12134 | - int i; | ||
| 12135 | - int cpu; | ||
| 12136 | + int i, cpu; | ||
| 12137 | |||
| 12138 | BUG_ON(mpic->num_sources == 0); | ||
| 12139 | |||
| 12140 | diff --git a/arch/powerpc/sysdev/ppc4xx_soc.c b/arch/powerpc/sysdev/ppc4xx_soc.c | ||
| 12141 | index d3d6ce3..76f423c 100644 | ||
| 12142 | --- a/arch/powerpc/sysdev/ppc4xx_soc.c | ||
| 12143 | +++ b/arch/powerpc/sysdev/ppc4xx_soc.c | ||
| 12144 | @@ -20,10 +20,14 @@ | ||
| 12145 | #include <linux/interrupt.h> | ||
| 12146 | #include <linux/irq.h> | ||
| 12147 | #include <linux/of_platform.h> | ||
| 12148 | +#include <linux/cpu.h> | ||
| 12149 | |||
| 12150 | #include <asm/dcr.h> | ||
| 12151 | #include <asm/dcr-regs.h> | ||
| 12152 | #include <asm/reg.h> | ||
| 12153 | +#ifdef CONFIG_ACP | ||
| 12154 | +#include <asm/mpic.h> | ||
| 12155 | +#endif | ||
| 12156 | |||
| 12157 | static u32 dcrbase_l2c; | ||
| 12158 | |||
| 12159 | @@ -190,6 +194,48 @@ static int __init ppc4xx_l2c_probe(void) | ||
| 12160 | } | ||
| 12161 | arch_initcall(ppc4xx_l2c_probe); | ||
| 12162 | |||
| 12163 | +#ifdef CONFIG_ACP | ||
| 12164 | + | ||
| 12165 | +static int restart_mode = 0; | ||
| 12166 | + | ||
| 12167 | +/* | ||
| 12168 | + * Issue a "core" reset. | ||
| 12169 | + */ | ||
| 12170 | + | ||
| 12171 | +void | ||
| 12172 | +acp_jump_to_boot_loader(void *input) | ||
| 12173 | +{ | ||
| 12174 | + mpic_teardown_this_cpu(0); | ||
| 12175 | + /* This is only valid in the "core" reset case, so 0x10000000. */ | ||
| 12176 | + mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | 0x10000000); | ||
| 12177 | + | ||
| 12178 | + while (1) | ||
| 12179 | + ; /* Just in case the jump fails. */ | ||
| 12180 | +} | ||
| 12181 | + | ||
| 12182 | +/* | ||
| 12183 | + * Get all other cores to run "acp_jump_to_boot_loader()" then go | ||
| 12184 | + * there as well. | ||
| 12185 | + */ | ||
| 12186 | + | ||
| 12187 | +void | ||
| 12188 | +acp_reset_cores(void) | ||
| 12189 | +{ | ||
| 12190 | + int cpu; | ||
| 12191 | + | ||
| 12192 | + for_each_possible_cpu(cpu) { | ||
| 12193 | + if (cpu != smp_processor_id()) | ||
| 12194 | + smp_call_function_single(cpu, acp_jump_to_boot_loader, | ||
| 12195 | + NULL, 0); | ||
| 12196 | + } | ||
| 12197 | + | ||
| 12198 | + acp_jump_to_boot_loader(NULL); | ||
| 12199 | +} | ||
| 12200 | + | ||
| 12201 | + | ||
| 12202 | +#endif | ||
| 12203 | + | ||
| 12204 | + | ||
| 12205 | /* | ||
| 12206 | * Apply a system reset. Alternatively a board specific value may be | ||
| 12207 | * provided via the "reset-type" property in the cpu node. | ||
| 12208 | @@ -214,8 +260,52 @@ void ppc4xx_reset_system(char *cmd) | ||
| 12209 | reset_type = prop[0] << 28; | ||
| 12210 | } | ||
| 12211 | |||
| 12212 | +#ifdef CONFIG_ACP | ||
| 12213 | + if (restart_mode) /* cold reset */ | ||
| 12214 | + reset_type = DBCR0_RST_SYSTEM; | ||
| 12215 | + printk(KERN_DEBUG"Resetting using '%s' mode\n", restart_mode ? "cold" : "warm"); | ||
| 12216 | + | ||
| 12217 | + if (DBCR0_RST_CORE == reset_type) { | ||
| 12218 | + acp_reset_cores(); | ||
| 12219 | + } else { | ||
| 12220 | + mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | reset_type); | ||
| 12221 | + } | ||
| 12222 | +#else | ||
| 12223 | mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | reset_type); | ||
| 12224 | +#endif | ||
| 12225 | |||
| 12226 | while (1) | ||
| 12227 | ; /* Just in case the reset doesn't work */ | ||
| 12228 | } | ||
| 12229 | + | ||
| 12230 | +#ifdef CONFIG_ACP | ||
| 12231 | +static ssize_t restart_mode_show(struct kobject *kobj, | ||
| 12232 | + struct kobj_attribute *attr, char *buf) | ||
| 12233 | +{ | ||
| 12234 | + return sprintf(buf, "%s\n", restart_mode ? "cold" : "warm"); | ||
| 12235 | +} | ||
| 12236 | + | ||
| 12237 | +static ssize_t restart_mode_store(struct kobject *kobj, | ||
| 12238 | + struct kobj_attribute *attr, | ||
| 12239 | + const char *buf, size_t n) | ||
| 12240 | +{ | ||
| 12241 | + if (strncmp(buf, "cold", min_t(int, n, 4)) == 0) | ||
| 12242 | + restart_mode = 1; | ||
| 12243 | + else if (strncmp(buf, "warm", min_t(int, n, 4)) == 0) | ||
| 12244 | + restart_mode = 0; | ||
| 12245 | + else | ||
| 12246 | + return -EINVAL; | ||
| 12247 | + return n; | ||
| 12248 | +} | ||
| 12249 | + | ||
| 12250 | +static struct kobj_attribute restart_mode_attr = | ||
| 12251 | + __ATTR(restart_mode, 0600, restart_mode_show, restart_mode_store); | ||
| 12252 | + | ||
| 12253 | +static int __init restart_mode_sysfs(void) | ||
| 12254 | +{ | ||
| 12255 | + extern struct kobject *power_kobj; | ||
| 12256 | + return sysfs_create_file(power_kobj, &restart_mode_attr.attr); | ||
| 12257 | +} | ||
| 12258 | + | ||
| 12259 | +late_initcall(restart_mode_sysfs); | ||
| 12260 | +#endif | ||
| 12261 | diff --git a/drivers/Kconfig b/drivers/Kconfig | ||
| 12262 | index 3bb154d..ff5f578 100644 | ||
| 12263 | --- a/drivers/Kconfig | ||
| 12264 | +++ b/drivers/Kconfig | ||
| 12265 | @@ -126,4 +126,6 @@ source "drivers/hwspinlock/Kconfig" | ||
| 12266 | |||
| 12267 | source "drivers/clocksource/Kconfig" | ||
| 12268 | |||
| 12269 | +source "drivers/lsi/Kconfig" | ||
| 12270 | + | ||
| 12271 | endmenu | ||
| 12272 | diff --git a/drivers/Makefile b/drivers/Makefile | ||
| 12273 | index 09f3232..5444771 100644 | ||
| 12274 | --- a/drivers/Makefile | ||
| 12275 | +++ b/drivers/Makefile | ||
| 12276 | @@ -116,6 +116,8 @@ obj-$(CONFIG_BCMA) += bcma/ | ||
| 12277 | obj-$(CONFIG_VHOST_NET) += vhost/ | ||
| 12278 | obj-$(CONFIG_VLYNQ) += vlynq/ | ||
| 12279 | obj-$(CONFIG_STAGING) += staging/ | ||
| 12280 | +obj-$(CONFIG_ACPISS) += lsi/ | ||
| 12281 | +obj-$(CONFIG_ACP) += lsi/ | ||
| 12282 | obj-y += platform/ | ||
| 12283 | obj-y += ieee802154/ | ||
| 12284 | #common clk code | ||
| 12285 | diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig | ||
| 12286 | index 717d6e4..5812725 100644 | ||
| 12287 | --- a/drivers/block/Kconfig | ||
| 12288 | +++ b/drivers/block/Kconfig | ||
| 12289 | @@ -383,6 +383,10 @@ config BLK_DEV_XIP | ||
| 12290 | will prevent RAM block device backing store memory from being | ||
| 12291 | allocated from highmem (only a problem for highmem systems). | ||
| 12292 | |||
| 12293 | +config BLK_DEV_ISS | ||
| 12294 | + bool "Support ISS Simulator Block Device" | ||
| 12295 | + default n | ||
| 12296 | + | ||
| 12297 | config CDROM_PKTCDVD | ||
| 12298 | tristate "Packet writing on CD/DVD media" | ||
| 12299 | depends on !UML | ||
| 12300 | diff --git a/drivers/block/Makefile b/drivers/block/Makefile | ||
| 12301 | index 76646e9..ab74aa6 100644 | ||
| 12302 | --- a/drivers/block/Makefile | ||
| 12303 | +++ b/drivers/block/Makefile | ||
| 12304 | @@ -34,6 +34,7 @@ obj-$(CONFIG_VIODASD) += viodasd.o | ||
| 12305 | obj-$(CONFIG_BLK_DEV_SX8) += sx8.o | ||
| 12306 | obj-$(CONFIG_BLK_DEV_UB) += ub.o | ||
| 12307 | obj-$(CONFIG_BLK_DEV_HD) += hd.o | ||
| 12308 | +obj-$(CONFIG_BLK_DEV_ISS) += iss_blk.o | ||
| 12309 | |||
| 12310 | obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o | ||
| 12311 | obj-$(CONFIG_XEN_BLKDEV_BACKEND) += xen-blkback/ | ||
| 12312 | diff --git a/drivers/block/iss_blk.c b/drivers/block/iss_blk.c | ||
| 12313 | new file mode 100644 | ||
| 12314 | index 0000000..be9128d | ||
| 12315 | --- /dev/null | ||
| 12316 | +++ b/drivers/block/iss_blk.c | ||
| 12317 | @@ -0,0 +1,394 @@ | ||
| 12318 | +/* | ||
| 12319 | + * PPC476 board specific routines | ||
| 12320 | + * | ||
| 12321 | + * Copyright 2009 Torez Smith, IBM Corporation. | ||
| 12322 | + * | ||
| 12323 | + * This program is free software; you can redistribute it and/or modify it | ||
| 12324 | + * under the terms of the GNU General Public License as published by the | ||
| 12325 | + * Free Software Foundation; either version 2 of the License, or (at your | ||
| 12326 | + * option) any later version. | ||
| 12327 | + */ | ||
| 12328 | + | ||
| 12329 | +/* | ||
| 12330 | + * Simple block device for the ISS simulator | ||
| 12331 | + */ | ||
| 12332 | + | ||
| 12333 | +#undef DEBUG | ||
| 12334 | + | ||
| 12335 | +#include <linux/major.h> | ||
| 12336 | +#include <linux/kernel.h> | ||
| 12337 | +#include <linux/module.h> | ||
| 12338 | +#include <linux/init.h> | ||
| 12339 | +#include <linux/sched.h> | ||
| 12340 | +#include <linux/fs.h> | ||
| 12341 | +#include <linux/errno.h> | ||
| 12342 | +#include <linux/file.h> | ||
| 12343 | +#include <linux/ioctl.h> | ||
| 12344 | +#include <linux/blkdev.h> | ||
| 12345 | +#include <linux/of.h> | ||
| 12346 | + | ||
| 12347 | +#include <linux/io.h> | ||
| 12348 | + | ||
| 12349 | +#define MAJOR_NR 63 /* FIXME */ | ||
| 12350 | +#define NUM_ISS_BLK_MINOR 4 | ||
| 12351 | + | ||
| 12352 | +/* Command codes */ | ||
| 12353 | +enum { | ||
| 12354 | + ISS_BD_CMD_NOP = 0, | ||
| 12355 | + ISS_BD_CMD_OPEN = 1, | ||
| 12356 | + ISS_BD_CMD_CLOSE = 2, | ||
| 12357 | + ISS_BD_CMD_READ = 3, | ||
| 12358 | + ISS_BD_CMD_WRITE = 4, | ||
| 12359 | + ISS_BD_CMD_STATUS = 5, | ||
| 12360 | + ISS_BD_CMD_CHKCHANGE = 6, | ||
| 12361 | + ISS_BD_CMD_SYNC = 7, | ||
| 12362 | + ISS_BD_CMD_GET_BLKSIZE = 8, | ||
| 12363 | + ISS_BD_CMD_GET_DEVSIZE = 9, | ||
| 12364 | +}; | ||
| 12365 | + | ||
| 12366 | +/* Status codes */ | ||
| 12367 | +enum { | ||
| 12368 | + ISS_BD_STATUS_OK = 0, | ||
| 12369 | + ISS_BD_STATUS_OP_ER = 1, /* Open error */ | ||
| 12370 | + ISS_BD_ALREADY_OPEN = 2, /* Block file already open */ | ||
| 12371 | + ISS_BD_NOT_OPEN = 3, /* Block file not open */ | ||
| 12372 | + ISS_BD_BAD_DEV_NUM = 4, /* Bad device number */ | ||
| 12373 | + ISS_BD_BAD_SEC_CNT = 5, /* Bad sector number */ | ||
| 12374 | + ISS_BD_SEEK_ERROR = 6, /* Bad sector count */ | ||
| 12375 | + ISS_BD_RW_ERROR = 7, /* Read/Write error */ | ||
| 12376 | + ISS_BD_SIZE_ERROR = 8, /* Unable to determine file size */ | ||
| 12377 | + ISS_BD_FILE_CHANGED = 9, /* Media has changed */ | ||
| 12378 | +}; | ||
| 12379 | + | ||
| 12380 | +struct iss_blk_regs { | ||
| 12381 | + u8 cmd; | ||
| 12382 | + u8 pad0[3]; | ||
| 12383 | + u32 stat; | ||
| 12384 | + u32 sector; | ||
| 12385 | + u32 count; | ||
| 12386 | + u32 devno; | ||
| 12387 | + u32 size; | ||
| 12388 | + u8 pad1[0x1e8]; | ||
| 12389 | + u8 data[0x800]; | ||
| 12390 | +}; | ||
| 12391 | + | ||
| 12392 | +struct iss_blk { | ||
| 12393 | + struct gendisk *disk; | ||
| 12394 | + unsigned int devno; | ||
| 12395 | + unsigned int sectsize; | ||
| 12396 | + unsigned int capacity; | ||
| 12397 | + unsigned int present; | ||
| 12398 | + unsigned int changed; | ||
| 12399 | +} iss_blks[NUM_ISS_BLK_MINOR]; | ||
| 12400 | + | ||
| 12401 | +static spinlock_t iss_blk_qlock; | ||
| 12402 | +static spinlock_t iss_blk_reglock; | ||
| 12403 | +static struct iss_blk_regs __iomem *iss_blk_regs; | ||
| 12404 | + | ||
| 12405 | +struct request *iss_req; | ||
| 12406 | +static bool iss_end_request(int err) | ||
| 12407 | +{ | ||
| 12408 | + unsigned int bytes = blk_rq_cur_bytes(iss_req); | ||
| 12409 | + | ||
| 12410 | + if (__blk_end_request(iss_req, err, bytes)) | ||
| 12411 | + return true; | ||
| 12412 | + iss_req = NULL; | ||
| 12413 | + return false; | ||
| 12414 | +} | ||
| 12415 | + | ||
| 12416 | +static void iss_blk_setup(struct iss_blk *ib) | ||
| 12417 | +{ | ||
| 12418 | + unsigned long flags; | ||
| 12419 | + u32 stat; | ||
| 12420 | + | ||
| 12421 | + pr_debug("iss_blk_setup %d\n", ib->devno); | ||
| 12422 | + | ||
| 12423 | + spin_lock_irqsave(&iss_blk_reglock, flags); | ||
| 12424 | + out_8(iss_blk_regs->data, 0); | ||
| 12425 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12426 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_OPEN); | ||
| 12427 | + stat = in_be32(&iss_blk_regs->stat); | ||
| 12428 | + if (stat != ISS_BD_STATUS_OK) { | ||
| 12429 | + pr_debug(" -> no file\n"); | ||
| 12430 | + goto failed; | ||
| 12431 | + } | ||
| 12432 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_GET_BLKSIZE); | ||
| 12433 | + ib->sectsize = in_be32(&iss_blk_regs->size); | ||
| 12434 | + if (ib->sectsize != 512) { | ||
| 12435 | + pr_err("issblk: unsupported sector size %d\n", ib->sectsize); | ||
| 12436 | + goto failed; | ||
| 12437 | + } | ||
| 12438 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_GET_DEVSIZE); | ||
| 12439 | + ib->capacity = in_be32(&iss_blk_regs->size); | ||
| 12440 | + ib->present = 1; | ||
| 12441 | + ib->changed = 0; | ||
| 12442 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12443 | + | ||
| 12444 | + pr_debug(" -> 0x%x sectors 0f %d bytes\n", | ||
| 12445 | + ib->capacity, ib->sectsize); | ||
| 12446 | + | ||
| 12447 | + blk_queue_bounce_limit(ib->disk->queue, BLK_BOUNCE_HIGH); | ||
| 12448 | + blk_queue_logical_block_size(ib->disk->queue, ib->sectsize); | ||
| 12449 | + set_capacity(ib->disk, ib->capacity); | ||
| 12450 | + return; | ||
| 12451 | + | ||
| 12452 | + failed: | ||
| 12453 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12454 | +} | ||
| 12455 | + | ||
| 12456 | +static int __iss_blk_read(struct iss_blk *ib, void *buffer, | ||
| 12457 | + unsigned long sector, unsigned long count) | ||
| 12458 | +{ | ||
| 12459 | + unsigned long lcount, flags; | ||
| 12460 | + u32 stat; | ||
| 12461 | + | ||
| 12462 | + pr_debug("__iss_blk_read 0x%ld sectors @ 0x%lx\n", count, sector); | ||
| 12463 | + | ||
| 12464 | + while (count) { | ||
| 12465 | + lcount = min(count, 4ul); | ||
| 12466 | + spin_lock_irqsave(&iss_blk_reglock, flags); | ||
| 12467 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12468 | + out_be32(&iss_blk_regs->sector, sector); | ||
| 12469 | + out_be32(&iss_blk_regs->count, lcount); | ||
| 12470 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_READ); | ||
| 12471 | + stat = in_be32(&iss_blk_regs->stat); | ||
| 12472 | + if (stat != ISS_BD_STATUS_OK) { | ||
| 12473 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12474 | + return -EIO; | ||
| 12475 | + } | ||
| 12476 | + memcpy_fromio(buffer, &iss_blk_regs->data, | ||
| 12477 | + lcount * ib->sectsize); | ||
| 12478 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12479 | + count -= lcount; | ||
| 12480 | + sector += lcount; | ||
| 12481 | + buffer += lcount * ib->sectsize; | ||
| 12482 | + } | ||
| 12483 | + return 0; | ||
| 12484 | +} | ||
| 12485 | + | ||
| 12486 | +static int __iss_blk_write(struct iss_blk *ib, void *buffer, | ||
| 12487 | + unsigned long sector, unsigned long count) | ||
| 12488 | +{ | ||
| 12489 | + unsigned long lcount, flags; | ||
| 12490 | + u32 stat; | ||
| 12491 | + | ||
| 12492 | + pr_debug("__iss_blk_write 0x%ld sectors @ 0x%lx\n", count, sector); | ||
| 12493 | + | ||
| 12494 | + while (count) { | ||
| 12495 | + lcount = min(count, 4ul); | ||
| 12496 | + spin_lock_irqsave(&iss_blk_reglock, flags); | ||
| 12497 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12498 | + out_be32(&iss_blk_regs->sector, sector); | ||
| 12499 | + out_be32(&iss_blk_regs->count, lcount); | ||
| 12500 | + memcpy_toio(&iss_blk_regs->data, buffer, lcount * ib->sectsize); | ||
| 12501 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_WRITE); | ||
| 12502 | + stat = in_be32(&iss_blk_regs->stat); | ||
| 12503 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12504 | + if (stat != ISS_BD_STATUS_OK) | ||
| 12505 | + return -EIO; | ||
| 12506 | + count -= lcount; | ||
| 12507 | + sector += lcount; | ||
| 12508 | + buffer += lcount * ib->sectsize; | ||
| 12509 | + } | ||
| 12510 | + return 0; | ||
| 12511 | +} | ||
| 12512 | + | ||
| 12513 | +static void iss_blk_do_request(struct request_queue *q) | ||
| 12514 | +{ | ||
| 12515 | + struct iss_blk *ib = q->queuedata; | ||
| 12516 | + int rc = 0; | ||
| 12517 | + | ||
| 12518 | + pr_debug("iss_do_request dev %d\n", ib->devno); | ||
| 12519 | + | ||
| 12520 | + while (iss_req || ((iss_req = blk_fetch_request(q)) != NULL)) { | ||
| 12521 | + pr_debug(" -> req @ %p, changed: %d\n", iss_req, ib->changed); | ||
| 12522 | + if (ib->changed) { | ||
| 12523 | + iss_end_request(-EIO); /* failure */ | ||
| 12524 | + continue; | ||
| 12525 | + } | ||
| 12526 | + switch (rq_data_dir(iss_req)) { | ||
| 12527 | + case READ: | ||
| 12528 | + rc = __iss_blk_read(ib, iss_req->buffer, | ||
| 12529 | + blk_rq_pos(iss_req), | ||
| 12530 | + blk_rq_cur_sectors(iss_req)); | ||
| 12531 | + break; | ||
| 12532 | + case WRITE: | ||
| 12533 | + rc = __iss_blk_write(ib, iss_req->buffer, | ||
| 12534 | + blk_rq_pos(iss_req), | ||
| 12535 | + blk_rq_cur_sectors(iss_req)); | ||
| 12536 | + }; | ||
| 12537 | + | ||
| 12538 | + pr_debug(" -> ending request, rc = %d\n", rc); | ||
| 12539 | + if (rc) | ||
| 12540 | + iss_end_request(-EIO); | ||
| 12541 | + else | ||
| 12542 | + iss_end_request(0); | ||
| 12543 | + } | ||
| 12544 | +} | ||
| 12545 | + | ||
| 12546 | +static int iss_blk_release(struct gendisk *disk, fmode_t mode) | ||
| 12547 | +{ | ||
| 12548 | + struct iss_blk *ib = disk->private_data; | ||
| 12549 | + unsigned long flags; | ||
| 12550 | + | ||
| 12551 | + pr_debug("issblk%d: release !\n", disk->first_minor); | ||
| 12552 | + | ||
| 12553 | + spin_lock_irqsave(&iss_blk_reglock, flags); | ||
| 12554 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12555 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_SYNC); | ||
| 12556 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12557 | + | ||
| 12558 | + return 0; | ||
| 12559 | +} | ||
| 12560 | + | ||
| 12561 | +static int iss_blk_revalidate(struct gendisk *disk) | ||
| 12562 | +{ | ||
| 12563 | + struct iss_blk *ib = disk->private_data; | ||
| 12564 | + unsigned long flags; | ||
| 12565 | + | ||
| 12566 | + pr_debug("issblk%d: revalidate !\n", disk->first_minor); | ||
| 12567 | + | ||
| 12568 | + if (ib->present && ib->changed) { | ||
| 12569 | + spin_lock_irqsave(&iss_blk_reglock, flags); | ||
| 12570 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12571 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_CLOSE); | ||
| 12572 | + ib->present = ib->changed = 0; | ||
| 12573 | + spin_unlock_irqrestore(&iss_blk_reglock, flags); | ||
| 12574 | + } | ||
| 12575 | + iss_blk_setup(ib); | ||
| 12576 | + return 0; | ||
| 12577 | +} | ||
| 12578 | + | ||
| 12579 | +static int iss_blk_media_changed(struct gendisk *disk) | ||
| 12580 | +{ | ||
| 12581 | + struct iss_blk *ib = disk->private_data; | ||
| 12582 | + u32 stat; | ||
| 12583 | + | ||
| 12584 | + pr_debug("issblk%d: media_changed !\n", disk->first_minor); | ||
| 12585 | + | ||
| 12586 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12587 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_STATUS); | ||
| 12588 | + stat = in_be32(&iss_blk_regs->stat); | ||
| 12589 | + if (stat == ISS_BD_FILE_CHANGED) | ||
| 12590 | + ib->changed = 1; | ||
| 12591 | + | ||
| 12592 | + return ib->changed; | ||
| 12593 | +} | ||
| 12594 | + | ||
| 12595 | +static int iss_blk_open(struct block_device *bdev, fmode_t mode) | ||
| 12596 | +{ | ||
| 12597 | + struct gendisk *disk = bdev->bd_disk; | ||
| 12598 | + struct iss_blk *ib = disk->private_data; | ||
| 12599 | + | ||
| 12600 | + pr_debug("issblk%d: open !\n", disk->first_minor); | ||
| 12601 | + | ||
| 12602 | + check_disk_change(bdev); | ||
| 12603 | + if (ib->changed) | ||
| 12604 | + iss_blk_setup(ib); | ||
| 12605 | + if (!ib->present) | ||
| 12606 | + return -ENOMEDIUM; | ||
| 12607 | + return 0; | ||
| 12608 | +} | ||
| 12609 | + | ||
| 12610 | +static struct block_device_operations iss_blk_fops = { | ||
| 12611 | + .owner = THIS_MODULE, | ||
| 12612 | + .open = iss_blk_open, | ||
| 12613 | + .release = iss_blk_release, | ||
| 12614 | + .media_changed = iss_blk_media_changed, | ||
| 12615 | + .revalidate_disk = iss_blk_revalidate, | ||
| 12616 | +}; | ||
| 12617 | + | ||
| 12618 | +static int __init iss_blk_init(void) | ||
| 12619 | +{ | ||
| 12620 | + struct device_node *np; | ||
| 12621 | + int i; | ||
| 12622 | + | ||
| 12623 | + pr_debug("iss_regs offsets:\n"); | ||
| 12624 | + pr_debug(" cmd : 0x%x\n", offsetof(struct iss_blk_regs, cmd)); | ||
| 12625 | + pr_debug(" stat : 0x%x\n", offsetof(struct iss_blk_regs, stat)); | ||
| 12626 | + pr_debug(" sector : 0x%x\n", offsetof(struct iss_blk_regs, sector)); | ||
| 12627 | + pr_debug(" count : 0x%x\n", offsetof(struct iss_blk_regs, count)); | ||
| 12628 | + pr_debug(" devno : 0x%x\n", offsetof(struct iss_blk_regs, devno)); | ||
| 12629 | + pr_debug(" size : 0x%x\n", offsetof(struct iss_blk_regs, size)); | ||
| 12630 | + pr_debug(" data : 0x%x\n", offsetof(struct iss_blk_regs, data)); | ||
| 12631 | + | ||
| 12632 | + np = of_find_node_by_path("/iss-block"); | ||
| 12633 | + if (np == NULL) | ||
| 12634 | + return -ENODEV; | ||
| 12635 | + iss_blk_regs = of_iomap(np, 0); | ||
| 12636 | + if (iss_blk_regs == NULL) { | ||
| 12637 | + pr_err("issblk: Failed to map registers\n"); | ||
| 12638 | + return -ENOMEM; | ||
| 12639 | + } | ||
| 12640 | + | ||
| 12641 | + if (register_blkdev(MAJOR_NR, "iss_blk")) | ||
| 12642 | + return -EIO; | ||
| 12643 | + | ||
| 12644 | + spin_lock_init(&iss_blk_qlock); | ||
| 12645 | + spin_lock_init(&iss_blk_reglock); | ||
| 12646 | + | ||
| 12647 | + printk(KERN_INFO "ISS Block driver initializing for %d minors\n", | ||
| 12648 | + NUM_ISS_BLK_MINOR); | ||
| 12649 | + | ||
| 12650 | + for (i = 0; i < NUM_ISS_BLK_MINOR; i++) { | ||
| 12651 | + struct gendisk *disk = alloc_disk(1); | ||
| 12652 | + struct request_queue *q; | ||
| 12653 | + struct iss_blk *ib = &iss_blks[i]; | ||
| 12654 | + | ||
| 12655 | + if (!disk) { | ||
| 12656 | + pr_err("issblk%d: Failed to allocate disk\n", i); | ||
| 12657 | + break; | ||
| 12658 | + } | ||
| 12659 | + | ||
| 12660 | + q = blk_init_queue(iss_blk_do_request, &iss_blk_qlock); | ||
| 12661 | + if (q == NULL) { | ||
| 12662 | + pr_err("issblk%d: Failed to init queue\n", i); | ||
| 12663 | + put_disk(disk); | ||
| 12664 | + break; | ||
| 12665 | + } | ||
| 12666 | + q->queuedata = ib; | ||
| 12667 | + | ||
| 12668 | + ib->disk = disk; | ||
| 12669 | + ib->devno = i; | ||
| 12670 | + ib->present = 0; | ||
| 12671 | + ib->changed = 0; | ||
| 12672 | + ib->capacity = 0; | ||
| 12673 | + ib->sectsize = 512; | ||
| 12674 | + | ||
| 12675 | + disk->major = MAJOR_NR; | ||
| 12676 | + disk->first_minor = i; | ||
| 12677 | + disk->fops = &iss_blk_fops; | ||
| 12678 | + disk->private_data = &iss_blks[i]; | ||
| 12679 | + disk->flags = GENHD_FL_REMOVABLE; | ||
| 12680 | + disk->queue = q; | ||
| 12681 | + sprintf(disk->disk_name, "issblk%d", i); | ||
| 12682 | + | ||
| 12683 | + iss_blk_setup(ib); | ||
| 12684 | + | ||
| 12685 | + add_disk(disk); | ||
| 12686 | + } | ||
| 12687 | + | ||
| 12688 | + return 0; | ||
| 12689 | +} | ||
| 12690 | + | ||
| 12691 | +static void __exit iss_blk_exit(void) | ||
| 12692 | +{ | ||
| 12693 | + int i; | ||
| 12694 | + | ||
| 12695 | + unregister_blkdev(MAJOR_NR, "iss_blk"); | ||
| 12696 | + | ||
| 12697 | + for (i = 0; i < NUM_ISS_BLK_MINOR; i++) { | ||
| 12698 | + struct iss_blk *ib = &iss_blks[i]; | ||
| 12699 | + | ||
| 12700 | + if (ib->present) { | ||
| 12701 | + out_be32(&iss_blk_regs->devno, ib->devno); | ||
| 12702 | + out_8(&iss_blk_regs->cmd, ISS_BD_CMD_CLOSE); | ||
| 12703 | + } | ||
| 12704 | + } | ||
| 12705 | +} | ||
| 12706 | + | ||
| 12707 | +module_init(iss_blk_init); | ||
| 12708 | +module_exit(iss_blk_exit); | ||
| 12709 | + | ||
| 12710 | +MODULE_DESCRIPTION("ISS Simulator Block Device"); | ||
| 12711 | +MODULE_LICENSE("GPL"); | ||
| 12712 | diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig | ||
| 12713 | index 25cf327..188a686 100644 | ||
| 12714 | --- a/drivers/dma/Kconfig | ||
| 12715 | +++ b/drivers/dma/Kconfig | ||
| 12716 | @@ -33,6 +33,10 @@ if DMADEVICES | ||
| 12717 | |||
| 12718 | comment "DMA Devices" | ||
| 12719 | |||
| 12720 | +config LSI_DMA | ||
| 12721 | + select DMA_ENGINE | ||
| 12722 | + tristate "ACP GP-DMA" | ||
| 12723 | + | ||
| 12724 | config INTEL_MID_DMAC | ||
| 12725 | tristate "Intel MID DMA support for Peripheral DMA controllers" | ||
| 12726 | depends on PCI && X86 | ||
| 12727 | diff --git a/drivers/dma/lsi-dma.c b/drivers/dma/lsi-dma.c | ||
| 12728 | new file mode 100644 | ||
| 12729 | index 0000000..307e01d | ||
| 12730 | --- /dev/null | ||
| 12731 | +++ b/drivers/dma/lsi-dma.c | ||
| 12732 | @@ -0,0 +1,549 @@ | ||
| 12733 | +/* | ||
| 12734 | + * drivers/dma/lsu-dma.c | ||
| 12735 | + * | ||
| 12736 | + * This file contains a driver for the LSI ACP 34xx DMA engine | ||
| 12737 | + * | ||
| 12738 | + * Copyright 2011 Mentor Graphics | ||
| 12739 | + * | ||
| 12740 | + * The code contained herein is licensed under the GNU General Public | ||
| 12741 | + * License. You may obtain a copy of the GNU General Public License | ||
| 12742 | + * Version 2 or later at the following locations: | ||
| 12743 | + * | ||
| 12744 | + * http://www.opensource.org/licenses/gpl-license.html | ||
| 12745 | + * http://www.gnu.org/copyleft/gpl.html | ||
| 12746 | + */ | ||
| 12747 | +#include <linux/init.h> | ||
| 12748 | +#include <linux/types.h> | ||
| 12749 | +#include <linux/mm.h> | ||
| 12750 | +#include <linux/interrupt.h> | ||
| 12751 | +#include <linux/spinlock.h> | ||
| 12752 | +#include <linux/device.h> | ||
| 12753 | +#include <linux/dma-mapping.h> | ||
| 12754 | +#include <linux/slab.h> | ||
| 12755 | +#include <linux/platform_device.h> | ||
| 12756 | +#include <linux/dmaengine.h> | ||
| 12757 | + | ||
| 12758 | +#include <linux/delay.h> | ||
| 12759 | +#include "lsi-dma.h" | ||
| 12760 | + | ||
| 12761 | +#define MAX_DMA_CHANNELS 4 | ||
| 12762 | +#define GP_DMA_IRQ (35) | ||
| 12763 | + | ||
| 12764 | +struct lsidma_engine; | ||
| 12765 | + | ||
| 12766 | +struct lsidma_channel { | ||
| 12767 | + struct lsidma_engine *lsidma_engine; | ||
| 12768 | + unsigned int channel; | ||
| 12769 | + unsigned int lsidma_channel; | ||
| 12770 | + int irq; | ||
| 12771 | + | ||
| 12772 | + struct dma_chan chan; | ||
| 12773 | + | ||
| 12774 | + spinlock_t lock; | ||
| 12775 | + struct dma_async_tx_descriptor desc; | ||
| 12776 | + dma_cookie_t last_completed; | ||
| 12777 | + enum dma_status status; | ||
| 12778 | + | ||
| 12779 | + enum dma_slave_buswidth word_size; | ||
| 12780 | + dma_addr_t per_address; | ||
| 12781 | + u32 watermark_level; | ||
| 12782 | + int dma_request; | ||
| 12783 | + struct scatterlist *sg_list; | ||
| 12784 | +}; | ||
| 12785 | + | ||
| 12786 | +struct lsidma_engine { | ||
| 12787 | + struct device *dev; | ||
| 12788 | + struct device_dma_parameters dma_parms; | ||
| 12789 | + struct dma_device dma_device; | ||
| 12790 | + struct lsidma_channel channel[MAX_DMA_CHANNELS]; | ||
| 12791 | + bool done; | ||
| 12792 | + void __iomem *base; | ||
| 12793 | +}; | ||
| 12794 | + | ||
| 12795 | +static struct lsidma_channel *to_lsidma_chan(struct dma_chan *chan) | ||
| 12796 | +{ | ||
| 12797 | + return container_of(chan, struct lsidma_channel, chan); | ||
| 12798 | +} | ||
| 12799 | + | ||
| 12800 | +static inline void __iomem *BASE(struct lsidma_channel *dmac) | ||
| 12801 | +{ | ||
| 12802 | + return dmac->lsidma_engine->base + dmac->lsidma_channel * 0x40; | ||
| 12803 | +} | ||
| 12804 | + | ||
| 12805 | +#if 0 | ||
| 12806 | +static void imxdma_handle(struct imxdma_channel *imxdmac) | ||
| 12807 | +{ | ||
| 12808 | + if (imxdmac->desc.callback) | ||
| 12809 | + imxdmac->desc.callback(imxdmac->desc.callback_param); | ||
| 12810 | + imxdmac->last_completed = imxdmac->desc.cookie; | ||
| 12811 | +} | ||
| 12812 | + | ||
| 12813 | + | ||
| 12814 | +static void imxdma_irq_handler(int channel, void *data) | ||
| 12815 | +{ | ||
| 12816 | + struct imxdma_channel *imxdmac = data; | ||
| 12817 | + | ||
| 12818 | + imxdmac->status = DMA_SUCCESS; | ||
| 12819 | + imxdma_handle(imxdmac); | ||
| 12820 | +} | ||
| 12821 | + | ||
| 12822 | +static void imxdma_err_handler(int channel, void *data, int error) | ||
| 12823 | +{ | ||
| 12824 | + struct imxdma_channel *imxdmac = data; | ||
| 12825 | + | ||
| 12826 | + imxdmac->status = DMA_ERROR; | ||
| 12827 | + imxdma_handle(imxdmac); | ||
| 12828 | +} | ||
| 12829 | + | ||
| 12830 | +static void imxdma_progression(int channel, void *data, | ||
| 12831 | + struct scatterlist *sg) | ||
| 12832 | +{ | ||
| 12833 | + struct imxdma_channel *imxdmac = data; | ||
| 12834 | + | ||
| 12835 | + imxdmac->status = DMA_SUCCESS; | ||
| 12836 | + imxdma_handle(imxdmac); | ||
| 12837 | +} | ||
| 12838 | + | ||
| 12839 | +static int imxdma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd, | ||
| 12840 | + unsigned long arg) | ||
| 12841 | +{ | ||
| 12842 | + struct imxdma_channel *imxdmac = to_imxdma_chan(chan); | ||
| 12843 | + struct dma_slave_config *dmaengine_cfg = (void *)arg; | ||
| 12844 | + int ret; | ||
| 12845 | + unsigned int mode = 0; | ||
| 12846 | + | ||
| 12847 | + switch (cmd) { | ||
| 12848 | + case DMA_TERMINATE_ALL: | ||
| 12849 | + imxdmac->status = DMA_ERROR; | ||
| 12850 | + imx_dma_disable(imxdmac->imxdma_channel); | ||
| 12851 | + return 0; | ||
| 12852 | + case DMA_SLAVE_CONFIG: | ||
| 12853 | + if (dmaengine_cfg->direction == DMA_FROM_DEVICE) { | ||
| 12854 | + imxdmac->per_address = dmaengine_cfg->src_addr; | ||
| 12855 | + imxdmac->watermark_level = dmaengine_cfg->src_maxburst; | ||
| 12856 | + imxdmac->word_size = dmaengine_cfg->src_addr_width; | ||
| 12857 | + } else { | ||
| 12858 | + imxdmac->per_address = dmaengine_cfg->dst_addr; | ||
| 12859 | + imxdmac->watermark_level = dmaengine_cfg->dst_maxburst; | ||
| 12860 | + imxdmac->word_size = dmaengine_cfg->dst_addr_width; | ||
| 12861 | + } | ||
| 12862 | + | ||
| 12863 | + switch (imxdmac->word_size) { | ||
| 12864 | + case DMA_SLAVE_BUSWIDTH_1_BYTE: | ||
| 12865 | + mode = IMX_DMA_MEMSIZE_8; | ||
| 12866 | + break; | ||
| 12867 | + case DMA_SLAVE_BUSWIDTH_2_BYTES: | ||
| 12868 | + mode = IMX_DMA_MEMSIZE_16; | ||
| 12869 | + break; | ||
| 12870 | + default: | ||
| 12871 | + case DMA_SLAVE_BUSWIDTH_4_BYTES: | ||
| 12872 | + mode = IMX_DMA_MEMSIZE_32; | ||
| 12873 | + break; | ||
| 12874 | + } | ||
| 12875 | + ret = imx_dma_config_channel(imxdmac->imxdma_channel, | ||
| 12876 | + mode | IMX_DMA_TYPE_FIFO, | ||
| 12877 | + IMX_DMA_MEMSIZE_32 | IMX_DMA_TYPE_LINEAR, | ||
| 12878 | + imxdmac->dma_request, 1); | ||
| 12879 | + | ||
| 12880 | + if (ret) | ||
| 12881 | + return ret; | ||
| 12882 | + | ||
| 12883 | + imx_dma_config_burstlen(imxdmac->imxdma_channel, | ||
| 12884 | + imxdmac->watermark_level * imxdmac->word_size); | ||
| 12885 | + | ||
| 12886 | + return 0; | ||
| 12887 | + default: | ||
| 12888 | + return -ENOSYS; | ||
| 12889 | + } | ||
| 12890 | + | ||
| 12891 | + return -EINVAL; | ||
| 12892 | +} | ||
| 12893 | + | ||
| 12894 | +static void imxdma_free_chan_resources(struct dma_chan *chan) | ||
| 12895 | +{ | ||
| 12896 | + struct imxdma_channel *imxdmac = to_imxdma_chan(chan); | ||
| 12897 | + | ||
| 12898 | + imx_dma_disable(imxdmac->imxdma_channel); | ||
| 12899 | + | ||
| 12900 | + if (imxdmac->sg_list) { | ||
| 12901 | + kfree(imxdmac->sg_list); | ||
| 12902 | + imxdmac->sg_list = NULL; | ||
| 12903 | + } | ||
| 12904 | +} | ||
| 12905 | + | ||
| 12906 | +static struct dma_async_tx_descriptor *imxdma_prep_slave_sg( | ||
| 12907 | + struct dma_chan *chan, struct scatterlist *sgl, | ||
| 12908 | + unsigned int sg_len, enum dma_data_direction direction, | ||
| 12909 | + unsigned long flags) | ||
| 12910 | +{ | ||
| 12911 | + struct imxdma_channel *imxdmac = to_imxdma_chan(chan); | ||
| 12912 | + struct scatterlist *sg; | ||
| 12913 | + int i, ret, dma_length = 0; | ||
| 12914 | + unsigned int dmamode; | ||
| 12915 | + | ||
| 12916 | + if (imxdmac->status == DMA_IN_PROGRESS) | ||
| 12917 | + return NULL; | ||
| 12918 | + | ||
| 12919 | + imxdmac->status = DMA_IN_PROGRESS; | ||
| 12920 | + | ||
| 12921 | + for_each_sg(sgl, sg, sg_len, i) { | ||
| 12922 | + dma_length += sg->length; | ||
| 12923 | + } | ||
| 12924 | + | ||
| 12925 | + if (direction == DMA_FROM_DEVICE) | ||
| 12926 | + dmamode = DMA_MODE_READ; | ||
| 12927 | + else | ||
| 12928 | + dmamode = DMA_MODE_WRITE; | ||
| 12929 | + | ||
| 12930 | + switch (imxdmac->word_size) { | ||
| 12931 | + case DMA_SLAVE_BUSWIDTH_4_BYTES: | ||
| 12932 | + if (sgl->length & 3 || sgl->dma_address & 3) | ||
| 12933 | + return NULL; | ||
| 12934 | + break; | ||
| 12935 | + case DMA_SLAVE_BUSWIDTH_2_BYTES: | ||
| 12936 | + if (sgl->length & 1 || sgl->dma_address & 1) | ||
| 12937 | + return NULL; | ||
| 12938 | + break; | ||
| 12939 | + case DMA_SLAVE_BUSWIDTH_1_BYTE: | ||
| 12940 | + break; | ||
| 12941 | + default: | ||
| 12942 | + return NULL; | ||
| 12943 | + } | ||
| 12944 | + | ||
| 12945 | + ret = imx_dma_setup_sg(imxdmac->imxdma_channel, sgl, sg_len, | ||
| 12946 | + dma_length, imxdmac->per_address, dmamode); | ||
| 12947 | + if (ret) | ||
| 12948 | + return NULL; | ||
| 12949 | + | ||
| 12950 | + return &imxdmac->desc; | ||
| 12951 | +} | ||
| 12952 | + | ||
| 12953 | +static struct dma_async_tx_descriptor *imxdma_prep_dma_cyclic( | ||
| 12954 | + struct dma_chan *chan, dma_addr_t dma_addr, size_t buf_len, | ||
| 12955 | + size_t period_len, enum dma_data_direction direction) | ||
| 12956 | +{ | ||
| 12957 | + struct imxdma_channel *imxdmac = to_imxdma_chan(chan); | ||
| 12958 | + struct imxdma_engine *imxdma = imxdmac->imxdma; | ||
| 12959 | + int i, ret; | ||
| 12960 | + unsigned int periods = buf_len / period_len; | ||
| 12961 | + unsigned int dmamode; | ||
| 12962 | + | ||
| 12963 | + dev_dbg(imxdma->dev, "%s channel: %d buf_len=%d period_len=%d\n", | ||
| 12964 | + __func__, imxdmac->channel, buf_len, period_len); | ||
| 12965 | + | ||
| 12966 | + if (imxdmac->status == DMA_IN_PROGRESS) | ||
| 12967 | + return NULL; | ||
| 12968 | + imxdmac->status = DMA_IN_PROGRESS; | ||
| 12969 | + | ||
| 12970 | + ret = imx_dma_setup_progression_handler(imxdmac->imxdma_channel, | ||
| 12971 | + imxdma_progression); | ||
| 12972 | + if (ret) { | ||
| 12973 | + dev_err(imxdma->dev, "Failed to setup the DMA handler\n"); | ||
| 12974 | + return NULL; | ||
| 12975 | + } | ||
| 12976 | + | ||
| 12977 | + if (imxdmac->sg_list) | ||
| 12978 | + kfree(imxdmac->sg_list); | ||
| 12979 | + | ||
| 12980 | + imxdmac->sg_list = kcalloc(periods + 1, | ||
| 12981 | + sizeof(struct scatterlist), GFP_KERNEL); | ||
| 12982 | + if (!imxdmac->sg_list) | ||
| 12983 | + return NULL; | ||
| 12984 | + | ||
| 12985 | + sg_init_table(imxdmac->sg_list, periods); | ||
| 12986 | + | ||
| 12987 | + for (i = 0; i < periods; i++) { | ||
| 12988 | + imxdmac->sg_list[i].page_link = 0; | ||
| 12989 | + imxdmac->sg_list[i].offset = 0; | ||
| 12990 | + imxdmac->sg_list[i].dma_address = dma_addr; | ||
| 12991 | + imxdmac->sg_list[i].length = period_len; | ||
| 12992 | + dma_addr += period_len; | ||
| 12993 | + } | ||
| 12994 | + | ||
| 12995 | + /* close the loop */ | ||
| 12996 | + imxdmac->sg_list[periods].offset = 0; | ||
| 12997 | + imxdmac->sg_list[periods].length = 0; | ||
| 12998 | + imxdmac->sg_list[periods].page_link = | ||
| 12999 | + ((unsigned long)imxdmac->sg_list | 0x01) & ~0x02; | ||
| 13000 | + | ||
| 13001 | + if (direction == DMA_FROM_DEVICE) | ||
| 13002 | + dmamode = DMA_MODE_READ; | ||
| 13003 | + else | ||
| 13004 | + dmamode = DMA_MODE_WRITE; | ||
| 13005 | + | ||
| 13006 | + ret = imx_dma_setup_sg(imxdmac->imxdma_channel, imxdmac->sg_list, periods, | ||
| 13007 | + IMX_DMA_LENGTH_LOOP, imxdmac->per_address, dmamode); | ||
| 13008 | + if (ret) | ||
| 13009 | + return NULL; | ||
| 13010 | + | ||
| 13011 | + return &imxdmac->desc; | ||
| 13012 | +} | ||
| 13013 | + | ||
| 13014 | +#endif | ||
| 13015 | + | ||
| 13016 | +static void lsidma_dump(struct lsidma_engine *e) | ||
| 13017 | +{ | ||
| 13018 | + int i; | ||
| 13019 | + | ||
| 13020 | + printk("DMA Engine register dump (mmapped src = %p)\n", e->base); | ||
| 13021 | + for (i = 0; i < 0x40 * MAX_DMA_CHANNELS / sizeof(u32); i ++ ) { | ||
| 13022 | + printk("%08X ", __raw_readl(e->base + i * sizeof(u32))); | ||
| 13023 | + if ((i + 1 ) % 4 == 0) | ||
| 13024 | + printk("\n"); | ||
| 13025 | + } | ||
| 13026 | + printk("\n"); | ||
| 13027 | +} | ||
| 13028 | + | ||
| 13029 | +static void lsidma_handle(struct lsidma_channel *dmac, enum dma_status status) | ||
| 13030 | +{ | ||
| 13031 | + if (dmac->desc.callback) | ||
| 13032 | + dmac->desc.callback(dmac->desc.callback_param); | ||
| 13033 | + dmac->last_completed = dmac->desc.cookie; | ||
| 13034 | + dmac->status = DMA_SUCCESS; | ||
| 13035 | +} | ||
| 13036 | + | ||
| 13037 | +static irqreturn_t lsidma_isr(int _irq, void *_dmac) | ||
| 13038 | +{ | ||
| 13039 | + struct lsidma_channel *dmac = _dmac; | ||
| 13040 | + void __iomem *base = BASE(dmac); | ||
| 13041 | + u32 status; | ||
| 13042 | + | ||
| 13043 | + status = __raw_readl(base + DMA_STATUS); | ||
| 13044 | + | ||
| 13045 | + /* confirm and clear the interrupt */ | ||
| 13046 | + __raw_writel(status, base + DMA_STATUS); | ||
| 13047 | + | ||
| 13048 | + printk("%s: channel status %08x\n", __func__, status); | ||
| 13049 | + | ||
| 13050 | + if (status & (1<<3)) { | ||
| 13051 | + lsidma_handle(dmac, DMA_SUCCESS); | ||
| 13052 | + return IRQ_HANDLED; | ||
| 13053 | + } | ||
| 13054 | + | ||
| 13055 | + if (status & 0xF0) { | ||
| 13056 | + lsidma_handle(dmac, DMA_ERROR); | ||
| 13057 | + return IRQ_HANDLED; | ||
| 13058 | + } | ||
| 13059 | + | ||
| 13060 | + return IRQ_HANDLED; | ||
| 13061 | +} | ||
| 13062 | + | ||
| 13063 | +static dma_cookie_t lsidma_assign_cookie(struct lsidma_channel *dmac) | ||
| 13064 | +{ | ||
| 13065 | + dma_cookie_t cookie = dmac->chan.cookie; | ||
| 13066 | + | ||
| 13067 | + if (++cookie < 0) | ||
| 13068 | + cookie = 1; | ||
| 13069 | + | ||
| 13070 | + dmac->chan.cookie = dmac->desc.cookie = cookie; | ||
| 13071 | + return cookie; | ||
| 13072 | +} | ||
| 13073 | + | ||
| 13074 | + | ||
| 13075 | +static dma_cookie_t lsidma_tx_submit(struct dma_async_tx_descriptor *tx) | ||
| 13076 | +{ | ||
| 13077 | + struct lsidma_channel *dmac = to_lsidma_chan(tx->chan); | ||
| 13078 | + dma_cookie_t cookie; | ||
| 13079 | + void __iomem *base = BASE(dmac); | ||
| 13080 | + u32 cfg; | ||
| 13081 | + | ||
| 13082 | + spin_lock_irq(&dmac->lock); | ||
| 13083 | + cookie = lsidma_assign_cookie(dmac); | ||
| 13084 | + | ||
| 13085 | + cfg = __raw_readl(base + DMA_CHANNEL_CONFIG); | ||
| 13086 | + printk("%s: current cfg = %08x\n", __func__, cfg); | ||
| 13087 | + __raw_writel(cfg | DMA_CONFIG_TX_EN, base + DMA_CHANNEL_CONFIG); | ||
| 13088 | + | ||
| 13089 | + printk("%s: SUBMITTED the work item!\n", __func__); | ||
| 13090 | + spin_unlock_irq(&dmac->lock); | ||
| 13091 | + | ||
| 13092 | + return cookie; | ||
| 13093 | +} | ||
| 13094 | + | ||
| 13095 | + | ||
| 13096 | +static int lsidma_alloc_chan_resources(struct dma_chan *chan) | ||
| 13097 | +{ | ||
| 13098 | + struct lsidma_channel *dmac = to_lsidma_chan(chan); | ||
| 13099 | + void __iomem *base = BASE(dmac); | ||
| 13100 | + | ||
| 13101 | + printk("%s\n", __func__); | ||
| 13102 | + | ||
| 13103 | + dma_async_tx_descriptor_init(&dmac->desc, chan); | ||
| 13104 | + dmac->desc.tx_submit = lsidma_tx_submit; | ||
| 13105 | + dmac->desc.flags = DMA_CTRL_ACK; | ||
| 13106 | + dmac->status = DMA_SUCCESS; | ||
| 13107 | + | ||
| 13108 | + printk("about to enable channel\n"); | ||
| 13109 | + ssleep(5); | ||
| 13110 | + __raw_writel(DMA_CONFIG_CHAN_EN, base + DMA_CHANNEL_CONFIG); | ||
| 13111 | + ssleep(5); | ||
| 13112 | + | ||
| 13113 | + lsidma_dump(dmac->lsidma_engine); | ||
| 13114 | + | ||
| 13115 | + return 0; | ||
| 13116 | +} | ||
| 13117 | + | ||
| 13118 | +static void lsidma_free_chan_resources(struct dma_chan *chan) | ||
| 13119 | +{ | ||
| 13120 | + struct lsidma_channel *dmac = to_lsidma_chan(chan); | ||
| 13121 | + printk("%s\n", __func__); | ||
| 13122 | + lsidma_dump(dmac->lsidma_engine); | ||
| 13123 | +} | ||
| 13124 | + | ||
| 13125 | +static void lsidma_issue_pending(struct dma_chan *chan) | ||
| 13126 | +{ | ||
| 13127 | + /* | ||
| 13128 | + * Nothing to do. We only have a single descriptor | ||
| 13129 | + */ | ||
| 13130 | +} | ||
| 13131 | + | ||
| 13132 | +static enum dma_status lsidma_tx_status(struct dma_chan *chan, | ||
| 13133 | + dma_cookie_t cookie, | ||
| 13134 | + struct dma_tx_state *txstate) | ||
| 13135 | +{ | ||
| 13136 | + dma_cookie_t last_used = cookie; | ||
| 13137 | + struct lsidma_channel *dmac = to_lsidma_chan(chan); | ||
| 13138 | + enum dma_status ret = 0; | ||
| 13139 | + | ||
| 13140 | + printk("%s\n", __func__); | ||
| 13141 | + lsidma_dump(dmac->lsidma_engine); | ||
| 13142 | + | ||
| 13143 | + last_used = chan->cookie; | ||
| 13144 | + ret = dma_async_is_complete(cookie, dmac->last_completed, last_used); | ||
| 13145 | + dma_set_tx_state(txstate, dmac->last_completed, last_used, 0); | ||
| 13146 | + | ||
| 13147 | + return ret; | ||
| 13148 | +} | ||
| 13149 | + | ||
| 13150 | +static struct dma_async_tx_descriptor *lsidma_prep_memcpy(struct dma_chan *chan, | ||
| 13151 | + dma_addr_t dst, | ||
| 13152 | + dma_addr_t src, | ||
| 13153 | + size_t size, | ||
| 13154 | + unsigned long dma_flags) | ||
| 13155 | +{ | ||
| 13156 | + struct lsidma_channel *dmac = to_lsidma_chan(chan); | ||
| 13157 | + | ||
| 13158 | + return &dmac->desc; | ||
| 13159 | +} | ||
| 13160 | + | ||
| 13161 | +static int __exit lsidma_remove(struct device *pdev) | ||
| 13162 | +{ | ||
| 13163 | + struct lsidma_engine *lsidma = dev_get_drvdata(pdev); | ||
| 13164 | + int i; | ||
| 13165 | + | ||
| 13166 | + if (!lsidma) | ||
| 13167 | + return 0; | ||
| 13168 | + | ||
| 13169 | + if (lsidma->done) | ||
| 13170 | + dma_async_device_unregister(&lsidma->dma_device); | ||
| 13171 | + | ||
| 13172 | + for (i = 0; i < MAX_DMA_CHANNELS; i++) { | ||
| 13173 | + struct lsidma_channel *dmac = &lsidma->channel[i]; | ||
| 13174 | + | ||
| 13175 | + if (dmac->channel == i) /* initialized ok */ | ||
| 13176 | + free_irq(GP_DMA_IRQ + i, dmac); | ||
| 13177 | + } | ||
| 13178 | + | ||
| 13179 | + iounmap(lsidma->base); | ||
| 13180 | + kfree(lsidma); | ||
| 13181 | + dev_set_drvdata(pdev, NULL); | ||
| 13182 | + | ||
| 13183 | + return 0; | ||
| 13184 | +} | ||
| 13185 | + | ||
| 13186 | +static int __init lsidma_probe(struct device *pdev) | ||
| 13187 | +{ | ||
| 13188 | + struct lsidma_engine *lsidma; | ||
| 13189 | + int ret, i; | ||
| 13190 | + | ||
| 13191 | + printk("%s\n", __func__); | ||
| 13192 | + | ||
| 13193 | + lsidma = kzalloc(sizeof *lsidma, GFP_KERNEL); | ||
| 13194 | + if (!lsidma) | ||
| 13195 | + return -ENOMEM; | ||
| 13196 | + | ||
| 13197 | + lsidma->dev = lsidma->dma_device.dev = pdev; | ||
| 13198 | + | ||
| 13199 | + dev_set_drvdata(pdev, lsidma); | ||
| 13200 | + | ||
| 13201 | + dma_cap_zero(lsidma->dma_device.cap_mask); | ||
| 13202 | + dma_cap_set(DMA_MEMCPY, lsidma->dma_device.cap_mask); | ||
| 13203 | + | ||
| 13204 | + lsidma->dma_device.device_alloc_chan_resources = lsidma_alloc_chan_resources; | ||
| 13205 | + lsidma->dma_device.device_free_chan_resources = lsidma_free_chan_resources; | ||
| 13206 | + lsidma->dma_device.device_tx_status = lsidma_tx_status; | ||
| 13207 | + lsidma->dma_device.device_issue_pending = lsidma_issue_pending; | ||
| 13208 | + lsidma->dma_device.device_prep_dma_memcpy = lsidma_prep_memcpy; | ||
| 13209 | + | ||
| 13210 | + INIT_LIST_HEAD(&lsidma->dma_device.channels); | ||
| 13211 | + | ||
| 13212 | + lsidma->base = ioremap(0x20004e0000ull, 0x40 * MAX_DMA_CHANNELS); | ||
| 13213 | + | ||
| 13214 | + /* Initialize channel parameters */ | ||
| 13215 | + for (i = 0; i < MAX_DMA_CHANNELS; i++) { | ||
| 13216 | + struct lsidma_channel *dmac = &lsidma->channel[i]; | ||
| 13217 | + | ||
| 13218 | + | ||
| 13219 | + dmac->lsidma_engine = lsidma; | ||
| 13220 | + spin_lock_init(&dmac->lock); | ||
| 13221 | + dmac->chan.device = &lsidma->dma_device; | ||
| 13222 | + | ||
| 13223 | + dmac->irq = irq_create_mapping(NULL, GP_DMA_IRQ + i); | ||
| 13224 | + dev_info(pdev, "channel %d, irq %d\n", i, dmac->irq); | ||
| 13225 | + ret = request_irq(dmac->irq, lsidma_isr, | ||
| 13226 | + IRQF_SHARED, "lsi-dma", dmac); | ||
| 13227 | + if (ret) { | ||
| 13228 | + dev_err(pdev, "failed to request_irq, error = %d\n", ret); | ||
| 13229 | + goto err_init; | ||
| 13230 | + } | ||
| 13231 | + | ||
| 13232 | + dmac->channel = i; | ||
| 13233 | + | ||
| 13234 | + /* Add the channel to the DMAC list */ | ||
| 13235 | + list_add_tail(&dmac->chan.device_node, &lsidma->dma_device.channels); | ||
| 13236 | + } | ||
| 13237 | + | ||
| 13238 | + lsidma_dump(lsidma); | ||
| 13239 | + | ||
| 13240 | + ret = dma_async_device_register(&lsidma->dma_device); | ||
| 13241 | + if (ret) { | ||
| 13242 | + dev_err(pdev, "unable to register\n"); | ||
| 13243 | + goto err_init; | ||
| 13244 | + } | ||
| 13245 | + lsidma->done = true; | ||
| 13246 | + | ||
| 13247 | + return 0; | ||
| 13248 | + | ||
| 13249 | +err_init: | ||
| 13250 | + lsidma_remove(pdev); | ||
| 13251 | + dev_set_drvdata(pdev, NULL); | ||
| 13252 | + return ret; | ||
| 13253 | +} | ||
| 13254 | + | ||
| 13255 | + | ||
| 13256 | +static struct platform_driver lsidma_driver = { | ||
| 13257 | + .driver = { | ||
| 13258 | + .name = "lsi-dma", | ||
| 13259 | + .probe = lsidma_probe, | ||
| 13260 | + .remove = __exit_p(lsidma_remove), | ||
| 13261 | + .owner = THIS_MODULE, | ||
| 13262 | + }, | ||
| 13263 | +}; | ||
| 13264 | + | ||
| 13265 | +static struct platform_device *lsidma_dev = NULL; | ||
| 13266 | + | ||
| 13267 | +static int __init lsidma_module_init(void) | ||
| 13268 | +{ | ||
| 13269 | + lsidma_dev = platform_device_register_simple("lsi-dma", -1, NULL, 0); | ||
| 13270 | + return platform_driver_register(&lsidma_driver); | ||
| 13271 | +} | ||
| 13272 | +subsys_initcall(lsidma_module_init); | ||
| 13273 | + | ||
| 13274 | +static void __exit lsidma_module_exit(void) | ||
| 13275 | +{ | ||
| 13276 | + platform_driver_unregister(&lsidma_driver); | ||
| 13277 | + platform_device_unregister(lsidma_dev); | ||
| 13278 | +} | ||
| 13279 | +module_exit(lsidma_module_exit) | ||
| 13280 | + | ||
| 13281 | +MODULE_LICENSE("GPL"); | ||
| 13282 | diff --git a/drivers/dma/lsi-dma.h b/drivers/dma/lsi-dma.h | ||
| 13283 | new file mode 100644 | ||
| 13284 | index 0000000..6137dd5 | ||
| 13285 | --- /dev/null | ||
| 13286 | +++ b/drivers/dma/lsi-dma.h | ||
| 13287 | @@ -0,0 +1,42 @@ | ||
| 13288 | +#ifndef __LSI_DMA_H | ||
| 13289 | +#define __LSI_DMA_H | ||
| 13290 | + | ||
| 13291 | +#define DMA_X_SRC_COUNT 0x00 | ||
| 13292 | +#define DMA_Y_SRC_COUNT 0x04 | ||
| 13293 | +#define DMA_X_MODIF_SRC 0x08 | ||
| 13294 | +#define DMA_Y_MODIF_SRC 0x0c | ||
| 13295 | +#define DMA_SRC_CUR_ADDR 0x10 | ||
| 13296 | +#define DMA_SRC_ACCESS 0x14 | ||
| 13297 | + #define DMA_SRC_ACCESS_BURST_TYPE (1<<15) | ||
| 13298 | + #define DMA_SRC_ACCESS_TAIL_LENGTH(x) (((x) & 0xF) << 11) | ||
| 13299 | + #define DMA_SRC_ACCESS_ROTATOR_LENGTH(x) (((x) & 1F) << 6) | ||
| 13300 | + #define DMA_SRC_ACCESS_SRC_SIZE(x) (((x) & 7) << 3) | ||
| 13301 | + #define DMA_SRC_ACCESS_SRC_BURST(x) (((x) & 7) << 0) | ||
| 13302 | +#define DMA_SRC_MASK 0x18 | ||
| 13303 | +#define DMA_X_DST_COUNT 0x1c | ||
| 13304 | +#define DMA_Y_DST_COUNT 0x20 | ||
| 13305 | +#define DMA_X_MODIF_DST 0x24 | ||
| 13306 | +#define DMA_Y_MODIF_DST 0x28 | ||
| 13307 | +#define DMA_DST_CUR_ADDR 0x2C | ||
| 13308 | +#define DMA_DST_ACCESS 0x30 | ||
| 13309 | + #define DMA_DST_ACCESS_DST_SIZE(x) (((x) & 7) << 3) | ||
| 13310 | + #define DMA_DST_ACCESS_DST_BURST(x) (((x) & 7) << 0) | ||
| 13311 | +#define DMA_NXT_DESCR 0x34 | ||
| 13312 | +#define DMA_CHANNEL_CONFIG 0x38 | ||
| 13313 | + #define DMA_CONFIG_DST_SPACE(x) (((x) & 7) << 26) | ||
| 13314 | + #define DMA_CONFIG_SRC_SPACE(x) (((x) & 7) << 23) | ||
| 13315 | + #define DMA_CONFIG_EXT_PRIORITY (1<<22) | ||
| 13316 | + #define DMA_CONFIG_PRIORITY_ROW (1<<21) | ||
| 13317 | + #define DMA_CONFIG_PRIORITY (1<<20) | ||
| 13318 | + #define DMA_CONFIG_CHANNEL_PRIORITY(x) (((x) & 3) << 16) | ||
| 13319 | + #define DMA_CONFIG_LAST_BLOCK (1<<15) | ||
| 13320 | + #define DMA_CONFIG_CLEAR_FIFO (1<<14) | ||
| 13321 | + #define DMA_CONFIG_START_MEM_LOAD (1<<13) | ||
| 13322 | + #define DMA_CONFIG_STOP_DST_EOB (1<<11) | ||
| 13323 | + #define DMA_CONFIG_INT_DST_EOT (1<<7) | ||
| 13324 | + #define DMA_CONFIG_INT_DST_EOB (1<<6) | ||
| 13325 | + #define DMA_CONFIG_TX_EN (1<<1) | ||
| 13326 | + #define DMA_CONFIG_CHAN_EN (1<<0) | ||
| 13327 | +#define DMA_STATUS 0x3C | ||
| 13328 | + | ||
| 13329 | +#endif /* __LSI_DMA_H */ | ||
| 13330 | diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig | ||
| 13331 | index 646068e..246d4d1 100644 | ||
| 13332 | --- a/drivers/i2c/busses/Kconfig | ||
| 13333 | +++ b/drivers/i2c/busses/Kconfig | ||
| 13334 | @@ -434,6 +434,12 @@ config I2C_IXP2000 | ||
| 13335 | This driver is deprecated and will be dropped soon. Use i2c-gpio | ||
| 13336 | instead. | ||
| 13337 | |||
| 13338 | +config I2C_LSI | ||
| 13339 | + tristate "LSI ACP3448" | ||
| 13340 | + depends on PPC | ||
| 13341 | + help | ||
| 13342 | + no help | ||
| 13343 | + | ||
| 13344 | config I2C_MPC | ||
| 13345 | tristate "MPC107/824x/85xx/512x/52xx/83xx/86xx" | ||
| 13346 | depends on PPC | ||
| 13347 | diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile | ||
| 13348 | index e6cf294..359d655 100644 | ||
| 13349 | --- a/drivers/i2c/busses/Makefile | ||
| 13350 | +++ b/drivers/i2c/busses/Makefile | ||
| 13351 | @@ -41,6 +41,7 @@ obj-$(CONFIG_I2C_IMX) += i2c-imx.o | ||
| 13352 | obj-$(CONFIG_I2C_INTEL_MID) += i2c-intel-mid.o | ||
| 13353 | obj-$(CONFIG_I2C_IOP3XX) += i2c-iop3xx.o | ||
| 13354 | obj-$(CONFIG_I2C_IXP2000) += i2c-ixp2000.o | ||
| 13355 | +obj-$(CONFIG_I2C_LSI) += i2c-lsi.o | ||
| 13356 | obj-$(CONFIG_I2C_MPC) += i2c-mpc.o | ||
| 13357 | obj-$(CONFIG_I2C_MV64XXX) += i2c-mv64xxx.o | ||
| 13358 | obj-$(CONFIG_I2C_MXS) += i2c-mxs.o | ||
| 13359 | diff --git a/drivers/i2c/busses/i2c-lsi.c b/drivers/i2c/busses/i2c-lsi.c | ||
| 13360 | new file mode 100644 | ||
| 13361 | index 0000000..79a6ef2 | ||
| 13362 | --- /dev/null | ||
| 13363 | +++ b/drivers/i2c/busses/i2c-lsi.c | ||
| 13364 | @@ -0,0 +1,352 @@ | ||
| 13365 | +/* | ||
| 13366 | + * (C) Copyright 2011 | ||
| 13367 | + * | ||
| 13368 | + * This file is licensed under the terms of the GNU General Public | ||
| 13369 | + * License version 2. This program is licensed "as is" without any | ||
| 13370 | + * warranty of any kind, whether express or implied. | ||
| 13371 | + */ | ||
| 13372 | + | ||
| 13373 | +#include <linux/kernel.h> | ||
| 13374 | +#include <linux/module.h> | ||
| 13375 | +#include <linux/sched.h> | ||
| 13376 | +#include <linux/init.h> | ||
| 13377 | +#include <linux/of_platform.h> | ||
| 13378 | +#include <linux/of_i2c.h> | ||
| 13379 | +#include <linux/slab.h> | ||
| 13380 | + | ||
| 13381 | +#include <linux/io.h> | ||
| 13382 | +#include <linux/i2c.h> | ||
| 13383 | +#include <linux/interrupt.h> | ||
| 13384 | +#include <linux/delay.h> | ||
| 13385 | + | ||
| 13386 | +#include <asm/lsi.h> | ||
| 13387 | +#include "i2c-lsi.h" | ||
| 13388 | + | ||
| 13389 | +#define DRV_NAME "i2c-lsi" | ||
| 13390 | + | ||
| 13391 | +struct lsi_iic { | ||
| 13392 | + struct device *dev; | ||
| 13393 | + void __iomem *base; | ||
| 13394 | + u32 interrupt; | ||
| 13395 | + wait_queue_head_t queue; | ||
| 13396 | + struct i2c_adapter adap; | ||
| 13397 | + int irq; | ||
| 13398 | + u32 real_clk; | ||
| 13399 | +}; | ||
| 13400 | + | ||
| 13401 | +static void lsi_iic_writel(u32 data, void __iomem *addr) | ||
| 13402 | +{ | ||
| 13403 | + printk("%s, 0x%x ==> %p\n", __func__, data, addr); | ||
| 13404 | + __raw_writel(data, addr); | ||
| 13405 | +} | ||
| 13406 | + | ||
| 13407 | +static u32 lsi_iic_readl(void __iomem *addr) | ||
| 13408 | +{ | ||
| 13409 | + u32 r; | ||
| 13410 | + | ||
| 13411 | + r = __raw_readl(addr); | ||
| 13412 | + printk("%s, 0x%x <== %p\n", __func__, r, addr); | ||
| 13413 | + return r; | ||
| 13414 | +} | ||
| 13415 | + | ||
| 13416 | +static void __devinit lsi_iic_setup_clock(struct lsi_iic *i2c, u32 clock) | ||
| 13417 | +{ | ||
| 13418 | + unsigned long freq; | ||
| 13419 | + u32 divisor; | ||
| 13420 | + | ||
| 13421 | + BUG_ON(acp_clock_get(1, &freq)); | ||
| 13422 | + | ||
| 13423 | + divisor = freq / clock; | ||
| 13424 | + printk("System clock %ld, requested %d, divisor = %x\n", freq, clock, divisor); | ||
| 13425 | + | ||
| 13426 | + lsi_iic_writel((MCCFG_LPD(divisor / 2) | MCCFG_HPD(divisor - divisor / 2)), i2c->base + MCCFG); | ||
| 13427 | +} | ||
| 13428 | + | ||
| 13429 | +static irqreturn_t lsi_iic_isr(int irq, void *dev_id) | ||
| 13430 | +{ | ||
| 13431 | + struct mpc_i2c *i2c = dev_id; | ||
| 13432 | +#if 0 | ||
| 13433 | + if (readb(i2c->base + MPC_I2C_SR) & CSR_MIF) { | ||
| 13434 | + /* Read again to allow register to stabilise */ | ||
| 13435 | + i2c->interrupt = readb(i2c->base + MPC_I2C_SR); | ||
| 13436 | + writeb(0, i2c->base + MPC_I2C_SR); | ||
| 13437 | + wake_up(&i2c->queue); | ||
| 13438 | + } | ||
| 13439 | +#endif | ||
| 13440 | + return IRQ_HANDLED; | ||
| 13441 | +} | ||
| 13442 | + | ||
| 13443 | +static void lsi_iic_regdump(struct lsi_iic *i2c) | ||
| 13444 | +{ | ||
| 13445 | +#if 0 | ||
| 13446 | + int i; | ||
| 13447 | + | ||
| 13448 | + printk("%s at %p\n", __func__, i2c->base); | ||
| 13449 | + for (i = 0; i <= 0x10; i ++ ) { | ||
| 13450 | + printk("%08X: 0x%08x\n", i * 4, lsi_iic_readl(i2c->base + i * 4)); | ||
| 13451 | + } | ||
| 13452 | +#endif | ||
| 13453 | +} | ||
| 13454 | + | ||
| 13455 | +static int lsi_iic_busyloop(struct lsi_iic *i2c, int offset) | ||
| 13456 | +{ | ||
| 13457 | + int count = 100; | ||
| 13458 | + u32 r; | ||
| 13459 | + | ||
| 13460 | + lsi_iic_regdump(i2c); | ||
| 13461 | + printk("Entering %s...(%d)", __func__, offset); | ||
| 13462 | + while (--count > 0) { | ||
| 13463 | + r = lsi_iic_readl(i2c->base + offset); | ||
| 13464 | + printk("%X,", r); | ||
| 13465 | + if (r != 0) | ||
| 13466 | + break; | ||
| 13467 | + udelay(1000); | ||
| 13468 | + } | ||
| 13469 | + | ||
| 13470 | + printk("\nDone\n"); | ||
| 13471 | + return count <= 0 ? -ETIMEDOUT : 0; | ||
| 13472 | +} | ||
| 13473 | + | ||
| 13474 | +static int lsi_iic_read(struct lsi_iic *i2c, int target, u8 *data, int length, int restart, int tenbit) | ||
| 13475 | +{ | ||
| 13476 | + u32 d1, d2; | ||
| 13477 | + int actual_length; | ||
| 13478 | + int ret = 0; | ||
| 13479 | + | ||
| 13480 | + for(;;) { | ||
| 13481 | + lsi_iic_writel(MTC_MMA | MTC_STOP | (tenbit ? MTC_TBAM : 0), i2c->base + MTC); | ||
| 13482 | + | ||
| 13483 | + lsi_iic_writel(MHC_HPD(0x80) | MHC_LPD(0x00), i2c->base + MStartSHC); | ||
| 13484 | + lsi_iic_writel(MHC_HPD(0x00) | MHC_LPD(0x80), i2c->base + MStopSHC); | ||
| 13485 | + lsi_iic_writel(MHC_HPD(0x14) | MHC_LPD(0x14), i2c->base + MDSHC); | ||
| 13486 | + | ||
| 13487 | + lsi_iic_writel(target, i2c->base + MSA); | ||
| 13488 | + | ||
| 13489 | + actual_length = clamp_t(int, length, 0, sizeof(u32) * 2 - 1); | ||
| 13490 | + lsi_iic_writel( MRC_RR | MRC_NUMBYTES(actual_length), i2c->base + MRC); | ||
| 13491 | + | ||
| 13492 | + ret = lsi_iic_busyloop(i2c, MRS); | ||
| 13493 | + if (ret < 0) | ||
| 13494 | + break; | ||
| 13495 | + | ||
| 13496 | + d1 = lsi_iic_readl(i2c->base + MRX0); | ||
| 13497 | + d2 = lsi_iic_readl(i2c->base + MRX1); | ||
| 13498 | + | ||
| 13499 | + memcpy(data, &d1, clamp_t(int, actual_length, 0, sizeof(u32))); | ||
| 13500 | + actual_length -= sizeof(u32); | ||
| 13501 | + length -= sizeof(u32); | ||
| 13502 | + data += sizeof(u32); | ||
| 13503 | + | ||
| 13504 | + memcpy(data, &d2, clamp_t(int, actual_length, 0, sizeof(u32))); | ||
| 13505 | + actual_length -= sizeof(u32); | ||
| 13506 | + length -= sizeof(u32); | ||
| 13507 | + data += sizeof(u32); | ||
| 13508 | + | ||
| 13509 | + if (length <= 0) | ||
| 13510 | + break; | ||
| 13511 | + } | ||
| 13512 | + return ret >= 0 ? 1 : ret; | ||
| 13513 | +} | ||
| 13514 | + | ||
| 13515 | +static int lsi_iic_write(struct lsi_iic *i2c, int target, u8 *data, int length, int restart, int tenbit) | ||
| 13516 | +{ | ||
| 13517 | + u32 d1, d2; | ||
| 13518 | + int d1_len, d2_len; | ||
| 13519 | + int ret = 0; | ||
| 13520 | + | ||
| 13521 | + for (;;) { | ||
| 13522 | + lsi_iic_writel(MTC_MOC | MTC_MMA | MTC_STOP | (tenbit ? MTC_TBAM : 0), i2c->base + MTC); | ||
| 13523 | + | ||
| 13524 | + lsi_iic_writel(MHC_HPD(0x80) | MHC_LPD(0x00), i2c->base + MStartSHC); | ||
| 13525 | + lsi_iic_writel(MHC_HPD(0x00) | MHC_LPD(0x80), i2c->base + MStopSHC); | ||
| 13526 | + lsi_iic_writel(MHC_HPD(0x14) | MHC_LPD(0x14), i2c->base + MDSHC); | ||
| 13527 | + | ||
| 13528 | + lsi_iic_writel(MTC_MMA | MTC_STOP | (tenbit ? MTC_TBAM : 0), i2c->base + MTC); | ||
| 13529 | + | ||
| 13530 | + lsi_iic_writel(target, i2c->base + MSA); | ||
| 13531 | + | ||
| 13532 | + d1 = d2 = 0; | ||
| 13533 | + | ||
| 13534 | + d1_len = clamp_t(int, length, 0, sizeof(u32)); | ||
| 13535 | + memcpy(&d1, data, min_t(int, d1_len, sizeof(u32))); | ||
| 13536 | + data += d1_len; | ||
| 13537 | + length -= d1_len; | ||
| 13538 | + | ||
| 13539 | + d2_len = clamp_t(int, length, 0, sizeof(u32)); | ||
| 13540 | + memcpy(&d2, data, min_t(int, d2_len, sizeof(u32))); | ||
| 13541 | + data += d2_len; | ||
| 13542 | + length -= d2_len; | ||
| 13543 | + | ||
| 13544 | + lsi_iic_writel(d1, i2c->base + MTX0); | ||
| 13545 | + lsi_iic_writel(d2, i2c->base + MTX1); | ||
| 13546 | + | ||
| 13547 | + lsi_iic_writel( MTC_MMA | | ||
| 13548 | + MTC_STOP | | ||
| 13549 | + (tenbit ? MTC_TBAM : 0) | | ||
| 13550 | + MTC_NUMBYTES(d1_len + d2_len) | | ||
| 13551 | + MTC_TR, | ||
| 13552 | + i2c->base + MTC); | ||
| 13553 | + | ||
| 13554 | + ret = lsi_iic_busyloop(i2c, MTS); | ||
| 13555 | + | ||
| 13556 | + if (length == 0 || ret < 0) | ||
| 13557 | + break; | ||
| 13558 | + } | ||
| 13559 | + return ret >= 0 ? 1 : ret; | ||
| 13560 | +} | ||
| 13561 | + | ||
| 13562 | +static int lsi_iic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) | ||
| 13563 | +{ | ||
| 13564 | + struct i2c_msg *pmsg; | ||
| 13565 | + int i, ret = 0; | ||
| 13566 | + struct lsi_iic *i2c = i2c_get_adapdata(adap); | ||
| 13567 | + | ||
| 13568 | + lsi_iic_setup_clock(i2c, 400); | ||
| 13569 | + for (i = 0; ret >= 0 && i < num; i++) { | ||
| 13570 | + pmsg = &msgs[i]; | ||
| 13571 | + printk( /* dev_dbg(i2c->dev, */ | ||
| 13572 | + "Doing %s %d bytes from/to 0x%02x - %d of %d messages\n", | ||
| 13573 | + pmsg->flags & I2C_M_RD ? "read" : "write", | ||
| 13574 | + pmsg->len, pmsg->addr, i + 1, num); | ||
| 13575 | + if (pmsg->flags & I2C_M_RD) | ||
| 13576 | + ret = lsi_iic_read(i2c, pmsg->addr, pmsg->buf, pmsg->len, i, pmsg->flags & I2C_M_TEN); | ||
| 13577 | + else | ||
| 13578 | + ret = lsi_iic_write(i2c, pmsg->addr, pmsg->buf, pmsg->len, i, pmsg->flags & I2C_M_TEN); | ||
| 13579 | + } | ||
| 13580 | + | ||
| 13581 | + return ret; | ||
| 13582 | +} | ||
| 13583 | + | ||
| 13584 | +static u32 lsi_iic_functionality(struct i2c_adapter *adap) | ||
| 13585 | +{ | ||
| 13586 | + return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL; | ||
| 13587 | +} | ||
| 13588 | + | ||
| 13589 | +static const struct i2c_algorithm lsi_iic_algo = { | ||
| 13590 | + .master_xfer = lsi_iic_xfer, | ||
| 13591 | + .functionality = lsi_iic_functionality, | ||
| 13592 | +}; | ||
| 13593 | + | ||
| 13594 | +static struct i2c_adapter lsi_iic_ops = { | ||
| 13595 | + .owner = THIS_MODULE, | ||
| 13596 | + .name = "LSI adapter", | ||
| 13597 | + .algo = &lsi_iic_algo, | ||
| 13598 | + .timeout = HZ, | ||
| 13599 | +}; | ||
| 13600 | + | ||
| 13601 | +static int __devinit lsi_iic_probe(struct platform_device *op) | ||
| 13602 | +{ | ||
| 13603 | + struct lsi_iic *i2c; | ||
| 13604 | + const u32 *prop; | ||
| 13605 | + u32 clock = 0; | ||
| 13606 | + int result = 0; | ||
| 13607 | + int plen; | ||
| 13608 | + | ||
| 13609 | + i2c = kzalloc(sizeof(*i2c), GFP_KERNEL); | ||
| 13610 | + if (!i2c) | ||
| 13611 | + return -ENOMEM; | ||
| 13612 | + | ||
| 13613 | + i2c->dev = &op->dev; /* for debug and error output */ | ||
| 13614 | + | ||
| 13615 | + init_waitqueue_head(&i2c->queue); | ||
| 13616 | + | ||
| 13617 | + i2c->base = of_iomap(op->dev.of_node, 0); | ||
| 13618 | + if (!i2c->base) { | ||
| 13619 | + dev_err(i2c->dev, "failed to map controller\n"); | ||
| 13620 | + result = -ENOMEM; | ||
| 13621 | + goto fail_map; | ||
| 13622 | + } | ||
| 13623 | + | ||
| 13624 | + i2c->irq = irq_of_parse_and_map(op->dev.of_node, 0); | ||
| 13625 | + if (i2c->irq) { /* no i2c->irq implies polling */ | ||
| 13626 | + result = request_irq(i2c->irq, lsi_iic_isr, | ||
| 13627 | + IRQF_SHARED, "i2c-lsi", i2c); | ||
| 13628 | + if (result < 0) { | ||
| 13629 | + dev_err(i2c->dev, "failed to attach interrupt\n"); | ||
| 13630 | + goto fail_request; | ||
| 13631 | + } | ||
| 13632 | + } | ||
| 13633 | + dev_set_drvdata(&op->dev, i2c); | ||
| 13634 | + | ||
| 13635 | + prop = of_get_property(op->dev.of_node, "clock-frequency", &plen); | ||
| 13636 | + if (prop && plen == sizeof(u32)) | ||
| 13637 | + clock = *prop; | ||
| 13638 | + if (clock == 0) | ||
| 13639 | + clock = 400; | ||
| 13640 | + lsi_iic_setup_clock(i2c, clock); | ||
| 13641 | + | ||
| 13642 | + i2c->adap = lsi_iic_ops; | ||
| 13643 | + i2c_set_adapdata(&i2c->adap, i2c); | ||
| 13644 | + i2c->adap.dev.parent = &op->dev; | ||
| 13645 | + i2c->adap.dev.of_node = of_node_get(op->dev.of_node); | ||
| 13646 | + | ||
| 13647 | + result = i2c_add_adapter(&i2c->adap); | ||
| 13648 | + if (result < 0) { | ||
| 13649 | + dev_err(i2c->dev, "failed to add adapter\n"); | ||
| 13650 | + goto fail_add; | ||
| 13651 | + } | ||
| 13652 | + | ||
| 13653 | + of_i2c_register_devices(&i2c->adap); | ||
| 13654 | + printk("%s mmapped at %p, irq %d\n", DRV_NAME, i2c->base, i2c->irq); | ||
| 13655 | + | ||
| 13656 | + return result; | ||
| 13657 | + | ||
| 13658 | + fail_add: | ||
| 13659 | + dev_set_drvdata(&op->dev, NULL); | ||
| 13660 | + free_irq(i2c->irq, i2c); | ||
| 13661 | + fail_request: | ||
| 13662 | + irq_dispose_mapping(i2c->irq); | ||
| 13663 | + iounmap(i2c->base); | ||
| 13664 | + fail_map: | ||
| 13665 | + kfree(i2c); | ||
| 13666 | + return result; | ||
| 13667 | +}; | ||
| 13668 | + | ||
| 13669 | +static int __devexit lsi_iic_remove(struct platform_device *op) | ||
| 13670 | +{ | ||
| 13671 | + struct lsi_iic *i2c = dev_get_drvdata(&op->dev); | ||
| 13672 | + | ||
| 13673 | + i2c_del_adapter(&i2c->adap); | ||
| 13674 | + dev_set_drvdata(&op->dev, NULL); | ||
| 13675 | + | ||
| 13676 | + if (i2c->irq) | ||
| 13677 | + free_irq(i2c->irq, i2c); | ||
| 13678 | + | ||
| 13679 | + irq_dispose_mapping(i2c->irq); | ||
| 13680 | + iounmap(i2c->base); | ||
| 13681 | + kfree(i2c); | ||
| 13682 | + return 0; | ||
| 13683 | +}; | ||
| 13684 | + | ||
| 13685 | + | ||
| 13686 | +static const struct of_device_id lsi_iic_of_match[] = { | ||
| 13687 | + {.compatible = "acp-i2c", }, | ||
| 13688 | + {}, | ||
| 13689 | +}; | ||
| 13690 | +MODULE_DEVICE_TABLE(of, lsi_iic_of_match); | ||
| 13691 | + | ||
| 13692 | +/* Structure for a device driver */ | ||
| 13693 | +static struct platform_driver lsi_iic_driver = { | ||
| 13694 | + .probe = lsi_iic_probe, | ||
| 13695 | + .remove = __devexit_p(lsi_iic_remove), | ||
| 13696 | + .driver = { | ||
| 13697 | + .owner = THIS_MODULE, | ||
| 13698 | + .name = DRV_NAME, | ||
| 13699 | + .of_match_table = lsi_iic_of_match, | ||
| 13700 | + }, | ||
| 13701 | +}; | ||
| 13702 | + | ||
| 13703 | +static int __init lsi_iic_init(void) | ||
| 13704 | +{ | ||
| 13705 | + return platform_driver_register(&lsi_iic_driver); | ||
| 13706 | +} | ||
| 13707 | + | ||
| 13708 | +static void __exit lsi_iic_exit(void) | ||
| 13709 | +{ | ||
| 13710 | + platform_driver_unregister(&lsi_iic_driver); | ||
| 13711 | +} | ||
| 13712 | + | ||
| 13713 | +module_init(lsi_iic_init); | ||
| 13714 | +module_exit(lsi_iic_exit); | ||
| 13715 | + | ||
| 13716 | +MODULE_LICENSE("GPL"); | ||
| 13717 | diff --git a/drivers/i2c/busses/i2c-lsi.h b/drivers/i2c/busses/i2c-lsi.h | ||
| 13718 | new file mode 100644 | ||
| 13719 | index 0000000..da00b65 | ||
| 13720 | --- /dev/null | ||
| 13721 | +++ b/drivers/i2c/busses/i2c-lsi.h | ||
| 13722 | @@ -0,0 +1,60 @@ | ||
| 13723 | +#ifndef LSI_I2C_H__ | ||
| 13724 | +#define LSI_I2C_H__ | ||
| 13725 | + | ||
| 13726 | +#define MTC 0x00 /* Master Transmit Config */ | ||
| 13727 | +#define MTC_STOP (1<<29) | ||
| 13728 | +#define MTC_MOC (1<<10) | ||
| 13729 | +#define MTC_TC (1<<9) | ||
| 13730 | +#define MTC_MMA (1<<8) | ||
| 13731 | +#define MTC_TBAM (1<<7) | ||
| 13732 | +#define MTC_LE (1<<5) | ||
| 13733 | +#define MTC_TR (1<<0) | ||
| 13734 | +#define MTC_NUMBYTES(x) (((x) & 0x0F) << 1) | ||
| 13735 | + | ||
| 13736 | +#define MRC 0x04 /* Master Receive Config */ | ||
| 13737 | +#define MRC_LE (1<<5) | ||
| 13738 | +#define MRC_NUMBYTES(x) (((x) & 0x0F) << 1) | ||
| 13739 | +#define MRC_RR (1<<0) | ||
| 13740 | + | ||
| 13741 | +#define MTS 0x08 /* Master Transmit Status */ | ||
| 13742 | +#define MTS_ERROR 0x02 | ||
| 13743 | +#define MTS_DONE 0x01 | ||
| 13744 | + | ||
| 13745 | +#define MRS 0x0C /* Master Receive Status */ | ||
| 13746 | +#define MRS_NUMBYTES(r) (((r) >> 1) & 0xF) | ||
| 13747 | +#define MRS_ERROR 0x02 | ||
| 13748 | +#define MRS_DONE 0x01 | ||
| 13749 | + | ||
| 13750 | +#define MIE 0x10 /* Master Interrupt Enable */ | ||
| 13751 | +#define MI_EREI (1<<3) | ||
| 13752 | +#define MI_ERCI (1<<2) | ||
| 13753 | +#define MI_ETEI (1<<1) | ||
| 13754 | +#define MI_ETDI (1<<0) | ||
| 13755 | + | ||
| 13756 | +#define MIC 0x14 /* Master Interrupt Clear */ | ||
| 13757 | + | ||
| 13758 | +#define MIS 0x18 /* Master Interrupt Status */ | ||
| 13759 | + | ||
| 13760 | +#define MCCFG 0x1C /* CLK config */ | ||
| 13761 | +#define MCCFG_LPD(x) ((x) & 0x3FF) | ||
| 13762 | +#define MCCFG_HPD(x) (((x) & 0x3FF) << 16) | ||
| 13763 | + | ||
| 13764 | +#define MHC_LPD(x) ((x) & 0x3FF) | ||
| 13765 | +#define MHC_HPD(x) (((x) & 0x3FF) << 16) | ||
| 13766 | +#define MStartSHC 0x20 /* StartSetupHoldConfig */ | ||
| 13767 | +#define MStopSHC 0x24 /* StopSetupHoldConfig */ | ||
| 13768 | +#define MDSHC 0x28 /* DataSetupHoldConfig */ | ||
| 13769 | + | ||
| 13770 | +#define MBM 0x2C /* Master Bypass Mode */ | ||
| 13771 | +#define MBM_EPBM (1<<2) | ||
| 13772 | +#define MBM_SCLV (1<<1) | ||
| 13773 | +#define MBM_SDAV (1<<0) | ||
| 13774 | + | ||
| 13775 | +#define MSA 0x30 /* Master Slave Address */ | ||
| 13776 | + | ||
| 13777 | +#define MTX0 0x34 /* Transmit data */ | ||
| 13778 | +#define MTX1 0x38 | ||
| 13779 | +#define MRX0 0x3C /* Receive data */ | ||
| 13780 | +#define MRX1 0x40 | ||
| 13781 | + | ||
| 13782 | +#endif /* LSI_I2C_H__ */ | ||
| 13783 | diff --git a/drivers/lsi/Kconfig b/drivers/lsi/Kconfig | ||
| 13784 | new file mode 100644 | ||
| 13785 | index 0000000..565f7fc | ||
| 13786 | --- /dev/null | ||
| 13787 | +++ b/drivers/lsi/Kconfig | ||
| 13788 | @@ -0,0 +1,104 @@ | ||
| 13789 | +menu "LSI Drivers (APP3, APP3K, and ACP)" | ||
| 13790 | + | ||
| 13791 | +config SERIAL_ACP | ||
| 13792 | + bool "LSI's Serial Driver for the ACP" | ||
| 13793 | + select SERIAL_CORE | ||
| 13794 | + help | ||
| 13795 | + Handles the serial ports (there are two) on LSI's ACP board | ||
| 13796 | + and the simulated serial port provided by ISS. | ||
| 13797 | + | ||
| 13798 | +config SERIAL_ACP_CONSOLE | ||
| 13799 | + bool "Console on the ACP serial port" | ||
| 13800 | + depends on SERIAL_ACP=y | ||
| 13801 | + select SERIAL_CORE_CONSOLE | ||
| 13802 | + help | ||
| 13803 | + If you say Y here, it will be possible to use a serial port as the | ||
| 13804 | + system console (the system console is the device which receives all | ||
| 13805 | + kernel messages and warnings and which allows logins in single user | ||
| 13806 | + mode). This could be useful if some terminal or printer is connected | ||
| 13807 | + to that serial port. | ||
| 13808 | + | ||
| 13809 | + Even if you say Y here, the currently visible virtual console | ||
| 13810 | + (/dev/tty0) will still be used as the system console by default, but | ||
| 13811 | + you can alter that using a kernel command line option such as | ||
| 13812 | + "console=ttyS1". (Try "man bootparam" or see the documentation of | ||
| 13813 | + your boot loader (grub or lilo or loadlin) about how to pass options | ||
| 13814 | + to the kernel at boot time.) | ||
| 13815 | + | ||
| 13816 | + If you don't have a VGA card installed and you say Y here, the | ||
| 13817 | + kernel will automatically use the first serial line, /dev/ttyS0, as | ||
| 13818 | + system console. | ||
| 13819 | + | ||
| 13820 | + You can set that using a kernel command line option such as | ||
| 13821 | + "console=uart8250,io,0x3f8,9600n8" | ||
| 13822 | + "console=uart8250,mmio,0xff5e0000,115200n8". | ||
| 13823 | + and it will switch to normal serial console when the corresponding | ||
| 13824 | + port is ready. | ||
| 13825 | + "earlycon=uart8250,io,0x3f8,9600n8" | ||
| 13826 | + "earlycon=uart8250,mmio,0xff5e0000,115200n8". | ||
| 13827 | + it will not only setup early console. | ||
| 13828 | + | ||
| 13829 | + If unsure, say N. | ||
| 13830 | + | ||
| 13831 | +config SERIAL_ACP_CONSOLE_POLL | ||
| 13832 | + bool "Don't use interrupts in the ACP serial driver" | ||
| 13833 | + depends on SERIAL_ACP_CONSOLE | ||
| 13834 | + select CONSOLE_POLL | ||
| 13835 | + help | ||
| 13836 | + When selected, the ACP serial driver won't use interrupts. | ||
| 13837 | + This is only intended to be used for debugging. | ||
| 13838 | + | ||
| 13839 | + If unsure, say N. | ||
| 13840 | + | ||
| 13841 | +config LSI_NET | ||
| 13842 | + bool "Network interface for LSI's APP and ACP" | ||
| 13843 | + help | ||
| 13844 | + Network interface driver for LSI's APP and ACP series boards. | ||
| 13845 | + | ||
| 13846 | +config LSI_NET_NUM_RX_DESC | ||
| 13847 | + int "NIC driver: Number of receive descriptors" | ||
| 13848 | + depends on LSI_NET | ||
| 13849 | + default "4" | ||
| 13850 | + help | ||
| 13851 | + The number of receive descriptors to allocate. | ||
| 13852 | + | ||
| 13853 | +config LSI_NET_RX_BUF_SZ | ||
| 13854 | + int "NIC driver: Size of the receive buffer" | ||
| 13855 | + depends on LSI_NET | ||
| 13856 | + default "32768" | ||
| 13857 | + help | ||
| 13858 | + The size of the receive buffer. | ||
| 13859 | + | ||
| 13860 | +config LSI_NET_NUM_TX_DESC | ||
| 13861 | + int "NIC driver: Number of transmit descriptors" | ||
| 13862 | + depends on LSI_NET | ||
| 13863 | + default "4" | ||
| 13864 | + help | ||
| 13865 | + The number of transmit descriptors to allocate. | ||
| 13866 | + | ||
| 13867 | +config LSI_NET_TX_BUF_SZ | ||
| 13868 | + int "NIC driver: Size of the transmit buffer" | ||
| 13869 | + depends on LSI_NET | ||
| 13870 | + default "32768" | ||
| 13871 | + help | ||
| 13872 | + The size of the transmit buffer. | ||
| 13873 | + | ||
| 13874 | +config LSI_NAND | ||
| 13875 | + bool "NAND Driver for LSI's APP and ACP" | ||
| 13876 | + depends on ACP | ||
| 13877 | + select MTD_NAND | ||
| 13878 | + help | ||
| 13879 | + Add NAND support to LSI's APP/ACP boards. | ||
| 13880 | + | ||
| 13881 | +config LSI_UBOOTENV | ||
| 13882 | + bool "U-Boot Environment Access for LSI's APP and ACP" | ||
| 13883 | + depends on ( ACP && LSI_NAND && CRC32 ) | ||
| 13884 | + help | ||
| 13885 | + Add U-Boot environment access on LSI's APP/ACP boards. | ||
| 13886 | + | ||
| 13887 | +config LSI_PLX_PCIE_BRIDGE | ||
| 13888 | + bool "PLX 8608 PCIe bridge for LSI's ACP" | ||
| 13889 | + help | ||
| 13890 | + PLX 8608 configuration driver for LSI's ACP boards. | ||
| 13891 | + | ||
| 13892 | +endmenu | ||
| 13893 | diff --git a/drivers/lsi/Makefile b/drivers/lsi/Makefile | ||
| 13894 | new file mode 100644 | ||
| 13895 | index 0000000..ce6d25a | ||
| 13896 | --- /dev/null | ||
| 13897 | +++ b/drivers/lsi/Makefile | ||
| 13898 | @@ -0,0 +1 @@ | ||
| 13899 | +obj-y += acp/ | ||
| 13900 | diff --git a/drivers/lsi/acp/Makefile b/drivers/lsi/acp/Makefile | ||
| 13901 | new file mode 100644 | ||
| 13902 | index 0000000..6a8fca8 | ||
| 13903 | --- /dev/null | ||
| 13904 | +++ b/drivers/lsi/acp/Makefile | ||
| 13905 | @@ -0,0 +1,13 @@ | ||
| 13906 | +# Makefile for LSI drivers | ||
| 13907 | +# Note that some of these use the U-Boot environment, so nand must be first, | ||
| 13908 | +# then ubootenv... | ||
| 13909 | +obj-y += clocks.o | ||
| 13910 | +obj-$(CONFIG_ACP) += ncr.o | ||
| 13911 | +obj-$(CONFIG_LSI_NAND) += nand.o | ||
| 13912 | +obj-$(CONFIG_LSI_UBOOTENV) += ubootenv.o | ||
| 13913 | +obj-$(CONFIG_ACP) += version.o | ||
| 13914 | +obj-y += wrappers.o | ||
| 13915 | +obj-$(CONFIG_SERIAL_ACP) += serial.o | ||
| 13916 | +obj-$(CONFIG_LSI_NET) += net.o | ||
| 13917 | +obj-$(CONFIG_LSI_PLX_PCIE_BRIDGE) +=pci_plx.o | ||
| 13918 | +#obj-y += test.o | ||
| 13919 | diff --git a/drivers/lsi/acp/clocks.c b/drivers/lsi/acp/clocks.c | ||
| 13920 | new file mode 100644 | ||
| 13921 | index 0000000..c6d1389 | ||
| 13922 | --- /dev/null | ||
| 13923 | +++ b/drivers/lsi/acp/clocks.c | ||
| 13924 | @@ -0,0 +1,253 @@ | ||
| 13925 | +/* | ||
| 13926 | + * Copyright (C) 2009 LSI Corporation | ||
| 13927 | + * | ||
| 13928 | + * See file CREDITS for list of people who contributed to this | ||
| 13929 | + * project. | ||
| 13930 | + * | ||
| 13931 | + * This program is free software; you can redistribute it and/or | ||
| 13932 | + * modify it under the terms of the GNU General Public License as | ||
| 13933 | + * published by the Free Software Foundation; either version 2 of | ||
| 13934 | + * the License, or (at your option) any later version. | ||
| 13935 | + * | ||
| 13936 | + * This program is distributed in the hope that it will be useful, | ||
| 13937 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13938 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13939 | + * GNU General Public License for more details. | ||
| 13940 | + * | ||
| 13941 | + * You should have received a copy of the GNU General Public License | ||
| 13942 | + * along with this program; if not, write to the Free Software | ||
| 13943 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
| 13944 | + * MA 02111-1307 USA | ||
| 13945 | + */ | ||
| 13946 | + | ||
| 13947 | +#include <linux/module.h> | ||
| 13948 | +#include <asm/dcr-native.h> | ||
| 13949 | + | ||
| 13950 | +#define CLK_REF0 125000000 | ||
| 13951 | + | ||
| 13952 | +extern int is_asic(void); | ||
| 13953 | + | ||
| 13954 | +/* | ||
| 13955 | + =============================================================================== | ||
| 13956 | + =============================================================================== | ||
| 13957 | + Private Interface | ||
| 13958 | + =============================================================================== | ||
| 13959 | + =============================================================================== | ||
| 13960 | +*/ | ||
| 13961 | + | ||
| 13962 | +static unsigned char ps[] = {1, 3, 2, 4}; | ||
| 13963 | + | ||
| 13964 | +static unsigned char idiv[] = { | ||
| 13965 | + 1, 16, 17, 30, 13, 18, 7, 31, 14, 11, 19, 21, 27, 8, 23, 32, | ||
| 13966 | + 15, 29, 12, 6, 10, 20, 26, 22, 28, 5, 9, 25, 4, 24, 3, 2}; | ||
| 13967 | + | ||
| 13968 | +static unsigned char odiv[] = { | ||
| 13969 | + 1, 2, 28, 27, 22, 21, 30, 29, 24, 23, 12, 11, 16, 15, 32, 31, | ||
| 13970 | + 26, 25, 20, 19, 10, 9, 14, 13, 18, 17, 8, 7, 6, 5, 4, 3}; | ||
| 13971 | + | ||
| 13972 | +static unsigned char mult[] = { | ||
| 13973 | + 1, 123, 117, 251, 245, 69, 111, 125, 119, 95, 105, 197, 239, | ||
| 13974 | + 163, 63, 253, 247, 187, 57, 223, 233, 207, 157, 71, 113, 15, | ||
| 13975 | + 89, 37, 191, 19, 99, 127, 121, 109, 93, 61, 185, 155, 13, 97, | ||
| 13976 | + 107, 11, 9, 81, 31, 49, 83, 199, 241, 33, 181, 143, 217, 173, | ||
| 13977 | + 51, 165, 65, 85, 151, 147, 227, 41, 201, 255, 249, 243, 195, | ||
| 13978 | + 237, 221, 231, 35, 189, 59, 183, 79, 29, 141, 215, 145, 225, | ||
| 13979 | + 235, 219, 27, 139, 137, 135, 175, 209, 159, 53, 45, 177, 211, | ||
| 13980 | + 23, 167, 73, 115, 67, 103, 161, 55, 205, 87, 17, 91, 153, 7, | ||
| 13981 | + 47, 179, 171, 149, 39, 193, 229, 77, 213, 25, 133, 43, 21, | ||
| 13982 | + 101, 203, 5, 169, 75, 131, 3, 129, 1, 250, 244, 124, 118, 196, | ||
| 13983 | + 238, 252, 246, 222, 232, 70, 112, 36, 190, 126, 120, 60, 184, | ||
| 13984 | + 96, 106, 80, 30, 198, 240, 142, 216, 164, 64, 146, 226, 254, | ||
| 13985 | + 248, 236, 220, 188, 58, 28, 140, 224, 234, 138, 136, 208, 158, | ||
| 13986 | + 176, 210, 72, 114, 160, 54, 16, 90, 46, 178, 38, 192, 212, 24, | ||
| 13987 | + 20, 100, 168, 74, 128, 122, 116, 68, 110, 94, 104, 162, 62, | ||
| 13988 | + 186, 56, 206, 156, 14, 88, 18, 98, 108, 92, 154, 12, 10, 8, | ||
| 13989 | + 48, 82, 32, 180, 172, 50, 84, 150, 40, 200, 242, 194, 230, 34, | ||
| 13990 | + 182, 78, 214, 144, 218, 26, 134, 174, 52, 44, 22, 166, 66, | ||
| 13991 | + 102, 204, 86, 152, 6, 170, 148, 228, 76, 132, 42, 202, 4, 130, | ||
| 13992 | + 2 | ||
| 13993 | +}; | ||
| 13994 | + | ||
| 13995 | +#define PREDIV(value) (idiv[(((value) & 0xfc000000) >> 26)]) | ||
| 13996 | +#define MULTINT(value) (((value) & 0x00000ffe) >> 1) | ||
| 13997 | +#define MULTINT_PRE(value) (ps[((MULTINT((value)) & 0x300) >> 8)]) | ||
| 13998 | +#define MULTINT_MAIN(value) (mult[(MULTINT((value)) & 0xff)]) | ||
| 13999 | +#define RANGEA(value) (((value) & 0x03f80000) >> 19) | ||
| 14000 | +#define RANGEA_PRE(value) (ps[((RANGEA((value)) & 0x60) >> 5)]) | ||
| 14001 | +#define RANGEA_MAIN(value) (odiv[(RANGEA((value)) & 0x1f)]) | ||
| 14002 | +#define RANGEB(value) (((value) & 0x0007f000) >> 12) | ||
| 14003 | +#define RANGEB_PRE(value) (ps[((RANGEB((value)) & 0x60) >> 5)]) | ||
| 14004 | +#define RANGEB_MAIN(value) (odiv[(RANGEB((value)) & 0x1f)]) | ||
| 14005 | + | ||
| 14006 | +/* | ||
| 14007 | + ------------------------------------------------------------------------------ | ||
| 14008 | + get_ppc_pll | ||
| 14009 | + | ||
| 14010 | + Assumes the the PPC PLL is locked... | ||
| 14011 | +*/ | ||
| 14012 | + | ||
| 14013 | +static int | ||
| 14014 | +get_ppc_pll(unsigned long *dco, unsigned long *pllouta, unsigned long *plloutb) | ||
| 14015 | +{ | ||
| 14016 | + unsigned long ctrl; | ||
| 14017 | + | ||
| 14018 | + ctrl = mfdcr(0xd02); | ||
| 14019 | + | ||
| 14020 | + *dco = (CLK_REF0 / 1000 / PREDIV(ctrl)); | ||
| 14021 | + *dco *= (MULTINT_PRE(ctrl) * MULTINT_MAIN(ctrl)); | ||
| 14022 | + *pllouta = *dco / (RANGEA_PRE(ctrl) * RANGEA_MAIN(ctrl)); | ||
| 14023 | + *plloutb = *dco / (RANGEB_PRE(ctrl) * RANGEB_MAIN(ctrl)); | ||
| 14024 | + | ||
| 14025 | +#if 0 | ||
| 14026 | + printf("0x%x %d 0x%x (%d %d) 0x%x (%d %d) 0x%x (%d %d)\n", | ||
| 14027 | + ctrl, PREDIV(ctrl), | ||
| 14028 | + MULTINT(ctrl), MULTINT_PRE(ctrl), MULTINT_MAIN(ctrl), | ||
| 14029 | + RANGEA(ctrl), RANGEA_PRE(ctrl), RANGEA_MAIN(ctrl), | ||
| 14030 | + RANGEB(ctrl), RANGEB_PRE(ctrl), RANGEB_MAIN(ctrl)); | ||
| 14031 | +#endif | ||
| 14032 | + | ||
| 14033 | + return 0; | ||
| 14034 | +} | ||
| 14035 | + | ||
| 14036 | +/* | ||
| 14037 | + ------------------------------------------------------------------------------- | ||
| 14038 | + acp_clock_get_asic | ||
| 14039 | +*/ | ||
| 14040 | + | ||
| 14041 | +static int | ||
| 14042 | +acp_clock_get_asic(int clock, unsigned long *frequency) | ||
| 14043 | +{ | ||
| 14044 | + unsigned long mcgc; | ||
| 14045 | + unsigned long mcgs; | ||
| 14046 | + unsigned long dco = 0; | ||
| 14047 | + unsigned long pllouta; | ||
| 14048 | + unsigned long plloutb; | ||
| 14049 | + | ||
| 14050 | + *frequency = 0ULL; | ||
| 14051 | + | ||
| 14052 | + mcgc = mfdcr(0xd00); | ||
| 14053 | + mcgs = mfdcr(0xd01); | ||
| 14054 | + | ||
| 14055 | + switch (clock) { | ||
| 14056 | + case 0: /* PPC */ | ||
| 14057 | + if (0 == (mcgc & 0xc0000000)) { | ||
| 14058 | + /* ppc_clk is clk_ref0 */ | ||
| 14059 | + *frequency = CLK_REF0 / 1000; | ||
| 14060 | + } else if (0 == get_ppc_pll(&dco, &pllouta, &plloutb)) { | ||
| 14061 | + if (1 == ((mcgc & 0xc0000000) >> 30)) { | ||
| 14062 | + *frequency = pllouta; | ||
| 14063 | + } else { | ||
| 14064 | + *frequency = pllouta / 2; | ||
| 14065 | + } | ||
| 14066 | + } else { | ||
| 14067 | + return -1; | ||
| 14068 | + } | ||
| 14069 | + break; | ||
| 14070 | + case 1: /* Peripheral */ | ||
| 14071 | + if (0 == (mcgc & 0x08000000)) { | ||
| 14072 | + /* clk_per is clk_ref0 */ | ||
| 14073 | + *frequency = CLK_REF0 / 1000; | ||
| 14074 | + } else { | ||
| 14075 | + /* clk_per is clk_pllb_ppc */ | ||
| 14076 | + if (0 == (mcgs & 0x80000000) || | ||
| 14077 | + (0 == dco && | ||
| 14078 | + 0 != get_ppc_pll(&dco, &pllouta, &plloutb))) { | ||
| 14079 | + return -1; | ||
| 14080 | + } | ||
| 14081 | + | ||
| 14082 | + *frequency = plloutb; | ||
| 14083 | + } | ||
| 14084 | + break; | ||
| 14085 | + default: | ||
| 14086 | + return -1; | ||
| 14087 | + break; | ||
| 14088 | + } | ||
| 14089 | + | ||
| 14090 | + return 0; | ||
| 14091 | +} | ||
| 14092 | + | ||
| 14093 | +/* | ||
| 14094 | + ------------------------------------------------------------------------------- | ||
| 14095 | + acp_glock_get_emulation | ||
| 14096 | +*/ | ||
| 14097 | + | ||
| 14098 | +static int | ||
| 14099 | +acp_clock_get_emulation(int clock, unsigned long *frequency) | ||
| 14100 | +{ | ||
| 14101 | + *frequency = 0ULL; | ||
| 14102 | + | ||
| 14103 | + /* | ||
| 14104 | + Clocks are only available on the ASIC. | ||
| 14105 | + */ | ||
| 14106 | + switch (clock) { | ||
| 14107 | + case 0: /* PPC */ | ||
| 14108 | + *frequency = 12500; | ||
| 14109 | + break; | ||
| 14110 | + case 1: /* Peripheral */ | ||
| 14111 | + *frequency = 6500; | ||
| 14112 | + break; | ||
| 14113 | + default: | ||
| 14114 | + return -1; | ||
| 14115 | + break; | ||
| 14116 | + } | ||
| 14117 | + | ||
| 14118 | + return 0; | ||
| 14119 | +} | ||
| 14120 | + | ||
| 14121 | +/* | ||
| 14122 | + ------------------------------------------------------------------------------- | ||
| 14123 | + acp_glock_get_iss | ||
| 14124 | +*/ | ||
| 14125 | + | ||
| 14126 | +static int | ||
| 14127 | +acp_clock_get_iss(int clock, unsigned long *frequency) | ||
| 14128 | +{ | ||
| 14129 | + *frequency = 0ULL; | ||
| 14130 | + | ||
| 14131 | + /* | ||
| 14132 | + Clocks are only available on the ASIC. | ||
| 14133 | + */ | ||
| 14134 | + switch (clock) { | ||
| 14135 | + case 0: /* PPC */ | ||
| 14136 | + *frequency = 12500; | ||
| 14137 | + break; | ||
| 14138 | + case 1: /* Peripheral */ | ||
| 14139 | + *frequency = 6500; | ||
| 14140 | + break; | ||
| 14141 | + default: | ||
| 14142 | + return -1; | ||
| 14143 | + break; | ||
| 14144 | + } | ||
| 14145 | + | ||
| 14146 | + return 0; | ||
| 14147 | +} | ||
| 14148 | + | ||
| 14149 | +/* | ||
| 14150 | + =============================================================================== | ||
| 14151 | + =============================================================================== | ||
| 14152 | + Public Interface | ||
| 14153 | + =============================================================================== | ||
| 14154 | + =============================================================================== | ||
| 14155 | +*/ | ||
| 14156 | + | ||
| 14157 | +/* | ||
| 14158 | + ------------------------------------------------------------------------------- | ||
| 14159 | + acp_clock_get | ||
| 14160 | +*/ | ||
| 14161 | + | ||
| 14162 | +int | ||
| 14163 | +acp_clock_get(int clock, unsigned long *frequency) | ||
| 14164 | +{ | ||
| 14165 | +#ifdef CONFIG_ACPISS | ||
| 14166 | + return acp_clock_get_iss(clock, frequency); | ||
| 14167 | +#else | ||
| 14168 | + if (0 == is_asic()) { | ||
| 14169 | + return acp_clock_get_emulation(clock, frequency); | ||
| 14170 | + } else { | ||
| 14171 | + return acp_clock_get_asic(clock, frequency); | ||
| 14172 | + } | ||
| 14173 | + | ||
| 14174 | + return -1; | ||
| 14175 | +#endif | ||
| 14176 | +} | ||
| 14177 | +EXPORT_SYMBOL(acp_clock_get); | ||
| 14178 | diff --git a/drivers/lsi/acp/nand.c b/drivers/lsi/acp/nand.c | ||
| 14179 | new file mode 100644 | ||
| 14180 | index 0000000..7953e4f | ||
| 14181 | --- /dev/null | ||
| 14182 | +++ b/drivers/lsi/acp/nand.c | ||
| 14183 | @@ -0,0 +1,3666 @@ | ||
| 14184 | +/* | ||
| 14185 | + * drivers/lsi/acp/nand.c | ||
| 14186 | + * | ||
| 14187 | + * NAND Controller Driver for LSI's ACP | ||
| 14188 | + * | ||
| 14189 | + * Copyright (C) 2009 LSI Inc. | ||
| 14190 | + * | ||
| 14191 | + * This program is free software; you can redistribute it and/or modify | ||
| 14192 | + * it under the terms of the GNU General Public License as published by | ||
| 14193 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 14194 | + * (at your option) any later version. | ||
| 14195 | + * | ||
| 14196 | + * This program is distributed in the hope that it will be useful, | ||
| 14197 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14198 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14199 | + * GNU General Public License for more details. | ||
| 14200 | + * | ||
| 14201 | + * You should have received a copy of the GNU General Public License | ||
| 14202 | + * along with this program; if not, write to the Free Software | ||
| 14203 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 14204 | + * | ||
| 14205 | + */ | ||
| 14206 | + | ||
| 14207 | +#include <linux/slab.h> | ||
| 14208 | +#include <linux/module.h> | ||
| 14209 | +#include <linux/init.h> | ||
| 14210 | +#include <linux/spinlock.h> | ||
| 14211 | +#include <linux/delay.h> | ||
| 14212 | +#include <linux/mtd/mtd.h> | ||
| 14213 | +#include <linux/mtd/nand.h> | ||
| 14214 | +#include <linux/mtd/partitions.h> | ||
| 14215 | +#include <linux/of.h> | ||
| 14216 | +#include <asm/io.h> | ||
| 14217 | +#include <asm/delay.h> | ||
| 14218 | +#include <asm/cacheflush.h> | ||
| 14219 | + | ||
| 14220 | +/* -- DEBUG --------------------------------------------------------- */ | ||
| 14221 | + | ||
| 14222 | +#undef DEBUG | ||
| 14223 | +/*#define DEBUG*/ | ||
| 14224 | +#if defined(DEBUG) | ||
| 14225 | +#define DEBUG_PRINT(format, args...) do { \ | ||
| 14226 | +printk(KERN_CRIT "appnic:%d - DEBUG - ", __LINE__); \ | ||
| 14227 | +printk(KERN_CRIT format, ##args); \ | ||
| 14228 | +} while (0); | ||
| 14229 | +#else | ||
| 14230 | +#define DEBUG_PRINT(format, args...) | ||
| 14231 | +#endif | ||
| 14232 | + | ||
| 14233 | +/* -- LOGIO --------------------------------------------------------- */ | ||
| 14234 | + | ||
| 14235 | +#undef LOGIO | ||
| 14236 | +#define LOGIO | ||
| 14237 | +#ifdef LOGIO | ||
| 14238 | +int enable_logio = 0; | ||
| 14239 | +static inline unsigned long _READL(const char *, int, unsigned long); | ||
| 14240 | +static inline unsigned long | ||
| 14241 | +_READL(const char *file, int line, unsigned long address) | ||
| 14242 | +{ | ||
| 14243 | + unsigned long value; | ||
| 14244 | + | ||
| 14245 | + value = readl(address); | ||
| 14246 | + | ||
| 14247 | + if (0 != enable_logio) | ||
| 14248 | + printk("%s:%d - Read 0x%08lx from 0x%08lx\n", | ||
| 14249 | + file, line, value, address); | ||
| 14250 | + | ||
| 14251 | + return value; | ||
| 14252 | +} | ||
| 14253 | +#define READL(address) _READL(__FILE__, __LINE__, (address)) | ||
| 14254 | +static inline void _WRITEL(const char *, int, unsigned long, unsigned long); | ||
| 14255 | +static inline void | ||
| 14256 | +_WRITEL(const char *file, int line, unsigned long value, unsigned long address) | ||
| 14257 | +{ | ||
| 14258 | + writel(value, address); | ||
| 14259 | + | ||
| 14260 | + if (0 != enable_logio) | ||
| 14261 | + printk( "%s:%d - Wrote 0x%08lx to 0x%08lx\n", | ||
| 14262 | + file, line, value, address); | ||
| 14263 | + | ||
| 14264 | + return; | ||
| 14265 | +} | ||
| 14266 | +#define WRITEL(value, address) _WRITEL(__FILE__, __LINE__, (value), (address)) | ||
| 14267 | +#else /* LOGIO */ | ||
| 14268 | +#define READL(address) readl((address)) | ||
| 14269 | +#define WRITEL(value, address) writel((value), (address)) | ||
| 14270 | +#endif /* LOGIO */ | ||
| 14271 | + | ||
| 14272 | +/* | ||
| 14273 | + ---------------------------------------------------------------------- | ||
| 14274 | +*/ | ||
| 14275 | + | ||
| 14276 | +#define NAND_DATA_REG 0x00000000 | ||
| 14277 | +#define NAND_CMD_REG 0x00008000 | ||
| 14278 | +#define NAND_INDEX_REG 0x00008004 | ||
| 14279 | +#define NAND_STATUS1_REG 0x00008008 | ||
| 14280 | +#define NAND_STATUS2_REG 0x0000800C | ||
| 14281 | +#define NAND_ID0_REG 0x00008010 | ||
| 14282 | +#define NAND_ID1_REG 0x00008014 | ||
| 14283 | +#define NAND_ID2_REG 0x00008018 | ||
| 14284 | +#define NAND_ID3_REG 0x0000801C | ||
| 14285 | +#define NAND_ID4_REG 0x00008020 | ||
| 14286 | +#define NAND_ID5_REG 0x00008024 | ||
| 14287 | +#define NAND_ID6_REG 0x00008028 | ||
| 14288 | +#define NAND_ID7_REG 0x0000802C | ||
| 14289 | +#define NAND_INTR_EN_REG 0x00008030 | ||
| 14290 | +#define NAND_INTR_STATUS_REG 0x00008034 | ||
| 14291 | +#define NAND_INTR_REG 0x00008038 | ||
| 14292 | +#define NAND_ECC_ADDR_LOG_REG 0x0000803C | ||
| 14293 | +#define NAND_ECC_VAL_REG 0x00008040 | ||
| 14294 | +#define NAND_ECC_INJECT_REG 0x00008044 | ||
| 14295 | +#define NAND_EXT_INDEX_REG 0x00008048 | ||
| 14296 | +#define NAND_TIMING1_REG 0x0000804C | ||
| 14297 | +#define NAND_TIMING2_REG 0x00008050 | ||
| 14298 | +#define NAND_CONFIG_REG 0x00008054 | ||
| 14299 | +#define NAND_PECC_REG 0x00008058 | ||
| 14300 | + | ||
| 14301 | +#define EP501_NAND_DATA_REG 0x0000 | ||
| 14302 | +#define EP501_NAND_CMD_REG 0x8000 | ||
| 14303 | +#define EP501_NAND_INDEX_REG 0x8004 | ||
| 14304 | +#define EP501_NAND_STATUS0_REG 0x8008 | ||
| 14305 | +#define EP501_NAND_STATUS1_REG 0x800C | ||
| 14306 | +#define EP501_NAND_ID0_REG 0x8010 | ||
| 14307 | +#define EP501_NAND_ID1_REG 0x8014 | ||
| 14308 | +#define EP501_NAND_ID2_REG 0x8018 | ||
| 14309 | +#define EP501_NAND_ID3_REG 0x801C | ||
| 14310 | +#define EP501_NAND_ID4_REG 0x8020 | ||
| 14311 | +#define EP501_NAND_ID5_REG 0x8024 | ||
| 14312 | +#define EP501_NAND_ID6_REG 0x8028 | ||
| 14313 | +#define EP501_NAND_ID7_REG 0x802C | ||
| 14314 | +#define EP501_NAND_INTR_EN_REG 0x8030 | ||
| 14315 | +#define EP501_NAND_INTR_STATUS_REG 0x8034 | ||
| 14316 | +#define EP501_NAND_INTR_REG 0x8038 | ||
| 14317 | +#define EP501_NAND_ECC_ADDR_LOG_REG 0x803C | ||
| 14318 | +#define EP501_NAND_ECC_VAL_REG 0x8040 | ||
| 14319 | +#define EP501_NAND_ECC_INJECT_REG 0x8044 | ||
| 14320 | +#define EP501_NAND_EXT_INDEX_REG 0x8048 | ||
| 14321 | +#define EP501_NAND_TIMING0_REG 0x804C | ||
| 14322 | +#define EP501_NAND_TIMING1_REG 0x8050 | ||
| 14323 | +#define EP501_NAND_CONFIG_REG 0x8054 | ||
| 14324 | +#define EP501_NAND_PECC_REG 0x8058 | ||
| 14325 | + | ||
| 14326 | +#define EP501G1_NAND_DATA_REG 0x0000 | ||
| 14327 | +#define EP501G1_NAND_CMD_REG 0x8000 | ||
| 14328 | +#define EP501G1_NAND_INDEX_REG 0x8004 | ||
| 14329 | +#define EP501G1_NAND_STATUS0_REG 0x8008 | ||
| 14330 | +#define EP501G1_NAND_ID0_REG 0x8010 | ||
| 14331 | +#define EP501G1_NAND_ID2_REG 0x8018 | ||
| 14332 | +#define EP501G1_NAND_ID4_REG 0x8020 | ||
| 14333 | +#define EP501G1_NAND_ID6_REG 0x8028 | ||
| 14334 | +#define EP501G1_NAND_INTR_EN_REG 0x8030 | ||
| 14335 | +#define EP501G1_NAND_INTR_STATUS_REG 0x8034 | ||
| 14336 | +#define EP501G1_NAND_INTR_REG 0x8038 | ||
| 14337 | +#define EP501G1_NAND_EXT_INDEX_REG 0x8048 | ||
| 14338 | +#define EP501G1_NAND_TIMING0_REG 0x804C | ||
| 14339 | +#define EP501G1_NAND_TIMING1_REG 0x8050 | ||
| 14340 | +#define EP501G1_NAND_CONFIG_REG 0x8054 | ||
| 14341 | +#define EP501G1_NAND_1BIT_ECC0_STATUS 0x8058 | ||
| 14342 | +#define EP501G1_NAND_1BIT_ECC1_STATUS 0x805c | ||
| 14343 | +#define EP501G1_NAND_1BIT_ECC2_STATUS 0x8060 | ||
| 14344 | +#define EP501G1_NAND_1BIT_ECC3_STATUS 0x8064 | ||
| 14345 | +#define EP501G1_NAND_1BIT_ECC4_STATUS 0x8068 | ||
| 14346 | +#define EP501G1_NAND_1BIT_ECC5_STATUS 0x806c | ||
| 14347 | +#define EP501G1_NAND_1BIT_ECC6_STATUS 0x8070 | ||
| 14348 | +#define EP501G1_NAND_1BIT_ECC7_STATUS 0x8074 | ||
| 14349 | +#define EP501G1_NAND_BCH_STATUS 0x807c | ||
| 14350 | +#define EP501G1_NAND_SYN_R12_S0 0x8080 | ||
| 14351 | +#define EP501G1_NAND_SYN_R34_S0 0x8084 | ||
| 14352 | +#define EP501G1_NAND_SYN_R56_S0 0x8088 | ||
| 14353 | +#define EP501G1_NAND_SYN_R78_S0 0x808c | ||
| 14354 | +#define EP501G1_NAND_SYN_R12_S1 0x8090 | ||
| 14355 | +#define EP501G1_NAND_SYN_R34_S1 0x8094 | ||
| 14356 | +#define EP501G1_NAND_SYN_R56_S1 0x8098 | ||
| 14357 | +#define EP501G1_NAND_SYN_R78_S1 0x809c | ||
| 14358 | +#define EP501G1_NAND_SYN_R12_S2 0x80a0 | ||
| 14359 | +#define EP501G1_NAND_SYN_R34_S2 0x80a4 | ||
| 14360 | +#define EP501G1_NAND_SYN_R56_S2 0x80a8 | ||
| 14361 | +#define EP501G1_NAND_SYN_R78_S2 0x80ac | ||
| 14362 | +#define EP501G1_NAND_SYN_R12_S3 0x80b0 | ||
| 14363 | +#define EP501G1_NAND_SYN_R34_S3 0x80b4 | ||
| 14364 | +#define EP501G1_NAND_SYN_R56_S3 0x80b8 | ||
| 14365 | +#define EP501G1_NAND_SYN_R78_S3 0x80bc | ||
| 14366 | +#define EP501G1_NAND_SYN_R12_S4 0x80c0 | ||
| 14367 | +#define EP501G1_NAND_SYN_R34_S4 0x80c4 | ||
| 14368 | +#define EP501G1_NAND_SYN_R56_S4 0x80c8 | ||
| 14369 | +#define EP501G1_NAND_SYN_R78_S4 0x80cc | ||
| 14370 | +#define EP501G1_NAND_SYN_R12_S5 0x80d0 | ||
| 14371 | +#define EP501G1_NAND_SYN_R34_S5 0x80d4 | ||
| 14372 | +#define EP501G1_NAND_SYN_R56_S5 0x80d8 | ||
| 14373 | +#define EP501G1_NAND_SYN_R78_S5 0x80dc | ||
| 14374 | +#define EP501G1_NAND_SYN_R12_S6 0x80e0 | ||
| 14375 | +#define EP501G1_NAND_SYN_R34_S6 0x80e4 | ||
| 14376 | +#define EP501G1_NAND_SYN_R56_S6 0x80e8 | ||
| 14377 | +#define EP501G1_NAND_SYN_R78_S6 0x80ec | ||
| 14378 | +#define EP501G1_NAND_SYN_R12_S7 0x80f0 | ||
| 14379 | +#define EP501G1_NAND_SYN_R34_S7 0x80f4 | ||
| 14380 | +#define EP501G1_NAND_SYN_R56_S7 0x80f8 | ||
| 14381 | +#define EP501G1_NAND_SYN_R78_S7 0x80fc | ||
| 14382 | + | ||
| 14383 | +#define EP501G3_NAND_DATA_REG 0x0000 | ||
| 14384 | +#define EP501G3_NAND_CMD_REG 0x8000 | ||
| 14385 | +#define EP501G3_NAND_INDEX_REG 0x8004 | ||
| 14386 | +#define EP501G3_NAND_STATUS0_REG 0x8008 | ||
| 14387 | +#define EP501G3_NAND_ID0_REG 0x8010 | ||
| 14388 | +#define EP501G3_NAND_ID2_REG 0x8018 | ||
| 14389 | +#define EP501G3_NAND_ID4_REG 0x8020 | ||
| 14390 | +#define EP501G3_NAND_ID6_REG 0x8028 | ||
| 14391 | +#define EP501G3_NAND_INTR_EN_REG 0x8030 | ||
| 14392 | +#define EP501G3_NAND_INTR_STATUS_REG 0x8034 | ||
| 14393 | +#define EP501G3_NAND_INTR_REG 0x8038 | ||
| 14394 | +#define EP501G3_NAND_EXT_INDEX_REG 0x8048 | ||
| 14395 | +#define EP501G3_NAND_TIMING0_REG 0x804C | ||
| 14396 | +#define EP501G3_NAND_TIMING1_REG 0x8050 | ||
| 14397 | +#define EP501G3_NAND_CONFIG_REG 0x8054 | ||
| 14398 | +#define EP501G3_NAND_TIMING2_REG 0x805c | ||
| 14399 | +#define EP501G3_NAND_BCH_STATUS 0x807c | ||
| 14400 | +#define EP501G3_NAND_SYN_R12_S0 0x8080 | ||
| 14401 | +#define EP501G3_NAND_SYN_R34_S0 0x8084 | ||
| 14402 | +#define EP501G3_NAND_SYN_R56_S0 0x8088 | ||
| 14403 | +#define EP501G3_NAND_SYN_R78_S0 0x808c | ||
| 14404 | +#define EP501G3_NAND_SYN_R12_S1 0x8090 | ||
| 14405 | +#define EP501G3_NAND_SYN_R34_S1 0x8094 | ||
| 14406 | +#define EP501G3_NAND_SYN_R56_S1 0x8098 | ||
| 14407 | +#define EP501G3_NAND_SYN_R78_S1 0x809c | ||
| 14408 | +#define EP501G3_NAND_SYN_R12_S2 0x80a0 | ||
| 14409 | +#define EP501G3_NAND_SYN_R34_S2 0x80a4 | ||
| 14410 | +#define EP501G3_NAND_SYN_R56_S2 0x80a8 | ||
| 14411 | +#define EP501G3_NAND_SYN_R78_S2 0x80ac | ||
| 14412 | +#define EP501G3_NAND_SYN_R12_S3 0x80b0 | ||
| 14413 | +#define EP501G3_NAND_SYN_R34_S3 0x80b4 | ||
| 14414 | +#define EP501G3_NAND_SYN_R56_S3 0x80b8 | ||
| 14415 | +#define EP501G3_NAND_SYN_R78_S3 0x80bc | ||
| 14416 | +#define EP501G3_NAND_SYN_R12_S4 0x80c0 | ||
| 14417 | +#define EP501G3_NAND_SYN_R34_S4 0x80c4 | ||
| 14418 | +#define EP501G3_NAND_SYN_R56_S4 0x80c8 | ||
| 14419 | +#define EP501G3_NAND_SYN_R78_S4 0x80cc | ||
| 14420 | +#define EP501G3_NAND_SYN_R12_S5 0x80d0 | ||
| 14421 | +#define EP501G3_NAND_SYN_R34_S5 0x80d4 | ||
| 14422 | +#define EP501G3_NAND_SYN_R56_S5 0x80d8 | ||
| 14423 | +#define EP501G3_NAND_SYN_R78_S5 0x80dc | ||
| 14424 | +#define EP501G3_NAND_SYN_R12_S6 0x80e0 | ||
| 14425 | +#define EP501G3_NAND_SYN_R34_S6 0x80e4 | ||
| 14426 | +#define EP501G3_NAND_SYN_R56_S6 0x80e8 | ||
| 14427 | +#define EP501G3_NAND_SYN_R78_S6 0x80ec | ||
| 14428 | +#define EP501G3_NAND_SYN_R12_S7 0x80f0 | ||
| 14429 | +#define EP501G3_NAND_SYN_R34_S7 0x80f4 | ||
| 14430 | +#define EP501G3_NAND_SYN_R56_S7 0x80f8 | ||
| 14431 | +#define EP501G3_NAND_SYN_R78_S7 0x80fc | ||
| 14432 | +#define EP501G3_NAND_SYN_R12_S8 0x8100 | ||
| 14433 | +#define EP501G3_NAND_SYN_R34_S8 0x8104 | ||
| 14434 | +#define EP501G3_NAND_SYN_R56_S8 0x8108 | ||
| 14435 | +#define EP501G3_NAND_SYN_R78_S8 0x810c | ||
| 14436 | +#define EP501G3_NAND_SYN_R12_S9 0x8110 | ||
| 14437 | +#define EP501G3_NAND_SYN_R34_S9 0x8114 | ||
| 14438 | +#define EP501G3_NAND_SYN_R56_S9 0x8118 | ||
| 14439 | +#define EP501G3_NAND_SYN_R78_S9 0x811c | ||
| 14440 | +#define EP501G3_NAND_SYN_R12_S10 0x8120 | ||
| 14441 | +#define EP501G3_NAND_SYN_R34_S10 0x8124 | ||
| 14442 | +#define EP501G3_NAND_SYN_R56_S10 0x8128 | ||
| 14443 | +#define EP501G3_NAND_SYN_R78_S10 0x812c | ||
| 14444 | +#define EP501G3_NAND_SYN_R12_S11 0x8130 | ||
| 14445 | +#define EP501G3_NAND_SYN_R34_S11 0x8134 | ||
| 14446 | +#define EP501G3_NAND_SYN_R56_S11 0x8138 | ||
| 14447 | +#define EP501G3_NAND_SYN_R78_S11 0x813c | ||
| 14448 | +#define EP501G3_NAND_SYN_R12_S12 0x8140 | ||
| 14449 | +#define EP501G3_NAND_SYN_R34_S12 0x8144 | ||
| 14450 | +#define EP501G3_NAND_SYN_R56_S12 0x8148 | ||
| 14451 | +#define EP501G3_NAND_SYN_R78_S12 0x814c | ||
| 14452 | +#define EP501G3_NAND_SYN_R12_S13 0x8150 | ||
| 14453 | +#define EP501G3_NAND_SYN_R34_S13 0x8154 | ||
| 14454 | +#define EP501G3_NAND_SYN_R56_S13 0x8158 | ||
| 14455 | +#define EP501G3_NAND_SYN_R78_S13 0x815c | ||
| 14456 | +#define EP501G3_NAND_SYN_R12_S14 0x8160 | ||
| 14457 | +#define EP501G3_NAND_SYN_R34_S14 0x8164 | ||
| 14458 | +#define EP501G3_NAND_SYN_R56_S14 0x8168 | ||
| 14459 | +#define EP501G3_NAND_SYN_R78_S14 0x816c | ||
| 14460 | +#define EP501G3_NAND_SYN_R12_S15 0x8170 | ||
| 14461 | +#define EP501G3_NAND_SYN_R34_S15 0x8174 | ||
| 14462 | +#define EP501G3_NAND_SYN_R56_S15 0x8178 | ||
| 14463 | +#define EP501G3_NAND_SYN_R78_S15 0x817c | ||
| 14464 | + | ||
| 14465 | +/* | ||
| 14466 | + ============================================================================== | ||
| 14467 | + ============================================================================== | ||
| 14468 | + Some Oddities... | ||
| 14469 | + | ||
| 14470 | + -1- | ||
| 14471 | + Reading EP501 registers while the device is calculating ECC will | ||
| 14472 | + hang the AHB. As the only way to know that an ECC calculation is in | ||
| 14473 | + progress is to read the "extra bits" added to the interrupt status | ||
| 14474 | + register, this can cause problems. To get around this, the | ||
| 14475 | + PECC_BUSY signal from the controller is also available in a general | ||
| 14476 | + purpose system register. 0x149.0.0xc/0x0020_0040_0000_c00c, bit 24. | ||
| 14477 | + So, before reading the interrupt status register (or any other | ||
| 14478 | + register for that matter) make sure the bit mentioned above is | ||
| 14479 | + clear. See BZ21212. | ||
| 14480 | + | ||
| 14481 | + -2- | ||
| 14482 | + Extra bits have been added to the interrupt status register. See | ||
| 14483 | + BZ21196. From that defect... | ||
| 14484 | + | ||
| 14485 | + == Bit 0 | ||
| 14486 | + This bit is set when un-correctable ECC is detected. This bit can be | ||
| 14487 | + cleared by writing "0" to this register. Writing "1" has no | ||
| 14488 | + effect. An interrupt is generated if this bit and the enable bit | ||
| 14489 | + (bit 0) in the Interrupt Enable Register are "1". This bit is not | ||
| 14490 | + set if ECC is disabled. | ||
| 14491 | + | ||
| 14492 | + == Bit 1 | ||
| 14493 | + This bit is set when correctable ECC is detected. This bit can be | ||
| 14494 | + cleared by writing "0" to this register. Writing "1" has no | ||
| 14495 | + effect. An interrupt is generated if this bit and the enable bit | ||
| 14496 | + (bit 1) in the Interrupt Enable Register are "1". This bit is not | ||
| 14497 | + set if ECC is disabled. | ||
| 14498 | + | ||
| 14499 | + == Bit 2 | ||
| 14500 | + This bit is set when a rising edge is detected on the non gated | ||
| 14501 | + READY/BUSY# input from the NAND Flash. This bit can be cleared by | ||
| 14502 | + writing a "0" to this register. Writing a "1" has no effect. An | ||
| 14503 | + interrupt is generated if this bit and the enable bit (bit 2) in the | ||
| 14504 | + Interrupt Enable Register are "1". | ||
| 14505 | + | ||
| 14506 | + == Bit 3 | ||
| 14507 | + This bit is set when a falling edge is detected on the non gated | ||
| 14508 | + READY/BUSY# input from the NAND Flash. This bit can be cleared by | ||
| 14509 | + writing a "0" to this register. Writing a "1" has no effect. An | ||
| 14510 | + interrupt is generated if this bit and the enable bit (bit 3) in the | ||
| 14511 | + Interrupt Enable Register are "1". | ||
| 14512 | + | ||
| 14513 | + == Bit 4 | ||
| 14514 | + This bit is set when a falling edge is detected on the PECC_BUSY | ||
| 14515 | + signal which indicates when the NAND controller has taken control of | ||
| 14516 | + the NAND Flash for ECC byte access. This bit can be cleared by | ||
| 14517 | + writing a "0" to this register. Writing a "1" has no effect. An | ||
| 14518 | + interrupt is generated if this bit and the enable bit (bit 4) in the | ||
| 14519 | + Interrupt Enable Register are "1". | ||
| 14520 | + | ||
| 14521 | + == Bit 5 | ||
| 14522 | + This bit is read only and is the synchronized level on the non gated | ||
| 14523 | + READY/BUSY# input from the NAND Flash. This bit can be used to poll | ||
| 14524 | + the status of this signal and is not used to generate an interrupt. | ||
| 14525 | + | ||
| 14526 | + == Bit 6 | ||
| 14527 | + This bit is read only and indicates the level on the PECC_BUSY | ||
| 14528 | + signal which indicates when the NAND controller has taken control of | ||
| 14529 | + the NAND Flash for ECC byte access. This bit can be used to poll the | ||
| 14530 | + level of this signal and is not used to generate an interrupt. | ||
| 14531 | + | ||
| 14532 | + ============================================================================== | ||
| 14533 | + ============================================================================== | ||
| 14534 | +*/ | ||
| 14535 | + | ||
| 14536 | +static void *gpreg_base; | ||
| 14537 | + | ||
| 14538 | +#define LSI_NAND_PECC_BUSY_REGISTER (gpreg_base + 0x00c) | ||
| 14539 | + | ||
| 14540 | +#ifdef CONFIG_ACP_X1V1 | ||
| 14541 | +#define LSI_NAND_PECC_BUSY_MASK (1 << 25) | ||
| 14542 | +#else | ||
| 14543 | +#define LSI_NAND_PECC_BUSY_MASK (1 << 28) | ||
| 14544 | +#endif | ||
| 14545 | + | ||
| 14546 | +/* | ||
| 14547 | + ---------------------------------------------------------------------- | ||
| 14548 | + MTD structures | ||
| 14549 | +*/ | ||
| 14550 | + | ||
| 14551 | +static struct mtd_info lsi_nand_mtd = { 0 }; | ||
| 14552 | +static struct nand_chip lsi_nand_chip = { 0 }; | ||
| 14553 | + | ||
| 14554 | +#define NAND_CMD_START_ECC_READ 0x23 | ||
| 14555 | + | ||
| 14556 | +#define NAND_CMD_CE_OFF_501 0xEE | ||
| 14557 | +#define NAND_CMD_CE_OFF_501G1 0xEE | ||
| 14558 | +#define NAND_CMD_CE_OFF_501G3 0xFE | ||
| 14559 | +static int nand_cmd_ce_off; | ||
| 14560 | + | ||
| 14561 | +typedef union { | ||
| 14562 | + unsigned long raw; | ||
| 14563 | + | ||
| 14564 | + struct { | ||
| 14565 | +#ifdef CONFIG_ACP | ||
| 14566 | + unsigned long th:8; | ||
| 14567 | + unsigned long trp:8; | ||
| 14568 | + unsigned long twp:8; | ||
| 14569 | + unsigned long ts:8; | ||
| 14570 | +#else | ||
| 14571 | + unsigned long ts:8; | ||
| 14572 | + unsigned long twp:8; | ||
| 14573 | + unsigned long trp:8; | ||
| 14574 | + unsigned long th:8; | ||
| 14575 | +#endif | ||
| 14576 | + } __attribute__ ((packed)) bits; | ||
| 14577 | +} nand_timing_control_register_0_t; | ||
| 14578 | + | ||
| 14579 | +typedef union { | ||
| 14580 | + unsigned long raw; | ||
| 14581 | + | ||
| 14582 | + struct { | ||
| 14583 | +#ifdef CONFIG_ACP | ||
| 14584 | + unsigned long twb:8; | ||
| 14585 | + unsigned long trr:8; | ||
| 14586 | + unsigned long trh:8; | ||
| 14587 | + unsigned long twh:8; | ||
| 14588 | +#else | ||
| 14589 | + unsigned long twh:8; | ||
| 14590 | + unsigned long trh:8; | ||
| 14591 | + unsigned long trr:8; | ||
| 14592 | + unsigned long twb:8; | ||
| 14593 | +#endif | ||
| 14594 | + } __attribute__ ((packed)) bits; | ||
| 14595 | +} __attribute__ ((packed)) nand_timing_control_register_1_t; | ||
| 14596 | + | ||
| 14597 | +typedef union { | ||
| 14598 | + unsigned long raw; | ||
| 14599 | + | ||
| 14600 | + struct { | ||
| 14601 | +#ifdef CONFIG_ACP | ||
| 14602 | + unsigned long : 8; | ||
| 14603 | + unsigned long trhw : 8; | ||
| 14604 | + unsigned long twhr : 8; | ||
| 14605 | + unsigned long tccs : 8; | ||
| 14606 | +#else | ||
| 14607 | + unsigned long tccs : 8; | ||
| 14608 | + unsigned long twhr : 8; | ||
| 14609 | + unsigned long trhw : 8; | ||
| 14610 | + unsigned long : 8; | ||
| 14611 | +#endif | ||
| 14612 | + } __attribute__ ( ( packed ) ) bits; | ||
| 14613 | +} __attribute__ ( ( packed ) ) nand_timing_control_register_2_t; | ||
| 14614 | + | ||
| 14615 | +typedef enum { | ||
| 14616 | + LSI_NAND_NONE, LSI_NAND_EP501, LSI_NAND_EP501G1, LSI_NAND_EP501G3 | ||
| 14617 | +} lsi_nand_type_t; | ||
| 14618 | + | ||
| 14619 | +static lsi_nand_type_t lsi_nand_type; | ||
| 14620 | + | ||
| 14621 | +typedef struct page_wise_ecc_status_st { | ||
| 14622 | + unsigned err_bit : 3; | ||
| 14623 | + unsigned column : 9; | ||
| 14624 | + unsigned status : 2; | ||
| 14625 | + unsigned rsvd : 18; | ||
| 14626 | +} page_wise_ecc_status_t; | ||
| 14627 | + | ||
| 14628 | +/* | ||
| 14629 | + =============================================================================== | ||
| 14630 | + =============================================================================== | ||
| 14631 | + Concerning ECC | ||
| 14632 | + | ||
| 14633 | + The EP501 only supports 1 bit ECC mode. The EP501G1 supports both 1 | ||
| 14634 | + bit and 4 bit modes. The EP501G3 supports 4 bit, 8 bit, and 12 bit. | ||
| 14635 | + The NAND part normally used on ACP boards has 2K pages (supported by | ||
| 14636 | + all three controllers) with 64 bytes of OOB. For a 2K page, 1 bit | ||
| 14637 | + ECC uses 12 bytes, 4 bit ECC uses 32 bytes, 8 bit ECC uses 64 bytes | ||
| 14638 | + and 12 bit ECC uses 80 bytes. In order to to keep the bad block | ||
| 14639 | + markers (first two bytes) and leave some OOB available for file | ||
| 14640 | + systems etc., this driver only supports 1 bit ECC or 4 bit ECC. | ||
| 14641 | + | ||
| 14642 | + For now, the EP501 version will use 1 bit ECC (only option), the | ||
| 14643 | + EP501G1 version will use 4 bit (for compabitility with the EP501G3) | ||
| 14644 | + and teh EP501G3 versions will use 4 bit (due to the amount of OOB | ||
| 14645 | + required and for compatibility with the EP501G1). | ||
| 14646 | + | ||
| 14647 | + EP501 | ||
| 14648 | + | ||
| 14649 | + The driver has not been tested with small page (512 byte) devices. | ||
| 14650 | + The only usable option is 2K. So, the OOB should be 64 bytes. The | ||
| 14651 | + first 2 bytes are reserved for marking bad blocks. The last 12 | ||
| 14652 | + bytes are reserved for ECC. All other bytes are free. See | ||
| 14653 | + lsi_ep501_2k_ecclayout below. | ||
| 14654 | + | ||
| 14655 | + EP501G1 | ||
| 14656 | + | ||
| 14657 | + This driver has been tested with 2K and 4K page sizes using 1 bit | ||
| 14658 | + and 4 bit ECC. | ||
| 14659 | + =============================================================================== | ||
| 14660 | + =============================================================================== | ||
| 14661 | +*/ | ||
| 14662 | + | ||
| 14663 | +static struct nand_ecclayout lsi_2k_1bit_ecclayout = { | ||
| 14664 | + .eccbytes = 12, | ||
| 14665 | + .eccpos = { | ||
| 14666 | + 52, 53, 54, 55, 56, 57, | ||
| 14667 | + 58, 59, 60, 61, 62, 63}, | ||
| 14668 | + .oobfree = {{2, 50}} | ||
| 14669 | +}; | ||
| 14670 | + | ||
| 14671 | +static struct nand_ecclayout lsi_4k_1bit_ecclayout = { | ||
| 14672 | + .eccbytes = 24, | ||
| 14673 | + .eccpos = { | ||
| 14674 | + 52, 53, 54, 55, 56, 57, | ||
| 14675 | + 58, 59, 60, 61, 62, 63}, | ||
| 14676 | + .oobfree = {{2, 50}} | ||
| 14677 | +}; | ||
| 14678 | + | ||
| 14679 | +static struct nand_ecclayout lsi_2k_4bit_ecclayout = { | ||
| 14680 | + .eccbytes = 32, | ||
| 14681 | + .eccpos = { | ||
| 14682 | + 32, 33, 34, 35, 36, 37, 38, 39, | ||
| 14683 | + 40, 41, 42, 43, 44, 45, 46, 47, | ||
| 14684 | + 48, 49, 50, 51, 52, 53, 54, 55, | ||
| 14685 | + 56, 57, 58, 59, 60, 61, 62, 63}, | ||
| 14686 | + .oobfree = {{2, 30}} | ||
| 14687 | +}; | ||
| 14688 | + | ||
| 14689 | +static struct nand_ecclayout lsi_4k_4bit_ecclayout = { | ||
| 14690 | + .eccbytes = 64, | ||
| 14691 | + .eccpos = { | ||
| 14692 | + 64, 65, 66, 67, 68, 69, 70, 71, | ||
| 14693 | + 72, 73, 74, 75, 76, 77, 78, 79, | ||
| 14694 | + 80, 81, 82, 83, 84, 85, 86, 87, | ||
| 14695 | + 88, 89, 90, 91, 92, 93, 94, 95, | ||
| 14696 | + 96, 97, 98, 99, 100, 101, 102, 103, | ||
| 14697 | + 104, 105, 106, 107, 108, 109, 110, 111, | ||
| 14698 | + 112, 113, 114, 115, 116, 117, 118, 119, | ||
| 14699 | + 120, 121, 122, 123, 124, 125, 126, 127 | ||
| 14700 | + }, | ||
| 14701 | + .oobfree = {{2, 63}} | ||
| 14702 | +}; | ||
| 14703 | + | ||
| 14704 | +static struct nand_ecclayout lsi_8k_4bit_ecclayout = { | ||
| 14705 | + .eccbytes = 128, | ||
| 14706 | + .eccpos = { | ||
| 14707 | + 128, 129, 130, 131, 132, 133, 134, 135, | ||
| 14708 | + 136, 137, 138, 139, 140, 141, 142, 143, | ||
| 14709 | + 144, 145, 146, 147, 148, 149, 150, 151, | ||
| 14710 | + 152, 153, 154, 155, 156, 157, 158, 159, | ||
| 14711 | + 160, 161, 162, 163, 164, 165, 166, 167, | ||
| 14712 | + 168, 169, 170, 171, 172, 173, 174, 175, | ||
| 14713 | + 176, 177, 178, 179, 180, 181, 182, 183, | ||
| 14714 | + 184, 185, 186, 187, 188, 189, 190, 191, | ||
| 14715 | + 192, 193, 194, 195, 196, 197, 198, 199, | ||
| 14716 | + 200, 201, 202, 203, 204, 205, 206, 207, | ||
| 14717 | + 208, 209, 210, 211, 212, 213, 214, 215, | ||
| 14718 | + 216, 217, 218, 219, 220, 221, 222, 223, | ||
| 14719 | + 224, 225, 226, 227, 228, 229, 230, 231, | ||
| 14720 | + 232, 233, 234, 235, 236, 237, 238, 239, | ||
| 14721 | + 240, 241, 242, 243, 244, 245, 246, 247, | ||
| 14722 | + 248, 249, 250, 251, 252, 253, 254, 255 | ||
| 14723 | + }, | ||
| 14724 | + .oobfree = {{2, 126}} | ||
| 14725 | +}; | ||
| 14726 | + | ||
| 14727 | +static struct mtd_partition *partition_info; | ||
| 14728 | +static const char *probes[] = { "cmdlinepart", NULL }; | ||
| 14729 | + | ||
| 14730 | +/* | ||
| 14731 | + ------------------------------------------------------------------------------- | ||
| 14732 | + lsi_nand_hwcontrol | ||
| 14733 | +*/ | ||
| 14734 | + | ||
| 14735 | +static void | ||
| 14736 | +lsi_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl) | ||
| 14737 | +{ | ||
| 14738 | + struct nand_chip *chip = mtd->priv; | ||
| 14739 | + | ||
| 14740 | + if (cmd != NAND_CMD_NONE) { | ||
| 14741 | + WRITEL (cmd, (chip->IO_ADDR_W + NAND_CMD_REG)); | ||
| 14742 | + } | ||
| 14743 | + | ||
| 14744 | + return; | ||
| 14745 | +} | ||
| 14746 | + | ||
| 14747 | +/* | ||
| 14748 | + ------------------------------------------------------------------------------ | ||
| 14749 | + lsi_nand_device_ready | ||
| 14750 | + | ||
| 14751 | + The READ/BUSY# input from the NAND device(s) (ORed if there are more | ||
| 14752 | + than one) is availble as an extra bit in the interrupt status | ||
| 14753 | + register. Note that this register shouldn't be read unless the | ||
| 14754 | + controller is not in the middle of calculating ECC (see "Some | ||
| 14755 | + Oddities..." above). | ||
| 14756 | +*/ | ||
| 14757 | + | ||
| 14758 | +static int | ||
| 14759 | +lsi_nand_device_ready(struct mtd_info *mtd) | ||
| 14760 | +{ | ||
| 14761 | + struct nand_chip *chip = mtd->priv; | ||
| 14762 | + unsigned long interrupt_status; | ||
| 14763 | + | ||
| 14764 | + /* Get the status. */ | ||
| 14765 | + interrupt_status = READL(chip->IO_ADDR_R + NAND_INTR_STATUS_REG); | ||
| 14766 | + | ||
| 14767 | + return interrupt_status & NAND_STATUS_TRUE_READY; | ||
| 14768 | +} | ||
| 14769 | + | ||
| 14770 | +/** | ||
| 14771 | + * lsi_nand_command - [DEFAULT] Send command to NAND large page device | ||
| 14772 | + * @mtd: MTD device structure | ||
| 14773 | + * @command: the command to be sent | ||
| 14774 | + * @column: the column address for this command, -1 if none | ||
| 14775 | + * @page_addr: the page address for this command, -1 if none | ||
| 14776 | + * | ||
| 14777 | + * Send command to NAND device. This is the version for the new large page | ||
| 14778 | + * devices We dont have the separate regions as we have in the small page | ||
| 14779 | + * devices. We must emulate NAND_CMD_READOOB to keep the code compatible. | ||
| 14780 | + */ | ||
| 14781 | +static void | ||
| 14782 | +lsi_nand_command(struct mtd_info *mtd, unsigned int command, | ||
| 14783 | + int column, int page_addr) | ||
| 14784 | +{ | ||
| 14785 | + register struct nand_chip *chip = mtd->priv; | ||
| 14786 | + unsigned int status = 0; | ||
| 14787 | + | ||
| 14788 | + DEBUG_PRINT("command=0x%x\n", command); | ||
| 14789 | + command &= 0xff; | ||
| 14790 | + | ||
| 14791 | + /* Emulate NAND_CMD_READOOB */ | ||
| 14792 | + if (command == NAND_CMD_READOOB) { | ||
| 14793 | + column += mtd->writesize; | ||
| 14794 | + command = NAND_CMD_READ0; | ||
| 14795 | + } | ||
| 14796 | + | ||
| 14797 | + /* return if unhandled command is issued */ | ||
| 14798 | + if (command != NAND_CMD_READ0 && | ||
| 14799 | + command != NAND_CMD_SEQIN && | ||
| 14800 | + command != NAND_CMD_ERASE1 && | ||
| 14801 | + command != NAND_CMD_STATUS && | ||
| 14802 | + command != NAND_CMD_READID && | ||
| 14803 | + command != NAND_CMD_RESET && | ||
| 14804 | + command != NAND_CMD_START_ECC_READ && | ||
| 14805 | + command != NAND_CMD_PAGEPROG && | ||
| 14806 | + command != NAND_CMD_ERASE2) { | ||
| 14807 | + printk(KERN_ERR | ||
| 14808 | + "lsi_nand_command(): WARN: Unhandled command 0x%x " | ||
| 14809 | + "issued for page=0x%x, column=0x%x.\n", | ||
| 14810 | + command, page_addr, column); | ||
| 14811 | + return; | ||
| 14812 | + } | ||
| 14813 | + | ||
| 14814 | + /* Command latch cycle */ | ||
| 14815 | + chip->cmd_ctrl(mtd, command, | ||
| 14816 | + NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE); | ||
| 14817 | + | ||
| 14818 | + if (column != -1 || page_addr != -1) { | ||
| 14819 | + unsigned long index = 0; | ||
| 14820 | + unsigned long extended_index = 0; | ||
| 14821 | + | ||
| 14822 | + /* column number */ | ||
| 14823 | + /* | ||
| 14824 | + Since the ACP uses 8 bit device access, only that | ||
| 14825 | + mode is supported. | ||
| 14826 | + */ | ||
| 14827 | + | ||
| 14828 | + if (LSI_NAND_EP501 == lsi_nand_type) { | ||
| 14829 | + /* column number */ | ||
| 14830 | + if (column != -1) | ||
| 14831 | + index = column & 0xfff; | ||
| 14832 | + | ||
| 14833 | + /* page and block number */ | ||
| 14834 | + if (page_addr != -1) | ||
| 14835 | + index += ((page_addr & 0x7ffff) << 12); | ||
| 14836 | + } else { | ||
| 14837 | + /* column number */ | ||
| 14838 | + if (-1 != column) { | ||
| 14839 | + switch (mtd->writesize) { | ||
| 14840 | + case 512: | ||
| 14841 | + index |= (column & 0x1ff); | ||
| 14842 | + break; | ||
| 14843 | + case 2048: | ||
| 14844 | + index |= (column & 0xfff); | ||
| 14845 | + break; | ||
| 14846 | + case 4096: | ||
| 14847 | + index |= (column & 0x1fff); | ||
| 14848 | + break; | ||
| 14849 | + default: | ||
| 14850 | + break; | ||
| 14851 | + } | ||
| 14852 | + } | ||
| 14853 | + | ||
| 14854 | + /* page_addr and block number */ | ||
| 14855 | + if (-1 != page_addr) { | ||
| 14856 | + switch (mtd->writesize) { | ||
| 14857 | + case 512: | ||
| 14858 | + index |= (page_addr & 0x7fffff) << 9; | ||
| 14859 | + break; | ||
| 14860 | + case 2048: | ||
| 14861 | + index |= (page_addr & 0xfffff) << 12; | ||
| 14862 | + extended_index |= (page_addr & 0xfff00000); | ||
| 14863 | + break; | ||
| 14864 | + case 4096: | ||
| 14865 | + index |= (page_addr & 0x7ffff) << 13; | ||
| 14866 | + extended_index |= (page_addr & 0xfff80000); | ||
| 14867 | + break; | ||
| 14868 | + default: | ||
| 14869 | + break; | ||
| 14870 | + } | ||
| 14871 | + } | ||
| 14872 | + } | ||
| 14873 | + | ||
| 14874 | + /* write index reg */ | ||
| 14875 | + WRITEL(index, chip->IO_ADDR_W + NAND_INDEX_REG); | ||
| 14876 | + | ||
| 14877 | + /* write ext index reg */ | ||
| 14878 | + WRITEL(extended_index, chip->IO_ADDR_W + NAND_EXT_INDEX_REG); | ||
| 14879 | + | ||
| 14880 | + mb(); | ||
| 14881 | + } | ||
| 14882 | + | ||
| 14883 | + /* for read command, send 0xe0 so data is populated */ | ||
| 14884 | + if (command == NAND_CMD_READ0) { | ||
| 14885 | + chip->cmd_ctrl(mtd, NAND_CMD_RNDOUTSTART, | ||
| 14886 | + NAND_NCE | NAND_CLE | NAND_CTRL_CHANGE); | ||
| 14887 | + do { | ||
| 14888 | + udelay(chip->chip_delay); | ||
| 14889 | + status = READL((void *)LSI_NAND_PECC_BUSY_REGISTER); | ||
| 14890 | + } while (0 != (status & LSI_NAND_PECC_BUSY_MASK)); | ||
| 14891 | + | ||
| 14892 | + /* wait until CHIP_BUSY goes low */ | ||
| 14893 | + do { | ||
| 14894 | + udelay(chip->chip_delay); | ||
| 14895 | + status = chip->dev_ready(mtd); | ||
| 14896 | + } while (!status); | ||
| 14897 | + } else if (command == NAND_CMD_STATUS) { | ||
| 14898 | + udelay(chip->chip_delay); | ||
| 14899 | + } | ||
| 14900 | + | ||
| 14901 | + return; | ||
| 14902 | +} | ||
| 14903 | + | ||
| 14904 | +/** | ||
| 14905 | + * lsi_nand_read_buf - [DEFAULT] read chip data into buffer | ||
| 14906 | + * @mtd: MTD device structure | ||
| 14907 | + * @buf: buffer to store date | ||
| 14908 | + * @len: number of bytes to read | ||
| 14909 | + * | ||
| 14910 | + * Default read function for 8bit buswith | ||
| 14911 | + */ | ||
| 14912 | +static void lsi_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len) | ||
| 14913 | +{ | ||
| 14914 | + int i = 0; | ||
| 14915 | + struct nand_chip * chip = (struct nand_chip *) mtd->priv; | ||
| 14916 | + uint32_t * p = (uint32_t *)buf; | ||
| 14917 | + | ||
| 14918 | +#if defined(LOGIO) | ||
| 14919 | + if (0 != enable_logio) | ||
| 14920 | + printk("Reading NAND Buffer (len=%d)...\n", len); | ||
| 14921 | +#endif | ||
| 14922 | + | ||
| 14923 | + for (i = 0; i < (len >> 2); i++) { | ||
| 14924 | + p[i] = readl(chip->IO_ADDR_R); | ||
| 14925 | + } | ||
| 14926 | + | ||
| 14927 | + return; | ||
| 14928 | +} | ||
| 14929 | + | ||
| 14930 | +/** | ||
| 14931 | + * lsi_nand_write_buf - [DEFAULT] write buffer to chip | ||
| 14932 | + * @mtd: MTD device structure | ||
| 14933 | + * @buf: data buffer | ||
| 14934 | + * @len: number of bytes to write | ||
| 14935 | + * | ||
| 14936 | + * Default write function for 8bit buswith | ||
| 14937 | + */ | ||
| 14938 | +static void | ||
| 14939 | +lsi_nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len) | ||
| 14940 | +{ | ||
| 14941 | + int i = 0; | ||
| 14942 | + struct nand_chip *chip = mtd->priv; | ||
| 14943 | + uint32_t *p = (uint32_t *)buf; | ||
| 14944 | + | ||
| 14945 | +#if defined(LOGIO) | ||
| 14946 | + if (0 != enable_logio) | ||
| 14947 | + printk("Writing NAND Buffer (len=%d)...\n", len); | ||
| 14948 | +#endif | ||
| 14949 | + | ||
| 14950 | + for (i = 0; i < (len >> 2); i++) { | ||
| 14951 | + writel(p[i], chip->IO_ADDR_W); | ||
| 14952 | + } | ||
| 14953 | + | ||
| 14954 | + return; | ||
| 14955 | +} | ||
| 14956 | + | ||
| 14957 | +/** | ||
| 14958 | + * lsi_nand_verify_buf - [DEFAULT] Verify chip data against buffer | ||
| 14959 | + * @mtd: MTD device structure | ||
| 14960 | + * @buf: buffer containing the data to compare | ||
| 14961 | + * @len: number of bytes to compare | ||
| 14962 | + * | ||
| 14963 | + * Default verify function for 8bit buswith | ||
| 14964 | + */ | ||
| 14965 | +static int lsi_nand_verify_buf(struct mtd_info *mtd, const uint8_t *buf, int len) | ||
| 14966 | +{ | ||
| 14967 | + int i; | ||
| 14968 | + struct nand_chip *chip = mtd->priv; | ||
| 14969 | + uint32_t *p = (uint32_t *)buf; | ||
| 14970 | + | ||
| 14971 | + for (i = 0; i < (len >> 2); i++) { | ||
| 14972 | + udelay(chip->chip_delay); | ||
| 14973 | + if (p[i] != readl((uint32_t *)chip->IO_ADDR_R)) { | ||
| 14974 | + return -EFAULT; | ||
| 14975 | + } | ||
| 14976 | + } | ||
| 14977 | + | ||
| 14978 | + return 0; | ||
| 14979 | +} | ||
| 14980 | + | ||
| 14981 | +static int lsi_nand_read_status(struct mtd_info *mtd) | ||
| 14982 | +{ | ||
| 14983 | + struct nand_chip *chip = mtd->priv; | ||
| 14984 | + | ||
| 14985 | + chip->cmd_ctrl(mtd, NAND_CMD_STATUS, 0); | ||
| 14986 | + | ||
| 14987 | + return READL(chip->IO_ADDR_R + NAND_STATUS1_REG) & 0xff; | ||
| 14988 | +} | ||
| 14989 | + | ||
| 14990 | + | ||
| 14991 | +/** | ||
| 14992 | + * lsi_nand_wait - [DEFAULT] wait until the command is done | ||
| 14993 | + * @mtd: MTD device structure | ||
| 14994 | + * @chip: NAND chip structure | ||
| 14995 | + * | ||
| 14996 | + * Wait for command done. This applies to erase and program only | ||
| 14997 | + * Erase can take up to 400ms and program up to 20ms according to | ||
| 14998 | + * general NAND and SmartMedia specs | ||
| 14999 | + */ | ||
| 15000 | +static int lsi_nand_wait(struct mtd_info *mtd, struct nand_chip *chip) | ||
| 15001 | +{ | ||
| 15002 | + unsigned long status = 0; | ||
| 15003 | + loff_t offset = 0; | ||
| 15004 | + | ||
| 15005 | + /* | ||
| 15006 | + When reading or writing, wait for the | ||
| 15007 | + controller's PECC_BUSY signal to clear. | ||
| 15008 | + */ | ||
| 15009 | +#if 0 | ||
| 15010 | + if (FL_READING == chip->state || FL_WRITING == chip->state) { | ||
| 15011 | + for (;;) { | ||
| 15012 | + status = READL((void *)LSI_NAND_PECC_BUSY_REGISTER); | ||
| 15013 | + | ||
| 15014 | + if (0 == (status & LSI_NAND_PECC_BUSY_MASK)) | ||
| 15015 | + break; | ||
| 15016 | + | ||
| 15017 | + udelay(chip->chip_delay); | ||
| 15018 | + } | ||
| 15019 | + } | ||
| 15020 | +#else | ||
| 15021 | + for (;;) { | ||
| 15022 | + status = READL((void *)LSI_NAND_PECC_BUSY_REGISTER); | ||
| 15023 | + | ||
| 15024 | + if (0 == (status & LSI_NAND_PECC_BUSY_MASK)) | ||
| 15025 | + break; | ||
| 15026 | + | ||
| 15027 | + udelay(chip->chip_delay); | ||
| 15028 | + } | ||
| 15029 | +#endif | ||
| 15030 | + | ||
| 15031 | + /* | ||
| 15032 | + In all cases, wait for the NAND device to be "ready". | ||
| 15033 | + | ||
| 15034 | + N.B. The FL_READING case is handled in lsi_nand_command(). | ||
| 15035 | + */ | ||
| 15036 | + | ||
| 15037 | + if (FL_WRITING == chip->state || FL_ERASING == chip->state) { | ||
| 15038 | + for (;;) { | ||
| 15039 | + if (chip->dev_ready(mtd)) | ||
| 15040 | + break; | ||
| 15041 | + | ||
| 15042 | + udelay(chip->chip_delay); | ||
| 15043 | + } | ||
| 15044 | + } | ||
| 15045 | + | ||
| 15046 | + /* | ||
| 15047 | + Then get the status. | ||
| 15048 | + */ | ||
| 15049 | + | ||
| 15050 | + for (;;) { | ||
| 15051 | + status = lsi_nand_read_status(mtd); | ||
| 15052 | + | ||
| 15053 | + if (0 != (status & NAND_STATUS_READY)) | ||
| 15054 | + break; | ||
| 15055 | + | ||
| 15056 | + udelay(chip->chip_delay); | ||
| 15057 | + } | ||
| 15058 | + | ||
| 15059 | + if (status & NAND_STATUS_FAIL) { | ||
| 15060 | + offset = (READL(chip->IO_ADDR_R + NAND_INDEX_REG) / | ||
| 15061 | + mtd->writesize) * mtd->writesize; | ||
| 15062 | + printk(KERN_ERR | ||
| 15063 | + "lsi_nand_wait(): Action %d failed for " | ||
| 15064 | + "Offset: 0x%llx, status 0x%lx\n", | ||
| 15065 | + chip->state, offset, status); | ||
| 15066 | + } | ||
| 15067 | + | ||
| 15068 | + return status; | ||
| 15069 | +} | ||
| 15070 | + | ||
| 15071 | +/* | ||
| 15072 | + lsi_nand_ecc_hwctl | ||
| 15073 | +*/ | ||
| 15074 | + | ||
| 15075 | +void | ||
| 15076 | +lsi_nand_ecc_hwctl(struct mtd_info *mtd, int mode) | ||
| 15077 | +{ | ||
| 15078 | + /* nothing to do to enable ECC */ | ||
| 15079 | + return; | ||
| 15080 | +} | ||
| 15081 | + | ||
| 15082 | +/** | ||
| 15083 | + * lsi_nand_ecc_calculate | ||
| 15084 | + */ | ||
| 15085 | + | ||
| 15086 | +int | ||
| 15087 | +lsi_nand_ecc_calculate(struct mtd_info *mtd, const uint8_t *dat, | ||
| 15088 | + uint8_t *ecc_code) | ||
| 15089 | +{ | ||
| 15090 | + struct nand_chip *chip = mtd->priv; | ||
| 15091 | + | ||
| 15092 | + /* start ECC calculation */ | ||
| 15093 | + if (chip->state == FL_READING) { | ||
| 15094 | + chip->cmdfunc(mtd, NAND_CMD_START_ECC_READ, -1, -1); | ||
| 15095 | + } else if (chip->state == FL_WRITING) { | ||
| 15096 | + chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); | ||
| 15097 | + } | ||
| 15098 | + | ||
| 15099 | + /* wait for PECC_BUSY to go down */ | ||
| 15100 | + return chip->waitfunc(mtd, chip); | ||
| 15101 | +} | ||
| 15102 | + | ||
| 15103 | +/** | ||
| 15104 | + * lsi_nand_ecc_correct | ||
| 15105 | + */ | ||
| 15106 | + | ||
| 15107 | +int | ||
| 15108 | +lsi_nand_ecc_correct(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc, | ||
| 15109 | + uint8_t *calc_ecc) | ||
| 15110 | +{ | ||
| 15111 | + /* nothing to do to correct ECC */ | ||
| 15112 | + return 0; | ||
| 15113 | +} | ||
| 15114 | + | ||
| 15115 | +/* | ||
| 15116 | + ------------------------------------------------------------------------------ | ||
| 15117 | + report_ecc_errors_ep501 | ||
| 15118 | +*/ | ||
| 15119 | + | ||
| 15120 | +static int | ||
| 15121 | +report_ecc_errors_ep501(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 15122 | + uint8_t *buffer, int page) | ||
| 15123 | +{ | ||
| 15124 | + int rc = 0; | ||
| 15125 | + unsigned long ecc_status; | ||
| 15126 | + page_wise_ecc_status_t *ecc_status_reg = | ||
| 15127 | + (page_wise_ecc_status_t *)&ecc_status; | ||
| 15128 | + int column; | ||
| 15129 | + int i; | ||
| 15130 | + | ||
| 15131 | + for (i = 0; i < (mtd->writesize >> 9); i++) { | ||
| 15132 | + ecc_status = READL(chip->IO_ADDR_R + EP501_NAND_PECC_REG); | ||
| 15133 | + column = (i << 9) + ecc_status_reg->column; | ||
| 15134 | + | ||
| 15135 | + if (1 == ecc_status_reg->status) { | ||
| 15136 | + printk(KERN_NOTICE | ||
| 15137 | + "Single ECC Error: " | ||
| 15138 | + "Page=0x%x Column=0x%x Bit=0x%x\n", | ||
| 15139 | + page, column, ecc_status_reg->err_bit); | ||
| 15140 | + | ||
| 15141 | + if (column < mtd->writesize) { | ||
| 15142 | + buffer[column] ^= (1 << ecc_status_reg->err_bit); | ||
| 15143 | + ++mtd->ecc_stats.corrected; | ||
| 15144 | + } else { | ||
| 15145 | + printk(KERN_ERR | ||
| 15146 | + "Single ECC Error Not Corrected: " | ||
| 15147 | + "Column 0x%x not in " | ||
| 15148 | + "Page Size 0x%x\n", | ||
| 15149 | + column, mtd->writesize); | ||
| 15150 | + rc = -1; | ||
| 15151 | + } | ||
| 15152 | + } else if((ecc_status & 0x3000) == 2) { | ||
| 15153 | + printk(KERN_ERR | ||
| 15154 | + "Uncorrectable ECC Error: " | ||
| 15155 | + "Page=0x%x Column=0x%x\n", | ||
| 15156 | + page, column); | ||
| 15157 | + rc = -1; | ||
| 15158 | + } | ||
| 15159 | + } | ||
| 15160 | + | ||
| 15161 | + return rc; | ||
| 15162 | +} | ||
| 15163 | + | ||
| 15164 | +int i_to_a[8192] = { | ||
| 15165 | + -1, 0, 1, 7953, 2, 7715, 7954, 3551, 3, 3313, 7716, 5441, | ||
| 15166 | + 7955, 1529, 3552, 7477, 4, 7239, 3314, 1441, 7717, 7102, 5442, | ||
| 15167 | + 1291, 7956, 7545, 1530, 3075, 3553, 5203, 7478, 2784, 5, 2546, | ||
| 15168 | + 7240, 5080, 3315, 4596, 1442, 4965, 7718, 466, 7103, 7307, | ||
| 15169 | + 5443, 2837, 1292, 822, 7957, 801, 7546, 7001, 1531, 1203, | ||
| 15170 | + 3076, 4294, 3554, 1053, 5204, 3033, 7479, 6073, 2785, 6864, 6, | ||
| 15171 | + 6626, 2547, 7658, 7241, 2691, 5081, 5835, 3316, 2893, 4597, | ||
| 15172 | + 815, 1443, 2795, 4966, 2905, 7719, 3058, 467, 563, 7104, 6763, | ||
| 15173 | + 7308, 1956, 5444, 4056, 2838, 838, 1293, 6335, 823, 965, 7958, | ||
| 15174 | + 3626, 802, 2308, 7547, 4842, 7002, 7279, 1532, 4727, 1204, | ||
| 15175 | + 2462, 3077, 8003, 4295, 4358, 3555, 584, 1054, 7877, 5205, | ||
| 15176 | + 2629, 3034, 2599, 7480, 4992, 6074, 228, 2786, 7069, 6865, | ||
| 15177 | + 6970, 7, 6732, 6627, 4178, 2548, 7845, 7659, 6831, 7242, 5051, | ||
| 15178 | + 2692, 4754, 5082, 8181, 5836, 5864, 3317, 1826, 2894, 346, | ||
| 15179 | + 4598, 7639, 816, 4352, 1444, 2361, 2796, 4313, 4967, 5263, | ||
| 15180 | + 2906, 2391, 7720, 6584, 3059, 3388, 468, 2070, 564, 7693, | ||
| 15181 | + 7105, 7041, 6764, 1387, 7309, 6882, 1957, 4604, 5445, 4120, | ||
| 15182 | + 4057, 1433, 2839, 883, 839, 7765, 1294, 7442, 6336, 4489, 824, | ||
| 15183 | + 2224, 966, 260, 7959, 5281, 3627, 6388, 803, 7420, 2309, 2970, | ||
| 15184 | + 7548, 5597, 4843, 4681, 7003, 4373, 7280, 2453, 1533, 2667, | ||
| 15185 | + 4728, 213, 1205, 7320, 2463, 2557, 3078, 34, 8004, 2655, 4296, | ||
| 15186 | + 577, 4359, 4017, 3556, 727, 585, 4795, 1055, 3138, 7878, 6097, | ||
| 15187 | + 5206, 440, 2630, 3818, 3035, 600, 2600, 7645, 7481, 4303, | ||
| 15188 | + 4993, 2820, 6075, 325, 229, 7021, 2787, 1718, 7070, 8147, | ||
| 15189 | + 6866, 2746, 6971, 6525, 8, 6287, 6733, 3363, 6628, 2882, 4179, | ||
| 15190 | + 2508, 2549, 6263, 7846, 1480, 7660, 7909, 6832, 4562, 7243, | ||
| 15191 | + 6013, 5052, 4065, 2693, 2582, 4755, 2138, 5083, 6783, 8182, | ||
| 15192 | + 6197, 5837, 5184, 5865, 87, 3318, 7602, 1827, 489, 2895, 4557, | ||
| 15193 | + 347, 7177, 4599, 5859, 7640, 2448, 817, 7472, 4353, 2900, | ||
| 15194 | + 1445, 7407, 2362, 5907, 2797, 2639, 4314, 362, 4968, 3697, | ||
| 15195 | + 5264, 202, 2907, 3580, 2392, 1752, 7721, 6899, 6585, 5043, | ||
| 15196 | + 3060, 6150, 3389, 1846, 469, 2732, 2071, 6180, 565, 1726, | ||
| 15197 | + 7694, 7182, 7106, 2215, 7042, 5823, 6765, 5568, 1388, 4135, | ||
| 15198 | + 7310, 3237, 6883, 5359, 1958, 4443, 4605, 1761, 5446, 3779, | ||
| 15199 | + 4121, 136, 4058, 1688, 1434, 339, 2840, 3670, 884, 7987, 840, | ||
| 15200 | + 2417, 7766, 352, 1295, 4024, 7443, 2429, 6337, 8166, 4490, | ||
| 15201 | + 7494, 825, 2319, 2225, 2611, 967, 2330, 261, 7082, 7960, 4389, | ||
| 15202 | + 5282, 6494, 3628, 3940, 6389, 7145, 804, 6593, 7421, 1411, | ||
| 15203 | + 2310, 4211, 2971, 7607, 7549, 5626, 5598, 1695, 4844, 283, | ||
| 15204 | + 4682, 7943, 7004, 6125, 4374, 4813, 7281, 4516, 2454, 7979, | ||
| 15205 | + 1534, 2153, 2668, 3174, 4729, 5507, 214, 5025, 1206, 4956, | ||
| 15206 | + 7321, 2123, 2464, 4075, 2558, 3323, 3079, 1335, 35, 1588, | ||
| 15207 | + 8005, 108, 2656, 6609, 4297, 4114, 578, 795, 4360, 1329, 4018, | ||
| 15208 | + 7401, 3557, 22, 728, 6678, 586, 1995, 4796, 1986, 1056, 3018, | ||
| 15209 | + 3139, 7204, 7879, 4251, 6098, 494, 5207, 4225, 441, 3882, | ||
| 15210 | + 2631, 1195, 3819, 6271, 3036, 7527, 601, 6242, 2601, 5487, | ||
| 15211 | + 7646, 645, 7482, 1544, 4304, 6346, 4994, 3150, 2821, 1857, | ||
| 15212 | + 6076, 7455, 326, 2351, 230, 6456, 7022, 1832, 2788, 4366, | ||
| 15213 | + 1719, 4244, 7071, 550, 8148, 6644, 6867, 3187, 2747, 6803, | ||
| 15214 | + 6972, 1149, 6526, 6444, 9, 6206, 6288, 2811, 6734, 5427, 3364, | ||
| 15215 | + 911, 6629, 4158, 2883, 2949, 4180, 6565, 2509, 3585, 2550, | ||
| 15216 | + 1949, 6264, 4128, 7847, 4006, 1481, 989, 7661, 6406, 7910, | ||
| 15217 | + 5343, 6833, 7568, 4563, 312, 7244, 1160, 6014, 1306, 5053, | ||
| 15218 | + 6108, 4066, 1215, 2694, 1619, 2583, 2680, 4756, 1108, 2139, | ||
| 15219 | + 2912, 5084, 1594, 6784, 3402, 8183, 6279, 6198, 6218, 5838, | ||
| 15220 | + 3764, 5185, 7217, 5866, 2113, 88, 6037, 3319, 7397, 7603, | ||
| 15221 | + 7975, 1828, 6440, 490, 641, 2896, 1748, 4558, 83, 348, 7078, | ||
| 15222 | + 7178, 1757, 4600, 256, 5860, 2387, 7641, 6521, 2449, 4013, | ||
| 15223 | + 818, 6860, 7473, 2780, 4354, 6966, 2901, 961, 1446, 407, 7408, | ||
| 15224 | + 7924, 2363, 5326, 5908, 5249, 2798, 2340, 2640, 7289, 4315, | ||
| 15225 | + 6004, 363, 2397, 4969, 41, 3698, 3987, 5265, 3644, 203, 8057, | ||
| 15226 | + 2908, 6033, 3581, 308, 2393, 953, 1753, 957, 7722, 2263, 6900, | ||
| 15227 | + 4151, 6586, 6256, 5044, 3306, 3061, 6907, 6151, 666, 3390, | ||
| 15228 | + 3005, 1847, 3702, 470, 7369, 2733, 143, 2072, 1402, 6181, | ||
| 15229 | + 3973, 566, 1497, 1727, 6355, 7695, 1173, 7183, 3991, 7107, | ||
| 15230 | + 7741, 2216, 1321, 7043, 5295, 5824, 4278, 6766, 155, 5569, | ||
| 15231 | + 5887, 1389, 4575, 4136, 4973, 7311, 1341, 3238, 5388, 6884, | ||
| 15232 | + 1457, 5360, 5166, 1959, 7705, 4444, 6689, 4606, 7115, 1762, | ||
| 15233 | + 45, 5447, 7163, 3780, 617, 4122, 2381, 137, 1091, 4059, 5817, | ||
| 15234 | + 1689, 3876, 1435, 557, 340, 207, 2841, 538, 3671, 1097, 885, | ||
| 15235 | + 1350, 7988, 7854, 841, 6371, 2418, 2295, 7767, 4908, 353, | ||
| 15236 | + 8061, 1296, 3507, 4025, 1915, 7444, 2936, 2430, 8132, 6338, | ||
| 15237 | + 4787, 8167, 1907, 4491, 5155, 7495, 5269, 826, 3085, 2320, | ||
| 15238 | + 6297, 2226, 2922, 2612, 3837, 968, 6716, 2331, 4718, 262, | ||
| 15239 | + 1885, 7083, 3648, 7961, 6226, 4390, 6049, 5283, 3125, 6495, | ||
| 15240 | + 3250, 3629, 2270, 3941, 4434, 6390, 5127, 7146, 2644, 805, | ||
| 15241 | + 4324, 6594, 5453, 7422, 4400, 1412, 7671, 2311, 4984, 4212, | ||
| 15242 | + 6025, 2972, 1242, 7608, 7293, 7550, 8040, 5627, 7587, 5599, | ||
| 15243 | + 4422, 1696, 4946, 4845, 5735, 284, 6545, 4683, 5959, 7944, | ||
| 15244 | + 2802, 7005, 6615, 6126, 5775, 4375, 3827, 4814, 8070, 7282, | ||
| 15245 | + 1900, 4517, 2992, 2455, 3811, 7980, 2344, 1535, 1514, 2154, | ||
| 15246 | + 2242, 2669, 3606, 3175, 3342, 4730, 5994, 5508, 3459, 215, | ||
| 15247 | + 8155, 5026, 367, 1207, 4938, 4957, 7169, 7322, 5669, 2124, | ||
| 15248 | + 996, 2465, 124, 4076, 5897, 2559, 3950, 3324, 2401, 3080, 533, | ||
| 15249 | + 1336, 7364, 36, 251, 1589, 1944, 8006, 6939, 109, 4524, 2657, | ||
| 15250 | + 4933, 6610, 4319, 4298, 2662, 4115, 1821, 579, 3053, 796, | ||
| 15251 | + 7234, 4361, 4220, 1330, 5621, 4019, 2210, 7402, 6008, 3558, | ||
| 15252 | + 6844, 23, 7380, 729, 6506, 6679, 2092, 587, 7729, 1996, 2081, | ||
| 15253 | + 4797, 2373, 1987, 7412, 1057, 4529, 3019, 3786, 3140, 2191, | ||
| 15254 | + 7205, 7514, 7880, 7256, 4252, 3205, 6099, 4587, 495, 7928, | ||
| 15255 | + 5208, 5401, 4226, 3541, 442, 8089, 3883, 176, 2632, 101, 1196, | ||
| 15256 | + 876, 3820, 1224, 6272, 1450, 3037, 114, 7528, 3485, 602, 1231, | ||
| 15257 | + 6243, 2179, 2602, 5612, 5488, 3432, 7647, 7749, 646, 411, | ||
| 15258 | + 7483, 7864, 1545, 6661, 4305, 4805, 6347, 3197, 4995, 1608, | ||
| 15259 | + 3151, 1137, 2822, 6651, 1858, 5912, 6077, 6944, 7456, 623, | ||
| 15260 | + 327, 7810, 2352, 1488, 231, 4620, 6457, 2494, 7023, 5942, | ||
| 15261 | + 1833, 5253, 2789, 1523, 4367, 8175, 1720, 7903, 4245, 4205, | ||
| 15262 | + 7072, 6559, 551, 2999, 8149, 5121, 6645, 2367, 6868, 8011, | ||
| 15263 | + 3188, 1977, 2748, 5585, 6804, 5377, 6973, 3897, 1150, 64, | ||
| 15264 | + 6527, 4474, 6445, 5330, 10, 5092, 6207, 4692, 6289, 1969, | ||
| 15265 | + 2812, 4236, 6735, 3709, 5428, 3659, 3365, 8017, 912, 7914, | ||
| 15266 | + 6630, 1001, 4159, 7773, 2884, 1739, 2950, 4886, 4181, 5139, | ||
| 15267 | + 6566, 5718, 2510, 3570, 3586, 5347, 2551, 4346, 1950, 1285, | ||
| 15268 | + 6265, 7937, 4129, 2132, 7848, 3967, 4007, 983, 1482, 7508, | ||
| 15269 | + 990, 7665, 7662, 2129, 6407, 4880, 7911, 4233, 5344, 4883, | ||
| 15270 | + 6834, 5701, 7569, 6321, 4564, 2761, 313, 6410, 7245, 932, | ||
| 15271 | + 1161, 7626, 6015, 6423, 1307, 2764, 5054, 2959, 6109, 4334, | ||
| 15272 | + 4067, 6874, 1216, 4567, 2695, 5674, 1620, 4914, 2584, 1644, | ||
| 15273 | + 2681, 6413, 4757, 4667, 1109, 1370, 2140, 899, 2913, 316, | ||
| 15274 | + 5085, 5015, 1595, 5763, 6785, 712, 3403, 5704, 8184, 6725, | ||
| 15275 | + 6280, 4382, 6199, 2256, 6219, 6837, 5839, 7327, 3765, 6706, | ||
| 15276 | + 5186, 385, 7218, 6324, 5867, 1250, 2114, 867, 89, 1872, 6038, | ||
| 15277 | + 7572, 3320, 5022, 7398, 6606, 7604, 7142, 7976, 7940, 1829, | ||
| 15278 | + 1854, 6441, 6641, 491, 1983, 642, 6268, 2897, 7174, 1749, 359, | ||
| 15279 | + 4559, 2505, 84, 2135, 349, 336, 7079, 7491, 7179, 1843, 1758, | ||
| 15280 | + 4132, 4601, 7690, 257, 7762, 5861, 6828, 2388, 4349, 7642, | ||
| 15281 | + 6094, 6522, 7018, 2450, 2967, 4014, 2554, 819, 4962, 6861, | ||
| 15282 | + 4291, 7474, 3548, 2781, 1288, 4355, 7276, 6967, 2596, 2902, | ||
| 15283 | + 5832, 962, 1953, 1447, 173, 408, 2176, 7409, 2089, 7925, 7511, | ||
| 15284 | + 2364, 4202, 5327, 5374, 5909, 3194, 5250, 1485, 2799, 4943, | ||
| 15285 | + 2341, 8067, 2641, 3247, 7290, 7668, 4316, 1941, 6005, 7231, | ||
| 15286 | + 364, 3339, 2398, 993, 4970, 4275, 42, 5163, 3699, 3303, 3988, | ||
| 15287 | + 3970, 5266, 8129, 3645, 3834, 204, 1088, 8058, 7851, 2909, | ||
| 15288 | + 1212, 6034, 6215, 3582, 908, 309, 986, 2394, 5246, 954, 8054, | ||
| 15289 | + 1754, 638, 958, 4010, 7723, 1602, 2264, 5988, 6901, 5811, | ||
| 15290 | + 4152, 1742, 6587, 3012, 6257, 2726, 5045, 5591, 3307, 2887, | ||
| 15291 | + 3062, 2406, 6908, 847, 6152, 397, 667, 4889, 3391, 3098, 3006, | ||
| 15292 | + 2032, 1848, 4196, 3703, 2953, 471, 7055, 7370, 2015, 2734, | ||
| 15293 | + 1631, 144, 1004, 2073, 658, 1403, 4746, 6182, 5787, 3974, | ||
| 15294 | + 6633, 567, 3329, 1498, 4086, 1728, 5215, 6356, 7776, 7696, | ||
| 15295 | + 7433, 1174, 7267, 7184, 2520, 3992, 4162, 7108, 2106, 7742, | ||
| 15296 | + 3804, 2217, 6066, 1322, 3573, 7044, 2038, 5296, 1662, 5825, | ||
| 15297 | + 2754, 4279, 2513, 6767, 3955, 156, 6377, 5570, 5537, 5888, | ||
| 15298 | + 5350, 1390, 7832, 4576, 5546, 4137, 2279, 4974, 3589, 7312, | ||
| 15299 | + 1187, 1342, 7802, 3239, 7349, 5389, 5142, 6885, 4708, 1458, | ||
| 15300 | + 4821, 5361, 4045, 5167, 4184, 1960, 2564, 7706, 5418, 4445, | ||
| 15301 | + 1563, 6690, 5721, 4607, 2980, 7116, 5497, 1763, 6307, 46, | ||
| 15302 | + 6569, 5448, 5770, 7164, 1816, 3781, 3480, 618, 1972, 4123, | ||
| 15303 | + 3397, 2382, 3982, 138, 5383, 1092, 6292, 4060, 5902, 5818, | ||
| 15304 | + 2424, 1690, 1583, 3877, 4239, 1436, 6996, 558, 7872, 341, | ||
| 15305 | + 1428, 208, 2815, 2842, 187, 539, 295, 3672, 7126, 1098, 5095, | ||
| 15306 | + 886, 1706, 1351, 5876, 7989, 5062, 7855, 13, 842, 4081, 6372, | ||
| 15307 | + 5413, 2419, 5408, 2296, 4695, 7768, 4875, 4909, 6701, 354, | ||
| 15308 | + 4286, 8062, 6210, 1297, 5071, 3508, 1276, 4026, 2004, 1916, | ||
| 15309 | + 8020, 7445, 3104, 2937, 4101, 2431, 6810, 8133, 3368, 6339, | ||
| 15310 | + 129, 4788, 2301, 8168, 7357, 1908, 7917, 4492, 7795, 5156, | ||
| 15311 | + 5756, 7496, 3221, 5270, 915, 827, 2163, 3086, 4499, 2321, | ||
| 15312 | + 2201, 6298, 3712, 2227, 3114, 2923, 8077, 2613, 5659, 3838, | ||
| 15313 | + 6738, 969, 2470, 6717, 4700, 2332, 6931, 4719, 3662, 263, 758, | ||
| 15314 | + 1886, 4864, 7084, 1804, 3649, 5431, 7962, 6792, 6227, 5968, | ||
| 15315 | + 4391, 2573, 6050, 388, 5284, 673, 3126, 699, 6496, 3903, 3251, | ||
| 15316 | + 5189, 3630, 3347, 2271, 891, 3942, 6958, 4435, 6327, 6391, | ||
| 15317 | + 3855, 5128, 3920, 7147, 2711, 2645, 7221, 806, 74, 4325, 3517, | ||
| 15318 | + 6595, 504, 5454, 7330, 7423, 3687, 4401, 6168, 1413, 5105, | ||
| 15319 | + 7672, 5842, 2312, 3180, 4985, 1711, 4213, 3890, 6026, 6709, | ||
| 15320 | + 2973, 751, 1243, 5239, 7609, 2045, 7294, 3768, 7551, 5799, | ||
| 15321 | + 8041, 6752, 5628, 2854, 7588, 1875, 5600, 4895, 4423, 3526, | ||
| 15322 | + 1697, 6979, 4947, 92, 4846, 3611, 5736, 1356, 285, 3164, 6546, | ||
| 15323 | + 7575, 4684, 5980, 5960, 1023, 7945, 3355, 2803, 6041, 7006, | ||
| 15324 | + 6162, 6616, 922, 6127, 1068, 5776, 1253, 4376, 977, 3828, | ||
| 15325 | + 7012, 4815, 4740, 8071, 5870, 7283, 2674, 1901, 5881, 4518, | ||
| 15326 | + 6539, 2993, 870, 2456, 7301, 3812, 1381, 7981, 2442, 2345, | ||
| 15327 | + 2117, 1536, 719, 1515, 3499, 2155, 4267, 2243, 715, 2670, | ||
| 15328 | + 6158, 3607, 5795, 3176, 70, 3343, 6788, 4731, 2247, 5995, | ||
| 15329 | + 7994, 5509, 3749, 3460, 5707, 216, 7819, 8156, 1553, 5027, | ||
| 15330 | + 5312, 368, 3406, 1208, 4271, 4939, 169, 4958, 7686, 7170, | ||
| 15331 | + 5018, 7323, 5011, 5670, 928, 2125, 4342, 997, 5088, 2466, | ||
| 15332 | + 2159, 125, 5067, 4077, 183, 5898, 5766, 2560, 1183, 3951, | ||
| 15333 | + 2102, 3325, 7051, 2402, 1598, 3081, 3503, 534, 7159, 1337, | ||
| 15334 | + 7737, 7365, 2259, 37, 403, 252, 7393, 1590, 1156, 1945, 6202, | ||
| 15335 | + 8007, 1519, 6940, 7860, 110, 5397, 4525, 6840, 2658, 529, | ||
| 15336 | + 4934, 1510, 6611, 8036, 4320, 6222, 4299, 723, 2663, 5277, | ||
| 15337 | + 4116, 6580, 1822, 6728, 580, 3622, 3054, 6622, 797, 2542, | ||
| 15338 | + 7235, 8187, 4362, 1540, 4221, 18, 1331, 2149, 5622, 4385, | ||
| 15339 | + 4020, 3775, 2211, 6895, 7403, 7598, 6009, 6283, 3559, 3410, | ||
| 15340 | + 6845, 1031, 24, 1931, 7381, 1647, 730, 6914, 6507, 6478, 6680, | ||
| 15341 | + 4480, 2093, 2587, 588, 372, 7730, 2847, 1997, 6059, 2082, | ||
| 15342 | + 6416, 4798, 3599, 2374, 6433, 1988, 6143, 7413, 2684, 1058, | ||
| 15343 | + 5316, 4530, 3269, 3020, 1677, 3787, 5677, 3141, 7894, 2192, | ||
| 15344 | + 1074, 7206, 8113, 7515, 2698, 7881, 5031, 7257, 192, 4253, | ||
| 15345 | + 449, 3206, 4917, 6100, 4414, 4588, 4549, 496, 1669, 7929, | ||
| 15346 | + 1623, 5209, 1557, 5402, 6925, 4227, 379, 3542, 902, 443, 853, | ||
| 15347 | + 8090, 2531, 3884, 6533, 177, 2143, 2633, 8160, 102, 544, 1197, | ||
| 15348 | + 2623, 877, 319, 3821, 3047, 1225, 5579, 6273, 3638, 1451, | ||
| 15349 | + 2916, 3038, 7823, 115, 3228, 7529, 5689, 3486, 4670, 603, | ||
| 15350 | + 2478, 1232, 6133, 6244, 2057, 2180, 4760, 2603, 220, 5613, | ||
| 15351 | + 300, 5489, 859, 3433, 1373, 7648, 7616, 7750, 3441, 647, 3721, | ||
| 15352 | + 412, 1112, 7484, 5711, 7865, 2025, 1546, 3913, 6662, 6426, | ||
| 15353 | + 4306, 3068, 4806, 6190, 6348, 5336, 3198, 6018, 4996, 3464, | ||
| 15354 | + 1609, 3677, 3152, 780, 1138, 2767, 2823, 1267, 6652, 6669, | ||
| 15355 | + 1859, 428, 5913, 1310, 6078, 3753, 6945, 5475, 7457, 1127, | ||
| 15356 | + 624, 935, 328, 6988, 7811, 1259, 2353, 6117, 1489, 7248, 232, | ||
| 15357 | + 5513, 4621, 7131, 6458, 8096, 2495, 7629, 7024, 3735, 5943, | ||
| 15358 | + 1789, 1834, 5303, 5254, 1164, 2790, 7998, 1524, 2832, 4368, | ||
| 15359 | + 595, 8176, 6877, 1721, 2412, 7904, 7467, 4246, 6451, 4206, | ||
| 15360 | + 4070, 7073, 5999, 6560, 1103, 552, 5150, 3000, 4570, 8150, | ||
| 15361 | + 4928, 5122, 5954, 6646, 5116, 2368, 1219, 6869, 2251, 8012, | ||
| 15362 | + 7503, 3189, 1083, 1978, 2962, 2749, 4040, 5586, 5782, 6805, | ||
| 15363 | + 5654, 5378, 5057, 6974, 4735, 3898, 5100, 1151, 2537, 65, | ||
| 15364 | + 4337, 6528, 2052, 4475, 8108, 6446, 5649, 5331, 6112, 11, | ||
| 15365 | + 5874, 5093, 293, 6208, 6699, 4693, 5411, 6290, 3980, 1970, | ||
| 15366 | + 1814, 2813, 7870, 4237, 2422, 6736, 8075, 3710, 4497, 5429, | ||
| 15367 | + 4862, 3660, 4698, 3366, 4099, 8018, 1274, 913, 5754, 7915, | ||
| 15368 | + 2299, 6631, 4744, 1002, 2013, 4160, 7265, 7774, 4084, 2885, | ||
| 15369 | + 2724, 1740, 5986, 2951, 2030, 4887, 845, 4182, 4819, 5140, | ||
| 15370 | + 7800, 6567, 5495, 5719, 5416, 2511, 1660, 3571, 3802, 3587, | ||
| 15371 | + 5544, 5348, 6375, 2552, 7016, 4347, 7760, 1951, 2594, 1286, | ||
| 15372 | + 4289, 6266, 6639, 7938, 6604, 4130, 7489, 2133, 357, 7849, | ||
| 15373 | + 3832, 3968, 5161, 4008, 8052, 984, 6213, 1483, 5372, 7509, | ||
| 15374 | + 2174, 991, 7229, 7666, 8065, 7663, 981, 2130, 1283, 6408, | ||
| 15375 | + 6319, 4881, 4878, 7912, 3657, 4234, 4690, 5345, 5716, 4884, | ||
| 15376 | + 7771, 6835, 4380, 5702, 5761, 7570, 865, 6322, 6704, 4565, | ||
| 15377 | + 4332, 2762, 7624, 314, 1368, 6411, 4912, 7246, 1257, 933, | ||
| 15378 | + 5473, 1162, 1787, 7627, 7129, 6016, 6188, 6424, 2023, 1308, | ||
| 15379 | + 6667, 2765, 3675, 5055, 5780, 2960, 7501, 6110, 8106, 4335, | ||
| 15380 | + 5098, 4068, 7465, 6875, 2830, 1217, 5952, 4568, 1101, 2696, | ||
| 15381 | + 1072, 5675, 3267, 1621, 4547, 4915, 190, 2585, 6476, 1645, | ||
| 15382 | + 1029, 2682, 6431, 6414, 2845, 4758, 6131, 4668, 3226, 1110, | ||
| 15383 | + 3439, 1371, 298, 2141, 2529, 900, 6923, 2914, 5577, 317, 542, | ||
| 15384 | + 5086, 926, 5016, 167, 1596, 2100, 5764, 5065, 6786, 5793, 713, | ||
| 15385 | + 3497, 3404, 1551, 5705, 7992, 8185, 6620, 6726, 5275, 6281, | ||
| 15386 | + 6893, 4383, 16, 6200, 7391, 2257, 7157, 6220, 1508, 6838, | ||
| 15387 | + 7858, 5840, 6166, 7328, 3515, 3766, 5237, 6707, 1709, 5187, | ||
| 15388 | + 697, 386, 5966, 7219, 3918, 6325, 889, 5868, 7010, 1251, 920, | ||
| 15389 | + 2115, 1379, 868, 5879, 90, 3524, 1873, 6750, 6039, 1021, 7573, | ||
| 15390 | + 1354, 3321, 2121, 5023, 3172, 7399, 793, 6607, 1586, 7605, | ||
| 15391 | + 1409, 7143, 6492, 7977, 4811, 7941, 1693, 1830, 2349, 1855, | ||
| 15392 | + 6344, 6442, 6801, 6642, 4242, 492, 7202, 1984, 6676, 643, | ||
| 15393 | + 6240, 6269, 3880, 2898, 2446, 7175, 487, 1750, 200, 360, 5905, | ||
| 15394 | + 4560, 1478, 2506, 3361, 85, 6195, 2136, 4063, 350, 7985, 337, | ||
| 15395 | + 134, 7080, 2609, 7492, 2427, 7180, 6178, 1844, 5041, 1759, | ||
| 15396 | + 5357, 4133, 5821, 4602, 1385, 7691, 3386, 258, 4487, 7763, | ||
| 15397 | + 1431, 5862, 4752, 6829, 4176, 2389, 4311, 4350, 344, 7643, | ||
| 15398 | + 3816, 6095, 4793, 6523, 8145, 7019, 2818, 2451, 4679, 2968, | ||
| 15399 | + 6386, 4015, 2653, 2555, 211, 820, 7305, 4963, 5078, 6862, | ||
| 15400 | + 3031, 4292, 6999, 7475, 5439, 3549, 7951, 2782, 3073, 1289, | ||
| 15401 | + 1439, 4356, 2460, 7277, 2306, 6968, 226, 2597, 7875, 2903, | ||
| 15402 | + 813, 5833, 7656, 963, 836, 1954, 561, 1448, 874, 174, 3539, | ||
| 15403 | + 409, 3430, 2177, 3483, 7410, 2079, 2090, 7378, 7926, 3203, | ||
| 15404 | + 7512, 3784, 2365, 2997, 4203, 8173, 5328, 62, 5375, 1975, | ||
| 15405 | + 5910, 1135, 3195, 6659, 5251, 2492, 1486, 621, 2800, 6543, | ||
| 15406 | + 4944, 7585, 2342, 2990, 8068, 5773, 2642, 4432, 3248, 6047, | ||
| 15407 | + 7291, 6023, 7669, 5451, 4317, 4522, 1942, 7362, 6006, 5619, | ||
| 15408 | + 7232, 1819, 365, 3457, 3340, 2240, 2399, 5895, 994, 7167, | ||
| 15409 | + 4971, 5885, 4276, 1319, 43, 6687, 5164, 5386, 3700, 664, 3304, | ||
| 15410 | + 4149, 3989, 6353, 3971, 141, 5267, 1905, 8130, 1913, 3646, | ||
| 15411 | + 4716, 3835, 6295, 205, 3874, 1089, 615, 8059, 2293, 7852, | ||
| 15412 | + 1095, 2910, 2678, 1213, 1304, 6035, 7215, 6216, 3400, 3583, | ||
| 15413 | + 2947, 909, 2809, 310, 5341, 987, 4126, 2395, 7287, 5247, 7922, | ||
| 15414 | + 955, 306, 8055, 3985, 1755, 81, 639, 7973, 959, 2778, 4011, | ||
| 15415 | + 2385, 7724, 96, 1603, 6554, 2265, 5730, 5989, 6934, 6902, 150, | ||
| 15416 | + 5812, 4782, 4153, 1614, 1743, 2335, 6588, 4951, 3013, 7450, | ||
| 15417 | + 6258, 5854, 2727, 3665, 5046, 7036, 5592, 435, 3308, 461, | ||
| 15418 | + 2888, 4722, 3063, 6983, 2407, 4035, 6909, 7889, 848, 2473, | ||
| 15419 | + 6153, 5006, 398, 3617, 668, 3682, 4890, 972, 3392, 1701, 3099, | ||
| 15420 | + 3109, 3007, 653, 2033, 4703, 1849, 6089, 4197, 8124, 3704, | ||
| 15421 | + 3962, 2954, 6720, 472, 3530, 7056, 4775, 7371, 6485, 2016, | ||
| 15422 | + 1807, 2735, 1010, 1632, 513, 145, 5001, 1005, 7087, 2074, | ||
| 15423 | + 4427, 659, 2942, 1404, 1473, 4747, 5434, 6183, 6471, 5788, | ||
| 15424 | + 692, 3975, 2719, 6634, 3652, 568, 4899, 3330, 8027, 1499, | ||
| 15425 | + 3279, 4087, 761, 1729, 7092, 5216, 4852, 6357, 3469, 7777, | ||
| 15426 | + 266, 7697, 5604, 7434, 4106, 1175, 3727, 7268, 4867, 7185, | ||
| 15427 | + 5461, 2521, 3449, 3993, 5930, 4163, 1889, 7109, 1879, 2107, | ||
| 15428 | + 947, 7743, 4468, 3805, 2204, 2218, 2740, 6067, 7063, 1323, | ||
| 15429 | + 1143, 3574, 2324, 7045, 7592, 2039, 2436, 5297, 5643, 1663, | ||
| 15430 | + 3715, 5826, 632, 2755, 1866, 4280, 1798, 2514, 6301, 6768, | ||
| 15431 | + 2858, 3956, 5924, 157, 684, 6378, 2166, 5571, 1015, 5538, | ||
| 15432 | + 1362, 5889, 2772, 5351, 830, 1391, 5632, 7833, 6815, 4577, | ||
| 15433 | + 418, 5547, 4502, 4138, 7193, 2280, 739, 4975, 6774, 3590, | ||
| 15434 | + 3089, 7313, 6756, 1188, 5561, 1343, 6514, 7803, 5662, 3240, | ||
| 15435 | + 1637, 7350, 5530, 5390, 3157, 5143, 2616, 6886, 8045, 4709, | ||
| 15436 | + 8138, 1459, 1466, 4822, 6741, 5362, 4635, 4046, 4657, 5168, | ||
| 15437 | + 3288, 4185, 3841, 1961, 5803, 2565, 1923, 7707, 2874, 5419, | ||
| 15438 | + 3117, 4446, 518, 1564, 5742, 6691, 785, 5722, 2230, 4608, | ||
| 15439 | + 7555, 2981, 3373, 7117, 1118, 5498, 8080, 1764, 7337, 6308, | ||
| 15440 | + 4831, 47, 2864, 6570, 2926, 5449, 6045, 5771, 7583, 7165, | ||
| 15441 | + 2238, 1817, 7360, 3782, 7376, 3481, 3537, 619, 6657, 1973, | ||
| 15442 | + 8171, 4124, 2807, 3398, 1302, 2383, 7971, 3983, 7920, 139, | ||
| 15443 | + 4147, 5384, 1317, 1093, 613, 6293, 1911, 4061, 3359, 5903, | ||
| 15444 | + 485, 5819, 5039, 2425, 132, 1691, 6490, 1584, 3170, 3878, | ||
| 15445 | + 6674, 4240, 6342, 1437, 7949, 6997, 5076, 559, 7654, 7873, | ||
| 15446 | + 2304, 342, 4174, 1429, 3384, 209, 6384, 2816, 4791, 2843, | ||
| 15447 | + 1027, 188, 3265, 540, 6921, 296, 3224, 3673, 2021, 7127, 5471, | ||
| 15448 | + 1099, 2828, 5096, 7499, 887, 5964, 1707, 3513, 1352, 6748, | ||
| 15449 | + 5877, 918, 7990, 3495, 5063, 165, 7856, 7155, 14, 5273, 843, | ||
| 15450 | + 5984, 4082, 2011, 6373, 3800, 5414, 7798, 2420, 1812, 5409, | ||
| 15451 | + 291, 2297, 1272, 4696, 4495, 7769, 4688, 4876, 1281, 4910, | ||
| 15452 | + 7622, 6702, 5759, 355, 6602, 4287, 7758, 8063, 2172, 6211, | ||
| 15453 | + 5159, 1298, 7579, 5072, 481, 3509, 3261, 1277, 2007, 4027, | ||
| 15454 | + 477, 2005, 479, 1917, 5918, 8021, 4029, 7446, 6550, 3105, | ||
| 15455 | + 4031, 2938, 4771, 4102, 8023, 2432, 943, 6811, 5920, 8134, | ||
| 15456 | + 5557, 3369, 1919, 6340, 3168, 130, 483, 4789, 3382, 2302, | ||
| 15457 | + 5074, 8169, 3535, 7358, 7581, 1909, 1315, 7918, 1300, 4493, | ||
| 15458 | + 289, 7796, 2009, 5157, 7756, 5757, 1279, 7497, 5469, 3222, | ||
| 15459 | + 3263, 5271, 163, 916, 3511, 828, 1360, 2164, 5922, 3087, 737, | ||
| 15460 | + 4500, 6813, 2322, 7061, 2202, 945, 6299, 1864, 3713, 2434, | ||
| 15461 | + 2228, 5740, 3115, 1921, 2924, 4829, 8078, 3371, 2614, 5528, | ||
| 15462 | + 5660, 5559, 3839, 4655, 6739, 8136, 970, 3615, 2471, 4033, | ||
| 15463 | + 6718, 8122, 4701, 3107, 2333, 4780, 6932, 6552, 4720, 433, | ||
| 15464 | + 3663, 7448, 264, 4850, 759, 8025, 1887, 3447, 4865, 4104, | ||
| 15465 | + 7085, 511, 1805, 4773, 3650, 690, 5432, 2940, 7963, 5846, | ||
| 15466 | + 6793, 4854, 6228, 4454, 5969, 5218, 4392, 3998, 2574, 7094, | ||
| 15467 | + 6051, 6950, 389, 1731, 5285, 7676, 674, 268, 3127, 5226, 700, | ||
| 15468 | + 7779, 6497, 3931, 3904, 3471, 3252, 3421, 5190, 6359, 3631, | ||
| 15469 | + 5109, 3348, 8029, 2272, 3214, 892, 3332, 3943, 5935, 6959, | ||
| 15470 | + 4901, 4436, 5480, 6328, 570, 6392, 1417, 3856, 763, 5129, | ||
| 15471 | + 7535, 3921, 4089, 7148, 4648, 2712, 3281, 2646, 2286, 7222, | ||
| 15472 | + 1501, 807, 6172, 75, 3451, 4326, 1654, 3518, 2523, 6596, 4168, | ||
| 15473 | + 505, 5463, 5455, 6083, 7331, 7187, 7424, 4405, 3688, 1891, | ||
| 15474 | + 4402, 4642, 6169, 4165, 1414, 4645, 5106, 5932, 7673, 3928, | ||
| 15475 | + 5843, 3995, 2313, 3691, 3181, 4108, 4986, 1047, 1712, 7436, | ||
| 15476 | + 4214, 1894, 3891, 5606, 6027, 3758, 6710, 7699, 2974, 7427, | ||
| 15477 | + 752, 4869, 1244, 5695, 5240, 7270, 7610, 4408, 2046, 3729, | ||
| 15478 | + 7295, 745, 3769, 1177, 7552, 7334, 5800, 515, 8042, 4632, | ||
| 15479 | + 6753, 1634, 5629, 7190, 2855, 1012, 7589, 629, 1876, 2737, | ||
| 15480 | + 5601, 5458, 4896, 7089, 4424, 6468, 3527, 1007, 1698, 6086, | ||
| 15481 | + 6980, 5003, 4948, 7033, 93, 147, 4847, 508, 3612, 4777, 5737, | ||
| 15482 | + 5525, 1357, 7058, 286, 5466, 3165, 3532, 6547, 940, 7576, 474, | ||
| 15483 | + 4685, 6599, 5981, 1809, 5961, 3492, 1024, 2018, 7946, 4171, | ||
| 15484 | + 3356, 6487, 2804, 4144, 6042, 7373, 7007, 3521, 6163, 694, | ||
| 15485 | + 6617, 7388, 923, 5790, 6128, 2526, 1069, 6473, 5777, 7462, | ||
| 15486 | + 1254, 6185, 4377, 4329, 978, 3654, 3829, 5369, 7013, 6636, | ||
| 15487 | + 4816, 1657, 4741, 2721, 8072, 4096, 5871, 3977, 7284, 78, | ||
| 15488 | + 2675, 2944, 1902, 3871, 5882, 661, 4519, 3454, 6540, 4429, | ||
| 15489 | + 2994, 1132, 871, 2076, 2457, 810, 7302, 5436, 3813, 4676, | ||
| 15490 | + 1382, 4749, 7982, 6175, 2443, 1475, 2346, 7199, 2118, 1406, | ||
| 15491 | + 1537, 3772, 720, 3619, 1516, 526, 3500, 400, 2156, 1180, 4268, | ||
| 15492 | + 5008, 2244, 7816, 716, 6155, 2671, 7298, 6159, 974, 3608, | ||
| 15493 | + 5977, 5796, 4892, 3177, 748, 71, 3684, 3344, 3852, 6789, 670, | ||
| 15494 | + 4732, 2049, 2248, 4037, 5996, 4925, 7995, 2409, 5510, 3732, | ||
| 15495 | + 3750, 6985, 3461, 1264, 5708, 3065, 217, 7613, 7820, 2475, | ||
| 15496 | + 8157, 3044, 1554, 850, 5028, 4411, 5313, 7891, 369, 3596, | ||
| 15497 | + 3407, 6911, 1209, 5243, 4272, 8126, 4940, 1938, 170, 4199, | ||
| 15498 | + 4959, 7273, 7687, 6091, 7171, 333, 5019, 1851, 7324, 1247, | ||
| 15499 | + 5012, 6722, 5671, 4664, 929, 2956, 2126, 5698, 4343, 3964, | ||
| 15500 | + 998, 5136, 5089, 3706, 2467, 755, 2160, 3111, 126, 7792, 5068, | ||
| 15501 | + 3101, 4078, 4872, 184, 1703, 5899, 6993, 5767, 3394, 2561, | ||
| 15502 | + 2977, 1184, 4705, 3952, 7829, 2103, 2035, 3326, 7430, 7052, | ||
| 15503 | + 655, 2403, 3095, 1599, 3009, 3082, 6713, 3504, 4784, 535, | ||
| 15504 | + 6368, 7160, 5814, 1338, 7702, 7738, 152, 7366, 1494, 2260, | ||
| 15505 | + 6904, 38, 6030, 404, 2337, 253, 6857, 7394, 1745, 1591, 3761, | ||
| 15506 | + 1157, 1616, 1946, 6403, 6203, 4155, 8008, 3894, 1520, 6556, | ||
| 15507 | + 6941, 4617, 7861, 1605, 111, 5609, 5398, 98, 4526, 7253, 6841, | ||
| 15508 | + 7726, 2659, 4217, 530, 6936, 4935, 121, 1511, 5991, 6612, | ||
| 15509 | + 1897, 8037, 5732, 4321, 4981, 6223, 2267, 4300, 1715, 724, | ||
| 15510 | + 437, 2664, 31, 5278, 5594, 4117, 7439, 6581, 7038, 1823, 2358, | ||
| 15511 | + 6729, 5048, 581, 4989, 3623, 4724, 3055, 4053, 6623, 2890, | ||
| 15512 | + 798, 1050, 2543, 463, 7236, 7542, 8188, 3310, 4363, 3184, | ||
| 15513 | + 1541, 7452, 4222, 7524, 19, 3015, 1332, 4111, 2150, 4953, | ||
| 15514 | + 5623, 6122, 4386, 6590, 4021, 2316, 3776, 3667, 2212, 3234, | ||
| 15515 | + 6896, 2729, 7404, 3694, 7599, 5856, 6010, 6780, 6284, 6260, | ||
| 15516 | + 3560, 5193, 3411, 5744, 6846, 1572, 1032, 1566, 25, 6362, | ||
| 15517 | + 1932, 520, 7382, 4626, 1648, 4448, 731, 3255, 6915, 2232, | ||
| 15518 | + 6508, 4462, 6479, 5724, 6681, 3424, 4481, 787, 2094, 1781, | ||
| 15519 | + 2588, 6693, 589, 3907, 373, 1925, 7731, 4261, 2848, 2567, | ||
| 15520 | + 1998, 3474, 6060, 5805, 2083, 7136, 6417, 1963, 4799, 6500, | ||
| 15521 | + 3600, 3119, 2375, 6250, 6434, 5421, 1989, 3934, 6144, 2876, | ||
| 15522 | + 7414, 7839, 2685, 7709, 1059, 703, 5317, 4833, 4531, 1038, | ||
| 15523 | + 3270, 6310, 3021, 7782, 1678, 7339, 3788, 237, 5678, 1766, | ||
| 15524 | + 3142, 3130, 7895, 2928, 2193, 3295, 1075, 6572, 7207, 5229, | ||
| 15525 | + 8114, 2866, 7516, 3863, 2699, 49, 7882, 677, 5032, 3375, 7258, | ||
| 15526 | + 4540, 193, 2983, 4254, 271, 450, 7557, 3207, 5518, 4918, 4610, | ||
| 15527 | + 6101, 5288, 4415, 8082, 4589, 2063, 4550, 5500, 497, 7679, | ||
| 15528 | + 1670, 1120, 7930, 6821, 1624, 7119, 5210, 392, 1558, 5532, | ||
| 15529 | + 5403, 1578, 6926, 7352, 4228, 1734, 380, 1639, 3543, 2500, | ||
| 15530 | + 903, 3242, 444, 6054, 854, 2618, 8091, 775, 2532, 5145, 3885, | ||
| 15531 | + 6953, 6534, 3159, 178, 3744, 2144, 5392, 2634, 2577, 8161, | ||
| 15532 | + 5563, 103, 278, 545, 1190, 1198, 7097, 2624, 6758, 878, 7634, | ||
| 15533 | + 320, 7315, 3822, 4395, 3048, 5664, 1226, 2186, 5580, 7805, | ||
| 15534 | + 6274, 4001, 3639, 6516, 1452, 1397, 2917, 1345, 3039, 5972, | ||
| 15535 | + 7824, 4659, 116, 6852, 3229, 4048, 7530, 5221, 5690, 4637, | ||
| 15536 | + 3487, 6463, 4671, 5364, 604, 6231, 2479, 3843, 1233, 5175, | ||
| 15537 | + 6134, 4187, 6245, 4457, 2058, 3290, 2181, 770, 4761, 5170, | ||
| 15538 | + 2604, 6796, 221, 8140, 5614, 57, 301, 4711, 5490, 4857, 860, | ||
| 15539 | + 8047, 3434, 8101, 1374, 6888, 7649, 7966, 7617, 6743, 7751, | ||
| 15540 | + 4766, 3442, 4824, 648, 5849, 3722, 1468, 413, 5638, 1113, | ||
| 15541 | + 1461, 7485, 7225, 5712, 1364, 7866, 5750, 2026, 5540, 1547, | ||
| 15542 | + 1504, 3914, 1017, 6663, 5948, 6427, 5573, 4307, 2649, 3069, | ||
| 15543 | + 832, 4807, 6236, 6191, 5353, 6349, 2289, 5337, 2774, 3199, | ||
| 15544 | + 2488, 6019, 5891, 4997, 2715, 3465, 5926, 1610, 457, 3678, | ||
| 15545 | + 3958, 3153, 3284, 781, 2860, 1139, 1794, 2768, 6770, 2824, | ||
| 15546 | + 7151, 1268, 2168, 6653, 609, 6670, 6380, 1860, 4651, 429, 686, | ||
| 15547 | + 5914, 5553, 1311, 159, 6079, 3924, 3754, 741, 6946, 3417, | ||
| 15548 | + 5476, 2282, 7458, 4092, 1128, 7195, 625, 7029, 936, 4140, 329, | ||
| 15549 | + 5132, 6989, 3091, 7812, 3848, 1260, 3592, 2354, 7538, 6118, | ||
| 15550 | + 6776, 1490, 6399, 7249, 4977, 233, 3859, 5514, 6817, 4622, | ||
| 15551 | + 1777, 7132, 7835, 6459, 766, 8097, 5634, 2496, 3740, 7630, | ||
| 15552 | + 1393, 7025, 6395, 3736, 4504, 5944, 2484, 1790, 5549, 1835, | ||
| 15553 | + 1420, 5304, 420, 5255, 4508, 1165, 4579, 2791, 6331, 7999, | ||
| 15554 | + 7065, 1525, 5199, 2833, 6069, 4369, 573, 596, 2742, 8177, | ||
| 15555 | + 5259, 6878, 2220, 1722, 4439, 2413, 2326, 7905, 5180, 7468, | ||
| 15556 | + 3576, 4247, 5483, 6452, 1145, 4207, 4512, 4071, 1325, 7074, | ||
| 15557 | + 6962, 6000, 949, 6561, 7564, 1104, 2109, 553, 4904, 5151, | ||
| 15558 | + 1881, 3001, 1169, 4571, 7111, 8151, 3946, 4929, 2206, 5123, | ||
| 15559 | + 1238, 5955, 3807, 6647, 5938, 5117, 4470, 2369, 4583, 1220, | ||
| 15560 | + 7745, 6870, 895, 2252, 1868, 8013, 3566, 7504, 2757, 3190, | ||
| 15561 | + 3335, 1084, 634, 1979, 1839, 2963, 5828, 2750, 2275, 4041, | ||
| 15562 | + 6303, 5587, 4192, 5783, 2516, 6806, 3217, 5655, 1800, 5379, | ||
| 15563 | + 1424, 5058, 4282, 6975, 3351, 4736, 2438, 3899, 2707, 5101, | ||
| 15564 | + 2041, 1152, 8032, 2538, 7594, 66, 5308, 4338, 7047, 6529, | ||
| 15565 | + 3634, 2053, 3717, 4476, 6139, 8109, 1665, 6447, 5112, 5650, | ||
| 15566 | + 5645, 5332, 424, 6113, 5299, 12, 5061, 5875, 1705, 5094, 7125, | ||
| 15567 | + 294, 186, 6209, 4285, 6700, 4874, 4694, 5407, 5412, 4080, | ||
| 15568 | + 6291, 5382, 3981, 3396, 1971, 3479, 1815, 5769, 2814, 1427, | ||
| 15569 | + 7871, 6995, 4238, 1582, 2423, 5901, 6737, 5658, 8076, 3113, | ||
| 15570 | + 3711, 2200, 4498, 2162, 5430, 1803, 4863, 757, 3661, 6930, | ||
| 15571 | + 4699, 2469, 3367, 6809, 4100, 3103, 8019, 2003, 1275, 5070, | ||
| 15572 | + 914, 3220, 5755, 7794, 7916, 7356, 2300, 128, 6632, 5786, | ||
| 15573 | + 4745, 657, 1003, 1630, 2014, 7054, 4161, 2519, 7266, 7432, | ||
| 15574 | + 7775, 5214, 4085, 3328, 2886, 5590, 2725, 3011, 1741, 5810, | ||
| 15575 | + 5987, 1601, 2952, 4195, 2031, 3097, 4888, 396, 846, 2405, | ||
| 15576 | + 4183, 4044, 4820, 4707, 5141, 7348, 7801, 1186, 6568, 6306, | ||
| 15577 | + 5496, 2979, 5720, 1562, 5417, 2563, 2512, 2753, 1661, 2037, | ||
| 15578 | + 3572, 6065, 3803, 2105, 3588, 2278, 5545, 7831, 5349, 5536, | ||
| 15579 | + 6376, 3954, 2553, 2966, 7017, 6093, 4348, 6827, 7761, 7689, | ||
| 15580 | + 1952, 5831, 2595, 7275, 1287, 3547, 4290, 4961, 6267, 1982, | ||
| 15581 | + 6640, 1853, 7939, 7141, 6605, 5021, 4131, 1842, 7490, 335, | ||
| 15582 | + 2134, 2504, 358, 7173, 7850, 1087, 3833, 8128, 3969, 3302, | ||
| 15583 | + 5162, 4274, 4009, 637, 8053, 5245, 985, 907, 6214, 1211, 1484, | ||
| 15584 | + 3193, 5373, 4201, 7510, 2088, 2175, 172, 992, 3338, 7230, | ||
| 15585 | + 1940, 7667, 3246, 8066, 4942, 7664, 7507, 982, 3966, 2131, | ||
| 15586 | + 7936, 1284, 4345, 6409, 2760, 6320, 5700, 4882, 4232, 4879, | ||
| 15587 | + 2128, 7913, 8016, 3658, 3708, 4235, 1968, 4691, 5091, 5346, | ||
| 15588 | + 3569, 5717, 5138, 4885, 1738, 7772, 1000, 6836, 2255, 4381, | ||
| 15589 | + 6724, 5703, 711, 5762, 5014, 7571, 1871, 866, 1249, 6323, 384, | ||
| 15590 | + 6705, 7326, 4566, 6873, 4333, 2958, 2763, 6422, 7625, 931, | ||
| 15591 | + 315, 898, 1369, 4666, 6412, 1643, 4913, 5673, 7247, 6116, | ||
| 15592 | + 1258, 6987, 934, 1126, 5474, 3752, 1163, 5302, 1788, 3734, | ||
| 15593 | + 7628, 8095, 7130, 5512, 6017, 5335, 6189, 3067, 6425, 3912, | ||
| 15594 | + 2024, 5710, 1309, 427, 6668, 1266, 2766, 779, 3676, 3463, | ||
| 15595 | + 5056, 5653, 5781, 4039, 2961, 1082, 7502, 2250, 6111, 5648, | ||
| 15596 | + 8107, 2051, 4336, 2536, 5099, 4734, 4069, 6450, 7466, 2411, | ||
| 15597 | + 6876, 594, 2831, 7997, 1218, 5115, 5953, 4927, 4569, 5149, | ||
| 15598 | + 1102, 5998, 2697, 8112, 1073, 7893, 5676, 1676, 3268, 5315, | ||
| 15599 | + 1622, 1668, 4548, 4413, 4916, 448, 191, 5030, 2586, 4479, | ||
| 15600 | + 6477, 6913, 1646, 1930, 1030, 3409, 2683, 6142, 6432, 3598, | ||
| 15601 | + 6415, 6058, 2846, 371, 4759, 2056, 6132, 2477, 4669, 5688, | ||
| 15602 | + 3227, 7822, 1111, 3720, 3440, 7615, 1372, 858, 299, 219, 2142, | ||
| 15603 | + 6532, 2530, 852, 901, 378, 6924, 1556, 2915, 3637, 5578, 3046, | ||
| 15604 | + 318, 2622, 543, 8159, 5087, 4341, 927, 5010, 5017, 7685, 168, | ||
| 15605 | + 4270, 1597, 7050, 2101, 1182, 5765, 182, 5066, 2158, 6787, 69, | ||
| 15606 | + 5794, 6157, 714, 4266, 3498, 718, 3405, 5311, 1552, 7818, | ||
| 15607 | + 5706, 3748, 7993, 2246, 8186, 2541, 6621, 3621, 6727, 6579, | ||
| 15608 | + 5276, 722, 6282, 7597, 6894, 3774, 4384, 2148, 17, 1539, 6201, | ||
| 15609 | + 1155, 7392, 402, 2258, 7736, 7158, 3502, 6221, 8035, 1509, | ||
| 15610 | + 528, 6839, 5396, 7859, 1518, 5841, 5104, 6167, 3686, 7329, | ||
| 15611 | + 503, 3516, 73, 3767, 2044, 5238, 750, 6708, 3889, 1710, 3179, | ||
| 15612 | + 5188, 3902, 698, 672, 387, 2572, 5967, 6791, 7220, 2710, 3919, | ||
| 15613 | + 3854, 6326, 6957, 890, 3346, 5869, 4739, 7011, 976, 1252, | ||
| 15614 | + 1067, 921, 6161, 2116, 2441, 1380, 7300, 869, 6538, 5880, | ||
| 15615 | + 2673, 91, 6978, 3525, 4894, 1874, 2853, 6751, 5798, 6040, | ||
| 15616 | + 3354, 1022, 5979, 7574, 3163, 1355, 3610, 3322, 4074, 2122, | ||
| 15617 | + 4955, 5024, 5506, 3173, 2152, 7400, 1328, 794, 4113, 6608, | ||
| 15618 | + 107, 1587, 1334, 7606, 4210, 1410, 6592, 7144, 3939, 6493, | ||
| 15619 | + 4388, 7978, 4515, 4812, 6124, 7942, 282, 1694, 5625, 1831, | ||
| 15620 | + 6455, 2350, 7454, 1856, 3149, 6345, 1543, 6443, 1148, 6802, | ||
| 15621 | + 3186, 6643, 549, 4243, 4365, 493, 4250, 7203, 3017, 1985, | ||
| 15622 | + 1994, 6677, 21, 644, 5486, 6241, 7526, 6270, 1194, 3881, 4224, | ||
| 15623 | + 2899, 7471, 2447, 5858, 7176, 4556, 488, 7601, 1751, 3579, | ||
| 15624 | + 201, 3696, 361, 2638, 5906, 7406, 4561, 7908, 1479, 6262, | ||
| 15625 | + 2507, 2881, 3362, 6286, 86, 5183, 6196, 6782, 2137, 2581, | ||
| 15626 | + 4064, 6012, 351, 2416, 7986, 3669, 338, 1687, 135, 3778, 7081, | ||
| 15627 | + 2329, 2610, 2318, 7493, 8165, 2428, 4023, 7181, 1725, 6179, | ||
| 15628 | + 2731, 1845, 6149, 5042, 6898, 1760, 4442, 5358, 3236, 4134, | ||
| 15629 | + 5567, 5822, 2214, 4603, 6881, 1386, 7040, 7692, 2069, 3387, | ||
| 15630 | + 6583, 259, 2223, 4488, 7441, 7764, 882, 1432, 4119, 5863, | ||
| 15631 | + 8180, 4753, 5050, 6830, 7844, 4177, 6731, 2390, 5262, 4312, | ||
| 15632 | + 2360, 4351, 7638, 345, 1825, 7644, 599, 3817, 439, 6096, 3137, | ||
| 15633 | + 4794, 726, 6524, 2745, 8146, 1717, 7020, 324, 2819, 4302, | ||
| 15634 | + 2452, 4372, 4680, 5596, 2969, 7419, 6387, 5280, 4016, 576, | ||
| 15635 | + 2654, 33, 2556, 7319, 212, 2666, 821, 2836, 7306, 465, 4964, | ||
| 15636 | + 4595, 5079, 2545, 6863, 6072, 3032, 1052, 4293, 1202, 7000, | ||
| 15637 | + 800, 7476, 1528, 5440, 3312, 3550, 7714, 7952, 8190, 2783, | ||
| 15638 | + 5202, 3074, 7544, 1290, 7101, 1440, 7238, 4357, 8002, 2461, | ||
| 15639 | + 4726, 7278, 4841, 2307, 3625, 6969, 7068, 227, 4991, 2598, | ||
| 15640 | + 2628, 7876, 583, 2904, 2794, 814, 2892, 5834, 2690, 7657, | ||
| 15641 | + 6625, 964, 6334, 837, 4055, 1955, 6762, 562, 3057, 1449, 1223, | ||
| 15642 | + 875, 100, 175, 8088, 3540, 5400, 410, 7748, 3431, 5611, 2178, | ||
| 15643 | + 1230, 3484, 113, 7411, 2372, 2080, 7728, 2091, 6505, 7379, | ||
| 15644 | + 6843, 7927, 4586, 3204, 7255, 7513, 2190, 3785, 4528, 2366, | ||
| 15645 | + 5120, 2998, 6558, 4204, 7902, 8174, 1522, 5329, 4473, 63, | ||
| 15646 | + 3896, 5376, 5584, 1976, 8010, 5911, 6650, 1136, 1607, 3196, | ||
| 15647 | + 4804, 6660, 7863, 5252, 5941, 2493, 4619, 1487, 7809, 622, | ||
| 15648 | + 6943, 2801, 5958, 6544, 5734, 4945, 4421, 7586, 8039, 2343, | ||
| 15649 | + 3810, 2991, 1899, 8069, 3826, 5774, 6614, 2643, 5126, 4433, | ||
| 15650 | + 2269, 3249, 3124, 6048, 6225, 7292, 1241, 6024, 4983, 7670, | ||
| 15651 | + 4399, 5452, 4323, 4318, 4932, 4523, 6938, 1943, 250, 7363, | ||
| 15652 | + 532, 6007, 2209, 5620, 4219, 7233, 3052, 1820, 2661, 366, | ||
| 15653 | + 8154, 3458, 5993, 3341, 3605, 2241, 1513, 2400, 3949, 5896, | ||
| 15654 | + 123, 995, 5668, 7168, 4937, 4972, 4574, 5886, 154, 4277, 5294, | ||
| 15655 | + 1320, 7740, 44, 7114, 6688, 7704, 5165, 1456, 5387, 1340, | ||
| 15656 | + 3701, 3004, 665, 6906, 3305, 6255, 4150, 2262, 3990, 1172, | ||
| 15657 | + 6354, 1496, 3972, 1401, 142, 7368, 5268, 5154, 1906, 4786, | ||
| 15658 | + 8131, 2935, 1914, 3506, 3647, 1884, 4717, 6715, 3836, 2921, | ||
| 15659 | + 6296, 3084, 206, 556, 3875, 5816, 1090, 2380, 616, 7162, 8060, | ||
| 15660 | + 4907, 2294, 6370, 7853, 1349, 1096, 537, 2911, 1107, 2679, | ||
| 15661 | + 1618, 1214, 6107, 1305, 1159, 6036, 2112, 7216, 3763, 6217, | ||
| 15662 | + 6278, 3401, 1593, 3584, 6564, 2948, 4157, 910, 5426, 2810, | ||
| 15663 | + 6205, 311, 7567, 5342, 6405, 988, 4005, 4127, 1948, 2396, | ||
| 15664 | + 6003, 7288, 2339, 5248, 5325, 7923, 406, 956, 952, 307, 6032, | ||
| 15665 | + 8056, 3643, 3986, 40, 1756, 7077, 82, 1747, 640, 6439, 7974, | ||
| 15666 | + 7396, 960, 6965, 2779, 6859, 4012, 6520, 2386, 255, 7725, | ||
| 15667 | + 7252, 97, 5608, 1604, 4616, 6555, 3893, 2266, 4980, 5731, | ||
| 15668 | + 1896, 5990, 120, 6935, 4216, 6903, 1493, 151, 7701, 5813, | ||
| 15669 | + 6367, 4783, 6712, 4154, 6402, 1615, 3760, 1744, 6856, 2336, | ||
| 15670 | + 6029, 6589, 6121, 4952, 4110, 3014, 7523, 7451, 3183, 6259, | ||
| 15671 | + 6779, 5855, 3693, 2728, 3233, 3666, 2315, 5047, 2357, 7037, | ||
| 15672 | + 7438, 5593, 30, 436, 1714, 3309, 7541, 462, 1049, 2889, 4052, | ||
| 15673 | + 4723, 4988, 3064, 1263, 6984, 3731, 2408, 4924, 4036, 2048, | ||
| 15674 | + 6910, 3595, 7890, 4410, 849, 3043, 2474, 7612, 6154, 7815, | ||
| 15675 | + 5007, 1179, 399, 525, 3618, 3771, 669, 3851, 3683, 747, 4891, | ||
| 15676 | + 5976, 973, 7297, 3393, 6992, 1702, 4871, 3100, 7791, 3110, | ||
| 15677 | + 754, 3008, 3094, 654, 7429, 2034, 7828, 4704, 2976, 1850, 332, | ||
| 15678 | + 6090, 7272, 4198, 1937, 8125, 5242, 3705, 5135, 3963, 5697, | ||
| 15679 | + 2955, 4663, 6721, 1246, 473, 939, 3531, 5465, 7057, 5524, | ||
| 15680 | + 4776, 507, 7372, 4143, 6486, 4170, 2017, 3491, 1808, 6598, | ||
| 15681 | + 2736, 628, 1011, 7189, 1633, 4631, 514, 7333, 146, 7032, 5002, | ||
| 15682 | + 6085, 1006, 6467, 7088, 5457, 2075, 1131, 4428, 3453, 660, | ||
| 15683 | + 3870, 2943, 77, 1405, 7198, 1474, 6174, 4748, 4675, 5435, 809, | ||
| 15684 | + 6184, 7461, 6472, 2525, 5789, 7387, 693, 3520, 3976, 4095, | ||
| 15685 | + 2720, 1656, 6635, 5368, 3653, 4328, 569, 5479, 4900, 5934, | ||
| 15686 | + 3331, 3213, 8028, 5108, 1500, 2285, 3280, 4647, 4088, 7534, | ||
| 15687 | + 762, 1416, 1730, 6949, 7093, 3997, 5217, 4453, 4853, 5845, | ||
| 15688 | + 6358, 3420, 3470, 3930, 7778, 5225, 267, 7675, 7698, 3757, | ||
| 15689 | + 5605, 1893, 7435, 1046, 4107, 3690, 1176, 744, 3728, 4407, | ||
| 15690 | + 7269, 5694, 4868, 7426, 7186, 6082, 5462, 4167, 2522, 1653, | ||
| 15691 | + 3450, 6171, 3994, 3927, 5931, 4644, 4164, 4641, 1890, 4404, | ||
| 15692 | + 7110, 1168, 1880, 4903, 2108, 7563, 948, 6961, 7744, 4582, | ||
| 15693 | + 4469, 5937, 3806, 1237, 2205, 3945, 2219, 5258, 2741, 572, | ||
| 15694 | + 6068, 5198, 7064, 6330, 1324, 4511, 1144, 5482, 3575, 5179, | ||
| 15695 | + 2325, 4438, 7046, 5307, 7593, 8031, 2040, 2706, 2437, 3350, | ||
| 15696 | + 5298, 423, 5644, 5111, 1664, 6138, 3716, 3633, 5827, 1838, | ||
| 15697 | + 633, 3334, 2756, 3565, 1867, 894, 4281, 1423, 1799, 3216, | ||
| 15698 | + 2515, 4191, 6302, 2274, 6769, 1793, 2859, 3283, 3957, 456, | ||
| 15699 | + 5925, 2714, 158, 5552, 685, 4650, 6379, 608, 2167, 7150, 5572, | ||
| 15700 | + 5947, 1016, 1503, 5539, 5749, 1363, 7224, 5890, 2487, 2773, | ||
| 15701 | + 2288, 5352, 6235, 831, 2648, 1392, 3739, 5633, 765, 7834, | ||
| 15702 | + 1776, 6816, 3858, 4578, 4507, 419, 1419, 5548, 2483, 4503, | ||
| 15703 | + 6394, 4139, 7028, 7194, 4091, 2281, 3416, 740, 3923, 4976, | ||
| 15704 | + 6398, 6775, 7537, 3591, 3847, 3090, 5131, 7314, 7633, 6757, | ||
| 15705 | + 7096, 1189, 277, 5562, 2576, 1344, 1396, 6515, 4000, 7804, | ||
| 15706 | + 2185, 5663, 4394, 3241, 2499, 1638, 1733, 7351, 1577, 5531, | ||
| 15707 | + 391, 5391, 3743, 3158, 6952, 5144, 774, 2617, 6053, 6887, | ||
| 15708 | + 8100, 8046, 4856, 4710, 56, 8139, 6795, 1460, 5637, 1467, | ||
| 15709 | + 5848, 4823, 4765, 6742, 7965, 5363, 6462, 4636, 5220, 4047, | ||
| 15710 | + 6851, 4658, 5971, 5169, 769, 3289, 4456, 4186, 5174, 3842, | ||
| 15711 | + 6230, 1962, 7135, 5804, 3473, 2566, 4260, 1924, 3906, 7708, | ||
| 15712 | + 7838, 2875, 3933, 5420, 6249, 3118, 6499, 4447, 4625, 519, | ||
| 15713 | + 6361, 1565, 1571, 5743, 5192, 6692, 1780, 786, 3423, 5723, | ||
| 15714 | + 4461, 2231, 3254, 4609, 5517, 7556, 270, 2982, 4539, 3374, | ||
| 15715 | + 676, 7118, 6820, 1119, 7678, 5499, 2062, 8081, 5287, 1765, | ||
| 15716 | + 236, 7338, 7781, 6309, 1037, 4832, 702, 48, 3862, 2865, 5228, | ||
| 15717 | + 6571, 3294, 2927, 3129, 5450, 6022, 6046, 4431, 5772, 2989, | ||
| 15718 | + 7584, 6542, 7166, 5894, 2239, 3456, 1818, 5618, 7361, 4521, | ||
| 15719 | + 3783, 3202, 7377, 2078, 3482, 3429, 3538, 873, 620, 2491, | ||
| 15720 | + 6658, 1134, 1974, 61, 8172, 2996, 4125, 5340, 2808, 2946, | ||
| 15721 | + 3399, 7214, 1303, 2677, 2384, 2777, 7972, 80, 3984, 305, 7921, | ||
| 15722 | + 7286, 140, 6352, 4148, 663, 5385, 6686, 1318, 5884, 1094, | ||
| 15723 | + 2292, 614, 3873, 6294, 4715, 1912, 1904, 4062, 6194, 3360, | ||
| 15724 | + 1477, 5904, 199, 486, 2445, 5820, 5356, 5040, 6177, 2426, | ||
| 15725 | + 2608, 133, 7984, 1692, 4810, 6491, 1408, 1585, 792, 3171, | ||
| 15726 | + 2120, 3879, 6239, 6675, 7201, 4241, 6800, 6343, 2348, 1438, | ||
| 15727 | + 3072, 7950, 5438, 6998, 3030, 5077, 7304, 560, 835, 7655, 812, | ||
| 15728 | + 7874, 225, 2305, 2459, 343, 4310, 4175, 4751, 1430, 4486, | ||
| 15729 | + 3385, 1384, 210, 2652, 6385, 4678, 2817, 8144, 4792, 3815, | ||
| 15730 | + 2844, 6430, 1028, 6475, 189, 4546, 3266, 1071, 541, 5576, | ||
| 15731 | + 6922, 2528, 297, 3438, 3225, 6130, 3674, 6666, 2022, 6187, | ||
| 15732 | + 7128, 1786, 5472, 1256, 1100, 5951, 2829, 7464, 5097, 8105, | ||
| 15733 | + 7500, 5779, 888, 3917, 5965, 696, 1708, 5236, 3514, 6165, | ||
| 15734 | + 1353, 1020, 6749, 3523, 5878, 1378, 919, 7009, 7991, 1550, | ||
| 15735 | + 3496, 5792, 5064, 2099, 166, 925, 7857, 1507, 7156, 7390, 15, | ||
| 15736 | + 6892, 5274, 6619, 844, 2029, 5985, 2723, 4083, 7264, 2012, | ||
| 15737 | + 4743, 6374, 5543, 3801, 1659, 5415, 5494, 7799, 4818, 2421, | ||
| 15738 | + 7869, 1813, 3979, 5410, 6698, 292, 5873, 2298, 5753, 1273, | ||
| 15739 | + 4098, 4697, 4861, 4496, 8074, 7770, 5715, 4689, 3656, 4877, | ||
| 15740 | + 6318, 1282, 980, 4911, 1367, 7623, 4331, 6703, 864, 5760, | ||
| 15741 | + 4379, 356, 7488, 6603, 6638, 4288, 2593, 7759, 7015, 8064, | ||
| 15742 | + 7228, 2173, 5371, 6212, 8051, 5160, 3831, 1299, 1314, 7580, | ||
| 15743 | + 3534, 5073, 3381, 482, 3167, 3510, 162, 3262, 5468, 1278, | ||
| 15744 | + 7755, 2008, 288, 4028, 5917, 478, 476, 2006, 3260, 480, 7578, | ||
| 15745 | + 1918, 5556, 5919, 942, 8022, 4770, 4030, 6549, 7447, 432, | ||
| 15746 | + 6551, 4779, 3106, 8121, 4032, 3614, 2939, 689, 4772, 510, | ||
| 15747 | + 4103, 3446, 8024, 4849, 2433, 1863, 944, 7060, 6812, 736, | ||
| 15748 | + 5921, 1359, 8135, 4654, 5558, 5527, 3370, 4828, 1920, 5739, | ||
| 15749 | + 6341, 6673, 3169, 6489, 131, 5038, 484, 3358, 4790, 6383, | ||
| 15750 | + 3383, 4173, 2303, 7653, 5075, 7948, 8170, 6656, 3536, 7375, | ||
| 15751 | + 7359, 2237, 7582, 6044, 1910, 612, 1316, 4146, 7919, 7970, | ||
| 15752 | + 1301, 2806, 4494, 1271, 290, 1811, 7797, 3799, 2010, 5983, | ||
| 15753 | + 5158, 2171, 7757, 6601, 5758, 7621, 1280, 4687, 7498, 2827, | ||
| 15754 | + 5470, 2020, 3223, 6920, 3264, 1026, 5272, 7154, 164, 3494, | ||
| 15755 | + 917, 6747, 3512, 5963, 829, 2771, 1361, 1014, 2165, 683, 5923, | ||
| 15756 | + 2857, 3088, 6773, 738, 7192, 4501, 417, 6814, 5631, 2323, | ||
| 15757 | + 1142, 7062, 2739, 2203, 4467, 946, 1878, 6300, 1797, 1865, | ||
| 15758 | + 631, 3714, 5642, 2435, 7591, 2229, 784, 5741, 517, 3116, 2873, | ||
| 15759 | + 1922, 5802, 2925, 2863, 4830, 7336, 8079, 1117, 3372, 7554, | ||
| 15760 | + 2615, 3156, 5529, 1636, 5661, 6513, 5560, 6755, 3840, 3287, | ||
| 15761 | + 4656, 4634, 6740, 1465, 8137, 8044, 971, 3681, 3616, 5005, | ||
| 15762 | + 2472, 7888, 4034, 6982, 6719, 3961, 8123, 6088, 4702, 652, | ||
| 15763 | + 3108, 1700, 2334, 1613, 4781, 149, 6933, 5729, 6553, 95, 4721, | ||
| 15764 | + 460, 434, 7035, 3664, 5853, 7449, 4950, 265, 3468, 4851, 7091, | ||
| 15765 | + 760, 3278, 8026, 4898, 1888, 5929, 3448, 5460, 4866, 3726, | ||
| 15766 | + 4105, 5603, 7086, 5000, 512, 1009, 1806, 6484, 4774, 3529, | ||
| 15767 | + 3651, 2718, 691, 6470, 5433, 1472, 2941, 4426, 7964, 4764, | ||
| 15768 | + 5847, 5636, 6794, 55, 4855, 8099, 6229, 5173, 4455, 768, 5970, | ||
| 15769 | + 6850, 5219, 6461, 4393, 2184, 3999, 1395, 2575, 276, 7095, | ||
| 15770 | + 7632, 6052, 773, 6951, 3742, 390, 1576, 1732, 2498, 5286, | ||
| 15771 | + 2061, 7677, 6819, 675, 4538, 269, 5516, 3128, 3293, 5227, | ||
| 15772 | + 3861, 701, 1036, 7780, 235, 6498, 6248, 3932, 7837, 3905, | ||
| 15773 | + 4259, 3472, 7134, 3253, 4460, 3422, 1779, 5191, 1570, 6360, | ||
| 15774 | + 4624, 3632, 6137, 5110, 422, 3349, 2705, 8030, 5306, 2273, | ||
| 15775 | + 4190, 3215, 1422, 893, 3564, 3333, 1837, 3944, 1236, 5936, | ||
| 15776 | + 4581, 6960, 7562, 4902, 1167, 4437, 5178, 5481, 4510, 6329, | ||
| 15777 | + 5197, 571, 5257, 6393, 2482, 1418, 4506, 3857, 1775, 764, | ||
| 15778 | + 3738, 5130, 3846, 7536, 6397, 3922, 3415, 4090, 7027, 7149, | ||
| 15779 | + 607, 4649, 5551, 2713, 455, 3282, 1792, 2647, 6234, 2287, | ||
| 15780 | + 2486, 7223, 5748, 1502, 5946, 808, 4674, 6173, 7197, 76, 3869, | ||
| 15781 | + 3452, 1130, 4327, 5367, 1655, 4094, 3519, 7386, 2524, 7460, | ||
| 15782 | + 6597, 3490, 4169, 4142, 506, 5523, 5464, 938, 5456, 6466, | ||
| 15783 | + 6084, 7031, 7332, 4630, 7188, 627, 7425, 5693, 4406, 743, | ||
| 15784 | + 3689, 1045, 1892, 3756, 4403, 4640, 4643, 3926, 6170, 1652, | ||
| 15785 | + 4166, 6081, 1415, 7533, 4646, 2284, 5107, 3212, 5933, 5478, | ||
| 15786 | + 7674, 5224, 3929, 3419, 5844, 4452, 3996, 6948, 2314, 3232, | ||
| 15787 | + 3692, 6778, 3182, 7522, 4109, 6120, 4987, 4051, 1048, 7540, | ||
| 15788 | + 1713, 29, 7437, 2356, 4215, 119, 1895, 4979, 3892, 4615, 5607, | ||
| 15789 | + 7251, 6028, 6855, 3759, 6401, 6711, 6366, 7700, 1492, 2975, | ||
| 15790 | + 7827, 7428, 3093, 753, 7790, 4870, 6991, 1245, 4662, 5696, | ||
| 15791 | + 5134, 5241, 1936, 7271, 331, 7611, 3042, 4409, 3594, 2047, | ||
| 15792 | + 4923, 3730, 1262, 7296, 5975, 746, 3850, 3770, 524, 1178, | ||
| 15793 | + 7814, 7553, 1116, 7335, 2862, 5801, 2872, 516, 783, 8043, | ||
| 15794 | + 1464, 4633, 3286, 6754, 6512, 1635, 3155, 5630, 416, 7191, | ||
| 15795 | + 6772, 2856, 682, 1013, 2770, 7590, 5641, 630, 1796, 1877, | ||
| 15796 | + 4466, 2738, 1141, 5602, 3725, 5459, 5928, 4897, 3277, 7090, | ||
| 15797 | + 3467, 4425, 1471, 6469, 2717, 3528, 6483, 1008, 4999, 1699, | ||
| 15798 | + 651, 6087, 3960, 6981, 7887, 5004, 3680, 4949, 5852, 7034, | ||
| 15799 | + 459, 94, 5728, 148, 1612, 4848, 3445, 509, 688, 3613, 8120, | ||
| 15800 | + 4778, 431, 5738, 4827, 5526, 4653, 1358, 735, 7059, 1862, 287, | ||
| 15801 | + 7754, 5467, 161, 3166, 3380, 3533, 1313, 6548, 4769, 941, | ||
| 15802 | + 5555, 7577, 3259, 475, 5916, 4686, 7620, 6600, 2170, 5982, | ||
| 15803 | + 3798, 1810, 1270, 5962, 6746, 3493, 7153, 1025, 6919, 2019, | ||
| 15804 | + 2826, 7947, 7652, 4172, 6382, 3357, 5037, 6488, 6672, 2805, | ||
| 15805 | + 7969, 4145, 611, 6043, 2236, 7374, 6655, 7008, 1377, 3522, | ||
| 15806 | + 1019, 6164, 5235, 695, 3916, 6618, 6891, 7389, 1506, 924, | ||
| 15807 | + 2098, 5791, 1549, 6129, 3437, 2527, 5575, 1070, 4545, 6474, | ||
| 15808 | + 6429, 5778, 8104, 7463, 5950, 1255, 1785, 6186, 6665, 4378, | ||
| 15809 | + 863, 4330, 1366, 979, 6317, 3655, 5714, 3830, 8050, 5370, | ||
| 15810 | + 7227, 7014, 2592, 6637, 7487, 4817, 5493, 1658, 5542, 4742, | ||
| 15811 | + 7263, 2722, 2028, 8073, 4860, 4097, 5752, 5872, 6697, 3978, | ||
| 15812 | + 7868, 7285, 304, 79, 2776, 2676, 7213, 2945, 5339, 1903, 4714, | ||
| 15813 | + 3872, 2291, 5883, 6685, 662, 6351, 4520, 5617, 3455, 5893, | ||
| 15814 | + 6541, 2988, 4430, 6021, 2995, 60, 1133, 2490, 872, 3428, 2077, | ||
| 15815 | + 3201, 2458, 224, 811, 834, 7303, 3029, 5437, 3071, 3814, 8143, | ||
| 15816 | + 4677, 2651, 1383, 4485, 4750, 4309, 7983, 2607, 6176, 5355, | ||
| 15817 | + 2444, 198, 1476, 6193, 2347, 6799, 7200, 6238, 2119, 791, | ||
| 15818 | + 1407, 4809, 1538, 2147, 3773, 7596, 721, 6578, 3620, 2540, | ||
| 15819 | + 1517, 5395, 527, 8034, 3501, 7735, 401, 1154, 2157, 181, 1181, | ||
| 15820 | + 7049, 4269, 7684, 5009, 4340, 2245, 3747, 7817, 5310, 717, | ||
| 15821 | + 4265, 6156, 68, 2672, 6537, 7299, 2440, 6160, 1066, 975, 4738, | ||
| 15822 | + 3609, 3162, 5978, 3353, 5797, 2852, 4893, 6977, 3178, 3888, | ||
| 15823 | + 749, 2043, 72, 502, 3685, 5103, 3345, 6956, 3853, 2709, 6790, | ||
| 15824 | + 2571, 671, 3901, 4733, 2535, 2050, 5647, 2249, 1081, 4038, | ||
| 15825 | + 5652, 5997, 5148, 4926, 5114, 7996, 593, 2410, 6449, 5511, | ||
| 15826 | + 8094, 3733, 5301, 3751, 1125, 6986, 6115, 3462, 778, 1265, | ||
| 15827 | + 426, 5709, 3911, 3066, 5334, 218, 857, 7614, 3719, 7821, 5687, | ||
| 15828 | + 2476, 2055, 8158, 2621, 3045, 3636, 1555, 377, 851, 6531, | ||
| 15829 | + 5029, 447, 4412, 1667, 5314, 1675, 7892, 8111, 370, 6057, | ||
| 15830 | + 3597, 6141, 3408, 1929, 6912, 4478, 1210, 906, 5244, 636, | ||
| 15831 | + 4273, 3301, 8127, 1086, 4941, 3245, 1939, 3337, 171, 2087, | ||
| 15832 | + 4200, 3192, 4960, 3546, 7274, 5830, 7688, 6826, 6092, 2965, | ||
| 15833 | + 7172, 2503, 334, 1841, 5020, 7140, 1852, 1981, 7325, 383, | ||
| 15834 | + 1248, 1870, 5013, 710, 6723, 2254, 5672, 1642, 4665, 897, 930, | ||
| 15835 | + 6421, 2957, 6872, 2127, 4231, 5699, 2759, 4344, 7935, 3965, | ||
| 15836 | + 7506, 999, 1737, 5137, 3568, 5090, 1967, 3707, 8015, 2468, | ||
| 15837 | + 6929, 756, 1802, 2161, 2199, 3112, 5657, 127, 7355, 7793, | ||
| 15838 | + 3219, 5069, 2002, 3102, 6808, 4079, 5406, 4873, 4284, 185, | ||
| 15839 | + 7124, 1704, 5060, 5900, 1581, 6994, 1426, 5768, 3478, 3395, | ||
| 15840 | + 5381, 2562, 1561, 2978, 6305, 1185, 7347, 4706, 4043, 3953, | ||
| 15841 | + 5535, 7830, 2277, 2104, 6064, 2036, 2752, 3327, 5213, 7431, | ||
| 15842 | + 2518, 7053, 1629, 656, 5785, 2404, 395, 3096, 4194, 1600, | ||
| 15843 | + 5809, 3010, 5589, 3083, 2920, 6714, 1883, 3505, 2934, 4785, | ||
| 15844 | + 5153, 536, 1348, 6369, 4906, 7161, 2379, 5815, 555, 1339, | ||
| 15845 | + 1455, 7703, 7113, 7739, 5293, 153, 4573, 7367, 1400, 1495, | ||
| 15846 | + 1171, 2261, 6254, 6905, 3003, 39, 3642, 6031, 951, 405, 5324, | ||
| 15847 | + 2338, 6002, 254, 6519, 6858, 6964, 7395, 6438, 1746, 7076, | ||
| 15848 | + 1592, 6277, 3762, 2111, 1158, 6106, 1617, 1106, 1947, 4004, | ||
| 15849 | + 6404, 7566, 6204, 5425, 4156, 6563, 8009, 5583, 3895, 4472, | ||
| 15850 | + 1521, 7901, 6557, 5119, 6942, 7808, 4618, 5940, 7862, 4803, | ||
| 15851 | + 1606, 6649, 112, 1229, 5610, 7747, 5399, 8087, 99, 1222, 4527, | ||
| 15852 | + 2189, 7254, 4585, 6842, 6504, 7727, 2371, 2660, 3051, 4218, | ||
| 15853 | + 2208, 531, 249, 6937, 4931, 4936, 5667, 122, 3948, 1512, 3604, | ||
| 15854 | + 5992, 8153, 6613, 3825, 1898, 3809, 8038, 4420, 5733, 5957, | ||
| 15855 | + 4322, 4398, 4982, 1240, 6224, 3123, 2268, 5125, 4301, 323, | ||
| 15856 | + 1716, 2744, 725, 3136, 438, 598, 2665, 7318, 32, 575, 5279, | ||
| 15857 | + 7418, 5595, 4371, 4118, 881, 7440, 2222, 6582, 2068, 7039, | ||
| 15858 | + 6880, 1824, 7637, 2359, 5261, 6730, 7843, 5049, 8179, 582, | ||
| 15859 | + 2627, 4990, 7067, 3624, 4840, 4725, 8001, 3056, 6761, 4054, | ||
| 15860 | + 6333, 6624, 2689, 2891, 2793, 799, 1201, 1051, 6071, 2544, | ||
| 15861 | + 4594, 464, 2835, 7237, 7100, 7543, 5201, 8189, 7713, 3311, | ||
| 15862 | + 1527, 4364, 548, 3185, 1147, 1542, 3148, 7453, 6454, 4223, | ||
| 15863 | + 1193, 7525, 5485, 20, 1993, 3016, 4249, 1333, 106, 4112, 1327, | ||
| 15864 | + 2151, 5505, 4954, 4073, 5624, 281, 6123, 4514, 4387, 3938, | ||
| 15865 | + 6591, 4209, 4022, 8164, 2317, 2328, 3777, 1686, 3668, 2415, | ||
| 15866 | + 2213, 5566, 3235, 4441, 6897, 6148, 2730, 1724, 7405, 2637, | ||
| 15867 | + 3695, 3578, 7600, 4555, 5857, 7470, 6011, 2580, 6781, 5182, | ||
| 15868 | + 6285, 2880, 6261, 7907, 3561, 2702, 5194, 7559, 3412, 1772, | ||
| 15869 | + 5745, 452, 6847, 52, 1573, 273, 1033, 4535, 1567, 4256, 26, | ||
| 15870 | + 7519, 6363, 4612, 1933, 7787, 521, 4920, 7383, 3866, 4627, | ||
| 15871 | + 5520, 1649, 1042, 4449, 3209, 732, 8117, 3256, 3377, 6916, | ||
| 15872 | + 3795, 2233, 5034, 6509, 2869, 4463, 679, 6480, 3274, 5725, | ||
| 15873 | + 7884, 6682, 7210, 3425, 2985, 4482, 3026, 788, 195, 2095, | ||
| 15874 | + 5232, 1782, 4542, 2589, 6314, 6694, 7260, 590, 1078, 3908, | ||
| 15875 | + 1122, 374, 5684, 1926, 1672, 7732, 6575, 4262, 7681, 2849, | ||
| 15876 | + 1063, 2568, 499, 1999, 2196, 3475, 7121, 6061, 7344, 5806, | ||
| 15877 | + 1626, 2084, 3298, 7137, 6823, 6418, 707, 1964, 7932, 4800, | ||
| 15878 | + 7898, 6501, 8084, 3601, 246, 3120, 4417, 2376, 2931, 6251, | ||
| 15879 | + 5290, 6435, 5321, 5422, 6103, 1990, 3145, 3935, 5502, 6145, | ||
| 15880 | + 1683, 2877, 4552, 7415, 3133, 7840, 2065, 2686, 4837, 7710, | ||
| 15881 | + 4591, 1060, 5681, 704, 7341, 5318, 243, 4834, 1680, 4532, | ||
| 15882 | + 1769, 1039, 7784, 3271, 3792, 6311, 3023, 3022, 3791, 7783, | ||
| 15883 | + 1768, 1679, 242, 7340, 5680, 3789, 240, 238, 239, 5679, 241, | ||
| 15884 | + 1767, 3790, 3143, 1681, 3131, 4835, 7896, 244, 2929, 5319, | ||
| 15885 | + 2194, 7342, 3296, 705, 1076, 5682, 6573, 1061, 7208, 3024, | ||
| 15886 | + 5230, 6312, 8115, 3793, 2867, 3272, 7517, 7785, 3864, 1040, | ||
| 15887 | + 2700, 1770, 50, 4533, 7883, 3273, 678, 2868, 5033, 3794, 3376, | ||
| 15888 | + 8116, 7259, 6313, 4541, 5231, 194, 3025, 2984, 7209, 4255, | ||
| 15889 | + 4534, 272, 51, 451, 1771, 7558, 2701, 3208, 1041, 5519, 3865, | ||
| 15890 | + 4919, 7786, 4611, 7518, 6102, 5320, 5289, 2930, 4416, 245, | ||
| 15891 | + 8083, 7897, 4590, 4836, 2064, 3132, 4551, 1682, 5501, 3144, | ||
| 15892 | + 498, 1062, 7680, 6574, 1671, 5683, 1121, 1077, 7931, 706, | ||
| 15893 | + 6822, 3297, 1625, 7343, 7120, 2195, 5211, 1627, 393, 5807, | ||
| 15894 | + 1559, 7345, 5533, 6062, 5404, 7122, 1579, 3476, 6927, 2197, | ||
| 15895 | + 7353, 2000, 4229, 7933, 1735, 1965, 381, 708, 1640, 6419, | ||
| 15896 | + 3544, 6824, 2501, 7138, 904, 3299, 3243, 2085, 445, 1673, | ||
| 15897 | + 6055, 1927, 855, 5685, 2619, 375, 8092, 1123, 776, 3909, 2533, | ||
| 15898 | + 1079, 5146, 591, 3886, 500, 6954, 2569, 6535, 1064, 3160, | ||
| 15899 | + 2850, 179, 7682, 3745, 4263, 2145, 6576, 5393, 7733, 2635, | ||
| 15900 | + 4553, 2578, 2878, 8162, 1684, 5564, 6146, 104, 5503, 279, | ||
| 15901 | + 3936, 546, 3146, 1191, 1991, 1199, 4592, 7098, 7711, 2625, | ||
| 15902 | + 4838, 6759, 2687, 879, 2066, 7635, 7841, 321, 3134, 7316, | ||
| 15903 | + 7416, 3823, 4418, 4396, 3121, 3049, 247, 5665, 3602, 1227, | ||
| 15904 | + 8085, 2187, 6502, 5581, 7899, 7806, 4801, 6275, 6104, 4002, | ||
| 15905 | + 5423, 3640, 5322, 6517, 6436, 1453, 5291, 1398, 6252, 2918, | ||
| 15906 | + 2932, 1346, 2377, 3040, 4921, 5973, 522, 7825, 7788, 4660, | ||
| 15907 | + 1934, 117, 4613, 6853, 6364, 3230, 7520, 4049, 27, 7531, 3210, | ||
| 15908 | + 5222, 4450, 5691, 1043, 4638, 1650, 3488, 5521, 6464, 4628, | ||
| 15909 | + 4672, 3867, 5365, 7384, 605, 453, 6232, 5746, 2480, 1773, | ||
| 15910 | + 3844, 3413, 1234, 7560, 5176, 5195, 6135, 2703, 4188, 3562, | ||
| 15911 | + 6246, 4257, 4458, 1568, 2059, 4536, 3291, 1034, 2182, 274, | ||
| 15912 | + 771, 1574, 4762, 53, 5171, 6848, 2605, 196, 6797, 789, 222, | ||
| 15913 | + 3027, 8141, 4483, 5615, 2986, 58, 3426, 302, 7211, 4712, 6683, | ||
| 15914 | + 5491, 7261, 4858, 6695, 861, 6315, 8048, 2590, 3435, 4543, | ||
| 15915 | + 8102, 1783, 1375, 5233, 6889, 2096, 7650, 5035, 7967, 2234, | ||
| 15916 | + 7618, 3796, 6744, 6917, 7752, 3378, 4767, 3257, 3443, 8118, | ||
| 15917 | + 4825, 733, 649, 7885, 5850, 5726, 3723, 3275, 1469, 6481, 414, | ||
| 15918 | + 680, 5639, 4464, 1114, 2870, 1462, 6510, 7486, 2591, 7226, | ||
| 15919 | + 8049, 5713, 6316, 1365, 862, 7867, 6696, 5751, 4859, 2027, | ||
| 15920 | + 7262, 5541, 5492, 1548, 2097, 1505, 6890, 3915, 5234, 1018, | ||
| 15921 | + 1376, 6664, 1784, 5949, 8103, 6428, 4544, 5574, 3436, 4308, | ||
| 15922 | + 4484, 2650, 8142, 3070, 3028, 833, 223, 4808, 790, 6237, 6798, | ||
| 15923 | + 6192, 197, 5354, 2606, 6350, 6684, 2290, 4713, 5338, 7212, | ||
| 15924 | + 2775, 303, 3200, 3427, 2489, 59, 6020, 2987, 5892, 5616, 4998, | ||
| 15925 | + 6482, 2716, 1470, 3466, 3276, 5927, 3724, 1611, 5727, 458, | ||
| 15926 | + 5851, 3679, 7886, 3959, 650, 3154, 6511, 3285, 1463, 782, | ||
| 15927 | + 2871, 2861, 1115, 1140, 4465, 1795, 5640, 2769, 681, 6771, | ||
| 15928 | + 415, 2825, 6918, 7152, 6745, 1269, 3797, 2169, 7619, 6654, | ||
| 15929 | + 2235, 610, 7968, 6671, 5036, 6381, 7651, 1861, 734, 4652, | ||
| 15930 | + 4826, 430, 8119, 687, 3444, 5915, 3258, 5554, 4768, 1312, | ||
| 15931 | + 3379, 160, 7753, 6080, 1651, 3925, 4639, 3755, 1044, 742, | ||
| 15932 | + 5692, 6947, 4451, 3418, 5223, 5477, 3211, 2283, 7532, 7459, | ||
| 15933 | + 7385, 4093, 5366, 1129, 3868, 7196, 4673, 626, 4629, 7030, | ||
| 15934 | + 6465, 937, 5522, 4141, 3489, 330, 1935, 5133, 4661, 6990, | ||
| 15935 | + 7789, 3092, 7826, 7813, 523, 3849, 5974, 1261, 4922, 3593, | ||
| 15936 | + 3041, 2355, 28, 7539, 4050, 6119, 7521, 6777, 3231, 1491, | ||
| 15937 | + 6365, 6400, 6854, 7250, 4614, 4978, 118, 234, 1035, 3860, | ||
| 15938 | + 3292, 5515, 4537, 6818, 2060, 4623, 1569, 1778, 4459, 7133, | ||
| 15939 | + 4258, 7836, 6247, 6460, 6849, 767, 5172, 8098, 54, 5635, 4763, | ||
| 15940 | + 2497, 1575, 3741, 772, 7631, 275, 1394, 2183, 7026, 3414, | ||
| 15941 | + 6396, 3845, 3737, 1774, 4505, 2481, 5945, 5747, 2485, 6233, | ||
| 15942 | + 1791, 454, 5550, 606, 1836, 3563, 1421, 4189, 5305, 2704, 421, | ||
| 15943 | + 6136, 5256, 5196, 4509, 5177, 1166, 7561, 4580, 1235, 2792, | ||
| 15944 | + 2688, 6332, 6760, 8000, 4839, 7066, 2626, 1526, 7712, 5200, | ||
| 15945 | + 7099, 2834, 4593, 6070, 1200, 4370, 7417, 574, 7317, 597, | ||
| 15946 | + 3135, 2743, 322, 8178, 7842, 5260, 7636, 6879, 2067, 2221, | ||
| 15947 | + 880, 1723, 6147, 4440, 5565, 2414, 1685, 2327, 8163, 7906, | ||
| 15948 | + 2879, 5181, 2579, 7469, 4554, 3577, 2636, 4248, 1992, 5484, | ||
| 15949 | + 1192, 6453, 3147, 1146, 547, 4208, 3937, 4513, 280, 4072, | ||
| 15950 | + 5504, 1326, 105, 7075, 6437, 6963, 6518, 6001, 5323, 950, | ||
| 15951 | + 3641, 6562, 5424, 7565, 4003, 1105, 6105, 2110, 6276, 554, | ||
| 15952 | + 2378, 4905, 1347, 5152, 2933, 1882, 2919, 3002, 6253, 1170, | ||
| 15953 | + 1399, 4572, 5292, 7112, 1454, 8152, 3603, 3947, 5666, 4930, | ||
| 15954 | + 248, 2207, 3050, 5124, 3122, 1239, 4397, 5956, 4419, 3808, | ||
| 15955 | + 3824, 6648, 4802, 5939, 7807, 5118, 7900, 4471, 5582, 2370, | ||
| 15956 | + 6503, 4584, 2188, 1221, 8086, 7746, 1228, 6871, 6420, 896, | ||
| 15957 | + 1641, 2253, 709, 1869, 382, 8014, 1966, 3567, 1736, 7505, | ||
| 15958 | + 7934, 2758, 4230, 3191, 2086, 3336, 3244, 1085, 3300, 635, | ||
| 15959 | + 905, 1980, 7139, 1840, 2502, 2964, 6825, 5829, 3545, 2751, | ||
| 15960 | + 6063, 2276, 5534, 4042, 7346, 6304, 1560, 5588, 5808, 4193, | ||
| 15961 | + 394, 5784, 1628, 2517, 5212, 6807, 2001, 3218, 7354, 5656, | ||
| 15962 | + 2198, 1801, 6928, 5380, 3477, 1425, 1580, 5059, 7123, 4283, | ||
| 15963 | + 5405, 6976, 2851, 3352, 3161, 4737, 1065, 2439, 6536, 3900, | ||
| 15964 | + 2570, 2708, 6955, 5102, 501, 2042, 3887, 1153, 7734, 8033, | ||
| 15965 | + 5394, 2539, 6577, 7595, 2146, 67, 4264, 5309, 3746, 4339, | ||
| 15966 | + 7683, 7048, 180, 6530, 376, 3635, 2620, 2054, 5686, 3718, 856, | ||
| 15967 | + 4477, 1928, 6140, 6056, 8110, 1674, 1666, 446, 6448, 592, | ||
| 15968 | + 5113, 5147, 5651, 1080, 5646, 2534, 5333, 3910, 425, 777, | ||
| 15969 | + 6114, 1124, 5300, 8093 | ||
| 15970 | +}; | ||
| 15971 | + | ||
| 15972 | +int a_to_i[8192] = { | ||
| 15973 | + 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 1455, | ||
| 15974 | + 2910, 5820, 2263, 4526, 1779, 3558, 7116, 4663, 449, 898, | ||
| 15975 | + 1796, 3592, 7184, 7567, 7857, 6349, 5173, 3525, 7050, 4795, | ||
| 15976 | + 217, 434, 868, 1736, 3472, 6944, 5103, 625, 1250, 2500, 5000, | ||
| 15977 | + 703, 1406, 2812, 5624, 3679, 7358, 7379, 7177, 7613, 7893, | ||
| 15978 | + 6149, 5541, 3813, 7626, 7739, 6617, 5661, 2453, 4906, 1019, | ||
| 15979 | + 2038, 4076, 8152, 6687, 4497, 1677, 3354, 6708, 4551, 1569, | ||
| 15980 | + 3138, 6276, 5287, 3297, 6594, 5675, 2553, 5106, 587, 1174, | ||
| 15981 | + 2348, 4696, 287, 574, 1148, 2296, 4592, 1615, 3230, 6460, | ||
| 15982 | + 6103, 2561, 5122, 3499, 6998, 4867, 937, 1874, 3748, 7496, | ||
| 15983 | + 7999, 7121, 4621, 437, 874, 1748, 3496, 6992, 4879, 945, 1890, | ||
| 15984 | + 3780, 7560, 7871, 6353, 5133, 3509, 7018, 4987, 857, 1714, | ||
| 15985 | + 3428, 6856, 4159, 1489, 2978, 5956, 2855, 5710, 2355, 4710, | ||
| 15986 | + 355, 710, 1420, 2840, 5680, 2511, 5022, 659, 1318, 2636, 5272, | ||
| 15987 | + 3231, 6462, 6099, 2569, 5138, 3467, 6934, 4995, 681, 1362, | ||
| 15988 | + 2724, 5448, 3903, 7806, 6483, 5897, 3005, 6010, 2907, 5814, | ||
| 15989 | + 2243, 4486, 1699, 3398, 6796, 4279, 1217, 2434, 4868, 935, | ||
| 15990 | + 1870, 3740, 7480, 8159, 6673, 4493, 1717, 3434, 6868, 4103, | ||
| 15991 | + 1441, 2882, 5764, 2215, 4430, 1843, 3686, 7372, 7223, 7617, | ||
| 15992 | + 7725, 6645, 5701, 2341, 4682, 315, 630, 1260, 2520, 5040, 719, | ||
| 15993 | + 1438, 2876, 5752, 2399, 4798, 211, 422, 844, 1688, 3376, 6752, | ||
| 15994 | + 4463, 1905, 3810, 7620, 7719, 6625, 5741, 2421, 4842, 123, | ||
| 15995 | + 246, 492, 984, 1968, 3936, 7872, 6191, 5617, 3661, 7322, 7323, | ||
| 15996 | + 7321, 7325, 7317, 7301, 7333, 7397, 7269, 7525, 8037, 7013, | ||
| 15997 | + 4965, 869, 1738, 3476, 6952, 5119, 593, 1186, 2372, 4744, 191, | ||
| 15998 | + 382, 764, 1528, 3056, 6112, 2671, 5342, 3091, 6182, 5603, | ||
| 15999 | + 3689, 7378, 7179, 7609, 7901, 6165, 5509, 3749, 7498, 7995, | ||
| 16000 | + 7129, 4637, 405, 810, 1620, 3240, 6480, 5903, 2993, 5986, | ||
| 16001 | + 2923, 5846, 2051, 4102, 1443, 2886, 5772, 2231, 4462, 1907, | ||
| 16002 | + 3814, 7628, 7735, 6593, 5677, 2549, 5098, 635, 1270, 2540, | ||
| 16003 | + 5080, 543, 1086, 2172, 4344, 1119, 2238, 4476, 1879, 3758, | ||
| 16004 | + 7516, 7959, 7041, 4781, 245, 490, 980, 1960, 3920, 7840, 6383, | ||
| 16005 | + 5233, 3405, 6810, 4251, 1177, 2354, 4708, 359, 718, 1436, | ||
| 16006 | + 2872, 5744, 2383, 4766, 147, 294, 588, 1176, 2352, 4704, 367, | ||
| 16007 | + 734, 1468, 2936, 5872, 2127, 4254, 1171, 2342, 4684, 311, 622, | ||
| 16008 | + 1244, 2488, 4976, 847, 1694, 3388, 6776, 4447, 1809, 3618, | ||
| 16009 | + 7236, 7463, 8161, 6765, 4469, 1861, 3722, 7444, 8071, 6817, | ||
| 16010 | + 4333, 1141, 2282, 4564, 1543, 3086, 6172, 5527, 3713, 7426, | ||
| 16011 | + 8107, 6905, 4189, 1301, 2602, 5204, 3335, 6670, 4531, 1737, | ||
| 16012 | + 3474, 6948, 5095, 609, 1218, 2436, 4872, 959, 1918, 3836, | ||
| 16013 | + 7672, 7775, 6417, 6029, 2741, 5482, 3963, 7926, 6211, 5417, | ||
| 16014 | + 4093, 8186, 6747, 4377, 1949, 3898, 7796, 6471, 5921, 3053, | ||
| 16015 | + 6106, 2587, 5174, 3523, 7046, 4771, 233, 466, 932, 1864, 3728, | ||
| 16016 | + 7456, 8175, 6769, 4429, 1845, 3690, 7380, 7175, 7585, 7917, | ||
| 16017 | + 6261, 5445, 3877, 7754, 6459, 6105, 2589, 5178, 3547, 7094, | ||
| 16018 | + 4803, 41, 82, 164, 328, 656, 1312, 2624, 5248, 3247, 6494, | ||
| 16019 | + 5907, 2953, 5906, 2955, 5910, 2947, 5894, 2979, 5958, 2851, | ||
| 16020 | + 5702, 2339, 4678, 291, 582, 1164, 2328, 4656, 463, 926, 1852, | ||
| 16021 | + 3704, 7408, 7247, 7473, 8141, 6709, 4549, 1573, 3146, 6292, | ||
| 16022 | + 5255, 3233, 6466, 5931, 3065, 6130, 2635, 5270, 3203, 6406, | ||
| 16023 | + 6051, 2793, 5586, 3595, 7190, 7555, 7849, 6397, 5205, 3333, | ||
| 16024 | + 6666, 4539, 1753, 3506, 7012, 4967, 865, 1730, 3460, 6920, | ||
| 16025 | + 5055, 721, 1442, 2884, 5768, 2239, 4478, 1875, 3750, 7500, | ||
| 16026 | + 7991, 7105, 4653, 501, 1002, 2004, 4008, 8016, 6927, 5041, | ||
| 16027 | + 717, 1434, 2868, 5736, 2431, 4862, 83, 166, 332, 664, 1328, | ||
| 16028 | + 2656, 5312, 3119, 6238, 5395, 3977, 7954, 7051, 4793, 221, | ||
| 16029 | + 442, 884, 1768, 3536, 7072, 4847, 113, 226, 452, 904, 1808, | ||
| 16030 | + 3616, 7232, 7471, 8177, 6733, 4405, 1989, 3978, 7956, 7047, | ||
| 16031 | + 4769, 237, 474, 948, 1896, 3792, 7584, 7919, 6257, 5453, 3893, | ||
| 16032 | + 7786, 6523, 5977, 2845, 5690, 2523, 5046, 707, 1414, 2828, | ||
| 16033 | + 5656, 2463, 4926, 979, 1958, 3916, 7832, 6303, 5265, 3213, | ||
| 16034 | + 6426, 6043, 2713, 5426, 4043, 8086, 6787, 4265, 1277, 2554, | ||
| 16035 | + 5108, 583, 1166, 2332, 4664, 479, 958, 1916, 3832, 7664, 7759, | ||
| 16036 | + 6449, 6093, 2613, 5226, 3451, 6902, 4163, 1321, 2642, 5284, | ||
| 16037 | + 3303, 6606, 5683, 2505, 5010, 651, 1302, 2604, 5208, 3359, | ||
| 16038 | + 6718, 4563, 1545, 3090, 6180, 5607, 3681, 7362, 7211, 7673, | ||
| 16039 | + 7773, 6421, 6021, 2725, 5450, 3899, 7798, 6467, 5929, 3069, | ||
| 16040 | + 6138, 2651, 5302, 3267, 6534, 5795, 2281, 4562, 1547, 3094, | ||
| 16041 | + 6188, 5623, 3649, 7298, 7339, 7417, 7261, 7445, 8069, 6821, | ||
| 16042 | + 4325, 1125, 2250, 4500, 1671, 3342, 6684, 4503, 1665, 3330, | ||
| 16043 | + 6660, 4519, 1761, 3522, 7044, 4775, 225, 450, 900, 1800, 3600, | ||
| 16044 | + 7200, 7663, 7793, 6477, 5941, 3013, 6026, 2747, 5494, 3907, | ||
| 16045 | + 7814, 6307, 5353, 3197, 6394, 5211, 3353, 6706, 4555, 1593, | ||
| 16046 | + 3186, 6372, 5223, 3425, 6850, 4139, 1529, 3058, 6116, 2663, | ||
| 16047 | + 5326, 3123, 6246, 5475, 3945, 7890, 6155, 5561, 3805, 7610, | ||
| 16048 | + 7899, 6169, 5533, 3733, 7466, 8187, 6745, 4381, 1941, 3882, | ||
| 16049 | + 7764, 6407, 6049, 2797, 5594, 3611, 7222, 7619, 7721, 6653, | ||
| 16050 | + 5717, 2309, 4618, 443, 886, 1772, 3544, 7088, 4815, 49, 98, | ||
| 16051 | + 196, 392, 784, 1568, 3136, 6272, 5295, 3313, 6626, 5739, 2425, | ||
| 16052 | + 4850, 75, 150, 300, 600, 1200, 2400, 4800, 47, 94, 188, 376, | ||
| 16053 | + 752, 1504, 3008, 6016, 2735, 5470, 3859, 7718, 6627, 5737, | ||
| 16054 | + 2429, 4858, 91, 182, 364, 728, 1456, 2912, 5824, 2095, 4190, | ||
| 16055 | + 1299, 2598, 5196, 3383, 6766, 4467, 1865, 3730, 7460, 8167, | ||
| 16056 | + 6753, 4461, 1909, 3818, 7636, 7687, 6561, 5869, 2165, 4330, | ||
| 16057 | + 1147, 2294, 4588, 1655, 3310, 6620, 5655, 2433, 4866, 939, | ||
| 16058 | + 1878, 3756, 7512, 7967, 7057, 4749, 181, 362, 724, 1448, 2896, | ||
| 16059 | + 5792, 2287, 4574, 1555, 3110, 6220, 5431, 4033, 8066, 6827, | ||
| 16060 | + 4345, 1117, 2234, 4468, 1863, 3726, 7452, 8087, 6785, 4269, | ||
| 16061 | + 1269, 2538, 5076, 519, 1038, 2076, 4152, 1503, 3006, 6012, | ||
| 16062 | + 2903, 5806, 2291, 4582, 1635, 3270, 6540, 5815, 2241, 4482, | ||
| 16063 | + 1707, 3414, 6828, 4343, 1089, 2178, 4356, 1959, 3918, 7836, | ||
| 16064 | + 6295, 5249, 3245, 6490, 5915, 2969, 5938, 3019, 6038, 2691, | ||
| 16065 | + 5382, 4003, 8006, 6947, 5097, 637, 1274, 2548, 5096, 639, | ||
| 16066 | + 1278, 2556, 5112, 607, 1214, 2428, 4856, 95, 190, 380, 760, | ||
| 16067 | + 1520, 3040, 6080, 2607, 5214, 3347, 6694, 4579, 1641, 3282, | ||
| 16068 | + 6564, 5863, 2145, 4290, 1067, 2134, 4268, 1271, 2542, 5084, | ||
| 16069 | + 535, 1070, 2140, 4280, 1247, 2494, 4988, 855, 1710, 3420, | ||
| 16070 | + 6840, 4319, 1041, 2082, 4164, 1319, 2638, 5276, 3223, 6446, | ||
| 16071 | + 6131, 2633, 5266, 3211, 6422, 6019, 2729, 5458, 3851, 7702, | ||
| 16072 | + 6531, 5801, 2301, 4602, 1627, 3254, 6508, 6007, 2881, 5762, | ||
| 16073 | + 2219, 4438, 1795, 3590, 7180, 7607, 7873, 6189, 5621, 3653, | ||
| 16074 | + 7306, 7355, 7385, 7197, 7573, 7813, 6309, 5349, 3173, 6346, | ||
| 16075 | + 5179, 3545, 7090, 4811, 57, 114, 228, 456, 912, 1824, 3648, | ||
| 16076 | + 7296, 7343, 7409, 7245, 7477, 8133, 6693, 4581, 1637, 3274, | ||
| 16077 | + 6548, 5767, 2209, 4418, 1835, 3670, 7340, 7415, 7233, 7469, | ||
| 16078 | + 8181, 6725, 4389, 2021, 4042, 8084, 6791, 4257, 1261, 2522, | ||
| 16079 | + 5044, 711, 1422, 2844, 5688, 2527, 5054, 723, 1446, 2892, | ||
| 16080 | + 5784, 2207, 4414, 2003, 4006, 8012, 6967, 5057, 557, 1114, | ||
| 16081 | + 2228, 4456, 1919, 3838, 7676, 7767, 6401, 6061, 2805, 5610, | ||
| 16082 | + 3707, 7414, 7235, 7465, 8189, 6741, 4357, 1957, 3914, 7828, | ||
| 16083 | + 6279, 5281, 3309, 6618, 5659, 2457, 4914, 971, 1942, 3884, | ||
| 16084 | + 7768, 6431, 6033, 2701, 5402, 3995, 7990, 7107, 4649, 509, | ||
| 16085 | + 1018, 2036, 4072, 8144, 6671, 4529, 1741, 3482, 6964, 5063, | ||
| 16086 | + 545, 1090, 2180, 4360, 1983, 3966, 7932, 6231, 5377, 4013, | ||
| 16087 | + 8026, 6939, 5017, 669, 1338, 2676, 5352, 3199, 6398, 5203, | ||
| 16088 | + 3337, 6674, 4491, 1721, 3442, 6884, 4199, 1377, 2754, 5508, | ||
| 16089 | + 3751, 7502, 7987, 7113, 4669, 469, 938, 1876, 3752, 7504, | ||
| 16090 | + 7951, 7089, 4813, 53, 106, 212, 424, 848, 1696, 3392, 6784, | ||
| 16091 | + 4271, 1265, 2530, 5060, 551, 1102, 2204, 4408, 2015, 4030, | ||
| 16092 | + 8060, 6999, 4865, 941, 1882, 3764, 7528, 8063, 6993, 4877, | ||
| 16093 | + 949, 1898, 3796, 7592, 7935, 6225, 5389, 4021, 8042, 7035, | ||
| 16094 | + 4953, 797, 1594, 3188, 6376, 5247, 3409, 6818, 4331, 1145, | ||
| 16095 | + 2290, 4580, 1639, 3278, 6556, 5783, 2177, 4354, 1963, 3926, | ||
| 16096 | + 7852, 6391, 5185, 3373, 6746, 4379, 1945, 3890, 7780, 6503, | ||
| 16097 | + 5985, 2925, 5850, 2075, 4150, 1475, 2950, 5900, 2999, 5998, | ||
| 16098 | + 2931, 5862, 2147, 4294, 1059, 2118, 4236, 1207, 2414, 4828, | ||
| 16099 | + 23, 46, 92, 184, 368, 736, 1472, 2944, 5888, 2991, 5982, 2835, | ||
| 16100 | + 5670, 2531, 5062, 547, 1094, 2188, 4376, 1951, 3902, 7804, | ||
| 16101 | + 6487, 5889, 2989, 5978, 2843, 5686, 2499, 4998, 675, 1350, | ||
| 16102 | + 2700, 5400, 3999, 7998, 7123, 4617, 445, 890, 1780, 3560, | ||
| 16103 | + 7120, 4623, 433, 866, 1732, 3464, 6928, 5007, 689, 1378, 2756, | ||
| 16104 | + 5512, 3775, 7550, 8019, 6921, 5053, 725, 1450, 2900, 5800, | ||
| 16105 | + 2303, 4606, 1619, 3238, 6476, 5943, 3009, 6018, 2731, 5462, | ||
| 16106 | + 3843, 7686, 6563, 5865, 2173, 4346, 1115, 2230, 4460, 1911, | ||
| 16107 | + 3822, 7644, 7703, 6529, 5805, 2293, 4586, 1659, 3318, 6636, | ||
| 16108 | + 5751, 2369, 4738, 171, 342, 684, 1368, 2736, 5472, 3951, 7902, | ||
| 16109 | + 6163, 5513, 3773, 7546, 8027, 6937, 5021, 661, 1322, 2644, | ||
| 16110 | + 5288, 3327, 6654, 5715, 2313, 4626, 395, 790, 1580, 3160, | ||
| 16111 | + 6320, 5327, 3121, 6242, 5483, 3961, 7922, 6219, 5433, 4061, | ||
| 16112 | + 8122, 6875, 4121, 1437, 2874, 5748, 2375, 4750, 179, 358, 716, | ||
| 16113 | + 1432, 2864, 5728, 2415, 4830, 19, 38, 76, 152, 304, 608, 1216, | ||
| 16114 | + 2432, 4864, 943, 1886, 3772, 7544, 8031, 6929, 5005, 693, | ||
| 16115 | + 1386, 2772, 5544, 3839, 7678, 7763, 6409, 6077, 2773, 5546, | ||
| 16116 | + 3835, 7670, 7747, 6441, 6141, 2645, 5290, 3323, 6646, 5699, | ||
| 16117 | + 2345, 4690, 267, 534, 1068, 2136, 4272, 1231, 2462, 4924, 983, | ||
| 16118 | + 1966, 3932, 7864, 6367, 5137, 3469, 6938, 5019, 665, 1330, | ||
| 16119 | + 2660, 5320, 3135, 6270, 5459, 3849, 7698, 6539, 5817, 2269, | ||
| 16120 | + 4538, 1755, 3510, 7020, 4983, 833, 1666, 3332, 6664, 4543, | ||
| 16121 | + 1745, 3490, 6980, 4903, 993, 1986, 3972, 7944, 7103, 4817, 13, | ||
| 16122 | + 26, 52, 104, 208, 416, 832, 1664, 3328, 6656, 4527, 1777, | ||
| 16123 | + 3554, 7108, 4647, 481, 962, 1924, 3848, 7696, 6543, 5809, | ||
| 16124 | + 2253, 4506, 1691, 3382, 6764, 4471, 1857, 3714, 7428, 8103, | ||
| 16125 | + 6881, 4205, 1397, 2794, 5588, 3591, 7182, 7603, 7881, 6205, | ||
| 16126 | + 5589, 3589, 7178, 7611, 7897, 6173, 5525, 3717, 7434, 8123, | ||
| 16127 | + 6873, 4125, 1429, 2858, 5716, 2311, 4622, 435, 870, 1740, | ||
| 16128 | + 3480, 6960, 5071, 561, 1122, 2244, 4488, 1727, 3454, 6908, | ||
| 16129 | + 4183, 1281, 2562, 5124, 3495, 6990, 4915, 969, 1938, 3876, | ||
| 16130 | + 7752, 6463, 6097, 2573, 5146, 3483, 6966, 5059, 553, 1106, | ||
| 16131 | + 2212, 4424, 1855, 3710, 7420, 7255, 7425, 8109, 6901, 4165, | ||
| 16132 | + 1317, 2634, 5268, 3207, 6414, 6067, 2761, 5522, 3723, 7446, | ||
| 16133 | + 8067, 6825, 4349, 1109, 2218, 4436, 1799, 3598, 7196, 7575, | ||
| 16134 | + 7809, 6317, 5365, 3141, 6282, 5307, 3289, 6578, 5835, 2105, | ||
| 16135 | + 4210, 1355, 2710, 5420, 4087, 8174, 6771, 4425, 1853, 3706, | ||
| 16136 | + 7412, 7239, 7457, 8173, 6773, 4421, 1829, 3658, 7316, 7303, | ||
| 16137 | + 7329, 7405, 7285, 7493, 7973, 7141, 4709, 357, 714, 1428, | ||
| 16138 | + 2856, 5712, 2319, 4638, 403, 806, 1612, 3224, 6448, 6095, | ||
| 16139 | + 2609, 5218, 3435, 6870, 4099, 1449, 2898, 5796, 2279, 4558, | ||
| 16140 | + 1587, 3174, 6348, 5175, 3521, 7042, 4779, 249, 498, 996, 1992, | ||
| 16141 | + 3984, 7968, 7151, 4721, 333, 666, 1332, 2664, 5328, 3087, | ||
| 16142 | + 6174, 5523, 3721, 7442, 8075, 6841, 4317, 1045, 2090, 4180, | ||
| 16143 | + 1287, 2574, 5148, 3479, 6958, 5107, 585, 1170, 2340, 4680, | ||
| 16144 | + 319, 638, 1276, 2552, 5104, 591, 1182, 2364, 4728, 351, 702, | ||
| 16145 | + 1404, 2808, 5616, 3663, 7326, 7315, 7305, 7357, 7381, 7173, | ||
| 16146 | + 7589, 7909, 6245, 5477, 3941, 7882, 6203, 5593, 3613, 7226, | ||
| 16147 | + 7643, 7705, 6557, 5781, 2181, 4362, 1979, 3958, 7916, 6263, | ||
| 16148 | + 5441, 3885, 7770, 6427, 6041, 2717, 5434, 4059, 8118, 6851, | ||
| 16149 | + 4137, 1533, 3066, 6132, 2631, 5262, 3251, 6502, 5987, 2921, | ||
| 16150 | + 5842, 2059, 4118, 1411, 2822, 5644, 2487, 4974, 883, 1766, | ||
| 16151 | + 3532, 7064, 4767, 145, 290, 580, 1160, 2320, 4640, 495, 990, | ||
| 16152 | + 1980, 3960, 7920, 6223, 5425, 4045, 8090, 6811, 4249, 1181, | ||
| 16153 | + 2362, 4724, 327, 654, 1308, 2616, 5232, 3407, 6814, 4243, | ||
| 16154 | + 1161, 2322, 4644, 487, 974, 1948, 3896, 7792, 6479, 5937, | ||
| 16155 | + 3021, 6042, 2715, 5430, 4035, 8070, 6819, 4329, 1149, 2298, | ||
| 16156 | + 4596, 1607, 3214, 6428, 6039, 2689, 5378, 4011, 8022, 6915, | ||
| 16157 | + 5033, 765, 1530, 3060, 6120, 2687, 5374, 3155, 6310, 5347, | ||
| 16158 | + 3177, 6354, 5131, 3513, 7026, 4939, 825, 1650, 3300, 6600, | ||
| 16159 | + 5695, 2513, 5026, 747, 1494, 2988, 5976, 2847, 5694, 2515, | ||
| 16160 | + 5030, 739, 1478, 2956, 5912, 2975, 5950, 3027, 6054, 2787, | ||
| 16161 | + 5574, 3619, 7238, 7459, 8169, 6781, 4437, 1797, 3594, 7188, | ||
| 16162 | + 7559, 7841, 6381, 5237, 3397, 6794, 4283, 1241, 2482, 4964, | ||
| 16163 | + 871, 1742, 3484, 6968, 5087, 529, 1058, 2116, 4232, 1215, | ||
| 16164 | + 2430, 4860, 87, 174, 348, 696, 1392, 2784, 5568, 3631, 7262, | ||
| 16165 | + 7443, 8073, 6845, 4309, 1029, 2058, 4116, 1415, 2830, 5660, | ||
| 16166 | + 2455, 4910, 1011, 2022, 4044, 8088, 6815, 4241, 1165, 2330, | ||
| 16167 | + 4660, 455, 910, 1820, 3640, 7280, 7503, 7985, 7117, 4661, 453, | ||
| 16168 | + 906, 1812, 3624, 7248, 7439, 8113, 6861, 4149, 1477, 2954, | ||
| 16169 | + 5908, 2951, 5902, 2995, 5990, 2915, 5830, 2083, 4166, 1315, | ||
| 16170 | + 2630, 5260, 3255, 6510, 6003, 2889, 5778, 2187, 4374, 1923, | ||
| 16171 | + 3846, 7692, 6583, 5825, 2093, 4186, 1307, 2614, 5228, 3447, | ||
| 16172 | + 6894, 4211, 1353, 2706, 5412, 4071, 8142, 6707, 4553, 1597, | ||
| 16173 | + 3194, 6388, 5191, 3361, 6722, 4395, 2041, 4082, 8164, 6759, | ||
| 16174 | + 4449, 1901, 3802, 7604, 7879, 6177, 5613, 3701, 7402, 7291, | ||
| 16175 | + 7513, 7965, 7061, 4741, 165, 330, 660, 1320, 2640, 5280, 3311, | ||
| 16176 | + 6622, 5651, 2441, 4882, 907, 1814, 3628, 7256, 7455, 8081, | ||
| 16177 | + 6797, 4277, 1221, 2442, 4884, 903, 1806, 3612, 7224, 7647, | ||
| 16178 | + 7697, 6541, 5813, 2245, 4490, 1723, 3446, 6892, 4215, 1345, | ||
| 16179 | + 2690, 5380, 4007, 8014, 6963, 5065, 573, 1146, 2292, 4584, | ||
| 16180 | + 1663, 3326, 6652, 5719, 2305, 4610, 427, 854, 1708, 3416, | ||
| 16181 | + 6832, 4303, 1073, 2146, 4292, 1063, 2126, 4252, 1175, 2350, | ||
| 16182 | + 4700, 279, 558, 1116, 2232, 4464, 1871, 3742, 7484, 8151, | ||
| 16183 | + 6657, 4525, 1781, 3562, 7124, 4615, 417, 834, 1668, 3336, | ||
| 16184 | + 6672, 4495, 1713, 3426, 6852, 4135, 1505, 3010, 6020, 2727, | ||
| 16185 | + 5454, 3891, 7782, 6499, 5993, 2941, 5882, 2139, 4278, 1219, | ||
| 16186 | + 2438, 4876, 951, 1902, 3804, 7608, 7903, 6161, 5517, 3765, | ||
| 16187 | + 7530, 8059, 7001, 4893, 917, 1834, 3668, 7336, 7423, 7249, | ||
| 16188 | + 7437, 8117, 6853, 4133, 1509, 3018, 6036, 2695, 5390, 4019, | ||
| 16189 | + 8038, 7011, 4969, 893, 1786, 3572, 7144, 4735, 337, 674, 1348, | ||
| 16190 | + 2696, 5392, 3983, 7966, 7059, 4745, 189, 378, 756, 1512, 3024, | ||
| 16191 | + 6048, 2799, 5598, 3603, 7206, 7651, 7785, 6525, 5973, 2821, | ||
| 16192 | + 5642, 2491, 4982, 835, 1670, 3340, 6680, 4511, 1681, 3362, | ||
| 16193 | + 6724, 4391, 2017, 4034, 8068, 6823, 4321, 1133, 2266, 4532, | ||
| 16194 | + 1735, 3470, 6940, 5015, 641, 1282, 2564, 5128, 3519, 7038, | ||
| 16195 | + 4947, 777, 1554, 3108, 6216, 5439, 4049, 8098, 6891, 4217, | ||
| 16196 | + 1373, 2746, 5492, 3911, 7822, 6323, 5321, 3133, 6266, 5467, | ||
| 16197 | + 3865, 7730, 6603, 5689, 2525, 5050, 731, 1462, 2924, 5848, | ||
| 16198 | + 2079, 4158, 1491, 2982, 5964, 2871, 5742, 2419, 4838, 99, 198, | ||
| 16199 | + 396, 792, 1584, 3168, 6336, 5167, 3569, 7138, 4715, 377, 754, | ||
| 16200 | + 1508, 3016, 6032, 2703, 5406, 3987, 7974, 7139, 4713, 381, | ||
| 16201 | + 762, 1524, 3048, 6096, 2575, 5150, 3475, 6950, 5091, 617, | ||
| 16202 | + 1234, 2468, 4936, 831, 1662, 3324, 6648, 5727, 2321, 4642, | ||
| 16203 | + 491, 982, 1964, 3928, 7856, 6351, 5169, 3533, 7066, 4763, 153, | ||
| 16204 | + 306, 612, 1224, 2448, 4896, 1007, 2014, 4028, 8056, 7007, | ||
| 16205 | + 4881, 909, 1818, 3636, 7272, 7551, 8017, 6925, 5045, 709, | ||
| 16206 | + 1418, 2836, 5672, 2559, 5118, 595, 1190, 2380, 4760, 159, 318, | ||
| 16207 | + 636, 1272, 2544, 5088, 623, 1246, 2492, 4984, 863, 1726, 3452, | ||
| 16208 | + 6904, 4191, 1297, 2594, 5188, 3367, 6734, 4403, 1993, 3986, | ||
| 16209 | + 7972, 7143, 4705, 365, 730, 1460, 2920, 5840, 2063, 4126, | ||
| 16210 | + 1427, 2854, 5708, 2359, 4718, 371, 742, 1484, 2968, 5936, | ||
| 16211 | + 3023, 6046, 2707, 5414, 4067, 8134, 6691, 4585, 1661, 3322, | ||
| 16212 | + 6644, 5703, 2337, 4674, 299, 598, 1196, 2392, 4784, 207, 414, | ||
| 16213 | + 828, 1656, 3312, 6624, 5743, 2417, 4834, 107, 214, 428, 856, | ||
| 16214 | + 1712, 3424, 6848, 4143, 1521, 3042, 6084, 2599, 5198, 3379, | ||
| 16215 | + 6758, 4451, 1897, 3794, 7588, 7911, 6241, 5485, 3957, 7914, | ||
| 16216 | + 6267, 5465, 3869, 7738, 6619, 5657, 2461, 4922, 987, 1974, | ||
| 16217 | + 3948, 7896, 6175, 5521, 3725, 7450, 8091, 6809, 4253, 1173, | ||
| 16218 | + 2346, 4692, 263, 526, 1052, 2104, 4208, 1359, 2718, 5436, | ||
| 16219 | + 4055, 8110, 6899, 4169, 1341, 2682, 5364, 3143, 6286, 5299, | ||
| 16220 | + 3273, 6546, 5771, 2233, 4466, 1867, 3734, 7468, 8183, 6721, | ||
| 16221 | + 4397, 2037, 4074, 8148, 6663, 4513, 1773, 3546, 7092, 4807, | ||
| 16222 | + 33, 66, 132, 264, 528, 1056, 2112, 4224, 1199, 2398, 4796, | ||
| 16223 | + 215, 430, 860, 1720, 3440, 6880, 4207, 1393, 2786, 5572, 3623, | ||
| 16224 | + 7246, 7475, 8137, 6717, 4565, 1541, 3082, 6164, 5511, 3745, | ||
| 16225 | + 7490, 7979, 7161, 4701, 277, 554, 1108, 2216, 4432, 1807, | ||
| 16226 | + 3614, 7228, 7639, 7681, 6573, 5877, 2117, 4234, 1211, 2422, | ||
| 16227 | + 4844, 119, 238, 476, 952, 1904, 3808, 7616, 7727, 6641, 5709, | ||
| 16228 | + 2357, 4714, 379, 758, 1516, 3032, 6064, 2767, 5534, 3731, | ||
| 16229 | + 7462, 8163, 6761, 4477, 1877, 3754, 7508, 7943, 7073, 4845, | ||
| 16230 | + 117, 234, 468, 936, 1872, 3744, 7488, 7983, 7153, 4685, 309, | ||
| 16231 | + 618, 1236, 2472, 4944, 783, 1566, 3132, 6264, 5471, 3857, | ||
| 16232 | + 7714, 6635, 5753, 2397, 4794, 219, 438, 876, 1752, 3504, 7008, | ||
| 16233 | + 4975, 881, 1762, 3524, 7048, 4799, 209, 418, 836, 1672, 3344, | ||
| 16234 | + 6688, 4591, 1649, 3298, 6596, 5671, 2529, 5058, 555, 1110, | ||
| 16235 | + 2220, 4440, 1823, 3646, 7292, 7511, 7937, 7085, 4853, 69, 138, | ||
| 16236 | + 276, 552, 1104, 2208, 4416, 1839, 3678, 7356, 7383, 7169, | ||
| 16237 | + 7597, 7925, 6213, 5413, 4069, 8138, 6715, 4569, 1565, 3130, | ||
| 16238 | + 6260, 5447, 3873, 7746, 6443, 6137, 2653, 5306, 3291, 6582, | ||
| 16239 | + 5827, 2089, 4178, 1291, 2582, 5164, 3575, 7150, 4723, 329, | ||
| 16240 | + 658, 1316, 2632, 5264, 3215, 6430, 6035, 2697, 5394, 3979, | ||
| 16241 | + 7958, 7043, 4777, 253, 506, 1012, 2024, 4048, 8096, 6895, | ||
| 16242 | + 4209, 1357, 2714, 5428, 4039, 8078, 6835, 4297, 1085, 2170, | ||
| 16243 | + 4340, 1095, 2190, 4380, 1943, 3886, 7772, 6423, 6017, 2733, | ||
| 16244 | + 5466, 3867, 7734, 6595, 5673, 2557, 5114, 603, 1206, 2412, | ||
| 16245 | + 4824, 31, 62, 124, 248, 496, 992, 1984, 3968, 7936, 7087, | ||
| 16246 | + 4849, 77, 154, 308, 616, 1232, 2464, 4928, 815, 1630, 3260, | ||
| 16247 | + 6520, 5983, 2833, 5666, 2539, 5078, 515, 1030, 2060, 4120, | ||
| 16248 | + 1439, 2878, 5756, 2391, 4782, 243, 486, 972, 1944, 3888, 7776, | ||
| 16249 | + 6511, 6001, 2893, 5786, 2203, 4406, 1987, 3974, 7948, 7095, | ||
| 16250 | + 4801, 45, 90, 180, 360, 720, 1440, 2880, 5760, 2223, 4446, | ||
| 16251 | + 1811, 3622, 7244, 7479, 8129, 6701, 4597, 1605, 3210, 6420, | ||
| 16252 | + 6023, 2721, 5442, 3883, 7766, 6403, 6057, 2813, 5626, 3675, | ||
| 16253 | + 7350, 7363, 7209, 7677, 7765, 6405, 6053, 2789, 5578, 3643, | ||
| 16254 | + 7286, 7491, 7977, 7165, 4693, 261, 522, 1044, 2088, 4176, | ||
| 16255 | + 1295, 2590, 5180, 3543, 7086, 4851, 73, 146, 292, 584, 1168, | ||
| 16256 | + 2336, 4672, 303, 606, 1212, 2424, 4848, 79, 158, 316, 632, | ||
| 16257 | + 1264, 2528, 5056, 559, 1118, 2236, 4472, 1887, 3774, 7548, | ||
| 16258 | + 8023, 6913, 5037, 757, 1514, 3028, 6056, 2815, 5630, 3667, | ||
| 16259 | + 7334, 7395, 7273, 7549, 8021, 6917, 5029, 741, 1482, 2964, | ||
| 16260 | + 5928, 3071, 6142, 2643, 5286, 3299, 6598, 5667, 2537, 5074, | ||
| 16261 | + 523, 1046, 2092, 4184, 1311, 2622, 5244, 3415, 6830, 4339, | ||
| 16262 | + 1097, 2194, 4388, 2023, 4046, 8092, 6807, 4225, 1197, 2394, | ||
| 16263 | + 4788, 199, 398, 796, 1592, 3184, 6368, 5231, 3441, 6882, 4203, | ||
| 16264 | + 1401, 2802, 5604, 3687, 7374, 7219, 7625, 7741, 6613, 5637, | ||
| 16265 | + 2469, 4938, 827, 1654, 3308, 6616, 5663, 2449, 4898, 1003, | ||
| 16266 | + 2006, 4012, 8024, 6943, 5009, 653, 1306, 2612, 5224, 3455, | ||
| 16267 | + 6910, 4179, 1289, 2578, 5156, 3559, 7118, 4659, 457, 914, | ||
| 16268 | + 1828, 3656, 7312, 7311, 7345, 7373, 7221, 7621, 7717, 6629, | ||
| 16269 | + 5733, 2405, 4810, 59, 118, 236, 472, 944, 1888, 3776, 7552, | ||
| 16270 | + 7855, 6385, 5197, 3381, 6762, 4475, 1881, 3762, 7524, 8039, | ||
| 16271 | + 7009, 4973, 885, 1770, 3540, 7080, 4863, 81, 162, 324, 648, | ||
| 16272 | + 1296, 2592, 5184, 3375, 6750, 4371, 1929, 3858, 7716, 6631, | ||
| 16273 | + 5729, 2413, 4826, 27, 54, 108, 216, 432, 864, 1728, 3456, | ||
| 16274 | + 6912, 5039, 753, 1506, 3012, 6024, 2751, 5502, 3923, 7846, | ||
| 16275 | + 6371, 5225, 3453, 6906, 4187, 1305, 2610, 5220, 3431, 6862, | ||
| 16276 | + 4147, 1481, 2962, 5924, 3047, 6094, 2611, 5222, 3427, 6854, | ||
| 16277 | + 4131, 1513, 3026, 6052, 2791, 5582, 3635, 7270, 7523, 8041, | ||
| 16278 | + 7037, 4949, 773, 1546, 3092, 6184, 5631, 3665, 7330, 7403, | ||
| 16279 | + 7289, 7517, 7957, 7045, 4773, 229, 458, 916, 1832, 3664, 7328, | ||
| 16280 | + 7407, 7281, 7501, 7989, 7109, 4645, 485, 970, 1940, 3880, | ||
| 16281 | + 7760, 6415, 6065, 2765, 5530, 3739, 7478, 8131, 6697, 4605, | ||
| 16282 | + 1621, 3242, 6484, 5895, 2977, 5954, 2859, 5718, 2307, 4614, | ||
| 16283 | + 419, 838, 1676, 3352, 6704, 4559, 1585, 3170, 6340, 5159, | ||
| 16284 | + 3553, 7106, 4651, 505, 1010, 2020, 4040, 8080, 6799, 4273, | ||
| 16285 | + 1229, 2458, 4916, 967, 1934, 3868, 7736, 6623, 5649, 2445, | ||
| 16286 | + 4890, 923, 1846, 3692, 7384, 7199, 7569, 7821, 6325, 5317, | ||
| 16287 | + 3109, 6218, 5435, 4057, 8114, 6859, 4153, 1501, 3002, 6004, | ||
| 16288 | + 2887, 5774, 2227, 4454, 1891, 3782, 7564, 7863, 6337, 5165, | ||
| 16289 | + 3573, 7146, 4731, 345, 690, 1380, 2760, 5520, 3727, 7454, | ||
| 16290 | + 8083, 6793, 4285, 1237, 2474, 4948, 775, 1550, 3100, 6200, | ||
| 16291 | + 5599, 3601, 7202, 7659, 7801, 6493, 5909, 2949, 5898, 3003, | ||
| 16292 | + 6006, 2883, 5766, 2211, 4422, 1827, 3654, 7308, 7351, 7361, | ||
| 16293 | + 7213, 7669, 7749, 6437, 6117, 2661, 5322, 3131, 6262, 5443, | ||
| 16294 | + 3881, 7762, 6411, 6073, 2781, 5562, 3803, 7606, 7875, 6185, | ||
| 16295 | + 5629, 3669, 7338, 7419, 7257, 7453, 8085, 6789, 4261, 1253, | ||
| 16296 | + 2506, 5012, 647, 1294, 2588, 5176, 3551, 7102, 4819, 9, 18, | ||
| 16297 | + 36, 72, 144, 288, 576, 1152, 2304, 4608, 431, 862, 1724, 3448, | ||
| 16298 | + 6896, 4175, 1329, 2658, 5316, 3111, 6222, 5427, 4041, 8082, | ||
| 16299 | + 6795, 4281, 1245, 2490, 4980, 839, 1678, 3356, 6712, 4575, | ||
| 16300 | + 1553, 3106, 6212, 5415, 4065, 8130, 6699, 4601, 1629, 3258, | ||
| 16301 | + 6516, 5959, 2849, 5698, 2347, 4694, 259, 518, 1036, 2072, | ||
| 16302 | + 4144, 1487, 2974, 5948, 3031, 6062, 2803, 5606, 3683, 7366, | ||
| 16303 | + 7203, 7657, 7805, 6485, 5893, 2981, 5962, 2875, 5750, 2371, | ||
| 16304 | + 4742, 163, 326, 652, 1304, 2608, 5216, 3439, 6878, 4115, 1417, | ||
| 16305 | + 2834, 5668, 2535, 5070, 563, 1126, 2252, 4504, 1695, 3390, | ||
| 16306 | + 6780, 4439, 1793, 3586, 7172, 7591, 7905, 6253, 5493, 3909, | ||
| 16307 | + 7818, 6331, 5337, 3101, 6202, 5595, 3609, 7218, 7627, 7737, | ||
| 16308 | + 6621, 5653, 2437, 4874, 955, 1910, 3820, 7640, 7711, 6545, | ||
| 16309 | + 5773, 2229, 4458, 1915, 3830, 7660, 7799, 6465, 5933, 3061, | ||
| 16310 | + 6122, 2683, 5366, 3139, 6278, 5283, 3305, 6610, 5643, 2489, | ||
| 16311 | + 4978, 843, 1686, 3372, 6744, 4383, 1937, 3874, 7748, 6439, | ||
| 16312 | + 6113, 2669, 5338, 3099, 6198, 5571, 3625, 7250, 7435, 8121, | ||
| 16313 | + 6877, 4117, 1413, 2826, 5652, 2439, 4878, 947, 1894, 3788, | ||
| 16314 | + 7576, 7839, 6289, 5261, 3253, 6506, 6011, 2905, 5810, 2251, | ||
| 16315 | + 4502, 1667, 3334, 6668, 4535, 1729, 3458, 6916, 5031, 737, | ||
| 16316 | + 1474, 2948, 5896, 3007, 6014, 2899, 5798, 2275, 4550, 1571, | ||
| 16317 | + 3142, 6284, 5303, 3265, 6530, 5803, 2297, 4594, 1611, 3222, | ||
| 16318 | + 6444, 6135, 2625, 5250, 3243, 6486, 5891, 2985, 5970, 2827, | ||
| 16319 | + 5654, 2435, 4870, 931, 1862, 3724, 7448, 8095, 6801, 4237, | ||
| 16320 | + 1205, 2410, 4820, 7, 14, 28, 56, 112, 224, 448, 896, 1792, | ||
| 16321 | + 3584, 7168, 7599, 7921, 6221, 5429, 4037, 8074, 6843, 4313, | ||
| 16322 | + 1053, 2106, 4212, 1351, 2702, 5404, 3991, 7982, 7155, 4681, | ||
| 16323 | + 317, 634, 1268, 2536, 5072, 527, 1054, 2108, 4216, 1375, 2750, | ||
| 16324 | + 5500, 3927, 7854, 6387, 5193, 3389, 6778, 4443, 1817, 3634, | ||
| 16325 | + 7268, 7527, 8033, 7021, 4981, 837, 1674, 3348, 6696, 4607, | ||
| 16326 | + 1617, 3234, 6468, 5927, 3041, 6082, 2603, 5206, 3331, 6662, | ||
| 16327 | + 4515, 1769, 3538, 7076, 4839, 97, 194, 388, 776, 1552, 3104, | ||
| 16328 | + 6208, 5423, 4081, 8162, 6763, 4473, 1885, 3770, 7540, 8007, | ||
| 16329 | + 6945, 5101, 629, 1258, 2516, 5032, 767, 1534, 3068, 6136, | ||
| 16330 | + 2655, 5310, 3283, 6566, 5859, 2153, 4306, 1035, 2070, 4140, | ||
| 16331 | + 1527, 3054, 6108, 2583, 5166, 3571, 7142, 4707, 361, 722, | ||
| 16332 | + 1444, 2888, 5776, 2191, 4382, 1939, 3878, 7756, 6455, 6081, | ||
| 16333 | + 2605, 5210, 3355, 6710, 4547, 1577, 3154, 6308, 5351, 3169, | ||
| 16334 | + 6338, 5163, 3577, 7154, 4683, 313, 626, 1252, 2504, 5008, 655, | ||
| 16335 | + 1310, 2620, 5240, 3423, 6846, 4307, 1033, 2066, 4132, 1511, | ||
| 16336 | + 3022, 6044, 2711, 5422, 4083, 8166, 6755, 4457, 1917, 3834, | ||
| 16337 | + 7668, 7751, 6433, 6125, 2677, 5354, 3195, 6390, 5187, 3369, | ||
| 16338 | + 6738, 4363, 1977, 3954, 7908, 6247, 5473, 3949, 7898, 6171, | ||
| 16339 | + 5529, 3741, 7482, 8155, 6681, 4509, 1685, 3370, 6740, 4359, | ||
| 16340 | + 1953, 3906, 7812, 6311, 5345, 3181, 6362, 5147, 3481, 6962, | ||
| 16341 | + 5067, 569, 1138, 2276, 4552, 1599, 3198, 6396, 5207, 3329, | ||
| 16342 | + 6658, 4523, 1785, 3570, 7140, 4711, 353, 706, 1412, 2824, | ||
| 16343 | + 5648, 2447, 4894, 915, 1830, 3660, 7320, 7327, 7313, 7309, | ||
| 16344 | + 7349, 7365, 7205, 7653, 7781, 6501, 5989, 2917, 5834, 2107, | ||
| 16345 | + 4214, 1347, 2694, 5388, 4023, 8046, 7027, 4937, 829, 1658, | ||
| 16346 | + 3316, 6632, 5759, 2385, 4770, 235, 470, 940, 1880, 3760, 7520, | ||
| 16347 | + 8047, 7025, 4941, 821, 1642, 3284, 6568, 5887, 2129, 4258, | ||
| 16348 | + 1259, 2518, 5036, 759, 1518, 3036, 6072, 2783, 5566, 3795, | ||
| 16349 | + 7590, 7907, 6249, 5501, 3925, 7850, 6395, 5209, 3357, 6714, | ||
| 16350 | + 4571, 1561, 3122, 6244, 5479, 3937, 7874, 6187, 5625, 3677, | ||
| 16351 | + 7354, 7387, 7193, 7581, 7829, 6277, 5285, 3301, 6602, 5691, | ||
| 16352 | + 2521, 5042, 715, 1430, 2860, 5720, 2335, 4670, 467, 934, 1868, | ||
| 16353 | + 3736, 7472, 8143, 6705, 4557, 1589, 3178, 6356, 5127, 3489, | ||
| 16354 | + 6978, 4907, 1017, 2034, 4068, 8136, 6719, 4561, 1549, 3098, | ||
| 16355 | + 6196, 5575, 3617, 7234, 7467, 8185, 6749, 4373, 1925, 3850, | ||
| 16356 | + 7700, 6535, 5793, 2285, 4570, 1563, 3126, 6252, 5495, 3905, | ||
| 16357 | + 7810, 6315, 5369, 3165, 6330, 5339, 3097, 6194, 5579, 3641, | ||
| 16358 | + 7282, 7499, 7993, 7133, 4629, 389, 778, 1556, 3112, 6224, | ||
| 16359 | + 5391, 4017, 8034, 7019, 4985, 861, 1722, 3444, 6888, 4223, | ||
| 16360 | + 1361, 2722, 5444, 3879, 7758, 6451, 6089, 2621, 5242, 3419, | ||
| 16361 | + 6838, 4291, 1065, 2130, 4260, 1255, 2510, 5020, 663, 1326, | ||
| 16362 | + 2652, 5304, 3295, 6590, 5843, 2057, 4114, 1419, 2838, 5676, | ||
| 16363 | + 2551, 5102, 627, 1254, 2508, 5016, 671, 1342, 2684, 5368, | ||
| 16364 | + 3167, 6334, 5331, 3081, 6162, 5515, 3769, 7538, 8011, 6969, | ||
| 16365 | + 5085, 533, 1066, 2132, 4264, 1279, 2558, 5116, 599, 1198, | ||
| 16366 | + 2396, 4792, 223, 446, 892, 1784, 3568, 7136, 4719, 369, 738, | ||
| 16367 | + 1476, 2952, 5904, 2959, 5918, 2963, 5926, 3043, 6086, 2595, | ||
| 16368 | + 5190, 3363, 6726, 4387, 2025, 4050, 8100, 6887, 4193, 1389, | ||
| 16369 | + 2778, 5556, 3783, 7566, 7859, 6345, 5181, 3541, 7082, 4859, | ||
| 16370 | + 89, 178, 356, 712, 1424, 2848, 5696, 2351, 4702, 275, 550, | ||
| 16371 | + 1100, 2200, 4400, 1999, 3998, 7996, 7127, 4609, 429, 858, | ||
| 16372 | + 1716, 3432, 6864, 4111, 1457, 2914, 5828, 2087, 4174, 1331, | ||
| 16373 | + 2662, 5324, 3127, 6254, 5491, 3913, 7826, 6283, 5305, 3293, | ||
| 16374 | + 6586, 5851, 2073, 4146, 1483, 2966, 5932, 3063, 6126, 2675, | ||
| 16375 | + 5350, 3171, 6342, 5155, 3561, 7122, 4619, 441, 882, 1764, | ||
| 16376 | + 3528, 7056, 4751, 177, 354, 708, 1416, 2832, 5664, 2543, 5086, | ||
| 16377 | + 531, 1062, 2124, 4248, 1183, 2366, 4732, 343, 686, 1372, 2744, | ||
| 16378 | + 5488, 3919, 7838, 6291, 5257, 3261, 6522, 5979, 2841, 5682, | ||
| 16379 | + 2507, 5014, 643, 1286, 2572, 5144, 3487, 6974, 5075, 521, | ||
| 16380 | + 1042, 2084, 4168, 1343, 2686, 5372, 3159, 6318, 5363, 3145, | ||
| 16381 | + 6290, 5259, 3257, 6514, 5963, 2873, 5746, 2379, 4758, 131, | ||
| 16382 | + 262, 524, 1048, 2096, 4192, 1391, 2782, 5564, 3799, 7598, | ||
| 16383 | + 7923, 6217, 5437, 4053, 8106, 6907, 4185, 1309, 2618, 5236, | ||
| 16384 | + 3399, 6798, 4275, 1225, 2450, 4900, 999, 1998, 3996, 7992, | ||
| 16385 | + 7135, 4625, 397, 794, 1588, 3176, 6352, 5135, 3505, 7010, | ||
| 16386 | + 4971, 889, 1778, 3556, 7112, 4671, 465, 930, 1860, 3720, 7440, | ||
| 16387 | + 8079, 6833, 4301, 1077, 2154, 4308, 1031, 2062, 4124, 1431, | ||
| 16388 | + 2862, 5724, 2327, 4654, 499, 998, 1996, 3992, 7984, 7119, | ||
| 16389 | + 4657, 461, 922, 1844, 3688, 7376, 7183, 7601, 7885, 6197, | ||
| 16390 | + 5573, 3621, 7242, 7483, 8153, 6685, 4501, 1669, 3338, 6676, | ||
| 16391 | + 4487, 1697, 3394, 6788, 4263, 1249, 2498, 4996, 679, 1358, | ||
| 16392 | + 2716, 5432, 4063, 8126, 6867, 4105, 1469, 2938, 5876, 2119, | ||
| 16393 | + 4238, 1203, 2406, 4812, 55, 110, 220, 440, 880, 1760, 3520, | ||
| 16394 | + 7040, 4783, 241, 482, 964, 1928, 3856, 7712, 6639, 5745, 2381, | ||
| 16395 | + 4762, 155, 310, 620, 1240, 2480, 4960, 879, 1758, 3516, 7032, | ||
| 16396 | + 4959, 785, 1570, 3140, 6280, 5311, 3281, 6562, 5867, 2169, | ||
| 16397 | + 4338, 1099, 2198, 4396, 2039, 4078, 8156, 6679, 4481, 1709, | ||
| 16398 | + 3418, 6836, 4295, 1057, 2114, 4228, 1191, 2382, 4764, 151, | ||
| 16399 | + 302, 604, 1208, 2416, 4832, 111, 222, 444, 888, 1776, 3552, | ||
| 16400 | + 7104, 4655, 497, 994, 1988, 3976, 7952, 7055, 4785, 205, 410, | ||
| 16401 | + 820, 1640, 3280, 6560, 5871, 2161, 4322, 1131, 2262, 4524, | ||
| 16402 | + 1783, 3566, 7132, 4631, 385, 770, 1540, 3080, 6160, 5519, | ||
| 16403 | + 3761, 7522, 8043, 7033, 4957, 789, 1578, 3156, 6312, 5375, | ||
| 16404 | + 3153, 6306, 5355, 3193, 6386, 5195, 3385, 6770, 4427, 1849, | ||
| 16405 | + 3698, 7396, 7271, 7521, 8045, 7029, 4933, 805, 1610, 3220, | ||
| 16406 | + 6440, 6143, 2641, 5282, 3307, 6614, 5635, 2473, 4946, 779, | ||
| 16407 | + 1558, 3116, 6232, 5407, 3985, 7970, 7147, 4729, 349, 698, | ||
| 16408 | + 1396, 2792, 5584, 3599, 7198, 7571, 7817, 6333, 5333, 3077, | ||
| 16409 | + 6154, 5563, 3801, 7602, 7883, 6201, 5597, 3605, 7210, 7675, | ||
| 16410 | + 7769, 6429, 6037, 2693, 5386, 4027, 8054, 6979, 4905, 1021, | ||
| 16411 | + 2042, 4084, 8168, 6783, 4433, 1805, 3610, 7220, 7623, 7713, | ||
| 16412 | + 6637, 5749, 2373, 4746, 187, 374, 748, 1496, 2992, 5984, 2927, | ||
| 16413 | + 5854, 2067, 4134, 1507, 3014, 6028, 2743, 5486, 3955, 7910, | ||
| 16414 | + 6243, 5481, 3965, 7930, 6235, 5401, 3997, 7994, 7131, 4633, | ||
| 16415 | + 413, 826, 1652, 3304, 6608, 5647, 2481, 4962, 875, 1750, 3500, | ||
| 16416 | + 7000, 4895, 913, 1826, 3652, 7304, 7359, 7377, 7181, 7605, | ||
| 16417 | + 7877, 6181, 5605, 3685, 7370, 7227, 7641, 7709, 6549, 5765, | ||
| 16418 | + 2213, 4426, 1851, 3702, 7404, 7287, 7489, 7981, 7157, 4677, | ||
| 16419 | + 293, 586, 1172, 2344, 4688, 271, 542, 1084, 2168, 4336, 1103, | ||
| 16420 | + 2206, 4412, 2007, 4014, 8028, 6935, 4993, 685, 1370, 2740, | ||
| 16421 | + 5480, 3967, 7934, 6227, 5385, 4029, 8058, 7003, 4889, 925, | ||
| 16422 | + 1850, 3700, 7400, 7295, 7505, 7949, 7093, 4805, 37, 74, 148, | ||
| 16423 | + 296, 592, 1184, 2368, 4736, 175, 350, 700, 1400, 2800, 5600, | ||
| 16424 | + 3695, 7390, 7187, 7561, 7869, 6357, 5125, 3493, 6986, 4923, | ||
| 16425 | + 985, 1970, 3940, 7880, 6207, 5585, 3597, 7194, 7579, 7833, | ||
| 16426 | + 6301, 5269, 3205, 6410, 6075, 2777, 5554, 3787, 7574, 7811, | ||
| 16427 | + 6313, 5373, 3157, 6314, 5371, 3161, 6322, 5323, 3129, 6258, | ||
| 16428 | + 5451, 3897, 7794, 6475, 5945, 3037, 6074, 2779, 5558, 3779, | ||
| 16429 | + 7558, 7843, 6377, 5245, 3413, 6826, 4347, 1113, 2226, 4452, | ||
| 16430 | + 1895, 3790, 7580, 7831, 6273, 5293, 3317, 6634, 5755, 2393, | ||
| 16431 | + 4786, 203, 406, 812, 1624, 3248, 6496, 5999, 2929, 5858, 2155, | ||
| 16432 | + 4310, 1027, 2054, 4108, 1463, 2926, 5852, 2071, 4142, 1523, | ||
| 16433 | + 3046, 6092, 2615, 5230, 3443, 6886, 4195, 1385, 2770, 5540, | ||
| 16434 | + 3815, 7630, 7731, 6601, 5693, 2517, 5034, 763, 1526, 3052, | ||
| 16435 | + 6104, 2591, 5182, 3539, 7078, 4835, 105, 210, 420, 840, 1680, | ||
| 16436 | + 3360, 6720, 4399, 2033, 4066, 8132, 6695, 4577, 1645, 3290, | ||
| 16437 | + 6580, 5831, 2081, 4162, 1323, 2646, 5292, 3319, 6638, 5747, | ||
| 16438 | + 2377, 4754, 139, 278, 556, 1112, 2224, 4448, 1903, 3806, 7612, | ||
| 16439 | + 7895, 6145, 5549, 3829, 7658, 7803, 6489, 5917, 2965, 5930, | ||
| 16440 | + 3067, 6134, 2627, 5254, 3235, 6470, 5923, 3049, 6098, 2571, | ||
| 16441 | + 5142, 3459, 6918, 5027, 745, 1490, 2980, 5960, 2879, 5758, | ||
| 16442 | + 2387, 4774, 227, 454, 908, 1816, 3632, 7264, 7535, 8049, 6989, | ||
| 16443 | + 4917, 965, 1930, 3860, 7720, 6655, 5713, 2317, 4634, 411, 822, | ||
| 16444 | + 1644, 3288, 6576, 5839, 2097, 4194, 1387, 2774, 5548, 3831, | ||
| 16445 | + 7662, 7795, 6473, 5949, 3029, 6058, 2811, 5622, 3651, 7302, | ||
| 16446 | + 7331, 7401, 7293, 7509, 7941, 7077, 4837, 101, 202, 404, 808, | ||
| 16447 | + 1616, 3232, 6464, 5935, 3057, 6114, 2667, 5334, 3075, 6150, | ||
| 16448 | + 5539, 3817, 7634, 7691, 6585, 5853, 2069, 4138, 1531, 3062, | ||
| 16449 | + 6124, 2679, 5358, 3187, 6374, 5219, 3433, 6866, 4107, 1465, | ||
| 16450 | + 2930, 5860, 2151, 4302, 1075, 2150, 4300, 1079, 2158, 4316, | ||
| 16451 | + 1047, 2094, 4188, 1303, 2606, 5212, 3351, 6702, 4595, 1609, | ||
| 16452 | + 3218, 6436, 6119, 2657, 5314, 3115, 6230, 5379, 4009, 8018, | ||
| 16453 | + 6923, 5049, 733, 1466, 2932, 5864, 2175, 4350, 1107, 2214, | ||
| 16454 | + 4428, 1847, 3694, 7388, 7191, 7553, 7853, 6389, 5189, 3365, | ||
| 16455 | + 6730, 4411, 2009, 4018, 8036, 7015, 4961, 877, 1754, 3508, | ||
| 16456 | + 7016, 4991, 849, 1698, 3396, 6792, 4287, 1233, 2466, 4932, | ||
| 16457 | + 807, 1614, 3228, 6456, 6111, 2577, 5154, 3563, 7126, 4611, | ||
| 16458 | + 425, 850, 1700, 3400, 6800, 4239, 1201, 2402, 4804, 39, 78, | ||
| 16459 | + 156, 312, 624, 1248, 2496, 4992, 687, 1374, 2748, 5496, 3935, | ||
| 16460 | + 7870, 6355, 5129, 3517, 7034, 4955, 793, 1586, 3172, 6344, | ||
| 16461 | + 5183, 3537, 7074, 4843, 121, 242, 484, 968, 1936, 3872, 7744, | ||
| 16462 | + 6447, 6129, 2637, 5274, 3227, 6454, 6083, 2601, 5202, 3339, | ||
| 16463 | + 6678, 4483, 1705, 3410, 6820, 4327, 1121, 2242, 4484, 1703, | ||
| 16464 | + 3406, 6812, 4247, 1153, 2306, 4612, 423, 846, 1692, 3384, | ||
| 16465 | + 6768, 4431, 1841, 3682, 7364, 7207, 7649, 7789, 6517, 5957, | ||
| 16466 | + 2853, 5706, 2363, 4726, 323, 646, 1292, 2584, 5168, 3535, | ||
| 16467 | + 7070, 4755, 137, 274, 548, 1096, 2192, 4384, 2031, 4062, 8124, | ||
| 16468 | + 6871, 4097, 1453, 2906, 5812, 2247, 4494, 1715, 3430, 6860, | ||
| 16469 | + 4151, 1473, 2946, 5892, 2983, 5966, 2867, 5734, 2403, 4806, | ||
| 16470 | + 35, 70, 140, 280, 560, 1120, 2240, 4480, 1711, 3422, 6844, | ||
| 16471 | + 4311, 1025, 2050, 4100, 1447, 2894, 5788, 2199, 4398, 2035, | ||
| 16472 | + 4070, 8140, 6711, 4545, 1581, 3162, 6324, 5319, 3105, 6210, | ||
| 16473 | + 5419, 4089, 8178, 6731, 4409, 2013, 4026, 8052, 6983, 4897, | ||
| 16474 | + 1005, 2010, 4020, 8040, 7039, 4945, 781, 1562, 3124, 6248, | ||
| 16475 | + 5503, 3921, 7842, 6379, 5241, 3421, 6842, 4315, 1049, 2098, | ||
| 16476 | + 4196, 1383, 2766, 5532, 3735, 7470, 8179, 6729, 4413, 2005, | ||
| 16477 | + 4010, 8020, 6919, 5025, 749, 1498, 2996, 5992, 2943, 5886, | ||
| 16478 | + 2131, 4262, 1251, 2502, 5004, 695, 1390, 2780, 5560, 3807, | ||
| 16479 | + 7614, 7891, 6153, 5565, 3797, 7594, 7931, 6233, 5405, 3989, | ||
| 16480 | + 7978, 7163, 4697, 285, 570, 1140, 2280, 4560, 1551, 3102, | ||
| 16481 | + 6204, 5591, 3585, 7170, 7595, 7929, 6237, 5397, 3973, 7946, | ||
| 16482 | + 7099, 4825, 29, 58, 116, 232, 464, 928, 1856, 3712, 7424, | ||
| 16483 | + 8111, 6897, 4173, 1333, 2666, 5332, 3079, 6158, 5555, 3785, | ||
| 16484 | + 7570, 7819, 6329, 5341, 3093, 6186, 5627, 3673, 7346, 7371, | ||
| 16485 | + 7225, 7645, 7701, 6533, 5797, 2277, 4554, 1595, 3190, 6380, | ||
| 16486 | + 5239, 3393, 6786, 4267, 1273, 2546, 5092, 615, 1230, 2460, | ||
| 16487 | + 4920, 991, 1982, 3964, 7928, 6239, 5393, 3981, 7962, 7067, | ||
| 16488 | + 4761, 157, 314, 628, 1256, 2512, 5024, 751, 1502, 3004, 6008, | ||
| 16489 | + 2911, 5822, 2259, 4518, 1763, 3526, 7052, 4791, 193, 386, 772, | ||
| 16490 | + 1544, 3088, 6176, 5615, 3697, 7394, 7275, 7545, 8029, 6933, | ||
| 16491 | + 4997, 677, 1354, 2708, 5416, 4095, 8190, 6739, 4361, 1981, | ||
| 16492 | + 3962, 7924, 6215, 5409, 4077, 8154, 6683, 4505, 1693, 3386, | ||
| 16493 | + 6772, 4423, 1825, 3650, 7300, 7335, 7393, 7277, 7541, 8005, | ||
| 16494 | + 6949, 5093, 613, 1226, 2452, 4904, 1023, 2046, 4092, 8184, | ||
| 16495 | + 6751, 4369, 1933, 3866, 7732, 6599, 5665, 2541, 5082, 539, | ||
| 16496 | + 1078, 2156, 4312, 1055, 2110, 4220, 1367, 2734, 5468, 3863, | ||
| 16497 | + 7726, 6643, 5705, 2365, 4730, 347, 694, 1388, 2776, 5552, | ||
| 16498 | + 3791, 7582, 7827, 6281, 5309, 3285, 6570, 5883, 2137, 4274, | ||
| 16499 | + 1227, 2454, 4908, 1015, 2030, 4060, 8120, 6879, 4113, 1421, | ||
| 16500 | + 2842, 5684, 2503, 5006, 691, 1382, 2764, 5528, 3743, 7486, | ||
| 16501 | + 8147, 6665, 4541, 1749, 3498, 6996, 4871, 929, 1858, 3716, | ||
| 16502 | + 7432, 8127, 6865, 4109, 1461, 2922, 5844, 2055, 4110, 1459, | ||
| 16503 | + 2918, 5836, 2103, 4206, 1395, 2790, 5580, 3639, 7278, 7539, | ||
| 16504 | + 8009, 6973, 5077, 517, 1034, 2068, 4136, 1535, 3070, 6140, | ||
| 16505 | + 2647, 5294, 3315, 6630, 5731, 2409, 4818, 11, 22, 44, 88, 176, | ||
| 16506 | + 352, 704, 1408, 2816, 5632, 2479, 4958, 787, 1574, 3148, 6296, | ||
| 16507 | + 5279, 3217, 6434, 6123, 2681, 5362, 3147, 6294, 5251, 3241, | ||
| 16508 | + 6482, 5899, 3001, 6002, 2891, 5782, 2179, 4358, 1955, 3910, | ||
| 16509 | + 7820, 6327, 5313, 3117, 6234, 5403, 3993, 7986, 7115, 4665, | ||
| 16510 | + 477, 954, 1908, 3816, 7632, 7695, 6577, 5837, 2101, 4202, | ||
| 16511 | + 1403, 2806, 5612, 3703, 7406, 7283, 7497, 7997, 7125, 4613, | ||
| 16512 | + 421, 842, 1684, 3368, 6736, 4367, 1969, 3938, 7876, 6183, | ||
| 16513 | + 5601, 3693, 7386, 7195, 7577, 7837, 6293, 5253, 3237, 6474, | ||
| 16514 | + 5947, 3033, 6066, 2763, 5526, 3715, 7430, 8099, 6889, 4221, | ||
| 16515 | + 1365, 2730, 5460, 3847, 7694, 6579, 5833, 2109, 4218, 1371, | ||
| 16516 | + 2742, 5484, 3959, 7918, 6259, 5449, 3901, 7802, 6491, 5913, | ||
| 16517 | + 2973, 5946, 3035, 6070, 2755, 5510, 3747, 7494, 7971, 7145, | ||
| 16518 | + 4733, 341, 682, 1364, 2728, 5456, 3855, 7710, 6547, 5769, | ||
| 16519 | + 2237, 4474, 1883, 3766, 7532, 8055, 6977, 4909, 1013, 2026, | ||
| 16520 | + 4052, 8104, 6911, 4177, 1293, 2586, 5172, 3527, 7054, 4787, | ||
| 16521 | + 201, 402, 804, 1608, 3216, 6432, 6127, 2673, 5346, 3179, 6358, | ||
| 16522 | + 5123, 3497, 6994, 4875, 953, 1906, 3812, 7624, 7743, 6609, | ||
| 16523 | + 5645, 2485, 4970, 891, 1782, 3564, 7128, 4639, 401, 802, 1604, | ||
| 16524 | + 3208, 6416, 6031, 2737, 5474, 3947, 7894, 6147, 5545, 3837, | ||
| 16525 | + 7674, 7771, 6425, 6045, 2709, 5418, 4091, 8182, 6723, 4393, | ||
| 16526 | + 2045, 4090, 8180, 6727, 4385, 2029, 4058, 8116, 6855, 4129, | ||
| 16527 | + 1517, 3034, 6068, 2759, 5518, 3763, 7526, 8035, 7017, 4989, | ||
| 16528 | + 853, 1706, 3412, 6824, 4351, 1105, 2210, 4420, 1831, 3662, | ||
| 16529 | + 7324, 7319, 7297, 7341, 7413, 7237, 7461, 8165, 6757, 4453, | ||
| 16530 | + 1893, 3786, 7572, 7815, 6305, 5357, 3189, 6378, 5243, 3417, | ||
| 16531 | + 6834, 4299, 1081, 2162, 4324, 1127, 2254, 4508, 1687, 3374, | ||
| 16532 | + 6748, 4375, 1921, 3842, 7684, 6567, 5857, 2157, 4314, 1051, | ||
| 16533 | + 2102, 4204, 1399, 2798, 5596, 3607, 7214, 7667, 7753, 6461, | ||
| 16534 | + 6101, 2565, 5130, 3515, 7030, 4931, 809, 1618, 3236, 6472, | ||
| 16535 | + 5951, 3025, 6050, 2795, 5590, 3587, 7174, 7587, 7913, 6269, | ||
| 16536 | + 5461, 3845, 7690, 6587, 5849, 2077, 4154, 1499, 2998, 5996, | ||
| 16537 | + 2935, 5870, 2163, 4326, 1123, 2246, 4492, 1719, 3438, 6876, | ||
| 16538 | + 4119, 1409, 2818, 5636, 2471, 4942, 819, 1638, 3276, 6552, | ||
| 16539 | + 5791, 2193, 4386, 2027, 4054, 8108, 6903, 4161, 1325, 2650, | ||
| 16540 | + 5300, 3271, 6542, 5811, 2249, 4498, 1675, 3350, 6700, 4599, | ||
| 16541 | + 1601, 3202, 6404, 6055, 2785, 5570, 3627, 7254, 7427, 8105, | ||
| 16542 | + 6909, 4181, 1285, 2570, 5140, 3463, 6926, 5043, 713, 1426, | ||
| 16543 | + 2852, 5704, 2367, 4734, 339, 678, 1356, 2712, 5424, 4047, | ||
| 16544 | + 8094, 6803, 4233, 1213, 2426, 4852, 71, 142, 284, 568, 1136, | ||
| 16545 | + 2272, 4544, 1583, 3166, 6332, 5335, 3073, 6146, 5547, 3833, | ||
| 16546 | + 7666, 7755, 6457, 6109, 2581, 5162, 3579, 7158, 4675, 297, | ||
| 16547 | + 594, 1188, 2376, 4752, 143, 286, 572, 1144, 2288, 4576, 1647, | ||
| 16548 | + 3294, 6588, 5847, 2049, 4098, 1451, 2902, 5804, 2295, 4590, | ||
| 16549 | + 1651, 3302, 6604, 5687, 2497, 4994, 683, 1366, 2732, 5464, | ||
| 16550 | + 3871, 7742, 6611, 5641, 2493, 4986, 859, 1718, 3436, 6872, | ||
| 16551 | + 4127, 1425, 2850, 5700, 2343, 4686, 307, 614, 1228, 2456, | ||
| 16552 | + 4912, 975, 1950, 3900, 7800, 6495, 5905, 2957, 5914, 2971, | ||
| 16553 | + 5942, 3011, 6022, 2723, 5446, 3875, 7750, 6435, 6121, 2685, | ||
| 16554 | + 5370, 3163, 6326, 5315, 3113, 6226, 5387, 4025, 8050, 6987, | ||
| 16555 | + 4921, 989, 1978, 3956, 7912, 6271, 5457, 3853, 7706, 6555, | ||
| 16556 | + 5785, 2205, 4410, 2011, 4022, 8044, 7031, 4929, 813, 1626, | ||
| 16557 | + 3252, 6504, 6015, 2897, 5794, 2283, 4566, 1539, 3078, 6156, | ||
| 16558 | + 5559, 3777, 7554, 7851, 6393, 5213, 3349, 6698, 4603, 1625, | ||
| 16559 | + 3250, 6500, 5991, 2913, 5826, 2091, 4182, 1283, 2566, 5132, | ||
| 16560 | + 3511, 7022, 4979, 841, 1682, 3364, 6728, 4415, 2001, 4002, | ||
| 16561 | + 8004, 6951, 5089, 621, 1242, 2484, 4968, 895, 1790, 3580, | ||
| 16562 | + 7160, 4703, 273, 546, 1092, 2184, 4368, 1935, 3870, 7740, | ||
| 16563 | + 6615, 5633, 2477, 4954, 795, 1590, 3180, 6360, 5151, 3473, | ||
| 16564 | + 6946, 5099, 633, 1266, 2532, 5064, 575, 1150, 2300, 4600, | ||
| 16565 | + 1631, 3262, 6524, 5975, 2817, 5634, 2475, 4950, 771, 1542, | ||
| 16566 | + 3084, 6168, 5535, 3729, 7458, 8171, 6777, 4445, 1813, 3626, | ||
| 16567 | + 7252, 7431, 8097, 6893, 4213, 1349, 2698, 5396, 3975, 7950, | ||
| 16568 | + 7091, 4809, 61, 122, 244, 488, 976, 1952, 3904, 7808, 6319, | ||
| 16569 | + 5361, 3149, 6298, 5275, 3225, 6450, 6091, 2617, 5234, 3403, | ||
| 16570 | + 6806, 4227, 1193, 2386, 4772, 231, 462, 924, 1848, 3696, 7392, | ||
| 16571 | + 7279, 7537, 8013, 6965, 5061, 549, 1098, 2196, 4392, 2047, | ||
| 16572 | + 4094, 8188, 6743, 4353, 1965, 3930, 7860, 6343, 5153, 3565, | ||
| 16573 | + 7130, 4635, 409, 818, 1636, 3272, 6544, 5775, 2225, 4450, | ||
| 16574 | + 1899, 3798, 7596, 7927, 6209, 5421, 4085, 8170, 6779, 4441, | ||
| 16575 | + 1821, 3642, 7284, 7495, 7969, 7149, 4725, 325, 650, 1300, | ||
| 16576 | + 2600, 5200, 3343, 6686, 4499, 1673, 3346, 6692, 4583, 1633, | ||
| 16577 | + 3266, 6532, 5799, 2273, 4546, 1579, 3158, 6316, 5367, 3137, | ||
| 16578 | + 6274, 5291, 3321, 6642, 5707, 2361, 4722, 331, 662, 1324, | ||
| 16579 | + 2648, 5296, 3279, 6558, 5779, 2185, 4370, 1931, 3862, 7724, | ||
| 16580 | + 6647, 5697, 2349, 4698, 283, 566, 1132, 2264, 4528, 1743, | ||
| 16581 | + 3486, 6972, 5079, 513, 1026, 2052, 4104, 1471, 2942, 5884, | ||
| 16582 | + 2135, 4270, 1267, 2534, 5068, 567, 1134, 2268, 4536, 1759, | ||
| 16583 | + 3518, 7036, 4951, 769, 1538, 3076, 6152, 5567, 3793, 7586, | ||
| 16584 | + 7915, 6265, 5469, 3861, 7722, 6651, 5721, 2333, 4666, 475, | ||
| 16585 | + 950, 1900, 3800, 7600, 7887, 6193, 5581, 3637, 7274, 7547, | ||
| 16586 | + 8025, 6941, 5013, 645, 1290, 2580, 5160, 3583, 7166, 4691, | ||
| 16587 | + 265, 530, 1060, 2120, 4240, 1167, 2334, 4668, 471, 942, 1884, | ||
| 16588 | + 3768, 7536, 8015, 6961, 5069, 565, 1130, 2260, 4520, 1791, | ||
| 16589 | + 3582, 7164, 4695, 257, 514, 1028, 2056, 4112, 1423, 2846, | ||
| 16590 | + 5692, 2519, 5038, 755, 1510, 3020, 6040, 2719, 5438, 4051, | ||
| 16591 | + 8102, 6883, 4201, 1405, 2810, 5620, 3655, 7310, 7347, 7369, | ||
| 16592 | + 7229, 7637, 7685, 6565, 5861, 2149, 4298, 1083, 2166, 4332, | ||
| 16593 | + 1143, 2286, 4572, 1559, 3118, 6236, 5399, 3969, 7938, 7083, | ||
| 16594 | + 4857, 93, 186, 372, 744, 1488, 2976, 5952, 2863, 5726, 2323, | ||
| 16595 | + 4646, 483, 966, 1932, 3864, 7728, 6607, 5681, 2509, 5018, 667, | ||
| 16596 | + 1334, 2668, 5336, 3103, 6206, 5587, 3593, 7186, 7563, 7865, | ||
| 16597 | + 6365, 5141, 3461, 6922, 5051, 729, 1458, 2916, 5832, 2111, | ||
| 16598 | + 4222, 1363, 2726, 5452, 3895, 7790, 6515, 5961, 2877, 5754, | ||
| 16599 | + 2395, 4790, 195, 390, 780, 1560, 3120, 6240, 5487, 3953, 7906, | ||
| 16600 | + 6251, 5497, 3933, 7866, 6363, 5145, 3485, 6970, 5083, 537, | ||
| 16601 | + 1074, 2148, 4296, 1087, 2174, 4348, 1111, 2222, 4444, 1815, | ||
| 16602 | + 3630, 7260, 7447, 8065, 6829, 4341, 1093, 2186, 4372, 1927, | ||
| 16603 | + 3854, 7708, 6551, 5761, 2221, 4442, 1819, 3638, 7276, 7543, | ||
| 16604 | + 8001, 6957, 5109, 581, 1162, 2324, 4648, 511, 1022, 2044, | ||
| 16605 | + 4088, 8176, 6735, 4401, 1997, 3994, 7988, 7111, 4641, 493, | ||
| 16606 | + 986, 1972, 3944, 7888, 6159, 5553, 3789, 7578, 7835, 6297, | ||
| 16607 | + 5277, 3221, 6442, 6139, 2649, 5298, 3275, 6550, 5763, 2217, | ||
| 16608 | + 4434, 1803, 3606, 7212, 7671, 7745, 6445, 6133, 2629, 5258, | ||
| 16609 | + 3259, 6518, 5955, 2857, 5714, 2315, 4630, 387, 774, 1548, | ||
| 16610 | + 3096, 6192, 5583, 3633, 7266, 7531, 8057, 7005, 4885, 901, | ||
| 16611 | + 1802, 3604, 7208, 7679, 7761, 6413, 6069, 2757, 5514, 3771, | ||
| 16612 | + 7542, 8003, 6953, 5117, 597, 1194, 2388, 4776, 255, 510, 1020, | ||
| 16613 | + 2040, 4080, 8160, 6767, 4465, 1869, 3738, 7476, 8135, 6689, | ||
| 16614 | + 4589, 1653, 3306, 6612, 5639, 2465, 4930, 811, 1622, 3244, | ||
| 16615 | + 6488, 5919, 2961, 5922, 3051, 6102, 2563, 5126, 3491, 6982, | ||
| 16616 | + 4899, 1001, 2002, 4004, 8008, 6975, 5073, 525, 1050, 2100, | ||
| 16617 | + 4200, 1407, 2814, 5628, 3671, 7342, 7411, 7241, 7485, 8149, | ||
| 16618 | + 6661, 4517, 1765, 3530, 7060, 4743, 161, 322, 644, 1288, 2576, | ||
| 16619 | + 5152, 3567, 7134, 4627, 393, 786, 1572, 3144, 6288, 5263, | ||
| 16620 | + 3249, 6498, 5995, 2937, 5874, 2123, 4246, 1155, 2310, 4620, | ||
| 16621 | + 439, 878, 1756, 3512, 7024, 4943, 817, 1634, 3268, 6536, 5823, | ||
| 16622 | + 2257, 4514, 1771, 3542, 7084, 4855, 65, 130, 260, 520, 1040, | ||
| 16623 | + 2080, 4160, 1327, 2654, 5308, 3287, 6574, 5875, 2121, 4242, | ||
| 16624 | + 1163, 2326, 4652, 503, 1006, 2012, 4024, 8048, 6991, 4913, | ||
| 16625 | + 973, 1946, 3892, 7784, 6527, 5969, 2829, 5658, 2459, 4918, | ||
| 16626 | + 963, 1926, 3852, 7704, 6559, 5777, 2189, 4378, 1947, 3894, | ||
| 16627 | + 7788, 6519, 5953, 2861, 5722, 2331, 4662, 451, 902, 1804, | ||
| 16628 | + 3608, 7216, 7631, 7729, 6605, 5685, 2501, 5002, 699, 1398, | ||
| 16629 | + 2796, 5592, 3615, 7230, 7635, 7689, 6589, 5845, 2053, 4106, | ||
| 16630 | + 1467, 2934, 5868, 2167, 4334, 1139, 2278, 4556, 1591, 3182, | ||
| 16631 | + 6364, 5143, 3457, 6914, 5035, 761, 1522, 3044, 6088, 2623, | ||
| 16632 | + 5246, 3411, 6822, 4323, 1129, 2258, 4516, 1767, 3534, 7068, | ||
| 16633 | + 4759, 129, 258, 516, 1032, 2064, 4128, 1519, 3038, 6076, 2775, | ||
| 16634 | + 5550, 3827, 7654, 7779, 6505, 6013, 2901, 5802, 2299, 4598, | ||
| 16635 | + 1603, 3206, 6412, 6071, 2753, 5506, 3755, 7510, 7939, 7081, | ||
| 16636 | + 4861, 85, 170, 340, 680, 1360, 2720, 5440, 3887, 7774, 6419, | ||
| 16637 | + 6025, 2749, 5498, 3931, 7862, 6339, 5161, 3581, 7162, 4699, | ||
| 16638 | + 281, 562, 1124, 2248, 4496, 1679, 3358, 6716, 4567, 1537, | ||
| 16639 | + 3074, 6148, 5543, 3809, 7618, 7723, 6649, 5725, 2325, 4650, | ||
| 16640 | + 507, 1014, 2028, 4056, 8112, 6863, 4145, 1485, 2970, 5940, | ||
| 16641 | + 3015, 6030, 2739, 5478, 3939, 7878, 6179, 5609, 3709, 7418, | ||
| 16642 | + 7259, 7449, 8093, 6805, 4229, 1189, 2378, 4756, 135, 270, 540, | ||
| 16643 | + 1080, 2160, 4320, 1135, 2270, 4540, 1751, 3502, 7004, 4887, | ||
| 16644 | + 897, 1794, 3588, 7176, 7615, 7889, 6157, 5557, 3781, 7562, | ||
| 16645 | + 7867, 6361, 5149, 3477, 6954, 5115, 601, 1202, 2404, 4808, 63, | ||
| 16646 | + 126, 252, 504, 1008, 2016, 4032, 8064, 6831, 4337, 1101, 2202, | ||
| 16647 | + 4404, 1991, 3982, 7964, 7063, 4737, 173, 346, 692, 1384, 2768, | ||
| 16648 | + 5536, 3823, 7646, 7699, 6537, 5821, 2261, 4522, 1787, 3574, | ||
| 16649 | + 7148, 4727, 321, 642, 1284, 2568, 5136, 3471, 6942, 5011, 649, | ||
| 16650 | + 1298, 2596, 5192, 3391, 6782, 4435, 1801, 3602, 7204, 7655, | ||
| 16651 | + 7777, 6509, 6005, 2885, 5770, 2235, 4470, 1859, 3718, 7436, | ||
| 16652 | + 8119, 6849, 4141, 1525, 3050, 6100, 2567, 5134, 3507, 7014, | ||
| 16653 | + 4963, 873, 1746, 3492, 6984, 4927, 977, 1954, 3908, 7816, | ||
| 16654 | + 6335, 5329, 3085, 6170, 5531, 3737, 7474, 8139, 6713, 4573, | ||
| 16655 | + 1557, 3114, 6228, 5383, 4001, 8002, 6955, 5113, 605, 1210, | ||
| 16656 | + 2420, 4840, 127, 254, 508, 1016, 2032, 4064, 8128, 6703, 4593, | ||
| 16657 | + 1613, 3226, 6452, 6087, 2593, 5186, 3371, 6742, 4355, 1961, | ||
| 16658 | + 3922, 7844, 6375, 5217, 3437, 6874, 4123, 1433, 2866, 5732, | ||
| 16659 | + 2407, 4814, 51, 102, 204, 408, 816, 1632, 3264, 6528, 5807, | ||
| 16660 | + 2289, 4578, 1643, 3286, 6572, 5879, 2113, 4226, 1195, 2390, | ||
| 16661 | + 4780, 247, 494, 988, 1976, 3952, 7904, 6255, 5489, 3917, 7834, | ||
| 16662 | + 6299, 5273, 3229, 6458, 6107, 2585, 5170, 3531, 7062, 4739, | ||
| 16663 | + 169, 338, 676, 1352, 2704, 5408, 4079, 8158, 6675, 4489, 1725, | ||
| 16664 | + 3450, 6900, 4167, 1313, 2626, 5252, 3239, 6478, 5939, 3017, | ||
| 16665 | + 6034, 2699, 5398, 3971, 7942, 7075, 4841, 125, 250, 500, 1000, | ||
| 16666 | + 2000, 4000, 8000, 6959, 5105, 589, 1178, 2356, 4712, 383, 766, | ||
| 16667 | + 1532, 3064, 6128, 2639, 5278, 3219, 6438, 6115, 2665, 5330, | ||
| 16668 | + 3083, 6166, 5507, 3753, 7506, 7947, 7097, 4829, 21, 42, 84, | ||
| 16669 | + 168, 336, 672, 1344, 2688, 5376, 4015, 8030, 6931, 5001, 701, | ||
| 16670 | + 1402, 2804, 5608, 3711, 7422, 7251, 7433, 8125, 6869, 4101, | ||
| 16671 | + 1445, 2890, 5780, 2183, 4366, 1971, 3942, 7884, 6199, 5569, | ||
| 16672 | + 3629, 7258, 7451, 8089, 6813, 4245, 1157, 2314, 4628, 391, | ||
| 16673 | + 782, 1564, 3128, 6256, 5455, 3889, 7778, 6507, 6009, 2909, | ||
| 16674 | + 5818, 2267, 4534, 1731, 3462, 6924, 5047, 705, 1410, 2820, | ||
| 16675 | + 5640, 2495, 4990, 851, 1702, 3404, 6808, 4255, 1169, 2338, | ||
| 16676 | + 4676, 295, 590, 1180, 2360, 4720, 335, 670, 1340, 2680, 5360, | ||
| 16677 | + 3151, 6302, 5267, 3209, 6418, 6027, 2745, 5490, 3915, 7830, | ||
| 16678 | + 6275, 5289, 3325, 6650, 5723, 2329, 4658, 459, 918, 1836, | ||
| 16679 | + 3672, 7344, 7375, 7217, 7629, 7733, 6597, 5669, 2533, 5066, | ||
| 16680 | + 571, 1142, 2284, 4568, 1567, 3134, 6268, 5463, 3841, 7682, | ||
| 16681 | + 6571, 5881, 2141, 4282, 1243, 2486, 4972, 887, 1774, 3548, | ||
| 16682 | + 7096, 4831, 17, 34, 68, 136, 272, 544, 1088, 2176, 4352, 1967, | ||
| 16683 | + 3934, 7868, 6359, 5121, 3501, 7002, 4891, 921, 1842, 3684, | ||
| 16684 | + 7368, 7231, 7633, 7693, 6581, 5829, 2085, 4170, 1339, 2678, | ||
| 16685 | + 5356, 3191, 6382, 5235, 3401, 6802, 4235, 1209, 2418, 4836, | ||
| 16686 | + 103, 206, 412, 824, 1648, 3296, 6592, 5679, 2545, 5090, 619, | ||
| 16687 | + 1238, 2476, 4952, 799, 1598, 3196, 6392, 5215, 3345, 6690, | ||
| 16688 | + 4587, 1657, 3314, 6628, 5735, 2401, 4802, 43, 86, 172, 344, | ||
| 16689 | + 688, 1376, 2752, 5504, 3759, 7518, 7955, 7049, 4797, 213, 426, | ||
| 16690 | + 852, 1704, 3408, 6816, 4335, 1137, 2274, 4548, 1575, 3150, | ||
| 16691 | + 6300, 5271, 3201, 6402, 6059, 2809, 5618, 3659, 7318, 7299, | ||
| 16692 | + 7337, 7421, 7253, 7429, 8101, 6885, 4197, 1381, 2762, 5524, | ||
| 16693 | + 3719, 7438, 8115, 6857, 4157, 1493, 2986, 5972, 2823, 5646, | ||
| 16694 | + 2483, 4966, 867, 1734, 3468, 6936, 5023, 657, 1314, 2628, | ||
| 16695 | + 5256, 3263, 6526, 5971, 2825, 5650, 2443, 4886, 899, 1798, | ||
| 16696 | + 3596, 7192, 7583, 7825, 6285, 5301, 3269, 6538, 5819, 2265, | ||
| 16697 | + 4530, 1739, 3478, 6956, 5111, 577, 1154, 2308, 4616, 447, 894, | ||
| 16698 | + 1788, 3576, 7152, 4687, 305, 610, 1220, 2440, 4880, 911, 1822, | ||
| 16699 | + 3644, 7288, 7519, 7953, 7053, 4789, 197, 394, 788, 1576, 3152, | ||
| 16700 | + 6304, 5359, 3185, 6370, 5227, 3449, 6898, 4171, 1337, 2674, | ||
| 16701 | + 5348, 3175, 6350, 5171, 3529, 7058, 4747, 185, 370, 740, 1480, | ||
| 16702 | + 2960, 5920, 3055, 6110, 2579, 5158, 3555, 7110, 4643, 489, | ||
| 16703 | + 978, 1956, 3912, 7824, 6287, 5297, 3277, 6554, 5787, 2201, | ||
| 16704 | + 4402, 1995, 3990, 7980, 7159, 4673, 301, 602, 1204, 2408, | ||
| 16705 | + 4816, 15, 30, 60, 120, 240, 480, 960, 1920, 3840, 7680, 6575, | ||
| 16706 | + 5873, 2125, 4250, 1179, 2358, 4716, 375, 750, 1500, 3000, | ||
| 16707 | + 6000, 2895, 5790, 2195, 4390, 2019, 4038, 8076, 6839, 4289, | ||
| 16708 | + 1069, 2138, 4276, 1223, 2446, 4892, 919, 1838, 3676, 7352, | ||
| 16709 | + 7391, 7185, 7565, 7861, 6341, 5157, 3557, 7114, 4667, 473, | ||
| 16710 | + 946, 1892, 3784, 7568, 7823, 6321, 5325, 3125, 6250, 5499, | ||
| 16711 | + 3929, 7858, 6347, 5177, 3549, 7098, 4827, 25, 50, 100, 200, | ||
| 16712 | + 400, 800, 1600, 3200, 6400, 6063, 2801, 5602, 3691, 7382, | ||
| 16713 | + 7171, 7593, 7933, 6229, 5381, 4005, 8010, 6971, 5081, 541, | ||
| 16714 | + 1082, 2164, 4328, 1151, 2302, 4604, 1623, 3246, 6492, 5911, | ||
| 16715 | + 2945, 5890, 2987, 5974, 2819, 5638, 2467, 4934, 803, 1606, | ||
| 16716 | + 3212, 6424, 6047, 2705, 5410, 4075, 8150, 6659, 4521, 1789, | ||
| 16717 | + 3578, 7156, 4679, 289, 578, 1156, 2312, 4624, 399, 798, 1596, | ||
| 16718 | + 3192, 6384, 5199, 3377, 6754, 4459, 1913, 3826, 7652, 7783, | ||
| 16719 | + 6497, 5997, 2933, 5866, 2171, 4342, 1091, 2182, 4364, 1975, | ||
| 16720 | + 3950, 7900, 6167, 5505, 3757, 7514, 7963, 7065, 4765, 149, | ||
| 16721 | + 298, 596, 1192, 2384, 4768, 239, 478, 956, 1912, 3824, 7648, | ||
| 16722 | + 7791, 6513, 5965, 2869, 5738, 2427, 4854, 67, 134, 268, 536, | ||
| 16723 | + 1072, 2144, 4288, 1071, 2142, 4284, 1239, 2478, 4956, 791, | ||
| 16724 | + 1582, 3164, 6328, 5343, 3089, 6178, 5611, 3705, 7410, 7243, | ||
| 16725 | + 7481, 8157, 6677, 4485, 1701, 3402, 6804, 4231, 1185, 2370, | ||
| 16726 | + 4740, 167, 334, 668, 1336, 2672, 5344, 3183, 6366, 5139, 3465, | ||
| 16727 | + 6930, 5003, 697, 1394, 2788, 5576, 3647, 7294, 7507, 7945, | ||
| 16728 | + 7101, 4821, 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560, | ||
| 16729 | + 5120, 3503, 7006, 4883, 905, 1810, 3620, 7240, 7487, 8145, | ||
| 16730 | + 6669, 4533, 1733, 3466, 6932, 4999, 673, 1346, 2692, 5384, | ||
| 16731 | + 4031, 8062, 6995, 4873, 957, 1914, 3828, 7656, 7807, 6481, | ||
| 16732 | + 5901, 2997, 5994, 2939, 5878, 2115, 4230, 1187, 2374, 4748, | ||
| 16733 | + 183, 366, 732, 1464, 2928, 5856, 2159, 4318, 1043, 2086, 4172, | ||
| 16734 | + 1335, 2670, 5340, 3095, 6190, 5619, 3657, 7314, 7307, 7353, | ||
| 16735 | + 7389, 7189, 7557, 7845, 6373, 5221, 3429, 6858, 4155, 1497, | ||
| 16736 | + 2994, 5988, 2919, 5838, 2099, 4198, 1379, 2758, 5516, 3767, | ||
| 16737 | + 7534, 8051, 6985, 4925, 981, 1962, 3924, 7848, 6399, 5201, | ||
| 16738 | + 3341, 6682, 4507, 1689, 3378, 6756, 4455, 1889, 3778, 7556, | ||
| 16739 | + 7847, 6369, 5229, 3445, 6890, 4219, 1369, 2738, 5476, 3943, | ||
| 16740 | + 7886, 6195, 5577, 3645, 7290, 7515, 7961, 7069, 4757, 133, | ||
| 16741 | + 266, 532, 1064, 2128, 4256, 1263, 2526, 5052, 727, 1454, 2908, | ||
| 16742 | + 5816, 2271, 4542, 1747, 3494, 6988, 4919, 961, 1922, 3844, | ||
| 16743 | + 7688, 6591, 5841, 2061, 4122, 1435, 2870, 5740, 2423, 4846, | ||
| 16744 | + 115, 230, 460, 920, 1840, 3680, 7360, 7215, 7665, 7757, 6453, | ||
| 16745 | + 6085, 2597, 5194, 3387, 6774, 4419, 1833, 3666, 7332, 7399, | ||
| 16746 | + 7265, 7533, 8053, 6981, 4901, 997, 1994, 3988, 7976, 7167, | ||
| 16747 | + 4689, 269, 538, 1076, 2152, 4304, 1039, 2078, 4156, 1495, | ||
| 16748 | + 2990, 5980, 2839, 5678, 2547, 5094, 611, 1222, 2444, 4888, | ||
| 16749 | + 927, 1854, 3708, 7416, 7263, 7441, 8077, 6837, 4293, 1061, | ||
| 16750 | + 2122, 4244, 1159, 2318, 4636, 407, 814, 1628, 3256, 6512, | ||
| 16751 | + 5967, 2865, 5730, 2411, 4822, 3, 6, 12, 24, 48, 96, 192, 384, | ||
| 16752 | + 768, 1536, 3072, 6144, 5551, 3825, 7650, 7787, 6521, 5981, | ||
| 16753 | + 2837, 5674, 2555, 5110, 579, 1158, 2316, 4632, 415, 830, 1660, | ||
| 16754 | + 3320, 6640, 5711, 2353, 4706, 363, 726, 1452, 2904, 5808, | ||
| 16755 | + 2255, 4510, 1683, 3366, 6732, 4407, 1985, 3970, 7940, 7079, | ||
| 16756 | + 4833, 109, 218, 436, 872, 1744, 3488, 6976, 4911, 1009, 2018, | ||
| 16757 | + 4036, 8072, 6847, 4305, 1037, 2074, 4148, 1479, 2958, 5916, | ||
| 16758 | + 2967, 5934, 3059, 6118, 2659, 5318, 3107, 6214, 5411, 4073, | ||
| 16759 | + 8146, 6667, 4537, 1757, 3514, 7028, 4935, 801, 1602, 3204, | ||
| 16760 | + 6408, 6079, 2769, 5538, 3819, 7638, 7683, 6569, 5885, 2133, | ||
| 16761 | + 4266, 1275, 2550, 5100, 631, 1262, 2524, 5048, 735, 1470, | ||
| 16762 | + 2940, 5880, 2143, 4286, 1235, 2470, 4940, 823, 1646, 3292, | ||
| 16763 | + 6584, 5855, 2065, 4130, 1515, 3030, 6060, 2807, 5614, 3699, | ||
| 16764 | + 7398, 7267, 7529, 8061, 6997, 4869, 933, 1866, 3732, 7464, | ||
| 16765 | + 8191, 6737, 4365, 1973, 3946, 7892, 6151, 5537, 3821, 7642, | ||
| 16766 | + 7707, 6553, 5789, 2197, 4394, 2043, 4086, 8172, 6775, 4417, | ||
| 16767 | + 1837, 3674, 7348, 7367, 7201, 7661, 7797, 6469, 5925, 3045, | ||
| 16768 | + 6090, 2619, 5238, 3395, 6790, 4259, 1257, 2514, 5028, 743, | ||
| 16769 | + 1486, 2972, 5944, 3039, 6078, 2771, 5542, 3811, 7622, 7715, | ||
| 16770 | + 6633, 5757, 2389, 4778, 251, 502, 1004, 2008, 4016, 8032, | ||
| 16771 | + 7023, 4977, 845, 1690, 3380, 6760, 4479, 1873, 3746, 7492, | ||
| 16772 | + 7975, 7137, 4717, 373, 746, 1492, 2984, 5968, 2831, 5662, | ||
| 16773 | + 2451, 4902, 995, 1990, 3980, 7960, 7071, 4753, 141, 282, 564, | ||
| 16774 | + 1128, 2256, 4512, 1775, 3550, 7100, 4823, 0 | ||
| 16775 | +}; | ||
| 16776 | + | ||
| 16777 | +static int err_loc_ply[100][100]; | ||
| 16778 | + | ||
| 16779 | +static int | ||
| 16780 | +fix_section(unsigned long offset, void *data, int *syndromes_in) | ||
| 16781 | +{ | ||
| 16782 | + int i, j, elp_sum; | ||
| 16783 | + int syndromes[9]; | ||
| 16784 | + int Matrix_a[11]; | ||
| 16785 | + int Matrix_b[11]; | ||
| 16786 | + int Matrix_c[12]; | ||
| 16787 | + int Element[7]; | ||
| 16788 | + int alpha; | ||
| 16789 | + int temp_index; | ||
| 16790 | + int data_location, rev_location; | ||
| 16791 | + int result_byte, result_bit; | ||
| 16792 | + int err_location[20]; | ||
| 16793 | + int err_count; | ||
| 16794 | + int d_flg; | ||
| 16795 | + int block_length, data_length; | ||
| 16796 | + | ||
| 16797 | + /* correct 4 bits in 512 bytes */ | ||
| 16798 | + data_length = 4096; | ||
| 16799 | + block_length = 8191; | ||
| 16800 | + | ||
| 16801 | + /* | ||
| 16802 | + If there are no errors, just return. | ||
| 16803 | + */ | ||
| 16804 | + | ||
| 16805 | + j = 0; | ||
| 16806 | + | ||
| 16807 | + for (i = 0; i < 8; ++i) { | ||
| 16808 | + if (0 != syndromes_in[i]) { | ||
| 16809 | + j = 1; | ||
| 16810 | + break; | ||
| 16811 | + } | ||
| 16812 | + } | ||
| 16813 | + | ||
| 16814 | + if (0 == j) | ||
| 16815 | + return 0; | ||
| 16816 | + | ||
| 16817 | + /* | ||
| 16818 | + Decode. | ||
| 16819 | + */ | ||
| 16820 | + | ||
| 16821 | + memcpy((void *)syndromes, (void *)syndromes_in, sizeof(int) * 9); | ||
| 16822 | + d_flg = 0; | ||
| 16823 | + | ||
| 16824 | + // initialise table entries | ||
| 16825 | + for (i = 0; i < 8; i++) | ||
| 16826 | + syndromes[i] = i_to_a[syndromes[i]]; | ||
| 16827 | + | ||
| 16828 | + Matrix_c[0] = 0; | ||
| 16829 | + Matrix_c[1] = syndromes[0]; | ||
| 16830 | + err_loc_ply[0][0] = 1; | ||
| 16831 | + err_loc_ply[1][0] = 1; | ||
| 16832 | + for (i = 1; i < 8; i++) { | ||
| 16833 | + err_loc_ply[0][i] = 0; | ||
| 16834 | + err_loc_ply[1][i] = 0; | ||
| 16835 | + } | ||
| 16836 | + Matrix_a[0] = 0; | ||
| 16837 | + Matrix_a[1] = 0; | ||
| 16838 | + Matrix_b[0] = -1; | ||
| 16839 | + Matrix_b[1] = 0; | ||
| 16840 | + alpha = -1; | ||
| 16841 | + | ||
| 16842 | + do { | ||
| 16843 | + // skip even loops | ||
| 16844 | + alpha += 2; | ||
| 16845 | + if (Matrix_c[alpha] != -1) { | ||
| 16846 | + temp_index = alpha - 2; | ||
| 16847 | + if (temp_index<0) temp_index=0; | ||
| 16848 | + while ((Matrix_c[temp_index] == -1) && (temp_index > 0)) | ||
| 16849 | + temp_index=temp_index-2; | ||
| 16850 | + if (temp_index < 0) temp_index = 0; | ||
| 16851 | + | ||
| 16852 | + if (temp_index > 0) { | ||
| 16853 | + j = temp_index; | ||
| 16854 | + do { | ||
| 16855 | + j=j-2; | ||
| 16856 | + if (j < 0) j = 0; | ||
| 16857 | + if ((Matrix_c[j] != -1) && (Matrix_b[temp_index] < Matrix_b[j])) | ||
| 16858 | + temp_index = j; | ||
| 16859 | + } while (j > 0); | ||
| 16860 | + } | ||
| 16861 | + | ||
| 16862 | + if (Matrix_a[alpha] > Matrix_a[temp_index] + alpha - temp_index) | ||
| 16863 | + Matrix_a[alpha + 2] = Matrix_a[alpha]; | ||
| 16864 | + else | ||
| 16865 | + Matrix_a[alpha + 2] = Matrix_a[temp_index] + alpha - temp_index; | ||
| 16866 | + | ||
| 16867 | + for (i = 0; i < 8; ++i) { | ||
| 16868 | + err_loc_ply[alpha + 2][i] = 0; | ||
| 16869 | + } | ||
| 16870 | + | ||
| 16871 | + for (i = 0; i <= Matrix_a[temp_index]; i++) { | ||
| 16872 | + if (err_loc_ply[temp_index][i] != 0) | ||
| 16873 | + err_loc_ply[alpha + 2][i + alpha - temp_index] = | ||
| 16874 | + a_to_i[(Matrix_c[alpha] + block_length - | ||
| 16875 | + Matrix_c[temp_index] + | ||
| 16876 | + i_to_a[err_loc_ply[temp_index][i]]) % | ||
| 16877 | + block_length]; | ||
| 16878 | + } | ||
| 16879 | + | ||
| 16880 | + for (i = 0; i <= Matrix_a[alpha]; i++) { | ||
| 16881 | + err_loc_ply[alpha + 2][i] ^= err_loc_ply[alpha][i]; | ||
| 16882 | + } | ||
| 16883 | + } else { | ||
| 16884 | + Matrix_a[alpha + 2] = Matrix_a[alpha]; | ||
| 16885 | + | ||
| 16886 | + for (i = 0; i <= Matrix_a[alpha]; i++) { | ||
| 16887 | + err_loc_ply[alpha + 2][i] = err_loc_ply[alpha][i]; | ||
| 16888 | + } | ||
| 16889 | + } | ||
| 16890 | + | ||
| 16891 | + Matrix_b[alpha + 2] = alpha+1 - Matrix_a[alpha + 2]; | ||
| 16892 | + | ||
| 16893 | + // Form (alpha+2)th discrepancy. | ||
| 16894 | + if (alpha < 8) { | ||
| 16895 | + if (syndromes[alpha + 1] != -1) { | ||
| 16896 | + Matrix_c[alpha + 2] = a_to_i[syndromes[alpha + 1]]; | ||
| 16897 | + } else { | ||
| 16898 | + Matrix_c[alpha + 2] = 0; | ||
| 16899 | + } | ||
| 16900 | + | ||
| 16901 | + for (i = 1; i <= Matrix_a[alpha + 2]; i++) { | ||
| 16902 | + if ((syndromes[alpha + 1 - i] != -1) && (err_loc_ply[alpha + 2][i] != 0)) | ||
| 16903 | + Matrix_c[alpha + 2] ^= a_to_i[(syndromes[alpha + 1 - i] + i_to_a[err_loc_ply[alpha + 2][i]]) % block_length]; | ||
| 16904 | + } | ||
| 16905 | + Matrix_c[alpha + 2] = i_to_a[Matrix_c[alpha + 2]]; | ||
| 16906 | + } | ||
| 16907 | + } while ((alpha < 7) && (Matrix_a[alpha + 2] <= 4)); | ||
| 16908 | + | ||
| 16909 | + alpha=alpha+2; | ||
| 16910 | + Matrix_a[7] = Matrix_a[alpha]; | ||
| 16911 | + if (Matrix_a[7] <= 4) { | ||
| 16912 | + | ||
| 16913 | + for (i = 1; i <= Matrix_a[7]; i++) { | ||
| 16914 | + Element[i] = i_to_a[err_loc_ply[alpha][i]]; | ||
| 16915 | + } | ||
| 16916 | + | ||
| 16917 | + err_count = 0 ; | ||
| 16918 | + for (i = 1; i <= block_length; i++) { | ||
| 16919 | + elp_sum = 1 ; | ||
| 16920 | + for (j = 1; j <= Matrix_a[7]; j++) | ||
| 16921 | + if (Element[j] != -1) { | ||
| 16922 | + Element[j] = (Element[j] + j) % block_length ; | ||
| 16923 | + elp_sum ^= a_to_i[Element[j]] ; | ||
| 16924 | + } | ||
| 16925 | + | ||
| 16926 | + if (!elp_sum) { | ||
| 16927 | + err_location[err_count] = block_length - i ; | ||
| 16928 | + err_count++ ; | ||
| 16929 | + } | ||
| 16930 | + } | ||
| 16931 | + | ||
| 16932 | + if (err_count == Matrix_a[7]) | ||
| 16933 | + d_flg = 1 ; | ||
| 16934 | + } | ||
| 16935 | + | ||
| 16936 | + if (d_flg == 0) { | ||
| 16937 | + return -1; | ||
| 16938 | + } | ||
| 16939 | + else { | ||
| 16940 | + for (i=0; i<err_count; i++) | ||
| 16941 | + { | ||
| 16942 | + if (err_location[i] >= 52) | ||
| 16943 | + data_location = err_location[i] - 52; | ||
| 16944 | + else | ||
| 16945 | + data_location = err_location[i] + data_length; | ||
| 16946 | + | ||
| 16947 | + if (data_location <= 4095) | ||
| 16948 | + { | ||
| 16949 | + rev_location = 4095 - data_location; | ||
| 16950 | + result_bit = rev_location%8; | ||
| 16951 | + result_byte = (rev_location - result_bit)/8; | ||
| 16952 | + | ||
| 16953 | + printk(KERN_NOTICE | ||
| 16954 | + "Corrected ECC Error: " | ||
| 16955 | + "offset 0x%lx byte 0x%x bit %d\n", | ||
| 16956 | + offset, result_byte, result_bit); | ||
| 16957 | + | ||
| 16958 | + result_byte = | ||
| 16959 | + (result_byte & 0xfffffffc) | | ||
| 16960 | + ((result_byte & 0x3) ^ 0x3); | ||
| 16961 | + *((unsigned char *)(data + | ||
| 16962 | + result_byte)) ^= | ||
| 16963 | + (1 << result_bit); | ||
| 16964 | + } else { | ||
| 16965 | + rev_location = 4147 - data_location; | ||
| 16966 | + result_bit = rev_location%8; | ||
| 16967 | + result_byte = (rev_location - result_bit)/8; | ||
| 16968 | + printk(KERN_ERR | ||
| 16969 | + "BCH byte = %d, bit = %d\n", | ||
| 16970 | + result_byte, result_bit); | ||
| 16971 | + } | ||
| 16972 | + } | ||
| 16973 | + | ||
| 16974 | + if (0 != err_count) | ||
| 16975 | + return 1; | ||
| 16976 | + else | ||
| 16977 | + return 0; | ||
| 16978 | + } | ||
| 16979 | +} | ||
| 16980 | + | ||
| 16981 | +/* | ||
| 16982 | + ------------------------------------------------------------------------------ | ||
| 16983 | + report_ecc_errors_ep501g1 | ||
| 16984 | +*/ | ||
| 16985 | + | ||
| 16986 | +static int | ||
| 16987 | +report_ecc_errors_ep501g1(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 16988 | + uint8_t *buffer, int page) | ||
| 16989 | +{ | ||
| 16990 | + unsigned long bch_status; | ||
| 16991 | + int rc = 0; | ||
| 16992 | + int i; | ||
| 16993 | + int is_blank = 1; | ||
| 16994 | + uint8_t *data = buffer; | ||
| 16995 | + int section; | ||
| 16996 | + int syndrome; | ||
| 16997 | + unsigned long syndromes[8][8]; | ||
| 16998 | + | ||
| 16999 | + /* If there are no errors, return. */ | ||
| 17000 | + bch_status = READL(chip->IO_ADDR_R + EP501G1_NAND_BCH_STATUS); | ||
| 17001 | + | ||
| 17002 | + if (0 == bch_status) | ||
| 17003 | + goto report_ecc_errors_ep501g1_end; | ||
| 17004 | + | ||
| 17005 | + switch (mtd->writesize) { | ||
| 17006 | + case 512: | ||
| 17007 | + bch_status &= 0x1; | ||
| 17008 | + break; | ||
| 17009 | + case 2048: | ||
| 17010 | + bch_status &= 0xf; | ||
| 17011 | + break; | ||
| 17012 | + case 4096: | ||
| 17013 | + bch_status &= 0xff; | ||
| 17014 | + break; | ||
| 17015 | + default: | ||
| 17016 | + printk(KERN_ERR "Unexpected Page Size!\n"); | ||
| 17017 | + rc = -1; | ||
| 17018 | + goto report_ecc_errors_ep501g1_end; | ||
| 17019 | + break; | ||
| 17020 | + } | ||
| 17021 | + | ||
| 17022 | + /* Ignore fully erased blocks. */ | ||
| 17023 | + if (NULL != data) { | ||
| 17024 | + for (i = 0; i < mtd->writesize; ++i) { | ||
| 17025 | + if (0xff != *data++) { | ||
| 17026 | + is_blank = 0; | ||
| 17027 | + break; | ||
| 17028 | + } | ||
| 17029 | + } | ||
| 17030 | + } | ||
| 17031 | + | ||
| 17032 | + if (0 != is_blank) | ||
| 17033 | + goto report_ecc_errors_ep501g1_end; | ||
| 17034 | + | ||
| 17035 | + /* Read the syndrome registers and split them into syndromes. */ | ||
| 17036 | + for (section = 0; section < 8; ++section) { | ||
| 17037 | + unsigned long address; | ||
| 17038 | + unsigned long value; | ||
| 17039 | + | ||
| 17040 | + address = EP501G1_NAND_SYN_R12_S0 + (section * 0x10); | ||
| 17041 | + | ||
| 17042 | + for (syndrome = 0; syndrome < 8; syndrome += 2) { | ||
| 17043 | + value = READL(chip->IO_ADDR_R + address + | ||
| 17044 | + (syndrome * 2)); | ||
| 17045 | + syndromes[section][syndrome] = | ||
| 17046 | + (value & 0x1fff); | ||
| 17047 | + syndromes[section][syndrome + 1] = | ||
| 17048 | + ((value & 0x1fff0000) >> 16); | ||
| 17049 | + } | ||
| 17050 | + } | ||
| 17051 | + | ||
| 17052 | + /* Debug output (BCH status register and syndromes). */ | ||
| 17053 | +#if 0 | ||
| 17054 | + printk("BCH Status Register: 0x%02lx\n", bch_status); | ||
| 17055 | + | ||
| 17056 | + for (section = 0; section < 8; ++section) { | ||
| 17057 | + printk("Syndromes, Section %d: ", section); | ||
| 17058 | + | ||
| 17059 | + for (syndrome = 0; syndrome < 8; ++syndrome) { | ||
| 17060 | + printk("0x%04lx ", syndromes[section][syndrome]); | ||
| 17061 | + } | ||
| 17062 | + | ||
| 17063 | + printk("\n"); | ||
| 17064 | + } | ||
| 17065 | +#endif | ||
| 17066 | + | ||
| 17067 | + for (i = 0; i < 4; ++i) { | ||
| 17068 | + if ((1 << i) == (bch_status & (1 << i))) { | ||
| 17069 | + rc = fix_section(((page * mtd->writesize) + (512 * i)), | ||
| 17070 | + (void *)(buffer + (512 * i)), | ||
| 17071 | + (int *)&syndromes[i]); | ||
| 17072 | + | ||
| 17073 | + if (-1 == rc) | ||
| 17074 | + printk(KERN_ERR | ||
| 17075 | + "Uncorrectable ECC Error: Page %d\n", | ||
| 17076 | + page); | ||
| 17077 | + } | ||
| 17078 | + } | ||
| 17079 | + | ||
| 17080 | + report_ecc_errors_ep501g1_end: | ||
| 17081 | + | ||
| 17082 | + return rc; | ||
| 17083 | +} | ||
| 17084 | + | ||
| 17085 | +/* | ||
| 17086 | + ------------------------------------------------------------------------------ | ||
| 17087 | + report_ecc_errors_ep501g3 | ||
| 17088 | +*/ | ||
| 17089 | + | ||
| 17090 | +static int | ||
| 17091 | +report_ecc_errors_ep501g3(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17092 | + uint8_t *buffer, int page) | ||
| 17093 | +{ | ||
| 17094 | + unsigned long bch_status; | ||
| 17095 | + int rc = 0; | ||
| 17096 | + unsigned long value; | ||
| 17097 | + int i; | ||
| 17098 | + int is_blank = 1; | ||
| 17099 | + uint8_t *data = buffer; | ||
| 17100 | + int section; | ||
| 17101 | + int syndrome; | ||
| 17102 | + unsigned long syndromes[8][8]; | ||
| 17103 | + int num_sections; | ||
| 17104 | + | ||
| 17105 | + num_sections = (mtd->writesize / 512); | ||
| 17106 | + | ||
| 17107 | + /* Verify 4-bit mode in the EP501G3 case. */ | ||
| 17108 | + value = (READL(chip->IO_ADDR_R + EP501_NAND_CONFIG_REG) & 0x1800) >> 11; | ||
| 17109 | + | ||
| 17110 | + if (1 != value) { | ||
| 17111 | + printk("Only 4-Bit ECC is supported.\n"); | ||
| 17112 | + rc = -1; | ||
| 17113 | + goto report_ecc_errors_ep501g3_end; | ||
| 17114 | + } | ||
| 17115 | + | ||
| 17116 | + /* If there are no errors, return. */ | ||
| 17117 | + bch_status = READL(chip->IO_ADDR_R + EP501G1_NAND_BCH_STATUS); | ||
| 17118 | + | ||
| 17119 | + if (0 == bch_status) | ||
| 17120 | + goto report_ecc_errors_ep501g3_end; | ||
| 17121 | + | ||
| 17122 | + switch (mtd->writesize) { | ||
| 17123 | + case 512: | ||
| 17124 | + bch_status &= 0x1; | ||
| 17125 | + break; | ||
| 17126 | + case 2048: | ||
| 17127 | + bch_status &= 0xf; | ||
| 17128 | + break; | ||
| 17129 | + case 4096: | ||
| 17130 | + bch_status &= 0xff; | ||
| 17131 | + break; | ||
| 17132 | + default: | ||
| 17133 | + printk(KERN_ERR "Unexpected Page Size!\n"); | ||
| 17134 | + rc = -1; | ||
| 17135 | + goto report_ecc_errors_ep501g3_end; | ||
| 17136 | + break; | ||
| 17137 | + } | ||
| 17138 | + | ||
| 17139 | + /* Ignore fully erased blocks. */ | ||
| 17140 | + if (NULL != data) { | ||
| 17141 | + for (i = 0; i < mtd->writesize; ++i) { | ||
| 17142 | + if (0xff != *data++) { | ||
| 17143 | + is_blank = 0; | ||
| 17144 | + break; | ||
| 17145 | + } | ||
| 17146 | + } | ||
| 17147 | + } | ||
| 17148 | + | ||
| 17149 | + if (0 != is_blank) | ||
| 17150 | + goto report_ecc_errors_ep501g3_end; | ||
| 17151 | + | ||
| 17152 | + /* Read the syndrome registers and split them into syndromes. */ | ||
| 17153 | + for (section = 0; section < 8; ++section) { | ||
| 17154 | + unsigned long address; | ||
| 17155 | + unsigned long value; | ||
| 17156 | + | ||
| 17157 | + address = EP501G1_NAND_SYN_R12_S0 + (section * 0x10); | ||
| 17158 | + | ||
| 17159 | + for (syndrome = 0; syndrome < ((mtd->writesize / 512) * 2); | ||
| 17160 | + syndrome += 2, address += 4) { | ||
| 17161 | + value = READL(chip->IO_ADDR_R + address); | ||
| 17162 | + syndromes[section][syndrome] = | ||
| 17163 | + (value & 0x1fff); | ||
| 17164 | + syndromes[section][syndrome + 1] = | ||
| 17165 | + ((value & 0x1fff0000) >> 16); | ||
| 17166 | + } | ||
| 17167 | + } | ||
| 17168 | + | ||
| 17169 | + /* Debug output (BCH status register and syndromes). */ | ||
| 17170 | +#if 0 | ||
| 17171 | + printk("BCH Status Register: 0x%02lx\n", bch_status); | ||
| 17172 | + | ||
| 17173 | + for (section = 0; section < 8; ++section) { | ||
| 17174 | + printk("Syndromes, Section %d: ", section); | ||
| 17175 | + | ||
| 17176 | + for (syndrome = 0; syndrome < 8; ++syndrome) { | ||
| 17177 | + printk("0x%04lx ", syndromes[section][syndrome]); | ||
| 17178 | + } | ||
| 17179 | + | ||
| 17180 | + printk("\n"); | ||
| 17181 | + } | ||
| 17182 | +#endif | ||
| 17183 | + | ||
| 17184 | + for (i = 0; i < 4; ++i) { | ||
| 17185 | + if ((1 << i) == (bch_status & (1 << i))) { | ||
| 17186 | + rc = fix_section(((page * mtd->writesize) + (512 * i)), | ||
| 17187 | + (void *)(buffer + (512 * i)), | ||
| 17188 | + (int *)&syndromes[i]); | ||
| 17189 | + | ||
| 17190 | + if (-1 == rc) | ||
| 17191 | + printk(KERN_ERR | ||
| 17192 | + "Uncorrectable ECC Error: Page %d\n", | ||
| 17193 | + page); | ||
| 17194 | + } | ||
| 17195 | + } | ||
| 17196 | + | ||
| 17197 | + report_ecc_errors_ep501g3_end: | ||
| 17198 | + | ||
| 17199 | + return rc; | ||
| 17200 | +} | ||
| 17201 | + | ||
| 17202 | +/* | ||
| 17203 | + ------------------------------------------------------------------------------ | ||
| 17204 | + report_ecc_errors | ||
| 17205 | +*/ | ||
| 17206 | + | ||
| 17207 | +static int | ||
| 17208 | +report_ecc_errors(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17209 | + uint8_t *buffer, int page) | ||
| 17210 | +{ | ||
| 17211 | + int rc = 0; | ||
| 17212 | + | ||
| 17213 | + switch (lsi_nand_type) { | ||
| 17214 | + case LSI_NAND_EP501: | ||
| 17215 | + rc = report_ecc_errors_ep501(mtd, chip, buffer, page); | ||
| 17216 | + break; | ||
| 17217 | + case LSI_NAND_EP501G1: | ||
| 17218 | + rc = report_ecc_errors_ep501g1(mtd, chip, buffer, page); | ||
| 17219 | + break; | ||
| 17220 | + case LSI_NAND_EP501G3: | ||
| 17221 | + rc = report_ecc_errors_ep501g3(mtd, chip, buffer, page); | ||
| 17222 | + break; | ||
| 17223 | + default: | ||
| 17224 | + rc = -1; | ||
| 17225 | + break; | ||
| 17226 | + } | ||
| 17227 | + | ||
| 17228 | + return rc; | ||
| 17229 | +} | ||
| 17230 | + | ||
| 17231 | + | ||
| 17232 | +/** | ||
| 17233 | + * nand_read_page_hwecc - hardware ecc based page read function | ||
| 17234 | + * @mtd: mtd info structure | ||
| 17235 | + * @chip: nand chip info structure | ||
| 17236 | + * @buf: buffer to store read data | ||
| 17237 | + * | ||
| 17238 | + * Not for syndrome calculating ecc controllers which need a special oob layout | ||
| 17239 | + */ | ||
| 17240 | + | ||
| 17241 | +static int | ||
| 17242 | +lsi_nand_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17243 | + uint8_t *buf, int page) | ||
| 17244 | +{ | ||
| 17245 | + int rc; | ||
| 17246 | + /*int page = 0;*/ | ||
| 17247 | + | ||
| 17248 | + /* Read the current page number and save it. */ | ||
| 17249 | + /*page = READL(chip->IO_ADDR_R + NAND_INDEX_REG) >> 12;*/ | ||
| 17250 | + | ||
| 17251 | + /* read the page */ | ||
| 17252 | + chip->read_buf(mtd, buf, mtd->writesize); | ||
| 17253 | + | ||
| 17254 | + /* read oob data */ | ||
| 17255 | + chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); | ||
| 17256 | + | ||
| 17257 | + /* start ECC calculations */ | ||
| 17258 | + chip->ecc.calculate(mtd, NULL, NULL); | ||
| 17259 | + | ||
| 17260 | + /* Read the ECC Status and see if there were any errors */ | ||
| 17261 | + rc = report_ecc_errors(mtd, chip, buf, page); | ||
| 17262 | + | ||
| 17263 | + /* cmd to controller to turn off CE */ | ||
| 17264 | + chip->cmd_ctrl(mtd, nand_cmd_ce_off, 0); | ||
| 17265 | + return rc; | ||
| 17266 | +} | ||
| 17267 | + | ||
| 17268 | +/** | ||
| 17269 | + * lsi_nand_write_page_hwecc - hardware ecc based page write function | ||
| 17270 | + * @mtd: mtd info structure | ||
| 17271 | + * @chip: nand chip info structure | ||
| 17272 | + * @buf: data buffer | ||
| 17273 | + */ | ||
| 17274 | +static void | ||
| 17275 | +lsi_nand_write_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17276 | + const uint8_t *buf) | ||
| 17277 | +{ | ||
| 17278 | + /* write the page data */ | ||
| 17279 | + chip->write_buf(mtd, buf, mtd->writesize); | ||
| 17280 | + | ||
| 17281 | + /* | ||
| 17282 | + * Write the oob data. Last 12 bytes are used by HW ECC. | ||
| 17283 | + * Do not touch them. | ||
| 17284 | + */ | ||
| 17285 | + chip->write_buf(mtd, chip->oob_poi, mtd->oobsize - chip->ecc.bytes); | ||
| 17286 | + return; | ||
| 17287 | +} | ||
| 17288 | + | ||
| 17289 | +/** | ||
| 17290 | + * lsi_nand_write_page - [REPLACEABLE] write one page | ||
| 17291 | + * @mtd: MTD device structure | ||
| 17292 | + * @chip: NAND chip descriptor | ||
| 17293 | + * @buf: the data to write | ||
| 17294 | + * @page: page number to write | ||
| 17295 | + * @cached: cached programming | ||
| 17296 | + * @raw: use _raw version of write_page | ||
| 17297 | + */ | ||
| 17298 | + | ||
| 17299 | +static int | ||
| 17300 | +lsi_nand_write_page(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17301 | + const uint8_t *buf, int page, int cached, int raw) | ||
| 17302 | +{ | ||
| 17303 | + int status; | ||
| 17304 | + | ||
| 17305 | + chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page); | ||
| 17306 | + | ||
| 17307 | + if (unlikely(raw)) | ||
| 17308 | + chip->ecc.write_page_raw(mtd, chip, buf); | ||
| 17309 | + else | ||
| 17310 | + chip->ecc.write_page(mtd, chip, buf); | ||
| 17311 | + | ||
| 17312 | + /* calculate ECC */ | ||
| 17313 | + status = chip->ecc.calculate(mtd, NULL, NULL); | ||
| 17314 | + | ||
| 17315 | + /* cmd to controller to turn off CE */ | ||
| 17316 | + chip->cmd_ctrl(mtd, nand_cmd_ce_off, 0); | ||
| 17317 | + | ||
| 17318 | + /* | ||
| 17319 | + * See if operation failed and additional status checks are | ||
| 17320 | + * available | ||
| 17321 | + */ | ||
| 17322 | + if (status & NAND_STATUS_FAIL) { | ||
| 17323 | + printk(KERN_ERR "ERROR: Page write failed for page 0x%x\n", | ||
| 17324 | + page); | ||
| 17325 | + | ||
| 17326 | + if (chip->errstat) | ||
| 17327 | + status = chip->errstat(mtd, chip, FL_WRITING, status, | ||
| 17328 | + page); | ||
| 17329 | + | ||
| 17330 | + return -EIO; | ||
| 17331 | + } | ||
| 17332 | + | ||
| 17333 | +#ifdef CONFIG_MTD_NAND_VERIFY_WRITE | ||
| 17334 | + /* Send command to read back the data */ | ||
| 17335 | + chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); | ||
| 17336 | + | ||
| 17337 | + if (chip->verify_buf(mtd, buf, mtd->writesize)) { | ||
| 17338 | + return -EIO; | ||
| 17339 | + } | ||
| 17340 | +#endif | ||
| 17341 | + | ||
| 17342 | + return 0; | ||
| 17343 | +} | ||
| 17344 | + | ||
| 17345 | + | ||
| 17346 | +/** | ||
| 17347 | + * lsi_nand_read_oob_std - [REPLACABLE] the most common OOB data read function | ||
| 17348 | + * @mtd: mtd info structure | ||
| 17349 | + * @chip: nand chip info structure | ||
| 17350 | + * @page: page number to read | ||
| 17351 | + * @sndcmd: flag whether to issue read command or not | ||
| 17352 | + */ | ||
| 17353 | + | ||
| 17354 | +static int | ||
| 17355 | +lsi_nand_read_oob(struct mtd_info *mtd, struct nand_chip *chip, | ||
| 17356 | + int page, int sndcmd) | ||
| 17357 | +{ | ||
| 17358 | + int rc; | ||
| 17359 | + | ||
| 17360 | + /* send command to read oob */ | ||
| 17361 | + chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page); | ||
| 17362 | + | ||
| 17363 | + /* read oob data */ | ||
| 17364 | + chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); | ||
| 17365 | + | ||
| 17366 | + /* start ECC calculations */ | ||
| 17367 | + chip->ecc.calculate(mtd, NULL, NULL); | ||
| 17368 | + | ||
| 17369 | + /* Read the ECC Status and see if there were any errors */ | ||
| 17370 | + rc = report_ecc_errors(mtd, chip, NULL, page); | ||
| 17371 | + | ||
| 17372 | + /* cmd to controller to turn off CE */ | ||
| 17373 | + chip->cmd_ctrl(mtd, nand_cmd_ce_off, 0); | ||
| 17374 | + | ||
| 17375 | + return sndcmd; | ||
| 17376 | +} | ||
| 17377 | + | ||
| 17378 | +/** | ||
| 17379 | + * lsi_nand_write_oob_std - [REPLACABLE] the most common OOB data write | ||
| 17380 | + * function | ||
| 17381 | + * @mtd: mtd info structure | ||
| 17382 | + * @chip: nand chip info structure | ||
| 17383 | + * @page: page number to write | ||
| 17384 | + */ | ||
| 17385 | + | ||
| 17386 | +static int | ||
| 17387 | +lsi_nand_write_oob(struct mtd_info *mtd, struct nand_chip *chip, int page) | ||
| 17388 | +{ | ||
| 17389 | + /* start OOB write */ | ||
| 17390 | + chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page); | ||
| 17391 | + | ||
| 17392 | + /* | ||
| 17393 | + * Write the oob data. Last 12 bytes are used by HW ECC. | ||
| 17394 | + * Do not touch them. | ||
| 17395 | + */ | ||
| 17396 | + chip->write_buf(mtd, chip->oob_poi, mtd->oobsize - chip->ecc.bytes); | ||
| 17397 | + | ||
| 17398 | + /* calculate ECC */ | ||
| 17399 | + chip->ecc.calculate(mtd, NULL, NULL); | ||
| 17400 | + | ||
| 17401 | + /* cmd to controller to turn off CE */ | ||
| 17402 | + chip->cmd_ctrl(mtd, nand_cmd_ce_off, 0); | ||
| 17403 | + | ||
| 17404 | + return (chip->dev_ready(mtd) & NAND_STATUS_FAIL) ? -EIO : 0; | ||
| 17405 | +} | ||
| 17406 | + | ||
| 17407 | +/* | ||
| 17408 | + ====================================================================== | ||
| 17409 | + ====================================================================== | ||
| 17410 | + Public | ||
| 17411 | + ====================================================================== | ||
| 17412 | + ====================================================================== | ||
| 17413 | +*/ | ||
| 17414 | + | ||
| 17415 | +/* | ||
| 17416 | + ------------------------------------------------------------------------------ | ||
| 17417 | + lsi_nand_set_config | ||
| 17418 | +*/ | ||
| 17419 | + | ||
| 17420 | +int | ||
| 17421 | +lsi_nand_set_config(struct mtd_info *mtd, struct nand_chip *chip) | ||
| 17422 | +{ | ||
| 17423 | + unsigned long config = 0; | ||
| 17424 | + unsigned long mbits; | ||
| 17425 | + | ||
| 17426 | + mbits = ((chip->chipsize >> 20) * 8); | ||
| 17427 | + | ||
| 17428 | + if (LSI_NAND_EP501 == lsi_nand_type) { | ||
| 17429 | + /* The EP501 only supports 512 and 2k page sizes. */ | ||
| 17430 | + if (512 != mtd->writesize && | ||
| 17431 | + 2048 != mtd->writesize) | ||
| 17432 | + return -1; | ||
| 17433 | + | ||
| 17434 | + while (64 < mbits) { | ||
| 17435 | + ++config; /* 0b000=64Mbit, 0b001=128Mbit, etc. */ | ||
| 17436 | + mbits >>= 1; | ||
| 17437 | + } | ||
| 17438 | + | ||
| 17439 | + if (512 < mtd->writesize) | ||
| 17440 | + config |= 0x100; /* large block */ | ||
| 17441 | + | ||
| 17442 | + config |= 0x200; /* not write protected */ | ||
| 17443 | + chip->ecc.layout = &lsi_2k_1bit_ecclayout; | ||
| 17444 | + chip->ecc.size = mtd->writesize; | ||
| 17445 | + chip->ecc.bytes = chip->ecc.layout->eccbytes; | ||
| 17446 | + } else if (LSI_NAND_EP501G1 == lsi_nand_type) { | ||
| 17447 | + /* The EP501G1 only supports 512, 2k, and 4k page sizes, */ | ||
| 17448 | + if (512 != mtd->writesize && | ||
| 17449 | + 2048 != mtd->writesize && | ||
| 17450 | + 4096 != mtd->writesize) | ||
| 17451 | + return -1; | ||
| 17452 | + | ||
| 17453 | + /* and device sizes as follows. */ | ||
| 17454 | + if (512 == mtd->writesize) { | ||
| 17455 | + switch (mbits) { | ||
| 17456 | + case 64: break; | ||
| 17457 | + case 128: config |= 1; break; | ||
| 17458 | + case 256: config |= 2; break; | ||
| 17459 | + case 512: config |= 3; break; | ||
| 17460 | + case 1024: config |= 4; break; | ||
| 17461 | + case 2048: config |= 5; break; | ||
| 17462 | + case 4096: config |= 6; break; | ||
| 17463 | + case 8192: config |= 7; break; | ||
| 17464 | + default: | ||
| 17465 | + return -1; | ||
| 17466 | + break; | ||
| 17467 | + } | ||
| 17468 | + } else { | ||
| 17469 | + switch (mbits) { | ||
| 17470 | + case 512: config |= 3; break; | ||
| 17471 | + case 1024: config |= 4; break; | ||
| 17472 | + case 2048: config |= 5; break; | ||
| 17473 | + case 4096: config |= 6; break; | ||
| 17474 | + case 8192: config |= 7; break; | ||
| 17475 | + case 16384: break; | ||
| 17476 | + case 32768: config |= 1; break; | ||
| 17477 | + case 65536: config |= 2; break; | ||
| 17478 | + default: | ||
| 17479 | + return -1; | ||
| 17480 | + break; | ||
| 17481 | + } | ||
| 17482 | + } | ||
| 17483 | + | ||
| 17484 | + switch (mtd->writesize) { | ||
| 17485 | + case 512: | ||
| 17486 | + break; | ||
| 17487 | + case 2048: | ||
| 17488 | + config |= 0x1 << 8; | ||
| 17489 | + chip->ecc.layout = &lsi_2k_4bit_ecclayout; | ||
| 17490 | + break; | ||
| 17491 | + case 4096: | ||
| 17492 | + config |= 0x2 << 8; | ||
| 17493 | + chip->ecc.layout = &lsi_4k_4bit_ecclayout; | ||
| 17494 | + break; | ||
| 17495 | + default: | ||
| 17496 | + return -1; | ||
| 17497 | + break; | ||
| 17498 | + } | ||
| 17499 | + | ||
| 17500 | + config |= 1 << 10; /* not write protected */ | ||
| 17501 | + | ||
| 17502 | + config |= 1 << 11; /* 4 bit ECC */ | ||
| 17503 | + | ||
| 17504 | + if (512 < mtd->writesize) | ||
| 17505 | + config |= 1 << 12; /* 3 cycle row address */ | ||
| 17506 | + | ||
| 17507 | + chip->ecc.size = mtd->writesize; | ||
| 17508 | + | ||
| 17509 | + if (mtd->oobsize == 224) { | ||
| 17510 | + chip->ecc.bytes = 224 - chip->ecc.layout->eccbytes; | ||
| 17511 | + } else { | ||
| 17512 | + chip->ecc.bytes = chip->ecc.layout->eccbytes; | ||
| 17513 | + } | ||
| 17514 | + } else if (LSI_NAND_EP501G3 == lsi_nand_type) { | ||
| 17515 | + /* The EP501G3 only supports 2k, 4k, and 8k page sizes, */ | ||
| 17516 | + if (2048 != mtd->writesize && | ||
| 17517 | + 4096 != mtd->writesize && | ||
| 17518 | + 8192 != mtd->writesize) | ||
| 17519 | + return -1; | ||
| 17520 | + | ||
| 17521 | + /* and device sizes as follows. */ | ||
| 17522 | + switch (mbits) { | ||
| 17523 | + case 512: config |= 3; break; | ||
| 17524 | + case 1024: config |= 4; break; | ||
| 17525 | + case 2048: config |= 5; break; | ||
| 17526 | + case 4096: config |= 6; break; | ||
| 17527 | + case 8192: config |= 7; break; | ||
| 17528 | + case 16384: break; | ||
| 17529 | + case 32768: config |= 1; break; | ||
| 17530 | + case 65536: config |= 2; break; | ||
| 17531 | + default: | ||
| 17532 | + printk("Invalid Device Size: 0x%lx\n", mbits); | ||
| 17533 | + return -1; | ||
| 17534 | + break; | ||
| 17535 | + } | ||
| 17536 | + | ||
| 17537 | + switch (mtd->writesize) { | ||
| 17538 | + case 2048: | ||
| 17539 | + config |= 0x1 << 8; | ||
| 17540 | + chip->ecc.layout = &lsi_2k_4bit_ecclayout; | ||
| 17541 | + break; | ||
| 17542 | + case 4096: | ||
| 17543 | + config |= 0x2 << 8; | ||
| 17544 | + chip->ecc.layout = &lsi_4k_4bit_ecclayout; | ||
| 17545 | + break; | ||
| 17546 | + case 8192: | ||
| 17547 | + config |= 0x3 << 8; | ||
| 17548 | + chip->ecc.layout = &lsi_8k_4bit_ecclayout; | ||
| 17549 | + break; | ||
| 17550 | + default: | ||
| 17551 | + return -1; | ||
| 17552 | + break; | ||
| 17553 | + } | ||
| 17554 | + | ||
| 17555 | + config |= 1 << 10; /* not write protected */ | ||
| 17556 | + config |= 1 << 13; /* 3 cycle row address */ | ||
| 17557 | + | ||
| 17558 | + /* | ||
| 17559 | + 2K/4bit - 32 bytes (8192) | ||
| 17560 | + 2K/8bit - 64 bytes (16384) | ||
| 17561 | + 2K/12bit - 80 bytes (24576) | ||
| 17562 | + ... | ||
| 17563 | + 8K/12bit - 320 bytes (98304) | ||
| 17564 | + */ | ||
| 17565 | + | ||
| 17566 | + if (mtd->oobsize < chip->ecc.layout->eccbytes) { | ||
| 17567 | + printk(KERN_ERR | ||
| 17568 | + "ECC requires %d bytes, only %d are available.\n", | ||
| 17569 | + chip->ecc.layout->eccbytes, mtd->oobsize); | ||
| 17570 | + return -1; | ||
| 17571 | + } | ||
| 17572 | + | ||
| 17573 | + config |= 1 << 11; /* 4 bit ECC */ | ||
| 17574 | + mtd->oobavail = mtd->oobsize - chip->ecc.layout->eccbytes; | ||
| 17575 | + mtd->oobavail -= (mtd->oobavail % 4); | ||
| 17576 | + config |= (chip->ecc.layout->eccbytes / 4) << 16; | ||
| 17577 | + chip->ecc.size = mtd->writesize; | ||
| 17578 | + chip->ecc.bytes = chip->ecc.layout->eccbytes; | ||
| 17579 | + } else { | ||
| 17580 | + return -1; | ||
| 17581 | + } | ||
| 17582 | + | ||
| 17583 | + printk("%s:%d - write/erase/oob=0x%x/0x%x/0x%x config=0x%x\n", | ||
| 17584 | + __FILE__, __LINE__, | ||
| 17585 | + mtd->writesize, mtd->erasesize, mtd->oobsize, config); /* ZZZ */ | ||
| 17586 | + WRITEL(config, chip->IO_ADDR_W + EP501_NAND_CONFIG_REG); | ||
| 17587 | + | ||
| 17588 | + return 0; | ||
| 17589 | +} | ||
| 17590 | + | ||
| 17591 | +/* | ||
| 17592 | + ---------------------------------------------------------------------- | ||
| 17593 | + lsi_nand_init | ||
| 17594 | +*/ | ||
| 17595 | + | ||
| 17596 | +#define NAND_BASE 0x002000440000ULL | ||
| 17597 | +#define NAND_SIZE 0x20000 | ||
| 17598 | +#define GPREG_BASE 0x002000400000ULL | ||
| 17599 | +#define GPREG_SIZE 0x1000 | ||
| 17600 | + | ||
| 17601 | +static int __init | ||
| 17602 | +lsi_nand_init(void) | ||
| 17603 | +{ | ||
| 17604 | + unsigned long nand_base; | ||
| 17605 | + struct device_node *np = NULL; | ||
| 17606 | + int ret; | ||
| 17607 | + | ||
| 17608 | + np = of_find_node_by_type(np, "nand"); | ||
| 17609 | + | ||
| 17610 | + while (np && !of_device_is_compatible(np, "acp-nand")) | ||
| 17611 | + np = of_find_node_by_type(np, "nand"); | ||
| 17612 | + | ||
| 17613 | + if (np) { | ||
| 17614 | + const u32 *reg; | ||
| 17615 | + int reglen; | ||
| 17616 | + u64 nand_address; | ||
| 17617 | + unsigned long nand_length; | ||
| 17618 | + u64 gpreg_address; | ||
| 17619 | + unsigned long gpreg_length; | ||
| 17620 | + int *enabled; | ||
| 17621 | + | ||
| 17622 | + enabled = of_get_property(np, "enabled", NULL); | ||
| 17623 | + | ||
| 17624 | + if (0 == *enabled) { | ||
| 17625 | + printk("ACP NAND Controller Isn't Enabled.\n"); | ||
| 17626 | + return -1; | ||
| 17627 | + } | ||
| 17628 | + | ||
| 17629 | + reg = of_get_property(np, "reg", ®len); | ||
| 17630 | + | ||
| 17631 | + if (reg && (16 == reglen)) { | ||
| 17632 | + nand_address = of_translate_address(np, reg); | ||
| 17633 | + nand_length = reg[1]; | ||
| 17634 | + reg += 2; | ||
| 17635 | + gpreg_address = of_translate_address(np, reg); | ||
| 17636 | + gpreg_length = reg[1]; | ||
| 17637 | + printk("nand_address=0x%08llx nand_length=0x%lx\n" | ||
| 17638 | + "gpreg_address=0x%08llx gpreg_length=0x%lx\n", | ||
| 17639 | + nand_address, nand_length, | ||
| 17640 | + gpreg_address, gpreg_length); | ||
| 17641 | + nand_base = (unsigned long) | ||
| 17642 | + ioremap(nand_address, nand_length); | ||
| 17643 | + gpreg_base = (unsigned long) | ||
| 17644 | + ioremap(gpreg_address, gpreg_length); | ||
| 17645 | + } else { | ||
| 17646 | + return -1; | ||
| 17647 | + } | ||
| 17648 | + } else { | ||
| 17649 | + printk("ACP NAND: Using Static Addresses.\n"); | ||
| 17650 | + nand_base = ioremap(0x002000440000ULL, 0x20000); | ||
| 17651 | + gpreg_base = ioremap(0x00200040c000ULL, 0x1000); | ||
| 17652 | + } | ||
| 17653 | + | ||
| 17654 | + /* | ||
| 17655 | + Determine the version of the controller. | ||
| 17656 | + | ||
| 17657 | + As there is not version register, see if bits 5:3 of the | ||
| 17658 | + configuration register are writable. There are in the EP501 | ||
| 17659 | + case and aren't in the EP501G1 case. | ||
| 17660 | + */ | ||
| 17661 | + | ||
| 17662 | + { | ||
| 17663 | + unsigned long cr; | ||
| 17664 | + unsigned long cr_save; | ||
| 17665 | + | ||
| 17666 | + cr = cr_save = READL((void *)(nand_base + NAND_CONFIG_REG)); | ||
| 17667 | + cr = 0x2038; | ||
| 17668 | + WRITEL(cr, (void *)(nand_base + EP501_NAND_CONFIG_REG)); | ||
| 17669 | + cr = READL((void *)nand_base + EP501_NAND_CONFIG_REG); | ||
| 17670 | + WRITEL(cr_save, (void *)(nand_base + EP501_NAND_CONFIG_REG)); | ||
| 17671 | + | ||
| 17672 | + if (0 == (cr & 0x2038)) { | ||
| 17673 | + lsi_nand_type = LSI_NAND_EP501G1; | ||
| 17674 | + } else if (0x38 == (cr & 0x2038)) { | ||
| 17675 | + lsi_nand_type = LSI_NAND_EP501; | ||
| 17676 | + } else if (0x2000 == (cr & 0x2038)) { | ||
| 17677 | + lsi_nand_type = LSI_NAND_EP501G3; | ||
| 17678 | + } else { | ||
| 17679 | + lsi_nand_type = LSI_NAND_NONE; | ||
| 17680 | + } | ||
| 17681 | + } | ||
| 17682 | + | ||
| 17683 | + switch (lsi_nand_type) { | ||
| 17684 | + case LSI_NAND_EP501: | ||
| 17685 | + printk("EP501 NAND Controller.\n"); | ||
| 17686 | + nand_cmd_ce_off = NAND_CMD_CE_OFF_501; | ||
| 17687 | + break; | ||
| 17688 | + case LSI_NAND_EP501G1: | ||
| 17689 | + printk("EP501G1 NAND Controller.\n"); | ||
| 17690 | + nand_cmd_ce_off = NAND_CMD_CE_OFF_501G1; | ||
| 17691 | + break; | ||
| 17692 | + case LSI_NAND_EP501G3: | ||
| 17693 | + printk("EP501G3 NAND Controller.\n"); | ||
| 17694 | + nand_cmd_ce_off = NAND_CMD_CE_OFF_501G3; | ||
| 17695 | + break; | ||
| 17696 | + default: | ||
| 17697 | + printk("Unknown NAND Controller!\n"); | ||
| 17698 | + return -1; | ||
| 17699 | + break; | ||
| 17700 | + } | ||
| 17701 | + | ||
| 17702 | + /* Initialize structures */ | ||
| 17703 | + memset(&lsi_nand_mtd, 0, sizeof(struct mtd_info)); | ||
| 17704 | + memset(&lsi_nand_chip, 0, sizeof(struct nand_chip)); | ||
| 17705 | + | ||
| 17706 | + /* Link the private data with the MTD structure */ | ||
| 17707 | + lsi_nand_mtd.priv = &lsi_nand_chip; | ||
| 17708 | + lsi_nand_mtd.owner = THIS_MODULE; | ||
| 17709 | + lsi_nand_mtd.name = "acp-nand"; | ||
| 17710 | + | ||
| 17711 | + /* init chip callbacks */ | ||
| 17712 | + lsi_nand_chip.IO_ADDR_R = (void *) nand_base; | ||
| 17713 | + lsi_nand_chip.IO_ADDR_W = (void *) nand_base; | ||
| 17714 | + lsi_nand_chip.write_buf = lsi_nand_write_buf; | ||
| 17715 | + lsi_nand_chip.read_buf = lsi_nand_read_buf; | ||
| 17716 | + lsi_nand_chip.verify_buf = lsi_nand_verify_buf; | ||
| 17717 | + lsi_nand_chip.write_page = lsi_nand_write_page; | ||
| 17718 | + lsi_nand_chip.cmd_ctrl = lsi_nand_hwcontrol; | ||
| 17719 | + lsi_nand_chip.dev_ready = lsi_nand_device_ready; | ||
| 17720 | + lsi_nand_chip.cmdfunc = lsi_nand_command; | ||
| 17721 | + lsi_nand_chip.waitfunc = lsi_nand_wait; | ||
| 17722 | + lsi_nand_chip.chip_delay = 10; | ||
| 17723 | + lsi_nand_chip.options = NAND_USE_FLASH_BBT; | ||
| 17724 | + | ||
| 17725 | + /* initialize ECC */ | ||
| 17726 | + lsi_nand_chip.ecc.mode = NAND_ECC_HW; | ||
| 17727 | + lsi_nand_chip.ecc.steps = 1; | ||
| 17728 | + lsi_nand_chip.ecc.total = 12; | ||
| 17729 | + lsi_nand_chip.ecc.hwctl = lsi_nand_ecc_hwctl; | ||
| 17730 | + lsi_nand_chip.ecc.calculate = lsi_nand_ecc_calculate; | ||
| 17731 | + lsi_nand_chip.ecc.correct = lsi_nand_ecc_correct; | ||
| 17732 | + lsi_nand_chip.ecc.read_page = lsi_nand_read_page_hwecc; | ||
| 17733 | + lsi_nand_chip.ecc.write_page = lsi_nand_write_page_hwecc; | ||
| 17734 | + lsi_nand_chip.ecc.read_page_raw = lsi_nand_read_page_hwecc; | ||
| 17735 | + lsi_nand_chip.ecc.write_page_raw = lsi_nand_write_page_hwecc; | ||
| 17736 | + lsi_nand_chip.ecc.read_oob = lsi_nand_read_oob; | ||
| 17737 | + lsi_nand_chip.ecc.write_oob = lsi_nand_write_oob; | ||
| 17738 | + | ||
| 17739 | + printk(KERN_ERR "Enabling NAND ECC...\n"); | ||
| 17740 | + /* clear any existing ECC status */ | ||
| 17741 | + WRITEL(0x0, lsi_nand_chip.IO_ADDR_W + NAND_INTR_STATUS_REG); | ||
| 17742 | + /* enable ECC */ | ||
| 17743 | + WRITEL(0x0, lsi_nand_chip.IO_ADDR_W + NAND_INTR_EN_REG); | ||
| 17744 | + | ||
| 17745 | + /* | ||
| 17746 | + ====================================================================== | ||
| 17747 | + Timing Control | ||
| 17748 | + | ||
| 17749 | + This may need to be changed, based on the devices used. Each field is | ||
| 17750 | + described below. | ||
| 17751 | + */ | ||
| 17752 | + | ||
| 17753 | + /* | ||
| 17754 | + TCR0 - NAND Timing Control Register 0 | ||
| 17755 | + */ | ||
| 17756 | + | ||
| 17757 | + { | ||
| 17758 | + nand_timing_control_register_0_t tcr0; | ||
| 17759 | + | ||
| 17760 | + /* TH [31:24] - CLE, CE & ALE hold Time */ | ||
| 17761 | + tcr0.bits.th = 0x08; | ||
| 17762 | + | ||
| 17763 | + /* TRP [23:16] - Read Pulse Width */ | ||
| 17764 | + tcr0.bits.trp = 0x0c; | ||
| 17765 | + | ||
| 17766 | + /* TWP [15:8] - Write Pulse Width */ | ||
| 17767 | + tcr0.bits.twp = 0x0c; | ||
| 17768 | + | ||
| 17769 | + /* TS [7:0] - Setup Time for CLE, CE & ALE */ | ||
| 17770 | + tcr0.bits.ts = 0x05; | ||
| 17771 | + | ||
| 17772 | + WRITEL(tcr0.raw, | ||
| 17773 | + (lsi_nand_chip.IO_ADDR_W + NAND_TIMING1_REG)); | ||
| 17774 | + } | ||
| 17775 | + | ||
| 17776 | + /* | ||
| 17777 | + TCR1 - NAND Timing Control Register 1 | ||
| 17778 | + */ | ||
| 17779 | + | ||
| 17780 | + { | ||
| 17781 | + nand_timing_control_register_1_t tcr1; | ||
| 17782 | + | ||
| 17783 | + /* TWB [31:24] - WE Rising Edge to RY/BY Falling Edge */ | ||
| 17784 | + tcr1.bits.twb = 0x1e; | ||
| 17785 | + | ||
| 17786 | + /* TRR [23:16] - RY/BY Rising Edge To Read Falling Edge */ | ||
| 17787 | + tcr1.bits.trr = 0x07; | ||
| 17788 | + | ||
| 17789 | + /* TRH [15:8] - Read Pulse High Time */ | ||
| 17790 | + tcr1.bits.trh = 0x03; | ||
| 17791 | + | ||
| 17792 | + /* TWH [7:0] - Write Pulse High Time */ | ||
| 17793 | + tcr1.bits.twh = 0x03; | ||
| 17794 | + | ||
| 17795 | + WRITEL(tcr1.raw, | ||
| 17796 | + (lsi_nand_chip.IO_ADDR_W + NAND_TIMING2_REG)); | ||
| 17797 | + } | ||
| 17798 | + | ||
| 17799 | + /* | ||
| 17800 | + TCR2 - NAND Timing Control Register 2 (EP501G3 Only) | ||
| 17801 | + */ | ||
| 17802 | + | ||
| 17803 | + { | ||
| 17804 | + nand_timing_control_register_2_t tcr2; | ||
| 17805 | + | ||
| 17806 | + tcr2.bits.tccs = 0x10; | ||
| 17807 | + tcr2.bits.twhr = 0x10; | ||
| 17808 | + tcr2.bits.trhw = 0x14; | ||
| 17809 | + WRITEL(tcr2.raw, | ||
| 17810 | + (lsi_nand_chip.IO_ADDR_W + EP501G3_NAND_TIMING2_REG)); | ||
| 17811 | + } | ||
| 17812 | + | ||
| 17813 | + printk(KERN_ERR "Searching for NAND flash...\n"); | ||
| 17814 | + /* Scan to find existence of the device */ | ||
| 17815 | + if (nand_scan(&lsi_nand_mtd, 1)) { | ||
| 17816 | + printk(KERN_ERR "nand_scan failure...\n"); | ||
| 17817 | + return -ENXIO; | ||
| 17818 | + } | ||
| 17819 | + | ||
| 17820 | + ret = parse_mtd_partitions(&lsi_nand_mtd, probes, | ||
| 17821 | + &partition_info, 0); | ||
| 17822 | + if (ret > 0) | ||
| 17823 | + mtd_device_register(&lsi_nand_mtd, partition_info, ret); | ||
| 17824 | + else | ||
| 17825 | + mtd_device_register(&lsi_nand_mtd, NULL, 0); | ||
| 17826 | + | ||
| 17827 | + /* Return happy */ | ||
| 17828 | + return 0; | ||
| 17829 | +} | ||
| 17830 | + | ||
| 17831 | +module_init(lsi_nand_init); | ||
| 17832 | + | ||
| 17833 | +/* | ||
| 17834 | + ---------------------------------------------------------------------- | ||
| 17835 | + lsi_nand_exit | ||
| 17836 | +*/ | ||
| 17837 | + | ||
| 17838 | +static void __exit | ||
| 17839 | +lsi_nand_exit(void) | ||
| 17840 | +{ | ||
| 17841 | + /* Release resources, unregister device */ | ||
| 17842 | + nand_release(&lsi_nand_mtd); | ||
| 17843 | +} | ||
| 17844 | + | ||
| 17845 | +module_exit(lsi_nand_exit); | ||
| 17846 | + | ||
| 17847 | +MODULE_LICENSE("GPL"); | ||
| 17848 | +MODULE_AUTHOR("Jay Jayatheerthan <jay.jayatheerthan@lsi.com>"); | ||
| 17849 | +MODULE_DESCRIPTION("MTD map driver for LSI's ACP board"); | ||
| 17850 | diff --git a/drivers/lsi/acp/ncr.c b/drivers/lsi/acp/ncr.c | ||
| 17851 | new file mode 100644 | ||
| 17852 | index 0000000..595e3f4 | ||
| 17853 | --- /dev/null | ||
| 17854 | +++ b/drivers/lsi/acp/ncr.c | ||
| 17855 | @@ -0,0 +1,280 @@ | ||
| 17856 | +/* | ||
| 17857 | + * Copyright (C) 2009 LSI Corporation | ||
| 17858 | + * | ||
| 17859 | + * See file CREDITS for list of people who contributed to this | ||
| 17860 | + * project. | ||
| 17861 | + * | ||
| 17862 | + * This program is free software; you can redistribute it and/or | ||
| 17863 | + * modify it under the terms of the GNU General Public License as | ||
| 17864 | + * published by the Free Software Foundation; either version 2 of | ||
| 17865 | + * the License, or (at your option) any later version. | ||
| 17866 | + * | ||
| 17867 | + * This program is distributed in the hope that it will be useful, | ||
| 17868 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17869 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17870 | + * GNU General Public License for more details. | ||
| 17871 | + * | ||
| 17872 | + * You should have received a copy of the GNU General Public License | ||
| 17873 | + * along with this program; if not, write to the Free Software | ||
| 17874 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | ||
| 17875 | + * MA 02111-1307 USA | ||
| 17876 | + */ | ||
| 17877 | + | ||
| 17878 | +#include <asm/io.h> | ||
| 17879 | + | ||
| 17880 | +#include "ncr.h" | ||
| 17881 | + | ||
| 17882 | +#define NCA 0xf0120000 | ||
| 17883 | + | ||
| 17884 | +typedef union { | ||
| 17885 | + unsigned long raw; | ||
| 17886 | + struct { | ||
| 17887 | + unsigned long start_done:1; | ||
| 17888 | + unsigned long unused:6; | ||
| 17889 | + unsigned long local_bit:1; | ||
| 17890 | + unsigned long status:2; | ||
| 17891 | + unsigned long byte_swap_enable:1; | ||
| 17892 | + unsigned long cfg_cmpl_int_enable:1; | ||
| 17893 | + unsigned long cmd_type:4; | ||
| 17894 | + unsigned long dbs:16; | ||
| 17895 | + } __attribute__ ((packed)) bits; | ||
| 17896 | +} __attribute__ ((packed)) command_data_register_0_t; | ||
| 17897 | + | ||
| 17898 | +typedef union { | ||
| 17899 | + unsigned long raw; | ||
| 17900 | + struct { | ||
| 17901 | + unsigned long target_address:32; | ||
| 17902 | + } __attribute__ ((packed)) bits; | ||
| 17903 | +} __attribute__ ((packed)) command_data_register_1_t; | ||
| 17904 | + | ||
| 17905 | +typedef union { | ||
| 17906 | + unsigned long raw; | ||
| 17907 | + struct { | ||
| 17908 | + unsigned long unused:16; | ||
| 17909 | + unsigned long target_node_id:8; | ||
| 17910 | + unsigned long target_id_address_upper:8; | ||
| 17911 | + } __attribute__ ((packed)) bits; | ||
| 17912 | +} __attribute__ ((packed)) command_data_register_2_t; | ||
| 17913 | + | ||
| 17914 | +/* | ||
| 17915 | + ---------------------------------------------------------------------- | ||
| 17916 | + ncr_register_read | ||
| 17917 | +*/ | ||
| 17918 | + | ||
| 17919 | +static __inline__ unsigned long | ||
| 17920 | +ncr_register_read(unsigned *address) | ||
| 17921 | +{ | ||
| 17922 | + unsigned long value; | ||
| 17923 | + | ||
| 17924 | + value = in_be32((unsigned long) address); | ||
| 17925 | + | ||
| 17926 | + return value; | ||
| 17927 | +} | ||
| 17928 | + | ||
| 17929 | +/* | ||
| 17930 | + ---------------------------------------------------------------------- | ||
| 17931 | + ncr_register_write | ||
| 17932 | +*/ | ||
| 17933 | + | ||
| 17934 | +static __inline__ void | ||
| 17935 | +ncr_register_write(const unsigned value, unsigned *address) | ||
| 17936 | +{ | ||
| 17937 | + out_be32(address, value); | ||
| 17938 | +} | ||
| 17939 | + | ||
| 17940 | +/* | ||
| 17941 | + ====================================================================== | ||
| 17942 | + ====================================================================== | ||
| 17943 | + Public Interface | ||
| 17944 | + ====================================================================== | ||
| 17945 | + ====================================================================== | ||
| 17946 | +*/ | ||
| 17947 | + | ||
| 17948 | +/* | ||
| 17949 | + ---------------------------------------------------------------------- | ||
| 17950 | + ncr_read | ||
| 17951 | +*/ | ||
| 17952 | + | ||
| 17953 | +int | ||
| 17954 | +ncr_read(unsigned long region, unsigned long address, int number, | ||
| 17955 | + void *buffer) | ||
| 17956 | +{ | ||
| 17957 | + command_data_register_0_t cdr0; | ||
| 17958 | + command_data_register_1_t cdr1; | ||
| 17959 | + command_data_register_2_t cdr2; | ||
| 17960 | + | ||
| 17961 | + /* | ||
| 17962 | + Set up the read command. | ||
| 17963 | + */ | ||
| 17964 | + | ||
| 17965 | + cdr2.raw = 0; | ||
| 17966 | + cdr2.bits.target_node_id = NCP_NODE_ID(region); | ||
| 17967 | + cdr2.bits.target_id_address_upper = NCP_TARGET_ID(region); | ||
| 17968 | + ncr_register_write(cdr2.raw, (unsigned *) (NCA + 0xf8)); | ||
| 17969 | + | ||
| 17970 | + cdr1.raw = 0; | ||
| 17971 | + cdr1.bits.target_address = (address >> 2); | ||
| 17972 | + ncr_register_write(cdr1.raw, (unsigned *) (NCA + 0xf4)); | ||
| 17973 | + | ||
| 17974 | + cdr0.raw = 0; | ||
| 17975 | + cdr0.bits.start_done = 1; | ||
| 17976 | + | ||
| 17977 | + if (0xff == cdr2.bits.target_id_address_upper) | ||
| 17978 | + cdr0.bits.local_bit = 1; | ||
| 17979 | + | ||
| 17980 | + cdr0.bits.cmd_type = 4; | ||
| 17981 | + /* TODO: Verify number... */ | ||
| 17982 | + cdr0.bits.dbs = (number - 1); | ||
| 17983 | + ncr_register_write(cdr0.raw, (unsigned *) (NCA + 0xf0)); | ||
| 17984 | + mb(); | ||
| 17985 | + | ||
| 17986 | + /* | ||
| 17987 | + Wait for completion. | ||
| 17988 | + */ | ||
| 17989 | + | ||
| 17990 | + /* TODO: Handle failure cases. */ | ||
| 17991 | +#if 0 | ||
| 17992 | + while (0x80000000 == | ||
| 17993 | + (ncr_register_read((unsigned *) (NCA + 0xf0)) & 0x80000000)) | ||
| 17994 | + ; | ||
| 17995 | +#else | ||
| 17996 | + { | ||
| 17997 | + volatile unsigned long value; | ||
| 17998 | + | ||
| 17999 | + do { | ||
| 18000 | + value = ncr_register_read((unsigned *) (NCA + 0xf0)); | ||
| 18001 | + } while (0x80000000 == (value & 0x80000000)); | ||
| 18002 | + } | ||
| 18003 | +#endif | ||
| 18004 | + | ||
| 18005 | + /* | ||
| 18006 | + Copy data words to the buffer. | ||
| 18007 | + */ | ||
| 18008 | + | ||
| 18009 | + address = (NCA + 0x1000); | ||
| 18010 | + while (4 <= number) { | ||
| 18011 | + *((unsigned long *) buffer) = | ||
| 18012 | + ncr_register_read((unsigned *) address); | ||
| 18013 | + address += 4; | ||
| 18014 | + number -= 4; | ||
| 18015 | + } | ||
| 18016 | + | ||
| 18017 | + if (0 < number) { | ||
| 18018 | + unsigned long temp = | ||
| 18019 | + ncr_register_read((unsigned *) address); | ||
| 18020 | + memcpy((void *) buffer, &temp, number); | ||
| 18021 | + } | ||
| 18022 | + | ||
| 18023 | + return 0; | ||
| 18024 | +} | ||
| 18025 | + | ||
| 18026 | +/* | ||
| 18027 | + ---------------------------------------------------------------------- | ||
| 18028 | + ncr_write | ||
| 18029 | +*/ | ||
| 18030 | + | ||
| 18031 | +int | ||
| 18032 | +ncr_write(unsigned long region, unsigned long address, int number, | ||
| 18033 | + void *buffer) | ||
| 18034 | +{ | ||
| 18035 | + command_data_register_0_t cdr0; | ||
| 18036 | + command_data_register_1_t cdr1; | ||
| 18037 | + command_data_register_2_t cdr2; | ||
| 18038 | + unsigned long data_word_base; | ||
| 18039 | + int dbs = (number - 1); | ||
| 18040 | + | ||
| 18041 | + /* | ||
| 18042 | + Set up the write. | ||
| 18043 | + */ | ||
| 18044 | + | ||
| 18045 | + cdr2.raw = 0; | ||
| 18046 | + cdr2.bits.target_node_id = NCP_NODE_ID(region); | ||
| 18047 | + cdr2.bits.target_id_address_upper = NCP_TARGET_ID(region); | ||
| 18048 | + ncr_register_write(cdr2.raw, (unsigned *) (NCA + 0xf8)); | ||
| 18049 | + | ||
| 18050 | + cdr1.raw = 0; | ||
| 18051 | + cdr1.bits.target_address = (address >> 2); | ||
| 18052 | + ncr_register_write(cdr1.raw, (unsigned *) (NCA + 0xf4)); | ||
| 18053 | + | ||
| 18054 | + /* | ||
| 18055 | + Copy from buffer to the data words. | ||
| 18056 | + */ | ||
| 18057 | + | ||
| 18058 | + data_word_base = (NCA + 0x1000); | ||
| 18059 | + | ||
| 18060 | + while (4 <= number) { | ||
| 18061 | + ncr_register_write(*((unsigned long *) buffer), | ||
| 18062 | + (unsigned *) data_word_base); | ||
| 18063 | + data_word_base += 4; | ||
| 18064 | + buffer += 4; | ||
| 18065 | + number -= 4; | ||
| 18066 | + } | ||
| 18067 | + | ||
| 18068 | + if (0 < number) { | ||
| 18069 | + unsigned long temp = 0; | ||
| 18070 | + | ||
| 18071 | + memcpy((void *) &temp, (void *) buffer, number); | ||
| 18072 | + ncr_register_write(temp, (unsigned *) data_word_base); | ||
| 18073 | + data_word_base += number; | ||
| 18074 | + buffer += number; | ||
| 18075 | + number = 0; | ||
| 18076 | + } | ||
| 18077 | + | ||
| 18078 | + cdr0.raw = 0; | ||
| 18079 | + cdr0.bits.start_done = 1; | ||
| 18080 | + | ||
| 18081 | + if (0xff == cdr2.bits.target_id_address_upper) { | ||
| 18082 | + cdr0.bits.local_bit = 1; | ||
| 18083 | + } | ||
| 18084 | + | ||
| 18085 | + cdr0.bits.cmd_type = 5; | ||
| 18086 | + /* TODO: Verify number... */ | ||
| 18087 | + cdr0.bits.dbs = dbs; | ||
| 18088 | + ncr_register_write(cdr0.raw, (unsigned *) (NCA + 0xf0)); | ||
| 18089 | + mb(); | ||
| 18090 | + | ||
| 18091 | + /* | ||
| 18092 | + Wait for completion. | ||
| 18093 | + */ | ||
| 18094 | + | ||
| 18095 | + /* TODO: Handle failure cases. */ | ||
| 18096 | + while (0x80000000 == | ||
| 18097 | + (ncr_register_read((unsigned *) (NCA + 0xf0)) & 0x80000000)) | ||
| 18098 | + ; | ||
| 18099 | + | ||
| 18100 | + return 0; | ||
| 18101 | +} | ||
| 18102 | + | ||
| 18103 | +/* | ||
| 18104 | + ---------------------------------------------------------------------- | ||
| 18105 | + ncr_init | ||
| 18106 | +*/ | ||
| 18107 | + | ||
| 18108 | +int | ||
| 18109 | +ncr_init( void ) | ||
| 18110 | +{ | ||
| 18111 | + /* We need this to be a module so that the functions can be exported | ||
| 18112 | + * as module symbols. | ||
| 18113 | + */ | ||
| 18114 | + return 0; | ||
| 18115 | +} | ||
| 18116 | + | ||
| 18117 | +module_init( ncr_init ); | ||
| 18118 | + | ||
| 18119 | +/* | ||
| 18120 | + ---------------------------------------------------------------------- | ||
| 18121 | + ncr_exit | ||
| 18122 | +*/ | ||
| 18123 | + | ||
| 18124 | +void __exit | ||
| 18125 | +ncr_exit( void ) | ||
| 18126 | +{ | ||
| 18127 | +} | ||
| 18128 | + | ||
| 18129 | +module_exit( ncr_exit ); | ||
| 18130 | + | ||
| 18131 | +MODULE_LICENSE("GPL"); | ||
| 18132 | +MODULE_DESCRIPTION("Register Ring access for LSI's ACP board"); | ||
| 18133 | + | ||
| 18134 | +EXPORT_SYMBOL(ncr_read); | ||
| 18135 | +EXPORT_SYMBOL(ncr_write); | ||
| 18136 | diff --git a/drivers/lsi/acp/ncr.h b/drivers/lsi/acp/ncr.h | ||
| 18137 | new file mode 100644 | ||
| 18138 | index 0000000..f102df5 | ||
| 18139 | --- /dev/null | ||
| 18140 | +++ b/drivers/lsi/acp/ncr.h | ||
| 18141 | @@ -0,0 +1,40 @@ | ||
| 18142 | +/* | ||
| 18143 | + * drivers/lsi/common/version.h | ||
| 18144 | + * | ||
| 18145 | + * Copyright (C) 2010 LSI | ||
| 18146 | + * | ||
| 18147 | + * This program is free software; you can redistribute it and/or modify | ||
| 18148 | + * it under the terms of the GNU General Public License as published by | ||
| 18149 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 18150 | + * (at your option) any later version. | ||
| 18151 | + * | ||
| 18152 | + * This program is distributed in the hope that it will be useful, | ||
| 18153 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 18154 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18155 | + * GNU General Public License for more details. | ||
| 18156 | + * | ||
| 18157 | + * You should have received a copy of the GNU General Public License | ||
| 18158 | + * along with this program; if not, write to the Free Software | ||
| 18159 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18160 | + */ | ||
| 18161 | + | ||
| 18162 | +#ifndef __DRIVERS_LSI_ACP_NCR_H | ||
| 18163 | +#define __DRIVERS_LSI_ACP_NCR_H | ||
| 18164 | + | ||
| 18165 | +#ifndef NCP_REGION_ID | ||
| 18166 | +#define NCP_REGION_ID(node, target) \ | ||
| 18167 | +(unsigned long) ((((node) & 0xffff) << 16) | ((target) & 0xffff)) | ||
| 18168 | +#endif | ||
| 18169 | + | ||
| 18170 | +#ifndef NCP_NODE_ID | ||
| 18171 | +#define NCP_NODE_ID(region) (((region) >> 16) & 0xffff) | ||
| 18172 | +#endif | ||
| 18173 | + | ||
| 18174 | +#ifndef NCP_TARGET_ID | ||
| 18175 | +#define NCP_TARGET_ID(region) ((region) & 0xffff) | ||
| 18176 | +#endif | ||
| 18177 | + | ||
| 18178 | +int ncr_read(unsigned long, unsigned long, int, void *); | ||
| 18179 | +int ncr_write(unsigned long, unsigned long, int, void *); | ||
| 18180 | + | ||
| 18181 | +#endif /* __DRIVERS_LSI_ACP_NCR_H */ | ||
| 18182 | diff --git a/drivers/lsi/acp/net.c b/drivers/lsi/acp/net.c | ||
| 18183 | new file mode 100644 | ||
| 18184 | index 0000000..c96a4dd | ||
| 18185 | --- /dev/null | ||
| 18186 | +++ b/drivers/lsi/acp/net.c | ||
| 18187 | @@ -0,0 +1,4534 @@ | ||
| 18188 | +/* | ||
| 18189 | + * drivers/lsi/acp/net.c | ||
| 18190 | + * | ||
| 18191 | + * Copyright (C) 2009 LSI | ||
| 18192 | + * | ||
| 18193 | + * This program is free software; you can redistribute it and/or modify | ||
| 18194 | + * it under the terms of the GNU General Public License as published by | ||
| 18195 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 18196 | + * (at your option) any later version. | ||
| 18197 | + * | ||
| 18198 | + * This program is distributed in the hope that it will be useful, | ||
| 18199 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 18200 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18201 | + * GNU General Public License for more details. | ||
| 18202 | + * | ||
| 18203 | + * You should have received a copy of the GNU General Public License | ||
| 18204 | + * along with this program; if not, write to the Free Software | ||
| 18205 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18206 | + */ | ||
| 18207 | + | ||
| 18208 | +#include <linux/module.h> | ||
| 18209 | +#include <linux/kernel.h> | ||
| 18210 | +#include <linux/version.h> | ||
| 18211 | +#include <linux/string.h> | ||
| 18212 | +#include <linux/interrupt.h> | ||
| 18213 | +#include <linux/errno.h> | ||
| 18214 | +#include <linux/in.h> | ||
| 18215 | +#include <linux/slab.h> | ||
| 18216 | +#include <linux/ioport.h> | ||
| 18217 | +#include <linux/spinlock.h> | ||
| 18218 | +#include <linux/delay.h> | ||
| 18219 | +#include <linux/bitops.h> | ||
| 18220 | +#include <linux/proc_fs.h> | ||
| 18221 | +#include <linux/netdevice.h> | ||
| 18222 | +#include <linux/etherdevice.h> | ||
| 18223 | +#include <linux/ethtool.h> | ||
| 18224 | +#include <linux/skbuff.h> | ||
| 18225 | +#include <linux/init.h> | ||
| 18226 | +#include <linux/irq.h> | ||
| 18227 | +#include <linux/of.h> | ||
| 18228 | +#include <linux/dma-mapping.h> | ||
| 18229 | + | ||
| 18230 | +#include <asm/uaccess.h> | ||
| 18231 | +#include <asm/io.h> | ||
| 18232 | +#include <asm/dma.h> | ||
| 18233 | + | ||
| 18234 | +#include "../common/version.h" | ||
| 18235 | + | ||
| 18236 | +extern int acp_mdio_read(unsigned long, unsigned long, unsigned short *); | ||
| 18237 | +extern int acp_mdio_write(unsigned long, unsigned long, unsigned short); | ||
| 18238 | + | ||
| 18239 | +/* Base Addresses of the RX, TX, and DMA Registers. */ | ||
| 18240 | +static unsigned long rx_base; | ||
| 18241 | +static unsigned long tx_base; | ||
| 18242 | +static unsigned long dma_base; | ||
| 18243 | + | ||
| 18244 | +/* | ||
| 18245 | + =============================================================================== | ||
| 18246 | + Debug counts (readable from the external host). | ||
| 18247 | + =============================================================================== | ||
| 18248 | +*/ | ||
| 18249 | + | ||
| 18250 | +#undef LSINET_COUNTS | ||
| 18251 | +#define LSINET_COUNTS | ||
| 18252 | + | ||
| 18253 | +#ifdef LSINET_COUNTS | ||
| 18254 | + | ||
| 18255 | +unsigned long lsinet_counts [ ] = { | ||
| 18256 | + 0, 0, 0, 0, /* ISR */ | ||
| 18257 | + 0, 0, 0, 0, 0, 0, /* HST */ | ||
| 18258 | + 0, 0, 0, 0, 0, 0, 0, /* RX */ | ||
| 18259 | + 0, 0, 0, 0 /* POL */ | ||
| 18260 | +}; | ||
| 18261 | + | ||
| 18262 | +EXPORT_SYMBOL( lsinet_counts ); | ||
| 18263 | + | ||
| 18264 | +#define LSINET_COUNTS_INC( index ) { ++ lsinet_counts [ ( index ) ]; } | ||
| 18265 | + | ||
| 18266 | +#else /* LSINET_DEBUG_COUNTS */ | ||
| 18267 | + | ||
| 18268 | +#define LSINET_COUNTS_INC( index ) | ||
| 18269 | + | ||
| 18270 | +#endif /* LSINET_DEBUG_COUNTS */ | ||
| 18271 | + | ||
| 18272 | +#define LSINET_COUNTS_ISR_START 0 | ||
| 18273 | +#define LSINET_COUNTS_ISR_TX 1 | ||
| 18274 | +#define LSINET_COUNTS_ISR_RX 2 | ||
| 18275 | +#define LSINET_COUNTS_ISR_DONE 3 | ||
| 18276 | +#define LSINET_COUNTS_HST_START 4 | ||
| 18277 | +#define LSINET_COUNTS_HST_RCLM 5 | ||
| 18278 | +#define LSINET_COUNTS_HST_SNDG 6 | ||
| 18279 | +#define LSINET_COUNTS_HST_SNT 7 | ||
| 18280 | +#define LSINET_COUNTS_HST_OOD 8 | ||
| 18281 | +#define LSINET_COUNTS_HST_DONE 9 | ||
| 18282 | +#define LSINET_COUNTS_RX_START 10 | ||
| 18283 | +#define LSINET_COUNTS_RX_PKT 11 | ||
| 18284 | +#define LSINET_COUNTS_RX_ERR 12 | ||
| 18285 | +#define LSINET_COUNTS_RX_GOOD 13 | ||
| 18286 | +#define LSINET_COUNTS_RX_SENT 14 | ||
| 18287 | +#define LSINET_COUNTS_RX_DRPD 15 | ||
| 18288 | +#define LSINET_COUNTS_RX_DONE 16 | ||
| 18289 | +#define LSINET_COUNTS_POL_START 17 | ||
| 18290 | +#define LSINET_COUNTS_POL_PKT 18 | ||
| 18291 | +#define LSINET_COUNTS_POL_RNBL 19 | ||
| 18292 | +#define LSINET_COUNTS_POL_DONE 20 | ||
| 18293 | + | ||
| 18294 | +/* | ||
| 18295 | + ====================================================================== | ||
| 18296 | + ====================================================================== | ||
| 18297 | + ====================================================================== | ||
| 18298 | + Profile/Trace/Debug/Warn/Error Macros | ||
| 18299 | + ====================================================================== | ||
| 18300 | + ====================================================================== | ||
| 18301 | + ====================================================================== | ||
| 18302 | +*/ | ||
| 18303 | + | ||
| 18304 | +/* -- Profile ------------------------------------------------------- */ | ||
| 18305 | + | ||
| 18306 | +/*#define __APPNIC_C_PROFILE__*/ | ||
| 18307 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 18308 | +#include <asm/arch/timers.h> | ||
| 18309 | +unsigned long time_in_rx_max_ = 0; | ||
| 18310 | +unsigned long time_in_rx_min_ = 0xffffffff; | ||
| 18311 | +unsigned long long total_rx_time_ = 0; | ||
| 18312 | +unsigned long max_rx_packets_handled_ = 0; | ||
| 18313 | +unsigned long total_rx_packets_handled_ = 0; | ||
| 18314 | +unsigned long total_rx_interrupts_ = 0; | ||
| 18315 | +unsigned long rx_packet_size_max_ = 0; | ||
| 18316 | +unsigned long rx_packet_size_min_ = 0xffffffff; | ||
| 18317 | +unsigned long total_rx_bytes_ = 0; | ||
| 18318 | +unsigned long time_in_tx_max_ = 0; | ||
| 18319 | +unsigned long time_in_tx_min_ = 0xffffffff; | ||
| 18320 | +unsigned long long total_tx_time_ = 0; | ||
| 18321 | +unsigned long total_tx_packets_ = 1; | ||
| 18322 | +unsigned long jiffies_changed_ = 0; | ||
| 18323 | +unsigned long total_polls_ = 0; | ||
| 18324 | + | ||
| 18325 | +unsigned long recv_t1_min_ = 0xffffffff; | ||
| 18326 | +unsigned long recv_t2_min_ = 0xffffffff; | ||
| 18327 | +unsigned long recv_t3_min_ = 0xffffffff; | ||
| 18328 | +unsigned long recv_t1_max_ = 0; | ||
| 18329 | +unsigned long recv_t2_max_ = 0; | ||
| 18330 | +unsigned long recv_t3_max_ = 0; | ||
| 18331 | +unsigned long long recv_t1_tot_ = 0; | ||
| 18332 | +unsigned long long recv_t2_tot_ = 0; | ||
| 18333 | +unsigned long long recv_t3_tot_ = 0; | ||
| 18334 | +unsigned long total_rx_packets_sent_up_ = 1; | ||
| 18335 | + | ||
| 18336 | + | ||
| 18337 | +#define app3xx_profile_time_calc(_beg_t_, _end_t_, _min_t_, _max_t_, _tot_t_) \ | ||
| 18338 | + do { \ | ||
| 18339 | + unsigned long _this_t_; \ | ||
| 18340 | + if( _end_t_ > _beg_t_ ) { \ | ||
| 18341 | + _this_t_ = _end_t_ - _beg_t_; \ | ||
| 18342 | + } else { \ | ||
| 18343 | + _this_t_ = _end_t_ + ( 0xffffffff - _beg_t_ ) + 1; \ | ||
| 18344 | + } \ | ||
| 18345 | + _tot_t_ += _this_t_; \ | ||
| 18346 | + if( _this_t_ > _max_t_ ) { _max_t_ = _this_t_; } \ | ||
| 18347 | + if( _this_t_ < _min_t_ ) { _min_t_ = _this_t_; } \ | ||
| 18348 | + } while (0) ; | ||
| 18349 | + | ||
| 18350 | +#define profile_time_fmt(t,d) ((1000*t)/d) | ||
| 18351 | +#define profile_avg_fmt(t,c,d) ((1000*(t/c))/d) | ||
| 18352 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 18353 | + | ||
| 18354 | +/* -- TRACE --------------------------------------------------------- */ | ||
| 18355 | + | ||
| 18356 | +#undef TRACE | ||
| 18357 | +/*#define TRACE*/ | ||
| 18358 | +#define TRACE_PRINTK | ||
| 18359 | +#ifdef TRACE | ||
| 18360 | +#ifdef TRACE_PRINTK | ||
| 18361 | +#define TRACE_BEGINNING( ) \ | ||
| 18362 | +printk( "nic:%d:%s:Beginning\n", smp_processor_id( ), __FUNCTION__ ) | ||
| 18363 | +#define TRACE_ENDING( ) \ | ||
| 18364 | +printk( "nic:%d:%s:Ending\n", smp_processor_id( ), __FUNCTION__ ) | ||
| 18365 | +#else | ||
| 18366 | +#define TRACE_BEGINNING( ) TRACER_POST( "Beginning" ); | ||
| 18367 | +#define TRACE_ENDING( ) TRACER_POST( "Ending" ); | ||
| 18368 | +#endif | ||
| 18369 | +#else | ||
| 18370 | +#define TRACE_BEGINNING( format, args... ) | ||
| 18371 | +#define TRACE_ENDING( format, args... ) | ||
| 18372 | +#endif | ||
| 18373 | + | ||
| 18374 | +/* -- DEBUG --------------------------------------------------------- */ | ||
| 18375 | + | ||
| 18376 | +#undef DEBUG | ||
| 18377 | +/*#define DEBUG*/ | ||
| 18378 | +#if defined( DEBUG ) | ||
| 18379 | +#define DEBUG_PRINT( format, args... ) do { \ | ||
| 18380 | +printk( "appnic:%d - DEBUG - ", __LINE__ ); \ | ||
| 18381 | +printk( format, ##args ); \ | ||
| 18382 | +} while( 0 ); | ||
| 18383 | +#else | ||
| 18384 | +#define DEBUG_PRINT( format, args... ) | ||
| 18385 | +#endif | ||
| 18386 | + | ||
| 18387 | +#undef PHY_DEBUG | ||
| 18388 | +/*#define PHY_DEBUG*/ | ||
| 18389 | +#if defined( PHY_DEBUG ) | ||
| 18390 | +#define PHY_DEBUG_PRINT( format, args... ) do { \ | ||
| 18391 | +printk( "net:%d - PHY_DEBUG - ", __LINE__ ); \ | ||
| 18392 | +printk( format, ##args ); \ | ||
| 18393 | +} while( 0 ); | ||
| 18394 | +#else | ||
| 18395 | +#define PHY_DEBUG_PRINT( format, args... ) | ||
| 18396 | +#endif | ||
| 18397 | + | ||
| 18398 | +/* -- WARN ----------------------------------------------------------- */ | ||
| 18399 | + | ||
| 18400 | +#undef WARN | ||
| 18401 | +#define WARN | ||
| 18402 | +#if defined( WARN ) | ||
| 18403 | +#define WARN_PRINT( format, args... ) do { \ | ||
| 18404 | +printk( "appnic:%d - WARN - ", __LINE__ ); \ | ||
| 18405 | +printk( format, ##args ); \ | ||
| 18406 | +} while( 0 ); | ||
| 18407 | +#else | ||
| 18408 | +#define WARN_PRINT( format, args... ) | ||
| 18409 | +#endif | ||
| 18410 | + | ||
| 18411 | +/* -- ERROR --------------------------------------------------------- */ | ||
| 18412 | + | ||
| 18413 | +#define ERROR_PRINT( format, args... ) do { \ | ||
| 18414 | +printk( "%s:%s:%d - ERROR - ", __FILE__, __FUNCTION__, __LINE__ ); \ | ||
| 18415 | +printk( format, ##args ); \ | ||
| 18416 | +} while( 0 ); | ||
| 18417 | + | ||
| 18418 | +/* | ||
| 18419 | + ====================================================================== | ||
| 18420 | + ====================================================================== | ||
| 18421 | + Optimizations | ||
| 18422 | + ====================================================================== | ||
| 18423 | + ====================================================================== | ||
| 18424 | +*/ | ||
| 18425 | + | ||
| 18426 | +#define DISABLE_TX_INTERRUPTS | ||
| 18427 | +/*#define PRELOAD_RX_BUFFERS*/ | ||
| 18428 | + | ||
| 18429 | +#undef DMA_CACHABLE | ||
| 18430 | +/*#define DMA_CACHABLE*/ | ||
| 18431 | + | ||
| 18432 | +/* | ||
| 18433 | + =============================================================================== | ||
| 18434 | + NAPI Support (new and newer)... | ||
| 18435 | + =============================================================================== | ||
| 18436 | +*/ | ||
| 18437 | + | ||
| 18438 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) | ||
| 18439 | + | ||
| 18440 | +#define LSINET_NAPI | ||
| 18441 | +#define LSINET_NAPI_WEIGHT 64 | ||
| 18442 | + | ||
| 18443 | +#endif | ||
| 18444 | + | ||
| 18445 | +/* | ||
| 18446 | + ====================================================================== | ||
| 18447 | + ====================================================================== | ||
| 18448 | + ====================================================================== | ||
| 18449 | + Access and Access Logging | ||
| 18450 | + ====================================================================== | ||
| 18451 | + ====================================================================== | ||
| 18452 | + ====================================================================== | ||
| 18453 | +*/ | ||
| 18454 | + | ||
| 18455 | +/*#define LOG_MAC_ACCESS*/ | ||
| 18456 | +/*#define LOG_PHY_ACCESS*/ | ||
| 18457 | + | ||
| 18458 | +/* | ||
| 18459 | + ====================================================================== | ||
| 18460 | + ====================================================================== | ||
| 18461 | + ====================================================================== | ||
| 18462 | + PHY | ||
| 18463 | + ====================================================================== | ||
| 18464 | + ====================================================================== | ||
| 18465 | + ====================================================================== | ||
| 18466 | +*/ | ||
| 18467 | + | ||
| 18468 | +#undef PHYLESS | ||
| 18469 | +/*#define PHYLESS*/ | ||
| 18470 | + | ||
| 18471 | +#ifndef PHYLESS | ||
| 18472 | + | ||
| 18473 | +/* -- control -- */ | ||
| 18474 | + | ||
| 18475 | +#define PHY_CONTROL 0x00 | ||
| 18476 | + | ||
| 18477 | +typedef union { | ||
| 18478 | + unsigned short raw; | ||
| 18479 | + | ||
| 18480 | + struct { | ||
| 18481 | +#if 1 | ||
| 18482 | + unsigned short soft_reset : 1; | ||
| 18483 | + unsigned short loop_back : 1; | ||
| 18484 | + unsigned short force100 : 1; /* speedBit0 */ | ||
| 18485 | + unsigned short autoneg_enable : 1; | ||
| 18486 | + unsigned short power_down : 1; | ||
| 18487 | + unsigned short isolate : 1; | ||
| 18488 | + unsigned short restart_autoneg : 1; | ||
| 18489 | + unsigned short full_duplex : 1; /* duplex */ | ||
| 18490 | + unsigned short collision_test : 1; | ||
| 18491 | + unsigned short unused : 7; | ||
| 18492 | +#else /* __BIG_ENDIAN */ | ||
| 18493 | + unsigned short : 7; | ||
| 18494 | + unsigned short collision_test : 1; | ||
| 18495 | + unsigned short full_duplex : 1; /* duplex */ | ||
| 18496 | + unsigned short restart_autoneg : 1; | ||
| 18497 | + unsigned short isolate : 1; | ||
| 18498 | + unsigned short power_down : 1; | ||
| 18499 | + unsigned short autoneg_enable : 1; | ||
| 18500 | + unsigned short force100 : 1; /* speedBit0 */ | ||
| 18501 | + unsigned short loop_back : 1; | ||
| 18502 | + unsigned short soft_reset : 1; | ||
| 18503 | +#endif /* __BIG_ENDIAN */ | ||
| 18504 | + } __attribute__ ( ( packed ) ) bits; | ||
| 18505 | +} __attribute__ ( ( packed ) ) phy_control_t; | ||
| 18506 | + | ||
| 18507 | +/* -- status -- */ | ||
| 18508 | + | ||
| 18509 | +#define PHY_STATUS 0x01 | ||
| 18510 | + | ||
| 18511 | +typedef union { | ||
| 18512 | + unsigned short raw; | ||
| 18513 | + | ||
| 18514 | + struct { | ||
| 18515 | +#if 1 | ||
| 18516 | + unsigned short t4_capable : 1; | ||
| 18517 | + unsigned short tx_fdx_capable : 1; | ||
| 18518 | + unsigned short tx_capable : 1; | ||
| 18519 | + unsigned short bt_fdx_capable : 1; | ||
| 18520 | + unsigned short tenbt_capable : 1; | ||
| 18521 | + unsigned short unused : 4; | ||
| 18522 | + unsigned short mf_pream_suppress : 1; | ||
| 18523 | + unsigned short autoneg_comp : 1; /* autoNegDone */ | ||
| 18524 | + unsigned short remote_fault : 1; /* remoutFault */ | ||
| 18525 | + unsigned short autoneg_capable : 1; | ||
| 18526 | + unsigned short link_status : 1; /* linkStatus */ | ||
| 18527 | + unsigned short jabber_detect : 1; | ||
| 18528 | + unsigned short extd_reg_capable : 1; | ||
| 18529 | +#else | ||
| 18530 | + unsigned short extd_reg_capable : 1; | ||
| 18531 | + unsigned short jabber_detect : 1; | ||
| 18532 | + unsigned short link_status : 1; /* linkStatus */ | ||
| 18533 | + unsigned short autoneg_capable : 1; | ||
| 18534 | + unsigned short remote_fault : 1; /* remoutFault */ | ||
| 18535 | + unsigned short autoneg_comp : 1; /* autoNegDone */ | ||
| 18536 | + unsigned short mf_pream_suppress : 1; | ||
| 18537 | + unsigned short : 4; | ||
| 18538 | + unsigned short tenbt_capable : 1; | ||
| 18539 | + unsigned short bt_fdx_capable : 1; | ||
| 18540 | + unsigned short tx_capable : 1; | ||
| 18541 | + unsigned short tx_fdx_capable : 1; | ||
| 18542 | + unsigned short t4_capable : 1; | ||
| 18543 | +#endif /* __BIG_ENDIAN */ | ||
| 18544 | + } __attribute__ ( ( packed ) ) bits; | ||
| 18545 | +} __attribute__ ( ( packed ) ) phy_status_t; | ||
| 18546 | + | ||
| 18547 | +/* -- id_high -- */ | ||
| 18548 | + | ||
| 18549 | +#define PHY_ID_HIGH 0x02 | ||
| 18550 | + | ||
| 18551 | +typedef union { | ||
| 18552 | + unsigned short raw; | ||
| 18553 | + | ||
| 18554 | + struct { | ||
| 18555 | + unsigned short id : 16; | ||
| 18556 | + } __attribute__ ( ( packed ) ) bits; | ||
| 18557 | +} __attribute__ ( ( packed ) ) phy_id_high_t; | ||
| 18558 | + | ||
| 18559 | +/* -- id_low -- */ | ||
| 18560 | + | ||
| 18561 | +#define PHY_ID_LOW 0x03 | ||
| 18562 | + | ||
| 18563 | +typedef union { | ||
| 18564 | + unsigned short raw; | ||
| 18565 | + | ||
| 18566 | + struct { | ||
| 18567 | +#if 1 | ||
| 18568 | + unsigned short id : 6; | ||
| 18569 | + unsigned short model : 6; | ||
| 18570 | + unsigned short revision : 4; | ||
| 18571 | +#else /* __BIG_ENDIAN */ | ||
| 18572 | + unsigned short revision : 4; | ||
| 18573 | + unsigned short model : 6; | ||
| 18574 | + unsigned short id : 6; | ||
| 18575 | +#endif /* __BIG_ENDIAN */ | ||
| 18576 | + } __attribute__ ( ( packed ) ) bits; | ||
| 18577 | +} __attribute__ ( ( packed ) ) phy_id_low_t; | ||
| 18578 | + | ||
| 18579 | +/* -- autoneg_advertise -- */ | ||
| 18580 | + | ||
| 18581 | +#define PHY_AUTONEG_ADVERTISE 0x04 | ||
| 18582 | + | ||
| 18583 | +/* -- link_partner_ability -- */ | ||
| 18584 | + | ||
| 18585 | +#define PHY_LINK_PARTNER_ABILITY 0x05 | ||
| 18586 | + | ||
| 18587 | +/* -- -- */ | ||
| 18588 | + | ||
| 18589 | +#define MICREL_PHY_AUXILIARY_CONTROL_STATUS 0x1f | ||
| 18590 | + | ||
| 18591 | +typedef union { | ||
| 18592 | + unsigned short raw; | ||
| 18593 | + | ||
| 18594 | + struct { | ||
| 18595 | + unsigned short : 3; | ||
| 18596 | + unsigned short energy : 1; | ||
| 18597 | + unsigned short force_link : 1; | ||
| 18598 | + unsigned short power_saving : 1; | ||
| 18599 | + unsigned short interrupt_level : 1; | ||
| 18600 | + unsigned short jabber_enable : 1; | ||
| 18601 | + unsigned short autoneg_indication : 1; | ||
| 18602 | + unsigned short enable_pause : 1; | ||
| 18603 | + unsigned short isolate : 1; | ||
| 18604 | + unsigned short op_mode_indication : 3; | ||
| 18605 | + unsigned short : 2; | ||
| 18606 | + } bits; | ||
| 18607 | +} micrel_phy_auxiliary_control_status_t; | ||
| 18608 | + | ||
| 18609 | +/* | ||
| 18610 | + Auto-negotiation Advertisement Values. | ||
| 18611 | +*/ | ||
| 18612 | + | ||
| 18613 | +#define PHY_AUTONEG_ADVERTISE_100FULL 0x101 | ||
| 18614 | +#define PHY_AUTONEG_ADVERTISE_100 0x081 | ||
| 18615 | +#define PHY_AUTONEG_ADVERTISE_10FULL 0x041 | ||
| 18616 | +#define PHY_AUTONEG_ADVERTISE_10 0x021 | ||
| 18617 | + | ||
| 18618 | +#define PHY_ADDRESS_ 0x1e | ||
| 18619 | +static int phy_address_ = PHY_ADDRESS_; | ||
| 18620 | + | ||
| 18621 | +#define UNKNOWN_PHY_ 0x0 | ||
| 18622 | +#define BCM5221_PHY_ 0x1 | ||
| 18623 | +#define MICREL_PHY_ 0x2 | ||
| 18624 | + | ||
| 18625 | +static int phy_type_ = UNKNOWN_PHY_; | ||
| 18626 | + | ||
| 18627 | +static int phy_read_( int, int, unsigned short * ); | ||
| 18628 | +static int phy_write_( int, int, unsigned short ); | ||
| 18629 | +static int phy_link_( int ); | ||
| 18630 | +static int phy_speed_( int ); | ||
| 18631 | +static int phy_duplex_( int ); | ||
| 18632 | +static int phy_scan_( void ); | ||
| 18633 | +static int phy_reset_( int ); | ||
| 18634 | +static int phy_renegotiate_( int ); | ||
| 18635 | +static int phy_enable_( int ); | ||
| 18636 | + | ||
| 18637 | +#endif /* PHYLESS */ | ||
| 18638 | + | ||
| 18639 | +/* | ||
| 18640 | + ====================================================================== | ||
| 18641 | + ====================================================================== | ||
| 18642 | + ====================================================================== | ||
| 18643 | + | ||
| 18644 | + NIC Interface | ||
| 18645 | + | ||
| 18646 | + ====================================================================== | ||
| 18647 | + ====================================================================== | ||
| 18648 | + ====================================================================== | ||
| 18649 | +*/ | ||
| 18650 | + | ||
| 18651 | +static int enable_( struct net_device * ); | ||
| 18652 | + | ||
| 18653 | +/* | ||
| 18654 | + ====================================================================== | ||
| 18655 | + ====================================================================== | ||
| 18656 | + ====================================================================== | ||
| 18657 | + | ||
| 18658 | + Device Data Structures | ||
| 18659 | + | ||
| 18660 | + ====================================================================== | ||
| 18661 | + ====================================================================== | ||
| 18662 | + ====================================================================== | ||
| 18663 | +*/ | ||
| 18664 | + | ||
| 18665 | +typedef struct { | ||
| 18666 | + | ||
| 18667 | +#ifdef CONFIG_ACP | ||
| 18668 | + | ||
| 18669 | + /* Word 0 */ | ||
| 18670 | + unsigned long : 24; | ||
| 18671 | + /* big endian to little endian */ | ||
| 18672 | + unsigned long byte_swapping_on : 1; | ||
| 18673 | + unsigned long error : 1; | ||
| 18674 | + unsigned long interrupt_on_completion : 1; | ||
| 18675 | + unsigned long end_of_packet : 1; | ||
| 18676 | + unsigned long start_of_packet : 1; | ||
| 18677 | + unsigned long write : 1; | ||
| 18678 | + /* 00=Fill|01=Block|10=Scatter */ | ||
| 18679 | + unsigned long transfer_type : 2; | ||
| 18680 | + | ||
| 18681 | + /* Word 1 */ | ||
| 18682 | + unsigned long pdu_length : 16; | ||
| 18683 | + unsigned long data_transfer_length : 16; | ||
| 18684 | + | ||
| 18685 | + /* Word 2 */ | ||
| 18686 | + unsigned long target_memory_address; | ||
| 18687 | + | ||
| 18688 | + /* Word 3 */ | ||
| 18689 | + unsigned long host_data_memory_pointer; | ||
| 18690 | + | ||
| 18691 | +#else | ||
| 18692 | + | ||
| 18693 | + /* Word 0 */ | ||
| 18694 | + /* 00=Fill|01=Block|10=Scatter */ | ||
| 18695 | + unsigned long transfer_type : 2; | ||
| 18696 | + unsigned long write : 1; | ||
| 18697 | + unsigned long start_of_packet : 1; | ||
| 18698 | + unsigned long end_of_packet : 1; | ||
| 18699 | + unsigned long interrupt_on_completion : 1; | ||
| 18700 | + unsigned long error : 1; | ||
| 18701 | + /* big endian to little endian */ | ||
| 18702 | + unsigned long byte_swapping_on : 1; | ||
| 18703 | + unsigned long : 24; | ||
| 18704 | + | ||
| 18705 | + /* Word 1 */ | ||
| 18706 | + unsigned long data_transfer_length : 16; | ||
| 18707 | + unsigned long pdu_length : 16; | ||
| 18708 | + | ||
| 18709 | + /* Word 2 */ | ||
| 18710 | + unsigned long target_memory_address; | ||
| 18711 | + | ||
| 18712 | + /* Word 3 */ | ||
| 18713 | + unsigned long host_data_memory_pointer; | ||
| 18714 | + | ||
| 18715 | +#endif | ||
| 18716 | + | ||
| 18717 | +} __attribute__ ( ( packed ) ) appnic_dma_descriptor_t; | ||
| 18718 | + | ||
| 18719 | +typedef union { | ||
| 18720 | + | ||
| 18721 | + unsigned long raw; | ||
| 18722 | + | ||
| 18723 | + struct { | ||
| 18724 | +#ifdef CONFIG_ACP | ||
| 18725 | + unsigned long : 11; | ||
| 18726 | + unsigned long generation_bit : 1; | ||
| 18727 | + unsigned long offset : 20; | ||
| 18728 | +#else | ||
| 18729 | + unsigned long offset : 20; | ||
| 18730 | + unsigned long generation_bit : 1; | ||
| 18731 | + unsigned long : 11; | ||
| 18732 | +#endif | ||
| 18733 | + } __attribute__ ( ( packed ) ) bits; | ||
| 18734 | + | ||
| 18735 | +} __attribute__ ( ( packed ) ) appnic_queue_pointer_t; | ||
| 18736 | + | ||
| 18737 | +/* | ||
| 18738 | + =============================================================================== | ||
| 18739 | + The Device Struction | ||
| 18740 | + =============================================================================== | ||
| 18741 | +*/ | ||
| 18742 | + | ||
| 18743 | +typedef struct { | ||
| 18744 | + | ||
| 18745 | + /* net_device */ | ||
| 18746 | + struct net_device * device; | ||
| 18747 | + | ||
| 18748 | + /* Addresses, Interrupt, and PHY stuff. */ | ||
| 18749 | + unsigned long rx_base; | ||
| 18750 | + unsigned long tx_base; | ||
| 18751 | + unsigned long dma_base; | ||
| 18752 | + unsigned long interrupt; | ||
| 18753 | + unsigned long mdio_clock; | ||
| 18754 | + unsigned long phy_address; | ||
| 18755 | + unsigned long ad_value; | ||
| 18756 | + unsigned char mac_addr[6]; | ||
| 18757 | + | ||
| 18758 | +#ifdef LSINET_NAPI | ||
| 18759 | + /* napi */ | ||
| 18760 | + struct napi_struct napi; | ||
| 18761 | +#endif /* LSINET_ENABLE_NAPI */ | ||
| 18762 | + | ||
| 18763 | + /* statistics */ | ||
| 18764 | + struct net_device_stats stats; | ||
| 18765 | + | ||
| 18766 | + /* | ||
| 18767 | + DMA-able memory. | ||
| 18768 | + */ | ||
| 18769 | + | ||
| 18770 | + /* */ | ||
| 18771 | + int dma_alloc_size; | ||
| 18772 | + void * dma_alloc; | ||
| 18773 | + dma_addr_t dma_alloc_dma; | ||
| 18774 | + int dma_alloc_offset; | ||
| 18775 | + | ||
| 18776 | + /* tail pointers */ | ||
| 18777 | + volatile appnic_queue_pointer_t * rx_tail; | ||
| 18778 | + dma_addr_t rx_tail_dma; | ||
| 18779 | + volatile appnic_queue_pointer_t * tx_tail; | ||
| 18780 | + dma_addr_t tx_tail_dma; | ||
| 18781 | + | ||
| 18782 | + /* descriptors */ | ||
| 18783 | + appnic_dma_descriptor_t * rx_desc; | ||
| 18784 | + dma_addr_t rx_desc_dma; | ||
| 18785 | + unsigned rx_num_desc; | ||
| 18786 | + appnic_dma_descriptor_t * tx_desc; | ||
| 18787 | + dma_addr_t tx_desc_dma; | ||
| 18788 | + unsigned tx_num_desc; | ||
| 18789 | + | ||
| 18790 | + /* buffers */ | ||
| 18791 | + unsigned rx_buf_sz; | ||
| 18792 | + unsigned rx_buf_per_desc; | ||
| 18793 | + void * rx_buf; | ||
| 18794 | + dma_addr_t rx_buf_dma; | ||
| 18795 | + unsigned tx_buf_sz; | ||
| 18796 | + unsigned tx_buf_per_desc; | ||
| 18797 | + void * tx_buf; | ||
| 18798 | + dma_addr_t tx_buf_dma; | ||
| 18799 | + | ||
| 18800 | + /* | ||
| 18801 | + The local pointers | ||
| 18802 | + */ | ||
| 18803 | + | ||
| 18804 | + appnic_queue_pointer_t rx_tail_copy; | ||
| 18805 | + appnic_queue_pointer_t rx_head; | ||
| 18806 | + | ||
| 18807 | + appnic_queue_pointer_t tx_tail_copy; | ||
| 18808 | + appnic_queue_pointer_t tx_head; | ||
| 18809 | + | ||
| 18810 | + /* | ||
| 18811 | + Polling Mode? | ||
| 18812 | + */ | ||
| 18813 | + | ||
| 18814 | + int polling; | ||
| 18815 | + | ||
| 18816 | + /* | ||
| 18817 | + Spin Lock | ||
| 18818 | + */ | ||
| 18819 | + | ||
| 18820 | + spinlock_t lock; | ||
| 18821 | + spinlock_t extra_lock; | ||
| 18822 | + | ||
| 18823 | + /* | ||
| 18824 | + * TEMP: semaphores for locking Tx/Rx operations | ||
| 18825 | + */ | ||
| 18826 | + | ||
| 18827 | + struct semaphore tx_sem; | ||
| 18828 | + struct semaphore rx_sem; | ||
| 18829 | + struct semaphore poll_sem; | ||
| 18830 | + | ||
| 18831 | +} appnic_device_t; | ||
| 18832 | + | ||
| 18833 | +#define DESCRIPTOR_GRANULARITY 64 | ||
| 18834 | +#define BUFFER_ALIGNMENT 64 | ||
| 18835 | + | ||
| 18836 | +#define ALIGN64B( address ) \ | ||
| 18837 | +( ( ( ( unsigned long ) ( address ) + ( 64UL - 1UL ) ) & ~ ( 64UL - 1UL ) ) ) | ||
| 18838 | + | ||
| 18839 | +#define ALIGN64B_OFFSET( address ) \ | ||
| 18840 | +( ALIGN64B( address ) - ( unsigned long ) ( address ) ) | ||
| 18841 | + | ||
| 18842 | +#define APPNIC_NAME "appnic" | ||
| 18843 | + | ||
| 18844 | +/* | ||
| 18845 | + Overview | ||
| 18846 | + -------- | ||
| 18847 | + | ||
| 18848 | + Register offset decoding is as follows: | ||
| 18849 | + | ||
| 18850 | + Bit(s) Description | ||
| 18851 | + | ||
| 18852 | + 16:15 define the Channel. There is only one; therefore, 00. | ||
| 18853 | + 14:12 define the MAC within the channel. Only one so 000. | ||
| 18854 | + 11:10 define the register "space" as follows: | ||
| 18855 | + 00 = fast ethernet MAC | ||
| 18856 | + 10 = global | ||
| 18857 | + 11 = interrupt | ||
| 18858 | + 9: 2 register | ||
| 18859 | + 1: 0 always 00, 32 bit registers only. | ||
| 18860 | + | ||
| 18861 | + Receive registers start at the base address. Transmit registers start | ||
| 18862 | + at 0x20000 above the base address. DMA start at a completely different | ||
| 18863 | + base address (in this case 0x8000000 above the base). | ||
| 18864 | + | ||
| 18865 | +*/ | ||
| 18866 | + | ||
| 18867 | +/* | ||
| 18868 | + ====================================================================== | ||
| 18869 | + ====================================================================== | ||
| 18870 | + ====================================================================== | ||
| 18871 | + | ||
| 18872 | + Registers. | ||
| 18873 | + | ||
| 18874 | + ====================================================================== | ||
| 18875 | + ====================================================================== | ||
| 18876 | + ====================================================================== | ||
| 18877 | +*/ | ||
| 18878 | + | ||
| 18879 | +/* SMII Status ------------------------------------------------------ */ | ||
| 18880 | + | ||
| 18881 | +#define APPNIC_RX_SMII_STATUS ( rx_base + 0x10 ) | ||
| 18882 | +#define APPNIC_RX_SMII_STATUS_SPEED 0x01 | ||
| 18883 | +#define APPNIC_RX_SMII_STATUS_DUPLEX 0x02 | ||
| 18884 | +#define APPNIC_RX_SMII_STATUS_LINK 0x04 | ||
| 18885 | +#define APPNIC_RX_SMII_STATUS_JABBER 0x08 | ||
| 18886 | +#define APPNIC_RX_SMII_STATUS_FCD 0x10 /* False Carrier Detect */ | ||
| 18887 | + | ||
| 18888 | +#define SMII_SPEED_100( smii_status_ ) \ | ||
| 18889 | +( 0 != ( smii_status_ & APPNIC_RX_SMII_STATUS_SPEED ) ) | ||
| 18890 | +#define SMII_DUPLEX( smii_status_ ) \ | ||
| 18891 | +( 0 != ( smii_status_ & APPNIC_RX_SMII_STATUS_DUPLEX ) ) | ||
| 18892 | +#define SMII_LINK( smii_status_ ) \ | ||
| 18893 | +( 0 != ( smii_status_ & APPNIC_RX_SMII_STATUS_LINK ) ) | ||
| 18894 | +#define SMII_JABBER( smii_status_ ) \ | ||
| 18895 | +( 0 != ( smii_status_ & APPNIC_RX_SMII_STATUS_JABBER ) ) | ||
| 18896 | + | ||
| 18897 | +/* Receive Configuration -------------------------------------------- */ | ||
| 18898 | + | ||
| 18899 | +#define APPNIC_RX_CONF ( rx_base + 0x004c ) | ||
| 18900 | +#define APPNIC_RX_CONF_ENABLE 0x0001 | ||
| 18901 | +/* Pass Any Packet */ | ||
| 18902 | +#define APPNIC_RX_CONF_PAP 0x0002 | ||
| 18903 | +#define APPNIC_RX_CONF_JUMBO9K 0x0008 | ||
| 18904 | +#define APPNIC_RX_CONF_STRIPCRC 0x0010 | ||
| 18905 | +/* Accept All MAC Types */ | ||
| 18906 | +#define APPNIC_RX_CONF_AMT 0x0020 | ||
| 18907 | +/* Accept Flow Control */ | ||
| 18908 | +#define APPNIC_RX_CONF_AFC 0x0040 | ||
| 18909 | +/* Enable VLAN */ | ||
| 18910 | +#define APPNIC_RX_CONF_VLAN 0x0200 | ||
| 18911 | +/* RX MAC Speed, 1=100MBS */ | ||
| 18912 | +#define APPNIC_RX_CONF_SPEED 0x0800 | ||
| 18913 | +/* 1=Duplex Mode */ | ||
| 18914 | +#define APPNIC_RX_CONF_DUPLEX 0x1000 | ||
| 18915 | +/* 1=Enable */ | ||
| 18916 | +#define APPNIC_RX_CONF_LINK 0x2000 | ||
| 18917 | +/* Determines the action taken when the FE MAC | ||
| 18918 | + receives an FC packet in FD mode.*/ | ||
| 18919 | +#define APPNIC_RX_CONF_RXFCE 0x4000 | ||
| 18920 | +/* Controls the insertion of FC packets | ||
| 18921 | + by the MAC transmitter. */ | ||
| 18922 | +#define APPNIC_RX_CONF_TXFCE 0x8000 | ||
| 18923 | + | ||
| 18924 | +/* Receive Stat Overflow -------------------------------------------- */ | ||
| 18925 | + | ||
| 18926 | +#define APPNIC_RX_STAT_OVERFLOW ( rx_base + 0x278 ) | ||
| 18927 | + | ||
| 18928 | +/* Receive Stat Undersize ------------------------------------------- */ | ||
| 18929 | + | ||
| 18930 | +#define APPNIC_RX_STAT_UNDERSIZE ( rx_base + 0x280 ) | ||
| 18931 | + | ||
| 18932 | +/* Receive Stat Oversize -------------------------------------------- */ | ||
| 18933 | + | ||
| 18934 | +#define APPNIC_RX_STAT_OVERSIZE ( rx_base + 0x2b8 ) | ||
| 18935 | + | ||
| 18936 | +/* Receive Stat Multicast ------------------------------------------- */ | ||
| 18937 | + | ||
| 18938 | +#define APPNIC_RX_STAT_MULTICAST ( rx_base + 0x2d0 ) | ||
| 18939 | + | ||
| 18940 | +/* Receive Stat Packet OK ------------------------------------------- */ | ||
| 18941 | + | ||
| 18942 | +#define APPNIC_RX_STAT_PACKET_OK ( rx_base + 0x2c0 ) | ||
| 18943 | + | ||
| 18944 | +/* Receive Stat CRC Error ------------------------------------------- */ | ||
| 18945 | + | ||
| 18946 | +#define APPNIC_RX_STAT_CRC_ERROR ( rx_base + 0x2c8 ) | ||
| 18947 | + | ||
| 18948 | +/* Receive Stat Align Error ----------------------------------------- */ | ||
| 18949 | + | ||
| 18950 | +#define APPNIC_RX_STAT_ALIGN_ERROR ( rx_base + 0x2e8 ) | ||
| 18951 | + | ||
| 18952 | +/* Receive Ethernet Mode -------------------------------------------- */ | ||
| 18953 | + | ||
| 18954 | +#define APPNIC_RX_MODE ( rx_base + 0x0800 ) | ||
| 18955 | +#define APPNIC_RX_MODE_ETHERNET_MODE_ENABLE 0x00001 | ||
| 18956 | + | ||
| 18957 | +/* Receive Soft Reset ----------------------------------------------- */ | ||
| 18958 | + | ||
| 18959 | +#define APPNIC_RX_SOFT_RESET ( rx_base + 0x0808 ) | ||
| 18960 | +#define APPNIC_RX_SOFT_RESET_MAC_0 0x00001 | ||
| 18961 | + | ||
| 18962 | +/* Receive Internal Interrupt Control ------------------------------- */ | ||
| 18963 | + | ||
| 18964 | +#define APPNIC_RX_INTERNAL_INTERRUPT_CONTROL ( rx_base + 0xc00 ) | ||
| 18965 | +#define APPNIC_RX_INTERNAL_INTERRUPT_CONTROL_MAC_0 0x1 | ||
| 18966 | + | ||
| 18967 | +/* Receive External Interrupt Control ------------------------------- */ | ||
| 18968 | + | ||
| 18969 | +#define APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL ( rx_base + 0xc04 ) | ||
| 18970 | +#define APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL_MAC_0_HIGH_LOW 0x10 | ||
| 18971 | +#define APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL_MAC_0 0x1 | ||
| 18972 | + | ||
| 18973 | +/* Receive Interrupt Status ----------------------------------------- */ | ||
| 18974 | + | ||
| 18975 | +#define APPNIC_RX_INTERRUPT_STATUS ( rx_base + 0xc20 ) | ||
| 18976 | +#define APPNIC_RX_INTERRUPT_EXTERNAL_STATUS_MAC_0 0x10 | ||
| 18977 | +#define APPNIC_RX_INTERRUPT_INTERNAL_STATUS_MAC_0 0x1 | ||
| 18978 | + | ||
| 18979 | +/* Transmit Watermark ----------------------------------------------- */ | ||
| 18980 | + | ||
| 18981 | +#define APPNIC_TX_WATERMARK (tx_base + 0x18 ) | ||
| 18982 | +#define APPNIC_TX_WATERMARK_TXCONFIG_DTPA_ASSERT 0x8000 | ||
| 18983 | +#define APPNIC_TX_WATERMARK_TXCONFIG_DTPA_DISABLE 0x4000 | ||
| 18984 | +#define APPNIC_TX_WATERMARK_TXCONFIG_DTPA_WATER_MARK_HIGH 0x3f00 | ||
| 18985 | +#define APPNIC_TX_WATERMARK_TXCONFIG_DTPA_WATER_MARK_LOW 0x3f | ||
| 18986 | + | ||
| 18987 | +/* Swap Source Address Registers ------------------------------------ */ | ||
| 18988 | + | ||
| 18989 | +#define APPNIC_SWAP_SOURCE_ADDRESS_2 ( tx_base + 0x20 ) | ||
| 18990 | +#define APPNIC_SWAP_SOURCE_ADDRESS_1 ( tx_base + 0x24 ) | ||
| 18991 | +#define APPNIC_SWAP_SOURCE_ADDRESS_0 ( tx_base + 0x28 ) | ||
| 18992 | + | ||
| 18993 | +/* Transmit Extended Configuration ---------------------------------- */ | ||
| 18994 | + | ||
| 18995 | +#define APPNIC_TX_EXTENDED_CONF ( tx_base + 0x30 ) | ||
| 18996 | +#define APPNIC_TX_EXTENDED_CONF_TRANSMIT_COLLISION_WATERMARK_LEVEL 0xf000 | ||
| 18997 | +#define APPNIC_TX_EXTENDED_CONF_EXCESSIVE_DEFFERED_PACKET_DROP 0x200 | ||
| 18998 | +#define APPNIC_TX_EXTENDED_CONF_JUMBO9K 0x100 | ||
| 18999 | +#define APPNIC_TX_EXTENDED_CONF_LATE_COLLISION_WINDOW_COUNT 0xff | ||
| 19000 | + | ||
| 19001 | +/* Transmit Half Duplex Configuration ------------------------------- */ | ||
| 19002 | + | ||
| 19003 | +#define APPNIC_TX_HALF_DUPLEX_CONF ( tx_base + 0x34 ) | ||
| 19004 | +#define APPNIC_TX_HALF_DUPLEX_CONF_RANDOM_SEED_VALUE 0xff | ||
| 19005 | + | ||
| 19006 | +/* Transmit Configuration ------------------------------------------- */ | ||
| 19007 | + | ||
| 19008 | +#define APPNIC_TX_CONF ( tx_base + 0x0050 ) | ||
| 19009 | +#define APPNIC_TX_CONF_ENABLE_SWAP_SA 0x8000 | ||
| 19010 | +#define APPNIC_TX_CONF_LINK 0x2000 | ||
| 19011 | +#define APPNIC_TX_CONF_DUPLEX 0x1000 | ||
| 19012 | +#define APPNIC_TX_CONF_SPEED 0x0800 | ||
| 19013 | +#define APPNIC_TX_CONF_XBK_RST_RX_NTX 0x0600 | ||
| 19014 | +#define APPNIC_TX_CONF_IFG 0x01f0 | ||
| 19015 | +#define APPNIC_TX_CONF_APP_CRC_ENABLE 0x0004 | ||
| 19016 | +#define APPNIC_TX_CONF_PAD_ENABLE 0x0002 | ||
| 19017 | +#define APPNIC_TX_CONF_ENABLE 0x0001 | ||
| 19018 | + | ||
| 19019 | +#define TX_CONF_SET_IFG( tx_configuration_, ifg_ ) do { \ | ||
| 19020 | +( tx_configuration_ ) &= ~ APPNIC_TX_CONF_IFG; \ | ||
| 19021 | +( tx_configuration_ ) |= ( ( ifg_ & 0x1f ) << 4 ); \ | ||
| 19022 | +} while( 0 ); | ||
| 19023 | + | ||
| 19024 | +/* Transmit Time Value Configuration -------------------------------- */ | ||
| 19025 | + | ||
| 19026 | +#define APPNIC_TX_TIME_VALUE_CONF ( tx_base + 0x5c ) | ||
| 19027 | +#define APPNIC_TX_TIME_VALUE_CONF_PAUSE_VALUE 0xffff | ||
| 19028 | + | ||
| 19029 | +/* Transmit Stat Underrun ------------------------------------------- */ | ||
| 19030 | + | ||
| 19031 | +#define APPNIC_TX_STAT_UNDERRUN ( tx_base + 0x300 ) | ||
| 19032 | + | ||
| 19033 | +/* Transmit Stat Packet OK ------------------------------------------ */ | ||
| 19034 | + | ||
| 19035 | +#define APPNIC_TX_STAT_PACKET_OK ( tx_base + 0x318 ) | ||
| 19036 | + | ||
| 19037 | +/* Transmit Stat Undersize ------------------------------------------ */ | ||
| 19038 | + | ||
| 19039 | +#define APPNIC_TX_STAT_UNDERSIZE ( tx_base + 0x350 ) | ||
| 19040 | + | ||
| 19041 | +/* Transmit Status Late Collision ----------------------------------- */ | ||
| 19042 | + | ||
| 19043 | +#define APPNIC_TX_STATUS_LATE_COLLISION ( tx_base + 0x368 ) | ||
| 19044 | + | ||
| 19045 | +/* Transmit Status Excessive Collision ------------------------------ */ | ||
| 19046 | + | ||
| 19047 | +#define APPNIC_TX_STATUS_EXCESSIVE_COLLISION ( tx_base + 0x370 ) | ||
| 19048 | + | ||
| 19049 | +/* Transmit Stat Collision Above Watermark -------------------------- */ | ||
| 19050 | + | ||
| 19051 | +#define APPNIC_TX_STAT_COLLISION_ABOVE_WATERMARK ( tx_base + 0x380 ) | ||
| 19052 | + | ||
| 19053 | +/* Transmit Mode ---------------------------------------------------- */ | ||
| 19054 | + | ||
| 19055 | +#define APPNIC_TX_MODE ( tx_base + 0x800 ) | ||
| 19056 | +#define APPNIC_TX_MODE_ETHERNET_MODE_ENABLE 0x1 | ||
| 19057 | + | ||
| 19058 | +/* Transmit Soft Reset ---------------------------------------------- */ | ||
| 19059 | + | ||
| 19060 | +#define APPNIC_TX_SOFT_RESET ( tx_base + 0x808 ) | ||
| 19061 | +#define APPNIC_TX_SOFT_RESET_MAC_0 0x1 | ||
| 19062 | + | ||
| 19063 | +/* Transmit Interrupt Control --------------------------------------- */ | ||
| 19064 | + | ||
| 19065 | +#define APPNIC_TX_INTERRUPT_CONTROL ( tx_base + 0xc00 ) | ||
| 19066 | +#define APPNIC_TX_INTERRUPT_CONTROL_MAC_0 0x1 | ||
| 19067 | + | ||
| 19068 | +/* Transmit Interrupt Status ---------------------------------------- */ | ||
| 19069 | + | ||
| 19070 | +#define APPNIC_TX_INTERRUPT_STATUS ( tx_base + 0xc20 ) | ||
| 19071 | +#define APPNIC_TX_INTERRUPT_STATUS_MAC_0 0x1 | ||
| 19072 | + | ||
| 19073 | +/* */ | ||
| 19074 | + | ||
| 19075 | +#define APPNIC_DMA_PCI_CONTROL ( dma_base + 0x00 ) | ||
| 19076 | + | ||
| 19077 | +/* */ | ||
| 19078 | + | ||
| 19079 | +#define APPNIC_DMA_CONTROL ( dma_base + 0x08 ) | ||
| 19080 | + | ||
| 19081 | +/* DMA Interrupt Status --------------------------------------------- */ | ||
| 19082 | + | ||
| 19083 | +#define APPNIC_DMA_INTERRUPT_STATUS ( dma_base + 0x18 ) | ||
| 19084 | +#define APPNIC_DMA_INTERRUPT_STATUS_RX 0x2 | ||
| 19085 | +#define APPNIC_DMA_INTERRUPT_STATUS_TX 0x1 | ||
| 19086 | + | ||
| 19087 | +#define RX_INTERRUPT( dma_interrupt_status_ ) \ | ||
| 19088 | +( 0 != ( dma_interrupt_status_ & APPNIC_DMA_INTERRUPT_STATUS_RX ) ) | ||
| 19089 | +#define TX_INTERRUPT( dma_interrupt_status_ ) \ | ||
| 19090 | +( 0 != ( dma_interrupt_status_ & APPNIC_DMA_INTERRUPT_STATUS_TX ) ) | ||
| 19091 | + | ||
| 19092 | +/* DMA Interrupt Enable --------------------------------------------- */ | ||
| 19093 | + | ||
| 19094 | +#define APPNIC_DMA_INTERRUPT_ENABLE ( dma_base + 0x1c ) | ||
| 19095 | +#define APPNIC_DMA_INTERRUPT_ENABLE_RECEIVE 0x2 | ||
| 19096 | +#define APPNIC_DMA_INTERRUPT_ENABLE_TRANSMIT 0x1 | ||
| 19097 | + | ||
| 19098 | +/* DMA Receive Queue Base Address ----------------------------------- */ | ||
| 19099 | + | ||
| 19100 | +#define APPNIC_DMA_RX_QUEUE_BASE_ADDRESS ( dma_base + 0x30 ) | ||
| 19101 | + | ||
| 19102 | +/* DMA Receive Queue Size ------------------------------------------- */ | ||
| 19103 | + | ||
| 19104 | +#define APPNIC_DMA_RX_QUEUE_SIZE ( dma_base + 0x34 ) | ||
| 19105 | + | ||
| 19106 | +/* DMA Transmit Queue Base Address ---------------------------------- */ | ||
| 19107 | + | ||
| 19108 | +#define APPNIC_DMA_TX_QUEUE_BASE_ADDRESS ( dma_base + 0x38 ) | ||
| 19109 | + | ||
| 19110 | +/* DMA Transmit Queue Size ------------------------------------------ */ | ||
| 19111 | + | ||
| 19112 | +#define APPNIC_DMA_TX_QUEUE_SIZE ( dma_base + 0x3c ) | ||
| 19113 | + | ||
| 19114 | +/* DMA Recevie Tail Pointer Address --------------------------------- */ | ||
| 19115 | + | ||
| 19116 | +#define APPNIC_DMA_RX_TAIL_POINTER_ADDRESS ( dma_base + 0x48 ) | ||
| 19117 | + | ||
| 19118 | +/* DMA Transmit Tail Pointer Address -------------------------------- */ | ||
| 19119 | + | ||
| 19120 | +#define APPNIC_DMA_TX_TAIL_POINTER_ADDRESS ( dma_base + 0x4c ) | ||
| 19121 | + | ||
| 19122 | +/* DMA Receive Head Pointer ----------------------------------------- */ | ||
| 19123 | + | ||
| 19124 | +#define APPNIC_DMA_RX_HEAD_POINTER ( dma_base + 0x50 ) | ||
| 19125 | +#define APPNIC_DMA_RX_HEAD_POINTER_GB 0x100000 | ||
| 19126 | +#define APPNIC_DMA_RX_HEAD_POINTER_POINTER 0x0fffff | ||
| 19127 | + | ||
| 19128 | +/* DMA Receive Tail Pointer Local Copy ------------------------------ */ | ||
| 19129 | + | ||
| 19130 | +#define APPNIC_DMA_RX_TAIL_POINTER_LOCAL_COPY ( dma_base + 0x54 ) | ||
| 19131 | +#define APPNIC_DMA_RX_TAIL_POINTER_LOCAL_COPY_GB 0x100000 | ||
| 19132 | +#define APPNIC_DMA_RX_TAIL_POINTER_LOCAL_COPY_POINTER 0x0fffff | ||
| 19133 | + | ||
| 19134 | +/* DMA Transmit Head Pointer ---------------------------------------- */ | ||
| 19135 | + | ||
| 19136 | +#define APPNIC_DMA_TX_HEAD_POINTER ( dma_base + 0x58 ) | ||
| 19137 | +#define APPNIC_DMA_TX_HEAD_POINTER_GB 0x100000 | ||
| 19138 | +#define APPNIC_DMA_TX_HEAD_POINTER_POINTER 0x0fffff | ||
| 19139 | + | ||
| 19140 | +/* DMA Transmit Tail Pointer Local Copy ----------------------------- */ | ||
| 19141 | + | ||
| 19142 | +#define APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY ( dma_base + 0x5c ) | ||
| 19143 | +#define APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY_GB 0x100000 | ||
| 19144 | +#define APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY_POINTER 0x0fffff | ||
| 19145 | + | ||
| 19146 | +/* | ||
| 19147 | + ====================================================================== | ||
| 19148 | + ====================================================================== | ||
| 19149 | + ====================================================================== | ||
| 19150 | + | ||
| 19151 | + Access | ||
| 19152 | + | ||
| 19153 | + N.B. On the APP, DMA transfers from the NIC MUST USE THE MEMORY | ||
| 19154 | + ALIAS AT 0x60000000! | ||
| 19155 | + | ||
| 19156 | + ====================================================================== | ||
| 19157 | + ====================================================================== | ||
| 19158 | + ====================================================================== | ||
| 19159 | +*/ | ||
| 19160 | + | ||
| 19161 | +#ifdef CONFIG_ACP | ||
| 19162 | + | ||
| 19163 | +#define readio( address ) in_le32( ( u32 * ) ( address ) ) | ||
| 19164 | + | ||
| 19165 | +#define writeio( value, address ) out_le32( ( u32 * ) ( address ), ( value ) ); | ||
| 19166 | + | ||
| 19167 | +static inline void | ||
| 19168 | +readdescriptor( unsigned long address, appnic_dma_descriptor_t * descriptor ) | ||
| 19169 | +{ | ||
| 19170 | + unsigned long * from = ( unsigned long * ) address; | ||
| 19171 | + unsigned long * to = ( unsigned long * ) descriptor; | ||
| 19172 | + * to ++ = swab32( * from ++ ); | ||
| 19173 | + * to ++ = swab32( * from ++ ); | ||
| 19174 | + * to ++ = swab32( * from ++ ); | ||
| 19175 | + * to ++ = swab32( * from ++ ); | ||
| 19176 | + return; | ||
| 19177 | +} | ||
| 19178 | + | ||
| 19179 | +static inline void | ||
| 19180 | +writedescriptor( unsigned long address, | ||
| 19181 | + const appnic_dma_descriptor_t * descriptor ) | ||
| 19182 | +{ | ||
| 19183 | + unsigned long * to = ( unsigned long * ) address; | ||
| 19184 | + unsigned long * from = ( unsigned long * ) descriptor; | ||
| 19185 | + * to ++ = swab32( * from ++ ); | ||
| 19186 | + * to ++ = swab32( * from ++ ); | ||
| 19187 | + * to ++ = swab32( * from ++ ); | ||
| 19188 | + * to ++ = swab32( * from ++ ); | ||
| 19189 | + return; | ||
| 19190 | +} | ||
| 19191 | + | ||
| 19192 | +static inline appnic_queue_pointer_t | ||
| 19193 | +swab_queue_pointer( const appnic_queue_pointer_t * old_queue ) | ||
| 19194 | +{ | ||
| 19195 | + appnic_queue_pointer_t new_queue; | ||
| 19196 | + new_queue.raw = swab32( old_queue->raw ); | ||
| 19197 | + return new_queue; | ||
| 19198 | +} | ||
| 19199 | + | ||
| 19200 | +#define SWAB_QUEUE_POINTER( pointer ) \ | ||
| 19201 | +swab_queue_pointer( ( const appnic_queue_pointer_t * ) ( pointer ) ) | ||
| 19202 | + | ||
| 19203 | +#else | ||
| 19204 | + | ||
| 19205 | +#define readio( address ) readl( ( address ) ) | ||
| 19206 | + | ||
| 19207 | +#define writeio( value, address ) writel( ( value ), ( address ) ) | ||
| 19208 | + | ||
| 19209 | +static inline void | ||
| 19210 | +readdescriptor( unsigned long address, appnic_dma_descriptor_t * descriptor ) | ||
| 19211 | +{ | ||
| 19212 | + memcpy( descriptor, ( void * ) address, sizeof( appnic_dma_descriptor_t ) ); | ||
| 19213 | + return; | ||
| 19214 | +} | ||
| 19215 | + | ||
| 19216 | +static inline void | ||
| 19217 | +writedescriptor( unsigned long address, | ||
| 19218 | + const appnic_dma_descriptor_t * descriptor ) | ||
| 19219 | +{ | ||
| 19220 | + memcpy( ( void * ) address, descriptor, sizeof( appnic_dma_descriptor_t ) ); | ||
| 19221 | + return; | ||
| 19222 | +} | ||
| 19223 | + | ||
| 19224 | +static inline unsigned long | ||
| 19225 | +swab_queue_pointer( unsigned long old_queue ) | ||
| 19226 | +{ | ||
| 19227 | + return old_queue; | ||
| 19228 | +} | ||
| 19229 | + | ||
| 19230 | +#endif | ||
| 19231 | + | ||
| 19232 | +#ifdef LOG_MAC_ACCESS | ||
| 19233 | + | ||
| 19234 | +static unsigned long read_mac_( unsigned int address ) { | ||
| 19235 | + | ||
| 19236 | + unsigned long value_ = readio( address ); | ||
| 19237 | + | ||
| 19238 | + switch( address & 0xfffff000 ) { | ||
| 19239 | + | ||
| 19240 | + case rx_base: | ||
| 19241 | + printk( "-MAC- RX + 0x%04x => 0x%08lx\n", ( address & 0x1fff ), value_ ); | ||
| 19242 | + break; | ||
| 19243 | + | ||
| 19244 | + case tx_base: | ||
| 19245 | + printk( "-MAC- TX + 0x%04x => 0x%08lx\n", ( address & 0x1fff ), value_ ); | ||
| 19246 | + break; | ||
| 19247 | + | ||
| 19248 | + case dma_base: | ||
| 19249 | + printk( "-MAC- DMA + 0x%04x => 0x%08lx\n", ( address & 0x1fff ), value_ ); | ||
| 19250 | + break; | ||
| 19251 | + | ||
| 19252 | + default: | ||
| 19253 | + ERROR_PRINT( "ARGHHHHH!!!\n" ); | ||
| 19254 | + break; | ||
| 19255 | + | ||
| 19256 | + } | ||
| 19257 | + | ||
| 19258 | + return value_; | ||
| 19259 | + | ||
| 19260 | +} | ||
| 19261 | + | ||
| 19262 | +static void write_mac_( unsigned long value, unsigned int address ) { | ||
| 19263 | + | ||
| 19264 | + switch( address & 0xfffff000 ) { | ||
| 19265 | + | ||
| 19266 | + case rx_base: | ||
| 19267 | + printk( "-MAC- RX + 0x%04x <= 0x%08lx\n", ( address & 0x1fff ), value ); | ||
| 19268 | + break; | ||
| 19269 | + | ||
| 19270 | + case tx_base: | ||
| 19271 | + printk( "-MAC- TX + 0x%04x <= 0x%08lx\n", ( address & 0x1fff ), value ); | ||
| 19272 | + break; | ||
| 19273 | + | ||
| 19274 | + case dma_base: | ||
| 19275 | + printk( "-MAC- DMA + 0x%04x <= 0x%08lx\n", ( address & 0x1fff ), value ); | ||
| 19276 | + break; | ||
| 19277 | + | ||
| 19278 | + default: | ||
| 19279 | + ERROR_PRINT( "ARGHHHHH!!!\n" ); | ||
| 19280 | + break; | ||
| 19281 | + | ||
| 19282 | + } | ||
| 19283 | + | ||
| 19284 | + writeio( value, address ); | ||
| 19285 | + return; | ||
| 19286 | + | ||
| 19287 | +} | ||
| 19288 | + | ||
| 19289 | +#else /* ! LOG_MAC_ACCESS */ | ||
| 19290 | + | ||
| 19291 | +#define read_mac_( address ) readio( ( address ) ) | ||
| 19292 | +#define write_mac_( value, address ) writeio( ( value ), ( address ) ) | ||
| 19293 | + | ||
| 19294 | +#endif | ||
| 19295 | + | ||
| 19296 | +#ifndef PHYLESS | ||
| 19297 | +#ifdef LOG_PHY_ACCESS | ||
| 19298 | + | ||
| 19299 | +static unsigned long read_phy_( unsigned int address ) { | ||
| 19300 | + | ||
| 19301 | + unsigned long value_ = readl( address ); | ||
| 19302 | + printk( "-PHY- HOST + 0x%04x => 0x%08lx\n", ( address & 0xff ), value_ ); | ||
| 19303 | + return value_; | ||
| 19304 | + | ||
| 19305 | +} | ||
| 19306 | + | ||
| 19307 | +static void write_phy_( unsigned long value, unsigned int address ) { | ||
| 19308 | + | ||
| 19309 | + printk( "-PHY- HOST + 0x%04x <= 0x%08lx\n", ( address & 0xff ), value ); | ||
| 19310 | + writel( value, address ); | ||
| 19311 | + return; | ||
| 19312 | + | ||
| 19313 | +} | ||
| 19314 | + | ||
| 19315 | +#else /* ! LOG_PHY_ACCESS */ | ||
| 19316 | + | ||
| 19317 | +#define read_phy_( address ) readl( ( address ) ) | ||
| 19318 | +#define write_phy_( value, address ) writel( value, address ) | ||
| 19319 | + | ||
| 19320 | +#endif | ||
| 19321 | +#endif /* PHYLESS */ | ||
| 19322 | + | ||
| 19323 | +/* | ||
| 19324 | + ====================================================================== | ||
| 19325 | + ====================================================================== | ||
| 19326 | + ====================================================================== | ||
| 19327 | + | ||
| 19328 | + Module Information | ||
| 19329 | + | ||
| 19330 | + ====================================================================== | ||
| 19331 | + ====================================================================== | ||
| 19332 | + ====================================================================== | ||
| 19333 | +*/ | ||
| 19334 | + | ||
| 19335 | +MODULE_AUTHOR( "John Jacques" ); | ||
| 19336 | +MODULE_DESCRIPTION( "Agere APP3xx ethernet driver" ); | ||
| 19337 | +MODULE_LICENSE( "GPL" ); | ||
| 19338 | + | ||
| 19339 | +/* | ||
| 19340 | + ----- Note On Buffer Space ----- | ||
| 19341 | + | ||
| 19342 | + Minimum number of descriptors is 64 for the receiver and 64 for the | ||
| 19343 | + transmitter; therefore, 2048 bytes (16 bytes each). | ||
| 19344 | + This driver uses the following parameters, | ||
| 19345 | + all of which may be set on the command line if this drivers is used | ||
| 19346 | + as a module. | ||
| 19347 | + | ||
| 19348 | + - rx_num_desc : Number of receive descriptors. This must be a multiple of | ||
| 19349 | + 64. | ||
| 19350 | + - tx_num_desc : Number of transmit descriptors. This must be a multiple of | ||
| 19351 | + 64. | ||
| 19352 | + | ||
| 19353 | + The scheme used will be as follows: | ||
| 19354 | + | ||
| 19355 | + - num_[rt]x_desc will be adjusted to be a multiple of 64 (if necessary). | ||
| 19356 | + - An skb (with the data area 64 byte aligned) will be allocated for each rx | ||
| 19357 | + descriptor. | ||
| 19358 | +*/ | ||
| 19359 | + | ||
| 19360 | +/* | ||
| 19361 | + Receiver | ||
| 19362 | +*/ | ||
| 19363 | + | ||
| 19364 | +int rx_num_desc = ( CONFIG_LSI_NET_NUM_RX_DESC * DESCRIPTOR_GRANULARITY ); | ||
| 19365 | +module_param( rx_num_desc, int, 0 ); | ||
| 19366 | +MODULE_PARM_DESC( rx_num_desc, "appnic : Number of receive descriptors" ); | ||
| 19367 | + | ||
| 19368 | +int rx_buf_sz = CONFIG_LSI_NET_RX_BUF_SZ; | ||
| 19369 | +module_param( rx_buf_sz, int, 0 ); | ||
| 19370 | +MODULE_PARM_DESC( rx_buf_sz, "appnic : Receive buffer size" ); | ||
| 19371 | + | ||
| 19372 | +/* | ||
| 19373 | + Transmitter | ||
| 19374 | +*/ | ||
| 19375 | + | ||
| 19376 | +int tx_num_desc = ( CONFIG_LSI_NET_NUM_TX_DESC * DESCRIPTOR_GRANULARITY ); | ||
| 19377 | +module_param( tx_num_desc, int, 0 ); | ||
| 19378 | +MODULE_PARM_DESC( tx_num_desc, "appnic : Number of receive descriptors" ); | ||
| 19379 | + | ||
| 19380 | +int tx_buf_sz = CONFIG_LSI_NET_TX_BUF_SZ; | ||
| 19381 | +module_param( tx_buf_sz, int, 0 ); | ||
| 19382 | +MODULE_PARM_DESC( tx_buf_sz, "Appnic : Receive buffer size" ); | ||
| 19383 | + | ||
| 19384 | +/* | ||
| 19385 | + Timeout, if a transmit takes longer than this | ||
| 19386 | + value in jiffies it has timed out. | ||
| 19387 | +*/ | ||
| 19388 | + | ||
| 19389 | +#define DEFAULT_TX_TIMEOUT 10 | ||
| 19390 | + | ||
| 19391 | +int tx_timeout = DEFAULT_TX_TIMEOUT; | ||
| 19392 | +module_param( tx_timeout, int, 0 ); | ||
| 19393 | +MODULE_PARM_DESC( tx_timeout, "appnic : Transmit timeout (in jiffies)" ); | ||
| 19394 | + | ||
| 19395 | +/* | ||
| 19396 | + Only 1 device is possible... | ||
| 19397 | +*/ | ||
| 19398 | + | ||
| 19399 | +struct net_device *this_net_device; | ||
| 19400 | + | ||
| 19401 | +static unsigned long dropped_by_stack_ = 0; | ||
| 19402 | +static unsigned long out_of_tx_descriptors_ = 0; | ||
| 19403 | +static unsigned long transmit_interrupts_ = 0; | ||
| 19404 | +#ifdef LSINET_NAPI | ||
| 19405 | +static unsigned long receive_interrupts_ = 0; | ||
| 19406 | +#endif | ||
| 19407 | + | ||
| 19408 | +#define APPNIC_TIMER_PERIOD 5 | ||
| 19409 | +#ifndef PHYLESS | ||
| 19410 | +static void appnic_timer_handler_( unsigned long ); | ||
| 19411 | +static struct timer_list appnic_timer_; | ||
| 19412 | +#endif /* PHYLESS */ | ||
| 19413 | + | ||
| 19414 | +/* | ||
| 19415 | + ====================================================================== | ||
| 19416 | + ====================================================================== | ||
| 19417 | + ====================================================================== | ||
| 19418 | + | ||
| 19419 | + Locking... | ||
| 19420 | + | ||
| 19421 | + ====================================================================== | ||
| 19422 | + ====================================================================== | ||
| 19423 | + ====================================================================== | ||
| 19424 | +*/ | ||
| 19425 | + | ||
| 19426 | +#ifdef CONFIG_SMP | ||
| 19427 | +/* | ||
| 19428 | + * On SMP we have the following problem: | ||
| 19429 | + * | ||
| 19430 | + * A = smc_hard_start_xmit() | ||
| 19431 | + * B = smc_interrupt() | ||
| 19432 | + * | ||
| 19433 | + * A and B can never be executed simultaneously. However, at least on UP, | ||
| 19434 | + * it is possible (and even desirable) for C to interrupt execution of | ||
| 19435 | + * A or B in order to have better RX reliability and avoid overruns. | ||
| 19436 | + * C, just like A and B, must have exclusive access to the chip and | ||
| 19437 | + * each of them must lock against any other concurrent access. | ||
| 19438 | + * Unfortunately this is not possible to have C suspend execution of A or | ||
| 19439 | + * B taking place on another CPU. On UP this is no an issue since A and B | ||
| 19440 | + * are run from softirq context and C from hard IRQ context, and there is | ||
| 19441 | + * no other CPU where concurrent access can happen. | ||
| 19442 | + * If ever there is a way to force at least B and C to always be executed | ||
| 19443 | + * on the same CPU then we could use read/write locks to protect against | ||
| 19444 | + * any other concurrent access and C would always interrupt B. But life | ||
| 19445 | + * isn't that easy in a SMP world... | ||
| 19446 | + */ | ||
| 19447 | + | ||
| 19448 | +#define appnic_special_trylock(lock) \ | ||
| 19449 | + ({ \ | ||
| 19450 | + int __ret; \ | ||
| 19451 | + local_irq_disable(); \ | ||
| 19452 | + __ret = spin_trylock(lock); \ | ||
| 19453 | + if (!__ret) \ | ||
| 19454 | + local_irq_enable(); \ | ||
| 19455 | + __ret; \ | ||
| 19456 | + }) | ||
| 19457 | +#define appnic_special_lock(lock) spin_lock_irq(lock) | ||
| 19458 | +#define appnic_special_unlock(lock) spin_unlock_irq(lock) | ||
| 19459 | +#else | ||
| 19460 | +#define appnic_special_trylock(lock) (1) | ||
| 19461 | +#define appnic_special_lock(lock) do { } while (0) | ||
| 19462 | +#define appnic_special_unlock(lock) do { } while (0) | ||
| 19463 | +#endif | ||
| 19464 | + | ||
| 19465 | +/* | ||
| 19466 | + ====================================================================== | ||
| 19467 | + ====================================================================== | ||
| 19468 | + ====================================================================== | ||
| 19469 | + | ||
| 19470 | + Utility Functions | ||
| 19471 | + | ||
| 19472 | + ====================================================================== | ||
| 19473 | + ====================================================================== | ||
| 19474 | + ====================================================================== | ||
| 19475 | +*/ | ||
| 19476 | + | ||
| 19477 | +/* | ||
| 19478 | + ---------------------------------------------------------------------- | ||
| 19479 | + clear_statistics_ | ||
| 19480 | +*/ | ||
| 19481 | + | ||
| 19482 | +static void clear_statistics_( appnic_device_t * device ) { | ||
| 19483 | + | ||
| 19484 | + int waste_; | ||
| 19485 | + | ||
| 19486 | + /* | ||
| 19487 | + Clear memory. | ||
| 19488 | + */ | ||
| 19489 | + | ||
| 19490 | + memset( ( void * ) & ( device->stats ), 0, | ||
| 19491 | + sizeof( struct net_device_stats ) ); | ||
| 19492 | + | ||
| 19493 | + /* | ||
| 19494 | + Clear counters. | ||
| 19495 | + */ | ||
| 19496 | + | ||
| 19497 | + waste_ = read_mac_( APPNIC_RX_STAT_PACKET_OK ); /* rx_packets */ | ||
| 19498 | + waste_ = read_mac_( APPNIC_TX_STAT_PACKET_OK ); /* tx_packets */ | ||
| 19499 | + /* rx_bytes kept by driver. */ | ||
| 19500 | + /* tx_bytes kept by driver. */ | ||
| 19501 | + /* rx_errors will be the sum of the rx errors available. */ | ||
| 19502 | + /* tx_errors will be the sum of the tx errors available. */ | ||
| 19503 | + /* rx_dropped (unable to allocate skb) will be maintained by the driver */ | ||
| 19504 | + /* tx_dropped (unable to allocate skb) will be maintained by the driver */ | ||
| 19505 | + /* multicast */ | ||
| 19506 | + waste_ = read_mac_( APPNIC_RX_STAT_MULTICAST ); | ||
| 19507 | + /* collisions will be the sum of the three following. */ | ||
| 19508 | + waste_ = read_mac_( APPNIC_TX_STATUS_LATE_COLLISION ); | ||
| 19509 | + waste_ = read_mac_( APPNIC_TX_STATUS_EXCESSIVE_COLLISION ); | ||
| 19510 | + waste_ = read_mac_( APPNIC_TX_STAT_COLLISION_ABOVE_WATERMARK ); | ||
| 19511 | + /* rx_length_errors will be the sum of the two following. */ | ||
| 19512 | + waste_ = read_mac_( APPNIC_RX_STAT_UNDERSIZE ); | ||
| 19513 | + waste_ = read_mac_( APPNIC_RX_STAT_OVERSIZE ); | ||
| 19514 | + /* rx_over_errors (out of descriptors?) maintained by the driver. */ | ||
| 19515 | + /* rx_crc_errors */ | ||
| 19516 | + waste_ = read_mac_( APPNIC_RX_STAT_CRC_ERROR ); | ||
| 19517 | + /* rx_frame_errors */ | ||
| 19518 | + waste_ = read_mac_( APPNIC_RX_STAT_ALIGN_ERROR ); | ||
| 19519 | + /* rx_fifo_errors */ | ||
| 19520 | + waste_ = read_mac_( APPNIC_RX_STAT_OVERFLOW ); | ||
| 19521 | + /* rx_missed will not be maintained. */ | ||
| 19522 | + /* tx_aborted_errors will be maintained by the driver. */ | ||
| 19523 | + /* tx_carrier_errors will not be maintained. */ | ||
| 19524 | + /* tx_fifo_errors */ | ||
| 19525 | + waste_ = read_mac_( APPNIC_TX_STAT_UNDERRUN ); | ||
| 19526 | + /* tx_heartbeat_errors */ | ||
| 19527 | + /* tx_window_errors */ | ||
| 19528 | + | ||
| 19529 | + /* rx_compressed will not be maintained. */ | ||
| 19530 | + /* tx_compressed will not be maintained. */ | ||
| 19531 | + | ||
| 19532 | + /* | ||
| 19533 | + That's all. | ||
| 19534 | + */ | ||
| 19535 | + | ||
| 19536 | + return; | ||
| 19537 | + | ||
| 19538 | +} | ||
| 19539 | + | ||
| 19540 | +/* | ||
| 19541 | + ---------------------------------------------------------------------- | ||
| 19542 | + get_hw_statistics_ | ||
| 19543 | + | ||
| 19544 | + -- NOTES -- | ||
| 19545 | + | ||
| 19546 | + 1) The hardware clears the statistics registers after a read. | ||
| 19547 | +*/ | ||
| 19548 | + | ||
| 19549 | +static void get_hw_statistics_( appnic_device_t * device ) { | ||
| 19550 | + | ||
| 19551 | + /* tx_packets */ | ||
| 19552 | + device->stats.tx_packets += read_mac_( APPNIC_TX_STAT_PACKET_OK ); | ||
| 19553 | + /* multicast */ | ||
| 19554 | + device->stats.multicast += read_mac_( APPNIC_RX_STAT_MULTICAST ); | ||
| 19555 | + /* collision */ | ||
| 19556 | + device->stats.collisions += read_mac_( APPNIC_TX_STATUS_LATE_COLLISION ); | ||
| 19557 | + device->stats.collisions += | ||
| 19558 | + read_mac_( APPNIC_TX_STATUS_EXCESSIVE_COLLISION ); | ||
| 19559 | + device->stats.collisions += | ||
| 19560 | + read_mac_( APPNIC_TX_STAT_COLLISION_ABOVE_WATERMARK ); | ||
| 19561 | + /* rx_length_errors */ | ||
| 19562 | + device->stats.rx_length_errors += read_mac_( APPNIC_RX_STAT_UNDERSIZE ); | ||
| 19563 | + device->stats.rx_length_errors += read_mac_( APPNIC_RX_STAT_OVERSIZE ); | ||
| 19564 | + /* tx_fifo_errors */ | ||
| 19565 | + device->stats.tx_fifo_errors += read_mac_( APPNIC_TX_STAT_UNDERRUN ); | ||
| 19566 | + | ||
| 19567 | + /* | ||
| 19568 | + Lock this section out so the statistics maintained by the driver | ||
| 19569 | + don't get clobbered. | ||
| 19570 | + */ | ||
| 19571 | + | ||
| 19572 | + { | ||
| 19573 | + | ||
| 19574 | + unsigned long flags_; | ||
| 19575 | + | ||
| 19576 | + spin_lock_irqsave( & device->lock, flags_ ); | ||
| 19577 | + | ||
| 19578 | + device->stats.rx_errors += | ||
| 19579 | + ( device->stats.rx_length_errors + | ||
| 19580 | + device->stats.rx_crc_errors + | ||
| 19581 | + device->stats.rx_frame_errors + | ||
| 19582 | + device->stats.rx_fifo_errors + | ||
| 19583 | + device->stats.rx_dropped + | ||
| 19584 | + device->stats.rx_over_errors ); | ||
| 19585 | + device->stats.rx_dropped = 0; | ||
| 19586 | + device->stats.rx_over_errors = 0; | ||
| 19587 | + | ||
| 19588 | + device->stats.tx_errors += | ||
| 19589 | + ( device->stats.tx_fifo_errors + | ||
| 19590 | + device->stats.tx_aborted_errors ); | ||
| 19591 | + device->stats.tx_aborted_errors = 0; | ||
| 19592 | + | ||
| 19593 | + spin_unlock_irqrestore( & device->lock, flags_ ); | ||
| 19594 | + | ||
| 19595 | + } | ||
| 19596 | + | ||
| 19597 | + /* | ||
| 19598 | + That's all. | ||
| 19599 | + */ | ||
| 19600 | + | ||
| 19601 | + return; | ||
| 19602 | + | ||
| 19603 | +} | ||
| 19604 | + | ||
| 19605 | +/* | ||
| 19606 | + ---------------------------------------------------------------------- | ||
| 19607 | + queue_initialized_ | ||
| 19608 | + | ||
| 19609 | + Returns the number of descriptors that are ready to receive packets | ||
| 19610 | + or are waiting to transmit packets. (from tail to head). | ||
| 19611 | +*/ | ||
| 19612 | + | ||
| 19613 | +static int queue_initialized_( appnic_queue_pointer_t head, | ||
| 19614 | + appnic_queue_pointer_t tail, | ||
| 19615 | + int size ) { | ||
| 19616 | + int initialized; | ||
| 19617 | + | ||
| 19618 | + /* Calculate the number of descriptors currently initialized. */ | ||
| 19619 | + | ||
| 19620 | + if( head.bits.generation_bit == tail.bits.generation_bit ) { | ||
| 19621 | + | ||
| 19622 | + /* same generation */ | ||
| 19623 | + initialized = ( head.bits.offset - tail.bits.offset ); | ||
| 19624 | + | ||
| 19625 | + } else { | ||
| 19626 | + | ||
| 19627 | + /* different generation */ | ||
| 19628 | + initialized = head.bits.offset + | ||
| 19629 | + ( size * sizeof( appnic_dma_descriptor_t ) - tail.bits.offset ); | ||
| 19630 | + | ||
| 19631 | + } | ||
| 19632 | + | ||
| 19633 | + /* number of descriptors is offset / sizeof( a descriptor ) */ | ||
| 19634 | + initialized /= sizeof( appnic_dma_descriptor_t ); | ||
| 19635 | + | ||
| 19636 | + return initialized; | ||
| 19637 | +} | ||
| 19638 | + | ||
| 19639 | +/* | ||
| 19640 | + ---------------------------------------------------------------------- | ||
| 19641 | + queue_uninitialzed_ | ||
| 19642 | + | ||
| 19643 | + Returns the number of unused/uninitialized descriptors. (from head to tail). | ||
| 19644 | +*/ | ||
| 19645 | + | ||
| 19646 | +static int queue_uninitialized_( appnic_queue_pointer_t head, | ||
| 19647 | + appnic_queue_pointer_t tail, | ||
| 19648 | + int size ) { | ||
| 19649 | + | ||
| 19650 | + int allocated_; | ||
| 19651 | + | ||
| 19652 | + /* calculate the number of descriptors currently unused/uninitialized */ | ||
| 19653 | + | ||
| 19654 | + if( head.bits.generation_bit == tail.bits.generation_bit ) { | ||
| 19655 | + | ||
| 19656 | + /* same generation. */ | ||
| 19657 | + allocated_ = | ||
| 19658 | + ( ( size * sizeof( appnic_dma_descriptor_t ) ) - head.bits.offset ) + | ||
| 19659 | + tail.bits.offset; | ||
| 19660 | + | ||
| 19661 | + } else { | ||
| 19662 | + | ||
| 19663 | + /* different generation. */ | ||
| 19664 | + allocated_ = tail.bits.offset - head.bits.offset; | ||
| 19665 | + | ||
| 19666 | + } | ||
| 19667 | + | ||
| 19668 | + /* number of descriptors is offset / sizeof( a descriptor ). */ | ||
| 19669 | + allocated_ /= sizeof( appnic_dma_descriptor_t ); | ||
| 19670 | + | ||
| 19671 | + /* that's all */ | ||
| 19672 | + return allocated_; | ||
| 19673 | + | ||
| 19674 | +} | ||
| 19675 | + | ||
| 19676 | +/* | ||
| 19677 | + ---------------------------------------------------------------------- | ||
| 19678 | + queue_increment_ | ||
| 19679 | +*/ | ||
| 19680 | + | ||
| 19681 | +static void queue_increment_( appnic_queue_pointer_t * queue, | ||
| 19682 | + int number_of_descriptors ) { | ||
| 19683 | + | ||
| 19684 | + queue->bits.offset += sizeof( appnic_dma_descriptor_t ); | ||
| 19685 | + | ||
| 19686 | + if( ( number_of_descriptors * sizeof( appnic_dma_descriptor_t ) ) == | ||
| 19687 | + queue->bits.offset ) { | ||
| 19688 | + | ||
| 19689 | + queue->bits.offset = 0; | ||
| 19690 | + queue->bits.generation_bit = ( 0 == queue->bits.generation_bit ) ? 1 : 0; | ||
| 19691 | + | ||
| 19692 | + } | ||
| 19693 | + | ||
| 19694 | + return; | ||
| 19695 | + | ||
| 19696 | +} | ||
| 19697 | + | ||
| 19698 | +/* | ||
| 19699 | + ---------------------------------------------------------------------- | ||
| 19700 | + queue_decrement_ | ||
| 19701 | +*/ | ||
| 19702 | + | ||
| 19703 | +static void queue_decrement_( appnic_queue_pointer_t * queue, | ||
| 19704 | + int number_of_descriptors ) { | ||
| 19705 | + | ||
| 19706 | + if( 0 == queue->bits.offset ) { | ||
| 19707 | + | ||
| 19708 | + queue->bits.offset = | ||
| 19709 | + ( ( number_of_descriptors - 1 ) * sizeof( appnic_dma_descriptor_t ) ); | ||
| 19710 | + queue->bits.generation_bit = ( 0 == queue->bits.generation_bit ) ? 1 : 0; | ||
| 19711 | + | ||
| 19712 | + } else { | ||
| 19713 | + | ||
| 19714 | + queue->bits.offset -= sizeof( appnic_dma_descriptor_t ); | ||
| 19715 | + | ||
| 19716 | + } | ||
| 19717 | + | ||
| 19718 | + return; | ||
| 19719 | + | ||
| 19720 | +} | ||
| 19721 | + | ||
| 19722 | +/* | ||
| 19723 | + ---------------------------------------------------------------------- | ||
| 19724 | + dump_packet_ | ||
| 19725 | +*/ | ||
| 19726 | + | ||
| 19727 | +#if 0 | ||
| 19728 | +static void dump_packet_( const char * title, const void * data, int length ) { | ||
| 19729 | + | ||
| 19730 | + int data_index_ = 0; | ||
| 19731 | + | ||
| 19732 | + printk( "\n--appnic--dump_packet_( %s, 0x%p, %d)\n", title, data, length ); | ||
| 19733 | + | ||
| 19734 | + while( data_index_ < ( length / 2 ) ) { | ||
| 19735 | + | ||
| 19736 | + int output_index_; | ||
| 19737 | + unsigned short * data_ = | ||
| 19738 | + & ( ( ( unsigned short * ) data ) [ data_index_ ] ); | ||
| 19739 | + | ||
| 19740 | + for( output_index_ = 0; | ||
| 19741 | + ( output_index_ < 8 ) && | ||
| 19742 | + ( ( output_index_ + data_index_ ) < length ); | ||
| 19743 | + ++ output_index_, ++ data_index_ ) { | ||
| 19744 | + | ||
| 19745 | + printk( "%04x ", | ||
| 19746 | + htons( ( ( unsigned short * ) data_ ) [ output_index_ ] ) ); | ||
| 19747 | + | ||
| 19748 | + } | ||
| 19749 | + | ||
| 19750 | + printk( "\n" ); | ||
| 19751 | + | ||
| 19752 | + } | ||
| 19753 | + | ||
| 19754 | +} | ||
| 19755 | +#endif | ||
| 19756 | + | ||
| 19757 | +/* | ||
| 19758 | + ---------------------------------------------------------------------- | ||
| 19759 | + dump_descriptor_ | ||
| 19760 | +*/ | ||
| 19761 | + | ||
| 19762 | +#if 0 | ||
| 19763 | +static void dump_descriptor_( const char * title, | ||
| 19764 | + appnic_dma_descriptor_t * descriptor ) { | ||
| 19765 | + | ||
| 19766 | + printk( "--appnic--dump_descriptor_( %s, 0x%p)\n", title, descriptor ); | ||
| 19767 | + printk( " byte_swapping_on=%d\n" \ | ||
| 19768 | + " interrupt_on_completion=%d\n" \ | ||
| 19769 | + " end_of_packet=%d\n" \ | ||
| 19770 | + " start_of_packet=%d\n" \ | ||
| 19771 | + " write=%d\n" \ | ||
| 19772 | + " transfer_type=0x%x\n" \ | ||
| 19773 | + " pdu_length=0x%x\n" \ | ||
| 19774 | + " data_transfer_length=0x%x\n" \ | ||
| 19775 | + " target_memory_address=0x%x\n" \ | ||
| 19776 | + "host_data_memory_pointer=0x%x\n", | ||
| 19777 | + ( unsigned int ) ( descriptor->byte_swapping_on ), | ||
| 19778 | + ( unsigned int ) ( descriptor->interrupt_on_completion ), | ||
| 19779 | + ( unsigned int ) ( descriptor->end_of_packet ), | ||
| 19780 | + ( unsigned int ) ( descriptor->start_of_packet ), | ||
| 19781 | + ( unsigned int ) ( descriptor->write ), | ||
| 19782 | + ( unsigned int ) ( descriptor->transfer_type ), | ||
| 19783 | + ( unsigned int ) ( descriptor->pdu_length ), | ||
| 19784 | + ( unsigned int ) ( descriptor->data_transfer_length ), | ||
| 19785 | + ( unsigned int ) ( descriptor->target_memory_address ), | ||
| 19786 | + ( unsigned int ) ( descriptor->host_data_memory_pointer ) ); | ||
| 19787 | + | ||
| 19788 | +} | ||
| 19789 | +#endif | ||
| 19790 | + | ||
| 19791 | +/* | ||
| 19792 | + ---------------------------------------------------------------------- | ||
| 19793 | + appnic_timer_handler_ | ||
| 19794 | +*/ | ||
| 19795 | + | ||
| 19796 | +#ifndef PHYLESS | ||
| 19797 | + | ||
| 19798 | +static void appnic_timer_handler_( unsigned long __opaque ) { | ||
| 19799 | + | ||
| 19800 | + struct net_device * device_ = ( struct net_device * ) __opaque; | ||
| 19801 | + | ||
| 19802 | + PHY_DEBUG_PRINT( "Handling Timer Expiration.\n" ); | ||
| 19803 | + enable_( device_ ); | ||
| 19804 | + appnic_timer_.expires = jiffies + ( APPNIC_TIMER_PERIOD * HZ ); | ||
| 19805 | + add_timer( & appnic_timer_ ); | ||
| 19806 | + | ||
| 19807 | +} | ||
| 19808 | + | ||
| 19809 | +#endif | ||
| 19810 | + | ||
| 19811 | +/* | ||
| 19812 | + ---------------------------------------------------------------------- | ||
| 19813 | + enable_ | ||
| 19814 | + | ||
| 19815 | + -- NOTES -- | ||
| 19816 | + | ||
| 19817 | + 1) Does not change the default values in the extended and | ||
| 19818 | + half-duplex configuration registers. | ||
| 19819 | +*/ | ||
| 19820 | + | ||
| 19821 | +static int enable_( struct net_device * device ) { | ||
| 19822 | + | ||
| 19823 | +#ifndef PHYLESS | ||
| 19824 | + | ||
| 19825 | + int return_code_ = 1; | ||
| 19826 | + int carrier_state_ = 0; | ||
| 19827 | + unsigned long rx_configuration_; | ||
| 19828 | + unsigned long tx_configuration_ = 0; | ||
| 19829 | + phy_status_t phy_status_; | ||
| 19830 | + | ||
| 19831 | + rx_configuration_ = | ||
| 19832 | + ( APPNIC_RX_CONF_STRIPCRC | | ||
| 19833 | + APPNIC_RX_CONF_RXFCE | | ||
| 19834 | + APPNIC_RX_CONF_TXFCE ); | ||
| 19835 | + tx_configuration_ = | ||
| 19836 | + ( APPNIC_TX_CONF_ENABLE_SWAP_SA | | ||
| 19837 | + APPNIC_TX_CONF_APP_CRC_ENABLE | | ||
| 19838 | + APPNIC_TX_CONF_PAD_ENABLE ); | ||
| 19839 | + TX_CONF_SET_IFG( tx_configuration_, 0xf ); | ||
| 19840 | + | ||
| 19841 | + DEBUG_PRINT( "Enabling the interface.\n" ); | ||
| 19842 | + | ||
| 19843 | + /* | ||
| 19844 | + Setup the receive and transmit configuration registers (using smii | ||
| 19845 | + status to set speed/duplex and check the link status). | ||
| 19846 | + */ | ||
| 19847 | + | ||
| 19848 | + if( ( 0 == phy_read_( phy_address_, PHY_STATUS, & phy_status_.raw ) ) && | ||
| 19849 | + ( 0 == phy_read_( phy_address_, PHY_STATUS, & phy_status_.raw ) ) ) { | ||
| 19850 | + | ||
| 19851 | + PHY_DEBUG_PRINT( "phy_status_.raw=0x%x\n", phy_status_.raw ); | ||
| 19852 | + | ||
| 19853 | + if( 1 == phy_status_.bits.autoneg_comp ) { | ||
| 19854 | + | ||
| 19855 | + if( 1 == phy_status_.bits.link_status ) { | ||
| 19856 | + | ||
| 19857 | + if( 1 == phy_speed_( phy_address_ ) ) { | ||
| 19858 | + | ||
| 19859 | + rx_configuration_ |= APPNIC_RX_CONF_SPEED; | ||
| 19860 | + tx_configuration_ |= APPNIC_TX_CONF_SPEED; | ||
| 19861 | + | ||
| 19862 | + } | ||
| 19863 | + | ||
| 19864 | + if( 1 == phy_duplex_( phy_address_ ) ) { | ||
| 19865 | + | ||
| 19866 | + rx_configuration_ |= APPNIC_RX_CONF_DUPLEX; | ||
| 19867 | + tx_configuration_ |= APPNIC_TX_CONF_DUPLEX; | ||
| 19868 | + | ||
| 19869 | + } | ||
| 19870 | + | ||
| 19871 | + rx_configuration_ |= | ||
| 19872 | + ( APPNIC_RX_CONF_ENABLE | APPNIC_RX_CONF_LINK ); | ||
| 19873 | + tx_configuration_ |= | ||
| 19874 | + ( APPNIC_TX_CONF_LINK | APPNIC_TX_CONF_ENABLE ); | ||
| 19875 | + return_code_ = 0; | ||
| 19876 | + carrier_state_ = 1; | ||
| 19877 | + | ||
| 19878 | + } else { | ||
| 19879 | + | ||
| 19880 | + netif_carrier_off( device ); | ||
| 19881 | + | ||
| 19882 | + } | ||
| 19883 | + | ||
| 19884 | + } else { | ||
| 19885 | + | ||
| 19886 | + netif_carrier_off( device ); | ||
| 19887 | + | ||
| 19888 | + } | ||
| 19889 | + | ||
| 19890 | + } else { | ||
| 19891 | + | ||
| 19892 | + ERROR_PRINT( "phy_read_( ) failed!\n" ); | ||
| 19893 | + | ||
| 19894 | + } | ||
| 19895 | + | ||
| 19896 | +#else /* PHYLESS */ | ||
| 19897 | + | ||
| 19898 | + int return_code_ = 1; | ||
| 19899 | + int carrier_state_ = 0; | ||
| 19900 | + unsigned long rx_configuration_; | ||
| 19901 | + unsigned long tx_configuration_ = 0; | ||
| 19902 | + | ||
| 19903 | + rx_configuration_ = APPNIC_RX_CONF_STRIPCRC; | ||
| 19904 | + tx_configuration_ = | ||
| 19905 | + ( APPNIC_TX_CONF_ENABLE_SWAP_SA | | ||
| 19906 | + APPNIC_TX_CONF_APP_CRC_ENABLE | | ||
| 19907 | + APPNIC_TX_CONF_PAD_ENABLE ); | ||
| 19908 | + TX_CONF_SET_IFG( tx_configuration_, 0xf ); | ||
| 19909 | + | ||
| 19910 | + /* | ||
| 19911 | + 100/Full | ||
| 19912 | + */ | ||
| 19913 | +#if 0 | ||
| 19914 | + rx_configuration_ |= | ||
| 19915 | + ( APPNIC_RX_CONF_ENABLE | APPNIC_RX_CONF_LINK | | ||
| 19916 | + APPNIC_RX_CONF_DUPLEX | APPNIC_RX_CONF_SPEED ); | ||
| 19917 | + tx_configuration_ |= | ||
| 19918 | + ( APPNIC_TX_CONF_ENABLE | APPNIC_TX_CONF_LINK | | ||
| 19919 | + APPNIC_TX_CONF_DUPLEX | APPNIC_TX_CONF_SPEED ); | ||
| 19920 | +#endif | ||
| 19921 | + | ||
| 19922 | + /* | ||
| 19923 | + 100/Half | ||
| 19924 | + */ | ||
| 19925 | +#if 1 | ||
| 19926 | + rx_configuration_ |= | ||
| 19927 | + ( APPNIC_RX_CONF_ENABLE | APPNIC_RX_CONF_LINK | | ||
| 19928 | + APPNIC_RX_CONF_SPEED ); | ||
| 19929 | + tx_configuration_ |= | ||
| 19930 | + ( APPNIC_TX_CONF_ENABLE | APPNIC_TX_CONF_LINK | | ||
| 19931 | + APPNIC_TX_CONF_SPEED ); | ||
| 19932 | +#endif | ||
| 19933 | + | ||
| 19934 | + /* | ||
| 19935 | + 10/Full | ||
| 19936 | + */ | ||
| 19937 | +#if 0 | ||
| 19938 | + rx_configuration_ |= | ||
| 19939 | + ( APPNIC_RX_CONF_ENABLE | APPNIC_RX_CONF_LINK | | ||
| 19940 | + APPNIC_RX_CONF_DUPLEX ); | ||
| 19941 | + tx_configuration_ |= | ||
| 19942 | + ( APPNIC_TX_CONF_ENABLE | APPNIC_TX_CONF_LINK | | ||
| 19943 | + APPNIC_TX_CONF_DUPLEX ); | ||
| 19944 | +#endif | ||
| 19945 | + | ||
| 19946 | + /* | ||
| 19947 | + 10/Half | ||
| 19948 | + */ | ||
| 19949 | +#if 0 | ||
| 19950 | + rx_configuration_ |= | ||
| 19951 | + ( APPNIC_RX_CONF_ENABLE | APPNIC_RX_CONF_LINK ); | ||
| 19952 | + tx_configuration_ |= | ||
| 19953 | + ( APPNIC_TX_CONF_ENABLE | APPNIC_TX_CONF_LINK ); | ||
| 19954 | +#endif | ||
| 19955 | + | ||
| 19956 | + return_code_ = 0; | ||
| 19957 | + carrier_state_ = 1; | ||
| 19958 | + | ||
| 19959 | +#endif /* PHYLESS */ | ||
| 19960 | + | ||
| 19961 | + if( rx_configuration_ != read_mac_( APPNIC_RX_CONF ) ) { | ||
| 19962 | + | ||
| 19963 | + write_mac_( rx_configuration_, APPNIC_RX_CONF ); | ||
| 19964 | + | ||
| 19965 | + } | ||
| 19966 | + | ||
| 19967 | + if( tx_configuration_ != read_mac_( APPNIC_TX_CONF ) ) { | ||
| 19968 | + | ||
| 19969 | + write_mac_( tx_configuration_, APPNIC_TX_CONF ); | ||
| 19970 | + | ||
| 19971 | + } | ||
| 19972 | + | ||
| 19973 | + if( 0 != carrier_state_ ) { | ||
| 19974 | + | ||
| 19975 | + netif_carrier_on( device ); | ||
| 19976 | + | ||
| 19977 | + } else { | ||
| 19978 | + | ||
| 19979 | + netif_carrier_off( device ); | ||
| 19980 | + | ||
| 19981 | + } | ||
| 19982 | + | ||
| 19983 | + return return_code_; | ||
| 19984 | + | ||
| 19985 | +} | ||
| 19986 | + | ||
| 19987 | +/* | ||
| 19988 | + ---------------------------------------------------------------------- | ||
| 19989 | + disable_ | ||
| 19990 | +*/ | ||
| 19991 | + | ||
| 19992 | +static void disable_( void ) { | ||
| 19993 | + | ||
| 19994 | + unsigned long tx_configuration_; | ||
| 19995 | + unsigned long rx_configuration_; | ||
| 19996 | + | ||
| 19997 | + DEBUG_PRINT( "Disabling the interface.\n" ); | ||
| 19998 | + | ||
| 19999 | + rx_configuration_ = read_mac_( APPNIC_RX_CONF ); | ||
| 20000 | + rx_configuration_ &= ~ APPNIC_RX_CONF_ENABLE; | ||
| 20001 | + write_mac_( rx_configuration_, APPNIC_RX_CONF ); | ||
| 20002 | + | ||
| 20003 | + tx_configuration_ = read_mac_( APPNIC_TX_CONF ); | ||
| 20004 | + tx_configuration_ &= ~ APPNIC_TX_CONF_ENABLE; | ||
| 20005 | + write_mac_( tx_configuration_, APPNIC_TX_CONF ); | ||
| 20006 | + | ||
| 20007 | + /* that's all. */ | ||
| 20008 | + return; | ||
| 20009 | + | ||
| 20010 | +} | ||
| 20011 | + | ||
| 20012 | +void disable_nic_( void ) { | ||
| 20013 | + | ||
| 20014 | + disable_( ); | ||
| 20015 | + | ||
| 20016 | +} | ||
| 20017 | + | ||
| 20018 | +/* | ||
| 20019 | + ====================================================================== | ||
| 20020 | + ====================================================================== | ||
| 20021 | + ====================================================================== | ||
| 20022 | + PHY interface (BCM5221) | ||
| 20023 | + ====================================================================== | ||
| 20024 | + ====================================================================== | ||
| 20025 | + ====================================================================== | ||
| 20026 | +*/ | ||
| 20027 | + | ||
| 20028 | +#ifndef PHYLESS | ||
| 20029 | + | ||
| 20030 | +/* | ||
| 20031 | + ---------------------------------------------------------------------- | ||
| 20032 | + phy_read_ | ||
| 20033 | + | ||
| 20034 | + Returns -1 if unsuccessful, the (short) value otherwise. | ||
| 20035 | +*/ | ||
| 20036 | + | ||
| 20037 | +static int | ||
| 20038 | +phy_read_( int phy, int reg, unsigned short * value ) | ||
| 20039 | +{ | ||
| 20040 | + return acp_mdio_read(phy, reg, value); | ||
| 20041 | +} | ||
| 20042 | + | ||
| 20043 | +/* | ||
| 20044 | + ---------------------------------------------------------------------- | ||
| 20045 | + phy_write_ | ||
| 20046 | +*/ | ||
| 20047 | + | ||
| 20048 | +static int | ||
| 20049 | +phy_write_( int phy, int reg, unsigned short value ) | ||
| 20050 | +{ | ||
| 20051 | + return acp_mdio_write(phy, reg, value); | ||
| 20052 | +} | ||
| 20053 | + | ||
| 20054 | +/* | ||
| 20055 | + ---------------------------------------------------------------------- | ||
| 20056 | + phy_link_ | ||
| 20057 | + | ||
| 20058 | + Returns the link status (1=link up, 0=link down) or an error (-1). | ||
| 20059 | +*/ | ||
| 20060 | + | ||
| 20061 | +static int | ||
| 20062 | +phy_link_( int phy ) | ||
| 20063 | +{ | ||
| 20064 | + phy_status_t status; | ||
| 20065 | + | ||
| 20066 | + phy_read_( phy, PHY_STATUS, & status.raw ); | ||
| 20067 | + phy_read_( phy, PHY_STATUS, & status.raw ); | ||
| 20068 | + | ||
| 20069 | + return status.bits.link_status; | ||
| 20070 | +} | ||
| 20071 | + | ||
| 20072 | +/* | ||
| 20073 | + ---------------------------------------------------------------------- | ||
| 20074 | + phy_speed_ | ||
| 20075 | + | ||
| 20076 | + Returns the speed (1=100, 0=10) or an error (-1). | ||
| 20077 | +*/ | ||
| 20078 | + | ||
| 20079 | +static int | ||
| 20080 | +phy_speed_( int phy ) | ||
| 20081 | +{ | ||
| 20082 | + micrel_phy_auxiliary_control_status_t aux; | ||
| 20083 | + | ||
| 20084 | + phy_read_( phy, MICREL_PHY_AUXILIARY_CONTROL_STATUS, & aux.raw ); | ||
| 20085 | + switch( ( aux.bits.op_mode_indication & 3 ) ) { | ||
| 20086 | + case 2: return 1; break; | ||
| 20087 | + case 1: return 0; break; | ||
| 20088 | + default: break; | ||
| 20089 | + } | ||
| 20090 | + | ||
| 20091 | + return -1; | ||
| 20092 | +} | ||
| 20093 | + | ||
| 20094 | +/* | ||
| 20095 | + ---------------------------------------------------------------------- | ||
| 20096 | + phy_duplex_ | ||
| 20097 | + | ||
| 20098 | + Returns duplex status (1=full duplex, 0=half duplex) or an error (-1). | ||
| 20099 | +*/ | ||
| 20100 | + | ||
| 20101 | +static int | ||
| 20102 | +phy_duplex_( int phy ) | ||
| 20103 | +{ | ||
| 20104 | + micrel_phy_auxiliary_control_status_t aux; | ||
| 20105 | + | ||
| 20106 | + phy_read_( phy, MICREL_PHY_AUXILIARY_CONTROL_STATUS, & aux.raw ); | ||
| 20107 | + | ||
| 20108 | + return ( ( aux.bits.op_mode_indication >> 2 ) & 0x1 ); | ||
| 20109 | +} | ||
| 20110 | + | ||
| 20111 | +/* | ||
| 20112 | + ---------------------------------------------------------------------- | ||
| 20113 | + phy_reset_ | ||
| 20114 | +*/ | ||
| 20115 | + | ||
| 20116 | +static int | ||
| 20117 | +phy_reset_( int phy ) | ||
| 20118 | +{ | ||
| 20119 | + phy_control_t control; | ||
| 20120 | + int retries = 10; | ||
| 20121 | + | ||
| 20122 | + phy_read_( phy, PHY_CONTROL, & control.raw ); | ||
| 20123 | + control.bits.soft_reset = 1; | ||
| 20124 | + phy_write_( phy, PHY_CONTROL, control.raw ); | ||
| 20125 | + | ||
| 20126 | + do { | ||
| 20127 | + phy_read_( phy, PHY_CONTROL, & control.raw ); | ||
| 20128 | + -- retries; | ||
| 20129 | + } while( ( 0 < retries ) && ( 0 != control.bits.soft_reset ) ); | ||
| 20130 | + | ||
| 20131 | + if( 0 != control.bits.soft_reset ) { | ||
| 20132 | + printk( "phy_reset( %d ) failed.\n", phy ); | ||
| 20133 | + return -1; | ||
| 20134 | + } | ||
| 20135 | + | ||
| 20136 | + return 0; | ||
| 20137 | +} | ||
| 20138 | + | ||
| 20139 | +/* | ||
| 20140 | + ---------------------------------------------------------------------- | ||
| 20141 | + phy_renegotiate_ | ||
| 20142 | +*/ | ||
| 20143 | + | ||
| 20144 | +static int | ||
| 20145 | +phy_renegotiate_( int phy ) | ||
| 20146 | +{ | ||
| 20147 | + phy_control_t control; | ||
| 20148 | + phy_status_t status; | ||
| 20149 | + int autoneg_retries = 4; | ||
| 20150 | + int autoneg_complete_retries = 8; | ||
| 20151 | + | ||
| 20152 | + printk( "Initiating Auto Negotiation" ); | ||
| 20153 | + phy_write_( phy, PHY_AUTONEG_ADVERTISE, 0x61 ); | ||
| 20154 | + | ||
| 20155 | + do { | ||
| 20156 | + phy_read_( phy, PHY_CONTROL, & control.raw ); | ||
| 20157 | + control.bits.restart_autoneg = 1; | ||
| 20158 | + phy_write_( phy, PHY_CONTROL, control.raw ); | ||
| 20159 | + | ||
| 20160 | + do { | ||
| 20161 | + udelay( 500000 ); | ||
| 20162 | + phy_read_( phy, PHY_STATUS, & status.raw ); | ||
| 20163 | + } while( ( 0 < -- autoneg_complete_retries ) && | ||
| 20164 | + ( 0 == status.bits.autoneg_comp ) ); | ||
| 20165 | + | ||
| 20166 | + if( 0 != status.bits.autoneg_comp ) { | ||
| 20167 | + break; | ||
| 20168 | + } | ||
| 20169 | + | ||
| 20170 | + printk( "." ); | ||
| 20171 | + } while( 0 < -- autoneg_retries ); | ||
| 20172 | + | ||
| 20173 | + printk( "\n" ); | ||
| 20174 | + | ||
| 20175 | + if( 0 == status.bits.autoneg_comp ) { | ||
| 20176 | + printk( "Auto Negotiation Failed\n" ); | ||
| 20177 | + return -1; | ||
| 20178 | + } | ||
| 20179 | + | ||
| 20180 | + printk( "Auto Negotiation Succeeded\n" ); | ||
| 20181 | + return 0; | ||
| 20182 | +} | ||
| 20183 | + | ||
| 20184 | +/* | ||
| 20185 | + ---------------------------------------------------------------------- | ||
| 20186 | + phy_enable_ | ||
| 20187 | +*/ | ||
| 20188 | + | ||
| 20189 | +extern int ubootenv_get( const char *, char * ); | ||
| 20190 | + | ||
| 20191 | +static int phy_enable_( int phy ) { | ||
| 20192 | + | ||
| 20193 | +#ifdef CONFIG_ACP | ||
| 20194 | + phy_address_ = 0x1e; | ||
| 20195 | + phy_renegotiate_( phy_address_ ); | ||
| 20196 | +#else | ||
| 20197 | + /* | ||
| 20198 | + Set up the MDIO clock. | ||
| 20199 | + */ | ||
| 20200 | + | ||
| 20201 | + { | ||
| 20202 | + | ||
| 20203 | + char mdio_clock_speed_string_ [ 256 ]; | ||
| 20204 | + unsigned long mdio_clock_speed_; | ||
| 20205 | + unsigned long mdio_divisor_; | ||
| 20206 | + | ||
| 20207 | + if( 0 != ubootenv_get( "mdio_clock", mdio_clock_speed_string_ ) ) { | ||
| 20208 | + | ||
| 20209 | + mdio_clock_speed_ = 1250000; | ||
| 20210 | + | ||
| 20211 | + } else { | ||
| 20212 | + | ||
| 20213 | + mdio_clock_speed_ = simple_strtoul( mdio_clock_speed_string_, NULL, 0 ); | ||
| 20214 | + | ||
| 20215 | + } | ||
| 20216 | + | ||
| 20217 | +#ifdef CONFIG_ARCH_APP3K | ||
| 20218 | + mdio_divisor_ = | ||
| 20219 | + ( ( get_core_speed( ) / 2 ) / mdio_clock_speed_ ); | ||
| 20220 | +#else | ||
| 20221 | + mdio_divisor_ = ( get_core_speed( ) / mdio_clock_speed_ ); | ||
| 20222 | +#endif | ||
| 20223 | + | ||
| 20224 | + printk( "Setting the MDIO clock to %lu Hz (divisor=%lu)\n", | ||
| 20225 | + mdio_clock_speed_, mdio_divisor_ ); | ||
| 20226 | + writel( mdio_divisor_, MDIO_CLK_ ); | ||
| 20227 | + | ||
| 20228 | + } | ||
| 20229 | + | ||
| 20230 | + /* | ||
| 20231 | + Get the PHY address. | ||
| 20232 | + */ | ||
| 20233 | + | ||
| 20234 | + { | ||
| 20235 | + | ||
| 20236 | + char phy_address_string_ [ 256 ]; | ||
| 20237 | + | ||
| 20238 | + if( 0 != ubootenv_get( "phy_address", phy_address_string_ ) ) { | ||
| 20239 | + | ||
| 20240 | + phy_address_ = phy_scan_( ); | ||
| 20241 | + | ||
| 20242 | + } else { | ||
| 20243 | + | ||
| 20244 | + phy_address_ = simple_strtoul( phy_address_string_, NULL, 0 ); | ||
| 20245 | + | ||
| 20246 | + } | ||
| 20247 | + | ||
| 20248 | + if( 31 < phy_address_ || 0 > phy_address_ ) { | ||
| 20249 | + | ||
| 20250 | + ERROR_PRINT( "Unable to get valid PHY address!\n" ); | ||
| 20251 | + return -EBUSY; | ||
| 20252 | + | ||
| 20253 | + } | ||
| 20254 | + | ||
| 20255 | + } | ||
| 20256 | + | ||
| 20257 | + /* | ||
| 20258 | + Get PHY type. | ||
| 20259 | + */ | ||
| 20260 | + | ||
| 20261 | + { | ||
| 20262 | + | ||
| 20263 | + phy_id_high_t phy_id_high_; | ||
| 20264 | + phy_id_low_t phy_id_low_; | ||
| 20265 | + | ||
| 20266 | + if( 0 != phy_read_( phy_address_, PHY_ID_HIGH_, & phy_id_high_.raw ) ) { | ||
| 20267 | + | ||
| 20268 | + TRACE_ENDING( ); | ||
| 20269 | + return -1; | ||
| 20270 | + | ||
| 20271 | + } | ||
| 20272 | + | ||
| 20273 | + if( 0 != phy_read_( phy_address_, PHY_ID_LOW_, & phy_id_low_.raw ) ) { | ||
| 20274 | + | ||
| 20275 | + TRACE_ENDING( ); | ||
| 20276 | + return -1; | ||
| 20277 | + | ||
| 20278 | + } | ||
| 20279 | + | ||
| 20280 | + if( ( PHY_ID_HIGH_ID == phy_id_high_.bits.id ) && | ||
| 20281 | + ( BC_PHY_ID_LOW_ID_ == phy_id_low_.bits.id ) && | ||
| 20282 | + ( BC_PHY_ID_LOW_MODEL_ == phy_id_low_.bits.model ) ) { | ||
| 20283 | + | ||
| 20284 | + phy_type_ = BCM5221_PHY_; | ||
| 20285 | + printk( "Broadcomm 5221 PHY at 0x%x\n", phy_address_ ); | ||
| 20286 | + | ||
| 20287 | + } else if( ( M_PHY_ID_HIGH_ID_ == phy_id_high_.bits.id ) && | ||
| 20288 | + ( M_PHY_ID_LOW_ID_ == phy_id_low_.bits.id ) ) { | ||
| 20289 | + | ||
| 20290 | + phy_type_ = MICREL_PHY_; | ||
| 20291 | + printk( "Micrel PHY at 0x%x, Model 0x%x\n", | ||
| 20292 | + phy_address_, phy_id_low_.bits.model ); | ||
| 20293 | + | ||
| 20294 | + } else { | ||
| 20295 | + | ||
| 20296 | + phy_type_ = UNKNOWN_PHY_; | ||
| 20297 | + printk( "Unknown PHY at 0x%x. 0x%x 0x%x 0x%x\n", | ||
| 20298 | + phy_address_, phy_id_high_.bits.id, phy_id_low_.bits.id, | ||
| 20299 | + phy_id_low_.bits.model ); | ||
| 20300 | + | ||
| 20301 | + } | ||
| 20302 | + | ||
| 20303 | + } | ||
| 20304 | + | ||
| 20305 | + if( -1 != phy_address_ ) { | ||
| 20306 | + | ||
| 20307 | + int link_status_retries_ = 10; | ||
| 20308 | + phy_status_t phy_status_; | ||
| 20309 | + char ad_value_string_ [ 40 ]; | ||
| 20310 | + unsigned short ad_value_; | ||
| 20311 | + | ||
| 20312 | + DEBUG_PRINT( "Initializing PHY at 0x%x\n", phy_address_ ); | ||
| 20313 | + | ||
| 20314 | + if( 0 != phy_reset_( phy_address_ ) ) { | ||
| 20315 | + | ||
| 20316 | + return -1; | ||
| 20317 | + | ||
| 20318 | + } | ||
| 20319 | + | ||
| 20320 | + /* | ||
| 20321 | + 0x1e1 - 10/100 half/full | ||
| 20322 | + 0xe1 - 100 half, 10 half/full | ||
| 20323 | + 0x61 - 10 half/full | ||
| 20324 | + 0x41 - 10 half | ||
| 20325 | + */ | ||
| 20326 | + | ||
| 20327 | + if( 0 != ubootenv_get( "ad_value", ad_value_string_ ) ) { | ||
| 20328 | + | ||
| 20329 | + if( ( is_asic ) && | ||
| 20330 | + ( 0 == ( APP3XX_REVISION_REGISTER & 0x1f ) ) ) { | ||
| 20331 | + | ||
| 20332 | + /* 10M does not work on ASIC v1.0 */ | ||
| 20333 | + ad_value_ = 0x0181; | ||
| 20334 | + | ||
| 20335 | + } else { | ||
| 20336 | + | ||
| 20337 | + /* For FGPA loads and any ASIC after v1.0, default to 10 full/half */ | ||
| 20338 | + ad_value_ = 0x061; | ||
| 20339 | + | ||
| 20340 | + } | ||
| 20341 | + | ||
| 20342 | + WARN_PRINT( "ad_value not set, using 0x%x\n", ad_value_ ); | ||
| 20343 | + | ||
| 20344 | + } else { | ||
| 20345 | + | ||
| 20346 | + ad_value_ = simple_strtoul( ad_value_string_, NULL, 0 ); | ||
| 20347 | + | ||
| 20348 | + } | ||
| 20349 | + | ||
| 20350 | + if( 0 != phy_write_( phy_address_, PHY_AUTONEG_ADVERTISE_, | ||
| 20351 | + ad_value_ ) ) { | ||
| 20352 | + | ||
| 20353 | + TRACE_ENDING( ); | ||
| 20354 | + return -1; | ||
| 20355 | + | ||
| 20356 | + } | ||
| 20357 | + | ||
| 20358 | + if( 0 != phy_renegotiate_( phy_address_ ) ) { | ||
| 20359 | + | ||
| 20360 | + WARN_PRINT( "PHY: Auto Negotiation Failed.\n" ); | ||
| 20361 | + | ||
| 20362 | + } | ||
| 20363 | + | ||
| 20364 | + do { | ||
| 20365 | + | ||
| 20366 | + if( 0 != phy_read_( phy_address_, PHY_STATUS, & phy_status_.raw ) ) { | ||
| 20367 | + | ||
| 20368 | + return -1; | ||
| 20369 | + | ||
| 20370 | + } | ||
| 20371 | + | ||
| 20372 | + mdelay( 10 ); | ||
| 20373 | + -- link_status_retries_; | ||
| 20374 | + | ||
| 20375 | + } while( ( 0 == phy_status_.bits.link_status ) && | ||
| 20376 | + ( 0 < link_status_retries_ ) ); | ||
| 20377 | + | ||
| 20378 | + if( 0 == phy_status_.bits.link_status ) { | ||
| 20379 | + | ||
| 20380 | + WARN_PRINT( "PHY: link down\n" ); | ||
| 20381 | + | ||
| 20382 | + } else { | ||
| 20383 | + | ||
| 20384 | + printk( "PHY: link=%s speed=%d Mbs duplex=%s\n", | ||
| 20385 | + ( 1 == phy_link_( phy_address_ ) ) ? "up" : "down", | ||
| 20386 | + ( 1 == phy_speed_( phy_address_ ) ) ? 100 : 10, | ||
| 20387 | + ( 1 == phy_duplex_( phy_address_ ) ) ? "full" : "half" ); | ||
| 20388 | + | ||
| 20389 | + } | ||
| 20390 | + | ||
| 20391 | + } | ||
| 20392 | + | ||
| 20393 | +#endif | ||
| 20394 | + | ||
| 20395 | + /* | ||
| 20396 | + That's all | ||
| 20397 | + */ | ||
| 20398 | + | ||
| 20399 | + return 0; | ||
| 20400 | + | ||
| 20401 | +} | ||
| 20402 | + | ||
| 20403 | +#endif /* PHYLESS */ | ||
| 20404 | + | ||
| 20405 | +/* | ||
| 20406 | + ====================================================================== | ||
| 20407 | + ====================================================================== | ||
| 20408 | + ====================================================================== | ||
| 20409 | + | ||
| 20410 | + Linux Network Driver Interface | ||
| 20411 | + | ||
| 20412 | + ====================================================================== | ||
| 20413 | + ====================================================================== | ||
| 20414 | + ====================================================================== | ||
| 20415 | +*/ | ||
| 20416 | + | ||
| 20417 | +/* | ||
| 20418 | + ---------------------------------------------------------------------- | ||
| 20419 | + handle_transmit_interrupt_ | ||
| 20420 | +*/ | ||
| 20421 | + | ||
| 20422 | +static void handle_transmit_interrupt_( struct net_device * device ) { | ||
| 20423 | + | ||
| 20424 | + appnic_device_t * dev_ = netdev_priv( device ); | ||
| 20425 | + | ||
| 20426 | + TRACE_BEGINNING( ); | ||
| 20427 | + DEBUG_PRINT( "tail=0x%lx tail_copy=0x%lx head=0x%lx\n", | ||
| 20428 | + dev_->tx_tail->raw, dev_->tx_tail_copy.raw, | ||
| 20429 | + dev_->tx_head.raw ); | ||
| 20430 | + | ||
| 20431 | + /* | ||
| 20432 | + The hardware's tail pointer should be one descriptor (or more) | ||
| 20433 | + ahead of software's copy. | ||
| 20434 | + */ | ||
| 20435 | + | ||
| 20436 | + while( 0 < queue_initialized_( SWAB_QUEUE_POINTER( dev_->tx_tail ), | ||
| 20437 | + dev_->tx_tail_copy, dev_->tx_num_desc ) ) { | ||
| 20438 | + queue_increment_( & dev_->tx_tail_copy, dev_->tx_num_desc ); | ||
| 20439 | + } | ||
| 20440 | + | ||
| 20441 | + DEBUG_PRINT( "tail=0x%lx tail_copy=0x%lx head=0x%lx\n", | ||
| 20442 | + dev_->tx_tail->raw, dev_->tx_tail_copy.raw, | ||
| 20443 | + dev_->tx_head.raw ); | ||
| 20444 | + TRACE_ENDING( ); | ||
| 20445 | + | ||
| 20446 | + return; | ||
| 20447 | + | ||
| 20448 | +} | ||
| 20449 | + | ||
| 20450 | +static DEFINE_MUTEX( rpm ); | ||
| 20451 | + | ||
| 20452 | +/* | ||
| 20453 | + ---------------------------------------------------------------------- | ||
| 20454 | + lsinet_rx_packet | ||
| 20455 | +*/ | ||
| 20456 | + | ||
| 20457 | +static void | ||
| 20458 | +lsinet_rx_packet( struct net_device * device ) | ||
| 20459 | +{ | ||
| 20460 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 20461 | + appnic_dma_descriptor_t descriptor; | ||
| 20462 | + struct sk_buff * sk_buff_; | ||
| 20463 | + | ||
| 20464 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20465 | + unsigned long ts0_ = 0; | ||
| 20466 | + unsigned long ts1_ = 0; | ||
| 20467 | + unsigned long ts2_ = 0; | ||
| 20468 | + unsigned long ts3_ = 0; | ||
| 20469 | + int sent_up = 0; | ||
| 20470 | + ts0_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20471 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20472 | + | ||
| 20473 | + /* TEMP HACK: | ||
| 20474 | + * should use down_interruptible | ||
| 20475 | + */ | ||
| 20476 | + spin_lock( & adapter->extra_lock ); | ||
| 20477 | + TRACE_BEGINNING( ); | ||
| 20478 | + DEBUG_PRINT( "head=0x%lx tail=0x%lx tail_copy=0x%lx\n", | ||
| 20479 | + adapter->rx_head.raw, adapter->rx_tail->raw, | ||
| 20480 | + adapter->rx_tail_copy.raw ); | ||
| 20481 | + readdescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20482 | + adapter->rx_tail_copy.bits.offset ), & descriptor ); | ||
| 20483 | + | ||
| 20484 | + if( ( struct sk_buff * ) 0 != ( sk_buff_ = dev_alloc_skb( 1600 ) ) ) { | ||
| 20485 | + unsigned bytes_copied_ = 0; | ||
| 20486 | + unsigned error_ = 0; | ||
| 20487 | + int return_code_; | ||
| 20488 | + unsigned long ok_, overflow_, crc_, align_; | ||
| 20489 | + | ||
| 20490 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20491 | + ts1_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20492 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20493 | + | ||
| 20494 | + ok_ = read_mac_( APPNIC_RX_STAT_PACKET_OK ); | ||
| 20495 | + overflow_ = read_mac_( APPNIC_RX_STAT_OVERFLOW ); | ||
| 20496 | + crc_ = read_mac_( APPNIC_RX_STAT_CRC_ERROR ); | ||
| 20497 | + align_ = read_mac_( APPNIC_RX_STAT_ALIGN_ERROR ); | ||
| 20498 | + | ||
| 20499 | + /* | ||
| 20500 | + Copy the received packet into the skb. | ||
| 20501 | + */ | ||
| 20502 | + | ||
| 20503 | + while( 0 < queue_initialized_( SWAB_QUEUE_POINTER( adapter->rx_tail ), | ||
| 20504 | + adapter->rx_tail_copy, adapter->rx_num_desc ) ) { | ||
| 20505 | + /*TRACER_POST( "tail_copy=0x%x", adapter->rx_tail_copy.raw );*/ | ||
| 20506 | +#ifdef PRELOAD_RX_BUFFERS | ||
| 20507 | + { | ||
| 20508 | + unsigned char * buffer_; | ||
| 20509 | + buffer_ = skb_put( sk_buff_, descriptor.pdu_length ); | ||
| 20510 | + memcmp( buffer_, buffer_, descriptor.pdu_length ); | ||
| 20511 | + memcpy( ( void * ) buffer_, | ||
| 20512 | + ( void * ) ( descriptor.host_data_memory_pointer + | ||
| 20513 | + adapter->dma_alloc_offset ), | ||
| 20514 | + descriptor.pdu_length ); | ||
| 20515 | + } | ||
| 20516 | +#else /* PRELOAD_RX_BUFFERS */ | ||
| 20517 | + memcpy( ( void * ) skb_put( sk_buff_, descriptor.pdu_length ), | ||
| 20518 | + ( void * ) ( descriptor.host_data_memory_pointer + | ||
| 20519 | + adapter->dma_alloc_offset ), | ||
| 20520 | + descriptor.pdu_length ); | ||
| 20521 | +#endif /* PRELOAD_RX_BUFFERS */ | ||
| 20522 | + bytes_copied_ += descriptor.pdu_length; | ||
| 20523 | + descriptor.data_transfer_length = adapter->rx_buf_per_desc; | ||
| 20524 | + writedescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20525 | + adapter->rx_tail_copy.bits.offset ), & descriptor ); | ||
| 20526 | + if( 0 != descriptor.error ) { error_ = 1; } | ||
| 20527 | + queue_increment_( & adapter->rx_tail_copy, adapter->rx_num_desc ); | ||
| 20528 | + if( 0 != descriptor.end_of_packet ) { break; } | ||
| 20529 | + readdescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20530 | + adapter->rx_tail_copy.bits.offset ), & descriptor ); | ||
| 20531 | + } | ||
| 20532 | + | ||
| 20533 | + if( 0 == descriptor.end_of_packet ) { | ||
| 20534 | + | ||
| 20535 | + ERROR_PRINT( "No end of packet! %lu/%lu/%lu/%lu\n", | ||
| 20536 | + ok_, overflow_, crc_, align_ ); | ||
| 20537 | + BUG( ); | ||
| 20538 | + dev_kfree_skb( sk_buff_ ); | ||
| 20539 | + | ||
| 20540 | + } else { | ||
| 20541 | + | ||
| 20542 | + if( 0 == error_ ) { | ||
| 20543 | + | ||
| 20544 | + struct ethhdr * ethhdr_ = ( struct ethhdr * ) sk_buff_->data; | ||
| 20545 | + unsigned char broadcast_ [ ] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; | ||
| 20546 | + unsigned char multicast_ [ ] = { 0x01, 0x00 }; | ||
| 20547 | + | ||
| 20548 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_GOOD ); | ||
| 20549 | + | ||
| 20550 | + if( ( 0 == memcmp( ( const void * ) & ( ethhdr_->h_dest [ 0 ] ), | ||
| 20551 | + ( const void * ) & ( device->dev_addr [ 0 ] ), | ||
| 20552 | + sizeof( ethhdr_->h_dest ) ) ) || | ||
| 20553 | + ( 0 == memcmp( ( const void * ) & ( ethhdr_->h_dest [ 0 ] ), | ||
| 20554 | + ( const void * ) & ( broadcast_ [ 0 ] ), | ||
| 20555 | + sizeof( ethhdr_->h_dest ) ) ) || | ||
| 20556 | + ( 0 == memcmp( ( const void * ) & (ethhdr_->h_dest [ 0 ] ), | ||
| 20557 | + ( const void * ) & ( multicast_ [ 0 ] ), | ||
| 20558 | + sizeof( multicast_ ) ) ) ) { | ||
| 20559 | + | ||
| 20560 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20561 | + if( bytes_copied_ > rx_packet_size_max_ ) { | ||
| 20562 | + rx_packet_size_max_ = bytes_copied_; | ||
| 20563 | + } else if( bytes_copied_ < rx_packet_size_min_ ) { | ||
| 20564 | + rx_packet_size_min_ = bytes_copied_; | ||
| 20565 | + } | ||
| 20566 | + total_rx_bytes_ += bytes_copied_; | ||
| 20567 | + | ||
| 20568 | + total_rx_packets_sent_up_++; | ||
| 20569 | + sent_up = 1; | ||
| 20570 | + | ||
| 20571 | + ts2_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20572 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20573 | + | ||
| 20574 | + adapter->stats.rx_bytes += bytes_copied_; | ||
| 20575 | + ++ adapter->stats.rx_packets; | ||
| 20576 | + sk_buff_->dev = device; | ||
| 20577 | + sk_buff_->protocol = eth_type_trans( sk_buff_, device ); | ||
| 20578 | +#ifdef LSINET_NAPI | ||
| 20579 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_SENT ); | ||
| 20580 | + return_code_ = netif_receive_skb( sk_buff_ ); | ||
| 20581 | +#else | ||
| 20582 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_SENT ); | ||
| 20583 | + return_code_ = netif_rx( sk_buff_ ); | ||
| 20584 | +#endif | ||
| 20585 | + | ||
| 20586 | + if( NET_RX_DROP == return_code_ ) { | ||
| 20587 | + | ||
| 20588 | + ++ dropped_by_stack_; | ||
| 20589 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_DRPD ); | ||
| 20590 | +#if 0 | ||
| 20591 | + ERROR_PRINT( "Packet dropped by stack: 0x%x!\n", return_code_ ); | ||
| 20592 | + { | ||
| 20593 | + unsigned long * packet = ( unsigned long * ) sk_buff_->data; | ||
| 20594 | + int data_index_ = 0; | ||
| 20595 | + static int bug = 10; | ||
| 20596 | + | ||
| 20597 | + printk( "\n---------- Dropped Packet\n" ); | ||
| 20598 | + printk( "Head:0x%lx Tail:0x%lx Tail Copy:0x%x\n", | ||
| 20599 | + adapter->rx_head.raw, adapter->rx_tail->raw, | ||
| 20600 | + read_mac_( APPNIC_DMA_RX_TAIL_POINTER_LOCAL_COPY ) ); | ||
| 20601 | + printk( "Address:0x%lx Length:0x%x\n", | ||
| 20602 | + ( unsigned long ) packet, bytes_copied_ ); | ||
| 20603 | + | ||
| 20604 | + while( data_index_ < ( bytes_copied_ / 2 ) ) { | ||
| 20605 | + | ||
| 20606 | + int output_index_; | ||
| 20607 | + unsigned short * data_ = | ||
| 20608 | + & ( ( ( unsigned short * ) packet ) [ data_index_ ] ); | ||
| 20609 | + | ||
| 20610 | + for( output_index_ = 0; | ||
| 20611 | + ( output_index_ < 8 ) && ( data_index_ < bytes_copied_ ); | ||
| 20612 | + ++ output_index_, ++ data_index_ ) { | ||
| 20613 | + | ||
| 20614 | + printk( "%04x ", htons( data_ [ output_index_ ] ) ); | ||
| 20615 | + | ||
| 20616 | + } | ||
| 20617 | + | ||
| 20618 | + printk( "\n" ); | ||
| 20619 | + | ||
| 20620 | + } | ||
| 20621 | + | ||
| 20622 | + if( 0 == -- bug ) BUG( ); | ||
| 20623 | + | ||
| 20624 | + } | ||
| 20625 | +#endif | ||
| 20626 | + } | ||
| 20627 | + | ||
| 20628 | + } else { | ||
| 20629 | + | ||
| 20630 | + dev_kfree_skb( sk_buff_ ); | ||
| 20631 | + | ||
| 20632 | + } | ||
| 20633 | + | ||
| 20634 | + } else { | ||
| 20635 | + | ||
| 20636 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_ERR ); | ||
| 20637 | + | ||
| 20638 | + dev_kfree_skb( sk_buff_ ); | ||
| 20639 | + | ||
| 20640 | + if( 0 != overflow_ ) { | ||
| 20641 | + | ||
| 20642 | + ++ adapter->stats.rx_fifo_errors; | ||
| 20643 | + | ||
| 20644 | + } else if( 0 != crc_ ) { | ||
| 20645 | + | ||
| 20646 | + ++ adapter->stats.rx_crc_errors; | ||
| 20647 | + | ||
| 20648 | + } else if( 0 != align_ ) { | ||
| 20649 | + | ||
| 20650 | + ++ adapter->stats.rx_frame_errors; | ||
| 20651 | + | ||
| 20652 | + } | ||
| 20653 | + | ||
| 20654 | + } | ||
| 20655 | + | ||
| 20656 | + } | ||
| 20657 | + | ||
| 20658 | + } else { | ||
| 20659 | + | ||
| 20660 | + ERROR_PRINT( "dev_alloc_skb( ) failed! Dropping packet.\n" ); | ||
| 20661 | + | ||
| 20662 | + } | ||
| 20663 | + | ||
| 20664 | + DEBUG_PRINT( "head=0x%lx tail=0x%lx tail_copy=0x%lx\n", | ||
| 20665 | + adapter->rx_head.raw, adapter->rx_tail->raw, | ||
| 20666 | + adapter->rx_tail_copy.raw ); | ||
| 20667 | + TRACE_ENDING( ); | ||
| 20668 | + | ||
| 20669 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20670 | + | ||
| 20671 | + app3xx_profile_time_calc(ts0_, ts1_, | ||
| 20672 | + recv_t1_min_, recv_t1_max_, recv_t1_tot_); | ||
| 20673 | + /* | ||
| 20674 | + * only calculate stats for packets that were sent up to the stack | ||
| 20675 | + */ | ||
| 20676 | + if (sent_up) { | ||
| 20677 | + ts3_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20678 | + | ||
| 20679 | + app3xx_profile_time_calc(ts1_, ts2_, | ||
| 20680 | + recv_t2_min_, recv_t2_max_, recv_t2_tot_); | ||
| 20681 | + app3xx_profile_time_calc(ts2_, ts3_, | ||
| 20682 | + recv_t3_min_, recv_t3_max_, recv_t3_tot_); | ||
| 20683 | + } | ||
| 20684 | + | ||
| 20685 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20686 | + | ||
| 20687 | + /* TEMP */ | ||
| 20688 | + spin_unlock( & adapter->extra_lock ); | ||
| 20689 | + /* that's all */ | ||
| 20690 | + return; | ||
| 20691 | + | ||
| 20692 | +} | ||
| 20693 | + | ||
| 20694 | +/* | ||
| 20695 | + =============================================================================== | ||
| 20696 | + lsinet_rx_packets | ||
| 20697 | +*/ | ||
| 20698 | + | ||
| 20699 | +static int | ||
| 20700 | +lsinet_rx_packets( struct net_device * device, int max ) | ||
| 20701 | +{ | ||
| 20702 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 20703 | + appnic_queue_pointer_t queue; | ||
| 20704 | + int updated_head_pointer = 0; | ||
| 20705 | + int packets = 0; | ||
| 20706 | + | ||
| 20707 | + queue.raw = adapter->rx_tail_copy.raw; | ||
| 20708 | + | ||
| 20709 | + /* Receive Packets */ | ||
| 20710 | + | ||
| 20711 | + while( 0 < queue_initialized_( SWAB_QUEUE_POINTER( adapter->rx_tail ), | ||
| 20712 | + queue, adapter->rx_num_desc ) ) { | ||
| 20713 | + appnic_dma_descriptor_t descriptor; | ||
| 20714 | + | ||
| 20715 | + readdescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20716 | + queue.bits.offset ), | ||
| 20717 | + & descriptor ); | ||
| 20718 | + | ||
| 20719 | + if( 0 != descriptor.end_of_packet ) { | ||
| 20720 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20721 | + ++ packets_handled_; | ||
| 20722 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20723 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_PKT ); | ||
| 20724 | + lsinet_rx_packet( device ); | ||
| 20725 | + ++ packets; | ||
| 20726 | + queue.raw = adapter->rx_tail_copy.raw; | ||
| 20727 | + | ||
| 20728 | + if( -1 != max ) { | ||
| 20729 | + if( packets == max ) { | ||
| 20730 | + break; | ||
| 20731 | + } | ||
| 20732 | + } | ||
| 20733 | + } else { | ||
| 20734 | + queue_increment_( & queue, adapter->rx_num_desc ); | ||
| 20735 | + } | ||
| 20736 | + } | ||
| 20737 | + | ||
| 20738 | + /* Update the Head Pointer */ | ||
| 20739 | + | ||
| 20740 | + while( 1 < queue_uninitialized_( adapter->rx_head, adapter->rx_tail_copy, | ||
| 20741 | + adapter->rx_num_desc ) ) { | ||
| 20742 | + | ||
| 20743 | + appnic_dma_descriptor_t descriptor; | ||
| 20744 | + | ||
| 20745 | + readdescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20746 | + adapter->rx_head.bits.offset ), & descriptor ); | ||
| 20747 | + descriptor.data_transfer_length = adapter->rx_buf_per_desc; | ||
| 20748 | + descriptor.write = 1; | ||
| 20749 | + descriptor.pdu_length = 0; | ||
| 20750 | + descriptor.start_of_packet = 0; | ||
| 20751 | + descriptor.end_of_packet = 0; | ||
| 20752 | + descriptor.interrupt_on_completion = 1; | ||
| 20753 | + writedescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 20754 | + adapter->rx_head.bits.offset ), | ||
| 20755 | + & descriptor ); | ||
| 20756 | + queue_increment_( & adapter->rx_head, adapter->rx_num_desc ); | ||
| 20757 | + updated_head_pointer = 1; | ||
| 20758 | + } | ||
| 20759 | + | ||
| 20760 | + if( 0 != updated_head_pointer ) { | ||
| 20761 | + write_mac_( adapter->rx_head.raw, APPNIC_DMA_RX_HEAD_POINTER ); | ||
| 20762 | + } | ||
| 20763 | + | ||
| 20764 | + return packets; | ||
| 20765 | +} | ||
| 20766 | + | ||
| 20767 | +#ifdef LSINET_NAPI | ||
| 20768 | + | ||
| 20769 | +/* | ||
| 20770 | + =============================================================================== | ||
| 20771 | + lsinet_poll | ||
| 20772 | +*/ | ||
| 20773 | + | ||
| 20774 | +static int | ||
| 20775 | +lsinet_poll( struct napi_struct * napi, int budget ) | ||
| 20776 | +{ | ||
| 20777 | + appnic_device_t * adapter = container_of( napi, appnic_device_t, napi ); | ||
| 20778 | + struct net_device * device = adapter->device; | ||
| 20779 | + appnic_queue_pointer_t queue_; | ||
| 20780 | + | ||
| 20781 | + int cur_budget = budget; | ||
| 20782 | + int done; | ||
| 20783 | + unsigned long dma_interrupt_status_; | ||
| 20784 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20785 | + unsigned long packets_handled_ = 0; | ||
| 20786 | + unsigned long beginning_; | ||
| 20787 | + unsigned long end_; | ||
| 20788 | + | ||
| 20789 | + beginning_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20790 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20791 | + | ||
| 20792 | + LSINET_COUNTS_INC( LSINET_COUNTS_POL_START ); | ||
| 20793 | + /* TEMP DEBUG: should be interruptible */ | ||
| 20794 | + /*down( & adapter->poll_sem);*/ | ||
| 20795 | + | ||
| 20796 | + TRACE_BEGINNING( ); | ||
| 20797 | + DEBUG_PRINT( "head=0x%x tail=0x%x tail_copy=0x%x\n", | ||
| 20798 | + adapter->rx_head.raw, adapter->rx_tail->raw, | ||
| 20799 | + adapter->rx_tail_copy.raw ); | ||
| 20800 | + queue_.raw = adapter->rx_tail_copy.raw; | ||
| 20801 | + | ||
| 20802 | +#if 0 | ||
| 20803 | + if (cur_budget > device->quota) { | ||
| 20804 | + cur_budget = device->quota; | ||
| 20805 | + } | ||
| 20806 | +#endif | ||
| 20807 | + | ||
| 20808 | + done = 1; | ||
| 20809 | + | ||
| 20810 | + do { | ||
| 20811 | + | ||
| 20812 | + /* Acknowledge the RX interrupt. */ | ||
| 20813 | + write_mac_( ~APPNIC_DMA_INTERRUPT_ENABLE_RECEIVE , | ||
| 20814 | + APPNIC_DMA_INTERRUPT_STATUS ); | ||
| 20815 | + | ||
| 20816 | + if( 0 == ( cur_budget -= lsinet_rx_packets( device, cur_budget ) ) ) { | ||
| 20817 | + break; | ||
| 20818 | + } | ||
| 20819 | + | ||
| 20820 | + dma_interrupt_status_ = read_mac_( APPNIC_DMA_INTERRUPT_STATUS ); | ||
| 20821 | + | ||
| 20822 | + } while ( (RX_INTERRUPT (dma_interrupt_status_)) && cur_budget ); | ||
| 20823 | + | ||
| 20824 | + | ||
| 20825 | +#if 0 | ||
| 20826 | + device->quota -= packets_handled_; | ||
| 20827 | +#endif | ||
| 20828 | + | ||
| 20829 | + if (done) { | ||
| 20830 | + LSINET_COUNTS_INC( LSINET_COUNTS_POL_RNBL ); | ||
| 20831 | + napi_complete( napi ); | ||
| 20832 | + /* re-enable receive interrupts */ | ||
| 20833 | + write_mac_( ( APPNIC_DMA_INTERRUPT_ENABLE_RECEIVE | | ||
| 20834 | + APPNIC_DMA_INTERRUPT_ENABLE_TRANSMIT ), | ||
| 20835 | + APPNIC_DMA_INTERRUPT_ENABLE ); | ||
| 20836 | + } | ||
| 20837 | + | ||
| 20838 | + DEBUG_PRINT( "head=0x%x tail=0x%x tail_copy=0x%x\n", | ||
| 20839 | + adapter->rx_head.raw, adapter->rx_tail->raw, | ||
| 20840 | + adapter->rx_tail_copy.raw ); | ||
| 20841 | + TRACE_ENDING( ); | ||
| 20842 | + | ||
| 20843 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20844 | + end_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20845 | + app3xx_profile_time_calc(beginning_, end_, | ||
| 20846 | + time_in_rx_min_, time_in_rx_max_, total_rx_time_); | ||
| 20847 | + | ||
| 20848 | + | ||
| 20849 | + total_rx_packets_handled_ += packets_handled_; | ||
| 20850 | + if( packets_handled_ > max_rx_packets_handled_ ) { | ||
| 20851 | + max_rx_packets_handled_ = packets_handled_; | ||
| 20852 | + } | ||
| 20853 | + ++ total_polls_; | ||
| 20854 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20855 | + | ||
| 20856 | + /* TEMP */ | ||
| 20857 | + /*up( & adapter->poll_sem);*/ | ||
| 20858 | + LSINET_COUNTS_INC( LSINET_COUNTS_POL_DONE ); | ||
| 20859 | + return (done ? 0 : 1); | ||
| 20860 | + | ||
| 20861 | +} | ||
| 20862 | + | ||
| 20863 | +#else /* Not using NAPI, define the Rx interrupt handler instead */ | ||
| 20864 | + | ||
| 20865 | +/* | ||
| 20866 | + ---------------------------------------------------------------------- | ||
| 20867 | + handle_receive_interrupt_ | ||
| 20868 | +*/ | ||
| 20869 | + | ||
| 20870 | +static void handle_receive_interrupt_( struct net_device * device ) { | ||
| 20871 | + | ||
| 20872 | + appnic_device_t * dev_ = netdev_priv( device ); | ||
| 20873 | + appnic_queue_pointer_t queue_; | ||
| 20874 | + | ||
| 20875 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20876 | + unsigned long beginning_; | ||
| 20877 | + unsigned long end_; | ||
| 20878 | + unsigned long packets_handled_ = 0; | ||
| 20879 | + | ||
| 20880 | + beginning_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20881 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20882 | + | ||
| 20883 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_START ); | ||
| 20884 | + TRACE_BEGINNING( ); | ||
| 20885 | + DEBUG_PRINT( "head=0x%lx tail=0x%lx tail_copy=0x%lx\n", | ||
| 20886 | + dev_->rx_head.raw, dev_->rx_tail->raw, | ||
| 20887 | + dev_->rx_tail_copy.raw ); | ||
| 20888 | + queue_.raw = dev_->rx_tail_copy.raw; | ||
| 20889 | + lsinet_rx_packets( device, -1 ); | ||
| 20890 | + DEBUG_PRINT( "head=0x%lx tail=0x%lx tail_copy=0x%lx\n", | ||
| 20891 | + dev_->rx_head.raw, dev_->rx_tail->raw, | ||
| 20892 | + dev_->rx_tail_copy.raw ); | ||
| 20893 | + TRACE_ENDING( ); | ||
| 20894 | + LSINET_COUNTS_INC( LSINET_COUNTS_RX_DONE ); | ||
| 20895 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20896 | + end_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 20897 | + app3xx_profile_time_calc(beginning_, end_, | ||
| 20898 | + time_in_rx_min_, time_in_rx_max_, total_rx_time_); | ||
| 20899 | + | ||
| 20900 | + | ||
| 20901 | + total_rx_packets_handled_ += packets_handled_; | ||
| 20902 | + if( packets_handled_ > max_rx_packets_handled_ ) { | ||
| 20903 | + max_rx_packets_handled_ = packets_handled_; | ||
| 20904 | + } | ||
| 20905 | + ++ total_rx_interrupts_; | ||
| 20906 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20907 | + | ||
| 20908 | + return; | ||
| 20909 | + | ||
| 20910 | +} | ||
| 20911 | +#endif /* else not NAPI */ | ||
| 20912 | + | ||
| 20913 | +/* | ||
| 20914 | + ---------------------------------------------------------------------- | ||
| 20915 | + appnic_isr_ | ||
| 20916 | +*/ | ||
| 20917 | + | ||
| 20918 | +static irqreturn_t appnic_isr_( int irq, void * device_id ) { | ||
| 20919 | + | ||
| 20920 | + struct net_device * device_ = ( struct net_device * ) device_id; | ||
| 20921 | + appnic_device_t * dev_ = netdev_priv( device_ ); | ||
| 20922 | + unsigned long dma_interrupt_status_; | ||
| 20923 | + unsigned long flags; | ||
| 20924 | + | ||
| 20925 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 20926 | + unsigned beginning_jiffies_ = jiffies; | ||
| 20927 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 20928 | + | ||
| 20929 | + TRACE_BEGINNING( ); | ||
| 20930 | + LSINET_COUNTS_INC( LSINET_COUNTS_ISR_START ); | ||
| 20931 | + | ||
| 20932 | + /* acquire the lock */ | ||
| 20933 | + spin_lock_irqsave( & dev_->lock, flags ); | ||
| 20934 | + | ||
| 20935 | +#if ! defined( PHYLESS ) && ! defined( CONFIG_ACP ) | ||
| 20936 | + if( INT_MAC_RX == irq ) { | ||
| 20937 | + | ||
| 20938 | + PHY_DEBUG_PRINT( "Handling PHY interrupt.\n" ); | ||
| 20939 | + | ||
| 20940 | + if( BCM5221_PHY_ == phy_type_ ) { | ||
| 20941 | + | ||
| 20942 | + bc_phy_interrupt_t bc_phy_interrupt_; | ||
| 20943 | + | ||
| 20944 | + ( void ) phy_read_( phy_address_, | ||
| 20945 | + BC_PHY_INTERRUPT_, & bc_phy_interrupt_.raw ); | ||
| 20946 | + bc_phy_interrupt_.raw = 0; | ||
| 20947 | + bc_phy_interrupt_.bits.enable = 1; | ||
| 20948 | + ( void ) phy_write_( phy_address_, | ||
| 20949 | + BC_PHY_INTERRUPT_, bc_phy_interrupt_.raw ); | ||
| 20950 | + | ||
| 20951 | + } else if( MICREL_PHY_ == phy_type_ ) { | ||
| 20952 | + | ||
| 20953 | + m_phy_interrupt_t m_phy_interrupt_; | ||
| 20954 | + | ||
| 20955 | + ( void ) phy_read_( phy_address_, | ||
| 20956 | + M_PHY_INTERRUPT_, & m_phy_interrupt_.raw ); | ||
| 20957 | + ( void ) phy_write_( phy_address_, | ||
| 20958 | + M_PHY_INTERRUPT_, m_phy_interrupt_.raw ); | ||
| 20959 | + | ||
| 20960 | + } | ||
| 20961 | + | ||
| 20962 | + write_mac_( 0, APPNIC_RX_INTERRUPT_STATUS ); | ||
| 20963 | + enable_( device_ ); | ||
| 20964 | + | ||
| 20965 | + } else { | ||
| 20966 | +#endif /* PHYLESS */ | ||
| 20967 | + /* get the status */ | ||
| 20968 | + dma_interrupt_status_ = read_mac_( APPNIC_DMA_INTERRUPT_STATUS ); | ||
| 20969 | +#ifdef LSINET_NAPI | ||
| 20970 | + /* NAPI - don't ack RX interrupt */ | ||
| 20971 | + write_mac_( APPNIC_DMA_INTERRUPT_ENABLE_RECEIVE, APPNIC_DMA_INTERRUPT_STATUS ); | ||
| 20972 | +#else | ||
| 20973 | + write_mac_( 0, APPNIC_DMA_INTERRUPT_STATUS ); | ||
| 20974 | +#endif | ||
| 20975 | + | ||
| 20976 | + /*TRACER_POST( "dma_interrupt_status_=0x%x", dma_interrupt_status_ );*/ | ||
| 20977 | + | ||
| 20978 | + /* handle interrupts */ | ||
| 20979 | + | ||
| 20980 | + if( TX_INTERRUPT( dma_interrupt_status_ ) ) { | ||
| 20981 | + LSINET_COUNTS_INC( LSINET_COUNTS_ISR_TX ); | ||
| 20982 | + /* transmition complete */ | ||
| 20983 | + ++ transmit_interrupts_; | ||
| 20984 | + handle_transmit_interrupt_( device_ ); | ||
| 20985 | + } | ||
| 20986 | + | ||
| 20987 | + if( RX_INTERRUPT( dma_interrupt_status_ ) ) { | ||
| 20988 | + LSINET_COUNTS_INC( LSINET_COUNTS_ISR_RX ); | ||
| 20989 | +#ifdef LSINET_NAPI | ||
| 20990 | + ++ receive_interrupts_; | ||
| 20991 | + if (napi_schedule_prep(&dev_->napi)) { | ||
| 20992 | + /* disable RX interrupts and tell the system we've got work */ | ||
| 20993 | + write_mac_( APPNIC_DMA_INTERRUPT_ENABLE_TRANSMIT , | ||
| 20994 | + APPNIC_DMA_INTERRUPT_ENABLE ); | ||
| 20995 | + __napi_schedule(&dev_->napi); | ||
| 20996 | + } else { | ||
| 20997 | + ERROR_PRINT( "NAPI bug! interrupt while in poll\n"); | ||
| 20998 | + write_mac_( APPNIC_DMA_INTERRUPT_ENABLE_TRANSMIT , | ||
| 20999 | + APPNIC_DMA_INTERRUPT_ENABLE ); | ||
| 21000 | + } | ||
| 21001 | +#else | ||
| 21002 | + /* receive complete */ | ||
| 21003 | + handle_receive_interrupt_( device_ ); | ||
| 21004 | +#endif | ||
| 21005 | + } | ||
| 21006 | +#if ! defined( PHYLESS ) && ! defined( CONFIG_ACP ) | ||
| 21007 | + } | ||
| 21008 | +#endif /* PHYLESS */ | ||
| 21009 | + | ||
| 21010 | + /* release the lock */ | ||
| 21011 | + spin_unlock_irqrestore( & dev_->lock, flags ); | ||
| 21012 | + | ||
| 21013 | + LSINET_COUNTS_INC( LSINET_COUNTS_ISR_DONE ); | ||
| 21014 | + TRACE_ENDING( ); | ||
| 21015 | + | ||
| 21016 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 21017 | + if( jiffies != beginning_jiffies_ ) { | ||
| 21018 | + ++ jiffies_changed_; | ||
| 21019 | + } | ||
| 21020 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 21021 | + | ||
| 21022 | + return IRQ_HANDLED; | ||
| 21023 | + | ||
| 21024 | +} | ||
| 21025 | + | ||
| 21026 | +/* | ||
| 21027 | + ---------------------------------------------------------------------- | ||
| 21028 | + appnic_open | ||
| 21029 | + | ||
| 21030 | + Opens the interface. The interface is opened whenever ifconfig | ||
| 21031 | + activates it. The open method should register any system resource | ||
| 21032 | + it needs (I/O ports, IRQ, DMA, etc.) turn on the hardware, and | ||
| 21033 | + increment the module usage count. | ||
| 21034 | +*/ | ||
| 21035 | + | ||
| 21036 | +int appnic_open( struct net_device * device ) { | ||
| 21037 | + | ||
| 21038 | + int return_code_ = 0; | ||
| 21039 | +#if defined( CONFIG_ARCH_APP3 ) | ||
| 21040 | + unsigned long gpio_mux_ = readl( APP3XX_HB_CONF_BASE + 0x18 ); | ||
| 21041 | +#elif defined( CONFIG_ARCH_APP3K ) | ||
| 21042 | + /*unsigned long gpio_mux_ = readl( APP_AEI_BASE + 0x18 );*/ | ||
| 21043 | +#endif | ||
| 21044 | + | ||
| 21045 | + /* enable the receiver and transmitter */ | ||
| 21046 | + if( 0 != enable_( device ) ) { | ||
| 21047 | + | ||
| 21048 | + ERROR_PRINT( "Unable to enable the interface.\n" ); | ||
| 21049 | + disable_( ); | ||
| 21050 | + return -EBUSY; | ||
| 21051 | + | ||
| 21052 | + } | ||
| 21053 | + | ||
| 21054 | +#ifdef LSINET_NAPI | ||
| 21055 | + { | ||
| 21056 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 21057 | + napi_enable( & adapter->napi ); | ||
| 21058 | + } | ||
| 21059 | +#endif /* LSINET_NAPI */ | ||
| 21060 | + | ||
| 21061 | + /* install the interrupt handlers */ | ||
| 21062 | + if( 0 != ( return_code_ = request_irq( device->irq, appnic_isr_, IRQF_DISABLED, | ||
| 21063 | + APPNIC_NAME, device ) ) ) { | ||
| 21064 | + | ||
| 21065 | + ERROR_PRINT( "request_irq( ) failed, returned 0x%x/%d\n", | ||
| 21066 | + return_code_, return_code_ ); | ||
| 21067 | + return return_code_; | ||
| 21068 | + | ||
| 21069 | + } | ||
| 21070 | + | ||
| 21071 | + /* enable interrupts */ | ||
| 21072 | + write_mac_( ( APPNIC_DMA_INTERRUPT_ENABLE_RECEIVE | | ||
| 21073 | + APPNIC_DMA_INTERRUPT_ENABLE_TRANSMIT ), | ||
| 21074 | + APPNIC_DMA_INTERRUPT_ENABLE ); | ||
| 21075 | + | ||
| 21076 | + { | ||
| 21077 | + | ||
| 21078 | +#ifndef PHYLESS | ||
| 21079 | + char phy_string_ [ 256 ]; | ||
| 21080 | + int use_interrupts_ = 1; | ||
| 21081 | + appnic_device_t * dev_ = netdev_priv( device ); | ||
| 21082 | +#endif | ||
| 21083 | + | ||
| 21084 | +#ifdef CONFIG_ARCH_APP3 | ||
| 21085 | + | ||
| 21086 | + PHY_DEBUG_PRINT( "phy_type_=0x%x gpio_mux_=0x%x\n", phy_type_, gpio_mux_ ); | ||
| 21087 | + | ||
| 21088 | + if( ( BCM5221_PHY_ != phy_type_ ) || | ||
| 21089 | + ( 0x04000000 != ( gpio_mux_ & 0x04000000 ) ) ) { | ||
| 21090 | + | ||
| 21091 | + use_interrupts_ = 0; | ||
| 21092 | + | ||
| 21093 | + } | ||
| 21094 | + | ||
| 21095 | +#endif | ||
| 21096 | + | ||
| 21097 | +#ifndef PHYLESS | ||
| 21098 | + | ||
| 21099 | +#ifndef CONFIG_ACP | ||
| 21100 | + | ||
| 21101 | + if( ( 0 != ubootenv_get( "phy_mode", phy_string_ ) ) || | ||
| 21102 | + ( 0 == strncmp( phy_string_, "poll", strlen( "poll" ) ) ) ) { | ||
| 21103 | + | ||
| 21104 | + use_interrupts_ = 0; | ||
| 21105 | + | ||
| 21106 | + } | ||
| 21107 | + | ||
| 21108 | + PHY_DEBUG_PRINT( "use_interrupts_=%d\n", use_interrupts_ ); | ||
| 21109 | + | ||
| 21110 | + if( 1 == use_interrupts_ ) { | ||
| 21111 | + | ||
| 21112 | + if( BCM5221_PHY_ == phy_type_ ) { | ||
| 21113 | + | ||
| 21114 | + bc_phy_interrupt_t bc_phy_interrupt_; | ||
| 21115 | + | ||
| 21116 | + bc_phy_interrupt_.raw = 0; | ||
| 21117 | + bc_phy_interrupt_.bits.enable = 1; | ||
| 21118 | + | ||
| 21119 | + if( 0 != phy_write_( phy_address_, BC_PHY_INTERRUPT_, | ||
| 21120 | + bc_phy_interrupt_.raw ) ) { | ||
| 21121 | + | ||
| 21122 | + return -EBUSY; | ||
| 21123 | + | ||
| 21124 | + } | ||
| 21125 | + | ||
| 21126 | + if( 0 != phy_read_( phy_address_, BC_PHY_INTERRUPT_, | ||
| 21127 | + & bc_phy_interrupt_.raw ) ) { | ||
| 21128 | + | ||
| 21129 | + return -EBUSY; | ||
| 21130 | + | ||
| 21131 | + } | ||
| 21132 | + | ||
| 21133 | + } else if( MICREL_PHY_ == phy_type_ ) { | ||
| 21134 | + | ||
| 21135 | + m_phy_interrupt_t m_phy_interrupt_; | ||
| 21136 | + | ||
| 21137 | + m_phy_interrupt_.raw = 0; | ||
| 21138 | + m_phy_interrupt_.bits.enable_link_up = 1; | ||
| 21139 | + | ||
| 21140 | + if( 0 != phy_write_( phy_address_, M_PHY_INTERRUPT_, | ||
| 21141 | + m_phy_interrupt_.raw ) ) { | ||
| 21142 | + | ||
| 21143 | + return -EBUSY; | ||
| 21144 | + | ||
| 21145 | + } | ||
| 21146 | + | ||
| 21147 | + } | ||
| 21148 | + | ||
| 21149 | + if( 0 != ( return_code_ = | ||
| 21150 | + request_irq( INT_MAC_RX, appnic_isr_, 0, | ||
| 21151 | + APPNIC_NAME "(phy)", device ) ) ) { | ||
| 21152 | + | ||
| 21153 | + ERROR_PRINT( "request_irq( ) failed, returned 0x%x/%d\n", | ||
| 21154 | + return_code_, return_code_ ); | ||
| 21155 | + return return_code_; | ||
| 21156 | + | ||
| 21157 | + } | ||
| 21158 | + | ||
| 21159 | + write_mac_( ( APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL_MAC_0 ), | ||
| 21160 | + APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL ); | ||
| 21161 | + dev_->polling = 0; | ||
| 21162 | + | ||
| 21163 | + } else { | ||
| 21164 | + | ||
| 21165 | +#endif | ||
| 21166 | + | ||
| 21167 | +#ifndef CONFIG_ACP | ||
| 21168 | + WARN_PRINT( "PHY is in polling mode.\n" ); | ||
| 21169 | +#endif | ||
| 21170 | + init_timer( & appnic_timer_ ); | ||
| 21171 | + appnic_timer_.expires = jiffies + ( APPNIC_TIMER_PERIOD * HZ ); | ||
| 21172 | + appnic_timer_.data = ( unsigned long ) device; | ||
| 21173 | + appnic_timer_.function = appnic_timer_handler_; | ||
| 21174 | + add_timer( & appnic_timer_ ); | ||
| 21175 | + dev_->polling = 1; | ||
| 21176 | + | ||
| 21177 | +#ifndef CONFIG_ACP | ||
| 21178 | + | ||
| 21179 | + } | ||
| 21180 | + | ||
| 21181 | +#endif | ||
| 21182 | + | ||
| 21183 | +#endif /* PHYLESS */ | ||
| 21184 | + | ||
| 21185 | + } | ||
| 21186 | + | ||
| 21187 | + /* let the OS know we are ready to send packets */ | ||
| 21188 | + netif_start_queue( device ); | ||
| 21189 | + | ||
| 21190 | + /* that's all */ | ||
| 21191 | + return 0; | ||
| 21192 | + | ||
| 21193 | +} | ||
| 21194 | + | ||
| 21195 | +/* | ||
| 21196 | + ---------------------------------------------------------------------- | ||
| 21197 | + appnic_stop | ||
| 21198 | + | ||
| 21199 | + Stops the interface. The interface is stopped when it is broughht | ||
| 21200 | + down; operations performed at open time should be reversed. | ||
| 21201 | +*/ | ||
| 21202 | + | ||
| 21203 | +int appnic_stop( struct net_device * device ) { | ||
| 21204 | + | ||
| 21205 | + int return_code_ = 0; | ||
| 21206 | + | ||
| 21207 | + DEBUG_PRINT( "Stopping the interface.\n" ); | ||
| 21208 | + | ||
| 21209 | + /* | ||
| 21210 | + Indicate to the OS that no more packets should be sent. | ||
| 21211 | + */ | ||
| 21212 | + | ||
| 21213 | + netif_stop_queue( device ); | ||
| 21214 | + | ||
| 21215 | + /* | ||
| 21216 | + Stop the receiver and transmitter. | ||
| 21217 | + */ | ||
| 21218 | + | ||
| 21219 | + disable_( ); | ||
| 21220 | + | ||
| 21221 | + /* Disable NAPI. */ | ||
| 21222 | +#ifdef LSINET_NAPI | ||
| 21223 | + { | ||
| 21224 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 21225 | + napi_disable( & adapter->napi ); | ||
| 21226 | + } | ||
| 21227 | +#endif | ||
| 21228 | + | ||
| 21229 | + /* | ||
| 21230 | + Free the interrupts. | ||
| 21231 | + */ | ||
| 21232 | + | ||
| 21233 | + free_irq( device->irq, device ); | ||
| 21234 | + | ||
| 21235 | +#ifndef PHYLESS | ||
| 21236 | + | ||
| 21237 | + { | ||
| 21238 | +#ifndef CONFIG_ACP | ||
| 21239 | + appnic_device_t * dev_ = netdev_priv( device ); | ||
| 21240 | + if( 0 != dev_->polling ) { del_timer( & appnic_timer_ ); } | ||
| 21241 | + else { free_irq( INT_MAC_RX, device ); } | ||
| 21242 | +#else | ||
| 21243 | + del_timer( & appnic_timer_ ); | ||
| 21244 | +#endif | ||
| 21245 | + } | ||
| 21246 | + | ||
| 21247 | +#endif /* PHYLESS */ | ||
| 21248 | + | ||
| 21249 | + /* | ||
| 21250 | + That's all. | ||
| 21251 | + */ | ||
| 21252 | + | ||
| 21253 | + return return_code_; | ||
| 21254 | + | ||
| 21255 | +} | ||
| 21256 | + | ||
| 21257 | +/* | ||
| 21258 | + ---------------------------------------------------------------------- | ||
| 21259 | + appnic_hard_start_xmit | ||
| 21260 | + | ||
| 21261 | + The method initiates the transmission of a packet. The full packet | ||
| 21262 | + (protocol headers and all) is contained in a socket buffer (sk_buff) | ||
| 21263 | + structure. | ||
| 21264 | + | ||
| 21265 | + ----- NOTES ----- | ||
| 21266 | + | ||
| 21267 | + 1) This will not get called again by the kernel until it returns. | ||
| 21268 | +*/ | ||
| 21269 | + | ||
| 21270 | +int | ||
| 21271 | +appnic_hard_start_xmit( struct sk_buff * skb, | ||
| 21272 | + struct net_device * device ) | ||
| 21273 | +{ | ||
| 21274 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 21275 | + int length_; | ||
| 21276 | + int buf_per_desc_; | ||
| 21277 | + | ||
| 21278 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 21279 | + unsigned long beginning_; | ||
| 21280 | + unsigned long end_; | ||
| 21281 | + unsigned long this_time_; | ||
| 21282 | + | ||
| 21283 | + beginning_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 21284 | + ++ total_tx_packets_; | ||
| 21285 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 21286 | + | ||
| 21287 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_START ); | ||
| 21288 | + appnic_special_lock( & adapter->lock ); | ||
| 21289 | + length_ = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; | ||
| 21290 | + buf_per_desc_ = adapter->tx_buf_sz / adapter->tx_num_desc; | ||
| 21291 | + | ||
| 21292 | + /* | ||
| 21293 | + If enough transmit descriptors are available, copy and transmit. | ||
| 21294 | + */ | ||
| 21295 | + | ||
| 21296 | + DEBUG_PRINT( "length_=%d buf_per_desc_=%d tx_tail=0x%x\n", | ||
| 21297 | + length_, buf_per_desc_, swab32( adapter->tx_tail->raw ) ); | ||
| 21298 | + | ||
| 21299 | +#if 0 | ||
| 21300 | + if( ( ( length_ / buf_per_desc_ ) + 1 ) >= | ||
| 21301 | + queue_uninitialized_( adapter->tx_head, SWAB_QUEUE_POINTER( adapter->tx_tail ), | ||
| 21302 | + adapter->tx_num_desc ) ) { | ||
| 21303 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_RCLM ); | ||
| 21304 | + handle_transmit_interrupt_( device ); | ||
| 21305 | + } | ||
| 21306 | +#else | ||
| 21307 | + /*ZZZ*/ | ||
| 21308 | + while( ( ( length_ / buf_per_desc_ ) + 1 ) >= | ||
| 21309 | + queue_uninitialized_( adapter->tx_head, | ||
| 21310 | + SWAB_QUEUE_POINTER( adapter->tx_tail ), | ||
| 21311 | + adapter->tx_num_desc ) ) { | ||
| 21312 | + udelay( 1000 ); | ||
| 21313 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_RCLM ); | ||
| 21314 | + handle_transmit_interrupt_( device ); | ||
| 21315 | + } | ||
| 21316 | +#endif | ||
| 21317 | + | ||
| 21318 | + if( ( ( length_ / buf_per_desc_ ) + 1 ) < | ||
| 21319 | + queue_uninitialized_( adapter->tx_head, SWAB_QUEUE_POINTER( adapter->tx_tail ), | ||
| 21320 | + adapter->tx_num_desc ) ) { | ||
| 21321 | + int bytes_copied_ = 0; | ||
| 21322 | + appnic_dma_descriptor_t descriptor; | ||
| 21323 | + | ||
| 21324 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_SNDG ); | ||
| 21325 | + readdescriptor( ( ( unsigned long ) adapter->tx_desc + | ||
| 21326 | + adapter->tx_head.bits.offset ), & descriptor ); | ||
| 21327 | + descriptor.start_of_packet = 1; | ||
| 21328 | + | ||
| 21329 | + while( bytes_copied_ < length_ ) { | ||
| 21330 | + descriptor.write = 1; | ||
| 21331 | + descriptor.pdu_length = length_; | ||
| 21332 | + | ||
| 21333 | + if( ( length_ - bytes_copied_ ) > buf_per_desc_ ) { | ||
| 21334 | + memcpy( ( void * ) ( descriptor.host_data_memory_pointer + | ||
| 21335 | + adapter->dma_alloc_offset ), | ||
| 21336 | + ( void * ) ( ( unsigned long ) skb->data + bytes_copied_ ), | ||
| 21337 | + buf_per_desc_ ); | ||
| 21338 | + descriptor.data_transfer_length = buf_per_desc_; | ||
| 21339 | + descriptor.end_of_packet = 0; | ||
| 21340 | + descriptor.interrupt_on_completion = 0; | ||
| 21341 | + bytes_copied_ += buf_per_desc_; | ||
| 21342 | + } else { | ||
| 21343 | + memcpy( ( void * ) ( descriptor.host_data_memory_pointer + | ||
| 21344 | + adapter->dma_alloc_offset ), | ||
| 21345 | + ( void * ) ( ( unsigned long ) skb->data + bytes_copied_ ), | ||
| 21346 | + ( length_ - bytes_copied_ ) ); | ||
| 21347 | + descriptor.data_transfer_length = ( length_ - bytes_copied_ ); | ||
| 21348 | + descriptor.end_of_packet = 1; | ||
| 21349 | +#ifdef DISABLE_TX_INTERRUPTS | ||
| 21350 | + descriptor.interrupt_on_completion = 0; | ||
| 21351 | +#else /* DISABLE_TX_INTERRUPTS */ | ||
| 21352 | + descriptor.interrupt_on_completion = 1; | ||
| 21353 | +#endif /* DISABLE_TX_INTERRUPTS */ | ||
| 21354 | + bytes_copied_ = length_; | ||
| 21355 | + } | ||
| 21356 | + | ||
| 21357 | + adapter->stats.tx_bytes += bytes_copied_; | ||
| 21358 | + writedescriptor( ( ( unsigned long ) adapter->tx_desc + | ||
| 21359 | + adapter->tx_head.bits.offset ), & descriptor ); | ||
| 21360 | + queue_increment_( & adapter->tx_head, adapter->tx_num_desc ); | ||
| 21361 | + readdescriptor( ( ( unsigned long ) adapter->tx_desc + | ||
| 21362 | + adapter->tx_head.bits.offset ), & descriptor ); | ||
| 21363 | + descriptor.start_of_packet = 0; | ||
| 21364 | + } | ||
| 21365 | + | ||
| 21366 | + write_mac_( adapter->tx_head.raw, APPNIC_DMA_TX_HEAD_POINTER ); | ||
| 21367 | + device->trans_start = jiffies; | ||
| 21368 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_SNT ); | ||
| 21369 | + } else { | ||
| 21370 | + ++ out_of_tx_descriptors_; | ||
| 21371 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_OOD ); | ||
| 21372 | + ERROR_PRINT( "No transmit descriptors available!\n" ); | ||
| 21373 | + } | ||
| 21374 | + | ||
| 21375 | + /* free the socket buffer */ | ||
| 21376 | + dev_kfree_skb( skb ); | ||
| 21377 | + appnic_special_unlock( & adapter->lock ); | ||
| 21378 | + | ||
| 21379 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 21380 | + end_ = ( 0xffffffff - readl( ( TIMER7_BASE + TIMER_n_VALUE ) ) ); | ||
| 21381 | + if( end_ > beginning_ ) { | ||
| 21382 | + this_time_ = end_ - beginning_; | ||
| 21383 | + } else { | ||
| 21384 | + this_time_ = end_ + ( 0xffffffff - beginning_ ) + 1; | ||
| 21385 | + } | ||
| 21386 | + total_tx_time_ += this_time_; | ||
| 21387 | + if( this_time_ > time_in_tx_max_ ) { time_in_tx_max_ = this_time_; } | ||
| 21388 | + if( this_time_ < time_in_tx_min_ ) { time_in_tx_min_ = this_time_; } | ||
| 21389 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 21390 | + | ||
| 21391 | + LSINET_COUNTS_INC( LSINET_COUNTS_HST_DONE ); | ||
| 21392 | + return 0; | ||
| 21393 | + | ||
| 21394 | +} | ||
| 21395 | + | ||
| 21396 | +/* | ||
| 21397 | + ---------------------------------------------------------------------- | ||
| 21398 | + appnic_tx_timeout | ||
| 21399 | + | ||
| 21400 | + This method is called when a packet transmission fails to complete | ||
| 21401 | + within a resonable period, on the assumption that an interrupt has | ||
| 21402 | + been missed or the interface has locked up. It should handle the | ||
| 21403 | + problem and resume packet transmission. | ||
| 21404 | +*/ | ||
| 21405 | + | ||
| 21406 | +void appnic_tx_timeout( struct net_device * device ) { | ||
| 21407 | + | ||
| 21408 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 21409 | + | ||
| 21410 | + WARN_PRINT( "Transmission timed out!\n" ); | ||
| 21411 | + | ||
| 21412 | + if( 0 == queue_initialized_( SWAB_QUEUE_POINTER( adapter->tx_tail ), | ||
| 21413 | + adapter->tx_tail_copy, adapter->tx_num_desc ) ) { | ||
| 21414 | + /* | ||
| 21415 | + If tx_tail is still the same as tx_tail_copy | ||
| 21416 | + then restart the transmission. | ||
| 21417 | + */ | ||
| 21418 | + | ||
| 21419 | + write_mac_( adapter->tx_head.raw, APPNIC_DMA_TX_HEAD_POINTER ); | ||
| 21420 | + } else { | ||
| 21421 | + /* If tx_tail has moved on, just increment tx_tail_copy. */ | ||
| 21422 | + appnic_dma_descriptor_t descriptor; | ||
| 21423 | + | ||
| 21424 | + readdescriptor( ( ( unsigned long ) adapter->tx_desc + | ||
| 21425 | + adapter->tx_tail_copy.bits.offset ), & descriptor ); | ||
| 21426 | + adapter->stats.tx_bytes += descriptor.pdu_length; | ||
| 21427 | + kfree( ( void * ) descriptor.host_data_memory_pointer ); | ||
| 21428 | + queue_increment_( & adapter->tx_tail_copy, adapter->tx_num_desc ); | ||
| 21429 | + } | ||
| 21430 | + | ||
| 21431 | + return; | ||
| 21432 | + | ||
| 21433 | +} | ||
| 21434 | + | ||
| 21435 | +/* | ||
| 21436 | + ---------------------------------------------------------------------- | ||
| 21437 | + appnic_net_device_stats | ||
| 21438 | + | ||
| 21439 | + Whenever an application needs to get statistics for the interface, | ||
| 21440 | + this method is called. This happens, for example, when ifconfig or | ||
| 21441 | + nstat -i is run. | ||
| 21442 | +*/ | ||
| 21443 | + | ||
| 21444 | +struct net_device_stats * | ||
| 21445 | +appnic_get_stats( struct net_device * device ) | ||
| 21446 | +{ | ||
| 21447 | + | ||
| 21448 | + appnic_device_t * device_ = netdev_priv( device ); | ||
| 21449 | + | ||
| 21450 | + /* | ||
| 21451 | + Update the statistics structure. | ||
| 21452 | + */ | ||
| 21453 | + | ||
| 21454 | + get_hw_statistics_( device_ ); | ||
| 21455 | + | ||
| 21456 | + /* | ||
| 21457 | + That's all. | ||
| 21458 | + */ | ||
| 21459 | + | ||
| 21460 | + return & device_->stats; | ||
| 21461 | + | ||
| 21462 | +} | ||
| 21463 | + | ||
| 21464 | +/* | ||
| 21465 | + ---------------------------------------------------------------------- | ||
| 21466 | + appnic_do_ioctl | ||
| 21467 | +*/ | ||
| 21468 | + | ||
| 21469 | +#if 0 | ||
| 21470 | + | ||
| 21471 | +static int | ||
| 21472 | +appnic_do_ioctl( struct net_device * device, struct ifreq * request, | ||
| 21473 | + int command ) | ||
| 21474 | +{ | ||
| 21475 | + | ||
| 21476 | + int return_code_ = 0; | ||
| 21477 | +#ifndef PHYLESS | ||
| 21478 | + u16 * data_ = ( u16 * ) & ( request->ifr_data ); | ||
| 21479 | +#endif | ||
| 21480 | + | ||
| 21481 | + switch( command ) { | ||
| 21482 | + /* Get the speed. */ | ||
| 21483 | + case 0x8946: | ||
| 21484 | + break; | ||
| 21485 | +#ifndef PHYLESS | ||
| 21486 | + /* Get the PHY (defined in 2.5.x kernels) */ | ||
| 21487 | + case 0x89f0: | ||
| 21488 | + data_ [ 0 ] = phy_address_; | ||
| 21489 | + break; | ||
| 21490 | + /* Read PHY (defined in 2.5.x kernels) */ | ||
| 21491 | + case 0x89f1: | ||
| 21492 | + if( 0 != phy_read_( data_ [ 0 ], data_ [ 1 ], | ||
| 21493 | + & ( data_ [ 3 ] ) ) ) { | ||
| 21494 | + return_code_ = -EIO; | ||
| 21495 | + } | ||
| 21496 | + break; | ||
| 21497 | + /* Write PHY (defined in 2.5.x kernels) */ | ||
| 21498 | + case 0x89f2: | ||
| 21499 | + if( 0 != phy_write_( data_ [ 0 ], data_ [ 1 ], data_ [ 2 ] ) ) { | ||
| 21500 | + return_code_ = -EIO; | ||
| 21501 | + } | ||
| 21502 | + break; | ||
| 21503 | +#endif | ||
| 21504 | + default: | ||
| 21505 | + ERROR_PRINT( "Unknown Command: 0x%x\n", command ); | ||
| 21506 | + break; | ||
| 21507 | + } | ||
| 21508 | + | ||
| 21509 | + return return_code_; | ||
| 21510 | + | ||
| 21511 | +} | ||
| 21512 | + | ||
| 21513 | +#endif | ||
| 21514 | + | ||
| 21515 | +/* | ||
| 21516 | + ---------------------------------------------------------------------- | ||
| 21517 | + appnic_set_mac_address | ||
| 21518 | +*/ | ||
| 21519 | + | ||
| 21520 | +static int | ||
| 21521 | +appnic_set_mac_address(struct net_device *device, void *data) { | ||
| 21522 | + struct sockaddr *address_ = data; | ||
| 21523 | + unsigned long swap_source_address_; | ||
| 21524 | + | ||
| 21525 | + if (netif_running(device)) | ||
| 21526 | + return -EBUSY; | ||
| 21527 | + | ||
| 21528 | + DEBUG_PRINT("Setting MAC to %02x:%02x:%02x:%02x:%02x:%02x\n", | ||
| 21529 | + address_->sa_data [0], address_->sa_data [1], | ||
| 21530 | + address_->sa_data [2], address_->sa_data [3], | ||
| 21531 | + address_->sa_data [4], address_->sa_data [5]); | ||
| 21532 | + memcpy(device->dev_addr, address_->sa_data, 6); | ||
| 21533 | + memcpy(device->perm_addr, address_->sa_data, 6); | ||
| 21534 | + | ||
| 21535 | + swap_source_address_ = | ||
| 21536 | + ((address_->sa_data[4]) << 8) | address_->sa_data[5]; | ||
| 21537 | + write_mac_(swap_source_address_, APPNIC_SWAP_SOURCE_ADDRESS_2); | ||
| 21538 | + swap_source_address_ = | ||
| 21539 | + ((address_->sa_data[2]) << 8) | address_->sa_data[3]; | ||
| 21540 | + write_mac_(swap_source_address_, APPNIC_SWAP_SOURCE_ADDRESS_1); | ||
| 21541 | + swap_source_address_ = | ||
| 21542 | + ((address_->sa_data[0]) << 8) | address_->sa_data[1]; | ||
| 21543 | + write_mac_(swap_source_address_, APPNIC_SWAP_SOURCE_ADDRESS_0); | ||
| 21544 | + memcpy(device->dev_addr, address_->sa_data, device->addr_len); | ||
| 21545 | + | ||
| 21546 | + return 0; | ||
| 21547 | +} | ||
| 21548 | + | ||
| 21549 | +/* | ||
| 21550 | + ====================================================================== | ||
| 21551 | + ====================================================================== | ||
| 21552 | + ====================================================================== | ||
| 21553 | + | ||
| 21554 | + ETHTOOL Operations | ||
| 21555 | + | ||
| 21556 | + ====================================================================== | ||
| 21557 | + ====================================================================== | ||
| 21558 | + ====================================================================== | ||
| 21559 | +*/ | ||
| 21560 | + | ||
| 21561 | +/* | ||
| 21562 | + ---------------------------------------------------------------------- | ||
| 21563 | + appnic_get_settings | ||
| 21564 | +*/ | ||
| 21565 | + | ||
| 21566 | +static int | ||
| 21567 | +appnic_get_settings( struct net_device * device, struct ethtool_cmd * command ) | ||
| 21568 | +{ | ||
| 21569 | + appnic_device_t * appnic_device_ = netdev_priv( device ); | ||
| 21570 | + | ||
| 21571 | + memset( command, 0, sizeof( struct ethtool_cmd ) ); | ||
| 21572 | + | ||
| 21573 | + /* What the hardware supports. */ | ||
| 21574 | + command->supported = | ||
| 21575 | + ( SUPPORTED_10baseT_Half | | ||
| 21576 | + SUPPORTED_10baseT_Full | | ||
| 21577 | + SUPPORTED_100baseT_Half | | ||
| 21578 | + SUPPORTED_100baseT_Full ); | ||
| 21579 | + | ||
| 21580 | + /* Acquire the device lock. */ | ||
| 21581 | + appnic_special_lock( & appnic_device_->lock ); | ||
| 21582 | + | ||
| 21583 | +#ifndef PHYLESS | ||
| 21584 | + | ||
| 21585 | + /* What is currently advertised. */ | ||
| 21586 | + | ||
| 21587 | + { | ||
| 21588 | + | ||
| 21589 | + unsigned short ad_value_; | ||
| 21590 | + | ||
| 21591 | + if( 0 != phy_read_( phy_address_, PHY_AUTONEG_ADVERTISE, & ad_value_ ) ) { | ||
| 21592 | + | ||
| 21593 | + ERROR_PRINT( "PHY read failed!" ); | ||
| 21594 | + appnic_special_unlock( & appnic_device_->lock ); | ||
| 21595 | + return -EIO; | ||
| 21596 | + | ||
| 21597 | + } | ||
| 21598 | + | ||
| 21599 | + switch( ad_value_ ) { | ||
| 21600 | + | ||
| 21601 | + case 0x1e1: | ||
| 21602 | + command->advertising = | ||
| 21603 | + ( ADVERTISED_100baseT_Full | ADVERTISED_100baseT_Half | | ||
| 21604 | + ADVERTISED_10baseT_Full | ADVERTISED_10baseT_Half ); | ||
| 21605 | + break; | ||
| 21606 | + | ||
| 21607 | + case 0xe1: | ||
| 21608 | + command->advertising = | ||
| 21609 | + ( ADVERTISED_100baseT_Half | | ||
| 21610 | + ADVERTISED_10baseT_Full | ADVERTISED_10baseT_Half ); | ||
| 21611 | + break; | ||
| 21612 | + | ||
| 21613 | + case 0x61: | ||
| 21614 | + command->advertising = | ||
| 21615 | + ( ADVERTISED_10baseT_Full | ADVERTISED_10baseT_Half ); | ||
| 21616 | + break; | ||
| 21617 | + | ||
| 21618 | + case 0x41: | ||
| 21619 | + command->advertising = | ||
| 21620 | + ( ADVERTISED_10baseT_Half ); | ||
| 21621 | + break; | ||
| 21622 | + | ||
| 21623 | + default: | ||
| 21624 | + break; | ||
| 21625 | + | ||
| 21626 | + } | ||
| 21627 | + | ||
| 21628 | + } | ||
| 21629 | + | ||
| 21630 | + /* The current speed. */ | ||
| 21631 | + | ||
| 21632 | + { | ||
| 21633 | + | ||
| 21634 | + int speed_; | ||
| 21635 | + | ||
| 21636 | + if( -1 == ( speed_ = phy_speed_( phy_address_ ) ) ) { | ||
| 21637 | + | ||
| 21638 | + ERROR_PRINT( "PHY read failed!" ); | ||
| 21639 | + appnic_special_unlock( & appnic_device_->lock ); | ||
| 21640 | + return -EIO; | ||
| 21641 | + | ||
| 21642 | + } | ||
| 21643 | + | ||
| 21644 | + if( 1 == speed_ ) { | ||
| 21645 | + | ||
| 21646 | + command->speed = SPEED_100; | ||
| 21647 | + | ||
| 21648 | + } else { | ||
| 21649 | + | ||
| 21650 | + command->speed = SPEED_10; | ||
| 21651 | + | ||
| 21652 | + } | ||
| 21653 | + | ||
| 21654 | + } | ||
| 21655 | + | ||
| 21656 | + /* Is the current link duplex? */ | ||
| 21657 | + | ||
| 21658 | + { | ||
| 21659 | + | ||
| 21660 | + int duplex_; | ||
| 21661 | + | ||
| 21662 | + if( -1 == ( duplex_ = phy_duplex_( phy_address_ ) ) ) { | ||
| 21663 | + | ||
| 21664 | + ERROR_PRINT( "PHY read failed!" ); | ||
| 21665 | + appnic_special_unlock( & appnic_device_->lock ); | ||
| 21666 | + return -EIO; | ||
| 21667 | + | ||
| 21668 | + } | ||
| 21669 | + | ||
| 21670 | + if( 1 == duplex_ ) { | ||
| 21671 | + | ||
| 21672 | + command->duplex = DUPLEX_FULL; | ||
| 21673 | + | ||
| 21674 | + } else { | ||
| 21675 | + | ||
| 21676 | + command->duplex = DUPLEX_HALF; | ||
| 21677 | + | ||
| 21678 | + } | ||
| 21679 | + | ||
| 21680 | + } | ||
| 21681 | + | ||
| 21682 | +#endif /* PHYLESS */ | ||
| 21683 | + | ||
| 21684 | + /* Is autoneg enabled? */ | ||
| 21685 | + command->autoneg = AUTONEG_ENABLE; | ||
| 21686 | + | ||
| 21687 | + /* Unlock and return success. */ | ||
| 21688 | + appnic_special_unlock( & appnic_device_->lock ); | ||
| 21689 | + | ||
| 21690 | + return 0; | ||
| 21691 | + | ||
| 21692 | +} | ||
| 21693 | + | ||
| 21694 | +/* | ||
| 21695 | + Fill in the struture... | ||
| 21696 | +*/ | ||
| 21697 | + | ||
| 21698 | +static const struct ethtool_ops appnic_ethtool_ops = { | ||
| 21699 | + .get_settings = appnic_get_settings | ||
| 21700 | +}; | ||
| 21701 | + | ||
| 21702 | + | ||
| 21703 | +/* | ||
| 21704 | + ====================================================================== | ||
| 21705 | + ====================================================================== | ||
| 21706 | + ====================================================================== | ||
| 21707 | + | ||
| 21708 | + Linux Module Interface. | ||
| 21709 | + | ||
| 21710 | + ====================================================================== | ||
| 21711 | + ====================================================================== | ||
| 21712 | + ====================================================================== | ||
| 21713 | +*/ | ||
| 21714 | + | ||
| 21715 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) | ||
| 21716 | +static const struct net_device_ops appnic_netdev_ops = { | ||
| 21717 | + .ndo_open = appnic_open, | ||
| 21718 | + .ndo_stop = appnic_stop, | ||
| 21719 | + .ndo_get_stats = appnic_get_stats, | ||
| 21720 | + .ndo_set_mac_address = appnic_set_mac_address, | ||
| 21721 | + .ndo_start_xmit = appnic_hard_start_xmit, | ||
| 21722 | +}; | ||
| 21723 | +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) */ | ||
| 21724 | + | ||
| 21725 | +/* | ||
| 21726 | + ---------------------------------------------------------------------- | ||
| 21727 | + appnic_init | ||
| 21728 | +*/ | ||
| 21729 | + | ||
| 21730 | +int | ||
| 21731 | +appnic_init( struct net_device * device ) | ||
| 21732 | +{ | ||
| 21733 | + | ||
| 21734 | + appnic_device_t * adapter = netdev_priv( device ); | ||
| 21735 | + | ||
| 21736 | + TRACE_BEGINNING( ); | ||
| 21737 | + | ||
| 21738 | + /* | ||
| 21739 | + Reset the MAC | ||
| 21740 | + */ | ||
| 21741 | + | ||
| 21742 | + write_mac_( 0x80000000, APPNIC_DMA_PCI_CONTROL ); | ||
| 21743 | + | ||
| 21744 | + /* | ||
| 21745 | + -- WORKAROUND -- WORKAROUND -- WORKAROUND -- WORKAROUND -- WORKAROUND -- | ||
| 21746 | + This is the software work around for defect 15129. Use 64 byte | ||
| 21747 | + buffers for receive descriptors for all dma. | ||
| 21748 | + -- WORKAROUND -- WORKAROUND -- WORKAROUND -- WORKAROUND -- WORKAROUND -- | ||
| 21749 | + */ | ||
| 21750 | +#ifndef CONFIG_ACP | ||
| 21751 | + if( 1 >= ( APP3XX_REVISION_REGISTER & 0x1f ) ) { | ||
| 21752 | + | ||
| 21753 | + printk( "++ Using work around for defect 15129\n" ); | ||
| 21754 | + rx_num_desc = ( 8 * DESCRIPTOR_GRANULARITY ); | ||
| 21755 | + rx_buf_sz = 32768; | ||
| 21756 | + | ||
| 21757 | + } | ||
| 21758 | +#endif | ||
| 21759 | + | ||
| 21760 | + /* | ||
| 21761 | + Allocate memory and initialize the descriptors | ||
| 21762 | + */ | ||
| 21763 | + | ||
| 21764 | + { | ||
| 21765 | + | ||
| 21766 | + void * dma_offset_; | ||
| 21767 | + | ||
| 21768 | + /* | ||
| 21769 | + fixup num_[rt]x_desc | ||
| 21770 | + */ | ||
| 21771 | + | ||
| 21772 | + if( 0 != ( rx_num_desc % DESCRIPTOR_GRANULARITY ) ) { | ||
| 21773 | + | ||
| 21774 | + WARN_PRINT( "rx_num_desc was not a multiple of %d.\n", | ||
| 21775 | + DESCRIPTOR_GRANULARITY ); | ||
| 21776 | + rx_num_desc += | ||
| 21777 | + DESCRIPTOR_GRANULARITY - ( rx_num_desc % DESCRIPTOR_GRANULARITY ); | ||
| 21778 | + | ||
| 21779 | + } | ||
| 21780 | + | ||
| 21781 | + adapter->rx_num_desc = rx_num_desc; | ||
| 21782 | + | ||
| 21783 | + if( 0 != ( tx_num_desc % DESCRIPTOR_GRANULARITY ) ) { | ||
| 21784 | + | ||
| 21785 | + WARN_PRINT( "tx_num_desc was not a multiple of %d.\n", | ||
| 21786 | + DESCRIPTOR_GRANULARITY ); | ||
| 21787 | + tx_num_desc += | ||
| 21788 | + DESCRIPTOR_GRANULARITY - ( tx_num_desc % DESCRIPTOR_GRANULARITY ); | ||
| 21789 | + | ||
| 21790 | + } | ||
| 21791 | + | ||
| 21792 | + adapter->tx_num_desc = tx_num_desc; | ||
| 21793 | + | ||
| 21794 | + DEBUG_PRINT( "rx_num_desc=%d tx_num_desc=%d\n", rx_num_desc, tx_num_desc ); | ||
| 21795 | + | ||
| 21796 | + /* | ||
| 21797 | + Fix up [rt]x_buf_sz. Must be some multiple of 64 bytes per descriptor. | ||
| 21798 | + */ | ||
| 21799 | + | ||
| 21800 | + if( 0 != ( rx_buf_sz % ( BUFFER_ALIGNMENT * | ||
| 21801 | + rx_num_desc ) ) ) { | ||
| 21802 | + | ||
| 21803 | + WARN_PRINT( "rx_buf_sz was not a multiple of %d.\n", | ||
| 21804 | + ( BUFFER_ALIGNMENT * rx_num_desc ) ); | ||
| 21805 | + rx_buf_sz += | ||
| 21806 | + ( BUFFER_ALIGNMENT * rx_num_desc ) - | ||
| 21807 | + ( rx_buf_sz % ( BUFFER_ALIGNMENT * | ||
| 21808 | + rx_num_desc ) ); | ||
| 21809 | + | ||
| 21810 | + } | ||
| 21811 | + | ||
| 21812 | + adapter->rx_buf_sz = rx_buf_sz; | ||
| 21813 | + | ||
| 21814 | + if( 0 != ( tx_buf_sz % ( BUFFER_ALIGNMENT * | ||
| 21815 | + tx_num_desc ) ) ) { | ||
| 21816 | + | ||
| 21817 | + WARN_PRINT( "tx_buf_sz was not a multiple of %d.\n", | ||
| 21818 | + ( BUFFER_ALIGNMENT * tx_num_desc ) ); | ||
| 21819 | + tx_buf_sz += | ||
| 21820 | + ( BUFFER_ALIGNMENT * tx_num_desc ) - | ||
| 21821 | + ( tx_buf_sz % ( BUFFER_ALIGNMENT * | ||
| 21822 | + tx_num_desc ) ); | ||
| 21823 | + | ||
| 21824 | + } | ||
| 21825 | + | ||
| 21826 | + adapter->tx_buf_sz = tx_buf_sz; | ||
| 21827 | + | ||
| 21828 | + DEBUG_PRINT( "rx_buf_sz=%d tx_buf_sz=%d\n", | ||
| 21829 | + rx_buf_sz, tx_buf_sz ); | ||
| 21830 | + | ||
| 21831 | + /* | ||
| 21832 | + Allocate dma-able memory | ||
| 21833 | + */ | ||
| 21834 | + | ||
| 21835 | + adapter->dma_alloc_size = | ||
| 21836 | + /* The tail pointers (rx and tx) */ | ||
| 21837 | + ( sizeof( appnic_queue_pointer_t ) * 2 ) + | ||
| 21838 | + /* The RX descriptor ring (and padding to allow | ||
| 21839 | + 64 byte alignment) */ | ||
| 21840 | + ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21841 | + adapter->rx_num_desc ) + | ||
| 21842 | + ( DESCRIPTOR_GRANULARITY ) + | ||
| 21843 | + /* The TX descriptor ring (and padding...) */ | ||
| 21844 | + ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21845 | + adapter->tx_num_desc ) + | ||
| 21846 | + ( DESCRIPTOR_GRANULARITY ) + | ||
| 21847 | + /* The RX buffer (and padding...) */ | ||
| 21848 | + ( adapter->rx_buf_sz ) + ( BUFFER_ALIGNMENT ) + | ||
| 21849 | + /* The TX buffer (and padding...) */ | ||
| 21850 | + ( adapter->tx_buf_sz ) + ( BUFFER_ALIGNMENT ); | ||
| 21851 | + | ||
| 21852 | +#ifdef DMA_CACHABLE | ||
| 21853 | + | ||
| 21854 | + if( ( void * ) 0 == | ||
| 21855 | + ( adapter->dma_alloc = ( void * ) | ||
| 21856 | + kmalloc( adapter->dma_alloc_size, GFP_KERNEL ) ) ) { | ||
| 21857 | + | ||
| 21858 | + ERROR_PRINT( "Could not allocate %d bytes of " | ||
| 21859 | + "DMA-able memory!\n", | ||
| 21860 | + adapter->dma_alloc_size ); | ||
| 21861 | + kfree( adapter ); | ||
| 21862 | + TRACE_ENDING( ); | ||
| 21863 | + return -ENOMEM; | ||
| 21864 | + | ||
| 21865 | + } | ||
| 21866 | + | ||
| 21867 | + adapter->dma_alloc_dma = virt_to_phys( adapter->dma_alloc ); | ||
| 21868 | + | ||
| 21869 | +#else | ||
| 21870 | + | ||
| 21871 | + /* This needs to be set to something sane for dma_alloc_coherent() */ | ||
| 21872 | + device->dev.archdata.dma_ops = &dma_direct_ops; | ||
| 21873 | + | ||
| 21874 | + if( ( void * ) 0 == | ||
| 21875 | + ( adapter->dma_alloc = ( void * ) | ||
| 21876 | + dma_direct_alloc_coherent( &device->dev, adapter->dma_alloc_size, | ||
| 21877 | + & adapter->dma_alloc_dma, | ||
| 21878 | + GFP_KERNEL ) ) ) { | ||
| 21879 | + | ||
| 21880 | + ERROR_PRINT( "Could not allocate %d bytes of " | ||
| 21881 | + "DMA-able memory!\n", | ||
| 21882 | + adapter->dma_alloc_size ); | ||
| 21883 | + kfree( adapter ); | ||
| 21884 | + TRACE_ENDING( ); | ||
| 21885 | + return -ENOMEM; | ||
| 21886 | + | ||
| 21887 | + } | ||
| 21888 | + | ||
| 21889 | +#endif | ||
| 21890 | + | ||
| 21891 | + adapter->dma_alloc_offset = | ||
| 21892 | + ( int ) adapter->dma_alloc - ( int ) adapter->dma_alloc_dma; | ||
| 21893 | + dma_offset_ = adapter->dma_alloc; | ||
| 21894 | + DEBUG_PRINT( "Allocated %d bytes at 0x%08lx(0x%08lx), " | ||
| 21895 | + "offset=0x%x.\n", | ||
| 21896 | + adapter->dma_alloc_size, | ||
| 21897 | + ( unsigned long ) adapter->dma_alloc, | ||
| 21898 | + ( unsigned long ) adapter->dma_alloc_dma, | ||
| 21899 | + adapter->dma_alloc_offset ); | ||
| 21900 | + printk( "Allocated %d bytes at 0x%08lx(0x%08lx), " | ||
| 21901 | + "offset=0x%x.\n", | ||
| 21902 | + adapter->dma_alloc_size, | ||
| 21903 | + ( unsigned long ) adapter->dma_alloc, | ||
| 21904 | + ( unsigned long ) adapter->dma_alloc_dma, | ||
| 21905 | + adapter->dma_alloc_offset ); | ||
| 21906 | + | ||
| 21907 | + /* | ||
| 21908 | + Initialize the tail pointers | ||
| 21909 | + */ | ||
| 21910 | + | ||
| 21911 | + adapter->rx_tail = ( appnic_queue_pointer_t * ) dma_offset_; | ||
| 21912 | + adapter->rx_tail_dma = | ||
| 21913 | + ( int ) adapter->rx_tail - ( int ) adapter->dma_alloc_offset; | ||
| 21914 | + dma_offset_ += sizeof( appnic_queue_pointer_t ); | ||
| 21915 | + memset( ( void * ) adapter->rx_tail, 0, | ||
| 21916 | + sizeof( appnic_queue_pointer_t ) ); | ||
| 21917 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21918 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21919 | + | ||
| 21920 | + adapter->tx_tail = ( appnic_queue_pointer_t * ) dma_offset_; | ||
| 21921 | + adapter->tx_tail_dma = | ||
| 21922 | + ( int ) adapter->tx_tail - ( int ) adapter->dma_alloc_offset; | ||
| 21923 | + dma_offset_ += sizeof( appnic_queue_pointer_t ); | ||
| 21924 | + memset( ( void * ) adapter->tx_tail, 0, | ||
| 21925 | + sizeof( appnic_queue_pointer_t ) ); | ||
| 21926 | + DEBUG_PRINT( "tx_tail=0x%08lx\n", | ||
| 21927 | + ( unsigned long ) adapter->tx_tail ); | ||
| 21928 | + | ||
| 21929 | + /* | ||
| 21930 | + Initialize the descriptor pointers | ||
| 21931 | + */ | ||
| 21932 | + | ||
| 21933 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21934 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21935 | + adapter->rx_desc = ( appnic_dma_descriptor_t * ) | ||
| 21936 | + ALIGN64B( dma_offset_ ); | ||
| 21937 | + DEBUG_PRINT( "rx_desc=0x%08lx\n", | ||
| 21938 | + ( unsigned long ) adapter->rx_desc ); | ||
| 21939 | + adapter->rx_desc_dma = | ||
| 21940 | + ( int ) adapter->rx_desc - ( int ) adapter->dma_alloc_offset; | ||
| 21941 | + dma_offset_ += ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21942 | + adapter->rx_num_desc ) + | ||
| 21943 | + ( DESCRIPTOR_GRANULARITY ); | ||
| 21944 | + memset( ( void * ) adapter->rx_desc, 0, | ||
| 21945 | + ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21946 | + adapter->rx_num_desc ) ); | ||
| 21947 | + | ||
| 21948 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21949 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21950 | + adapter->tx_desc = ( appnic_dma_descriptor_t * ) | ||
| 21951 | + ALIGN64B( dma_offset_ ); | ||
| 21952 | + DEBUG_PRINT( "tx_desc=0x%08lx\n", | ||
| 21953 | + ( unsigned long ) adapter->tx_desc ); | ||
| 21954 | + adapter->tx_desc_dma = | ||
| 21955 | + ( int ) adapter->tx_desc - ( int ) adapter->dma_alloc_offset; | ||
| 21956 | + dma_offset_ += ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21957 | + adapter->tx_num_desc ) + | ||
| 21958 | + ( DESCRIPTOR_GRANULARITY ); | ||
| 21959 | + memset( ( void * ) adapter->tx_desc, 0, | ||
| 21960 | + ( sizeof( appnic_dma_descriptor_t ) * | ||
| 21961 | + adapter->tx_num_desc ) ); | ||
| 21962 | + | ||
| 21963 | + /* | ||
| 21964 | + Initialize the buffer pointers | ||
| 21965 | + */ | ||
| 21966 | + | ||
| 21967 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21968 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21969 | + DEBUG_PRINT( "Initializing the RX buffer pointers, dma_offset=0x%lx/0x%lx\n", | ||
| 21970 | + ( unsigned long ) dma_offset_, | ||
| 21971 | + ( unsigned long ) ALIGN64B( dma_offset_ ) ); | ||
| 21972 | + adapter->rx_buf = ( void * ) ALIGN64B( dma_offset_ ); | ||
| 21973 | + adapter->rx_buf_dma = | ||
| 21974 | + ( int ) adapter->rx_buf - ( int ) adapter->dma_alloc_offset; | ||
| 21975 | + adapter->rx_buf_per_desc = adapter->rx_buf_sz / adapter->rx_num_desc; | ||
| 21976 | + | ||
| 21977 | + dma_offset_ += ( adapter->rx_buf_sz ) + ( BUFFER_ALIGNMENT ); | ||
| 21978 | + | ||
| 21979 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21980 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21981 | + DEBUG_PRINT( "Initializing the TX buffer pointers, dma_offset=0x%lx/0x%lx\n", | ||
| 21982 | + ( unsigned long ) dma_offset_, | ||
| 21983 | + ( unsigned long ) ALIGN64B( dma_offset_ ) ); | ||
| 21984 | + adapter->tx_buf = ( void * ) ALIGN64B( dma_offset_ ); | ||
| 21985 | + adapter->tx_buf_dma = | ||
| 21986 | + ( int ) adapter->tx_buf - ( int ) adapter->dma_alloc_offset; | ||
| 21987 | + adapter->tx_buf_per_desc = adapter->tx_buf_sz / adapter->tx_num_desc; | ||
| 21988 | + dma_offset_ += ( adapter->tx_buf_sz ) + ( BUFFER_ALIGNMENT ); | ||
| 21989 | + | ||
| 21990 | + /* | ||
| 21991 | + Initialize the descriptors | ||
| 21992 | + */ | ||
| 21993 | + | ||
| 21994 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 21995 | + ( unsigned long ) adapter->rx_tail ); | ||
| 21996 | + { | ||
| 21997 | + | ||
| 21998 | + int index_; | ||
| 21999 | + unsigned long buf_ = | ||
| 22000 | + ( unsigned long ) adapter->rx_buf_dma; | ||
| 22001 | + appnic_dma_descriptor_t descriptor; | ||
| 22002 | + | ||
| 22003 | + DEBUG_PRINT( "Initializing the RX descriptors at 0x%lx\n", buf_ ); | ||
| 22004 | + | ||
| 22005 | + for( index_ = 0; index_ < adapter->rx_num_desc; ++ index_ ) { | ||
| 22006 | + memset( ( void * ) & descriptor, 0, sizeof( appnic_dma_descriptor_t ) ); | ||
| 22007 | + descriptor.write = 1; | ||
| 22008 | + descriptor.interrupt_on_completion = 1; | ||
| 22009 | + descriptor.host_data_memory_pointer = buf_; | ||
| 22010 | + descriptor.data_transfer_length = adapter->rx_buf_per_desc; | ||
| 22011 | + writedescriptor( ( ( unsigned long ) adapter->rx_desc + | ||
| 22012 | + ( index_ * sizeof( appnic_dma_descriptor_t ) ) ), | ||
| 22013 | + & descriptor ); | ||
| 22014 | + buf_ += adapter->rx_buf_per_desc; | ||
| 22015 | + } | ||
| 22016 | + | ||
| 22017 | + buf_ = ( unsigned long ) adapter->tx_buf_dma; | ||
| 22018 | + DEBUG_PRINT( "Initializing the RX descriptors at 0x%lx\n", buf_ ); | ||
| 22019 | + | ||
| 22020 | + for( index_ = 0; | ||
| 22021 | + index_ < adapter->tx_num_desc; ++ index_ ) { | ||
| 22022 | + memset( ( void * ) & descriptor, 0, sizeof( appnic_dma_descriptor_t ) ); | ||
| 22023 | + descriptor.write = 1; | ||
| 22024 | + descriptor.interrupt_on_completion = 1; | ||
| 22025 | + descriptor.host_data_memory_pointer = buf_; | ||
| 22026 | + writedescriptor( ( ( unsigned long ) adapter->tx_desc + | ||
| 22027 | + ( index_ * sizeof( appnic_dma_descriptor_t ) ) ), | ||
| 22028 | + & descriptor ); | ||
| 22029 | + buf_ += adapter->tx_buf_per_desc; | ||
| 22030 | + } | ||
| 22031 | + } | ||
| 22032 | + | ||
| 22033 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 22034 | + ( unsigned long ) adapter->rx_tail ); | ||
| 22035 | + DEBUG_PRINT( "Initializing spin locks and semaphores.\n" ); | ||
| 22036 | + | ||
| 22037 | + /* | ||
| 22038 | + Initialize the spin lock. | ||
| 22039 | + */ | ||
| 22040 | + | ||
| 22041 | + spin_lock_init( & adapter->lock ); | ||
| 22042 | + spin_lock_init( & adapter->extra_lock ); | ||
| 22043 | + | ||
| 22044 | + /* | ||
| 22045 | + * TEMP: Initialize the semaphores | ||
| 22046 | + */ | ||
| 22047 | + mutex_init( & adapter->rx_sem); | ||
| 22048 | + mutex_init( & adapter->tx_sem); | ||
| 22049 | + mutex_init( & adapter->poll_sem); | ||
| 22050 | + | ||
| 22051 | + } | ||
| 22052 | + | ||
| 22053 | + /* | ||
| 22054 | + Take MAC out of reset | ||
| 22055 | + */ | ||
| 22056 | + | ||
| 22057 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 22058 | + ( unsigned long ) adapter->rx_tail ); | ||
| 22059 | + DEBUG_PRINT( "Enabling the MAC" ); | ||
| 22060 | + write_mac_( 0x0, APPNIC_RX_SOFT_RESET ); | ||
| 22061 | + write_mac_( 0x1, APPNIC_RX_MODE ); | ||
| 22062 | + write_mac_( 0x0, APPNIC_TX_SOFT_RESET ); | ||
| 22063 | + write_mac_( 0x1, APPNIC_TX_MODE ); | ||
| 22064 | + if( is_asic( ) ) { | ||
| 22065 | + write_mac_( 0x300a, APPNIC_TX_WATERMARK ); | ||
| 22066 | + } else { | ||
| 22067 | + write_mac_( 0xc00096, APPNIC_TX_WATERMARK ); | ||
| 22068 | + } | ||
| 22069 | + write_mac_( 0x1, APPNIC_TX_HALF_DUPLEX_CONF ); | ||
| 22070 | + write_mac_( 0xffff, APPNIC_TX_TIME_VALUE_CONF ); | ||
| 22071 | + write_mac_( 0x1, APPNIC_TX_INTERRUPT_CONTROL ); | ||
| 22072 | + write_mac_( 0x5275, APPNIC_TX_EXTENDED_CONF ); | ||
| 22073 | + write_mac_( 0x1, APPNIC_RX_INTERNAL_INTERRUPT_CONTROL ); | ||
| 22074 | + write_mac_( 0x1, APPNIC_RX_EXTERNAL_INTERRUPT_CONTROL ); | ||
| 22075 | + write_mac_( 0x40010000, APPNIC_DMA_PCI_CONTROL ); | ||
| 22076 | + write_mac_( 0x30000, APPNIC_DMA_CONTROL ); | ||
| 22077 | + writeio( 0x280044, dma_base + 0x60 ); | ||
| 22078 | + writeio( 0xc0, dma_base + 0x64 ); | ||
| 22079 | + | ||
| 22080 | + /* | ||
| 22081 | + Set the MAC address. | ||
| 22082 | + */ | ||
| 22083 | + | ||
| 22084 | + { | ||
| 22085 | + struct sockaddr address; | ||
| 22086 | + | ||
| 22087 | + memcpy(&(address.sa_data[0]), device->dev_addr, 6); | ||
| 22088 | + appnic_set_mac_address(device, &address); | ||
| 22089 | + } | ||
| 22090 | + | ||
| 22091 | + /* | ||
| 22092 | + Initialize the queue pointers. | ||
| 22093 | + */ | ||
| 22094 | + | ||
| 22095 | + DEBUG_PRINT( "rx_tail=0x%08lx\n", | ||
| 22096 | + ( unsigned long ) adapter->rx_tail ); | ||
| 22097 | + { | ||
| 22098 | + | ||
| 22099 | + /* | ||
| 22100 | + Receiver | ||
| 22101 | + */ | ||
| 22102 | + | ||
| 22103 | + memset( ( void * ) & adapter->rx_tail_copy, | ||
| 22104 | + 0, sizeof( appnic_queue_pointer_t ) ); | ||
| 22105 | + memset( ( void * ) & adapter->rx_head, | ||
| 22106 | + 0, sizeof( appnic_queue_pointer_t ) ); | ||
| 22107 | + | ||
| 22108 | + write_mac_( adapter->rx_desc_dma, | ||
| 22109 | + APPNIC_DMA_RX_QUEUE_BASE_ADDRESS ); | ||
| 22110 | + write_mac_( ( adapter->rx_num_desc * | ||
| 22111 | + sizeof( appnic_dma_descriptor_t ) ) / 1024, | ||
| 22112 | + APPNIC_DMA_RX_QUEUE_SIZE ); | ||
| 22113 | + /* indicate that all of the receive descriptors are ready */ | ||
| 22114 | + adapter->rx_head.bits.offset = | ||
| 22115 | + ( adapter->rx_num_desc - 1 ) * | ||
| 22116 | + sizeof( appnic_dma_descriptor_t ); | ||
| 22117 | + write_mac_( adapter->rx_tail_dma, | ||
| 22118 | + APPNIC_DMA_RX_TAIL_POINTER_ADDRESS ); | ||
| 22119 | + | ||
| 22120 | + /* | ||
| 22121 | + N.B. | ||
| 22122 | + | ||
| 22123 | + The boot loader may have used the NIC. If so, the | ||
| 22124 | + tail pointer must be read and the head pointer (and | ||
| 22125 | + local copy of the tail) based on it. | ||
| 22126 | + */ | ||
| 22127 | + | ||
| 22128 | + DEBUG_PRINT( "Initializing the RX tail: adapter=0x%lx\n", | ||
| 22129 | + ( unsigned long ) adapter ); | ||
| 22130 | + DEBUG_PRINT( "Initializing the RX tail: adapter->rx_tail=0x%lx\n", | ||
| 22131 | + ( unsigned long ) adapter->rx_tail ); | ||
| 22132 | + DEBUG_PRINT( "Initializing the RX tail: adapter->rx_tail->raw=0x%lx\n", | ||
| 22133 | + ( unsigned long ) adapter->rx_tail->raw ); | ||
| 22134 | + adapter->rx_tail->raw = | ||
| 22135 | + read_mac_( APPNIC_DMA_RX_TAIL_POINTER_LOCAL_COPY ); | ||
| 22136 | + adapter->rx_tail_copy.raw = adapter->rx_tail->raw; | ||
| 22137 | + adapter->rx_head.raw = adapter->rx_tail->raw; | ||
| 22138 | + queue_decrement_( & adapter->rx_head, adapter->rx_num_desc ); | ||
| 22139 | + adapter->rx_head.bits.generation_bit = | ||
| 22140 | + ( 0 == adapter->rx_head.bits.generation_bit ) ? 1 : 0; | ||
| 22141 | + write_mac_( adapter->rx_head.raw, APPNIC_DMA_RX_HEAD_POINTER ); | ||
| 22142 | + | ||
| 22143 | + /* | ||
| 22144 | + Transmitter | ||
| 22145 | + */ | ||
| 22146 | + | ||
| 22147 | + memset( ( void * ) & adapter->tx_tail_copy, | ||
| 22148 | + 0, sizeof( appnic_queue_pointer_t ) ); | ||
| 22149 | + memset( ( void * ) & adapter->tx_head, | ||
| 22150 | + 0, sizeof( appnic_queue_pointer_t ) ); | ||
| 22151 | + | ||
| 22152 | + write_mac_( adapter->tx_desc_dma, | ||
| 22153 | + APPNIC_DMA_TX_QUEUE_BASE_ADDRESS ); | ||
| 22154 | + write_mac_( ( adapter->tx_num_desc * | ||
| 22155 | + sizeof( appnic_dma_descriptor_t ) ) / 1024, | ||
| 22156 | + APPNIC_DMA_TX_QUEUE_SIZE ); | ||
| 22157 | + DEBUG_PRINT( "Writing 0x%lx to APPNIC_DMA_TX_TAIL_POINTER_ADDRESS\n", | ||
| 22158 | + ( unsigned long ) adapter->tx_tail_dma ); | ||
| 22159 | + write_mac_( adapter->tx_tail_dma, | ||
| 22160 | + APPNIC_DMA_TX_TAIL_POINTER_ADDRESS ); | ||
| 22161 | + | ||
| 22162 | + /* | ||
| 22163 | + N.B. | ||
| 22164 | + | ||
| 22165 | + The boot loader may have used the NIC. If so, the | ||
| 22166 | + tail pointer must be read and the head pointer (and | ||
| 22167 | + local copy of the tail) based on it. | ||
| 22168 | + */ | ||
| 22169 | + | ||
| 22170 | + DEBUG_PRINT( "Initializing the TX tail pointer at 0x%lx/0x%lx.\n", | ||
| 22171 | + ( unsigned long ) adapter->tx_tail, | ||
| 22172 | + ( unsigned long ) adapter->tx_tail->raw ); | ||
| 22173 | + adapter->tx_tail->raw = | ||
| 22174 | + read_mac_( APPNIC_DMA_TX_TAIL_POINTER_LOCAL_COPY ); | ||
| 22175 | + adapter->tx_tail_copy.raw = adapter->tx_tail->raw; | ||
| 22176 | + adapter->tx_head.raw = adapter->tx_tail->raw; | ||
| 22177 | + write_mac_( adapter->tx_head.raw, APPNIC_DMA_TX_HEAD_POINTER ); | ||
| 22178 | + | ||
| 22179 | + } | ||
| 22180 | + | ||
| 22181 | + /* clear statistics */ | ||
| 22182 | + | ||
| 22183 | + { | ||
| 22184 | + | ||
| 22185 | + appnic_device_t * device_ = netdev_priv( device ); | ||
| 22186 | + clear_statistics_( device_ ); | ||
| 22187 | + | ||
| 22188 | + } | ||
| 22189 | + | ||
| 22190 | + /* initialize the PHY */ | ||
| 22191 | + | ||
| 22192 | +#ifndef PHYLESS | ||
| 22193 | + | ||
| 22194 | + if( 0 != phy_enable_( phy_address_ ) ) { | ||
| 22195 | + | ||
| 22196 | + WARN_PRINT( "Failed to initialize the PHY!\n" ); | ||
| 22197 | + | ||
| 22198 | + } | ||
| 22199 | + | ||
| 22200 | +#endif /* PHYLESS */ | ||
| 22201 | + | ||
| 22202 | + /* fill in the net_device structure */ | ||
| 22203 | + | ||
| 22204 | + DEBUG_PRINT( "Filling in the device structure.\n" ); | ||
| 22205 | + ether_setup( device ); | ||
| 22206 | + | ||
| 22207 | +#ifdef CONFIG_ACP | ||
| 22208 | + if( NO_IRQ == | ||
| 22209 | + ( device->irq = irq_create_mapping( NULL, adapter->interrupt ) ) ) { | ||
| 22210 | + ERROR_PRINT( "irq_create_mapping( ) failed\n" ); | ||
| 22211 | + return -EBUSY; | ||
| 22212 | + } | ||
| 22213 | + | ||
| 22214 | + if( 0 != irq_set_irq_type( device->irq, IRQ_TYPE_LEVEL_HIGH ) ) { | ||
| 22215 | + ERROR_PRINT( "set_irq_type( ) failed\n" ); | ||
| 22216 | + return -EBUSY; | ||
| 22217 | + } | ||
| 22218 | +#else | ||
| 22219 | + device->irq = INT_MAC_DMA; | ||
| 22220 | +#endif | ||
| 22221 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) | ||
| 22222 | + device->open = appnic_open; | ||
| 22223 | + device->stop = appnic_stop; | ||
| 22224 | + device->hard_start_xmit = appnic_hard_start_xmit; | ||
| 22225 | + device->tx_timeout = appnic_tx_timeout; | ||
| 22226 | + device->get_stats = appnic_get_stats; | ||
| 22227 | + device->do_ioctl = appnic_do_ioctl; | ||
| 22228 | + device->watchdog_timeo = tx_timeout; | ||
| 22229 | + device->set_mac_address = appnic_set_mac_address; | ||
| 22230 | +#else | ||
| 22231 | + device->netdev_ops = & appnic_netdev_ops; | ||
| 22232 | +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) */ | ||
| 22233 | + SET_ETHTOOL_OPS( device, & appnic_ethtool_ops ); | ||
| 22234 | +#ifdef LSINET_NAPI | ||
| 22235 | + memset( ( void * ) & adapter->napi, 0, sizeof( struct napi_struct ) ); | ||
| 22236 | + netif_napi_add( device, & adapter->napi, lsinet_poll, LSINET_NAPI_WEIGHT ); | ||
| 22237 | + adapter->device = device; | ||
| 22238 | + printk( "%s:%d - lsinet_poll=0x%lx\n", | ||
| 22239 | + __FILE__, __LINE__, ( unsigned long ) lsinet_poll ); | ||
| 22240 | +#endif | ||
| 22241 | + | ||
| 22242 | + /* that's all */ | ||
| 22243 | + TRACE_ENDING( ); | ||
| 22244 | + return 0; | ||
| 22245 | + | ||
| 22246 | +} | ||
| 22247 | + | ||
| 22248 | +/* | ||
| 22249 | + ---------------------------------------------------------------------- | ||
| 22250 | + appnic_read_proc_ | ||
| 22251 | +*/ | ||
| 22252 | + | ||
| 22253 | +static int | ||
| 22254 | +appnic_read_proc_( char * page, char * * start, off_t offset, | ||
| 22255 | + int count, int * eof, void * data ) | ||
| 22256 | +{ | ||
| 22257 | + | ||
| 22258 | + int length_; | ||
| 22259 | + | ||
| 22260 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 22261 | + | ||
| 22262 | + struct net_device *net_device_ = this_net_device; | ||
| 22263 | + appnic_device_t * appnic_device_ = | ||
| 22264 | + ( appnic_device_t * ) net_device_->priv; | ||
| 22265 | + unsigned long divisor_; | ||
| 22266 | + unsigned long tx_tpa_real_; | ||
| 22267 | + unsigned long tx_tpa_virt_; | ||
| 22268 | + | ||
| 22269 | + divisor_ = get_core_speed( ) / 1000000; | ||
| 22270 | + | ||
| 22271 | +#if 1 | ||
| 22272 | + | ||
| 22273 | + if( appnic_device_->tx_tail_dma != | ||
| 22274 | + read_mac_( APPNIC_DMA_TX_TAIL_POINTER_ADDRESS ) ) { | ||
| 22275 | + | ||
| 22276 | + ERROR_PRINT( "Real Address Doesn't Match Configuration! " \ | ||
| 22277 | + "0x%x 0x%x\n", | ||
| 22278 | + appnic_device_->tx_tail_dma, | ||
| 22279 | + read_mac_( APPNIC_DMA_TX_TAIL_POINTER_ADDRESS ) ); | ||
| 22280 | + | ||
| 22281 | + } | ||
| 22282 | + | ||
| 22283 | + tx_tpa_real_ = appnic_device_->tx_tail_dma; | ||
| 22284 | + tx_tpa_virt_ = appnic_device_->tx_tail->raw; | ||
| 22285 | + | ||
| 22286 | + length_ = sprintf( page, | ||
| 22287 | + " GKM TEMP DEBUG Build 5\n" \ | ||
| 22288 | + " RX: head=0x%lx tail=0x%lx tail_copy=0x%lx\n" \ | ||
| 22289 | + " TX: head=0x%lx tail=0x%lx tail_copy=0x%lx\n" \ | ||
| 22290 | + "DMA: IE=0x%x IS=0x%x\n" \ | ||
| 22291 | + "VIC: status=0x%x raw=0x%x enable=0x%x\n" \ | ||
| 22292 | + " TX: tpa_config=0x%x tpa_real_=0x%lx " \ | ||
| 22293 | + "*tpa_virt_=0x%x\n", | ||
| 22294 | + appnic_device_->rx_head.raw, | ||
| 22295 | + appnic_device_->rx_tail->raw, | ||
| 22296 | + appnic_device_->rx_tail_copy.raw, | ||
| 22297 | + appnic_device_->tx_head.raw, | ||
| 22298 | + appnic_device_->tx_tail->raw, | ||
| 22299 | + appnic_device_->tx_tail_copy.raw, | ||
| 22300 | + read_mac_( APPNIC_DMA_INTERRUPT_ENABLE ), | ||
| 22301 | + read_mac_( APPNIC_DMA_INTERRUPT_STATUS ), | ||
| 22302 | + readl( ( APP3XX_VIC_BASE + VICIRQSTATUS ) ), | ||
| 22303 | + readl( ( APP3XX_VIC_BASE + VICRAWINTR ) ), | ||
| 22304 | + readl( ( APP3XX_VIC_BASE + VICINTENABLE ) ), | ||
| 22305 | + read_mac_( APPNIC_DMA_TX_TAIL_POINTER_ADDRESS ), | ||
| 22306 | + tx_tpa_real_, | ||
| 22307 | + * ( ( unsigned int * ) tx_tpa_virt_ ) ); | ||
| 22308 | + | ||
| 22309 | + | ||
| 22310 | +#else | ||
| 22311 | + | ||
| 22312 | + length_ = sprintf( page, | ||
| 22313 | + | ||
| 22314 | +#ifdef LSINET_NAPI | ||
| 22315 | + | ||
| 22316 | + "-- appnic.c\n" \ | ||
| 22317 | + "-- rx_num_desc = %d\n" \ | ||
| 22318 | + "-- rx_buf_sz = %d\n" \ | ||
| 22319 | + "-- rx_buf_per_desc = %d\n" \ | ||
| 22320 | + "-- tx_num_desc = %d\n" \ | ||
| 22321 | + "-- tx_buf_sz = %d\n" \ | ||
| 22322 | + "-- tx_buf_per_desc = %d\n" \ | ||
| 22323 | + "-- dropped_by_stack_ = %lu\n" \ | ||
| 22324 | + "-- transmit_interrupts_ = %lu\n" \ | ||
| 22325 | + "-- receive_interrupts_ = %lu\n" \ | ||
| 22326 | + "-- total_polls_ = %lu\n" \ | ||
| 22327 | + "-- jiffies_changed_ = %lu\n" \ | ||
| 22328 | + "-- out_of_tx_descriptors_ = %lu\n" \ | ||
| 22329 | + "-- divisor_ = %lu\n" \ | ||
| 22330 | + "-- RX(ns): min=%lu max=%lu avg/pkt=%llu " | ||
| 22331 | + "avg/poll=%llu\n" \ | ||
| 22332 | + "-- Max RX Packets Handled/poll: %lu\n" \ | ||
| 22333 | + "-- RX Size: min=%lu max=%lu total=%lu " | ||
| 22334 | + "average=%lu\n" \ | ||
| 22335 | + "-- TX(ns): min=%lu max=%lu avg/pkt=%llu\n" \ | ||
| 22336 | + "-- total_tx_packets_: %lu\n" \ | ||
| 22337 | + "-- recv t1: min=%lu max=%lu, avg=%llu\n" \ | ||
| 22338 | + "-- recv t2: min=%lu max=%lu, avg=%llu\n" \ | ||
| 22339 | + "-- recv t3: min=%lu max=%lu, avg=%llu\n", | ||
| 22340 | + | ||
| 22341 | +#else | ||
| 22342 | + | ||
| 22343 | + "-- appnic.c\n" \ | ||
| 22344 | + "-- rx_num_desc = %d\n" \ | ||
| 22345 | + "-- rx_buf_sz = %d\n" \ | ||
| 22346 | + "-- rx_buf_per_desc = %d\n" \ | ||
| 22347 | + "-- tx_num_desc = %d\n" \ | ||
| 22348 | + "-- tx_buf_sz = %d\n" \ | ||
| 22349 | + "-- tx_buf_per_desc = %d\n" \ | ||
| 22350 | + "-- dropped_by_stack_ = %lu\n" \ | ||
| 22351 | + "-- transmit_interrupts_ = %lu\n" \ | ||
| 22352 | + "-- total_rx_interrupts_ = %lu\n" \ | ||
| 22353 | + "-- jiffies_changed_ = %lu\n" \ | ||
| 22354 | + "-- out_of_tx_descriptors_ = %lu\n" \ | ||
| 22355 | + "-- divisor_ = %lu\n" \ | ||
| 22356 | + "-- RX(ns): min=%lu max=%lu avg/pkt=%llu " | ||
| 22357 | + "avg/irq=%llu\n" \ | ||
| 22358 | + "-- Max RX Packets Handled/Interrupt: %lu\n" \ | ||
| 22359 | + "-- RX Size: min=%lu max=%lu total=%lu " | ||
| 22360 | + "average=%lu\n" \ | ||
| 22361 | + "-- TX(ns): min=%lu max=%lu avg/pkt=%llu\n" \ | ||
| 22362 | + "-- total_tx_packets_: %lu\n" \ | ||
| 22363 | + "-- recv t1: min=%lu max=%lu, avg=%llu\n" \ | ||
| 22364 | + "-- recv t2: min=%lu max=%lu, avg=%llu\n" \ | ||
| 22365 | + "-- recv t3: min=%lu max=%lu, avg=%llu\n", | ||
| 22366 | + | ||
| 22367 | +#endif | ||
| 22368 | + | ||
| 22369 | + appnic_device_->rx_num_desc, | ||
| 22370 | + appnic_device_->rx_buf_sz, | ||
| 22371 | + appnic_device_->rx_buf_per_desc, | ||
| 22372 | + appnic_device_->tx_num_desc, | ||
| 22373 | + appnic_device_->tx_buf_sz, | ||
| 22374 | + appnic_device_->tx_buf_per_desc, | ||
| 22375 | + dropped_by_stack_, | ||
| 22376 | + transmit_interrupts_, | ||
| 22377 | + | ||
| 22378 | +#ifdef LSINET_NAPI | ||
| 22379 | + | ||
| 22380 | + receive_interrupts_, | ||
| 22381 | + total_polls_, | ||
| 22382 | + | ||
| 22383 | +#else | ||
| 22384 | + | ||
| 22385 | + total_rx_interrupts_, | ||
| 22386 | + | ||
| 22387 | +#endif | ||
| 22388 | + | ||
| 22389 | + jiffies_changed_, | ||
| 22390 | + out_of_tx_descriptors_, | ||
| 22391 | + divisor_, | ||
| 22392 | + profile_time_fmt(time_in_rx_min_,divisor_), | ||
| 22393 | + profile_time_fmt(time_in_rx_max_,divisor_), | ||
| 22394 | + total_rx_packets_handled_ ? | ||
| 22395 | + (profile_avg_fmt(total_rx_time_, | ||
| 22396 | + total_rx_packets_handled_, | ||
| 22397 | + divisor_)) : 0, | ||
| 22398 | + | ||
| 22399 | +#ifdef LSINET_NAPI | ||
| 22400 | + | ||
| 22401 | + total_polls_ ? | ||
| 22402 | + (profile_avg_fmt(total_rx_time_, | ||
| 22403 | + total_polls_, | ||
| 22404 | + divisor_)) : 0, | ||
| 22405 | + | ||
| 22406 | +#else | ||
| 22407 | + | ||
| 22408 | + total_rx_interrupts_ ? | ||
| 22409 | + (profile_avg_fmt(total_rx_time_, | ||
| 22410 | + total_rx_interrupts_, | ||
| 22411 | + divisor_)) : 0, | ||
| 22412 | + | ||
| 22413 | +#endif | ||
| 22414 | + | ||
| 22415 | + max_rx_packets_handled_, | ||
| 22416 | + rx_packet_size_min_, rx_packet_size_max_, | ||
| 22417 | + total_rx_bytes_, | ||
| 22418 | + total_rx_packets_handled_ ? | ||
| 22419 | + ( total_rx_bytes_ / total_rx_packets_handled_ ) : | ||
| 22420 | + 0, | ||
| 22421 | + profile_time_fmt(time_in_tx_min_,divisor_), | ||
| 22422 | + profile_time_fmt(time_in_tx_max_,divisor_), | ||
| 22423 | + total_tx_packets_ ? | ||
| 22424 | + (profile_avg_fmt(total_tx_time_, | ||
| 22425 | + total_tx_packets_, | ||
| 22426 | + divisor_)) : 0, | ||
| 22427 | + total_tx_packets_, | ||
| 22428 | + profile_time_fmt(recv_t1_min_,divisor_), | ||
| 22429 | + profile_time_fmt(recv_t1_max_,divisor_), | ||
| 22430 | + total_rx_packets_handled_ ? | ||
| 22431 | + ( total_rx_packets_sent_up_ ? | ||
| 22432 | + (profile_avg_fmt(recv_t1_tot_, | ||
| 22433 | + total_rx_packets_handled_, | ||
| 22434 | + divisor_)) : 0 ) : 0, | ||
| 22435 | + profile_time_fmt(recv_t2_min_,divisor_), | ||
| 22436 | + profile_time_fmt(recv_t2_max_,divisor_), | ||
| 22437 | + total_rx_packets_sent_up_ ? | ||
| 22438 | + (profile_avg_fmt(recv_t2_tot_, | ||
| 22439 | + total_rx_packets_sent_up_, | ||
| 22440 | + divisor_)) : 0, | ||
| 22441 | + profile_time_fmt(recv_t3_min_,divisor_), | ||
| 22442 | + profile_time_fmt(recv_t3_max_,divisor_), | ||
| 22443 | + total_rx_packets_sent_up_ ? | ||
| 22444 | + (profile_avg_fmt(recv_t3_tot_, | ||
| 22445 | + total_rx_packets_sent_up_, | ||
| 22446 | + divisor_)) : 0); | ||
| 22447 | + | ||
| 22448 | +#endif | ||
| 22449 | + | ||
| 22450 | + time_in_rx_max_ = 0; | ||
| 22451 | + time_in_rx_min_ = 0xffffffff; | ||
| 22452 | + rx_packet_size_max_ = 0; | ||
| 22453 | + rx_packet_size_min_ = 0xffffffff; | ||
| 22454 | + total_rx_bytes_ = 0; | ||
| 22455 | + total_rx_packets_handled_ = 1; | ||
| 22456 | + total_rx_time_ = 0; | ||
| 22457 | + max_rx_packets_handled_ = 0; | ||
| 22458 | + total_rx_interrupts_ = 0; | ||
| 22459 | + | ||
| 22460 | +#ifdef LSINET_NAPI | ||
| 22461 | + | ||
| 22462 | + receive_interrupts_ = 0; | ||
| 22463 | + total_polls_ = 0; | ||
| 22464 | + | ||
| 22465 | +#endif | ||
| 22466 | + | ||
| 22467 | + time_in_tx_max_ = 0; | ||
| 22468 | + time_in_tx_min_ = 0xffffffff; | ||
| 22469 | + total_tx_time_ = 0; | ||
| 22470 | + total_tx_packets_ = 1; | ||
| 22471 | + jiffies_changed_ = 0; | ||
| 22472 | + recv_t1_min_ = 0xffffffff; | ||
| 22473 | + recv_t2_min_ = 0xffffffff; | ||
| 22474 | + recv_t3_min_ = 0xffffffff; | ||
| 22475 | + recv_t1_max_ = 0; | ||
| 22476 | + recv_t2_max_ = 0; | ||
| 22477 | + recv_t3_max_ = 0; | ||
| 22478 | + recv_t1_tot_ = 0; | ||
| 22479 | + recv_t2_tot_ = 0; | ||
| 22480 | + recv_t3_tot_ = 0; | ||
| 22481 | + total_rx_packets_sent_up_ = 1; | ||
| 22482 | + | ||
| 22483 | +#else | ||
| 22484 | + | ||
| 22485 | + length_ = sprintf( page, "-- appnic.c -- Profiling is disabled\n" ); | ||
| 22486 | + | ||
| 22487 | +#endif | ||
| 22488 | + | ||
| 22489 | + /* that's all */ | ||
| 22490 | + return length_; | ||
| 22491 | + | ||
| 22492 | +} | ||
| 22493 | + | ||
| 22494 | +/* | ||
| 22495 | + ---------------------------------------------------------------------- | ||
| 22496 | + lsinet_init | ||
| 22497 | +*/ | ||
| 22498 | + | ||
| 22499 | +int | ||
| 22500 | +lsinet_init(void) | ||
| 22501 | +{ | ||
| 22502 | + int rc = 0; | ||
| 22503 | + struct net_device *device; | ||
| 22504 | + struct device_node *np = NULL; | ||
| 22505 | + const u32 *field; | ||
| 22506 | + appnic_device_t *appnic_device; | ||
| 22507 | + | ||
| 22508 | + TRACE_BEGINNING(); | ||
| 22509 | + | ||
| 22510 | + /* Allocate space for the device. */ | ||
| 22511 | + if ((struct net_device *)0 == | ||
| 22512 | + (device = alloc_etherdev(sizeof(appnic_device_t)))) { | ||
| 22513 | + ERROR_PRINT( "Couldn't allocate net device." ); | ||
| 22514 | + rc = -ENOMEM; | ||
| 22515 | + goto out; | ||
| 22516 | + } | ||
| 22517 | + | ||
| 22518 | + this_net_device = device; /* For /proc/reads. */ | ||
| 22519 | + appnic_device = (appnic_device_t *)netdev_priv(device); | ||
| 22520 | + | ||
| 22521 | + /* | ||
| 22522 | + Get the physical addresses, interrupt number, etc. from the | ||
| 22523 | + device tree. If no entry exists (older boot loader...) just | ||
| 22524 | + use the pre-devicetree method. | ||
| 22525 | + */ | ||
| 22526 | + | ||
| 22527 | + np = of_find_node_by_type(np, "network"); | ||
| 22528 | + | ||
| 22529 | + while (np && !of_device_is_compatible(np, "acp-femac")) | ||
| 22530 | + np = of_find_node_by_type(np, "network"); | ||
| 22531 | + | ||
| 22532 | + if (np) { | ||
| 22533 | + u64 value64; | ||
| 22534 | + u32 value32; | ||
| 22535 | + int length; | ||
| 22536 | + | ||
| 22537 | + field = of_get_property(np, "enabled", NULL); | ||
| 22538 | + | ||
| 22539 | + if (!field || (field && (0 == *field))) { | ||
| 22540 | + ERROR_PRINT("Not Enabled\n"); | ||
| 22541 | + rc = -EINVAL; | ||
| 22542 | + goto out; | ||
| 22543 | + } | ||
| 22544 | + | ||
| 22545 | + field = of_get_property(np, "reg", NULL); | ||
| 22546 | + | ||
| 22547 | + if (!field) { | ||
| 22548 | + ERROR_PRINT("Couldn't get \"reg\" property.\n"); | ||
| 22549 | + rc = -EINVAL; | ||
| 22550 | + goto out; | ||
| 22551 | + } | ||
| 22552 | + | ||
| 22553 | + value64 = of_translate_address(np, field); | ||
| 22554 | + value32 = field[1]; | ||
| 22555 | + field += 2; | ||
| 22556 | + rx_base = ioremap(value64, value32); | ||
| 22557 | + appnic_device->rx_base = rx_base; | ||
| 22558 | + value64 = of_translate_address(np, field); | ||
| 22559 | + value32 = field[1]; | ||
| 22560 | + field += 2; | ||
| 22561 | + tx_base = ioremap(value64, value32); | ||
| 22562 | + appnic_device->tx_base = tx_base; | ||
| 22563 | + value64 = of_translate_address(np, field); | ||
| 22564 | + value32 = field[1]; | ||
| 22565 | + field += 2; | ||
| 22566 | + dma_base = ioremap(value64, value32); | ||
| 22567 | + appnic_device->dma_base = dma_base; | ||
| 22568 | + | ||
| 22569 | + field = of_get_property(np, "interrupts", NULL); | ||
| 22570 | + | ||
| 22571 | + if (field) | ||
| 22572 | + appnic_device->interrupt = field[0]; | ||
| 22573 | + else | ||
| 22574 | + goto device_tree_failed; | ||
| 22575 | + | ||
| 22576 | + field = of_get_property(np, "mdio-clock", NULL); | ||
| 22577 | + | ||
| 22578 | + if (!field) { | ||
| 22579 | + goto device_tree_failed; | ||
| 22580 | + } else { | ||
| 22581 | + appnic_device->mdio_clock = field[0]; | ||
| 22582 | + } | ||
| 22583 | + | ||
| 22584 | + field = of_get_property(np, "phy-address", NULL); | ||
| 22585 | + | ||
| 22586 | + if (!field) { | ||
| 22587 | + goto device_tree_failed; | ||
| 22588 | + } else { | ||
| 22589 | + appnic_device->phy_address = field[0]; | ||
| 22590 | + } | ||
| 22591 | + | ||
| 22592 | + field = of_get_property(np, "ad-value", NULL); | ||
| 22593 | + | ||
| 22594 | + if (!field) { | ||
| 22595 | + goto device_tree_failed; | ||
| 22596 | + } else { | ||
| 22597 | + appnic_device->ad_value = field[0]; | ||
| 22598 | + } | ||
| 22599 | + | ||
| 22600 | + field = of_get_property(np, "mac-address", &length); | ||
| 22601 | + | ||
| 22602 | + if (!field || 6 != length) { | ||
| 22603 | + goto device_tree_failed; | ||
| 22604 | + } else { | ||
| 22605 | + int i; | ||
| 22606 | + u8 *value; | ||
| 22607 | + | ||
| 22608 | + value = (u8 *)field; | ||
| 22609 | + | ||
| 22610 | + for (i = 0; i < 6; ++i) { | ||
| 22611 | + /*printk("value[%d] = 0x%2x\n", i, value[i]);*/ | ||
| 22612 | + appnic_device->mac_addr[i] = value[i]; | ||
| 22613 | + } | ||
| 22614 | + } | ||
| 22615 | + | ||
| 22616 | + memcpy(device->dev_addr, &appnic_device->mac_addr[0], 6); | ||
| 22617 | + memcpy(device->perm_addr, &appnic_device->mac_addr[0], 6); | ||
| 22618 | + | ||
| 22619 | + goto device_tree_succeeded; | ||
| 22620 | + | ||
| 22621 | + device_tree_failed: | ||
| 22622 | + ERROR_PRINT("Reading Device Tree Failed\n"); | ||
| 22623 | + iounmap(rx_base); | ||
| 22624 | + iounmap(tx_base); | ||
| 22625 | + iounmap(dma_base); | ||
| 22626 | + rc = -EINVAL; | ||
| 22627 | + goto out; | ||
| 22628 | + | ||
| 22629 | + } else { | ||
| 22630 | + unsigned char ethaddr_string[20]; | ||
| 22631 | + | ||
| 22632 | + if (0 != ubootenv_get("ethaddr", ethaddr_string)) { | ||
| 22633 | + ERROR_PRINT("Could not read ethernet address!\n"); | ||
| 22634 | + return -EBUSY; | ||
| 22635 | + } else { | ||
| 22636 | + char *string; | ||
| 22637 | + int i = 0; | ||
| 22638 | + u8 mac_address[6]; | ||
| 22639 | + | ||
| 22640 | + string = ethaddr_string; | ||
| 22641 | + | ||
| 22642 | + while ((0 != string) && (6 > i)) { | ||
| 22643 | + char *value; | ||
| 22644 | + | ||
| 22645 | + value = strsep(&string, ":"); | ||
| 22646 | + mac_address[i++] = | ||
| 22647 | + simple_strtoul(value, NULL, 16); | ||
| 22648 | + } | ||
| 22649 | + | ||
| 22650 | + memcpy(device->dev_addr, mac_address, 6); | ||
| 22651 | + memcpy(device->perm_addr, mac_address, 6); | ||
| 22652 | + device->addr_len = 6; | ||
| 22653 | + } | ||
| 22654 | + | ||
| 22655 | + printk("LSI FEMAC: Using Static Addresses and Interrupts.\n"); | ||
| 22656 | + rx_base = ioremap(0x002000480000ULL, 0x1000); | ||
| 22657 | + appnic_device->rx_base = ioremap(0x002000480000ULL, 0x1000); | ||
| 22658 | + tx_base = ioremap(0x002000481000ULL, 0x1000); | ||
| 22659 | + appnic_device->tx_base = ioremap(0x002000481000ULL, 0x1000); | ||
| 22660 | + dma_base = ioremap(0x002000482000ULL, 0x1000); | ||
| 22661 | + appnic_device->dma_base = ioremap(0x002000482000ULL, 0x1000); | ||
| 22662 | + appnic_device->interrupt = 33; | ||
| 22663 | + } | ||
| 22664 | + | ||
| 22665 | + device_tree_succeeded: | ||
| 22666 | + | ||
| 22667 | +#ifdef __APPNIC_C_PROFILE__ | ||
| 22668 | + writel( 0xffffffff, ( TIMER7_BASE + TIMER_n_LOAD ) ); | ||
| 22669 | + writel( 0xffffffff, ( TIMER7_BASE + TIMER_n_VALUE ) ); | ||
| 22670 | + writel( ( TIMER_n_CONTROL_ENABLE | | ||
| 22671 | + TIMER_n_CONTROL_MODE | | ||
| 22672 | + TIMER_n_CONTROL_SIZE ), | ||
| 22673 | + ( TIMER7_BASE + TIMER_n_CONTROL ) ); | ||
| 22674 | +#endif /* __APPNIC_C_PROFILE__ */ | ||
| 22675 | + | ||
| 22676 | + /* Initialize the device. */ | ||
| 22677 | + | ||
| 22678 | + if( 0 != ( rc = appnic_init( device ) ) ) { | ||
| 22679 | + ERROR_PRINT( "appnic_init( ) failed: %d\n", rc ); | ||
| 22680 | + rc = -ENODEV; | ||
| 22681 | + goto out; | ||
| 22682 | + } | ||
| 22683 | + | ||
| 22684 | + strcpy(this_net_device->name, "eth%d"); | ||
| 22685 | + | ||
| 22686 | + /* Register the device. */ | ||
| 22687 | + | ||
| 22688 | + if (0 != (rc = register_netdev(this_net_device))) { | ||
| 22689 | + ERROR_PRINT("register_netdev() failed: %d\n", rc); | ||
| 22690 | + rc = -ENODEV; | ||
| 22691 | + goto out; | ||
| 22692 | + } | ||
| 22693 | + | ||
| 22694 | + /* Create the /proc entry. */ | ||
| 22695 | + create_proc_read_entry( "driver/appnic", 0, NULL, | ||
| 22696 | + appnic_read_proc_, NULL ); | ||
| 22697 | + | ||
| 22698 | + out: | ||
| 22699 | + TRACE_ENDING( ); | ||
| 22700 | + return rc; | ||
| 22701 | +} | ||
| 22702 | + | ||
| 22703 | +module_init(lsinet_init); | ||
| 22704 | + | ||
| 22705 | +/* | ||
| 22706 | + ---------------------------------------------------------------------- | ||
| 22707 | + lsinet_exit | ||
| 22708 | +*/ | ||
| 22709 | + | ||
| 22710 | +void __exit | ||
| 22711 | +lsinet_exit(void) | ||
| 22712 | +{ | ||
| 22713 | + TRACE_BEGINNING(); | ||
| 22714 | + remove_proc_entry("driver/appnic", NULL); | ||
| 22715 | + unregister_netdev(this_net_device); | ||
| 22716 | + TRACE_ENDING(); | ||
| 22717 | + | ||
| 22718 | + return; | ||
| 22719 | +} | ||
| 22720 | + | ||
| 22721 | +module_exit(lsinet_exit); | ||
| 22722 | diff --git a/drivers/lsi/acp/pci_plx.c b/drivers/lsi/acp/pci_plx.c | ||
| 22723 | new file mode 100644 | ||
| 22724 | index 0000000..1a5179e | ||
| 22725 | --- /dev/null | ||
| 22726 | +++ b/drivers/lsi/acp/pci_plx.c | ||
| 22727 | @@ -0,0 +1,795 @@ | ||
| 22728 | +/* | ||
| 22729 | + * drivers/lsi/acp/pci_plx.c | ||
| 22730 | + * | ||
| 22731 | + * PCIe PLX controller Driver for LSI's ACP | ||
| 22732 | + * | ||
| 22733 | + * Copyright (C) 2009 LSI Inc. | ||
| 22734 | + * | ||
| 22735 | + * This program is free software; you can redistribute it and/or modify | ||
| 22736 | + * it under the terms of the GNU General Public License as published by | ||
| 22737 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 22738 | + * (at your option) any later version. | ||
| 22739 | + * | ||
| 22740 | + * This program is distributed in the hope that it will be useful, | ||
| 22741 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 22742 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22743 | + * GNU General Public License for more details. | ||
| 22744 | + * | ||
| 22745 | + * You should have received a copy of the GNU General Public License | ||
| 22746 | + * along with this program; if not, write to the Free Software | ||
| 22747 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 22748 | + * | ||
| 22749 | + */ | ||
| 22750 | + | ||
| 22751 | +/************************************************************************/ | ||
| 22752 | +#include <linux/fs.h> | ||
| 22753 | +#include <linux/module.h> | ||
| 22754 | +#include <linux/init.h> | ||
| 22755 | +#include <linux/pci.h> | ||
| 22756 | +#include <linux/interrupt.h> | ||
| 22757 | +#include <asm/uaccess.h> | ||
| 22758 | +#include <linux/version.h> | ||
| 22759 | +#include <iso646.h> | ||
| 22760 | + | ||
| 22761 | + | ||
| 22762 | +/* Mode PLX API uses to access device*/ | ||
| 22763 | +typedef enum _PLX_CHIP_FAMILY | ||
| 22764 | +{ | ||
| 22765 | + PLX_FAMILY_NONE = 0, | ||
| 22766 | + PLX_FAMILY_UNKNOWN, | ||
| 22767 | + PLX_FAMILY_BRIDGE_P2L, // 9000 series & 8311 | ||
| 22768 | + PLX_FAMILY_BRIDGE_PCI_P2P, // 6000 series | ||
| 22769 | + PLX_FAMILY_BRIDGE_PCIE_P2P, // 8111,8112,8114 | ||
| 22770 | + PLX_FAMILY_ALTAIR, // 8525,8533,8547,8548 | ||
| 22771 | + PLX_FAMILY_ALTAIR_XL, // 8505,8509 | ||
| 22772 | + PLX_FAMILY_VEGA, // 8516,8524,8532 | ||
| 22773 | + PLX_FAMILY_VEGA_LITE, // 8508,8512,8517,8518 | ||
| 22774 | + PLX_FAMILY_DENEB, // 8612,8616,8624,8632,8647,8648 | ||
| 22775 | + PLX_FAMILY_SIRIUS, // 8604,8606,8608,8609,8613,8614,8615,8617,8618,8619 | ||
| 22776 | + PLX_FAMILY_CYGNUS, // 8625,8636,8649,8664,8680,8696 | ||
| 22777 | + PLX_FAMILY_SCOUT, // 8700 | ||
| 22778 | + PLX_FAMILY_DRACO_1, // 8408,8416,8712,8716,8724,8732,8747,8748 | ||
| 22779 | + PLX_FAMILY_DRACO_2, // 8713,8717,8725,8733,8749 | ||
| 22780 | + PLX_FAMILY_MIRA, | ||
| 22781 | + PLX_FAMILY_CAPELLA | ||
| 22782 | +} PLX_CHIP_FAMILY; | ||
| 22783 | + | ||
| 22784 | + | ||
| 22785 | +// simple version number | ||
| 22786 | +#define _template_SOFTWARE_VERSION_NUMBER 1.0 | ||
| 22787 | + | ||
| 22788 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) /* not < 2.5 */ | ||
| 22789 | +# error "This kernel is too old: not supported by this file" | ||
| 22790 | +#endif | ||
| 22791 | + | ||
| 22792 | +static int i_foo; | ||
| 22793 | + | ||
| 22794 | +MODULE_LICENSE("GPL"); | ||
| 22795 | +MODULE_AUTHOR("LSI Corp"); | ||
| 22796 | +MODULE_DESCRIPTION("PLX PCIE device driver"); | ||
| 22797 | +module_param(i_foo, int, 0444); // Module parameter, unused | ||
| 22798 | +MODULE_PARM_DESC(i_foo, "foo frequency"); // unused | ||
| 22799 | + | ||
| 22800 | +// vendor and device id of the PCI device | ||
| 22801 | +#define VENDOR_ID 0x10B5 // vendor id: buggy Kolter card: official 0x1001 but real 0x0001 | ||
| 22802 | +#define DEVICE_ID 0x8608 // device id of the Proto-3 card | ||
| 22803 | + | ||
| 22804 | +// for first and second i/o region (pci memory): | ||
| 22805 | +static unsigned long ioport=0L, iolen=0L, memstart=0L, memlen=0L; | ||
| 22806 | +static int i_template_major = 231; | ||
| 22807 | +static int Uboot_PLX = 1; | ||
| 22808 | + | ||
| 22809 | + | ||
| 22810 | +#define RtlZeroMemory(pDest, count) memset((pDest), 0, (count)) | ||
| 22811 | +#define RtlCopyMemory(pDest, pSrc, count) memcpy((pDest), (pSrc), (count)) | ||
| 22812 | + | ||
| 22813 | + | ||
| 22814 | +#define PLX_BUS_READ32_ENDIAN(endian, addr) \ | ||
| 22815 | + in_##endian##32((volatile u32 __iomem *) (addr)) | ||
| 22816 | + | ||
| 22817 | +#define PLX_BUS_READ32_LE(addr) PLX_BUS_READ32_ENDIAN(le, addr) | ||
| 22818 | + | ||
| 22819 | +#define PLX_BUS_READ32_BE(addr) PLX_BUS_READ32_ENDIAN(be, addr) | ||
| 22820 | + | ||
| 22821 | + | ||
| 22822 | +#define PLX_BUS_WRITE32_ENDIAN(endian, addr, data) \ | ||
| 22823 | + do { \ | ||
| 22824 | + u32 * __a__ = (u32 *) addr; \ | ||
| 22825 | + u32 __d__ = data; \ | ||
| 22826 | + out_##endian##32((volatile u32 __iomem *) __a__, __d__); \ | ||
| 22827 | + } while (0); | ||
| 22828 | + | ||
| 22829 | + | ||
| 22830 | +#define PLX_BUS_WRITE32_LE(addr, data) PLX_BUS_WRITE32_ENDIAN(le, addr, data) | ||
| 22831 | + | ||
| 22832 | +#define PLX_BUS_WRITE32_BE(addr, data) PLX_BUS_WRITE32_ENDIAN(be, addr, data) | ||
| 22833 | +#if 1 | ||
| 22834 | +// Macros for PLX chip register access | ||
| 22835 | +#define PLX_8000_REG_READ(addr) PLX_BUS_READ32_LE(addr) | ||
| 22836 | + | ||
| 22837 | + | ||
| 22838 | +#define PLX_8000_REG_WRITE(addr, data) PLX_BUS_WRITE32_LE(addr, data) | ||
| 22839 | +#endif | ||
| 22840 | + | ||
| 22841 | + | ||
| 22842 | +// not really necessary; for future use | ||
| 22843 | +MODULE_DEVICE_TABLE(pci, pci_drv_ids); | ||
| 22844 | + | ||
| 22845 | +static struct | ||
| 22846 | +pci_device_id pci_drv_ids[] __devinitdata = | ||
| 22847 | +{ | ||
| 22848 | + // { VENDOR_ID, DEVICE_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, | ||
| 22849 | + { PCI_DEVICE(VENDOR_ID, DEVICE_ID), }, | ||
| 22850 | + { 0, } | ||
| 22851 | +}; | ||
| 22852 | + | ||
| 22853 | +// PCI BAR Properties | ||
| 22854 | +typedef struct _PLX_PCI_BAR_PROP | ||
| 22855 | +{ | ||
| 22856 | + u32 BarValue; // Actual value in BAR | ||
| 22857 | + u64 Physical; // BAR Physical Address | ||
| 22858 | + u64 Size; // Size of BAR space | ||
| 22859 | + int bIoSpace; // Memory or I/O space? | ||
| 22860 | + int bPrefetchable; // Is space pre-fetchable? | ||
| 22861 | + int b64bit; // Is PCI BAR 64-bit? | ||
| 22862 | +} PLX_PCI_BAR_PROP; | ||
| 22863 | + | ||
| 22864 | +// PCI BAR Space information | ||
| 22865 | +typedef struct _PLX_PCI_BAR_INFO | ||
| 22866 | +{ | ||
| 22867 | + u32 pVa; // BAR Kernel Virtual Address | ||
| 22868 | + PLX_PCI_BAR_PROP Properties; // BAR Properties | ||
| 22869 | + int bResourceClaimed; // Was driver able to claim region? | ||
| 22870 | +} PLX_PCI_BAR_INFO; | ||
| 22871 | + | ||
| 22872 | +// PCI Device Key Identifier | ||
| 22873 | +typedef struct _PLX_DEVICE_KEY | ||
| 22874 | +{ | ||
| 22875 | + u32 IsValidTag; // Magic number to determine validity | ||
| 22876 | + u8 bus; // Physical device location | ||
| 22877 | + u8 slot; | ||
| 22878 | + u8 function; | ||
| 22879 | + u16 VendorId; // Device Identifier | ||
| 22880 | + u16 DeviceId; | ||
| 22881 | + u16 SubVendorId; | ||
| 22882 | + u16 SubDeviceId; | ||
| 22883 | + u8 Revision; | ||
| 22884 | + u16 PlxChip; // PLX chip type | ||
| 22885 | + u8 PlxRevision; // PLX chip revision | ||
| 22886 | + u8 PlxFamily; // PLX chip family | ||
| 22887 | + u8 ApiIndex; // Used internally by the API | ||
| 22888 | + u8 DeviceNumber; // Used internally by device drivers | ||
| 22889 | + u8 ApiMode; // Mode API uses to access device | ||
| 22890 | + u8 PlxPort; // PLX port number of device | ||
| 22891 | + u8 NTPortType; // If NT port, stores NT port type | ||
| 22892 | + u8 NTPortNum; // If NT port exists, store NT port number | ||
| 22893 | + u32 ApiInternal[2]; // Reserved for internal PLX API use | ||
| 22894 | + u8 *pRegVa; // Virtual address to registers | ||
| 22895 | + u32 Offset_RegBase; // The NT register base offset | ||
| 22896 | + u32 UpstreamBarSize; // For virtual-side, size of upsteam BAR 0 space | ||
| 22897 | + PLX_PCI_BAR_INFO PciBar[6]; | ||
| 22898 | +} PLX_DEVICE_KEY; | ||
| 22899 | + | ||
| 22900 | +// Non-transparent Port types | ||
| 22901 | +typedef enum _PLX_NT_PORT_TYPE | ||
| 22902 | +{ | ||
| 22903 | + PLX_NT_PORT_NONE = 0, // Not an NT port | ||
| 22904 | + PLX_NT_PORT_PRIMARY = 1, // NT Primary Host side port | ||
| 22905 | + PLX_NT_PORT_SECONDARY = 2, // NT Seconday Host side port | ||
| 22906 | + PLX_NT_PORT_VIRTUAL = PLX_NT_PORT_PRIMARY, // NT Virtual-side port | ||
| 22907 | + PLX_NT_PORT_LINK = PLX_NT_PORT_SECONDARY, // NT Link-side port | ||
| 22908 | + PLX_NT_PORT_UNKOWN = 0xFF // NT side is undetermined | ||
| 22909 | +} PLX_NT_PORT_TYPE; | ||
| 22910 | + | ||
| 22911 | + | ||
| 22912 | + | ||
| 22913 | +// declarations for fops, pci_driver | ||
| 22914 | +static int _template_open (struct inode *, struct file *); | ||
| 22915 | +static int _template_close (struct inode *, struct file *); | ||
| 22916 | +static ssize_t _template_read (struct file *, char *, size_t, loff_t *); | ||
| 22917 | +static ssize_t _template_write (struct file *, __user const char *, size_t, loff_t *); | ||
| 22918 | +static int device_init(struct pci_dev *, const struct pci_device_id *); | ||
| 22919 | +static void device_deinit( struct pci_dev *); | ||
| 22920 | +static void device_deinit( struct pci_dev *); | ||
| 22921 | +static int __init pci_drv_init(void); | ||
| 22922 | +static void __exit pci_drv_exit(void); | ||
| 22923 | + | ||
| 22924 | +module_init(pci_drv_init); | ||
| 22925 | +module_exit(pci_drv_exit); | ||
| 22926 | + | ||
| 22927 | +static struct | ||
| 22928 | +pci_driver pci_drv_template = | ||
| 22929 | +{ | ||
| 22930 | + .name= "pci_drv_template", | ||
| 22931 | + .id_table= pci_drv_ids, | ||
| 22932 | + .probe= device_init, | ||
| 22933 | + .remove= device_deinit, | ||
| 22934 | +}; | ||
| 22935 | + | ||
| 22936 | +static struct file_operations _template_fops = | ||
| 22937 | +{ | ||
| 22938 | + .owner = THIS_MODULE, | ||
| 22939 | + .read = _template_read, | ||
| 22940 | + .write = _template_write, | ||
| 22941 | + .open = _template_open, | ||
| 22942 | + .release = _template_close, | ||
| 22943 | +}; | ||
| 22944 | + | ||
| 22945 | +// example for reading a PCI config byte | ||
| 22946 | +static unsigned char | ||
| 22947 | +get_revision(struct pci_dev *dev) | ||
| 22948 | +{ | ||
| 22949 | + u8 revision; | ||
| 22950 | + | ||
| 22951 | + pci_read_config_byte(dev, PCI_REVISION_ID, &revision); | ||
| 22952 | + return (revision); | ||
| 22953 | +} | ||
| 22954 | + | ||
| 22955 | + | ||
| 22956 | +#if 1 | ||
| 22957 | + | ||
| 22958 | +/******************************************************************************* | ||
| 22959 | + * | ||
| 22960 | + * Function : PlxRegisterRead | ||
| 22961 | + * | ||
| 22962 | + * Description: Reads a PLX-specific control register | ||
| 22963 | + * | ||
| 22964 | + ******************************************************************************/ | ||
| 22965 | +static u32 | ||
| 22966 | +PlxRegisterRead( | ||
| 22967 | + struct pci_dev *dev, | ||
| 22968 | + PLX_DEVICE_KEY *key, | ||
| 22969 | + u32 offset | ||
| 22970 | + ) | ||
| 22971 | +{ | ||
| 22972 | + u32 value; | ||
| 22973 | + u32 MaxOffset; | ||
| 22974 | + | ||
| 22975 | + | ||
| 22976 | + offset += key->Offset_RegBase; | ||
| 22977 | + | ||
| 22978 | + // Set max possible offset | ||
| 22979 | + MaxOffset = 4 * 1024; | ||
| 22980 | + | ||
| 22981 | + | ||
| 22982 | + MaxOffset += 0x11000; | ||
| 22983 | + | ||
| 22984 | + | ||
| 22985 | + // Verify register offset | ||
| 22986 | + if ((offset & 0x3) || (offset >= MaxOffset)) | ||
| 22987 | + { | ||
| 22988 | + printk("ERROR - Invalid register offset (%X)\n", offset); | ||
| 22989 | + | ||
| 22990 | + return 0; | ||
| 22991 | + } | ||
| 22992 | + | ||
| 22993 | + // Read value | ||
| 22994 | + value = in_le32(offset + key->PciBar[0].pVa); | ||
| 22995 | + | ||
| 22996 | + return value; | ||
| 22997 | +} | ||
| 22998 | + | ||
| 22999 | + | ||
| 23000 | + | ||
| 23001 | + | ||
| 23002 | +/******************************************************************************* | ||
| 23003 | + * | ||
| 23004 | + * Function : PlxRegisterWrite | ||
| 23005 | + * | ||
| 23006 | + * Description: Writes to a PLX-specific control register | ||
| 23007 | + * | ||
| 23008 | + ******************************************************************************/ | ||
| 23009 | +static int | ||
| 23010 | +PlxRegisterWrite( | ||
| 23011 | + struct pci_dev *dev, | ||
| 23012 | + PLX_DEVICE_KEY *key, | ||
| 23013 | + u32 offset, | ||
| 23014 | + u32 value | ||
| 23015 | + ) | ||
| 23016 | +{ | ||
| 23017 | + u32 MaxOffset; | ||
| 23018 | + | ||
| 23019 | + | ||
| 23020 | + // Adjust the offset for correct port | ||
| 23021 | + offset += key->Offset_RegBase; | ||
| 23022 | + | ||
| 23023 | + // Set max possible offset | ||
| 23024 | + MaxOffset = 4 * 1024; | ||
| 23025 | + | ||
| 23026 | + MaxOffset += 0x11000; | ||
| 23027 | + | ||
| 23028 | + // Verify register offset | ||
| 23029 | + if ((offset & 0x3) || (offset >= MaxOffset)) | ||
| 23030 | + { | ||
| 23031 | + printk("ERROR - Invalid register offset (%X)\n", offset); | ||
| 23032 | + return 1; | ||
| 23033 | + } | ||
| 23034 | + | ||
| 23035 | + printk("PlxRegisterWrite: key->PciBar[0].pVa = 0x%04x \n", key->PciBar[0].pVa ); | ||
| 23036 | + | ||
| 23037 | + // Write the value | ||
| 23038 | + out_le32(offset+ (u32)key->PciBar[0].pVa, value ); | ||
| 23039 | + | ||
| 23040 | + return 0; | ||
| 23041 | +} | ||
| 23042 | + | ||
| 23043 | + | ||
| 23044 | +/****************************************************************************** | ||
| 23045 | + * | ||
| 23046 | + * Function : PlxNtReqIdProbe | ||
| 23047 | + * | ||
| 23048 | + * Description: Implements a procedure to determine the Requester ID for NT accesses | ||
| 23049 | + * | ||
| 23050 | + *****************************************************************************/ | ||
| 23051 | +static int PlxNtReqIdProbe( | ||
| 23052 | + struct pci_dev *dev, | ||
| 23053 | + PLX_DEVICE_KEY *key, | ||
| 23054 | + u16 bReadTlp, | ||
| 23055 | + u16 *pReqId | ||
| 23056 | + ) | ||
| 23057 | +{ | ||
| 23058 | + u16 Offset_CapPcie; | ||
| 23059 | + u16 Offset_CapAer; | ||
| 23060 | + u32 RegValue; | ||
| 23061 | + u32 RegAerMask; | ||
| 23062 | + u32 RegPciCommand; | ||
| 23063 | + u32 RegPcieCapCsr; | ||
| 23064 | + u32 RegAerSeverity; | ||
| 23065 | + u32 WriteValue; | ||
| 23066 | + | ||
| 23067 | + | ||
| 23068 | + /********************************************************* | ||
| 23069 | + * This function attempts to detect the PCIe Requester ID | ||
| 23070 | + * of the Host CPU. The ReqID must be added to the NT | ||
| 23071 | + * ReqID LUT so that it accepts TLPs from that requester. | ||
| 23072 | + * | ||
| 23073 | + * On most systems, the ReqID for both reads & writes is | ||
| 23074 | + * the same. On many newer chipsets, the ReqID will be | ||
| 23075 | + * different between read & write TLPs. In general, the | ||
| 23076 | + * ReqID will be the Root Complex (0,0,0) and/or the | ||
| 23077 | + * upper-most parent root of the PLX switch, which will | ||
| 23078 | + * be a PCIe Root Port type device. | ||
| 23079 | + * | ||
| 23080 | + * The basic algorithm is listed below. The premise is to | ||
| 23081 | + * disable access to the PLX chip and issue a TLP, which | ||
| 23082 | + * should trigger an uncorrectable error and log the TLP. | ||
| 23083 | + * | ||
| 23084 | + * - Clear any PCIe & AER errors | ||
| 23085 | + * - Setup PLX device to generate AER errors (but mask PCIe msg) | ||
| 23086 | + * - Disable accesses to the PLX device | ||
| 23087 | + * - Issue a dummy memory read or write to a PLX register | ||
| 23088 | + * - Restore settings | ||
| 23089 | + * - Capture ReqID from the AER TLP header log | ||
| 23090 | + ********************************************************/ | ||
| 23091 | + | ||
| 23092 | + // Default to Req ID of 0 | ||
| 23093 | + *pReqId = 0; | ||
| 23094 | + | ||
| 23095 | + // Set default base offsets for PCIe & AER capabilities | ||
| 23096 | + Offset_CapPcie = 0x68; | ||
| 23097 | + Offset_CapAer = 0xFB4; | ||
| 23098 | + WriteValue = 0x12345678; | ||
| 23099 | + | ||
| 23100 | + // Get PCIe Device Status/Control & disable error reporting to host ([3:0]) | ||
| 23101 | + pci_read_config_dword( dev, (u16)(Offset_CapPcie + 0x8), &RegPcieCapCsr ); | ||
| 23102 | + /*printk("PlxNtReqIdProbe: RegPcieCapCsr = 0x%x, value = 0x%x \n", (u16)(Offset_CapPcie + 0x8), RegPcieCapCsr ); */ | ||
| 23103 | + RegPcieCapCsr |= (0xF << 16); // Clear any error status bits [19:16] | ||
| 23104 | + pci_write_config_dword( dev, (u16)(Offset_CapPcie + 0x8), RegPcieCapCsr & ~(0xF << 0) ); | ||
| 23105 | + | ||
| 23106 | + // Clear any AER UR errors [20] | ||
| 23107 | + pci_write_config_dword( dev, (u16)(Offset_CapAer + 0x4), (1 << 20) ); | ||
| 23108 | + | ||
| 23109 | + // Make sure AER UR error is not masked [20] | ||
| 23110 | + pci_read_config_dword( dev, (u16)(Offset_CapAer + 0x8), &RegAerMask ); | ||
| 23111 | +/*printk("PlxNtReqIdProbe: RegAerMask = 0x%x, value = 0x%x \n", (u16)(Offset_CapAer + 0x8), RegAerMask ); */ | ||
| 23112 | + if (RegAerMask & (1 << 20)) | ||
| 23113 | + pci_write_config_dword( dev, (u16)(Offset_CapAer + 0x8), RegAerMask & ~(1 << 20) ); | ||
| 23114 | + | ||
| 23115 | + // Set severity for UR errors ([20]). Must be Fatal for read TLPs or no AER logging | ||
| 23116 | + pci_read_config_dword( dev, (u16)(Offset_CapAer + 0xC), &RegAerSeverity ); | ||
| 23117 | +/*printk("PlxNtReqIdProbe: RegAerSeverity = 0x%x, value = 0x%x \n", (u16)(Offset_CapAer + 0xC), RegAerSeverity ); */ | ||
| 23118 | + if (bReadTlp == 1) | ||
| 23119 | + pci_write_config_dword( dev, (u16)(Offset_CapAer + 0xC), RegAerSeverity | (1 << 20) ); | ||
| 23120 | + else | ||
| 23121 | + pci_write_config_dword( dev, (u16)(Offset_CapAer + 0xC), RegAerSeverity & ~(1 << 20) ); | ||
| 23122 | + | ||
| 23123 | + // Disable PCI accesses [2:0] & SERR enable [8] in PCI command/status | ||
| 23124 | + pci_read_config_dword( dev, 0x04, &RegPciCommand ); | ||
| 23125 | +/*printk("PlxNtReqIdProbe: RegPciCommand = 0x04, value = 0x%x \n", RegPciCommand ); */ | ||
| 23126 | + RegPciCommand |= (0x1F << 27); // Clear any PCI error status ([31:27]) | ||
| 23127 | + pci_write_config_dword( dev, 0x04, (RegPciCommand & ~0x107) ); | ||
| 23128 | + | ||
| 23129 | + /********************************************************* | ||
| 23130 | + * Issue a TLP read or write to a PLX register | ||
| 23131 | + ********************************************************/ | ||
| 23132 | + if (bReadTlp==1) | ||
| 23133 | + PlxRegisterRead( dev, key,0); | ||
| 23134 | + else | ||
| 23135 | + PlxRegisterWrite( dev, key,0, WriteValue); | ||
| 23136 | + | ||
| 23137 | + // Restore PCI command/status | ||
| 23138 | + pci_write_config_dword( dev, 0x04, RegPciCommand ); | ||
| 23139 | + | ||
| 23140 | + // Verify an AER UR error was flagged | ||
| 23141 | + pci_read_config_dword( dev, (u16)(Offset_CapAer + 0x4), &RegValue ); | ||
| 23142 | +/*printk("PlxNtReqIdProbe: RegValue = 0x%x, value = 0x%x \n", (u16)(Offset_CapAer + 0x4), RegValue); */ | ||
| 23143 | + if ((RegValue & (1 << 20)) == 0) | ||
| 23144 | + { | ||
| 23145 | + printk("ERROR - ReqID probe failed, unable to capture error TLP\n"); | ||
| 23146 | + return 1; | ||
| 23147 | + } | ||
| 23148 | + | ||
| 23149 | + // Check if AER header is valid from First Error Pointer ([4:0]) | ||
| 23150 | + pci_read_config_dword( dev, (u16)(Offset_CapAer + 0x18), &RegValue ); | ||
| 23151 | +/*printk("PlxNtReqIdProbe: RegValue = 0x%x, value = 0x%x \n", (u16)(Offset_CapAer + 0x18), RegValue); */ | ||
| 23152 | + if ((RegValue & 0x1F) != 20) | ||
| 23153 | + { | ||
| 23154 | + printk( | ||
| 23155 | + "WARNING - Error Pointer reports bit %d not UR (20). Log may be invalid\n", | ||
| 23156 | + (RegValue & 0x1F)); | ||
| 23157 | + } | ||
| 23158 | + | ||
| 23159 | + // Get the AER logged TLP DWord 1, which contains Req ID | ||
| 23160 | + pci_read_config_dword( dev, (u16)(Offset_CapAer + 0x20), &RegValue ); | ||
| 23161 | +/*printk("PlxNtReqIdProbe: RegValue = 0x%x, value = 0x%x \n", (u16)(Offset_CapAer + 0x20), RegValue); */ | ||
| 23162 | + | ||
| 23163 | + // Clear UR status | ||
| 23164 | + pci_write_config_dword( dev, (u16)(Offset_CapAer + 0x4), (1 << 20) ); | ||
| 23165 | + | ||
| 23166 | + // Get Requester ID (DW1[31:16]) | ||
| 23167 | + *pReqId = (u16)(RegValue >> 16); | ||
| 23168 | + | ||
| 23169 | + printk( | ||
| 23170 | + "Probed %s ReqID = %04X [b:%02X s:%02X f:%X]\n", | ||
| 23171 | + (bReadTlp) ? "Read" : "Write", *pReqId, | ||
| 23172 | + (*pReqId >> 8), (*pReqId >> 3) & 0x1F, (*pReqId & 0x7) | ||
| 23173 | + ); | ||
| 23174 | + | ||
| 23175 | + return 0; | ||
| 23176 | +} | ||
| 23177 | +#endif | ||
| 23178 | + | ||
| 23179 | +static | ||
| 23180 | +irqreturn_t pci_isr( int irq, void *dev_id, struct pt_regs *regs ) | ||
| 23181 | +{ | ||
| 23182 | + // nothing todo for the irq yet | ||
| 23183 | + return (IRQ_HANDLED); | ||
| 23184 | +} | ||
| 23185 | + | ||
| 23186 | + | ||
| 23187 | +// Initialising of the module with output about the irq, I/O region and memory region. | ||
| 23188 | +static | ||
| 23189 | +int device_init(struct pci_dev *dev, const struct pci_device_id *id) | ||
| 23190 | +{ | ||
| 23191 | + int i_result;/*, i;*/ | ||
| 23192 | + u32 bar_w0; | ||
| 23193 | + unsigned *ncp_rsvd_ram = 0; | ||
| 23194 | + u8 revision; | ||
| 23195 | + PLX_DEVICE_KEY *plx_key; | ||
| 23196 | + u16 ReqId_Read; | ||
| 23197 | + u16 ReqId_Write; | ||
| 23198 | + | ||
| 23199 | + if(Uboot_PLX == 0) | ||
| 23200 | + return -ENODEV; | ||
| 23201 | + | ||
| 23202 | + // Allocate memory for the device object | ||
| 23203 | + plx_key = | ||
| 23204 | + kmalloc( | ||
| 23205 | + sizeof(PLX_DEVICE_KEY), | ||
| 23206 | + GFP_KERNEL | ||
| 23207 | + ); | ||
| 23208 | + | ||
| 23209 | + if (plx_key == NULL) | ||
| 23210 | + { | ||
| 23211 | + printk("ERROR - memory allocation for device object failed\n"); | ||
| 23212 | + return (-ENOMEM); | ||
| 23213 | + } | ||
| 23214 | + | ||
| 23215 | + // Initialize device object | ||
| 23216 | + RtlZeroMemory( | ||
| 23217 | + plx_key, | ||
| 23218 | + sizeof(PLX_DEVICE_KEY) | ||
| 23219 | + ); | ||
| 23220 | + | ||
| 23221 | + // Scan the system for supported devices | ||
| 23222 | + // Enable the device | ||
| 23223 | + if (pci_enable_device( dev ) == 0) | ||
| 23224 | + { | ||
| 23225 | + printk(("Enabled PCI device\n")); | ||
| 23226 | + } | ||
| 23227 | + else | ||
| 23228 | + { | ||
| 23229 | + printk("WARNING - PCI device enable failed\n"); | ||
| 23230 | + } | ||
| 23231 | + | ||
| 23232 | + // Enable bus mastering | ||
| 23233 | + pci_set_master( dev ); | ||
| 23234 | + | ||
| 23235 | + | ||
| 23236 | + plx_key->bus = dev->bus->number; | ||
| 23237 | + plx_key->slot = PCI_SLOT(dev->devfn); | ||
| 23238 | + plx_key->function = PCI_FUNC(dev->devfn); | ||
| 23239 | + plx_key->DeviceId = dev->device; | ||
| 23240 | + plx_key->VendorId = dev->vendor; | ||
| 23241 | + plx_key->SubVendorId = dev->subsystem_vendor; | ||
| 23242 | + plx_key->SubDeviceId = dev->subsystem_device; | ||
| 23243 | + plx_key->PlxFamily = PLX_FAMILY_SIRIUS; | ||
| 23244 | + plx_key->PlxChip = plx_key->DeviceId; | ||
| 23245 | + plx_key->pRegVa = NULL; | ||
| 23246 | + | ||
| 23247 | + plx_key->Offset_RegBase = 0x10000; | ||
| 23248 | + // Adjust offset for NT Link port | ||
| 23249 | + plx_key->NTPortType = PLX_NT_PORT_LINK; | ||
| 23250 | + plx_key->Offset_RegBase += 0x1000; | ||
| 23251 | + | ||
| 23252 | + | ||
| 23253 | + // Update Revision ID | ||
| 23254 | + pci_read_config_byte(dev, PCI_REVISION_ID, &revision); | ||
| 23255 | + | ||
| 23256 | + plx_key->Revision = (u8)(revision & 0xFF); | ||
| 23257 | + | ||
| 23258 | + printk( | ||
| 23259 | + "Device %04X_%04X = %04X rev %02X\n", | ||
| 23260 | + plx_key->DeviceId, plx_key->VendorId, | ||
| 23261 | + plx_key->PlxChip, plx_key->PlxRevision | ||
| 23262 | + ); | ||
| 23263 | + pci_read_config_dword(dev, 0x10, &bar_w0); | ||
| 23264 | + | ||
| 23265 | + bar_w0 &= ~(0xf); | ||
| 23266 | + | ||
| 23267 | +/* printk("pci_template: BAR 0 = 0x%08x\n", bar_w0);*/ | ||
| 23268 | + | ||
| 23269 | + if (0 == (ncp_rsvd_ram = ioremap(bar_w0, 0x20000))) | ||
| 23270 | + { | ||
| 23271 | + printk("ioremap the bar0 failed!\n"); | ||
| 23272 | + } | ||
| 23273 | + else | ||
| 23274 | + { | ||
| 23275 | + printk("ioremap the bar0 address 0x%08x to kernel VA =0x%p \n", bar_w0, ncp_rsvd_ram); | ||
| 23276 | + } | ||
| 23277 | + | ||
| 23278 | + plx_key->PciBar[0].pVa = (u32)ncp_rsvd_ram; | ||
| 23279 | + | ||
| 23280 | +#if 1 | ||
| 23281 | + /************************************************************* | ||
| 23282 | + * Determine Requester ID & add LUT entry | ||
| 23283 | + ************************************************************/ | ||
| 23284 | + printk("Probe for write ReqID : "); | ||
| 23285 | + | ||
| 23286 | + if (PlxNtReqIdProbe( | ||
| 23287 | + dev, | ||
| 23288 | + plx_key, | ||
| 23289 | + 0, // Probe for writes | ||
| 23290 | + &ReqId_Write | ||
| 23291 | + ) == 0) | ||
| 23292 | + { | ||
| 23293 | + printk("ERROR: Unable to probe ReqID\n"); | ||
| 23294 | + } | ||
| 23295 | + else | ||
| 23296 | + { | ||
| 23297 | + printk( | ||
| 23298 | + "Ok (ReqID=%04X [b:%02X s:%02X f:%01X])\n", | ||
| 23299 | + ReqId_Write, | ||
| 23300 | + (ReqId_Write >> 8) & 0xFF, | ||
| 23301 | + (ReqId_Write >> 3) & 0x1F, | ||
| 23302 | + (ReqId_Write >> 0) & 0x03 | ||
| 23303 | + ); | ||
| 23304 | + } | ||
| 23305 | + | ||
| 23306 | + printk("Probe for read ReqID : "); | ||
| 23307 | + | ||
| 23308 | + if (PlxNtReqIdProbe( | ||
| 23309 | + dev, | ||
| 23310 | + plx_key, | ||
| 23311 | + 1, // Probe for reads | ||
| 23312 | + &ReqId_Read | ||
| 23313 | + ) == 0) | ||
| 23314 | + { | ||
| 23315 | + printk("ERROR: Unable to probe ReqID\n"); | ||
| 23316 | + } | ||
| 23317 | + else | ||
| 23318 | + { | ||
| 23319 | + printk( | ||
| 23320 | + "Ok (ReqID=%04X [b:%02X s:%02X f:%01X])\n", | ||
| 23321 | + ReqId_Read, | ||
| 23322 | + (ReqId_Read >> 8) & 0xFF, | ||
| 23323 | + (ReqId_Read >> 3) & 0x1F, | ||
| 23324 | + (ReqId_Read >> 0) & 0x03 | ||
| 23325 | + ); | ||
| 23326 | + | ||
| 23327 | + | ||
| 23328 | + if (ReqId_Read == ReqId_Write) | ||
| 23329 | + { | ||
| 23330 | + printk("-- Read Req ID matches write, skip LUT add --\n"); | ||
| 23331 | + } | ||
| 23332 | + | ||
| 23333 | + } | ||
| 23334 | +#endif | ||
| 23335 | + | ||
| 23336 | +#if 0 | ||
| 23337 | + if (0 == (ncp_rsvd_ram = ioremap(0x2000000, 0x800000))) | ||
| 23338 | + { | ||
| 23339 | + printk("ioremap the DMA buffer failed!\n"); | ||
| 23340 | + } | ||
| 23341 | + else | ||
| 23342 | + { | ||
| 23343 | + printk("ioremap the DMA buffer address 0xf800000 to kernel VA =0x%p \n",ncp_rsvd_ram); | ||
| 23344 | + } | ||
| 23345 | + | ||
| 23346 | + for ( i = 0; i < 8; i++) | ||
| 23347 | + { | ||
| 23348 | + u8 achar = 0xaa; | ||
| 23349 | + memcpy( (u8 *)ncp_rsvd_ram, &achar, 1); | ||
| 23350 | + ncp_rsvd_ram++; | ||
| 23351 | + } | ||
| 23352 | +#endif | ||
| 23353 | + | ||
| 23354 | + i_result = get_revision (dev); // example usage to avoid the "defined but not used" message | ||
| 23355 | + // change the device name default (<pci bus number>.<pci slot number>. ...) to the module name | ||
| 23356 | + printk(KERN_ERR "pci_template: Old dev->dev.kobj.name: \"%s\"\n", dev->dev.kobj.name); | ||
| 23357 | + /*strncpy(dev->dev.kobj.name,"pci_drv_template",KOBJ_NAME_LEN);*/ | ||
| 23358 | + | ||
| 23359 | +#if 0 | ||
| 23360 | + // check irq number (don't request irq 0) before requesting | ||
| 23361 | + if ( (dev->irq) and (request_irq(dev->irq,pci_isr,SA_INTERRUPT|SA_SHIRQ,"pci_drv_template",dev)) ) | ||
| 23362 | + { | ||
| 23363 | + printk(KERN_ERR "pci_template: IRQ %d not free.\n", dev->irq ); | ||
| 23364 | + return -EIO; | ||
| 23365 | + } | ||
| 23366 | + if (dev->irq) | ||
| 23367 | + printk(KERN_ERR "pci_template: IRQ %d.\n", dev->irq); | ||
| 23368 | + else | ||
| 23369 | + printk(KERN_ERR "pci_template: No irq required/requested.\n"); | ||
| 23370 | +#endif | ||
| 23371 | + // get the first i/o region | ||
| 23372 | + ioport = pci_resource_start( dev, 0 ); | ||
| 23373 | + iolen = pci_resource_len( dev, 0 ); | ||
| 23374 | + // chech iolen before requesting the I/O region | ||
| 23375 | + if (iolen and ( NULL == request_region( ioport, iolen, dev->dev.kobj.name ) ) ) | ||
| 23376 | + { | ||
| 23377 | + printk(KERN_ERR "I/O address conflict for device \"%s\", ioport=%lu=0x%x, iolen=%lu=0x%x\n", | ||
| 23378 | + dev->dev.kobj.name, ioport, (unsigned int)ioport, iolen, (unsigned int)iolen); | ||
| 23379 | + goto cleanup_irq; | ||
| 23380 | + } | ||
| 23381 | + if (iolen) | ||
| 23382 | + printk(KERN_CRIT "pci_template: request_region( ioport=%lu=0x%x, iolen=%lu=0x%x, dev->dev.kobj.name=%s) successfull.\n", | ||
| 23383 | + ioport, (unsigned int)ioport, iolen, (unsigned int)iolen, dev->dev.kobj.name); | ||
| 23384 | + else | ||
| 23385 | + printk(KERN_CRIT "pci_template: request_region( ioport=%lu=0x%x, iolen=%lu=0x%x, dev->dev.kobj.name=%s) not necessary.\n", | ||
| 23386 | + ioport, (unsigned int)ioport, iolen, (unsigned int)iolen, dev->dev.kobj.name); | ||
| 23387 | + memstart = pci_resource_start( dev, 1 ); | ||
| 23388 | + memlen = pci_resource_len( dev, 1 ); | ||
| 23389 | + printk(KERN_CRIT "pci_template: memstart=%lu=0x%x, memlen=%lu=0x%x\n", memstart, (unsigned int)memstart, memlen, (unsigned int)memlen); | ||
| 23390 | + // check memlen before requesting the memory region | ||
| 23391 | + if (memlen and ( NULL == request_mem_region( memstart, memlen, dev->dev.kobj.name ) )) | ||
| 23392 | + { | ||
| 23393 | + printk(KERN_ERR "Memory address conflict for device \"%s\", request_mem_region( memstart=%lu=0x%x, memlen=%lu=0x%x, dev->dev.kobj.name=%s) failed.\n", | ||
| 23394 | + dev->dev.kobj.name, memstart, (unsigned int)memstart, memlen, (unsigned int)memlen, dev->dev.kobj.name); | ||
| 23395 | + goto cleanup_ports; | ||
| 23396 | + } | ||
| 23397 | + if (memlen) | ||
| 23398 | + printk(KERN_ERR "pci_template: request_mem_region( memstart=%lu=0x%x, memlen=%lu=0x%x, dev->dev.kobj.name=%s) successfull.\n", | ||
| 23399 | + memstart, (unsigned int)memstart, memlen, (unsigned int)memlen, dev->dev.kobj.name); | ||
| 23400 | + else | ||
| 23401 | + printk(KERN_ERR "pci_template: request_mem_region( memstart=%lu=0x%x, memlen=%lu=0x%x, dev->dev.kobj.name=%s) not necessary.\n", | ||
| 23402 | + memstart, (unsigned int)memstart, memlen, (unsigned int)memlen, dev->dev.kobj.name); | ||
| 23403 | + | ||
| 23404 | + kfree(plx_key) ; | ||
| 23405 | + return (0); | ||
| 23406 | + cleanup_ports: | ||
| 23407 | + if (iolen) | ||
| 23408 | + release_region( ioport, iolen ); | ||
| 23409 | + cleanup_irq: | ||
| 23410 | + if (dev->irq) | ||
| 23411 | + free_irq( dev->irq, dev ); | ||
| 23412 | + kfree(plx_key) ; | ||
| 23413 | + return (-EIO); | ||
| 23414 | +} | ||
| 23415 | + | ||
| 23416 | + | ||
| 23417 | +static void | ||
| 23418 | +device_deinit( struct pci_dev *pdev ) | ||
| 23419 | +{ | ||
| 23420 | + // device driver part | ||
| 23421 | + unregister_chrdev (i_template_major, "pci_chrdev_template"); | ||
| 23422 | + if (pdev->irq) | ||
| 23423 | + free_irq( pdev->irq, pdev ); | ||
| 23424 | + if( iolen ) | ||
| 23425 | + release_region( ioport, iolen ); | ||
| 23426 | + if( memlen ) | ||
| 23427 | + release_mem_region( memstart, memlen ); | ||
| 23428 | + return; | ||
| 23429 | +} | ||
| 23430 | + | ||
| 23431 | + | ||
| 23432 | +// device driver init | ||
| 23433 | +static | ||
| 23434 | +int __init pci_drv_init(void) | ||
| 23435 | +{ | ||
| 23436 | + int i_result=0; | ||
| 23437 | + struct device_node *np = NULL; | ||
| 23438 | + int *plx; | ||
| 23439 | + | ||
| 23440 | + np = of_find_node_by_type(np, "pci"); | ||
| 23441 | + | ||
| 23442 | + while (np && !of_device_is_compatible(np, "lsi,plb-pciex")) | ||
| 23443 | + np = of_find_node_by_type(np, "pci"); | ||
| 23444 | + | ||
| 23445 | + if (!np) | ||
| 23446 | + return -ENODEV; | ||
| 23447 | + | ||
| 23448 | + plx = of_get_property(np, "plx", NULL); | ||
| 23449 | + | ||
| 23450 | + if (!plx || (plx && (0 == *plx))) | ||
| 23451 | + return -ENODEV; | ||
| 23452 | + | ||
| 23453 | + printk (KERN_CRIT "pci_chrdev_template: initialising\n"); | ||
| 23454 | + if ((i_result = register_chrdev (i_template_major, "pci_chrdev_template", &_template_fops)) < 0) | ||
| 23455 | + { | ||
| 23456 | + // dynamic major number allocation | ||
| 23457 | + i_result = register_chrdev (0, "pci_chrdev_template", &_template_fops); | ||
| 23458 | + i_template_major = i_result; | ||
| 23459 | + if (i_result < 0) | ||
| 23460 | + { | ||
| 23461 | + printk (KERN_CRIT "pci_chrdev_template: Cannot register device.\n"); | ||
| 23462 | + return (i_result); | ||
| 23463 | + } | ||
| 23464 | + } | ||
| 23465 | + | ||
| 23466 | + if( 0 == pci_register_driver(&pci_drv_template) ) | ||
| 23467 | + return 0; | ||
| 23468 | + unregister_chrdev( i_template_major,"pci_chrdev_template"); | ||
| 23469 | + return (-EIO); | ||
| 23470 | +} | ||
| 23471 | + | ||
| 23472 | + | ||
| 23473 | +static | ||
| 23474 | +void __exit pci_drv_exit(void) | ||
| 23475 | +{ | ||
| 23476 | + pci_unregister_driver( &pci_drv_template ); | ||
| 23477 | + unregister_chrdev(i_template_major,"pci_chrdev_template"); | ||
| 23478 | + return; | ||
| 23479 | +} | ||
| 23480 | + | ||
| 23481 | + | ||
| 23482 | +static int | ||
| 23483 | +_template_open (struct inode *inode, struct file *filp) | ||
| 23484 | +{ | ||
| 23485 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) | ||
| 23486 | + MOD_INC_USE_COUNT; | ||
| 23487 | +#endif | ||
| 23488 | + return (0); | ||
| 23489 | +} | ||
| 23490 | + | ||
| 23491 | + | ||
| 23492 | +static int | ||
| 23493 | +_template_close (struct inode *inode, struct file *filp) | ||
| 23494 | +{ | ||
| 23495 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) | ||
| 23496 | + MOD_DEC_USE_COUNT; | ||
| 23497 | +#endif | ||
| 23498 | + return (0); | ||
| 23499 | +} | ||
| 23500 | + | ||
| 23501 | + | ||
| 23502 | +static ssize_t | ||
| 23503 | +_template_read (struct file * filp, char *buff, size_t count, loff_t * ppos) | ||
| 23504 | +{ | ||
| 23505 | + u16 u16_template_dummy = inw(ioport); // read a word from the card | ||
| 23506 | + // write to user space | ||
| 23507 | + unsigned long ul = copy_to_user (buff, &u16_template_dummy, sizeof(u16_template_dummy)); | ||
| 23508 | + | ||
| 23509 | + return ( ((unsigned long)sizeof(u16_template_dummy)) - ul); | ||
| 23510 | +} | ||
| 23511 | + | ||
| 23512 | + | ||
| 23513 | +static ssize_t | ||
| 23514 | +_template_write (struct file * filp, __user const char *buff, size_t count, loff_t * ppos) | ||
| 23515 | +{ | ||
| 23516 | + u16 u16_template_dummy = 0; | ||
| 23517 | + // read from user space | ||
| 23518 | + unsigned long ul = copy_from_user (&u16_template_dummy, buff, sizeof(u16_template_dummy)); | ||
| 23519 | + | ||
| 23520 | + outw(u16_template_dummy, ioport); // write the word to the port | ||
| 23521 | + return ( ((unsigned long)sizeof(u16_template_dummy)) - ul); | ||
| 23522 | +} | ||
| 23523 | diff --git a/drivers/lsi/acp/serial.c b/drivers/lsi/acp/serial.c | ||
| 23524 | new file mode 100644 | ||
| 23525 | index 0000000..a3da27e | ||
| 23526 | --- /dev/null | ||
| 23527 | +++ b/drivers/lsi/acp/serial.c | ||
| 23528 | @@ -0,0 +1,1342 @@ | ||
| 23529 | +/* | ||
| 23530 | + * drivers/lsi/acp/serial.c | ||
| 23531 | + * | ||
| 23532 | + * Driver for AMBA serial ports on LSI's PPC based ACP. | ||
| 23533 | + * | ||
| 23534 | + * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. | ||
| 23535 | + * | ||
| 23536 | + * Copyright 1999 ARM Limited | ||
| 23537 | + * Copyright (C) 2000 Deep Blue Solutions Ltd. | ||
| 23538 | + * Copyright 2009 LSI | ||
| 23539 | + * | ||
| 23540 | + * This program is free software; you can redistribute it and/or modify | ||
| 23541 | + * it under the terms of the GNU General Public License as published by | ||
| 23542 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 23543 | + * (at your option) any later version. | ||
| 23544 | + * | ||
| 23545 | + * This program is distributed in the hope that it will be useful, | ||
| 23546 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 23547 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 23548 | + * GNU General Public License for more details. | ||
| 23549 | + * | ||
| 23550 | + * You should have received a copy of the GNU General Public License | ||
| 23551 | + * along with this program; if not, write to the Free Software | ||
| 23552 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 23553 | + * | ||
| 23554 | + * This is a generic driver for ARM AMBA-type serial ports. They | ||
| 23555 | + * have a lot of 16550-like features, but are not register compatible. | ||
| 23556 | + * Note that although they do have CTS, DCD and DSR inputs, they do | ||
| 23557 | + * not have an RI input, nor do they have DTR or RTS outputs. If | ||
| 23558 | + * required, these have to be supplied via some other means (eg, GPIO) | ||
| 23559 | + * and hooked into this driver. | ||
| 23560 | + */ | ||
| 23561 | + | ||
| 23562 | +#if defined(CONFIG_SERIAL_ACP_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) | ||
| 23563 | +#define SUPPORT_SYSRQ | ||
| 23564 | +#endif | ||
| 23565 | + | ||
| 23566 | +#include <linux/module.h> | ||
| 23567 | +#include <linux/ioport.h> | ||
| 23568 | +#include <linux/init.h> | ||
| 23569 | +#include <linux/console.h> | ||
| 23570 | +#include <linux/sysrq.h> | ||
| 23571 | +#include <linux/device.h> | ||
| 23572 | +#include <linux/tty.h> | ||
| 23573 | +#include <linux/tty_flip.h> | ||
| 23574 | +#include <linux/serial_core.h> | ||
| 23575 | +#include <linux/serial.h> | ||
| 23576 | +#include <linux/slab.h> | ||
| 23577 | +#include <linux/amba/bus.h> | ||
| 23578 | +#include <linux/amba/serial.h> | ||
| 23579 | +#include <linux/irq.h> | ||
| 23580 | +#include <linux/of.h> | ||
| 23581 | +#include <asm/io.h> | ||
| 23582 | + | ||
| 23583 | +#include "../common/version.h" | ||
| 23584 | + | ||
| 23585 | +extern int acp_clock_get(int, unsigned long *); | ||
| 23586 | + | ||
| 23587 | +#define SZ_4K (4*1024) | ||
| 23588 | +#define UART_NR 2 | ||
| 23589 | +#define SERIAL_AMBA_MAJOR 204 | ||
| 23590 | +#define SERIAL_AMBA_MINOR 64 | ||
| 23591 | +#define SERIAL_AMBA_NR UART_NR | ||
| 23592 | +#define AMBA_ISR_PASS_LIMIT 256 | ||
| 23593 | +#define UART_DR_ERROR \ | ||
| 23594 | +(UART011_DR_OE|UART011_DR_BE|UART011_DR_PE|UART011_DR_FE) | ||
| 23595 | +#define UART_DUMMY_DR_RX (1 << 16) | ||
| 23596 | + | ||
| 23597 | +#undef DEBUG_EXPORT_SYMBOLS | ||
| 23598 | +#define DEBUG_EXPORT_SYMBOLS | ||
| 23599 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 23600 | +#define STATIC | ||
| 23601 | +#else | ||
| 23602 | +#define STATIC static | ||
| 23603 | +#endif | ||
| 23604 | + | ||
| 23605 | +#define MAX_BAUD_RATE 115200 | ||
| 23606 | + | ||
| 23607 | +/* | ||
| 23608 | + ====================================================================== | ||
| 23609 | + ====================================================================== | ||
| 23610 | + A modified uart_port structure. | ||
| 23611 | + ====================================================================== | ||
| 23612 | + ====================================================================== | ||
| 23613 | +*/ | ||
| 23614 | + | ||
| 23615 | +struct uart_acp_port { | ||
| 23616 | + struct uart_port port; | ||
| 23617 | + irq_hw_number_t hwirq; | ||
| 23618 | + unsigned int interrupt_mask; | ||
| 23619 | + unsigned int old_status; | ||
| 23620 | + void *timer_base; | ||
| 23621 | + unsigned long divisor; | ||
| 23622 | + unsigned char ibrd; | ||
| 23623 | + unsigned char fbrd; | ||
| 23624 | +}; | ||
| 23625 | + | ||
| 23626 | +/* | ||
| 23627 | + ====================================================================== | ||
| 23628 | + ====================================================================== | ||
| 23629 | + Both UARTs share the same clock input, the output of the 2nd timer, | ||
| 23630 | + or timer 1, from the APB Dual Input Timers (there are two of these, | ||
| 23631 | + thus 4 timers). | ||
| 23632 | + ====================================================================== | ||
| 23633 | + ====================================================================== | ||
| 23634 | +*/ | ||
| 23635 | + | ||
| 23636 | +#define TIMER_LOAD 0x00 | ||
| 23637 | +#define TIMER_VALUE 0x04 | ||
| 23638 | +#define TIMER_CONTROL 0x08 | ||
| 23639 | +#define TIMER_CONTROL_ENABLE 0x80 | ||
| 23640 | +#define TIMER_CONTROL_MODE 0x40 | ||
| 23641 | +#define TIMER_CONTROL_INTERRUPT_ENABLE 0x20 | ||
| 23642 | +#define TIMER_CONTROL_OUTPUT_MODE 0x10 | ||
| 23643 | +#define TIMER_CONTROL_PRESCALER 0x0c | ||
| 23644 | +#define TIMER_CONTROL_SIZE 0x02 | ||
| 23645 | +#define TIMER_CONTROL_ONE_SHOT 0x01 | ||
| 23646 | +#define TIMER_INTCLR 0x0C | ||
| 23647 | +#define TIMER_RIS 0x10 | ||
| 23648 | +#define TIMER_MIS 0x14 | ||
| 23649 | +#define TIMER_BGLOAD 0x18 | ||
| 23650 | + | ||
| 23651 | +/* | ||
| 23652 | + ---------------------------------------------------------------------- | ||
| 23653 | + get_clock_stuff | ||
| 23654 | +*/ | ||
| 23655 | + | ||
| 23656 | +STATIC int | ||
| 23657 | +get_clock_stuff(struct uart_port *port, int baud_rate) | ||
| 23658 | +{ | ||
| 23659 | + struct uart_acp_port *uap = (struct uart_acp_port *) port; | ||
| 23660 | + unsigned long per_clock; | ||
| 23661 | + unsigned long divisor; | ||
| 23662 | + unsigned long ibrd; | ||
| 23663 | + unsigned long fbrd; | ||
| 23664 | + | ||
| 23665 | + /* Get the speed of the peripheral clock. */ | ||
| 23666 | + acp_clock_get(1, &per_clock); | ||
| 23667 | + per_clock *= 1000; | ||
| 23668 | + | ||
| 23669 | + /* | ||
| 23670 | + Since the IBDR (integer part of the baud rate | ||
| 23671 | + divisor) is a 16 bit quatity, find the minimum load | ||
| 23672 | + value that will let the IBDR/FBDR result in the | ||
| 23673 | + desired baud rate. | ||
| 23674 | + */ | ||
| 23675 | + | ||
| 23676 | + divisor = 1; | ||
| 23677 | + | ||
| 23678 | + do { | ||
| 23679 | + ibrd = (per_clock / ++divisor) / (16 * baud_rate); | ||
| 23680 | + } while (0xff < ibrd); | ||
| 23681 | + | ||
| 23682 | + /* | ||
| 23683 | + The following forumla is from the ARM document (ARM DDI 0183E). | ||
| 23684 | + | ||
| 23685 | + Baud Rate Divisor = (Uart Clock / (16 * Baud Rate)) | ||
| 23686 | + | ||
| 23687 | + Baud Rate Divisor is then split into integral and fractional | ||
| 23688 | + parts. The IBRD value is simply the itegral part. The FBRD is | ||
| 23689 | + calculated as follows. | ||
| 23690 | + | ||
| 23691 | + FBRD = fractional part of the Baud Rate Divisor * 64 + 0.5 | ||
| 23692 | + | ||
| 23693 | + The fractional part of the Baud Rate Divisor can be represented as | ||
| 23694 | + follows. | ||
| 23695 | + | ||
| 23696 | + (Uart Clock % (16 * baud_rate)) / (16 * baud_rate) | ||
| 23697 | + | ||
| 23698 | + As long as the division isn't done till the end. So, the above * | ||
| 23699 | + 64 + 0.5 is the FBRD. Also note that x/y + 1/2 = (2x+y)/2y. This | ||
| 23700 | + leads to | ||
| 23701 | + | ||
| 23702 | + ((Uart Clock % (16 * baud_rate)) * 64 * 2 + (16 * baud_rate)) | ||
| 23703 | + --------------------------------------------------------------------- | ||
| 23704 | + 2 * (16 * baud_rate) | ||
| 23705 | + */ | ||
| 23706 | + | ||
| 23707 | + port->uartclk = (per_clock / divisor); | ||
| 23708 | + | ||
| 23709 | + fbrd = port->uartclk % (16 * baud_rate); | ||
| 23710 | + fbrd *= 128; | ||
| 23711 | + fbrd += (16 * baud_rate); | ||
| 23712 | + fbrd /= (2 * (16 * baud_rate)); | ||
| 23713 | + | ||
| 23714 | + uap->divisor = (divisor - 1); | ||
| 23715 | + uap->ibrd = (unsigned char) ibrd; | ||
| 23716 | + uap->fbrd = (unsigned char) fbrd; | ||
| 23717 | + | ||
| 23718 | +#if 0 | ||
| 23719 | + printk("\n\n == == DEBUG == ==\n\n"); | ||
| 23720 | + printk("\n\n\n\nuap->ibrd=%d ibrd=%d uap->fbrd=%d fbrd=%d " | ||
| 23721 | + "port->uartclk=%d per_clock=%d uap->divisor=%d divisor=%d " | ||
| 23722 | + "timer_load=%d cbr=%d\n\n\n\n", | ||
| 23723 | + uap->ibrd, ibrd, uap->fbrd, fbrd, port->uartclk, per_clock, | ||
| 23724 | + uap->divisor, divisor, in_le32(uap->timer_base + TIMER_LOAD), | ||
| 23725 | + (per_clock / divisor) * 4 / (64 * ibrd * fbrd)); | ||
| 23726 | + printk("\n\n == == == == == ==\n\n"); | ||
| 23727 | +#endif | ||
| 23728 | + | ||
| 23729 | + if (uap->divisor != in_le32(uap->timer_base + TIMER_LOAD)) { | ||
| 23730 | + while (0 == | ||
| 23731 | + (in_le32((const volatile unsigned *) | ||
| 23732 | + (uap->port.membase + UART01x_FR)) & | ||
| 23733 | + UART011_FR_TXFE)) | ||
| 23734 | + ; | ||
| 23735 | + | ||
| 23736 | + while (0 != | ||
| 23737 | + (in_le32((const volatile unsigned *) | ||
| 23738 | + (uap->port.membase + UART01x_FR)) & | ||
| 23739 | + UART01x_FR_BUSY)) | ||
| 23740 | + ; | ||
| 23741 | + | ||
| 23742 | + out_le32((uap->timer_base + TIMER_CONTROL), 0); | ||
| 23743 | + out_le32((uap->timer_base + TIMER_LOAD), uap->divisor); | ||
| 23744 | + out_le32((uap->timer_base + TIMER_CONTROL), | ||
| 23745 | + (TIMER_CONTROL_ENABLE | | ||
| 23746 | + TIMER_CONTROL_MODE)); | ||
| 23747 | + } | ||
| 23748 | + | ||
| 23749 | + return 0; | ||
| 23750 | +} | ||
| 23751 | + | ||
| 23752 | +/* | ||
| 23753 | + ====================================================================== | ||
| 23754 | + ====================================================================== | ||
| 23755 | + Serial operations. | ||
| 23756 | + ====================================================================== | ||
| 23757 | + ====================================================================== | ||
| 23758 | +*/ | ||
| 23759 | + | ||
| 23760 | +/* | ||
| 23761 | + ------------------------------------------------------------------------------ | ||
| 23762 | + acp_serial_wac | ||
| 23763 | + | ||
| 23764 | + This was added to allow an easy debugging breakpoint. | ||
| 23765 | +*/ | ||
| 23766 | + | ||
| 23767 | +STATIC void | ||
| 23768 | +acp_serial_wac(u32 *address, int character, u32 line) | ||
| 23769 | +{ | ||
| 23770 | + out_le32(address, character); | ||
| 23771 | + | ||
| 23772 | + return; | ||
| 23773 | +} | ||
| 23774 | + | ||
| 23775 | +/* | ||
| 23776 | + ------------------------------------------------------------------------------ | ||
| 23777 | + acp_serial_tx_empty | ||
| 23778 | +*/ | ||
| 23779 | + | ||
| 23780 | +STATIC unsigned int | ||
| 23781 | +acp_serial_tx_empty(struct uart_port *port) | ||
| 23782 | +{ | ||
| 23783 | + struct uart_acp_port * uap = (struct uart_acp_port *) port; | ||
| 23784 | + unsigned int status = | ||
| 23785 | + in_le32((u32 *) (uap->port.membase + UART01x_FR)); | ||
| 23786 | + return status & | ||
| 23787 | + (UART01x_FR_BUSY | UART01x_FR_TXFF) ? 0 : TIOCSER_TEMT; | ||
| 23788 | +} | ||
| 23789 | + | ||
| 23790 | +/* | ||
| 23791 | + ---------------------------------------------------------------------- | ||
| 23792 | + acp_serial_stop_tx | ||
| 23793 | +*/ | ||
| 23794 | + | ||
| 23795 | +STATIC void | ||
| 23796 | +acp_serial_stop_tx(struct uart_port *port) | ||
| 23797 | +{ | ||
| 23798 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 23799 | + | ||
| 23800 | + uap->interrupt_mask &= ~UART011_TXIM; | ||
| 23801 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 23802 | + uap->interrupt_mask); | ||
| 23803 | +} | ||
| 23804 | + | ||
| 23805 | +/* | ||
| 23806 | + ---------------------------------------------------------------------- | ||
| 23807 | + acp_serial_start_tx | ||
| 23808 | +*/ | ||
| 23809 | + | ||
| 23810 | +STATIC void | ||
| 23811 | +acp_serial_start_tx(struct uart_port *port) | ||
| 23812 | +{ | ||
| 23813 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 23814 | + | ||
| 23815 | + uap->interrupt_mask |= UART011_TXIM; | ||
| 23816 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 23817 | + uap->interrupt_mask); | ||
| 23818 | +} | ||
| 23819 | + | ||
| 23820 | +void acp_serial_stop_rx(struct uart_port *port) | ||
| 23821 | +{ | ||
| 23822 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 23823 | + | ||
| 23824 | + uap->interrupt_mask &= ~(UART011_RXIM|UART011_RTIM|UART011_FEIM| | ||
| 23825 | + UART011_PEIM|UART011_BEIM|UART011_OEIM); | ||
| 23826 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 23827 | + uap->interrupt_mask); | ||
| 23828 | +} | ||
| 23829 | + | ||
| 23830 | +void acp_serial_enable_ms(struct uart_port *port) | ||
| 23831 | +{ | ||
| 23832 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 23833 | + | ||
| 23834 | + uap->interrupt_mask |= | ||
| 23835 | + UART011_RIMIM|UART011_CTSMIM|UART011_DCDMIM|UART011_DSRMIM; | ||
| 23836 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 23837 | + uap->interrupt_mask); | ||
| 23838 | +} | ||
| 23839 | + | ||
| 23840 | +/* | ||
| 23841 | + ---------------------------------------------------------------------- | ||
| 23842 | + acp_serial_rx_chars | ||
| 23843 | +*/ | ||
| 23844 | + | ||
| 23845 | +STATIC void | ||
| 23846 | +acp_serial_rx_chars(struct uart_acp_port *uap) | ||
| 23847 | +{ | ||
| 23848 | + struct tty_struct *tty = uap->port.state->port.tty; | ||
| 23849 | + unsigned int status, ch, flag, max_count = 256; | ||
| 23850 | + | ||
| 23851 | + /*status = readw(uap->port.membase + UART01x_FR);*/ | ||
| 23852 | + status = in_le32((u32 *)(uap->port.membase + UART01x_FR)); | ||
| 23853 | + while ((status & UART01x_FR_RXFE) == 0 && max_count--) { | ||
| 23854 | + ch = in_le32((u32 *)(uap->port.membase + UART01x_DR)) | | ||
| 23855 | + UART_DUMMY_DR_RX; | ||
| 23856 | + flag = TTY_NORMAL; | ||
| 23857 | + uap->port.icount.rx++; | ||
| 23858 | + | ||
| 23859 | + /* | ||
| 23860 | + * Note that the error handling code is | ||
| 23861 | + * out of the main execution path | ||
| 23862 | + */ | ||
| 23863 | + if (unlikely(ch & UART_DR_ERROR)) { | ||
| 23864 | + if (ch & UART011_DR_BE) { | ||
| 23865 | + ch &= ~(UART011_DR_FE | UART011_DR_PE); | ||
| 23866 | + uap->port.icount.brk++; | ||
| 23867 | + if (uart_handle_break(&uap->port)) | ||
| 23868 | + goto ignore_char; | ||
| 23869 | + } else if (ch & UART011_DR_PE) | ||
| 23870 | + uap->port.icount.parity++; | ||
| 23871 | + else if (ch & UART011_DR_FE) | ||
| 23872 | + uap->port.icount.frame++; | ||
| 23873 | + if (ch & UART011_DR_OE) | ||
| 23874 | + uap->port.icount.overrun++; | ||
| 23875 | + | ||
| 23876 | + ch &= uap->port.read_status_mask; | ||
| 23877 | + | ||
| 23878 | + if (ch & UART011_DR_BE) | ||
| 23879 | + flag = TTY_BREAK; | ||
| 23880 | + else if (ch & UART011_DR_PE) | ||
| 23881 | + flag = TTY_PARITY; | ||
| 23882 | + else if (ch & UART011_DR_FE) | ||
| 23883 | + flag = TTY_FRAME; | ||
| 23884 | + } | ||
| 23885 | + | ||
| 23886 | + if (uart_handle_sysrq_char(&uap->port, ch & 255)) | ||
| 23887 | + goto ignore_char; | ||
| 23888 | + | ||
| 23889 | + uart_insert_char(&uap->port, ch, UART011_DR_OE, ch, flag); | ||
| 23890 | + | ||
| 23891 | + ignore_char: | ||
| 23892 | + status = in_le32((u32 *)(uap->port.membase + UART01x_FR)); | ||
| 23893 | + } | ||
| 23894 | + spin_unlock(&uap->port.lock); | ||
| 23895 | + tty_flip_buffer_push(tty); | ||
| 23896 | + spin_lock(&uap->port.lock); | ||
| 23897 | +} | ||
| 23898 | + | ||
| 23899 | +/* | ||
| 23900 | + ---------------------------------------------------------------------- | ||
| 23901 | + acp_serial_tx_chars | ||
| 23902 | +*/ | ||
| 23903 | + | ||
| 23904 | +STATIC void | ||
| 23905 | +acp_serial_tx_chars(struct uart_acp_port *uap) | ||
| 23906 | +{ | ||
| 23907 | + struct circ_buf *xmit = &uap->port.state->xmit; | ||
| 23908 | + int count; | ||
| 23909 | + | ||
| 23910 | + if (uap->port.x_char) { | ||
| 23911 | + /*writew(uap->port.x_char, uap->port.membase + UART01x_DR);*/ | ||
| 23912 | +#if 0 | ||
| 23913 | + out_le32((u32 *)(uap->port.membase + UART01x_DR), | ||
| 23914 | + uap->port.x_char); | ||
| 23915 | +#endif | ||
| 23916 | + acp_serial_wac((u32 *)(uap->port.membase + UART01x_DR), | ||
| 23917 | + uap->port.x_char, __LINE__); | ||
| 23918 | + uap->port.icount.tx++; | ||
| 23919 | + uap->port.x_char = 0; | ||
| 23920 | + return; | ||
| 23921 | + } | ||
| 23922 | + if (uart_circ_empty(xmit) || uart_tx_stopped(&uap->port)) { | ||
| 23923 | + acp_serial_stop_tx(&uap->port); | ||
| 23924 | + return; | ||
| 23925 | + } | ||
| 23926 | + | ||
| 23927 | + count = uap->port.fifosize >> 1; | ||
| 23928 | + do { | ||
| 23929 | +#if 0 | ||
| 23930 | + out_le32((u32 *)(uap->port.membase + UART01x_DR), | ||
| 23931 | + xmit->buf[xmit->tail]); | ||
| 23932 | +#endif | ||
| 23933 | + acp_serial_wac((u32 *) (uap->port.membase + UART01x_DR), | ||
| 23934 | + xmit->buf[xmit->tail], __LINE__); | ||
| 23935 | + xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); | ||
| 23936 | + uap->port.icount.tx++; | ||
| 23937 | + if (uart_circ_empty(xmit)) | ||
| 23938 | + break; | ||
| 23939 | + } while (--count > 0); | ||
| 23940 | + | ||
| 23941 | + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | ||
| 23942 | + uart_write_wakeup(&uap->port); | ||
| 23943 | + | ||
| 23944 | + if (uart_circ_empty(xmit)) | ||
| 23945 | + acp_serial_stop_tx(&uap->port); | ||
| 23946 | +} | ||
| 23947 | + | ||
| 23948 | +void acp_serial_modem_status(struct uart_acp_port *uap) | ||
| 23949 | +{ | ||
| 23950 | + unsigned int status, delta; | ||
| 23951 | + | ||
| 23952 | + status = in_le32((u32 *)(uap->port.membase + UART01x_FR)) & | ||
| 23953 | + UART01x_FR_MODEM_ANY; | ||
| 23954 | + | ||
| 23955 | + delta = status ^ uap->old_status; | ||
| 23956 | + uap->old_status = status; | ||
| 23957 | + | ||
| 23958 | + if (!delta) | ||
| 23959 | + return; | ||
| 23960 | + | ||
| 23961 | + if (delta & UART01x_FR_DCD) | ||
| 23962 | + uart_handle_dcd_change(&uap->port, status & UART01x_FR_DCD); | ||
| 23963 | + | ||
| 23964 | + if (delta & UART01x_FR_DSR) | ||
| 23965 | + uap->port.icount.dsr++; | ||
| 23966 | + | ||
| 23967 | + if (delta & UART01x_FR_CTS) | ||
| 23968 | + uart_handle_cts_change(&uap->port, status & UART01x_FR_CTS); | ||
| 23969 | + | ||
| 23970 | + wake_up_interruptible(&uap->port.state->port.delta_msr_wait); | ||
| 23971 | +} | ||
| 23972 | + | ||
| 23973 | +/* | ||
| 23974 | + ------------------------------------------------------------------------------ | ||
| 23975 | + acp_serial_isr | ||
| 23976 | +*/ | ||
| 23977 | + | ||
| 23978 | +STATIC irqreturn_t | ||
| 23979 | +acp_serial_isr(int irq, void *dev_id) | ||
| 23980 | +{ | ||
| 23981 | + struct uart_acp_port *uap = dev_id; | ||
| 23982 | + unsigned int status, pass_counter = AMBA_ISR_PASS_LIMIT; | ||
| 23983 | + int handled = 0; | ||
| 23984 | + | ||
| 23985 | + spin_lock(&uap->port.lock); | ||
| 23986 | + | ||
| 23987 | + /*status = readw(uap->port.membase + UART011_MIS);*/ | ||
| 23988 | + status = in_le32((u32 *)(uap->port.membase + UART011_MIS)); | ||
| 23989 | + if (status) { | ||
| 23990 | + do { | ||
| 23991 | +#if 0 | ||
| 23992 | + writew(status & ~(UART011_TXIS|UART011_RTIS| | ||
| 23993 | + UART011_RXIS), | ||
| 23994 | + uap->port.membase + UART011_ICR); | ||
| 23995 | +#else | ||
| 23996 | + out_le32((u32 *)(uap->port.membase + UART011_ICR), | ||
| 23997 | + (status & | ||
| 23998 | + ~(UART011_TXIS|UART011_RTIS|UART011_RXIS))); | ||
| 23999 | +#endif | ||
| 24000 | + | ||
| 24001 | + if (status & (UART011_RTIS|UART011_RXIS)) | ||
| 24002 | + acp_serial_rx_chars(uap); | ||
| 24003 | + if (status & (UART011_DSRMIS|UART011_DCDMIS| | ||
| 24004 | + UART011_CTSMIS|UART011_RIMIS)) | ||
| 24005 | + acp_serial_modem_status(uap); | ||
| 24006 | + if (status & UART011_TXIS) | ||
| 24007 | + acp_serial_tx_chars(uap); | ||
| 24008 | + | ||
| 24009 | + if (pass_counter-- == 0) | ||
| 24010 | + break; | ||
| 24011 | + | ||
| 24012 | + /*status = readw(uap->port.membase + UART011_MIS);*/ | ||
| 24013 | + status = | ||
| 24014 | + in_le32((u32 *)(uap->port.membase + UART011_MIS)); | ||
| 24015 | + } while (status != 0); | ||
| 24016 | + handled = 1; | ||
| 24017 | + } | ||
| 24018 | + | ||
| 24019 | + spin_unlock(&uap->port.lock); | ||
| 24020 | + | ||
| 24021 | + return IRQ_RETVAL(handled); | ||
| 24022 | +} | ||
| 24023 | + | ||
| 24024 | +unsigned int acp_serial_get_mctrl(struct uart_port *port) | ||
| 24025 | +{ | ||
| 24026 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24027 | + unsigned int result = 0; | ||
| 24028 | + /*unsigned int status = readw(uap->port.membase + UART01x_FR);*/ | ||
| 24029 | + unsigned int status = in_le32((u32 *)(uap->port.membase + UART01x_FR)); | ||
| 24030 | + | ||
| 24031 | +#define TIOCMBIT(uartbit, tiocmbit) do { \ | ||
| 24032 | + if (status & (uartbit)) \ | ||
| 24033 | + result |= (tiocmbit); \ | ||
| 24034 | +} while (0); | ||
| 24035 | + TIOCMBIT(UART01x_FR_DCD, TIOCM_CAR); | ||
| 24036 | + TIOCMBIT(UART01x_FR_DSR, TIOCM_DSR); | ||
| 24037 | + TIOCMBIT(UART01x_FR_CTS, TIOCM_CTS); | ||
| 24038 | + TIOCMBIT(UART011_FR_RI, TIOCM_RNG); | ||
| 24039 | +#undef TIOCMBIT | ||
| 24040 | + return result; | ||
| 24041 | +} | ||
| 24042 | + | ||
| 24043 | +void acp_serial_set_mctrl(struct uart_port *port, unsigned int mctrl) | ||
| 24044 | +{ | ||
| 24045 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24046 | + unsigned int cr; | ||
| 24047 | + | ||
| 24048 | + /*cr = readw(uap->port.membase + UART011_CR);*/ | ||
| 24049 | + cr = in_le32((u32 *)(uap->port.membase + UART011_CR)); | ||
| 24050 | + | ||
| 24051 | +#define TIOCMBIT(tiocmbit, uartbit) do { \ | ||
| 24052 | + if (mctrl & tiocmbit) \ | ||
| 24053 | + cr |= uartbit; \ | ||
| 24054 | + else \ | ||
| 24055 | + cr &= ~uartbit; \ | ||
| 24056 | +} while (0); | ||
| 24057 | + | ||
| 24058 | + TIOCMBIT(TIOCM_RTS, UART011_CR_RTS); | ||
| 24059 | + TIOCMBIT(TIOCM_DTR, UART011_CR_DTR); | ||
| 24060 | + TIOCMBIT(TIOCM_OUT1, UART011_CR_OUT1); | ||
| 24061 | + TIOCMBIT(TIOCM_OUT2, UART011_CR_OUT2); | ||
| 24062 | + TIOCMBIT(TIOCM_LOOP, UART011_CR_LBE); | ||
| 24063 | + | ||
| 24064 | +#undef TIOCMBIT | ||
| 24065 | + | ||
| 24066 | + /*writew(cr, uap->port.membase + UART011_CR);*/ | ||
| 24067 | + out_le32((u32 *)(uap->port.membase + UART011_CR), cr); | ||
| 24068 | +} | ||
| 24069 | + | ||
| 24070 | +void acp_serial_break_ctl(struct uart_port *port, int break_state) | ||
| 24071 | +{ | ||
| 24072 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24073 | + unsigned long flags; | ||
| 24074 | + unsigned int lcr_h; | ||
| 24075 | + | ||
| 24076 | + spin_lock_irqsave(&uap->port.lock, flags); | ||
| 24077 | + /*lcr_h = readw(uap->port.membase + UART011_LCRH);*/ | ||
| 24078 | + lcr_h = in_le32((u32 *)(uap->port.membase + UART011_LCRH)); | ||
| 24079 | + if (break_state == -1) | ||
| 24080 | + lcr_h |= UART01x_LCRH_BRK; | ||
| 24081 | + else | ||
| 24082 | + lcr_h &= ~UART01x_LCRH_BRK; | ||
| 24083 | + /*writew(lcr_h, uap->port.membase + UART011_LCRH);*/ | ||
| 24084 | + out_le32((u32 *)(uap->port.membase + UART011_LCRH), lcr_h); | ||
| 24085 | + spin_unlock_irqrestore(&uap->port.lock, flags); | ||
| 24086 | +} | ||
| 24087 | + | ||
| 24088 | +#ifdef CONFIG_CONSOLE_POLL | ||
| 24089 | + | ||
| 24090 | +/* | ||
| 24091 | + ---------------------------------------------------------------------- | ||
| 24092 | + acp_serial_poll_get_char | ||
| 24093 | +*/ | ||
| 24094 | + | ||
| 24095 | +STATIC int | ||
| 24096 | +acp_serial_poll_get_char(struct uart_port *port) | ||
| 24097 | +{ | ||
| 24098 | + struct uart_acp_port * uap = (struct uart_acp_port *) port; | ||
| 24099 | + unsigned int status; | ||
| 24100 | + | ||
| 24101 | + do { | ||
| 24102 | + status = in_le32((u32 *) | ||
| 24103 | + (uap->port.membase + UART01x_FR)); | ||
| 24104 | + } while (status & UART01x_FR_RXFE); | ||
| 24105 | + | ||
| 24106 | + return in_le32((u32 *) (uap->port.membase + UART01x_DR)); | ||
| 24107 | +} | ||
| 24108 | + | ||
| 24109 | +/* | ||
| 24110 | + ---------------------------------------------------------------------- | ||
| 24111 | + acp_serial_poll_put_char | ||
| 24112 | +*/ | ||
| 24113 | + | ||
| 24114 | +STATIC void | ||
| 24115 | +acp_serial_poll_put_char(struct uart_port *port, unsigned char ch) | ||
| 24116 | +{ | ||
| 24117 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24118 | + | ||
| 24119 | + while (in_le32((u32 *) (uap->port.membase + UART01x_FR)) & | ||
| 24120 | + UART01x_FR_TXFF) { | ||
| 24121 | + barrier(); | ||
| 24122 | + } | ||
| 24123 | + | ||
| 24124 | + acp_serial_wac((u32 *)(uap->port.membase + UART01x_DR), ch, | ||
| 24125 | + __LINE__); | ||
| 24126 | + | ||
| 24127 | + return; | ||
| 24128 | +} | ||
| 24129 | + | ||
| 24130 | +#endif /* CONFIG_CONSOLE_POLL */ | ||
| 24131 | + | ||
| 24132 | +/* | ||
| 24133 | + ---------------------------------------------------------------------- | ||
| 24134 | + acp_serial_startup | ||
| 24135 | +*/ | ||
| 24136 | + | ||
| 24137 | +STATIC int | ||
| 24138 | +acp_serial_startup(struct uart_port *port) | ||
| 24139 | +{ | ||
| 24140 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24141 | + unsigned int cr; | ||
| 24142 | + int retval = 0; | ||
| 24143 | + | ||
| 24144 | +#ifndef CONFIG_CONSOLE_POLL | ||
| 24145 | + | ||
| 24146 | + /* | ||
| 24147 | + * Set up the interrupt. | ||
| 24148 | + */ | ||
| 24149 | + | ||
| 24150 | + uap->port.irq = irq_create_mapping( NULL, uap->hwirq ); | ||
| 24151 | + | ||
| 24152 | + if (NO_IRQ == uap->port.irq) { | ||
| 24153 | + printk(KERN_ERR "irq_create_mapping() failed!\n"); | ||
| 24154 | + goto clk_dis; | ||
| 24155 | + } | ||
| 24156 | + | ||
| 24157 | + retval = irq_set_irq_type(uap->port.irq, IRQ_TYPE_LEVEL_HIGH); | ||
| 24158 | + | ||
| 24159 | + if (0 != retval) { | ||
| 24160 | + printk(KERN_ERR "set_irq_type(%d, 0x%x) failed!\n", | ||
| 24161 | + uap->port.irq, IRQ_TYPE_LEVEL_HIGH); | ||
| 24162 | + goto clk_dis; | ||
| 24163 | + } | ||
| 24164 | + | ||
| 24165 | + retval = request_irq(uap->port.irq, acp_serial_isr, | ||
| 24166 | + IRQF_DISABLED, "uart-pl011", uap); | ||
| 24167 | + | ||
| 24168 | + if (retval) { | ||
| 24169 | + printk(KERN_ERR "request_irq(%d) failed!\n", uap->port.irq); | ||
| 24170 | + goto clk_dis; | ||
| 24171 | + } | ||
| 24172 | + | ||
| 24173 | + out_le32((u32 *)(uap->port.membase + UART011_IFLS), | ||
| 24174 | + UART011_IFLS_RX4_8|UART011_IFLS_TX4_8); | ||
| 24175 | + | ||
| 24176 | +#endif /* CONFIG_CONSOLE_POLL */ | ||
| 24177 | + | ||
| 24178 | + /* | ||
| 24179 | + * Provoke TX FIFO interrupt into asserting. | ||
| 24180 | + */ | ||
| 24181 | + cr = UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_LBE; | ||
| 24182 | + out_le32((u32 *)(uap->port.membase + UART011_CR), cr); | ||
| 24183 | + out_le32((u32 *)(uap->port.membase + UART011_FBRD), 0); | ||
| 24184 | + out_le32((u32 *)(uap->port.membase + UART011_IBRD), 1); | ||
| 24185 | + out_le32((u32 *)(uap->port.membase + UART011_LCRH), 0); | ||
| 24186 | + acp_serial_wac((u32 *) (uap->port.membase + UART01x_DR), 0, | ||
| 24187 | + __LINE__); | ||
| 24188 | + | ||
| 24189 | + while (in_le32((u32 *)(uap->port.membase + UART01x_FR)) & | ||
| 24190 | + UART01x_FR_BUSY) | ||
| 24191 | + barrier(); | ||
| 24192 | + | ||
| 24193 | + cr = UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE; | ||
| 24194 | + /*writew(cr, uap->port.membase + UART011_CR);*/ | ||
| 24195 | + out_le32((u32 *)(uap->port.membase + UART011_CR), cr); | ||
| 24196 | + | ||
| 24197 | + /* | ||
| 24198 | + * initialise the old status of the modem signals | ||
| 24199 | + */ | ||
| 24200 | +#if 0 | ||
| 24201 | + uap->old_status = | ||
| 24202 | + readw(uap->port.membase + UART01x_FR) & UART01x_FR_MODEM_ANY; | ||
| 24203 | +#else | ||
| 24204 | + uap->old_status = | ||
| 24205 | + in_le32((u32 *)(uap->port.membase + UART01x_FR)) & | ||
| 24206 | + UART01x_FR_MODEM_ANY; | ||
| 24207 | +#endif | ||
| 24208 | + | ||
| 24209 | + /* | ||
| 24210 | + * Finally, enable interrupts | ||
| 24211 | + */ | ||
| 24212 | + spin_lock_irq(&uap->port.lock); | ||
| 24213 | + uap->interrupt_mask = UART011_RXIM | UART011_RTIM; | ||
| 24214 | + /*writew(uap->interrupt_mask, uap->port.membase + UART011_IMSC);*/ | ||
| 24215 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 24216 | + uap->interrupt_mask); | ||
| 24217 | + spin_unlock_irq(&uap->port.lock); | ||
| 24218 | + | ||
| 24219 | + return 0; | ||
| 24220 | + | ||
| 24221 | + clk_dis: | ||
| 24222 | + /*clk_disable(uap->clk);*/ | ||
| 24223 | +/* out:*/ | ||
| 24224 | + return retval; | ||
| 24225 | +} | ||
| 24226 | + | ||
| 24227 | +/* | ||
| 24228 | + ---------------------------------------------------------------------- | ||
| 24229 | + acp_serial_shutdown | ||
| 24230 | +*/ | ||
| 24231 | + | ||
| 24232 | +STATIC void | ||
| 24233 | +acp_serial_shutdown(struct uart_port *port) | ||
| 24234 | +{ | ||
| 24235 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24236 | + unsigned long val; | ||
| 24237 | + | ||
| 24238 | + /* | ||
| 24239 | + * disable all interrupts | ||
| 24240 | + */ | ||
| 24241 | + spin_lock_irq(&uap->port.lock); | ||
| 24242 | + uap->interrupt_mask = 0; | ||
| 24243 | + out_le32((u32 *)(uap->port.membase + UART011_IMSC), | ||
| 24244 | + uap->interrupt_mask); | ||
| 24245 | + out_le32((u32 *)(uap->port.membase + UART011_ICR), 0xffff); | ||
| 24246 | + spin_unlock_irq(&uap->port.lock); | ||
| 24247 | + | ||
| 24248 | + /* | ||
| 24249 | + * Free the interrupt | ||
| 24250 | + */ | ||
| 24251 | + free_irq(uap->port.irq, uap); | ||
| 24252 | + | ||
| 24253 | + /* | ||
| 24254 | + * disable the port | ||
| 24255 | + */ | ||
| 24256 | + out_le32((u32 *)(uap->port.membase + UART011_CR), | ||
| 24257 | + UART01x_CR_UARTEN | UART011_CR_TXE); | ||
| 24258 | + | ||
| 24259 | + /* | ||
| 24260 | + * disable break condition and fifos | ||
| 24261 | + */ | ||
| 24262 | + val = in_le32((u32 *)(uap->port.membase + UART011_LCRH)); | ||
| 24263 | + val &= ~(UART01x_LCRH_BRK | UART01x_LCRH_FEN); | ||
| 24264 | + out_le32((u32 *)(uap->port.membase + UART011_LCRH), val); | ||
| 24265 | +} | ||
| 24266 | + | ||
| 24267 | +/* | ||
| 24268 | + ---------------------------------------------------------------------- | ||
| 24269 | + acp_serial_set_termios | ||
| 24270 | +*/ | ||
| 24271 | + | ||
| 24272 | +STATIC void | ||
| 24273 | +acp_serial_set_termios(struct uart_port *port, struct ktermios *termios, | ||
| 24274 | + struct ktermios *old) | ||
| 24275 | +{ | ||
| 24276 | + unsigned int lcr_h, old_cr; | ||
| 24277 | + unsigned long flags; | ||
| 24278 | + int baud; | ||
| 24279 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24280 | + | ||
| 24281 | + /* | ||
| 24282 | + * Set up the clock, and calculate the divisors. | ||
| 24283 | + */ | ||
| 24284 | + | ||
| 24285 | + /*baud = termios->c_ospeed;*/ | ||
| 24286 | + baud = 9600; | ||
| 24287 | + get_clock_stuff(port, baud); | ||
| 24288 | + | ||
| 24289 | + switch (termios->c_cflag & CSIZE) { | ||
| 24290 | + case CS5: | ||
| 24291 | + lcr_h = UART01x_LCRH_WLEN_5; | ||
| 24292 | + break; | ||
| 24293 | + case CS6: | ||
| 24294 | + lcr_h = UART01x_LCRH_WLEN_6; | ||
| 24295 | + break; | ||
| 24296 | + case CS7: | ||
| 24297 | + lcr_h = UART01x_LCRH_WLEN_7; | ||
| 24298 | + break; | ||
| 24299 | + default: /* CS8 */ | ||
| 24300 | + lcr_h = UART01x_LCRH_WLEN_8; | ||
| 24301 | + break; | ||
| 24302 | + } | ||
| 24303 | + if (termios->c_cflag & CSTOPB) | ||
| 24304 | + lcr_h |= UART01x_LCRH_STP2; | ||
| 24305 | + if (termios->c_cflag & PARENB) { | ||
| 24306 | + lcr_h |= UART01x_LCRH_PEN; | ||
| 24307 | + if (!(termios->c_cflag & PARODD)) | ||
| 24308 | + lcr_h |= UART01x_LCRH_EPS; | ||
| 24309 | + } | ||
| 24310 | + if (port->fifosize > 1) | ||
| 24311 | + lcr_h |= UART01x_LCRH_FEN; | ||
| 24312 | + | ||
| 24313 | + spin_lock_irqsave(&port->lock, flags); | ||
| 24314 | + | ||
| 24315 | + /* | ||
| 24316 | + * Update the per-port timeout. | ||
| 24317 | + */ | ||
| 24318 | + uart_update_timeout(port, termios->c_cflag, baud); | ||
| 24319 | + | ||
| 24320 | + port->read_status_mask = UART011_DR_OE | 255; | ||
| 24321 | + if (termios->c_iflag & INPCK) | ||
| 24322 | + port->read_status_mask |= UART011_DR_FE | UART011_DR_PE; | ||
| 24323 | + if (termios->c_iflag & (BRKINT | PARMRK)) | ||
| 24324 | + port->read_status_mask |= UART011_DR_BE; | ||
| 24325 | + | ||
| 24326 | + /* | ||
| 24327 | + * Characters to ignore | ||
| 24328 | + */ | ||
| 24329 | + port->ignore_status_mask = 0; | ||
| 24330 | + if (termios->c_iflag & IGNPAR) | ||
| 24331 | + port->ignore_status_mask |= UART011_DR_FE | UART011_DR_PE; | ||
| 24332 | + if (termios->c_iflag & IGNBRK) { | ||
| 24333 | + port->ignore_status_mask |= UART011_DR_BE; | ||
| 24334 | + /* | ||
| 24335 | + * If we're ignoring parity and break indicators, | ||
| 24336 | + * ignore overruns too (for real raw support). | ||
| 24337 | + */ | ||
| 24338 | + if (termios->c_iflag & IGNPAR) | ||
| 24339 | + port->ignore_status_mask |= UART011_DR_OE; | ||
| 24340 | + } | ||
| 24341 | + | ||
| 24342 | + /* | ||
| 24343 | + * Ignore all characters if CREAD is not set. | ||
| 24344 | + */ | ||
| 24345 | + if ((termios->c_cflag & CREAD) == 0) | ||
| 24346 | + port->ignore_status_mask |= UART_DUMMY_DR_RX; | ||
| 24347 | + | ||
| 24348 | + if (UART_ENABLE_MS(port, termios->c_cflag)) | ||
| 24349 | + acp_serial_enable_ms(port); | ||
| 24350 | + | ||
| 24351 | + /* first, disable everything */ | ||
| 24352 | + old_cr = in_le32((u32 *)(uap->port.membase + UART011_CR)); | ||
| 24353 | + out_le32((u32 *)(uap->port.membase + UART011_CR), 0); | ||
| 24354 | + | ||
| 24355 | + /* Set baud rate */ | ||
| 24356 | + out_le32((u32 *)(uap->port.membase + UART011_FBRD), uap->fbrd); | ||
| 24357 | + out_le32((u32 *)(uap->port.membase + UART011_IBRD), uap->ibrd); | ||
| 24358 | + | ||
| 24359 | + /* | ||
| 24360 | + * ----------v----------v----------v----------v----- | ||
| 24361 | + * NOTE: MUST BE WRITTEN AFTER UARTLCR_M & UARTLCR_L | ||
| 24362 | + * ----------^----------^----------^----------^----- | ||
| 24363 | + */ | ||
| 24364 | + out_le32((u32 *)(uap->port.membase + UART011_LCRH), lcr_h); | ||
| 24365 | + out_le32((u32 *)(uap->port.membase + UART011_CR), old_cr); | ||
| 24366 | + | ||
| 24367 | + spin_unlock_irqrestore(&port->lock, flags); | ||
| 24368 | +} | ||
| 24369 | + | ||
| 24370 | +const char *acp_serial_type(struct uart_port *port) | ||
| 24371 | +{ | ||
| 24372 | + return port->type == PORT_AMBA ? "AMBA/PL011" : NULL; | ||
| 24373 | +} | ||
| 24374 | + | ||
| 24375 | +/* | ||
| 24376 | + * Release the memory region(s) being used by 'port' | ||
| 24377 | + */ | ||
| 24378 | +void acp_serial_release_port(struct uart_port *port) | ||
| 24379 | +{ | ||
| 24380 | + release_mem_region(port->mapbase, SZ_4K); | ||
| 24381 | +} | ||
| 24382 | + | ||
| 24383 | +/* | ||
| 24384 | + * Request the memory region(s) being used by 'port' | ||
| 24385 | + */ | ||
| 24386 | +int acp_serial_request_port(struct uart_port *port) | ||
| 24387 | +{ | ||
| 24388 | + return request_mem_region(port->mapbase, SZ_4K, "uart-pl011") | ||
| 24389 | + != NULL ? 0 : -EBUSY; | ||
| 24390 | +} | ||
| 24391 | + | ||
| 24392 | +/* | ||
| 24393 | + * Configure/autoconfigure the port. | ||
| 24394 | + */ | ||
| 24395 | +void acp_serial_config_port(struct uart_port *port, int flags) | ||
| 24396 | +{ | ||
| 24397 | + if (flags & UART_CONFIG_TYPE) { | ||
| 24398 | + port->type = PORT_AMBA; | ||
| 24399 | + acp_serial_request_port(port); | ||
| 24400 | + } | ||
| 24401 | +} | ||
| 24402 | + | ||
| 24403 | +/* | ||
| 24404 | + * verify the new serial_struct (for TIOCSSERIAL). | ||
| 24405 | + */ | ||
| 24406 | +int acp_serial_verify_port(struct uart_port *port, struct serial_struct *ser) | ||
| 24407 | +{ | ||
| 24408 | + int ret = 0; | ||
| 24409 | + if (ser->type != PORT_UNKNOWN && ser->type != PORT_AMBA) | ||
| 24410 | + ret = -EINVAL; | ||
| 24411 | + if (ser->irq < 0 || ser->irq >= nr_irqs) | ||
| 24412 | + ret = -EINVAL; | ||
| 24413 | + if (ser->baud_base < 9600) | ||
| 24414 | + ret = -EINVAL; | ||
| 24415 | + return ret; | ||
| 24416 | +} | ||
| 24417 | + | ||
| 24418 | +static struct uart_ops amba_acp_pops = { | ||
| 24419 | + .tx_empty = acp_serial_tx_empty, | ||
| 24420 | + .set_mctrl = acp_serial_set_mctrl, | ||
| 24421 | + .get_mctrl = acp_serial_get_mctrl, | ||
| 24422 | + .stop_tx = acp_serial_stop_tx, | ||
| 24423 | + .start_tx = acp_serial_start_tx, | ||
| 24424 | + .stop_rx = acp_serial_stop_rx, | ||
| 24425 | + .enable_ms = acp_serial_enable_ms, | ||
| 24426 | + .break_ctl = acp_serial_break_ctl, | ||
| 24427 | + .startup = acp_serial_startup, | ||
| 24428 | + .shutdown = acp_serial_shutdown, | ||
| 24429 | + .set_termios = acp_serial_set_termios, | ||
| 24430 | + .type = acp_serial_type, | ||
| 24431 | + .release_port = acp_serial_release_port, | ||
| 24432 | + .request_port = acp_serial_request_port, | ||
| 24433 | + .config_port = acp_serial_config_port, | ||
| 24434 | + .verify_port = acp_serial_verify_port, | ||
| 24435 | +#ifdef CONFIG_CONSOLE_POLL | ||
| 24436 | + .poll_get_char = acp_serial_poll_get_char, | ||
| 24437 | + .poll_put_char = acp_serial_poll_put_char, | ||
| 24438 | +#endif | ||
| 24439 | +}; | ||
| 24440 | + | ||
| 24441 | +static struct uart_acp_port *acp_ports[2]; | ||
| 24442 | + | ||
| 24443 | +#ifdef CONFIG_SERIAL_ACP_CONSOLE | ||
| 24444 | + | ||
| 24445 | +/* | ||
| 24446 | + ---------------------------------------------------------------------- | ||
| 24447 | + acp_serial_console_putchar | ||
| 24448 | +*/ | ||
| 24449 | + | ||
| 24450 | +STATIC void | ||
| 24451 | +acp_serial_console_putchar(struct uart_port *port, int ch) | ||
| 24452 | +{ | ||
| 24453 | + struct uart_acp_port *uap = (struct uart_acp_port *)port; | ||
| 24454 | + | ||
| 24455 | + while (in_le32((u32 *)(uap->port.membase + UART01x_FR)) & | ||
| 24456 | + UART01x_FR_TXFF) { | ||
| 24457 | + barrier(); | ||
| 24458 | + } | ||
| 24459 | + | ||
| 24460 | + /*out_le32((u32 *)(uap->port.membase + UART01x_DR), ch);*/ | ||
| 24461 | + acp_serial_wac((u32 *) (uap->port.membase + UART01x_DR), ch, | ||
| 24462 | + __LINE__); | ||
| 24463 | +} | ||
| 24464 | + | ||
| 24465 | +void | ||
| 24466 | +acp_console_write(struct console *co, const char *s, unsigned int count) | ||
| 24467 | +{ | ||
| 24468 | + struct uart_acp_port *uap = acp_ports[co->index]; | ||
| 24469 | + unsigned int status, old_cr, new_cr; | ||
| 24470 | + | ||
| 24471 | + /*clk_enable(uap->clk);*/ | ||
| 24472 | + | ||
| 24473 | + /* | ||
| 24474 | + * First save the CR then disable the interrupts | ||
| 24475 | + */ | ||
| 24476 | + /*old_cr = readw(uap->port.membase + UART011_CR);*/ | ||
| 24477 | + old_cr = in_le32((u32 *)(uap->port.membase + UART011_CR)); | ||
| 24478 | + new_cr = old_cr & ~UART011_CR_CTSEN; | ||
| 24479 | + new_cr |= UART01x_CR_UARTEN | UART011_CR_TXE; | ||
| 24480 | + /*writew(new_cr, uap->port.membase + UART011_CR);*/ | ||
| 24481 | + out_le32((u32 *)(uap->port.membase + UART011_CR), new_cr); | ||
| 24482 | + | ||
| 24483 | + uart_console_write(&uap->port, s, count, acp_serial_console_putchar); | ||
| 24484 | + | ||
| 24485 | + /* | ||
| 24486 | + * Finally, wait for transmitter to become empty | ||
| 24487 | + * and restore the TCR | ||
| 24488 | + */ | ||
| 24489 | + do { | ||
| 24490 | + /*status = readw(uap->port.membase + UART01x_FR);*/ | ||
| 24491 | + status = | ||
| 24492 | + in_le32((u32 *)(u32 *)(uap->port.membase + UART01x_FR)); | ||
| 24493 | + } while (status & UART01x_FR_BUSY); | ||
| 24494 | + /*writew(old_cr, uap->port.membase + UART011_CR);*/ | ||
| 24495 | + out_le32((u32 *)(uap->port.membase + UART011_CR), old_cr); | ||
| 24496 | + | ||
| 24497 | + /*clk_disable(uap->clk);*/ | ||
| 24498 | +} | ||
| 24499 | + | ||
| 24500 | +void __init | ||
| 24501 | +acp_console_get_options(struct uart_acp_port *uap, int *baud, | ||
| 24502 | + int *parity, int *bits) | ||
| 24503 | +{ | ||
| 24504 | + /*if (readw(uap->port.membase + UART011_CR) & UART01x_CR_UARTEN) {*/ | ||
| 24505 | + if (in_le32((u32 *)(u32 *)(uap->port.membase + UART011_CR)) & | ||
| 24506 | + UART01x_CR_UARTEN) { | ||
| 24507 | + unsigned int lcr_h, ibrd, fbrd; | ||
| 24508 | + | ||
| 24509 | + lcr_h = in_le32((u32 *)(u32 *)(uap->port.membase + | ||
| 24510 | + UART011_LCRH)); | ||
| 24511 | + | ||
| 24512 | + *parity = 'n'; | ||
| 24513 | + if (lcr_h & UART01x_LCRH_PEN) { | ||
| 24514 | + if (lcr_h & UART01x_LCRH_EPS) | ||
| 24515 | + *parity = 'e'; | ||
| 24516 | + else | ||
| 24517 | + *parity = 'o'; | ||
| 24518 | + } | ||
| 24519 | + | ||
| 24520 | + if ((lcr_h & 0x60) == UART01x_LCRH_WLEN_7) | ||
| 24521 | + *bits = 7; | ||
| 24522 | + else | ||
| 24523 | + *bits = 8; | ||
| 24524 | + | ||
| 24525 | + ibrd = in_le32((u32 *)(u32 *)(uap->port.membase + | ||
| 24526 | + UART011_IBRD)); | ||
| 24527 | + fbrd = in_le32((u32 *)(u32 *)(uap->port.membase + | ||
| 24528 | + UART011_FBRD)); | ||
| 24529 | + | ||
| 24530 | + *baud = uap->port.uartclk * 4 / (64 * ibrd + fbrd); | ||
| 24531 | + } | ||
| 24532 | +} | ||
| 24533 | + | ||
| 24534 | +int __init acp_console_setup(struct console *co, char *options) | ||
| 24535 | +{ | ||
| 24536 | + struct uart_acp_port *uap; | ||
| 24537 | + int baud = 9600; | ||
| 24538 | + int bits = 8; | ||
| 24539 | + int parity = 'n'; | ||
| 24540 | + int flow = 'n'; | ||
| 24541 | + | ||
| 24542 | + /* | ||
| 24543 | + * Check whether an invalid uart number has been specified, and | ||
| 24544 | + * if so, search for the first available port that does have | ||
| 24545 | + * console support. | ||
| 24546 | + */ | ||
| 24547 | + if (co->index >= UART_NR) | ||
| 24548 | + co->index = 0; | ||
| 24549 | + uap = acp_ports[co->index]; | ||
| 24550 | + if (!uap) | ||
| 24551 | + return -ENODEV; | ||
| 24552 | + | ||
| 24553 | + if (options) | ||
| 24554 | + uart_parse_options(options, &baud, &parity, &bits, &flow); | ||
| 24555 | + else | ||
| 24556 | + acp_console_get_options(uap, &baud, &parity, &bits); | ||
| 24557 | + | ||
| 24558 | + return uart_set_options(&uap->port, co, baud, parity, bits, flow); | ||
| 24559 | +} | ||
| 24560 | + | ||
| 24561 | +static struct uart_driver acp_serial_driver; | ||
| 24562 | +static struct console acp_console = { | ||
| 24563 | + .name = "ttyS", | ||
| 24564 | + .write = acp_console_write, | ||
| 24565 | + .device = uart_console_device, | ||
| 24566 | + .setup = acp_console_setup, | ||
| 24567 | + .flags = CON_PRINTBUFFER, | ||
| 24568 | + .index = -1, | ||
| 24569 | + .data = &acp_serial_driver, | ||
| 24570 | +}; | ||
| 24571 | + | ||
| 24572 | +static int __init | ||
| 24573 | +acp_console_init(void) | ||
| 24574 | +{ | ||
| 24575 | + register_console(&acp_console); | ||
| 24576 | + | ||
| 24577 | + return 0; | ||
| 24578 | +} | ||
| 24579 | + | ||
| 24580 | +console_initcall(acp_console_init); | ||
| 24581 | + | ||
| 24582 | +#define ACP_CONSOLE (&acp_console) | ||
| 24583 | +#else | ||
| 24584 | +#define ACP_CONSOLE NULL | ||
| 24585 | +#endif | ||
| 24586 | + | ||
| 24587 | +static struct uart_driver acp_serial_driver = { | ||
| 24588 | + .owner = THIS_MODULE, | ||
| 24589 | + .driver_name = "serial", | ||
| 24590 | + .dev_name = "ttyS", | ||
| 24591 | + .major = TTY_MAJOR, | ||
| 24592 | + .minor = 64, | ||
| 24593 | + .nr = UART_NR, | ||
| 24594 | + .cons = ACP_CONSOLE, | ||
| 24595 | +}; | ||
| 24596 | + | ||
| 24597 | +/* | ||
| 24598 | + ---------------------------------------------------------------------- | ||
| 24599 | + acp_serial_add_ports | ||
| 24600 | +*/ | ||
| 24601 | + | ||
| 24602 | +STATIC int | ||
| 24603 | +acp_serial_add_ports(struct uart_driver *driver) | ||
| 24604 | +{ | ||
| 24605 | + struct uart_acp_port *uap; | ||
| 24606 | + int i, ret; | ||
| 24607 | + struct device_node *np = NULL; | ||
| 24608 | + u64 addr = 0; | ||
| 24609 | + const u32 *reg, *interrupts, *clk, *speed; | ||
| 24610 | + int baud_rate; | ||
| 24611 | + int *enabled; | ||
| 24612 | + | ||
| 24613 | + for (i = 0; i < ARRAY_SIZE(acp_ports); ++i) { | ||
| 24614 | + if (acp_ports[i] == NULL) { | ||
| 24615 | + break; | ||
| 24616 | + } | ||
| 24617 | + } | ||
| 24618 | + | ||
| 24619 | + if (i == ARRAY_SIZE(acp_ports)) { | ||
| 24620 | + ret = -EBUSY; | ||
| 24621 | + goto out; | ||
| 24622 | + } | ||
| 24623 | + | ||
| 24624 | + uap = kzalloc(sizeof(struct uart_acp_port), GFP_KERNEL); | ||
| 24625 | + | ||
| 24626 | + if (NULL == uap) { | ||
| 24627 | + ret = -ENOMEM; | ||
| 24628 | + goto out; | ||
| 24629 | + } | ||
| 24630 | + | ||
| 24631 | + np = of_find_node_by_type(np, "serial"); | ||
| 24632 | + | ||
| 24633 | + while (np && !of_device_is_compatible(np, "acp-uart0")) | ||
| 24634 | + np = of_find_node_by_type(np, "serial"); | ||
| 24635 | + | ||
| 24636 | + if (np) { | ||
| 24637 | + enabled = of_get_property(np, "enabled", NULL); | ||
| 24638 | + } | ||
| 24639 | + | ||
| 24640 | + if (!enabled) { | ||
| 24641 | + /* | ||
| 24642 | + Older LSI U-Boot package (prior to 4.8.1.36). | ||
| 24643 | + | ||
| 24644 | + Only use UART0. The timer registers are defined | ||
| 24645 | + differently in the device tree. | ||
| 24646 | + */ | ||
| 24647 | + uap->timer_base = ioremap(0x002000408040ULL, 0x20); | ||
| 24648 | + } else { | ||
| 24649 | + /* | ||
| 24650 | + Newer LSI U-Boot package (4.8.1.36 on). | ||
| 24651 | + | ||
| 24652 | + Only use a serial port if it is enabled. | ||
| 24653 | + */ | ||
| 24654 | + | ||
| 24655 | + if (!np || (0 == *enabled)) { | ||
| 24656 | + np = NULL; | ||
| 24657 | + np = of_find_node_by_type(np, "serial"); | ||
| 24658 | + | ||
| 24659 | + while (np && !of_device_is_compatible(np, "acp-uart1")) | ||
| 24660 | + np = of_find_node_by_type(np, "serial"); | ||
| 24661 | + | ||
| 24662 | + if (np) { | ||
| 24663 | + enabled = of_get_property(np, "enabled", NULL); | ||
| 24664 | + printk("uart1 *enabled=%d\n", *enabled); | ||
| 24665 | + } | ||
| 24666 | + } | ||
| 24667 | + | ||
| 24668 | + if (np && (0 != *enabled)) { | ||
| 24669 | + reg = of_get_property(np, "clock-reg", NULL); | ||
| 24670 | + | ||
| 24671 | + if (reg) { | ||
| 24672 | + addr = of_translate_address(np, reg); | ||
| 24673 | + if (addr == OF_BAD_ADDR) | ||
| 24674 | + addr = 0; | ||
| 24675 | + } | ||
| 24676 | + | ||
| 24677 | + if (addr) | ||
| 24678 | + uap->timer_base = ioremap(addr, reg[1]); | ||
| 24679 | + else { | ||
| 24680 | + printk(KERN_ERR "timer io address not found\n"); | ||
| 24681 | + ret = -ENOMEM; | ||
| 24682 | + } | ||
| 24683 | + } | ||
| 24684 | + } | ||
| 24685 | + | ||
| 24686 | + if (np) { | ||
| 24687 | + reg = of_get_property(np, "reg", NULL); | ||
| 24688 | + | ||
| 24689 | + if (reg) { | ||
| 24690 | + addr = of_translate_address(np, reg); | ||
| 24691 | + if (addr == OF_BAD_ADDR) | ||
| 24692 | + addr = 0; | ||
| 24693 | + } | ||
| 24694 | + | ||
| 24695 | + if (addr) | ||
| 24696 | + uap->port.membase = ioremap(addr, reg[1]); | ||
| 24697 | + else { | ||
| 24698 | + printk(KERN_ERR "serial io address not found\n"); | ||
| 24699 | + ret = -ENOMEM; | ||
| 24700 | + } | ||
| 24701 | + | ||
| 24702 | + interrupts = of_get_property(np, "interrupts", NULL); | ||
| 24703 | + | ||
| 24704 | + if (interrupts) | ||
| 24705 | + uap->hwirq = interrupts[0]; | ||
| 24706 | + else { | ||
| 24707 | + printk(KERN_ERR "serial irq not found\n"); | ||
| 24708 | + uap->hwirq = 22; | ||
| 24709 | + } | ||
| 24710 | + | ||
| 24711 | + clk = of_get_property(np, "clock-frequency", NULL); | ||
| 24712 | + | ||
| 24713 | + if (clk && *clk) | ||
| 24714 | + uap->port.uartclk = *clk; | ||
| 24715 | + else { | ||
| 24716 | + printk(KERN_ERR "serial clock frequency not found\n"); | ||
| 24717 | + uap->port.uartclk = 6500000; | ||
| 24718 | + } | ||
| 24719 | + | ||
| 24720 | + speed = of_get_property(np, "current-speed", NULL); | ||
| 24721 | + | ||
| 24722 | + if (speed && *speed) | ||
| 24723 | + baud_rate = *speed; | ||
| 24724 | + else { | ||
| 24725 | + printk(KERN_ERR "current speed not found\n"); | ||
| 24726 | + baud_rate = 9600; | ||
| 24727 | + } | ||
| 24728 | + } else { | ||
| 24729 | + ret = -ENOMEM; | ||
| 24730 | + } | ||
| 24731 | + | ||
| 24732 | + uap->port.iotype = UPIO_MEM; | ||
| 24733 | + uap->port.fifosize = 16; | ||
| 24734 | + uap->port.ops = &amba_acp_pops; | ||
| 24735 | + uap->port.flags = UPF_BOOT_AUTOCONF; | ||
| 24736 | + uap->port.line = i; | ||
| 24737 | + get_clock_stuff(&uap->port, baud_rate); | ||
| 24738 | + acp_ports[i] = uap; | ||
| 24739 | + ret = uart_add_one_port(driver, &uap->port); | ||
| 24740 | + | ||
| 24741 | + if (0 != ret) { | ||
| 24742 | + acp_ports[i] = NULL; | ||
| 24743 | + kfree(uap); | ||
| 24744 | + } | ||
| 24745 | + | ||
| 24746 | + out: | ||
| 24747 | + return ret; | ||
| 24748 | +} | ||
| 24749 | + | ||
| 24750 | +/* | ||
| 24751 | + ---------------------------------------------------------------------- | ||
| 24752 | + acp_serial_delete_ports | ||
| 24753 | +*/ | ||
| 24754 | + | ||
| 24755 | +STATIC int | ||
| 24756 | +acp_serial_delete_ports(struct uart_driver *driver) | ||
| 24757 | +{ | ||
| 24758 | + int i; | ||
| 24759 | + | ||
| 24760 | + for (i = 0; i < ARRAY_SIZE(acp_ports); ++i) { | ||
| 24761 | + if (NULL != acp_ports[i]) { | ||
| 24762 | + uart_remove_one_port(driver, | ||
| 24763 | + &(acp_ports[i])->port); | ||
| 24764 | + kfree(acp_ports[i]); | ||
| 24765 | + acp_ports[i] = NULL; | ||
| 24766 | + } | ||
| 24767 | + } | ||
| 24768 | + | ||
| 24769 | + return 0; | ||
| 24770 | +} | ||
| 24771 | + | ||
| 24772 | +/* | ||
| 24773 | + ====================================================================== | ||
| 24774 | + ====================================================================== | ||
| 24775 | + For debugging, export symbols... | ||
| 24776 | + ====================================================================== | ||
| 24777 | + ====================================================================== | ||
| 24778 | +*/ | ||
| 24779 | + | ||
| 24780 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 24781 | + | ||
| 24782 | +EXPORT_SYMBOL(acp_serial_isr); | ||
| 24783 | +EXPORT_SYMBOL(acp_serial_set_termios); | ||
| 24784 | +EXPORT_SYMBOL(acp_serial_shutdown); | ||
| 24785 | +EXPORT_SYMBOL(get_clock_stuff); | ||
| 24786 | +EXPORT_SYMBOL(acp_serial_startup); | ||
| 24787 | +EXPORT_SYMBOL(acp_serial_tx_empty); | ||
| 24788 | +EXPORT_SYMBOL(acp_serial_tx_chars); | ||
| 24789 | +EXPORT_SYMBOL(acp_serial_add_ports); | ||
| 24790 | +EXPORT_SYMBOL(acp_serial_delete_ports); | ||
| 24791 | +EXPORT_SYMBOL(acp_serial_wac); | ||
| 24792 | +EXPORT_SYMBOL(acp_serial_start_tx); | ||
| 24793 | +EXPORT_SYMBOL(acp_serial_stop_tx); | ||
| 24794 | + | ||
| 24795 | +#ifdef CONFIG_SERIAL_ACP_CONSOLE | ||
| 24796 | +EXPORT_SYMBOL(acp_serial_console_putchar); | ||
| 24797 | +#endif | ||
| 24798 | + | ||
| 24799 | +#ifdef CONFIG_CONSOLE_POLL | ||
| 24800 | +EXPORT_SYMBOL(acp_serial_poll_put_char); | ||
| 24801 | +EXPORT_SYMBOL(acp_serial_poll_get_char); | ||
| 24802 | +#endif | ||
| 24803 | + | ||
| 24804 | +#endif | ||
| 24805 | + | ||
| 24806 | +/* | ||
| 24807 | + ====================================================================== | ||
| 24808 | + ====================================================================== | ||
| 24809 | + Linux module stuff. | ||
| 24810 | + ====================================================================== | ||
| 24811 | + ====================================================================== | ||
| 24812 | +*/ | ||
| 24813 | + | ||
| 24814 | +/* | ||
| 24815 | + ---------------------------------------------------------------------- | ||
| 24816 | + acp_init | ||
| 24817 | +*/ | ||
| 24818 | + | ||
| 24819 | +int __init | ||
| 24820 | +acp_serial_init(void) | ||
| 24821 | +{ | ||
| 24822 | + int ret; | ||
| 24823 | + | ||
| 24824 | + printk(KERN_INFO "Serial: ACP Serial Driver\n"); | ||
| 24825 | + | ||
| 24826 | + /* Clear the ports array */ | ||
| 24827 | + memset((void *) &acp_ports[0], 0, | ||
| 24828 | + sizeof(struct uart_acp_port *) * ARRAY_SIZE(acp_ports)); | ||
| 24829 | + | ||
| 24830 | + /* Register the driver */ | ||
| 24831 | + ret = uart_register_driver(&acp_serial_driver); | ||
| 24832 | + | ||
| 24833 | + if (0 != ret) { | ||
| 24834 | + printk(KERN_ERR | ||
| 24835 | + "uart_register_driver() failed with %d\n", ret); | ||
| 24836 | + goto out; | ||
| 24837 | + } | ||
| 24838 | + | ||
| 24839 | + /* Add ports */ | ||
| 24840 | + ret = acp_serial_add_ports(&acp_serial_driver); | ||
| 24841 | + | ||
| 24842 | + if (0 != ret) { | ||
| 24843 | + printk(KERN_ERR | ||
| 24844 | + "acp_serial_add_ports() failed with %d\n", ret); | ||
| 24845 | + goto out; | ||
| 24846 | + } | ||
| 24847 | + | ||
| 24848 | + out: | ||
| 24849 | + return ret; | ||
| 24850 | +} | ||
| 24851 | + | ||
| 24852 | +module_init(acp_serial_init); | ||
| 24853 | + | ||
| 24854 | +/* | ||
| 24855 | + ---------------------------------------------------------------------- | ||
| 24856 | + acp_serial_exit | ||
| 24857 | +*/ | ||
| 24858 | + | ||
| 24859 | +void __exit | ||
| 24860 | +acp_serial_exit(void) | ||
| 24861 | +{ | ||
| 24862 | + acp_serial_delete_ports(&acp_serial_driver); | ||
| 24863 | + uart_unregister_driver(&acp_serial_driver); | ||
| 24864 | +} | ||
| 24865 | + | ||
| 24866 | +module_exit(acp_serial_exit); | ||
| 24867 | + | ||
| 24868 | +MODULE_AUTHOR("LSI Corporation"); | ||
| 24869 | +MODULE_DESCRIPTION("ARM AMBA serial port on PPC476 driver"); | ||
| 24870 | +MODULE_LICENSE("GPL"); | ||
| 24871 | diff --git a/drivers/lsi/acp/test.c b/drivers/lsi/acp/test.c | ||
| 24872 | new file mode 100644 | ||
| 24873 | index 0000000..46cdf1e | ||
| 24874 | --- /dev/null | ||
| 24875 | +++ b/drivers/lsi/acp/test.c | ||
| 24876 | @@ -0,0 +1,300 @@ | ||
| 24877 | +/* | ||
| 24878 | + * drivers/lsi/acp/test.c | ||
| 24879 | + * | ||
| 24880 | + * Copyright (C) 2010 LSI | ||
| 24881 | + * | ||
| 24882 | + * This program is free software; you can redistribute it and/or modify | ||
| 24883 | + * it under the terms of the GNU General Public License as published by | ||
| 24884 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 24885 | + * (at your option) any later version. | ||
| 24886 | + * | ||
| 24887 | + * This program is distributed in the hope that it will be useful, | ||
| 24888 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 24889 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 24890 | + * GNU General Public License for more details. | ||
| 24891 | + * | ||
| 24892 | + * You should have received a copy of the GNU General Public License | ||
| 24893 | + * along with this program; if not, write to the Free Software | ||
| 24894 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 24895 | + */ | ||
| 24896 | + | ||
| 24897 | +#include <linux/module.h> | ||
| 24898 | + | ||
| 24899 | +#undef TICK_TEST | ||
| 24900 | +/*#define TICK_TEST*/ | ||
| 24901 | + | ||
| 24902 | +#undef ENV_TEST | ||
| 24903 | +/*#define ENV_TEST*/ | ||
| 24904 | + | ||
| 24905 | +#undef IO_TEST | ||
| 24906 | +/*#define IO_TEST*/ | ||
| 24907 | + | ||
| 24908 | +#undef LOCK_TEST | ||
| 24909 | +/*#define LOCK_TEST*/ | ||
| 24910 | + | ||
| 24911 | +#if defined(TICK_TEST) | ||
| 24912 | + | ||
| 24913 | +/* | ||
| 24914 | + ====================================================================== | ||
| 24915 | + ====================================================================== | ||
| 24916 | + Wall Time | ||
| 24917 | + ====================================================================== | ||
| 24918 | + ====================================================================== | ||
| 24919 | +*/ | ||
| 24920 | + | ||
| 24921 | +#include <asm/delay.h> | ||
| 24922 | + | ||
| 24923 | +int __init | ||
| 24924 | +acp_test(void) | ||
| 24925 | +{ | ||
| 24926 | + int count = 120; | ||
| 24927 | + char *output[] = { "tick", "tock" }; | ||
| 24928 | + int index = 0; | ||
| 24929 | + | ||
| 24930 | + while (0 < count) { | ||
| 24931 | + printk(KERN_WARN "%s\n", output[index]); | ||
| 24932 | + index ^= 1; | ||
| 24933 | + udelay(1000 * 1000); | ||
| 24934 | + } | ||
| 24935 | + | ||
| 24936 | +} | ||
| 24937 | + | ||
| 24938 | +#elif defined(ENV_TEST) | ||
| 24939 | + | ||
| 24940 | +/* | ||
| 24941 | + ====================================================================== | ||
| 24942 | + ====================================================================== | ||
| 24943 | + U-Boot Environment | ||
| 24944 | + ====================================================================== | ||
| 24945 | + ====================================================================== | ||
| 24946 | +*/ | ||
| 24947 | + | ||
| 24948 | +#include <linux/mtd/mtd.h> | ||
| 24949 | + | ||
| 24950 | +int __init | ||
| 24951 | +acp_test(void) | ||
| 24952 | +{ | ||
| 24953 | + struct mtd_info *mtd_env0; | ||
| 24954 | + struct mtd_info *mtd_env1; | ||
| 24955 | + loff_t offset; | ||
| 24956 | + void *buffer_env0; | ||
| 24957 | + void *buffer_env1; | ||
| 24958 | + int i; | ||
| 24959 | + int rc; | ||
| 24960 | + | ||
| 24961 | + mtd_env0 = get_mtd_device_nm("env-0"); | ||
| 24962 | + | ||
| 24963 | + if ((struct mtd_info *) -ENODEV == mtd_env0) { | ||
| 24964 | + printk(KERN_WARN " --> Couldn't Get MTD Device by name!\n"); | ||
| 24965 | + return 0; | ||
| 24966 | + } | ||
| 24967 | + | ||
| 24968 | + mtd_env1 = get_mtd_device_nm("env-1"); | ||
| 24969 | + | ||
| 24970 | + if ((struct mtd_info *) -ENODEV == mtd_env1) { | ||
| 24971 | + printk(KERN_WARN " --> Couldn't Get MTD Device by name!\n"); | ||
| 24972 | + return 0; | ||
| 24973 | + } | ||
| 24974 | + | ||
| 24975 | + printk(KERN_INFO " --> Got the MTD Devices by name: 0x%x/0x%x %llu/%llu " | ||
| 24976 | + "%u/%u %d/%d\n", | ||
| 24977 | + (unsigned int) mtd_env0, (unsigned int) mtd_env1, | ||
| 24978 | + mtd_env0->size, mtd_env1->size, | ||
| 24979 | + mtd_env0->erasesize, mtd_env1->erasesize, | ||
| 24980 | + mtd_env0->numeraseregions, mtd_env1->numeraseregions); | ||
| 24981 | + | ||
| 24982 | + for (offset = 0; | ||
| 24983 | + offset < mtd_env0->size; | ||
| 24984 | + offset += mtd_env0->erasesize) { | ||
| 24985 | + printk(" --> mtd_env0 --> offset:0x%08llx is_bad:%d\n", | ||
| 24986 | + offset, mtd_env0->block_isbad(mtd_env0, offset)); | ||
| 24987 | + } | ||
| 24988 | + | ||
| 24989 | + for (offset = 0; | ||
| 24990 | + offset < mtd_env1->size; | ||
| 24991 | + offset += mtd_env1->erasesize) { | ||
| 24992 | + printk(" --> mtd_env1 --> offset:0x%08llx is_bad:%d\n", | ||
| 24993 | + offset, mtd_env1->block_isbad(mtd_env1, offset)); | ||
| 24994 | + } | ||
| 24995 | + | ||
| 24996 | + buffer_env0 = kmalloc(0x20000, GFP_KERNEL); | ||
| 24997 | + | ||
| 24998 | + if (0 == buffer_env0) { | ||
| 24999 | + printk(KERN_WARN "buffer allocation failed!\n"); | ||
| 25000 | + return 0; | ||
| 25001 | + } | ||
| 25002 | + | ||
| 25003 | + rc = mtd_env0->read(mtd_env0, 0, 0x20000, &i, buffer_env0); | ||
| 25004 | + printk(KERN_INFO "rc=%d i=0x%x\n", rc, i); | ||
| 25005 | + | ||
| 25006 | + for (i = 0; i < 16; ++i) { | ||
| 25007 | + printk(KERN_INFO "0x%08x ", | ||
| 25008 | + ((unsigned long *) buffer_env0)[i]); | ||
| 25009 | + } | ||
| 25010 | + | ||
| 25011 | + kfree(buffer_env0); | ||
| 25012 | + | ||
| 25013 | + return 0; | ||
| 25014 | +} | ||
| 25015 | + | ||
| 25016 | +#elif defined(IO_TEST) | ||
| 25017 | + | ||
| 25018 | +/* | ||
| 25019 | + ====================================================================== | ||
| 25020 | + ====================================================================== | ||
| 25021 | + IO test -- Map IO from various regions... | ||
| 25022 | + ====================================================================== | ||
| 25023 | + ====================================================================== | ||
| 25024 | +*/ | ||
| 25025 | + | ||
| 25026 | +#include <asm/io.h> | ||
| 25027 | + | ||
| 25028 | +#define ROM_PHYSICAL_ADDRESS 0x2100000000ULL | ||
| 25029 | +#define LCM_PHYSICAL_ADDRESS 0x1000000000ULL | ||
| 25030 | + | ||
| 25031 | +int __init | ||
| 25032 | +acp_test(void) | ||
| 25033 | +{ | ||
| 25034 | + void __iomem *virtual_address; | ||
| 25035 | + | ||
| 25036 | + /* Map in ROM */ | ||
| 25037 | + | ||
| 25038 | + virtual_address = ioremap(ROM_PHYSICAL_ADDRESS, (16 * 1024)); | ||
| 25039 | + | ||
| 25040 | + if ((void __iomem *) 0 == virtual_address) { | ||
| 25041 | + printk(KERN_ERR "iorema() of 0x%llx failed", | ||
| 25042 | + ROM_PHYSICAL_ADDRESS); | ||
| 25043 | + } else { | ||
| 25044 | + unsigned long *rom = (unsigned long *) virtual_address; | ||
| 25045 | + printk("ROM: 0x%lx 0x%lx 0x%lx 0x%lx\n", | ||
| 25046 | + rom[0], rom[1], rom[2], rom[3]); | ||
| 25047 | + } | ||
| 25048 | + | ||
| 25049 | + /* Map in LCM */ | ||
| 25050 | + | ||
| 25051 | + virtual_address = ioremap(LCM_PHYSICAL_ADDRESS, (16 * 1024)); | ||
| 25052 | + | ||
| 25053 | + if ((void __iomem *) 0 == virtual_address) { | ||
| 25054 | + printk(KERN_ERR "iorema() of 0x%llx failed", | ||
| 25055 | + LCM_PHYSICAL_ADDRESS); | ||
| 25056 | + } else { | ||
| 25057 | + unsigned long * lcm = (unsigned long *) virtual_address; | ||
| 25058 | + printk("LCM: 0x%lx 0x%lx 0x%lx 0x%lx\n", | ||
| 25059 | + lcm[0], lcm[1], lcm[2], lcm[3]); | ||
| 25060 | + } | ||
| 25061 | + | ||
| 25062 | + return 0; | ||
| 25063 | +} | ||
| 25064 | + | ||
| 25065 | +#elif defined(LOCK_TEST) | ||
| 25066 | + | ||
| 25067 | +#include <linux/kernel.h> | ||
| 25068 | +#include <linux/kthread.h> | ||
| 25069 | +#include <linux/sched.h> | ||
| 25070 | +#include <asm/irq.h> | ||
| 25071 | +#include <asm/io.h> | ||
| 25072 | +#include <linux/proc_fs.h> | ||
| 25073 | +#include <asm/dcr-native.h> | ||
| 25074 | + | ||
| 25075 | +#include "ncr.h" | ||
| 25076 | + | ||
| 25077 | +static unsigned long passes; | ||
| 25078 | +static unsigned long plls[4]; | ||
| 25079 | +static spinlock_t pll_test_spinlock = SPIN_LOCK_UNLOCKED; | ||
| 25080 | + | ||
| 25081 | +static struct task_struct *pll_test_thread; | ||
| 25082 | + | ||
| 25083 | +static int | ||
| 25084 | +pll_test(void *input) | ||
| 25085 | +{ | ||
| 25086 | + unsigned long ppcsys; | ||
| 25087 | + unsigned long ddr1; | ||
| 25088 | + unsigned long ddr0; | ||
| 25089 | + | ||
| 25090 | + for (;;) { | ||
| 25091 | + if (kthread_should_stop()) | ||
| 25092 | + break; | ||
| 25093 | + | ||
| 25094 | + schedule(); | ||
| 25095 | + spin_lock(&pll_test_spinlock); | ||
| 25096 | + ppcsys = mfdcr(0xd01); | ||
| 25097 | + ddr1 = ddr0 = 0; | ||
| 25098 | + | ||
| 25099 | + if (0 != ncr_read(NCP_REGION_ID(0xd, 0), 0x1c, 4, &ddr1)) | ||
| 25100 | + printk(KERN_ERR "DDR1 NCR Read Error\n"); | ||
| 25101 | + | ||
| 25102 | + if (0 != ncr_read(NCP_REGION_ID(0x23, 0), 0x1c, 4, &ddr0)) | ||
| 25103 | + printk(KERN_ERR "DDR1 NCR Read Error\n"); | ||
| 25104 | + | ||
| 25105 | + ++passes; | ||
| 25106 | + | ||
| 25107 | + if (0 == (ppcsys & 0x80000000)) | ||
| 25108 | + ++plls[0]; | ||
| 25109 | + | ||
| 25110 | + if (0 == (ppcsys & 0x40000000)) | ||
| 25111 | + ++plls[1]; | ||
| 25112 | + | ||
| 25113 | + if (0 == (ddr1 & 0x1)) | ||
| 25114 | + ++plls[2]; | ||
| 25115 | + | ||
| 25116 | + if (0 == (ddr0 & 0x1)) | ||
| 25117 | + ++plls[3]; | ||
| 25118 | + | ||
| 25119 | + spin_unlock(&pll_test_spinlock); | ||
| 25120 | + } | ||
| 25121 | + | ||
| 25122 | + return 0; | ||
| 25123 | +} | ||
| 25124 | + | ||
| 25125 | +static int pll_read_proc(char *page, char **start, off_t offset, | ||
| 25126 | + int count, int *eof, void *data) | ||
| 25127 | +{ | ||
| 25128 | + int length; | ||
| 25129 | + | ||
| 25130 | + spin_lock(&pll_test_spinlock); | ||
| 25131 | + length = sprintf(page, | ||
| 25132 | + "Passes:0x%08x PLL:0x%08x SYS:0x%08x DDR1:0x%08x " | ||
| 25133 | + "DDR0:0x%08x\n", | ||
| 25134 | + passes, plls[0], plls[1], plls[2], plls[3]); | ||
| 25135 | + passes = 0; | ||
| 25136 | + plls[0] = plls[1] = plls[2] = plls[3] = 0; | ||
| 25137 | + spin_unlock(&pll_test_spinlock); | ||
| 25138 | + *eof = 1; | ||
| 25139 | + | ||
| 25140 | + return length; | ||
| 25141 | +} | ||
| 25142 | + | ||
| 25143 | +int __init | ||
| 25144 | +acp_test(void) | ||
| 25145 | +{ | ||
| 25146 | + create_proc_read_entry("driver/lost_locks", | ||
| 25147 | + 0, NULL, pll_read_proc, NULL); | ||
| 25148 | + pll_test_thread = kthread_run(pll_test, (void *)0, "PLL Lock Test"); | ||
| 25149 | + return 0; | ||
| 25150 | +} | ||
| 25151 | + | ||
| 25152 | +#else | ||
| 25153 | + | ||
| 25154 | +/* | ||
| 25155 | + ====================================================================== | ||
| 25156 | + ====================================================================== | ||
| 25157 | + No Test Defined... | ||
| 25158 | + ====================================================================== | ||
| 25159 | + ====================================================================== | ||
| 25160 | +*/ | ||
| 25161 | + | ||
| 25162 | +int __init | ||
| 25163 | +acp_test(void) | ||
| 25164 | +{ | ||
| 25165 | + printk("Define a Test!\n"); | ||
| 25166 | + | ||
| 25167 | + return 0; | ||
| 25168 | +} | ||
| 25169 | + | ||
| 25170 | +#endif | ||
| 25171 | + | ||
| 25172 | +module_init(acp_test); | ||
| 25173 | + | ||
| 25174 | +MODULE_AUTHOR("LSI Corporation"); | ||
| 25175 | +MODULE_DESCRIPTION("Timing Test"); | ||
| 25176 | +MODULE_LICENSE("GPL"); | ||
| 25177 | diff --git a/drivers/lsi/acp/ubootenv.c b/drivers/lsi/acp/ubootenv.c | ||
| 25178 | new file mode 100644 | ||
| 25179 | index 0000000..c40c35d | ||
| 25180 | --- /dev/null | ||
| 25181 | +++ b/drivers/lsi/acp/ubootenv.c | ||
| 25182 | @@ -0,0 +1,557 @@ | ||
| 25183 | +/* | ||
| 25184 | + * drivers/lsi/acp/ubootenv.c | ||
| 25185 | + * | ||
| 25186 | + * Copyright (C) 2009 LSI | ||
| 25187 | + * | ||
| 25188 | + * This program is free software; you can redistribute it and/or modify | ||
| 25189 | + * it under the terms of the GNU General Public License as published by | ||
| 25190 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 25191 | + * (at your option) any later version. | ||
| 25192 | + * | ||
| 25193 | + * This program is distributed in the hope that it will be useful, | ||
| 25194 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 25195 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 25196 | + * GNU General Public License for more details. | ||
| 25197 | + * | ||
| 25198 | + * You should have received a copy of the GNU General Public License | ||
| 25199 | + * along with this program; if not, write to the Free Software | ||
| 25200 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021.1.1_pre.17 USA | ||
| 25201 | + */ | ||
| 25202 | + | ||
| 25203 | +#include <linux/module.h> | ||
| 25204 | +#include <linux/kernel.h> | ||
| 25205 | +#include <linux/string.h> | ||
| 25206 | +#include <linux/vmalloc.h> | ||
| 25207 | +#include <linux/mtd/mtd.h> | ||
| 25208 | +#include <linux/crc32.h> | ||
| 25209 | +#include <asm/io.h> | ||
| 25210 | + | ||
| 25211 | +/* | ||
| 25212 | + ====================================================================== | ||
| 25213 | + Data types and Macros | ||
| 25214 | + ====================================================================== | ||
| 25215 | +*/ | ||
| 25216 | + | ||
| 25217 | +#undef DEBUG_EXPORT_SYMBOLS | ||
| 25218 | +/*#define DEBUG_EXPORT_SYMBOLS*/ | ||
| 25219 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25220 | +#define STATIC | ||
| 25221 | +#else | ||
| 25222 | +#define STATIC static | ||
| 25223 | +#endif | ||
| 25224 | + | ||
| 25225 | +/* | ||
| 25226 | + DEBUG | ||
| 25227 | +*/ | ||
| 25228 | + | ||
| 25229 | +#undef DEBUG | ||
| 25230 | +/*#define DEBUG*/ | ||
| 25231 | +#if defined( DEBUG ) | ||
| 25232 | +#define DEBUG_PRINT( format, args... ) do { \ | ||
| 25233 | +printk( "ubootenv:%s:%d - DEBUG - ", __FUNCTION__, __LINE__ ); \ | ||
| 25234 | +printk( format, ##args ); \ | ||
| 25235 | +} while( 0 ); | ||
| 25236 | +#else | ||
| 25237 | +#define DEBUG_PRINT( format, args... ) { } | ||
| 25238 | +#endif | ||
| 25239 | + | ||
| 25240 | +/* | ||
| 25241 | + WARN | ||
| 25242 | +*/ | ||
| 25243 | + | ||
| 25244 | +#undef WARN | ||
| 25245 | +#define WARN | ||
| 25246 | +#if defined( WARN ) | ||
| 25247 | +#define WARN_PRINT( format, args... ) do { \ | ||
| 25248 | +printk( "ubootenv:%s:%d - WARN - ", __FUNCTION__, __LINE__ ); \ | ||
| 25249 | +printk( format, ##args ); \ | ||
| 25250 | +} while( 0 ); | ||
| 25251 | +#else | ||
| 25252 | +#define WARN_PRINT( format, args... ) { } | ||
| 25253 | +#endif | ||
| 25254 | + | ||
| 25255 | +/* | ||
| 25256 | + ERROR | ||
| 25257 | +*/ | ||
| 25258 | + | ||
| 25259 | +#define ERROR_PRINT( format, args... ) do { \ | ||
| 25260 | +printk( "ubootenv:%s:%d - ERROR - ", __FUNCTION__, __LINE__ ); \ | ||
| 25261 | +printk( format, ##args ); \ | ||
| 25262 | +} while( 0 ); | ||
| 25263 | + | ||
| 25264 | +/* | ||
| 25265 | + ====================================================================== | ||
| 25266 | + Global Variables | ||
| 25267 | + ====================================================================== | ||
| 25268 | +*/ | ||
| 25269 | + | ||
| 25270 | +static unsigned long uboot_env_size = (128 * 1024); | ||
| 25271 | +static unsigned long uboot_env_cs_size = (128 * 1024); | ||
| 25272 | +static int uboot_env_current = -1; | ||
| 25273 | + | ||
| 25274 | +#define ENVIRONMENT_DATA_SIZE( size ) ( size - ( 2 * sizeof( unsigned long ) ) ) | ||
| 25275 | + | ||
| 25276 | +typedef struct environment { | ||
| 25277 | + | ||
| 25278 | + unsigned long crc32; | ||
| 25279 | + unsigned long flags; | ||
| 25280 | + unsigned char data [ ]; | ||
| 25281 | + | ||
| 25282 | +} __attribute__ ( ( packed ) ) environment_t; | ||
| 25283 | + | ||
| 25284 | +static environment_t * environment = ( environment_t * ) 0; | ||
| 25285 | + | ||
| 25286 | +static unsigned long crc32_lut [ 256 ] = { | ||
| 25287 | + | ||
| 25288 | + /* 0 -- */ 0u, 1996959894u, 3993919788u, 2567524794u, | ||
| 25289 | + /* 4 -- */ 124634137u, 1886057615u, 3915621685u, 2657392035u, | ||
| 25290 | + /* 8 -- */ 249268274u, 2044508324u, 3772115230u, 2547177864u, | ||
| 25291 | + /* 12 -- */ 162941995u, 2125561021u, 3887607047u, 2428444049u, | ||
| 25292 | + /* 16 -- */ 498536548u, 1789927666u, 4089016648u, 2227061214u, | ||
| 25293 | + /* 20 -- */ 450548861u, 1843258603u, 4107580753u, 2211677639u, | ||
| 25294 | + /* 24 -- */ 325883990u, 1684777152u, 4251122042u, 2321926636u, | ||
| 25295 | + /* 28 -- */ 335633487u, 1661365465u, 4195302755u, 2366115317u, | ||
| 25296 | + /* 32 -- */ 997073096u, 1281953886u, 3579855332u, 2724688242u, | ||
| 25297 | + /* 36 -- */ 1006888145u, 1258607687u, 3524101629u, 2768942443u, | ||
| 25298 | + /* 40 -- */ 901097722u, 1119000684u, 3686517206u, 2898065728u, | ||
| 25299 | + /* 44 -- */ 853044451u, 1172266101u, 3705015759u, 2882616665u, | ||
| 25300 | + /* 48 -- */ 651767980u, 1373503546u, 3369554304u, 3218104598u, | ||
| 25301 | + /* 52 -- */ 565507253u, 1454621731u, 3485111705u, 3099436303u, | ||
| 25302 | + /* 56 -- */ 671266974u, 1594198024u, 3322730930u, 2970347812u, | ||
| 25303 | + /* 60 -- */ 795835527u, 1483230225u, 3244367275u, 3060149565u, | ||
| 25304 | + /* 64 -- */ 1994146192u, 31158534u, 2563907772u, 4023717930u, | ||
| 25305 | + /* 68 -- */ 1907459465u, 112637215u, 2680153253u, 3904427059u, | ||
| 25306 | + /* 72 -- */ 2013776290u, 251722036u, 2517215374u, 3775830040u, | ||
| 25307 | + /* 76 -- */ 2137656763u, 141376813u, 2439277719u, 3865271297u, | ||
| 25308 | + /* 80 -- */ 1802195444u, 476864866u, 2238001368u, 4066508878u, | ||
| 25309 | + /* 84 -- */ 1812370925u, 453092731u, 2181625025u, 4111451223u, | ||
| 25310 | + /* 88 -- */ 1706088902u, 314042704u, 2344532202u, 4240017532u, | ||
| 25311 | + /* 92 -- */ 1658658271u, 366619977u, 2362670323u, 4224994405u, | ||
| 25312 | + /* 96 -- */ 1303535960u, 984961486u, 2747007092u, 3569037538u, | ||
| 25313 | + /* 100 -- */ 1256170817u, 1037604311u, 2765210733u, 3554079995u, | ||
| 25314 | + /* 104 -- */ 1131014506u, 879679996u, 2909243462u, 3663771856u, | ||
| 25315 | + /* 108 -- */ 1141124467u, 855842277u, 2852801631u, 3708648649u, | ||
| 25316 | + /* 112 -- */ 1342533948u, 654459306u, 3188396048u, 3373015174u, | ||
| 25317 | + /* 116 -- */ 1466479909u, 544179635u, 3110523913u, 3462522015u, | ||
| 25318 | + /* 120 -- */ 1591671054u, 702138776u, 2966460450u, 3352799412u, | ||
| 25319 | + /* 124 -- */ 1504918807u, 783551873u, 3082640443u, 3233442989u, | ||
| 25320 | + /* 128 -- */ 3988292384u, 2596254646u, 62317068u, 1957810842u, | ||
| 25321 | + /* 132 -- */ 3939845945u, 2647816111u, 81470997u, 1943803523u, | ||
| 25322 | + /* 136 -- */ 3814918930u, 2489596804u, 225274430u, 2053790376u, | ||
| 25323 | + /* 140 -- */ 3826175755u, 2466906013u, 167816743u, 2097651377u, | ||
| 25324 | + /* 144 -- */ 4027552580u, 2265490386u, 503444072u, 1762050814u, | ||
| 25325 | + /* 148 -- */ 4150417245u, 2154129355u, 426522225u, 1852507879u, | ||
| 25326 | + /* 152 -- */ 4275313526u, 2312317920u, 282753626u, 1742555852u, | ||
| 25327 | + /* 156 -- */ 4189708143u, 2394877945u, 397917763u, 1622183637u, | ||
| 25328 | + /* 160 -- */ 3604390888u, 2714866558u, 953729732u, 1340076626u, | ||
| 25329 | + /* 164 -- */ 3518719985u, 2797360999u, 1068828381u, 1219638859u, | ||
| 25330 | + /* 168 -- */ 3624741850u, 2936675148u, 906185462u, 1090812512u, | ||
| 25331 | + /* 172 -- */ 3747672003u, 2825379669u, 829329135u, 1181335161u, | ||
| 25332 | + /* 176 -- */ 3412177804u, 3160834842u, 628085408u, 1382605366u, | ||
| 25333 | + /* 180 -- */ 3423369109u, 3138078467u, 570562233u, 1426400815u, | ||
| 25334 | + /* 184 -- */ 3317316542u, 2998733608u, 733239954u, 1555261956u, | ||
| 25335 | + /* 188 -- */ 3268935591u, 3050360625u, 752459403u, 1541320221u, | ||
| 25336 | + /* 192 -- */ 2607071920u, 3965973030u, 1969922972u, 40735498u, | ||
| 25337 | + /* 196 -- */ 2617837225u, 3943577151u, 1913087877u, 83908371u, | ||
| 25338 | + /* 200 -- */ 2512341634u, 3803740692u, 2075208622u, 213261112u, | ||
| 25339 | + /* 204 -- */ 2463272603u, 3855990285u, 2094854071u, 198958881u, | ||
| 25340 | + /* 208 -- */ 2262029012u, 4057260610u, 1759359992u, 534414190u, | ||
| 25341 | + /* 212 -- */ 2176718541u, 4139329115u, 1873836001u, 414664567u, | ||
| 25342 | + /* 216 -- */ 2282248934u, 4279200368u, 1711684554u, 285281116u, | ||
| 25343 | + /* 220 -- */ 2405801727u, 4167216745u, 1634467795u, 376229701u, | ||
| 25344 | + /* 224 -- */ 2685067896u, 3608007406u, 1308918612u, 956543938u, | ||
| 25345 | + /* 228 -- */ 2808555105u, 3495958263u, 1231636301u, 1047427035u, | ||
| 25346 | + /* 232 -- */ 2932959818u, 3654703836u, 1088359270u, 936918000u, | ||
| 25347 | + /* 236 -- */ 2847714899u, 3736837829u, 1202900863u, 817233897u, | ||
| 25348 | + /* 240 -- */ 3183342108u, 3401237130u, 1404277552u, 615818150u, | ||
| 25349 | + /* 244 -- */ 3134207493u, 3453421203u, 1423857449u, 601450431u, | ||
| 25350 | + /* 248 -- */ 3009837614u, 3294710456u, 1567103746u, 711928724u, | ||
| 25351 | + /* 252 -- */ 3020668471u, 3272380065u, 1510334235u, 755167117u | ||
| 25352 | + | ||
| 25353 | +}; | ||
| 25354 | + | ||
| 25355 | +/* | ||
| 25356 | + ====================================================================== | ||
| 25357 | + Prototypes | ||
| 25358 | + ====================================================================== | ||
| 25359 | +*/ | ||
| 25360 | + | ||
| 25361 | +STATIC unsigned long ubootenv_crc32( unsigned char *, unsigned long ); | ||
| 25362 | +STATIC int ubootenv_initialize( void ); | ||
| 25363 | +STATIC void ubootenv_finalize( void ); | ||
| 25364 | +STATIC int ubootenv_update( void ); | ||
| 25365 | +STATIC int ubootenv_read( struct mtd_info *, size_t, void * ); | ||
| 25366 | +STATIC int ubootenv_write( struct mtd_info *, size_t, void * ); | ||
| 25367 | + | ||
| 25368 | +/* | ||
| 25369 | + ====================================================================== | ||
| 25370 | + ====================================================================== | ||
| 25371 | +*/ | ||
| 25372 | + | ||
| 25373 | +/* | ||
| 25374 | + ---------------------------------------------------------------------- | ||
| 25375 | + ubootenv_crc32 | ||
| 25376 | +*/ | ||
| 25377 | + | ||
| 25378 | +STATIC unsigned long | ||
| 25379 | +ubootenv_crc32( unsigned char * start, unsigned long size ) | ||
| 25380 | +{ | ||
| 25381 | + | ||
| 25382 | + unsigned long crc = ( unsigned long ) 0xffffffff, index; | ||
| 25383 | + | ||
| 25384 | + DEBUG_PRINT( "start=0x%lx size=0x%lx\n", (unsigned long) start, size ); | ||
| 25385 | + | ||
| 25386 | + for( index = 0; index < size; index ++ ) { | ||
| 25387 | + | ||
| 25388 | + unsigned long temp = ( crc ^ * ( start ++ ) ) & 0x000000ff; | ||
| 25389 | + crc = ( ( crc >> 8 ) & 0x00ffffff ) ^ crc32_lut [ temp ]; | ||
| 25390 | + | ||
| 25391 | + } | ||
| 25392 | + | ||
| 25393 | + return ~ crc; | ||
| 25394 | + | ||
| 25395 | +} | ||
| 25396 | + | ||
| 25397 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25398 | +EXPORT_SYMBOL( ubootenv_crc32 ); | ||
| 25399 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25400 | + | ||
| 25401 | +/* | ||
| 25402 | + ---------------------------------------------------------------------- | ||
| 25403 | + ubootenv_read | ||
| 25404 | +*/ | ||
| 25405 | + | ||
| 25406 | +STATIC int | ||
| 25407 | +ubootenv_read(struct mtd_info *mtd, size_t size, void *buffer) | ||
| 25408 | +{ | ||
| 25409 | + int read = 0; | ||
| 25410 | + loff_t offset = 0; | ||
| 25411 | + | ||
| 25412 | + DEBUG_PRINT("size=0x%x mtd->erasesize=0x%x mtd->size=0x%llx\n", | ||
| 25413 | + size, mtd->erasesize, mtd->size); | ||
| 25414 | + | ||
| 25415 | + if( 0 != size % mtd->erasesize ) { | ||
| 25416 | + ERROR_PRINT( "size=%u/%llu is not a multiple of erasesize=%u\n", | ||
| 25417 | + size, mtd->size, mtd->erasesize ); | ||
| 25418 | + return -1; | ||
| 25419 | + } | ||
| 25420 | + | ||
| 25421 | + if( size > mtd->size ) { | ||
| 25422 | + ERROR_PRINT( "size=%llu can't contain size=%u\n", | ||
| 25423 | + mtd->size, size ); | ||
| 25424 | + return -1; | ||
| 25425 | + } | ||
| 25426 | + | ||
| 25427 | + while( ( read < size ) && ( offset < mtd->size ) ) { | ||
| 25428 | + int return_code; | ||
| 25429 | + size_t bytes_read; | ||
| 25430 | + | ||
| 25431 | + DEBUG_PRINT("read=0x%x size=0x%x offset=0x%llx\n", | ||
| 25432 | + read, size, offset); | ||
| 25433 | + | ||
| 25434 | + if( 0 != mtd->block_isbad( mtd, offset ) ) { | ||
| 25435 | + offset += mtd->erasesize; | ||
| 25436 | + continue; | ||
| 25437 | + } | ||
| 25438 | + | ||
| 25439 | + return_code = mtd->read( mtd, offset, mtd->erasesize, | ||
| 25440 | + & bytes_read, ( u_char * ) buffer ); | ||
| 25441 | + | ||
| 25442 | + if( mtd->erasesize != bytes_read ) { | ||
| 25443 | + ERROR_PRINT( "Error Reading Environment!\n" ); | ||
| 25444 | + return -1; | ||
| 25445 | + } | ||
| 25446 | + | ||
| 25447 | + offset += mtd->erasesize; | ||
| 25448 | + read += mtd->erasesize; | ||
| 25449 | + buffer += mtd->erasesize; | ||
| 25450 | + } | ||
| 25451 | + | ||
| 25452 | + return 0; | ||
| 25453 | +} | ||
| 25454 | + | ||
| 25455 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25456 | +EXPORT_SYMBOL( ubootenv_read ); | ||
| 25457 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25458 | + | ||
| 25459 | +/* | ||
| 25460 | + ---------------------------------------------------------------------- | ||
| 25461 | + ubootenv_write | ||
| 25462 | +*/ | ||
| 25463 | + | ||
| 25464 | +STATIC int | ||
| 25465 | +ubootenv_write( struct mtd_info * mtd, size_t size, void * buffer ) | ||
| 25466 | +{ | ||
| 25467 | + DEBUG_PRINT( "Erasing %s\n", mtd->name ); | ||
| 25468 | + return 0; | ||
| 25469 | +} | ||
| 25470 | + | ||
| 25471 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25472 | +EXPORT_SYMBOL( ubootenv_write ); | ||
| 25473 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25474 | + | ||
| 25475 | +/* | ||
| 25476 | + ---------------------------------------------------------------------- | ||
| 25477 | + ubootenv_initialize | ||
| 25478 | +*/ | ||
| 25479 | + | ||
| 25480 | +STATIC int | ||
| 25481 | +ubootenv_initialize( void ) | ||
| 25482 | +{ | ||
| 25483 | + environment_t * env0; | ||
| 25484 | + environment_t * env1; | ||
| 25485 | + unsigned long crc32_env0; | ||
| 25486 | + unsigned long crc32_env1; | ||
| 25487 | + struct mtd_info * mtd_env0; | ||
| 25488 | + struct mtd_info * mtd_env1; | ||
| 25489 | + | ||
| 25490 | + DEBUG_PRINT( "Getting MTD Devices.\n" ); | ||
| 25491 | + | ||
| 25492 | + if( ( struct mtd_info * ) -ENODEV == | ||
| 25493 | + ( mtd_env0 = get_mtd_device_nm( "env-0" ) ) ) { | ||
| 25494 | + ERROR_PRINT( " --> Couldn't get MTD device by name!\n" ); | ||
| 25495 | + return -1; | ||
| 25496 | + } | ||
| 25497 | + | ||
| 25498 | + if( ( struct mtd_info * ) -ENODEV == | ||
| 25499 | + ( mtd_env1 = get_mtd_device_nm( "env-1" ) ) ) { | ||
| 25500 | + ERROR_PRINT( " --> Couldn't get MTD device by name!\n" ); | ||
| 25501 | + return -1; | ||
| 25502 | + } | ||
| 25503 | + | ||
| 25504 | + /* | ||
| 25505 | + If the erasesize is larger than the size of the environment, | ||
| 25506 | + change the environment size (so reading and writing will | ||
| 25507 | + work as expected) but use the original environment size to | ||
| 25508 | + calculate the checksum. | ||
| 25509 | + */ | ||
| 25510 | + | ||
| 25511 | + if (mtd_env0->erasesize > uboot_env_size) | ||
| 25512 | + uboot_env_size = mtd_env0->erasesize; | ||
| 25513 | + | ||
| 25514 | + DEBUG_PRINT( "Allocating Environment Buffers.\n" ); | ||
| 25515 | + | ||
| 25516 | + if( ( environment_t * ) 0 == | ||
| 25517 | + ( env0 = ( environment_t * ) vmalloc( uboot_env_size ) ) ) { | ||
| 25518 | + ERROR_PRINT( "Unable to allocate %lu bytes\n", uboot_env_size ); | ||
| 25519 | + return -1; | ||
| 25520 | + } | ||
| 25521 | + | ||
| 25522 | + if( ( environment_t * ) 0 == | ||
| 25523 | + ( env1 = ( environment_t * ) vmalloc( uboot_env_size ) ) ) { | ||
| 25524 | + ERROR_PRINT( "Unable to allocate %lu bytes\n", uboot_env_size ); | ||
| 25525 | + vfree( ( void * ) env0 ); | ||
| 25526 | + return -1; | ||
| 25527 | + } | ||
| 25528 | + | ||
| 25529 | + DEBUG_PRINT( "Reading Environments.\n" ); | ||
| 25530 | + | ||
| 25531 | + if( 0 != ubootenv_read( mtd_env0, uboot_env_size, env0 ) ) { | ||
| 25532 | + return -1; | ||
| 25533 | + } | ||
| 25534 | + | ||
| 25535 | + if( 0 != ubootenv_read( mtd_env1, uboot_env_size, env1 ) ) { | ||
| 25536 | + return -1; | ||
| 25537 | + } | ||
| 25538 | + | ||
| 25539 | + DEBUG_PRINT( "Calculating CRC values.\n" ); | ||
| 25540 | + crc32_env0 = ubootenv_crc32((unsigned char *)env0->data, | ||
| 25541 | + ENVIRONMENT_DATA_SIZE(uboot_env_cs_size)); | ||
| 25542 | + crc32_env1 = ubootenv_crc32((unsigned char *)env1->data, | ||
| 25543 | + ENVIRONMENT_DATA_SIZE(uboot_env_cs_size)); | ||
| 25544 | + DEBUG_PRINT( "crc32_env0=0x%lx env0->crc32=0x%lx\n", | ||
| 25545 | + crc32_env0, env0->crc32); | ||
| 25546 | + DEBUG_PRINT( "crc32_env2=0x%lx env1->crc32=0x%lx\n", | ||
| 25547 | + crc32_env1, env1->crc32); | ||
| 25548 | + DEBUG_PRINT( "Picking a Copy.\n" ); | ||
| 25549 | + | ||
| 25550 | + if( ( crc32_env0 == env0->crc32 ) && | ||
| 25551 | + ( crc32_env1 != env1->crc32 ) ) { | ||
| 25552 | + /* Use env0 */ | ||
| 25553 | + DEBUG_PRINT( "Using Copy 0.\n" ); | ||
| 25554 | + uboot_env_current = 0; | ||
| 25555 | + vfree( ( void * ) env1 ); | ||
| 25556 | + environment = env0; | ||
| 25557 | + } else if( ( crc32_env0 != env0->crc32 ) && | ||
| 25558 | + ( crc32_env1 == env1->crc32 ) ) { | ||
| 25559 | + /* Use env1 */ | ||
| 25560 | + DEBUG_PRINT( "Using Copy 1.\n" ); | ||
| 25561 | + uboot_env_current = 1; | ||
| 25562 | + vfree( ( void * ) env0 ); | ||
| 25563 | + environment = env1; | ||
| 25564 | + } else if( ( crc32_env0 != env0->crc32 ) && | ||
| 25565 | + ( crc32_env1 != env1->crc32 ) ) { | ||
| 25566 | + /* No Environment Available */ | ||
| 25567 | + uboot_env_current = -1; | ||
| 25568 | + vfree( ( void * ) env0 ); | ||
| 25569 | + vfree( ( void * ) env1 ); | ||
| 25570 | + ERROR_PRINT( "Bad CRCs: No Valid U-Boot Environment Found!\n" ); | ||
| 25571 | + return -1; | ||
| 25572 | + } else if( env0->flags > env1->flags ) { | ||
| 25573 | + /* Use env0 */ | ||
| 25574 | + DEBUG_PRINT( "Using Copy 0.\n" ); | ||
| 25575 | + uboot_env_current = 0; | ||
| 25576 | + vfree( ( void * ) env1 ); | ||
| 25577 | + environment = env0; | ||
| 25578 | + } else if( env0->flags < env1->flags ) { | ||
| 25579 | + /* Use env1 */ | ||
| 25580 | + DEBUG_PRINT( "Using Copy 1.\n" ); | ||
| 25581 | + uboot_env_current = 1; | ||
| 25582 | + vfree( ( void * ) env0 ); | ||
| 25583 | + environment = env1; | ||
| 25584 | + } else if( env0->flags == env1->flags ) { | ||
| 25585 | + /* Use Either */ | ||
| 25586 | + DEBUG_PRINT( "Using Copy 0.\n" ); | ||
| 25587 | + uboot_env_current = 0; | ||
| 25588 | + vfree( ( void * ) env1 ); | ||
| 25589 | + environment = env0; | ||
| 25590 | + } else { | ||
| 25591 | + /* No Environment Available */ | ||
| 25592 | + uboot_env_current = -1; | ||
| 25593 | + vfree( ( void * ) env0 ); | ||
| 25594 | + vfree( ( void * ) env1 ); | ||
| 25595 | + ERROR_PRINT( "Bad Flags: No Valid U-Boot Environment Found!\n" ); | ||
| 25596 | + return -1; | ||
| 25597 | + } | ||
| 25598 | + | ||
| 25599 | + DEBUG_PRINT( "Done...\n" ); | ||
| 25600 | + return 0; | ||
| 25601 | + | ||
| 25602 | +} | ||
| 25603 | + | ||
| 25604 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25605 | +EXPORT_SYMBOL( ubootenv_initialize ); | ||
| 25606 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25607 | + | ||
| 25608 | +/* | ||
| 25609 | + ---------------------------------------------------------------------- | ||
| 25610 | + ubootenv_update | ||
| 25611 | +*/ | ||
| 25612 | + | ||
| 25613 | +STATIC int | ||
| 25614 | +ubootenv_update( void ) | ||
| 25615 | +{ | ||
| 25616 | + if( NULL == environment ) { | ||
| 25617 | + ERROR_PRINT( "No Environment Available to Write.\n" ); | ||
| 25618 | + return -1; | ||
| 25619 | + } | ||
| 25620 | + | ||
| 25621 | + if( -1 == uboot_env_current ) { | ||
| 25622 | + ERROR_PRINT( "Environment Copy Selection is Invalid.\n" ); | ||
| 25623 | + return -1; | ||
| 25624 | + } | ||
| 25625 | + | ||
| 25626 | + if( 0 == uboot_env_current ) { | ||
| 25627 | + DEBUG_PRINT( "Saving Environment in Copy 1.\n" ); | ||
| 25628 | + } else { | ||
| 25629 | + DEBUG_PRINT( "Saving Environment in Copy 0.\n" ); | ||
| 25630 | + } | ||
| 25631 | + | ||
| 25632 | + return 0; | ||
| 25633 | +} | ||
| 25634 | + | ||
| 25635 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25636 | +EXPORT_SYMBOL( ubootenv_update ); | ||
| 25637 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25638 | + | ||
| 25639 | +/* | ||
| 25640 | + ---------------------------------------------------------------------- | ||
| 25641 | + ubootenv_finalize | ||
| 25642 | +*/ | ||
| 25643 | + | ||
| 25644 | +STATIC void | ||
| 25645 | +ubootenv_finalize( void ) | ||
| 25646 | +{ | ||
| 25647 | + DEBUG_PRINT( "Freeing the environment.\n" ); | ||
| 25648 | + | ||
| 25649 | + if( ( void * ) 0 != environment ) { | ||
| 25650 | + vfree( ( void * ) environment ); | ||
| 25651 | + } | ||
| 25652 | + | ||
| 25653 | + environment = ( environment_t * ) 0; | ||
| 25654 | +} | ||
| 25655 | + | ||
| 25656 | +#ifdef DEBUG_EXPORT_SYMBOLS | ||
| 25657 | +EXPORT_SYMBOL( ubootenv_finalize ); | ||
| 25658 | +#endif /* DEBUG_EXPORT_SYMBOLS */ | ||
| 25659 | + | ||
| 25660 | +/* | ||
| 25661 | + ====================================================================== | ||
| 25662 | + Public Interface | ||
| 25663 | + ====================================================================== | ||
| 25664 | +*/ | ||
| 25665 | + | ||
| 25666 | +/* | ||
| 25667 | + ---------------------------------------------------------------------- | ||
| 25668 | + ubootenv_get | ||
| 25669 | +*/ | ||
| 25670 | + | ||
| 25671 | +int | ||
| 25672 | +ubootenv_get( const char * key, char * value ) | ||
| 25673 | +{ | ||
| 25674 | + int return_code = -1; | ||
| 25675 | + char * string; | ||
| 25676 | + | ||
| 25677 | + if( NULL == environment ) { | ||
| 25678 | + ERROR_PRINT( "Environment Isn't Available!\n" ); | ||
| 25679 | + return -1; | ||
| 25680 | + } | ||
| 25681 | + | ||
| 25682 | + string = environment->data; | ||
| 25683 | + | ||
| 25684 | + while( 0x00 != string [ 0 ] ) { | ||
| 25685 | + | ||
| 25686 | + if( 0 == strncmp( key, string, strlen( key ) ) ) { | ||
| 25687 | + char * value_ = strchr( string, '=' ); | ||
| 25688 | + ++ value_; | ||
| 25689 | + strcpy( value, value_ ); | ||
| 25690 | + return_code = 0; | ||
| 25691 | + break; | ||
| 25692 | + } | ||
| 25693 | + | ||
| 25694 | + string += ( strlen( string ) + 1 ); | ||
| 25695 | + } | ||
| 25696 | + | ||
| 25697 | + return return_code; | ||
| 25698 | +} | ||
| 25699 | + | ||
| 25700 | +/* | ||
| 25701 | + ====================================================================== | ||
| 25702 | + ====================================================================== | ||
| 25703 | + Linux Module Stuff | ||
| 25704 | + ====================================================================== | ||
| 25705 | + ====================================================================== | ||
| 25706 | +*/ | ||
| 25707 | + | ||
| 25708 | +/* | ||
| 25709 | + ---------------------------------------------------------------------- | ||
| 25710 | + ubootenv_module_init | ||
| 25711 | +*/ | ||
| 25712 | + | ||
| 25713 | +int __init | ||
| 25714 | +ubootenv_module_init( void ) | ||
| 25715 | +{ | ||
| 25716 | + DEBUG_PRINT( "\n" ); | ||
| 25717 | + return ubootenv_initialize( ); | ||
| 25718 | +} | ||
| 25719 | + | ||
| 25720 | +module_init( ubootenv_module_init ); | ||
| 25721 | + | ||
| 25722 | +/* | ||
| 25723 | + ---------------------------------------------------------------------- | ||
| 25724 | + ubootenv_module_exit | ||
| 25725 | +*/ | ||
| 25726 | + | ||
| 25727 | +void __exit | ||
| 25728 | +ubootenv_module_exit( void ) | ||
| 25729 | +{ | ||
| 25730 | + DEBUG_PRINT( "\n" ); | ||
| 25731 | + ubootenv_finalize( ); | ||
| 25732 | + return; | ||
| 25733 | +} | ||
| 25734 | + | ||
| 25735 | +module_exit( ubootenv_module_exit ); | ||
| 25736 | + | ||
| 25737 | +MODULE_LICENSE("GPL"); | ||
| 25738 | +MODULE_AUTHOR( "John Jacques <john.jacques@lsi.com>" ); | ||
| 25739 | +MODULE_DESCRIPTION("Read Access of the U-Boot Environment"); | ||
| 25740 | diff --git a/drivers/lsi/acp/version.c b/drivers/lsi/acp/version.c | ||
| 25741 | new file mode 100644 | ||
| 25742 | index 0000000..6c193c7 | ||
| 25743 | --- /dev/null | ||
| 25744 | +++ b/drivers/lsi/acp/version.c | ||
| 25745 | @@ -0,0 +1,347 @@ | ||
| 25746 | +/* | ||
| 25747 | + * version.c | ||
| 25748 | + * | ||
| 25749 | + * Copyright (C) 2010 LSI | ||
| 25750 | + * | ||
| 25751 | + * This program is free software; you can redistribute it and/or modify | ||
| 25752 | + * it under the terms of the GNU General Public License as published by | ||
| 25753 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 25754 | + * (at your option) any later version. | ||
| 25755 | + * | ||
| 25756 | + * This program is distributed in the hope that it will be useful, | ||
| 25757 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 25758 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 25759 | + * GNU General Public License for more details. | ||
| 25760 | + * | ||
| 25761 | + * You should have received a copy of the GNU General Public License | ||
| 25762 | + * along with this program; if not, write to the Free Software | ||
| 25763 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021_2_6.17 USA | ||
| 25764 | + */ | ||
| 25765 | + | ||
| 25766 | +#include <linux/module.h> | ||
| 25767 | +#include <linux/init.h> | ||
| 25768 | +#include <linux/kernel.h> | ||
| 25769 | +#include <linux/string.h> | ||
| 25770 | +#include <linux/sched.h> | ||
| 25771 | +#include <linux/time.h> | ||
| 25772 | +#include <linux/proc_fs.h> | ||
| 25773 | +#include <asm/io.h> | ||
| 25774 | +#include <asm/bitops.h> | ||
| 25775 | + | ||
| 25776 | +#include "../common/debug.h" | ||
| 25777 | +#include "../common/version.h" | ||
| 25778 | +#include "ncr.h" | ||
| 25779 | + | ||
| 25780 | +#undef TLBERRORCOUNTER | ||
| 25781 | +/*#define TLBERRORCOUNTER*/ | ||
| 25782 | +#ifdef TLBERRORCOUNTER | ||
| 25783 | +unsigned long dtlb_misses = 0; | ||
| 25784 | +unsigned long itlb_misses = 0; | ||
| 25785 | +#endif | ||
| 25786 | + | ||
| 25787 | +extern int ubootenv_get(const char *, char *); | ||
| 25788 | + | ||
| 25789 | +/* | ||
| 25790 | + MODULE | ||
| 25791 | +*/ | ||
| 25792 | + | ||
| 25793 | +MODULE_LICENSE("GPL"); | ||
| 25794 | +MODULE_DESCRIPTION("Information about the Agere APP3xx"); | ||
| 25795 | + | ||
| 25796 | +/* | ||
| 25797 | + */ | ||
| 25798 | + | ||
| 25799 | +unsigned agere_app3xx_revision; | ||
| 25800 | +EXPORT_SYMBOL(agere_app3xx_revision); | ||
| 25801 | + | ||
| 25802 | +/* | ||
| 25803 | + ---------------------------------------------------------------------- | ||
| 25804 | + timer_test_ | ||
| 25805 | +*/ | ||
| 25806 | + | ||
| 25807 | +#ifdef TIMER_TEST | ||
| 25808 | + | ||
| 25809 | +static void | ||
| 25810 | +timer_test_(void) | ||
| 25811 | +{ | ||
| 25812 | + const int first_timer_ = 0; | ||
| 25813 | + const int last_timer_ = 7; | ||
| 25814 | + int timer_; | ||
| 25815 | + unsigned long timer_base_[] = { | ||
| 25816 | + TIMER0_BASE, TIMER1_BASE, TIMER2_BASE, TIMER3_BASE, | ||
| 25817 | + TIMER4_BASE, TIMER5_BASE, TIMER6_BASE, TIMER7_BASE | ||
| 25818 | + }; | ||
| 25819 | + | ||
| 25820 | + { | ||
| 25821 | + const int number_of_reads_ = 200; | ||
| 25822 | + unsigned long time_[number_of_reads_]; | ||
| 25823 | + int index_; | ||
| 25824 | + | ||
| 25825 | + for (index_ = 0; index_ < number_of_reads_; ++index_) | ||
| 25826 | + time_[index_] = ~(readl((TIMER0_BASE + TIMER_n_VALUE))); | ||
| 25827 | + | ||
| 25828 | + for (index_ = 0; index_ < number_of_reads_; ++index_) { | ||
| 25829 | + printk(KERN_INFO "%03d : 0x%08x\n", index_, time_[index_]); | ||
| 25830 | + | ||
| 25831 | + if (0 < index_) { | ||
| 25832 | + if (time_[index_] <= time_[(index_ - 1)]) { | ||
| 25833 | + printk(KERN_ERR "WHAT!\n"); | ||
| 25834 | + } | ||
| 25835 | + } | ||
| 25836 | + } | ||
| 25837 | + } | ||
| 25838 | + | ||
| 25839 | + for (timer_ = first_timer_; timer_ <= last_timer_; ++timer_) { | ||
| 25840 | + unsigned long base_ = timer_base_[timer_]; | ||
| 25841 | + | ||
| 25842 | + printk(KERN_INFO "load value=0x%x control=0x%x background load=0x%x\n", | ||
| 25843 | + readl((base_ + TIMER_n_LOAD)), | ||
| 25844 | + readl((base_ + TIMER_n_CONTROL)), | ||
| 25845 | + readl((base_ + TIMER_n_BACKGROUND_LOAD))); | ||
| 25846 | + } | ||
| 25847 | +} | ||
| 25848 | + | ||
| 25849 | +#endif /* TIMER_TEST */ | ||
| 25850 | + | ||
| 25851 | +#ifdef SHMEM_TEST | ||
| 25852 | + | ||
| 25853 | +/* | ||
| 25854 | + ---------------------------------------------------------------------- | ||
| 25855 | + shmem_test | ||
| 25856 | +*/ | ||
| 25857 | + | ||
| 25858 | +void | ||
| 25859 | +shmem_test(void) | ||
| 25860 | +{ | ||
| 25861 | + void __iomem *cached_shmem; | ||
| 25862 | + void __iomem *uncached_shmem; | ||
| 25863 | + unsigned i; | ||
| 25864 | + unsigned long start_time; | ||
| 25865 | + | ||
| 25866 | + uncached_shmem = ioremap_nocache(APP3K_PHYS_SHMEM_BASE, PAGE_SZ); | ||
| 25867 | + cached_shmem = ioremap_cached(APP3K_PHYS_SHMEM_BASE + PAGE_SZ, | ||
| 25868 | + APP_SHMEM_SIZE - PAGE_SZ); | ||
| 25869 | + | ||
| 25870 | + if ((void __iomem *) 0 == cached_shmem) { | ||
| 25871 | + printk(KERN_ERR "Unable to map shmem as cached IO\n"); | ||
| 25872 | + return; | ||
| 25873 | + } | ||
| 25874 | + | ||
| 25875 | + printk("cached_shmem=0x%08p shmem=0x%08x uncached_shmem=0x%08p\n", | ||
| 25876 | + cached_shmem, APP_SHMEM_BASE, uncached_shmem); | ||
| 25877 | + | ||
| 25878 | +#if 0 | ||
| 25879 | + i = 0; | ||
| 25880 | + start_time = jiffies; | ||
| 25881 | + while (jiffies == start_time) | ||
| 25882 | + ; | ||
| 25883 | + start_time = jiffies; | ||
| 25884 | + while (jiffies == start_time) { | ||
| 25885 | + | ||
| 25886 | + unsigned j; | ||
| 25887 | + unsigned char * dest = (unsigned char *) APP_SHMEM_BASE; | ||
| 25888 | + | ||
| 25889 | + for (j = 0; j < APP_SHMEM_SIZE; ++j, ++dest) { | ||
| 25890 | + *dest = j; | ||
| 25891 | + } | ||
| 25892 | + | ||
| 25893 | + ++i; | ||
| 25894 | + } | ||
| 25895 | + | ||
| 25896 | + printk("%d iterations uncached\n", i); | ||
| 25897 | + | ||
| 25898 | + i = 0; | ||
| 25899 | + start_time = jiffies; | ||
| 25900 | + while (jiffies == start_time) | ||
| 25901 | + ; | ||
| 25902 | + start_time = jiffies; | ||
| 25903 | + while (jiffies == start_time) { | ||
| 25904 | + unsigned j; | ||
| 25905 | + unsigned char * dest = (unsigned char *) cached_shmem; | ||
| 25906 | + | ||
| 25907 | + for (j = 0; j < APP_SHMEM_SIZE; ++j, ++dest) { | ||
| 25908 | + *dest = j; | ||
| 25909 | + } | ||
| 25910 | + | ||
| 25911 | + ++i; | ||
| 25912 | + } | ||
| 25913 | + | ||
| 25914 | + printk(KERN_INFO "%d iterations cached\n", i); | ||
| 25915 | +#endif | ||
| 25916 | + | ||
| 25917 | + return; | ||
| 25918 | +} | ||
| 25919 | + | ||
| 25920 | +#endif /* SHMEM_TEST */ | ||
| 25921 | + | ||
| 25922 | +#ifdef TLBERRORCOUNTER | ||
| 25923 | + | ||
| 25924 | +static int | ||
| 25925 | +tlberror_create_string(char *buffer) | ||
| 25926 | +{ | ||
| 25927 | + int length = 0; | ||
| 25928 | + | ||
| 25929 | + length = sprintf(buffer, | ||
| 25930 | + "Data TLB Errors: %d\n" | ||
| 25931 | + "Instruction TLB Errors: %d\n", | ||
| 25932 | + dtlb_misses, itlb_misses); | ||
| 25933 | + | ||
| 25934 | + return length; | ||
| 25935 | +} | ||
| 25936 | + | ||
| 25937 | +/* | ||
| 25938 | + ---------------------------------------------------------------------- | ||
| 25939 | + tlberror_read_proc | ||
| 25940 | +*/ | ||
| 25941 | + | ||
| 25942 | +static int | ||
| 25943 | +tlberror_read_proc(char *page, char **start, off_t offset, | ||
| 25944 | + int count, int *eof, void *data) | ||
| 25945 | +{ | ||
| 25946 | + int length = 0; | ||
| 25947 | + | ||
| 25948 | + length = tlberror_create_string(page); | ||
| 25949 | + *eof = 1; | ||
| 25950 | + | ||
| 25951 | + return length; | ||
| 25952 | +} | ||
| 25953 | + | ||
| 25954 | +#endif /* TLBERRORCOUNTER */ | ||
| 25955 | + | ||
| 25956 | +/* | ||
| 25957 | + ------------------------------------------------------------------------------ | ||
| 25958 | + is_asic | ||
| 25959 | +*/ | ||
| 25960 | + | ||
| 25961 | +int | ||
| 25962 | +is_asic(void) | ||
| 25963 | +{ | ||
| 25964 | +#ifdef CONFIG_ACPISS | ||
| 25965 | + return 0; | ||
| 25966 | +#else | ||
| 25967 | +#if 1 | ||
| 25968 | + unsigned long nca_config; | ||
| 25969 | + | ||
| 25970 | + if (0 == ncr_read(NCP_REGION_ID(0x16, 0xff), 0x10, 4, &nca_config)) { | ||
| 25971 | + return (0 == (nca_config & 0x80000000)); | ||
| 25972 | + } | ||
| 25973 | + | ||
| 25974 | + return -1; | ||
| 25975 | +#else | ||
| 25976 | + printk("%s:%s:%d - Writing 0x%x to 0x%x (NCA=0x%x)\n", | ||
| 25977 | + __FILE__, __FUNCTION__, __LINE_, | ||
| 25978 | + value, address, NCA); /* ZZZ */ | ||
| 25979 | + return 0; | ||
| 25980 | +#endif | ||
| 25981 | +#endif | ||
| 25982 | +} | ||
| 25983 | + | ||
| 25984 | +/* | ||
| 25985 | + ---------------------------------------------------------------------- | ||
| 25986 | + info_create_string | ||
| 25987 | +*/ | ||
| 25988 | + | ||
| 25989 | +static int | ||
| 25990 | +info_create_string(char *buffer) | ||
| 25991 | +{ | ||
| 25992 | + int length = 0; | ||
| 25993 | + char uboot_version2[80]; | ||
| 25994 | + char uboot_version3[80]; | ||
| 25995 | + | ||
| 25996 | +#ifdef CONFIG_ACPISS | ||
| 25997 | + sprintf(uboot_version2, "Unknown"); | ||
| 25998 | + sprintf(uboot_version3, "Unknown"); | ||
| 25999 | +#else | ||
| 26000 | + if (0 != ubootenv_get("version2", uboot_version2)) { | ||
| 26001 | + sprintf(uboot_version2, "Unknown"); | ||
| 26002 | + } | ||
| 26003 | + | ||
| 26004 | + if (0 != ubootenv_get("version3", uboot_version3)) { | ||
| 26005 | + sprintf(uboot_version3, "Unknown"); | ||
| 26006 | + } | ||
| 26007 | +#endif | ||
| 26008 | + | ||
| 26009 | + length = sprintf(buffer, | ||
| 26010 | + "LSI ACP Info\n" \ | ||
| 26011 | + "LSI Version %s\n" \ | ||
| 26012 | + "Platform: %s\n" \ | ||
| 26013 | + "U-Boot Version (2nd Stage) %s\n" \ | ||
| 26014 | + "U-Boot Version (3rd Stage) %s\n", | ||
| 26015 | + ACP_VERSION, (is_asic() ? "ASIC" : "FPGA"), | ||
| 26016 | + uboot_version2, uboot_version3); | ||
| 26017 | + | ||
| 26018 | + /* that's all */ | ||
| 26019 | + return length; | ||
| 26020 | + | ||
| 26021 | +} | ||
| 26022 | + | ||
| 26023 | +/* | ||
| 26024 | + ---------------------------------------------------------------------- | ||
| 26025 | + info_read_proc | ||
| 26026 | +*/ | ||
| 26027 | + | ||
| 26028 | +static int | ||
| 26029 | +info_read_proc(char *page, char **start, off_t offset, | ||
| 26030 | + int count, int *eof, void *data) | ||
| 26031 | +{ | ||
| 26032 | + int length_ = 0; | ||
| 26033 | + | ||
| 26034 | +#ifdef SHMEM_TEST | ||
| 26035 | + shmem_test(); | ||
| 26036 | +#endif /* SHMEM_TEST */ | ||
| 26037 | + | ||
| 26038 | +#ifdef TIMER_TEST | ||
| 26039 | + timer_test_(); | ||
| 26040 | +#endif /* TIMER_TEST */ | ||
| 26041 | + | ||
| 26042 | +#if !defined(SHMEM_TEST) && !defined(TIMER_TEST) | ||
| 26043 | + length_ = info_create_string(page); | ||
| 26044 | +#endif | ||
| 26045 | + *eof = 1; | ||
| 26046 | + | ||
| 26047 | + return length_; | ||
| 26048 | +} | ||
| 26049 | + | ||
| 26050 | +/* | ||
| 26051 | + ---------------------------------------------------------------------- | ||
| 26052 | + info_module_init | ||
| 26053 | +*/ | ||
| 26054 | + | ||
| 26055 | +int __init | ||
| 26056 | +info_module_init(void) | ||
| 26057 | +{ | ||
| 26058 | + | ||
| 26059 | + char buffer_[256]; | ||
| 26060 | + | ||
| 26061 | + create_proc_read_entry("driver/version", 0, NULL, info_read_proc, NULL); | ||
| 26062 | + info_create_string(buffer_); | ||
| 26063 | + printk("%s", buffer_); | ||
| 26064 | + | ||
| 26065 | +#ifdef TLBERRORCOUNTER | ||
| 26066 | + create_proc_read_entry("driver/tlberrors", | ||
| 26067 | + 0, NULL, tlberror_read_proc, NULL); | ||
| 26068 | +#endif | ||
| 26069 | + | ||
| 26070 | + return 0; | ||
| 26071 | + | ||
| 26072 | +} | ||
| 26073 | + | ||
| 26074 | +module_init(info_module_init); | ||
| 26075 | + | ||
| 26076 | +/* | ||
| 26077 | + ---------------------------------------------------------------------- | ||
| 26078 | + info_module_exit | ||
| 26079 | +*/ | ||
| 26080 | + | ||
| 26081 | +void __exit | ||
| 26082 | +info_module_exit(void) | ||
| 26083 | +{ | ||
| 26084 | +#ifdef TLBERRORCOUNTER | ||
| 26085 | + remove_proc_entry("driver/tlberrors", NULL); | ||
| 26086 | +#endif | ||
| 26087 | + remove_proc_entry("driver/version", NULL); | ||
| 26088 | + | ||
| 26089 | + return; | ||
| 26090 | +} | ||
| 26091 | + | ||
| 26092 | +module_exit(info_module_exit); | ||
| 26093 | diff --git a/drivers/lsi/acp/wrappers.c b/drivers/lsi/acp/wrappers.c | ||
| 26094 | new file mode 100644 | ||
| 26095 | index 0000000..be9b663 | ||
| 26096 | --- /dev/null | ||
| 26097 | +++ b/drivers/lsi/acp/wrappers.c | ||
| 26098 | @@ -0,0 +1,257 @@ | ||
| 26099 | +/* | ||
| 26100 | + * drivers/lsi/acp/wrappers.c | ||
| 26101 | + * | ||
| 26102 | + * Copyright (C) 2010 LSI | ||
| 26103 | + * | ||
| 26104 | + * This program is free software; you can redistribute it and/or modify | ||
| 26105 | + * it under the terms of the GNU General Public License as published by | ||
| 26106 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 26107 | + * (at your option) any later version. | ||
| 26108 | + * | ||
| 26109 | + * This program is distributed in the hope that it will be useful, | ||
| 26110 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 26111 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 26112 | + * GNU General Public License for more details. | ||
| 26113 | + * | ||
| 26114 | + * You should have received a copy of the GNU General Public License | ||
| 26115 | + * along with this program; if not, write to the Free Software | ||
| 26116 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 26117 | + */ | ||
| 26118 | + | ||
| 26119 | +#include <linux/module.h> | ||
| 26120 | +#include <linux/of.h> | ||
| 26121 | +#include <linux/spinlock.h> | ||
| 26122 | +#include <asm/irq.h> | ||
| 26123 | +#include <asm/io.h> | ||
| 26124 | + | ||
| 26125 | +extern int is_asic(void); | ||
| 26126 | +extern int acp_clock_get(int, unsigned long *); | ||
| 26127 | + | ||
| 26128 | +/* | ||
| 26129 | + ============================================================================== | ||
| 26130 | + ============================================================================== | ||
| 26131 | + MDIO Access | ||
| 26132 | + ============================================================================== | ||
| 26133 | + ============================================================================== | ||
| 26134 | +*/ | ||
| 26135 | + | ||
| 26136 | +#ifndef CONFIG_ACPISS | ||
| 26137 | + | ||
| 26138 | +#undef BZ33327_WA | ||
| 26139 | +#define BZ33327_WA | ||
| 26140 | + | ||
| 26141 | +static unsigned long mdio_base; | ||
| 26142 | +DEFINE_SPINLOCK(mdio_lock); | ||
| 26143 | + | ||
| 26144 | +#define MDIO_CONTROL_RD_DATA ((void *)(mdio_base + 0x0)) | ||
| 26145 | +#define MDIO_STATUS_RD_DATA ((void *)(mdio_base + 0x4)) | ||
| 26146 | +#define MDIO_CLK_OFFSET ((void *)(mdio_base + 0x8)) | ||
| 26147 | +#define MDIO_CLK_PERIOD ((void *)(mdio_base + 0xc)) | ||
| 26148 | + | ||
| 26149 | +/* | ||
| 26150 | + ------------------------------------------------------------------------------ | ||
| 26151 | + acp_mdio_read | ||
| 26152 | +*/ | ||
| 26153 | + | ||
| 26154 | +int | ||
| 26155 | +acp_mdio_read(unsigned long address, unsigned long offset, unsigned short *value) | ||
| 26156 | +{ | ||
| 26157 | + unsigned long command = 0; | ||
| 26158 | + unsigned long status; | ||
| 26159 | + unsigned long flags; | ||
| 26160 | + | ||
| 26161 | + spin_lock_irqsave(&mdio_lock, flags); | ||
| 26162 | +#if defined(BZ33327_WA) | ||
| 26163 | + /* Set the mdio_busy (status) bit. */ | ||
| 26164 | + status = in_le32(MDIO_STATUS_RD_DATA); | ||
| 26165 | + status |= 0x40000000; | ||
| 26166 | + out_le32(MDIO_STATUS_RD_DATA, status); | ||
| 26167 | +#endif /* BZ33327_WA */ | ||
| 26168 | + | ||
| 26169 | + /* Write the command.*/ | ||
| 26170 | + command |= 0x10000000; /* op_code: read */ | ||
| 26171 | + command |= (address & 0x1f) << 16; /* port_addr (target device) */ | ||
| 26172 | + command |= (offset & 0x1f) << 21; /* device_addr (target register) */ | ||
| 26173 | + out_le32(MDIO_CONTROL_RD_DATA, command); | ||
| 26174 | + | ||
| 26175 | +#if defined(BZ33327_WA) | ||
| 26176 | + /* Wait for the mdio_busy (status) bit to clear. */ | ||
| 26177 | + do { | ||
| 26178 | + status = in_le32(MDIO_STATUS_RD_DATA); | ||
| 26179 | + } while (0 != (status & 0x40000000)); | ||
| 26180 | + | ||
| 26181 | + /* Wait for the mdio_busy (control) bit to clear. */ | ||
| 26182 | + do { | ||
| 26183 | + command = in_le32(MDIO_CONTROL_RD_DATA); | ||
| 26184 | + } while(0 != (command & 0x80000000)); | ||
| 26185 | + | ||
| 26186 | + *value = (unsigned short)(command & 0xffff); | ||
| 26187 | +#endif /* BZ33327_WA */ | ||
| 26188 | + spin_unlock_irqrestore(&mdio_lock, flags); | ||
| 26189 | + | ||
| 26190 | + return 0; | ||
| 26191 | +} | ||
| 26192 | + | ||
| 26193 | +EXPORT_SYMBOL(acp_mdio_read); | ||
| 26194 | + | ||
| 26195 | +/* | ||
| 26196 | + ------------------------------------------------------------------------------ | ||
| 26197 | + acp_mdio_write | ||
| 26198 | +*/ | ||
| 26199 | + | ||
| 26200 | +int | ||
| 26201 | +acp_mdio_write(unsigned long address, unsigned long offset, unsigned short value) | ||
| 26202 | +{ | ||
| 26203 | + unsigned long command = 0; | ||
| 26204 | + unsigned long status; | ||
| 26205 | + unsigned long flags; | ||
| 26206 | + | ||
| 26207 | + spin_lock_irqsave(&mdio_lock, flags); | ||
| 26208 | + | ||
| 26209 | + /* Wait for mdio_busy (control) to be clear. */ | ||
| 26210 | + do { | ||
| 26211 | + command = in_le32(MDIO_CONTROL_RD_DATA); | ||
| 26212 | + } while (0 != (command & 0x80000000)); | ||
| 26213 | + | ||
| 26214 | +#if defined(BZ33327_WA) | ||
| 26215 | + /* Set the mdio_busy (status) bit. */ | ||
| 26216 | + status = in_le32(MDIO_STATUS_RD_DATA); | ||
| 26217 | + status |= 0x40000000; | ||
| 26218 | + out_le32(MDIO_STATUS_RD_DATA, status); | ||
| 26219 | +#endif /* BZ33327_WA */ | ||
| 26220 | + | ||
| 26221 | + /* Write the command. */ | ||
| 26222 | + command = 0x08000000; /* op_code: write */ | ||
| 26223 | + command |= (address & 0x1f) << 16; /* port_addr (target device) */ | ||
| 26224 | + command |= (offset & 0x1f) << 21; /* device_addr (target register) */ | ||
| 26225 | + command |= (value & 0xffff); /* value */ | ||
| 26226 | + out_le32(MDIO_CONTROL_RD_DATA, command); | ||
| 26227 | + | ||
| 26228 | +#if defined(BZ33327_WA) | ||
| 26229 | + /* Wait for the mdio_busy (status) bit to clear. */ | ||
| 26230 | + do { | ||
| 26231 | + status = in_le32(MDIO_STATUS_RD_DATA); | ||
| 26232 | + } while (0 != (status & 0x40000000)); | ||
| 26233 | +#endif /* BZ33327_WA */ | ||
| 26234 | + | ||
| 26235 | + /* Wait for the mdio_busy (control) bit to clear. */ | ||
| 26236 | + do { | ||
| 26237 | + command = in_le32(MDIO_CONTROL_RD_DATA); | ||
| 26238 | + } while (0 != (command & 0x80000000)); | ||
| 26239 | + | ||
| 26240 | + spin_unlock_irqrestore(&mdio_lock, flags); | ||
| 26241 | + | ||
| 26242 | + return 0; | ||
| 26243 | +} | ||
| 26244 | + | ||
| 26245 | +EXPORT_SYMBOL(acp_mdio_write); | ||
| 26246 | + | ||
| 26247 | +/* | ||
| 26248 | + ------------------------------------------------------------------------------ | ||
| 26249 | + acp_mdio_initialize | ||
| 26250 | +*/ | ||
| 26251 | + | ||
| 26252 | +static int | ||
| 26253 | +acp_mdio_initialize(void) | ||
| 26254 | +{ | ||
| 26255 | + if (is_asic()) { | ||
| 26256 | + out_le32(MDIO_CLK_OFFSET, 0x10); | ||
| 26257 | + out_le32(MDIO_CLK_PERIOD, 0x2c); | ||
| 26258 | + } else { | ||
| 26259 | + out_le32(MDIO_CLK_OFFSET, 0x05); | ||
| 26260 | + out_le32(MDIO_CLK_PERIOD, 0x0c); | ||
| 26261 | + } | ||
| 26262 | + | ||
| 26263 | + return 0; | ||
| 26264 | +} | ||
| 26265 | + | ||
| 26266 | +#endif /* CONFIG_ACPISS */ | ||
| 26267 | + | ||
| 26268 | +/* | ||
| 26269 | + ============================================================================== | ||
| 26270 | + ============================================================================== | ||
| 26271 | + Interrupts | ||
| 26272 | + ============================================================================== | ||
| 26273 | + ============================================================================== | ||
| 26274 | +*/ | ||
| 26275 | + | ||
| 26276 | +/* | ||
| 26277 | + ------------------------------------------------------------------------------ | ||
| 26278 | + acp_irq_create_mapping | ||
| 26279 | +*/ | ||
| 26280 | + | ||
| 26281 | +unsigned int | ||
| 26282 | +acp_irq_create_mapping(struct irq_host *host, irq_hw_number_t hwirq) | ||
| 26283 | +{ | ||
| 26284 | + return irq_create_mapping(host, hwirq); | ||
| 26285 | +} | ||
| 26286 | + | ||
| 26287 | +EXPORT_SYMBOL(acp_irq_create_mapping); | ||
| 26288 | + | ||
| 26289 | +/* | ||
| 26290 | + ------------------------------------------------------------------------------ | ||
| 26291 | + acp_wrappers_init | ||
| 26292 | +*/ | ||
| 26293 | + | ||
| 26294 | +int __init | ||
| 26295 | +acp_wrappers_init(void) | ||
| 26296 | +{ | ||
| 26297 | + int rc = -1; | ||
| 26298 | + struct device_node *np = NULL; | ||
| 26299 | + const u32 *field; | ||
| 26300 | + u64 mdio_phys_address; | ||
| 26301 | + u32 mdio_size; | ||
| 26302 | + | ||
| 26303 | + printk(KERN_INFO "Initializing ACP Wrappers.\n"); | ||
| 26304 | + | ||
| 26305 | +#ifndef CONFIG_ACPISS | ||
| 26306 | + np = of_find_node_by_type(np, "network"); | ||
| 26307 | + | ||
| 26308 | + while (np && !of_device_is_compatible(np, "acp-femac")) | ||
| 26309 | + np = of_find_node_by_type(np, "network"); | ||
| 26310 | + | ||
| 26311 | + if (np) { | ||
| 26312 | + field = of_get_property(np, "enabled", NULL); | ||
| 26313 | + | ||
| 26314 | + if (!field || (field && (0 == *field))) { | ||
| 26315 | + printk(KERN_WARNING | ||
| 26316 | + "Networking is Not Enabled.\n"); | ||
| 26317 | + goto acp_wrappers_init_done; | ||
| 26318 | + } | ||
| 26319 | + | ||
| 26320 | + field = of_get_property(np, "mdio-reg", NULL); | ||
| 26321 | + | ||
| 26322 | + if (!field) { | ||
| 26323 | + printk(KERN_ERR | ||
| 26324 | + "Couldn't get \"mdio-reg\" property.\n"); | ||
| 26325 | + } else { | ||
| 26326 | + mdio_phys_address = of_translate_address(np, field); | ||
| 26327 | + mdio_size = field[1]; | ||
| 26328 | + rc = 0; | ||
| 26329 | + } | ||
| 26330 | + } | ||
| 26331 | + | ||
| 26332 | + if (0 != rc) { | ||
| 26333 | + mdio_phys_address = 0x002000409000ULL; | ||
| 26334 | + mdio_size = 0x1000; | ||
| 26335 | + printk(KERN_WARNING | ||
| 26336 | + "** MDIO Address Not Specified in Device Tree.\n"); | ||
| 26337 | + } | ||
| 26338 | + | ||
| 26339 | + mdio_base = ioremap(mdio_phys_address, mdio_size); | ||
| 26340 | + rc = acp_mdio_initialize(); | ||
| 26341 | +#endif | ||
| 26342 | + | ||
| 26343 | + if (0 != rc) | ||
| 26344 | + printk(KERN_ERR, "MDIO Initiailzation Failed!\n"); | ||
| 26345 | + | ||
| 26346 | + acp_wrappers_init_done: | ||
| 26347 | + | ||
| 26348 | + return 0; | ||
| 26349 | +} | ||
| 26350 | + | ||
| 26351 | +module_init(acp_wrappers_init); | ||
| 26352 | + | ||
| 26353 | +MODULE_AUTHOR("LSI Corporation"); | ||
| 26354 | +MODULE_DESCRIPTION("Timing Test"); | ||
| 26355 | +MODULE_LICENSE("GPL"); | ||
| 26356 | diff --git a/drivers/lsi/common/debug.h b/drivers/lsi/common/debug.h | ||
| 26357 | new file mode 100644 | ||
| 26358 | index 0000000..71581e9 | ||
| 26359 | --- /dev/null | ||
| 26360 | +++ b/drivers/lsi/common/debug.h | ||
| 26361 | @@ -0,0 +1,63 @@ | ||
| 26362 | +/* | ||
| 26363 | + * drivers/acp/common/debug.h | ||
| 26364 | + * | ||
| 26365 | + * Copyright (C) 2010 LSI | ||
| 26366 | + * | ||
| 26367 | + * This program is free software; you can redistribute it and/or modify | ||
| 26368 | + * it under the terms of the GNU General Public License as published by | ||
| 26369 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 26370 | + * (at your option) any later version. | ||
| 26371 | + * | ||
| 26372 | + * This program is distributed in the hope that it will be useful, | ||
| 26373 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 26374 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 26375 | + * GNU General Public License for more details. | ||
| 26376 | + * | ||
| 26377 | + * You should have received a copy of the GNU General Public License | ||
| 26378 | + * along with this program; if not, write to the Free Software | ||
| 26379 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 26380 | + */ | ||
| 26381 | + | ||
| 26382 | +#ifndef __DRIVERS_LSI_COMMON_DEBUG_H | ||
| 26383 | +#define __DRIVERS_LSI_COMMON_DEBUG_H | ||
| 26384 | + | ||
| 26385 | +/* | ||
| 26386 | + DEBUG | ||
| 26387 | +*/ | ||
| 26388 | + | ||
| 26389 | +#if defined(DEBUG) | ||
| 26390 | +#define DEBUG_PRINT(format, args...) do { \ | ||
| 26391 | +printk("%s:%s:%d - DEBUG - ", __FILE__, __FUNCTION__, __LINE__); \ | ||
| 26392 | +printk(format, ##args); \ | ||
| 26393 | +} while (0); | ||
| 26394 | +#else | ||
| 26395 | +#define DEBUG_PRINT(format, args...) { } | ||
| 26396 | +#endif | ||
| 26397 | + | ||
| 26398 | +/* | ||
| 26399 | + WARN | ||
| 26400 | +*/ | ||
| 26401 | + | ||
| 26402 | +#if defined(WARN) | ||
| 26403 | +#define WARN_PRINT(format, args...) do { \ | ||
| 26404 | +printk("%s:%s:%d - WARN - ", __FILE__, __FUNCTION__, __LINE__); \ | ||
| 26405 | +printk(format, ##args); \ | ||
| 26406 | +} while (0); | ||
| 26407 | +#else | ||
| 26408 | +#define WARN_PRINT(format, args...) { } | ||
| 26409 | +#endif | ||
| 26410 | + | ||
| 26411 | +/* | ||
| 26412 | + ERROR | ||
| 26413 | +*/ | ||
| 26414 | + | ||
| 26415 | +#if defined(ERROR) | ||
| 26416 | +#define ERROR_PRINT(format, args...) do { \ | ||
| 26417 | +printk("%s:%s:%d - ERROR - ", __FILE__, __FUNCTION__, __LINE__); \ | ||
| 26418 | +printk(format, ##args); \ | ||
| 26419 | +} while (0); | ||
| 26420 | +#else | ||
| 26421 | +#define ERROR_PRINT(format, args...) { } | ||
| 26422 | +#endif | ||
| 26423 | + | ||
| 26424 | +#endif /* __DRIVERS_LSI_COMMON_DEBUG_H */ | ||
| 26425 | diff --git a/drivers/lsi/common/version.h b/drivers/lsi/common/version.h | ||
| 26426 | new file mode 100644 | ||
| 26427 | index 0000000..a79d452 | ||
| 26428 | --- /dev/null | ||
| 26429 | +++ b/drivers/lsi/common/version.h | ||
| 26430 | @@ -0,0 +1,28 @@ | ||
| 26431 | +/* | ||
| 26432 | + * drivers/lsi/common/version.h | ||
| 26433 | + * | ||
| 26434 | + * Copyright (C) 2009 LSI | ||
| 26435 | + * | ||
| 26436 | + * This program is free software; you can redistribute it and/or modify | ||
| 26437 | + * it under the terms of the GNU General Public License as published by | ||
| 26438 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 26439 | + * (at your option) any later version. | ||
| 26440 | + * | ||
| 26441 | + * This program is distributed in the hope that it will be useful, | ||
| 26442 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 26443 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 26444 | + * GNU General Public License for more details. | ||
| 26445 | + * | ||
| 26446 | + * You should have received a copy of the GNU General Public License | ||
| 26447 | + * along with this program; if not, write to the Free Software | ||
| 26448 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 26449 | + */ | ||
| 26450 | + | ||
| 26451 | +#ifndef __DRIVERS_ACP_VERSION_H | ||
| 26452 | +#define __DRIVERS_ACP_VERSION_H | ||
| 26453 | + | ||
| 26454 | +#define ACP_VERSION "3.8.1.22" | ||
| 26455 | + | ||
| 26456 | +int is_asic(void); | ||
| 26457 | + | ||
| 26458 | +#endif /* __DRIVERS_ACP_VERSION_H */ | ||
| 26459 | diff --git a/drivers/mtd/devices/phram.c b/drivers/mtd/devices/phram.c | ||
| 26460 | index 23423bd..f5be315 100644 | ||
| 26461 | --- a/drivers/mtd/devices/phram.c | ||
| 26462 | +++ b/drivers/mtd/devices/phram.c | ||
| 26463 | @@ -288,6 +288,7 @@ MODULE_PARM_DESC(phram, "Memory region to map. \"phram=<name>,<start>,<length>\" | ||
| 26464 | |||
| 26465 | static int __init init_phram(void) | ||
| 26466 | { | ||
| 26467 | + printk("%s:%d - \n", __FILE__, __LINE__); /* ZZZ */ | ||
| 26468 | return 0; | ||
| 26469 | } | ||
| 26470 | |||
| 26471 | diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c | ||
| 26472 | index a46e9bb..77b7a5a 100644 | ||
| 26473 | --- a/drivers/mtd/nand/nand_base.c | ||
| 26474 | +++ b/drivers/mtd/nand/nand_base.c | ||
| 26475 | @@ -30,6 +30,7 @@ | ||
| 26476 | * it under the terms of the GNU General Public License version 2 as | ||
| 26477 | * published by the Free Software Foundation. | ||
| 26478 | * | ||
| 26479 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 26480 | */ | ||
| 26481 | |||
| 26482 | #include <linux/module.h> | ||
| 26483 | @@ -49,6 +50,36 @@ | ||
| 26484 | #include <linux/io.h> | ||
| 26485 | #include <linux/mtd/partitions.h> | ||
| 26486 | |||
| 26487 | +#ifdef CONFIG_LSI_NAND | ||
| 26488 | +#define LSI_NAND_BASE 0xf0040000 | ||
| 26489 | +#define NAND_DATA_REG 0x00000000 | ||
| 26490 | +#define NAND_CMD_REG 0x00008000 | ||
| 26491 | +#define NAND_INDEX_REG 0x00008004 | ||
| 26492 | +#define NAND_STATUS1_REG 0x00008008 | ||
| 26493 | +#define NAND_STATUS2_REG 0x0000800C | ||
| 26494 | +#define NAND_ID0_REG 0x00008010 | ||
| 26495 | +#define NAND_ID1_REG 0x00008014 | ||
| 26496 | +#define NAND_ID2_REG 0x00008018 | ||
| 26497 | +#define NAND_ID3_REG 0x0000801C | ||
| 26498 | +#define NAND_ID4_REG 0x00008020 | ||
| 26499 | +#define NAND_ID5_REG 0x00008024 | ||
| 26500 | +#define NAND_ID6_REG 0x00008028 | ||
| 26501 | +#define NAND_ID7_REG 0x0000802C | ||
| 26502 | +#define NAND_INTR_EN_REG 0x00008030 | ||
| 26503 | +#define NAND_INTR_STATUS_REG 0x00008034 | ||
| 26504 | +#define NAND_INTR_REG 0x00008038 | ||
| 26505 | +#define NAND_ECC_ADDR_LOG_REG 0x0000803C | ||
| 26506 | +#define NAND_ECC_VAL_REG 0x00008040 | ||
| 26507 | +#define NAND_ECC_INJECT_REG 0x00008044 | ||
| 26508 | +#define NAND_EXT_INDEX_REG 0x00008048 | ||
| 26509 | +#define NAND_TIMING1_REG 0x0000804C | ||
| 26510 | +#define NAND_TIMING2_REG 0x00008050 | ||
| 26511 | +#define NAND_CONFIG_REG 0x00008054 | ||
| 26512 | +#define NAND_PECC_REG 0x00008058 | ||
| 26513 | + | ||
| 26514 | +extern lsi_nand_set_config(struct mtd_info *, struct nand_chip *); | ||
| 26515 | +#endif /* CONFIG_LSI_NAND */ | ||
| 26516 | + | ||
| 26517 | /* Define default oob placement schemes for large and small page devices */ | ||
| 26518 | static struct nand_ecclayout nand_oob_8 = { | ||
| 26519 | .eccbytes = 3, | ||
| 26520 | @@ -458,7 +489,12 @@ static int nand_check_wp(struct mtd_info *mtd) | ||
| 26521 | |||
| 26522 | /* Check the WP bit */ | ||
| 26523 | chip->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1); | ||
| 26524 | +#ifdef CONFIG_LSI_NAND | ||
| 26525 | + return (readl(chip->IO_ADDR_R + NAND_STATUS1_REG) & | ||
| 26526 | + NAND_STATUS_WP) ? 0 : 1; | ||
| 26527 | +#else | ||
| 26528 | return (chip->read_byte(mtd) & NAND_STATUS_WP) ? 0 : 1; | ||
| 26529 | +#endif | ||
| 26530 | } | ||
| 26531 | |||
| 26532 | /** | ||
| 26533 | @@ -2645,6 +2681,12 @@ erase_exit: | ||
| 26534 | /* Deselect and wake up anyone waiting on the device */ | ||
| 26535 | nand_release_device(mtd); | ||
| 26536 | |||
| 26537 | +#ifdef CONFIG_LSI_NAND | ||
| 26538 | + /* if erase failed for a block, mark it as bad block */ | ||
| 26539 | + if (status & NAND_STATUS_FAIL) | ||
| 26540 | + mtd->block_markbad(mtd, page << chip->page_shift); | ||
| 26541 | +#endif /* CONFIG_LSI_NAND */ | ||
| 26542 | + | ||
| 26543 | /* Do call back function */ | ||
| 26544 | if (!ret) | ||
| 26545 | mtd_erase_callback(instr); | ||
| 26546 | @@ -2921,9 +2963,13 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26547 | chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1); | ||
| 26548 | |||
| 26549 | /* Read manufacturer and device IDs */ | ||
| 26550 | +#ifdef CONFIG_LSI_NAND | ||
| 26551 | + *maf_id = readb(chip->IO_ADDR_R + NAND_ID0_REG); | ||
| 26552 | + *dev_id = readb(chip->IO_ADDR_R + NAND_ID2_REG); | ||
| 26553 | +#else /* CONFIG_LSI_NAND */ | ||
| 26554 | *maf_id = chip->read_byte(mtd); | ||
| 26555 | *dev_id = chip->read_byte(mtd); | ||
| 26556 | - | ||
| 26557 | +#endif /* LSI_NAND */ | ||
| 26558 | /* Try again to make sure, as some systems the bus-hold or other | ||
| 26559 | * interface concerns can cause random data which looks like a | ||
| 26560 | * possibly credible NAND flash to appear. If the two results do | ||
| 26561 | @@ -2932,9 +2978,13 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26562 | |||
| 26563 | chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1); | ||
| 26564 | |||
| 26565 | +#ifdef CONFIG_LSI_NAND | ||
| 26566 | + id_data[0] = readb(chip->IO_ADDR_R + NAND_ID0_REG); | ||
| 26567 | + id_data[1] = readb(chip->IO_ADDR_R + NAND_ID2_REG); | ||
| 26568 | +#else | ||
| 26569 | for (i = 0; i < 2; i++) | ||
| 26570 | id_data[i] = chip->read_byte(mtd); | ||
| 26571 | - | ||
| 26572 | +#endif | ||
| 26573 | if (id_data[0] != *maf_id || id_data[1] != *dev_id) { | ||
| 26574 | printk(KERN_INFO "%s: second ID read did not match " | ||
| 26575 | "%02x,%02x against %02x,%02x\n", __func__, | ||
| 26576 | @@ -2961,8 +3011,15 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26577 | |||
| 26578 | /* Read entire ID string */ | ||
| 26579 | |||
| 26580 | +#ifdef CONFIG_LSI_NAND | ||
| 26581 | + id_data[0] = readb(chip->IO_ADDR_R + NAND_ID0_REG); | ||
| 26582 | + id_data[1] = readb(chip->IO_ADDR_R + NAND_ID2_REG); | ||
| 26583 | + id_data[2] = readb(chip->IO_ADDR_R + NAND_ID4_REG); | ||
| 26584 | + id_data[3] = readb(chip->IO_ADDR_R + NAND_ID6_REG); | ||
| 26585 | +#else | ||
| 26586 | for (i = 0; i < 8; i++) | ||
| 26587 | id_data[i] = chip->read_byte(mtd); | ||
| 26588 | +#endif | ||
| 26589 | |||
| 26590 | if (!type->name) | ||
| 26591 | return ERR_PTR(-ENODEV); | ||
| 26592 | @@ -2977,11 +3034,18 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26593 | busw = chip->init_size(mtd, chip, id_data); | ||
| 26594 | } else if (!type->pagesize) { | ||
| 26595 | int extid; | ||
| 26596 | +#ifdef CONFIG_LSI_NAND | ||
| 26597 | + /* dimka: move this out to chip->init_size */ | ||
| 26598 | + /* The 3rd id byte holds MLC / multichip data */ | ||
| 26599 | + chip->cellinfo = readb(chip->IO_ADDR_R + NAND_ID4_REG); | ||
| 26600 | + /* The 4th id byte is the important one */ | ||
| 26601 | + extid = readb(chip->IO_ADDR_R + NAND_ID6_REG); | ||
| 26602 | +#else /* CONFIG_LSI_NAND */ | ||
| 26603 | /* The 3rd id byte holds MLC / multichip data */ | ||
| 26604 | chip->cellinfo = id_data[2]; | ||
| 26605 | /* The 4th id byte is the important one */ | ||
| 26606 | extid = id_data[3]; | ||
| 26607 | - | ||
| 26608 | +#endif | ||
| 26609 | /* | ||
| 26610 | * Field definitions are in the following datasheets: | ||
| 26611 | * Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32) | ||
| 26612 | @@ -3018,6 +3082,18 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26613 | (((extid >> 1) & 0x04) | (extid & 0x03)); | ||
| 26614 | busw = 0; | ||
| 26615 | } else { | ||
| 26616 | + /* Add workaournd for Micron MT29Fxxxxxx NAND flash*/ | ||
| 26617 | + if (id_data[0] == NAND_MFR_MICRON && id_data[1] == 0x48) { | ||
| 26618 | + /* Calc pagesize */ | ||
| 26619 | + mtd->writesize = 1024 << (extid & 0x03); | ||
| 26620 | + extid >>= 2; | ||
| 26621 | + /*Calc oobsize */ | ||
| 26622 | + mtd->oobsize = ((extid & 0x03) == 0x03) ? 218: 224; | ||
| 26623 | + extid >>= 3; | ||
| 26624 | + /* Calc blocksize. Blocksize is multiples of 256KiB */ | ||
| 26625 | + mtd->erasesize = (256 * 1024) << (extid & 0x03); | ||
| 26626 | + busw = 0; | ||
| 26627 | + }else{ | ||
| 26628 | /* Calc pagesize */ | ||
| 26629 | mtd->writesize = 1024 << (extid & 0x03); | ||
| 26630 | extid >>= 2; | ||
| 26631 | @@ -3030,6 +3106,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd, | ||
| 26632 | extid >>= 2; | ||
| 26633 | /* Get buswidth information */ | ||
| 26634 | busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0; | ||
| 26635 | + } | ||
| 26636 | } | ||
| 26637 | } else { | ||
| 26638 | /* | ||
| 26639 | @@ -3069,6 +3146,11 @@ ident_done: | ||
| 26640 | */ | ||
| 26641 | chip->options |= NAND_NO_AUTOINCR; | ||
| 26642 | |||
| 26643 | +#ifdef CONFIG_LSI_NAND | ||
| 26644 | + /* Set the EP501/EP501G1 config register. */ | ||
| 26645 | + lsi_nand_set_config(mtd, chip); | ||
| 26646 | +#endif /* CONFIG_LSI_NAND */ | ||
| 26647 | + | ||
| 26648 | /* Try to identify manufacturer */ | ||
| 26649 | for (maf_idx = 0; nand_manuf_ids[maf_idx].id != 0x0; maf_idx++) { | ||
| 26650 | if (nand_manuf_ids[maf_idx].id == *maf_id) | ||
| 26651 | diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c | ||
| 26652 | index 00cf1b0..9e9b85b 100644 | ||
| 26653 | --- a/drivers/mtd/nand/nand_ids.c | ||
| 26654 | +++ b/drivers/mtd/nand/nand_ids.c | ||
| 26655 | @@ -114,6 +114,7 @@ struct nand_flash_dev nand_flash_ids[] = { | ||
| 26656 | {"NAND 2GiB 3,3V 8-bit", 0xD5, 0, 2048, 0, LP_OPTIONS}, | ||
| 26657 | {"NAND 2GiB 1,8V 16-bit", 0xB5, 0, 2048, 0, LP_OPTIONS16}, | ||
| 26658 | {"NAND 2GiB 3,3V 16-bit", 0xC5, 0, 2048, 0, LP_OPTIONS16}, | ||
| 26659 | + {"NAND 2GiB 3,3V 16-bit", 0x48, 0, 2048, 0, LP_OPTIONS}, | ||
| 26660 | |||
| 26661 | /* 32 Gigabit */ | ||
| 26662 | {"NAND 4GiB 1,8V 8-bit", 0xA7, 0, 4096, 0, LP_OPTIONS}, | ||
| 26663 | diff --git a/drivers/rapidio/Kconfig b/drivers/rapidio/Kconfig | ||
| 26664 | index 070211a..0ab0efe 100644 | ||
| 26665 | --- a/drivers/rapidio/Kconfig | ||
| 26666 | +++ b/drivers/rapidio/Kconfig | ||
| 26667 | @@ -20,6 +20,8 @@ config RAPIDIO_ENABLE_RX_TX_PORTS | ||
| 26668 | ports for Input/Output direction to allow other traffic | ||
| 26669 | than Maintenance transfers. | ||
| 26670 | |||
| 26671 | +source "drivers/rapidio/mports/Kconfig" | ||
| 26672 | + | ||
| 26673 | source "drivers/rapidio/switches/Kconfig" | ||
| 26674 | |||
| 26675 | config RAPIDIO_DEBUG | ||
| 26676 | diff --git a/drivers/rapidio/Makefile b/drivers/rapidio/Makefile | ||
| 26677 | index 89b8eca..2951859 100644 | ||
| 26678 | --- a/drivers/rapidio/Makefile | ||
| 26679 | +++ b/drivers/rapidio/Makefile | ||
| 26680 | @@ -4,5 +4,6 @@ | ||
| 26681 | obj-y += rio.o rio-access.o rio-driver.o rio-scan.o rio-sysfs.o | ||
| 26682 | |||
| 26683 | obj-$(CONFIG_RAPIDIO) += switches/ | ||
| 26684 | +obj-$(CONFIG_RAPIDIO) += mports/ | ||
| 26685 | |||
| 26686 | subdir-ccflags-$(CONFIG_RAPIDIO_DEBUG) := -DDEBUG | ||
| 26687 | diff --git a/drivers/rapidio/mports/Kconfig b/drivers/rapidio/mports/Kconfig | ||
| 26688 | new file mode 100644 | ||
| 26689 | index 0000000..e72b98b | ||
| 26690 | --- /dev/null | ||
| 26691 | +++ b/drivers/rapidio/mports/Kconfig | ||
| 26692 | @@ -0,0 +1,23 @@ | ||
| 26693 | +# | ||
| 26694 | +# RapidIO master port configuration | ||
| 26695 | +# | ||
| 26696 | + | ||
| 26697 | +config RAPIDIO_ACP | ||
| 26698 | + bool "Support ACP Internal RapidIO endpoint" | ||
| 26699 | + depends on RAPIDIO | ||
| 26700 | + default "y" | ||
| 26701 | + ---help--- | ||
| 26702 | + Include support for ACP RapidIO bridge as a RapidIO master port. | ||
| 26703 | + | ||
| 26704 | +config RAPIDIO_ACP_RX_SIZE | ||
| 26705 | + int "Number of inbound message entries" | ||
| 26706 | + depends on RAPIDIO_ACP | ||
| 26707 | + default "128" | ||
| 26708 | + | ||
| 26709 | +# FIXME: COMMENTED OUT TO KEEP TSI620 BUILD AS AN EXTERNAL MODULE ONLY | ||
| 26710 | +# config RAPIDIO_TSI620 | ||
| 26711 | +# bool "Support Tsi620 PCI RapidIO endpoint" | ||
| 26712 | +# depends on RAPIDIO | ||
| 26713 | +# default "y" | ||
| 26714 | +# ---help--- | ||
| 26715 | +# Include support for Tsi620 PCI-RapidIO bridge as a RapidIO master port. | ||
| 26716 | diff --git a/drivers/rapidio/mports/Makefile b/drivers/rapidio/mports/Makefile | ||
| 26717 | new file mode 100644 | ||
| 26718 | index 0000000..a12148d | ||
| 26719 | --- /dev/null | ||
| 26720 | +++ b/drivers/rapidio/mports/Makefile | ||
| 26721 | @@ -0,0 +1,5 @@ | ||
| 26722 | +# | ||
| 26723 | +# Makefile for RapidIO interconnect services | ||
| 26724 | +# | ||
| 26725 | +#obj-$(CONFIG_RAPIDIO_ACP) += acp/ | ||
| 26726 | +obj-$(CONFIG_RAPIDIO_TSI620) += tsi620/ | ||
| 26727 | diff --git a/drivers/rapidio/mports/tsi620/Makefile b/drivers/rapidio/mports/tsi620/Makefile | ||
| 26728 | new file mode 100644 | ||
| 26729 | index 0000000..7db9008 | ||
| 26730 | --- /dev/null | ||
| 26731 | +++ b/drivers/rapidio/mports/tsi620/Makefile | ||
| 26732 | @@ -0,0 +1,6 @@ | ||
| 26733 | +# | ||
| 26734 | +# Makefile for RapidIO master ports | ||
| 26735 | +# | ||
| 26736 | + | ||
| 26737 | +# FIXME: Out of the tree build only (for now) | ||
| 26738 | +obj-$(CONFIG_RAPIDIO_TSI620) += tsi620.o | ||
| 26739 | diff --git a/drivers/rapidio/mports/tsi620/tsi620.c b/drivers/rapidio/mports/tsi620/tsi620.c | ||
| 26740 | new file mode 100644 | ||
| 26741 | index 0000000..48bc4a6 | ||
| 26742 | --- /dev/null | ||
| 26743 | +++ b/drivers/rapidio/mports/tsi620/tsi620.c | ||
| 26744 | @@ -0,0 +1,703 @@ | ||
| 26745 | +/* Tsi620 Driver | ||
| 26746 | + * | ||
| 26747 | + * Copyright 2009, Integrated Device Technology, Inc. | ||
| 26748 | + * | ||
| 26749 | + * Autor(s): | ||
| 26750 | + * Randy Noah (IDT) | ||
| 26751 | + * Jason McKenna (Tundra Semiconductor Corp.) | ||
| 26752 | + * | ||
| 26753 | + * This driver is not a modification of the Linux kernel, however has been | ||
| 26754 | + * designed to work with it. For restrictions on use of the driver (as | ||
| 26755 | + * either source code or compiled module) including distribution rights, | ||
| 26756 | + * please contact IDT. | ||
| 26757 | + * | ||
| 26758 | + * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 26759 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 26760 | + * FITNESS FOR A PARTICULAR PURPOSE. | ||
| 26761 | + */ | ||
| 26762 | + | ||
| 26763 | +#include <asm/io.h> | ||
| 26764 | +#include <linux/errno.h> | ||
| 26765 | +#include <linux/init.h> | ||
| 26766 | +#include <linux/ioport.h> | ||
| 26767 | +#include <linux/kernel.h> | ||
| 26768 | +#include <linux/module.h> | ||
| 26769 | +#include <linux/pci.h> | ||
| 26770 | +#include <linux/rio.h> | ||
| 26771 | +#include <linux/rio_drv.h> | ||
| 26772 | + | ||
| 26773 | +#include "tsi620.h" | ||
| 26774 | + | ||
| 26775 | +MODULE_AUTHOR("Randy Noah, Jason McKenna"); | ||
| 26776 | +MODULE_DESCRIPTION("Tsi620 PCI/RapidIO Bridge"); | ||
| 26777 | +MODULE_VERSION("2.0"); | ||
| 26778 | +MODULE_LICENSE("Proprietary"); | ||
| 26779 | + | ||
| 26780 | +/***************************************************************************** | ||
| 26781 | + * Definitions | ||
| 26782 | + *****************************************************************************/ | ||
| 26783 | + | ||
| 26784 | +/* Set this to self-adjust PCI addresses (great for insane bootloaders) */ | ||
| 26785 | +#define TSI620_FIX_MAPPING | ||
| 26786 | +//#undef TSI620_FIX_MAPPING | ||
| 26787 | + | ||
| 26788 | +/* Macro used for debugging things. */ | ||
| 26789 | +//#define TSI620_DEBUG(_str_, ...) printk(KERN_INFO "(%s:%d) " _str_, __FILE__, __LINE__, ## __VA_ARGS__) | ||
| 26790 | +#define TSI620_DEBUG(_str_, ...) | ||
| 26791 | + | ||
| 26792 | +/***************************************************************************** | ||
| 26793 | + * Prototypes | ||
| 26794 | + *****************************************************************************/ | ||
| 26795 | +extern void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); | ||
| 26796 | + | ||
| 26797 | +int tsi620_probe(struct pci_dev *dev, const struct pci_device_id *id); | ||
| 26798 | +void tsi620_remove(struct pci_dev *dev); | ||
| 26799 | +int tsi620_remap_device(struct pci_dev *pdev); | ||
| 26800 | +int tsi620_setup_mport(struct pci_dev *pdev); | ||
| 26801 | +void tsi620_init_translation(struct pci_dev* dev); | ||
| 26802 | +void tsi620_init_p2o_bar2_luts(void); | ||
| 26803 | + | ||
| 26804 | +/* RIO low level routines */ | ||
| 26805 | +int tsi620_lcread (struct rio_mport *mport, int index, u32 offset, int len, | ||
| 26806 | + u32 *data); | ||
| 26807 | +int tsi620_lcwrite (struct rio_mport *mport, int index, u32 offset, int len, | ||
| 26808 | + u32 data); | ||
| 26809 | +int tsi620_cread (struct rio_mport *mport, int index, u16 destid, | ||
| 26810 | + u8 hopcount, u32 offset, int len, u32 *data); | ||
| 26811 | +int tsi620_cwrite (struct rio_mport *mport, int index, u16 destid, | ||
| 26812 | + u8 hopcount, u32 offset, int len, u32 data); | ||
| 26813 | +int tsi620_dsend (struct rio_mport *mport, int index, u16 destid, u16 data); | ||
| 26814 | + | ||
| 26815 | +void* tsi620_ioremap(void* rio_address, u16 destid, unsigned int length); | ||
| 26816 | +void tsi620_unmap(void* address); | ||
| 26817 | + | ||
| 26818 | +/***************************************************************************** | ||
| 26819 | + * Structures/variables | ||
| 26820 | + *****************************************************************************/ | ||
| 26821 | +struct tsi620_device *tsi620; | ||
| 26822 | + | ||
| 26823 | +static struct pci_device_id tsi620_pci_tbl[] = { | ||
| 26824 | + { PCI_DEVICE(PCI_VENDOR_ID_TUNDRA, PCI_DEVICE_ID_TSI620) }, | ||
| 26825 | + { 0, } /* terminate list */ | ||
| 26826 | +}; | ||
| 26827 | + | ||
| 26828 | +MODULE_DEVICE_TABLE(pci, tsi620_pci_tbl); | ||
| 26829 | + | ||
| 26830 | +static struct pci_driver tsi620_driver = { | ||
| 26831 | + .name = "tsi620", | ||
| 26832 | + .id_table = tsi620_pci_tbl, | ||
| 26833 | + .probe = tsi620_probe, | ||
| 26834 | + .remove = tsi620_remove, | ||
| 26835 | +}; | ||
| 26836 | + | ||
| 26837 | +/***************************************************************************** | ||
| 26838 | + * Code | ||
| 26839 | + *****************************************************************************/ | ||
| 26840 | + | ||
| 26841 | +/***************************************************************************** | ||
| 26842 | + * Read SREP register | ||
| 26843 | + *****************************************************************************/ | ||
| 26844 | +int tsi620_lcread (struct rio_mport *mport, int index, u32 offset, int len, | ||
| 26845 | + u32 *data) | ||
| 26846 | +{ | ||
| 26847 | + if (0 == len % 4) | ||
| 26848 | + while (len) | ||
| 26849 | + { | ||
| 26850 | + *data = in_le32((void*)tsi620->srep + offset); | ||
| 26851 | + offset += 4; | ||
| 26852 | + len -= 4; | ||
| 26853 | + } | ||
| 26854 | + else | ||
| 26855 | + { | ||
| 26856 | + TSI620_DEBUG("RIO local read of DWORDs only supported\n"); | ||
| 26857 | + return -EINVAL; | ||
| 26858 | + } | ||
| 26859 | + return 0; | ||
| 26860 | +} | ||
| 26861 | + | ||
| 26862 | +/***************************************************************************** | ||
| 26863 | + * Write SREP register | ||
| 26864 | + *****************************************************************************/ | ||
| 26865 | +int tsi620_lcwrite (struct rio_mport *mport, int index, u32 offset, int len, | ||
| 26866 | + u32 data) | ||
| 26867 | +{ | ||
| 26868 | + if (0 == len % 4) | ||
| 26869 | + while (len) | ||
| 26870 | + { | ||
| 26871 | + out_le32((void*)tsi620->srep + offset, data); | ||
| 26872 | + offset += 4; | ||
| 26873 | + len -= 4; | ||
| 26874 | + } | ||
| 26875 | + else | ||
| 26876 | + { | ||
| 26877 | + TSI620_DEBUG("RIO local write of DWORDs only supported\n"); | ||
| 26878 | + return -EINVAL; | ||
| 26879 | + } | ||
| 26880 | + return 0; | ||
| 26881 | +} | ||
| 26882 | + | ||
| 26883 | + | ||
| 26884 | +/***************************************************************************** | ||
| 26885 | + * Perform a maint. read from SREP | ||
| 26886 | + *****************************************************************************/ | ||
| 26887 | +int tsi620_cread (struct rio_mport *mport, int index, u16 destid, | ||
| 26888 | + u8 hopcount, u32 offset, int len, u32 *data) | ||
| 26889 | +{ | ||
| 26890 | + if (hopcount) | ||
| 26891 | + { | ||
| 26892 | + | ||
| 26893 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_PTY_CTL), MAINT_BAR_LUT); | ||
| 26894 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_UPPER), (hopcount << 24) | 0x00f00000 | destid); | ||
| 26895 | + | ||
| 26896 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_LOWER), 0x000000a0); | ||
| 26897 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_RIO_PARMS), 0x00008081); | ||
| 26898 | + *data = in_be32((void*) (tsi620->maint + offset)); | ||
| 26899 | + | ||
| 26900 | + } | ||
| 26901 | + else | ||
| 26902 | + { | ||
| 26903 | + *data = in_le32((void*) (tsi620->regs + offset)); | ||
| 26904 | + } | ||
| 26905 | + return 0; | ||
| 26906 | +} | ||
| 26907 | + | ||
| 26908 | +/***************************************************************************** | ||
| 26909 | + * Perform a maint. write from SREP | ||
| 26910 | + *****************************************************************************/ | ||
| 26911 | +int tsi620_cwrite (struct rio_mport *mport, int index, u16 destid, | ||
| 26912 | + u8 hopcount, u32 offset, int len, u32 data) | ||
| 26913 | +{ | ||
| 26914 | + if (hopcount) | ||
| 26915 | + { | ||
| 26916 | + | ||
| 26917 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_PTY_CTL), MAINT_BAR_LUT); | ||
| 26918 | + | ||
| 26919 | + | ||
| 26920 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_UPPER), (hopcount << 24) | 0x00f00000 | destid); | ||
| 26921 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_LOWER), 0x000000a0); | ||
| 26922 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_RIO_PARMS), 0x00008081); | ||
| 26923 | + | ||
| 26924 | + out_be32((void*) (tsi620->maint + offset), data); | ||
| 26925 | + } | ||
| 26926 | + else | ||
| 26927 | + { | ||
| 26928 | + out_le32((void*) (tsi620->regs + offset), data); | ||
| 26929 | + } | ||
| 26930 | + return 0; | ||
| 26931 | +} | ||
| 26932 | + | ||
| 26933 | +/***************************************************************************** | ||
| 26934 | + * Send a doorbell from SREP | ||
| 26935 | + *****************************************************************************/ | ||
| 26936 | +int tsi620_dsend (struct rio_mport *mport, int index, u16 destid, u16 data) | ||
| 26937 | +{ | ||
| 26938 | + TSI620_DEBUG("Doorbell\n"); | ||
| 26939 | + return 0; | ||
| 26940 | +} | ||
| 26941 | + | ||
| 26942 | +/***************************************************************************** | ||
| 26943 | + * Probe for and initialize device | ||
| 26944 | + *****************************************************************************/ | ||
| 26945 | +int tsi620_probe(struct pci_dev *pdev, const struct pci_device_id *id) | ||
| 26946 | +{ | ||
| 26947 | + /* Variables... */ | ||
| 26948 | + int rc; | ||
| 26949 | + rc = tsi620_remap_device(pdev); | ||
| 26950 | + | ||
| 26951 | + if (rc) | ||
| 26952 | + return rc; | ||
| 26953 | + | ||
| 26954 | + /* All well and good -- now let's register this as a master port... */ | ||
| 26955 | + rc = tsi620_setup_mport(pdev); | ||
| 26956 | + | ||
| 26957 | + /* Enumerate all registered ports */ | ||
| 26958 | + rc = rio_init_mports(); | ||
| 26959 | + if (rc) | ||
| 26960 | + return rc; | ||
| 26961 | + return rc; | ||
| 26962 | +} | ||
| 26963 | + | ||
| 26964 | + | ||
| 26965 | +/***************************************************************************** | ||
| 26966 | + * Remap IO space | ||
| 26967 | + *****************************************************************************/ | ||
| 26968 | +int tsi620_remap_device(struct pci_dev *pdev) | ||
| 26969 | +{ | ||
| 26970 | + /* Location and size of Tsi620 register window (PCI space) */ | ||
| 26971 | + unsigned long location; | ||
| 26972 | + unsigned long size; | ||
| 26973 | + int result; | ||
| 26974 | + | ||
| 26975 | + tsi620 = (struct tsi620_device *) kmalloc(sizeof(struct tsi620_device), GFP_KERNEL); | ||
| 26976 | + memset(tsi620, 0, sizeof(struct tsi620_device)); | ||
| 26977 | + | ||
| 26978 | + /* Enable the device */ | ||
| 26979 | + result = pci_enable_device(pdev); | ||
| 26980 | + | ||
| 26981 | + | ||
| 26982 | +#if defined(TSI620_FIX_MAPPING) | ||
| 26983 | + { | ||
| 26984 | + /* Some boot loaders will assign 0 bytes of PCI space to BAR0 (rather | ||
| 26985 | + * than the required 256KB). This code will check if this is the case, | ||
| 26986 | + * and fix both the internal registers as well as the Linux resource | ||
| 26987 | + * cache. */ | ||
| 26988 | + | ||
| 26989 | + TSI620_DEBUG("Checking if mapping adjustment needs to be made...\n"); | ||
| 26990 | + | ||
| 26991 | + if (pdev->resource[2].start && !(pdev->resource[0].start)) | ||
| 26992 | + { | ||
| 26993 | + // Linux detected space allocated for BAR2, but not BAR0... | ||
| 26994 | + u32 temp; | ||
| 26995 | + | ||
| 26996 | + TSI620_DEBUG("Fixing...\n"); | ||
| 26997 | + | ||
| 26998 | + temp = pdev->resource[2].end - pdev->resource[2].start + 1; | ||
| 26999 | + temp /= 2; | ||
| 27000 | + TSI620_DEBUG("new size of bar2 = 0x%x\n", temp); | ||
| 27001 | + | ||
| 27002 | + pdev->resource[0].start = pdev->resource[2].start; | ||
| 27003 | + pdev->resource[0].end = pdev->resource[0].start + (256 * 1024) - 1; | ||
| 27004 | + TSI620_DEBUG("bar0 from = 0x%x to 0x%x\n", pdev->resource[0].start, pdev->resource[0].end); | ||
| 27005 | + | ||
| 27006 | + pdev->resource[2].start += temp; | ||
| 27007 | + TSI620_DEBUG("bar2 from = 0x%x to 0x%x\n", pdev->resource[2].start, pdev->resource[2].end); | ||
| 27008 | + | ||
| 27009 | + temp = pdev->resource[0].start; | ||
| 27010 | + pci_write_config_dword(pdev, 0x10, temp); | ||
| 27011 | + | ||
| 27012 | + temp = pdev->resource[2].start; | ||
| 27013 | + pci_write_config_dword(pdev, 0x18, temp); | ||
| 27014 | + | ||
| 27015 | + temp = pci_read_config_dword(pdev, 0x4c, &temp); | ||
| 27016 | + TSI620_DEBUG("P2O_PAGE_SIZES 0x%x\n", temp); | ||
| 27017 | + if (0 == temp) | ||
| 27018 | + { | ||
| 27019 | + u32 wanted = pdev->resource[2].end - pdev->resource[2].start + 1; | ||
| 27020 | + u32 cur = (32 * 1024); | ||
| 27021 | + | ||
| 27022 | + TSI620_DEBUG("0 value seen -- fixing\n"); | ||
| 27023 | + | ||
| 27024 | + temp = 0x00000500; | ||
| 27025 | + while (cur < wanted) | ||
| 27026 | + { | ||
| 27027 | + temp += 0x00000800; | ||
| 27028 | + cur <<= 1; | ||
| 27029 | + } | ||
| 27030 | + } | ||
| 27031 | + else | ||
| 27032 | + { | ||
| 27033 | + //reduce space by 1/2 | ||
| 27034 | + temp -= 0x00000800; | ||
| 27035 | + } | ||
| 27036 | + TSI620_DEBUG("New value: 0x%x\n", temp); | ||
| 27037 | + pci_write_config_dword(pdev, 0x4c, temp); | ||
| 27038 | + | ||
| 27039 | + } | ||
| 27040 | + | ||
| 27041 | + TSI620_DEBUG("updating resource lists...\n"); | ||
| 27042 | + pci_update_resource(pdev, &(pdev->resource[0]), 0); | ||
| 27043 | + pci_update_resource(pdev, &(pdev->resource[2]), 2); | ||
| 27044 | + } | ||
| 27045 | +#endif | ||
| 27046 | + | ||
| 27047 | + /* Ok, try to remap this bad boy */ | ||
| 27048 | + location = pci_resource_start (pdev, 0); | ||
| 27049 | + size = pci_resource_len(pdev, 0); | ||
| 27050 | + | ||
| 27051 | + tsi620->regs = (u32) ioremap(location, TSI620_CONFIG_SPACE_SIZE); | ||
| 27052 | + | ||
| 27053 | + /* Now to remap some memory access space */ | ||
| 27054 | + location = pci_resource_start (pdev, 2); | ||
| 27055 | + size = pci_resource_len(pdev, 2); | ||
| 27056 | + | ||
| 27057 | + TSI620_DEBUG("mem location/size = 0x%lx / 0x%lx\n", location, size); | ||
| 27058 | + tsi620->i2rBase = location; | ||
| 27059 | + tsi620->memSize = size; | ||
| 27060 | + | ||
| 27061 | + tsi620->base = (u32) ioremap(tsi620->i2rBase, tsi620->memSize); | ||
| 27062 | + | ||
| 27063 | + | ||
| 27064 | + if (!tsi620->regs) | ||
| 27065 | + { | ||
| 27066 | + TSI620_DEBUG("Unable to remap IO space\n"); | ||
| 27067 | + return -ENOMEM; | ||
| 27068 | + } | ||
| 27069 | + | ||
| 27070 | + if (!tsi620->base) | ||
| 27071 | + { | ||
| 27072 | + TSI620_DEBUG("Unable to remap memory\n"); | ||
| 27073 | + return -ENOMEM; | ||
| 27074 | + } | ||
| 27075 | + | ||
| 27076 | + TSI620_DEBUG("Remapped spaces: regs -- 0x%x, mem -- 0x%x\n", (u32) tsi620->regs, (u32) tsi620->base); | ||
| 27077 | + | ||
| 27078 | + tsi620->srep = tsi620->regs + TSI620_SREP_OFFSET; | ||
| 27079 | + tsi620->pci = tsi620->regs + TSI620_PCI_OFFSET; | ||
| 27080 | + | ||
| 27081 | + /* Ok, so this "mem space" exists -- let's break it up into some chunks */ | ||
| 27082 | + tsi620_init_translation(pdev); | ||
| 27083 | + | ||
| 27084 | + return 0; | ||
| 27085 | +} | ||
| 27086 | + | ||
| 27087 | +/***************************************************************************** | ||
| 27088 | + * Map all PCI BAR2 transactions to target the SREP interface * | ||
| 27089 | + *****************************************************************************/ | ||
| 27090 | +void tsi620_init_p2o_bar2_luts() | ||
| 27091 | +{ | ||
| 27092 | + int lutIndex; | ||
| 27093 | + u32 p2o_page_sizes; | ||
| 27094 | + | ||
| 27095 | + /* Map transactions to SREP (= port 0) with no address translation. */ | ||
| 27096 | + p2o_page_sizes = in_le32((void*)(tsi620->pci + TSI620_PCI_P2O_PAGE_SIZES)); | ||
| 27097 | + p2o_page_sizes |= 0x00000400; | ||
| 27098 | + out_le32((void*)(tsi620->pci + TSI620_PCI_P2O_PAGE_SIZES), p2o_page_sizes); | ||
| 27099 | + | ||
| 27100 | + for (lutIndex = 0; lutIndex < TSI620_PCI_NUM_P2O_LUTS; lutIndex++) { | ||
| 27101 | + out_le32((void*)(tsi620->pci + TSI620_PCI_P2O_BAR2_LUTx(lutIndex)), 0x00000000); | ||
| 27102 | + out_le32((void*)(tsi620->pci + TSI620_PCI_P2O_BAR2_LUTx_UPPER(lutIndex)), 0x00000000); | ||
| 27103 | + } | ||
| 27104 | +} | ||
| 27105 | + | ||
| 27106 | +/*************************************************************** | ||
| 27107 | + * Returns log2 (highest order bit) of the number | ||
| 27108 | + ***************************************************************/ | ||
| 27109 | +int getLog2(u32 n) | ||
| 27110 | +{ | ||
| 27111 | + /* Note that there are faster ways to do this... but this is clean and easy to read */ | ||
| 27112 | + int l = 0; | ||
| 27113 | + while (n >>= 1) l++; | ||
| 27114 | + return l; | ||
| 27115 | +} | ||
| 27116 | + | ||
| 27117 | +/*************************************************************** | ||
| 27118 | +* Convert a size (number of bytes) to a value suitilbe to programming | ||
| 27119 | +* into I2R_BARx_LUT_CSR | ||
| 27120 | +***************************************************************/ | ||
| 27121 | +u32 sizeToBarSizeId(u32 barSize) | ||
| 27122 | +{ | ||
| 27123 | + // Note that we expect barSize to be a valid value (a power of 2) | ||
| 27124 | + int x = getLog2(barSize); | ||
| 27125 | + x -= 12; | ||
| 27126 | + x <<= 8; | ||
| 27127 | + return x; | ||
| 27128 | +} | ||
| 27129 | + | ||
| 27130 | +/*************************************************************** | ||
| 27131 | +* Convert the number of LUTs into a value suitible to program into | ||
| 27132 | +* I2R_BARx_LUT_CSR | ||
| 27133 | +***************************************************************/ | ||
| 27134 | +u32 lutsToLutsId(int luts) | ||
| 27135 | +{ | ||
| 27136 | + return getLog2(luts); | ||
| 27137 | +} | ||
| 27138 | + | ||
| 27139 | +/************************************************************** | ||
| 27140 | +* Setup a given bar based on the inputted parameters | ||
| 27141 | +***************************************************************/ | ||
| 27142 | +void tsi620_setup_srep_hw_bar(int barIndex, u32 isfAddress, u32 barSize, | ||
| 27143 | + int firstLut, int luts, int enabled) | ||
| 27144 | +{ | ||
| 27145 | + u32 temp; // The value to program in the register (as value is being built) | ||
| 27146 | + | ||
| 27147 | + //Setup the LUT CSR | ||
| 27148 | + temp = (firstLut << 16) | sizeToBarSizeId(barSize) | lutsToLutsId(luts); | ||
| 27149 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_BARx_LUT_CSR(barIndex)), temp); | ||
| 27150 | + | ||
| 27151 | + //Setup the LOWER register | ||
| 27152 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_BARx_LOWER(barIndex)), | ||
| 27153 | + (isfAddress & 0xfffff000) | (enabled ? 1 : 0)); | ||
| 27154 | + | ||
| 27155 | + //Setup the UPPER register (0) | ||
| 27156 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_BARx_UPPER(barIndex)), 0); | ||
| 27157 | +} | ||
| 27158 | + | ||
| 27159 | +/************************************************************** | ||
| 27160 | +* Setup a given LUT based on the inputted parameters | ||
| 27161 | +***************************************************************/ | ||
| 27162 | +void tsi620_setup_srep_hw_lut(int lutIndex, u16 destId, u8 hopcount, | ||
| 27163 | + u32 rio_addr, u16 transaction) | ||
| 27164 | +{ | ||
| 27165 | + u32 lower; | ||
| 27166 | + | ||
| 27167 | + lower = rio_addr & 0xffffff00; | ||
| 27168 | + lower |= 0x000000a0; | ||
| 27169 | + | ||
| 27170 | + /* These will be filled in by tsi620_rio_config_write/read */ | ||
| 27171 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_PTY_CTL), lutIndex); | ||
| 27172 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_UPPER), | ||
| 27173 | + ((hopcount & 0xff) << 24) | 0x00d00000 | destId); | ||
| 27174 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_LOWER), 0x000000a0 | (rio_addr & 0xfffff000)); //read and write priority 2 | ||
| 27175 | + out_le32((void*)(tsi620->srep + TSI620_SREP_I2R_LUT_TA_RIO_PARMS), (u32) transaction); | ||
| 27176 | +} | ||
| 27177 | + | ||
| 27178 | + | ||
| 27179 | +/*************************************************************** | ||
| 27180 | + * Setup a LUT to translate to the specified opration on the | ||
| 27181 | + * specified RIO device | ||
| 27182 | + ***************************************************************/ | ||
| 27183 | +void tsi620_setup_srep_region(int barIndex, int lutIndex, u32 isfAddress, | ||
| 27184 | + u32 size, u16 destId, u8 hopcount, u32 rio_addr, | ||
| 27185 | + u16 transaction, int enabled) | ||
| 27186 | +{ | ||
| 27187 | + struct tsi620_bar* bar = &(tsi620->bar[barIndex]); | ||
| 27188 | + | ||
| 27189 | + //setup the HW registers | ||
| 27190 | + tsi620_setup_srep_hw_lut(lutIndex, destId, hopcount, rio_addr, transaction); | ||
| 27191 | + tsi620_setup_srep_hw_bar(barIndex, isfAddress, size, lutIndex, 1, enabled); | ||
| 27192 | + | ||
| 27193 | + //Mark it in SW | ||
| 27194 | + bar->enabled = enabled; | ||
| 27195 | + bar->luts = 1; | ||
| 27196 | + bar->firstLut = lutIndex; | ||
| 27197 | + bar->isfAddr = isfAddress; | ||
| 27198 | + bar->destid = destId; | ||
| 27199 | + bar->hopcount = hopcount; | ||
| 27200 | + bar->size = size; | ||
| 27201 | + if (enabled) | ||
| 27202 | + { | ||
| 27203 | + bar->procAddr = (void*) (tsi620->base + (isfAddress - tsi620->i2rBase)); | ||
| 27204 | + } | ||
| 27205 | + else | ||
| 27206 | + { | ||
| 27207 | + bar->procAddr = NULL; | ||
| 27208 | + } | ||
| 27209 | + | ||
| 27210 | + TSI620_DEBUG("bar %d setup to dest 0x%x, hc 0x%x, rio_addr 0x%x at proc addr 0x%x\n", barIndex, destId, hopcount, rio_addr, (u32) bar->procAddr); | ||
| 27211 | +} | ||
| 27212 | + | ||
| 27213 | +/***************************************************************************** | ||
| 27214 | + * Setup regions in the memory space for transactions | ||
| 27215 | + *****************************************************************************/ | ||
| 27216 | +void tsi620_init_translation(struct pci_dev* dev) | ||
| 27217 | +{ | ||
| 27218 | + | ||
| 27219 | + /* Memory space will be divided into sections | ||
| 27220 | + * Top 1MB will be used for maintainence transactions | ||
| 27221 | + * Below that will be doorbells (eventually) | ||
| 27222 | + * Below that will be memory access | ||
| 27223 | + */ | ||
| 27224 | + | ||
| 27225 | + u32 top; | ||
| 27226 | + | ||
| 27227 | + /* What is the PCI address of the top? */ | ||
| 27228 | + top = tsi620->i2rBase + tsi620->memSize; | ||
| 27229 | + | ||
| 27230 | + /* Let's assume that worked (I know, I know...) */ | ||
| 27231 | + /* So, next thing we do is map all of these PCI transactions to SREP */ | ||
| 27232 | + { | ||
| 27233 | + /* So that means we should put maintaince transactions where? */ | ||
| 27234 | + tsi620->i2rMaint = top - TSI620_MAINT_SPACE_SIZE; | ||
| 27235 | + tsi620->maint = tsi620->base + (tsi620->i2rMaint - tsi620->i2rBase); | ||
| 27236 | + | ||
| 27237 | + TSI620_DEBUG("Mem PCI addr: 0x%08x\n", tsi620->i2rBase); | ||
| 27238 | + TSI620_DEBUG("Maint PCI addr: 0x%08x\n\n", tsi620->i2rMaint); | ||
| 27239 | + TSI620_DEBUG("Proc addr: 0x%08x\n", tsi620->base); | ||
| 27240 | + TSI620_DEBUG("Maint proc addr: 0x%08x\n\n", tsi620->maint); | ||
| 27241 | + tsi620_init_p2o_bar2_luts(); | ||
| 27242 | + } | ||
| 27243 | + | ||
| 27244 | + /* Next, let's set up the maintainece window */ | ||
| 27245 | + { | ||
| 27246 | + u32 barIndex; | ||
| 27247 | + | ||
| 27248 | + /* Set up 7 BAR regions (except for maint region)*/ | ||
| 27249 | + for (barIndex = 0; barIndex < 7; barIndex++) | ||
| 27250 | + { | ||
| 27251 | + tsi620_setup_srep_region(barIndex, barIndex, 0, 0x1000, 0xff, | ||
| 27252 | + DEFAULT_HOPCOUNT, 0, TSI620_SREP_LUT_MAINT_TRANS, 0); | ||
| 27253 | + } | ||
| 27254 | + | ||
| 27255 | + tsi620_setup_srep_region(MAINT_BAR, MAINT_BAR_LUT, tsi620->i2rMaint, | ||
| 27256 | + TSI620_MAINT_SPACE_SIZE, 0xff, DEFAULT_HOPCOUNT, 0, | ||
| 27257 | + TSI620_SREP_LUT_MAINT_TRANS, 1); | ||
| 27258 | + | ||
| 27259 | + } | ||
| 27260 | +} | ||
| 27261 | + | ||
| 27262 | +/***************************************************************************** | ||
| 27263 | + * Setup RIO subsystem with Tsi620 as a master port | ||
| 27264 | + *****************************************************************************/ | ||
| 27265 | +int tsi620_setup_mport(struct pci_dev *pdev) | ||
| 27266 | +{ | ||
| 27267 | + int retval = 0; | ||
| 27268 | + struct rio_ops *ops; | ||
| 27269 | + | ||
| 27270 | + struct rio_mport *mport; | ||
| 27271 | + | ||
| 27272 | + ops = kmalloc(sizeof(struct rio_ops), GFP_KERNEL); | ||
| 27273 | + if (!ops) | ||
| 27274 | + { | ||
| 27275 | + TSI620_DEBUG("Could not allocate memory for rio_ops\n"); | ||
| 27276 | + return -ENOMEM; | ||
| 27277 | + } | ||
| 27278 | + memset(ops, 0, sizeof(struct rio_ops)); | ||
| 27279 | + ops->lcread = tsi620_lcread; | ||
| 27280 | + ops->lcwrite = tsi620_lcwrite; | ||
| 27281 | + ops->cread = tsi620_cread; | ||
| 27282 | + ops->cwrite = tsi620_cwrite; | ||
| 27283 | + ops->dsend = tsi620_dsend; | ||
| 27284 | + ops->rio_ioremap = tsi620_ioremap; | ||
| 27285 | + ops->rio_unmap = tsi620_unmap; | ||
| 27286 | + | ||
| 27287 | + mport = kmalloc(sizeof(struct rio_mport), GFP_KERNEL); | ||
| 27288 | + if (!mport) | ||
| 27289 | + { | ||
| 27290 | + kfree(ops); | ||
| 27291 | + TSI620_DEBUG("Could not allocate memory for rio_ops\n"); | ||
| 27292 | + return -ENOMEM; | ||
| 27293 | + } | ||
| 27294 | + mport->ops = ops; | ||
| 27295 | + mport->id = 0; | ||
| 27296 | + mport->index = 0; | ||
| 27297 | + mport->sys_size = 0; /* small system */ | ||
| 27298 | + mport->phy_type = RIO_PHY_SERIAL; | ||
| 27299 | + mport->name[0] = 'T'; | ||
| 27300 | + mport->name[1] = 0; | ||
| 27301 | + mport->priv = (void*) tsi620; | ||
| 27302 | + mport->host_deviceid = 1; /* TODO -- read from cmd line */ | ||
| 27303 | + | ||
| 27304 | + INIT_LIST_HEAD(&mport->dbells); | ||
| 27305 | + | ||
| 27306 | + mport->iores.start = tsi620->base; | ||
| 27307 | + mport->iores.end = tsi620->base + tsi620->memSize; | ||
| 27308 | + mport->iores.flags = IORESOURCE_MEM; | ||
| 27309 | + strcpy(mport->name, "Tsi620 mport"); | ||
| 27310 | + | ||
| 27311 | + rio_register_mport(mport); | ||
| 27312 | + return retval; | ||
| 27313 | +} | ||
| 27314 | + | ||
| 27315 | +/***************************************************************************** | ||
| 27316 | + * Find an available bar | ||
| 27317 | + *****************************************************************************/ | ||
| 27318 | +int findFreeRegion(u32 length, u32* pAddr) | ||
| 27319 | +{ | ||
| 27320 | + int bar; | ||
| 27321 | + int nextBar; | ||
| 27322 | + int barStartAddress = tsi620->i2rBase; | ||
| 27323 | + int maxSize = 0; | ||
| 27324 | + | ||
| 27325 | + for (bar = 0; bar < TSI620_SREP_I2R_NUMBARS; bar++) | ||
| 27326 | + { | ||
| 27327 | + | ||
| 27328 | + TSI620_DEBUG("Checking bar %d\n", bar); | ||
| 27329 | + if (!(tsi620->bar[bar].enabled)) | ||
| 27330 | + { | ||
| 27331 | + TSI620_DEBUG("bar %d not enabled... is it big enough?\n", bar); | ||
| 27332 | + //Ok, so we have a free bar -- but is it big enough? | ||
| 27333 | + nextBar = bar+1; | ||
| 27334 | + | ||
| 27335 | + while(nextBar < TSI620_SREP_I2R_NUMBARS) | ||
| 27336 | + | ||
| 27337 | + //for (nextBar = (bar+1); nextBar < TSI620_SREP_I2R_NUMBARS; nextBar++); | ||
| 27338 | + { | ||
| 27339 | + if(tsi620->bar[nextBar].enabled) | ||
| 27340 | + { | ||
| 27341 | + //Ok, so we found the next bar that's in use... we can use it's address to determine max size of this bar | ||
| 27342 | + maxSize = tsi620->bar[nextBar].isfAddr - barStartAddress; | ||
| 27343 | + break; | ||
| 27344 | + } | ||
| 27345 | + else | ||
| 27346 | + { | ||
| 27347 | + nextBar++; | ||
| 27348 | + } | ||
| 27349 | + } | ||
| 27350 | + | ||
| 27351 | + /* Ok, so we found the next used BAR, and we know the maximum size this bar can be */ | ||
| 27352 | + if (maxSize >= length) | ||
| 27353 | + { | ||
| 27354 | + break; | ||
| 27355 | + } | ||
| 27356 | + else | ||
| 27357 | + { | ||
| 27358 | + } | ||
| 27359 | + } | ||
| 27360 | + else | ||
| 27361 | + { | ||
| 27362 | + //update the lowest possible start address, and look at the next BAR | ||
| 27363 | + barStartAddress = tsi620->bar[bar].isfAddr + tsi620->bar[bar].size; | ||
| 27364 | + } | ||
| 27365 | + } | ||
| 27366 | + | ||
| 27367 | + if (TSI620_SREP_I2R_NUMBARS == bar) | ||
| 27368 | + { | ||
| 27369 | + TSI620_DEBUG("Could not find a free BAR with 0x%x of space :( -- aborting\n", length); | ||
| 27370 | + return -1; | ||
| 27371 | + } | ||
| 27372 | + else | ||
| 27373 | + { | ||
| 27374 | + TSI620_DEBUG("bar %d works starting at 0x%x!\n", bar, barStartAddress); | ||
| 27375 | + *pAddr = barStartAddress; | ||
| 27376 | + return bar; | ||
| 27377 | + } | ||
| 27378 | +} | ||
| 27379 | + | ||
| 27380 | +/***************************************************************************** | ||
| 27381 | + * Map an area of processor space to a RIO device memory | ||
| 27382 | + *****************************************************************************/ | ||
| 27383 | +void* tsi620_ioremap(void* rio_address, u16 destid, unsigned int length) | ||
| 27384 | +{ | ||
| 27385 | + u32 isfAddr; | ||
| 27386 | + | ||
| 27387 | + int bar = findFreeRegion(length, &isfAddr); | ||
| 27388 | + | ||
| 27389 | + TSI620_DEBUG("Remapping to bar %d, ISF addr 0x%x\n", bar, isfAddr); | ||
| 27390 | + | ||
| 27391 | + if (-1 == bar) | ||
| 27392 | + return NULL; | ||
| 27393 | + | ||
| 27394 | + tsi620_setup_srep_region(bar, bar, isfAddr, | ||
| 27395 | + length, destid, 0xff, (u32) rio_address, | ||
| 27396 | + TSI620_SREP_LUT_NR_NW_TRANS, 1); | ||
| 27397 | + | ||
| 27398 | + | ||
| 27399 | + tsi620->bar[bar].procAddr = (void*) (tsi620->base + (isfAddr - tsi620->i2rBase)); | ||
| 27400 | + | ||
| 27401 | + TSI620_DEBUG("Proc addr 0x%x\n", (u32) tsi620->bar[bar].procAddr); | ||
| 27402 | + | ||
| 27403 | + return tsi620->bar[bar].procAddr; | ||
| 27404 | +} | ||
| 27405 | + | ||
| 27406 | +void tsi620_unmap(void* address) | ||
| 27407 | +{ | ||
| 27408 | + int bar; | ||
| 27409 | + | ||
| 27410 | + for (bar = 0; bar < TSI620_SREP_I2R_NUMBARS; bar++) | ||
| 27411 | + { | ||
| 27412 | + if (tsi620->bar[bar].procAddr == address) | ||
| 27413 | + { | ||
| 27414 | + tsi620_setup_srep_region(bar, bar, 0, | ||
| 27415 | + 0x1000, 0xff, DEFAULT_HOPCOUNT, 0, | ||
| 27416 | + TSI620_SREP_LUT_NR_NW_TRANS, 0); | ||
| 27417 | + tsi620->bar[bar].procAddr = 0; | ||
| 27418 | + break; | ||
| 27419 | + } | ||
| 27420 | + } | ||
| 27421 | +} | ||
| 27422 | + | ||
| 27423 | +/***************************************************************************** | ||
| 27424 | + * Unload driver | ||
| 27425 | + *****************************************************************************/ | ||
| 27426 | +void tsi620_remove(struct pci_dev *pdev) | ||
| 27427 | +{ | ||
| 27428 | + iounmap((void*) tsi620->base); | ||
| 27429 | + iounmap((void*) tsi620->regs); | ||
| 27430 | + kfree(tsi620); | ||
| 27431 | +} | ||
| 27432 | + | ||
| 27433 | +static int __init tsi620_init(void) | ||
| 27434 | +{ | ||
| 27435 | + return pci_register_driver(&tsi620_driver); | ||
| 27436 | +} | ||
| 27437 | + | ||
| 27438 | +static void __exit tsi620_exit(void) | ||
| 27439 | +{ | ||
| 27440 | + pci_unregister_driver(&tsi620_driver); | ||
| 27441 | +} | ||
| 27442 | + | ||
| 27443 | + | ||
| 27444 | +module_init(tsi620_init); | ||
| 27445 | +module_exit(tsi620_exit); | ||
| 27446 | + | ||
| 27447 | + | ||
| 27448 | diff --git a/drivers/rapidio/mports/tsi620/tsi620.h b/drivers/rapidio/mports/tsi620/tsi620.h | ||
| 27449 | new file mode 100644 | ||
| 27450 | index 0000000..e32dfd3 | ||
| 27451 | --- /dev/null | ||
| 27452 | +++ b/drivers/rapidio/mports/tsi620/tsi620.h | ||
| 27453 | @@ -0,0 +1,123 @@ | ||
| 27454 | +/* Tsi620 Header | ||
| 27455 | + * | ||
| 27456 | + * Copyright 2009, Integrated Device Technology, Inc. | ||
| 27457 | + * | ||
| 27458 | + * The register offsets and values defined in this file represent the Tsi620 | ||
| 27459 | + * PCI to RapidIO bridge. These offsets and values should be trated with the | ||
| 27460 | + * same discretion and NDA terms as the Tsi620 User Manual, available from IDT. | ||
| 27461 | + * | ||
| 27462 | + * Other aspects of this file (data structures, etc) are used by the Tsi620 | ||
| 27463 | + * driver code. While these are not described in the Tsi620 User Manual, | ||
| 27464 | + * these aspects should again be considered confidental, as should the | ||
| 27465 | + * tsi620.c driver code. | ||
| 27466 | + * | ||
| 27467 | + * This program is distributed in the hope that it will be useful, but WITHOUT | ||
| 27468 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 27469 | + * FITNESS FOR A PARTICULAR PURPOSE. | ||
| 27470 | + */ | ||
| 27471 | + | ||
| 27472 | +#ifndef __TSI620_H | ||
| 27473 | +#define __TSI620_H | ||
| 27474 | + | ||
| 27475 | +#define DEFAULT_HOPCOUNT 0xff | ||
| 27476 | + | ||
| 27477 | +/* PCI vendor and device ID */ | ||
| 27478 | +#define PCI_VENDOR_ID_TUNDRA 0x10e3 | ||
| 27479 | +#define PCI_DEVICE_ID_TSI620 0x0620 | ||
| 27480 | + | ||
| 27481 | +/* Which BAR/LUTs to use */ | ||
| 27482 | +#define TSI620_SREP_I2R_NUMBARS (8) | ||
| 27483 | +#define TSI620_SREP_I2R_NUMLUTS (255) | ||
| 27484 | +#define MAINT_BAR (TSI620_SREP_I2R_NUMBARS - 1) | ||
| 27485 | +#define MAINT_BAR_LUT (TSI620_SREP_I2R_NUMLUTS - 1) | ||
| 27486 | +#define MEM_BAR 0x0 | ||
| 27487 | + | ||
| 27488 | +/* Memory space sizes */ | ||
| 27489 | +#define TSI620_CONFIG_SPACE_SIZE (1024 * 256) /* 256K */ | ||
| 27490 | +#define TSI620_MAINT_SPACE_SIZE (1024 * 1024 * 1) /* 1M */ | ||
| 27491 | + | ||
| 27492 | +/* Register offsets */ | ||
| 27493 | + | ||
| 27494 | +/* Offset to a block within the registers */ | ||
| 27495 | +#define TSI620_SREP_OFFSET 0x20000 | ||
| 27496 | +#define TSI620_PCI_OFFSET 0x22000 | ||
| 27497 | + | ||
| 27498 | +/* Offset from a block base address to individual registers */ | ||
| 27499 | +/* SREP */ | ||
| 27500 | +#define TSI620_SREP_R2Ix_LUT_CSR(_x_) (0x500 + (_x_ * 0x10)) | ||
| 27501 | +#define TSI620_SREP_I2R_BARx_LUT_CSR(_x_) (0x600 + (_x_ * 0x10)) | ||
| 27502 | +#define TSI620_SREP_I2R_BARx_UPPER(_x_) (0x604 + (_x_ * 0x10)) | ||
| 27503 | +#define TSI620_SREP_I2R_BARx_LOWER(_x_) (0x608 + (_x_ * 0x10)) | ||
| 27504 | +#define TSI620_SREP_I2R_LUT_PTY_CTL (0x6a0) | ||
| 27505 | +#define TSI620_SREP_I2R_LUT_TA_UPPER (0x6a4) | ||
| 27506 | +#define TSI620_SREP_I2R_LUT_TA_LOWER (0x6ac) | ||
| 27507 | +#define TSI620_SREP_I2R_LUT_TA_RIO_PARMS (0x6bc) | ||
| 27508 | + | ||
| 27509 | +#define TSI620_SREP_BAR_SIZE_4K 0x0000 | ||
| 27510 | +#define TSI620_SREP_BAR_SIZE_8K 0x0100 | ||
| 27511 | +#define TSI620_SREP_BAR_SIZE_16K 0x0200 | ||
| 27512 | +#define TSI620_SREP_BAR_SIZE_32K 0x0300 | ||
| 27513 | +#define TSI620_SREP_BAR_SIZE_64K 0x0400 | ||
| 27514 | +#define TSI620_SREP_BAR_SIZE_128K 0x0500 | ||
| 27515 | +#define TSI620_SREP_BAR_SIZE_256K 0x0600 | ||
| 27516 | +#define TSI620_SREP_BAR_SIZE_512K 0x0700 | ||
| 27517 | +#define TSI620_SREP_BAR_SIZE_1M 0x0800 | ||
| 27518 | +#define TSI620_SREP_BAR_SIZE_2M 0x0900 | ||
| 27519 | +#define TSI620_SREP_BAR_SIZE_4M 0x0a00 | ||
| 27520 | +#define TSI620_SREP_BAR_SIZE_8M 0x0b00 | ||
| 27521 | +#define TSI620_SREP_BAR_SIZE_16M 0x0c00 | ||
| 27522 | +#define TSI620_SREP_BAR_SIZE_32M 0x0d00 | ||
| 27523 | +#define TSI620_SREP_BAR_SIZE_64M 0x0e00 | ||
| 27524 | +#define TSI620_SREP_BAR_SIZE_128M 0x0f00 | ||
| 27525 | +#define TSI620_SREP_BAR_SIZE_256M 0x1000 | ||
| 27526 | +#define TSI620_SREP_BAR_SIZE_512M 0x1100 | ||
| 27527 | +#define TSI620_SREP_BAR_SIZE_1G 0x1200 | ||
| 27528 | +#define TSI620_SREP_BAR_SIZE_2G 0x1300 | ||
| 27529 | + | ||
| 27530 | +/* Various common type of transactions in LUT */ | ||
| 27531 | +#define TSI620_SREP_LUT_MAINT_TRANS 0x8081 //Maint read, maint write | ||
| 27532 | +#define TSI620_SREP_LUT_NR_NW_TRANS 0x2454 //NREAD, NWRITE | ||
| 27533 | +#define TSI620_SREP_LUT_NR_NWR_TRANS 0x2555 //NREAD, NWRITE_R | ||
| 27534 | + | ||
| 27535 | +#define MAINT_BAR_SIZE_ID TSI620_SREP_BAR_SIZE_1M | ||
| 27536 | + | ||
| 27537 | +/* PCI */ | ||
| 27538 | +#define TSI620_PCI_BAR2 0x018 | ||
| 27539 | +#define TSI620_PCI_MEM_BAR TSI620_PCI_BAR2 | ||
| 27540 | +#define TSI620_PCI_P2O_BAR2_LUTx(x) (0x500 + (x * 0x08)) | ||
| 27541 | +#define TSI620_PCI_P2O_BAR2_LUTx_UPPER(x) (0x504 + (x * 0x08)) | ||
| 27542 | +#define TSI620_PCI_P2O_PAGE_SIZES 0x04c | ||
| 27543 | +#define TSI620_PCI_NUM_P2O_LUTS 32 | ||
| 27544 | + | ||
| 27545 | +#define TSI620_PCI_P2O_PAGE_SIZES__BAR2_SIZE_MASK 0x0000f800 | ||
| 27546 | + | ||
| 27547 | +struct tsi620_bar | ||
| 27548 | +{ | ||
| 27549 | + int firstLut; | ||
| 27550 | + int luts; | ||
| 27551 | + u32 isfAddr; | ||
| 27552 | + void* procAddr; | ||
| 27553 | + u16 destid; | ||
| 27554 | + u8 hopcount; | ||
| 27555 | + int size; | ||
| 27556 | + int enabled; | ||
| 27557 | +}; | ||
| 27558 | + | ||
| 27559 | +/* global variables -- all in a nice, neat struct */ | ||
| 27560 | +struct tsi620_device { | ||
| 27561 | + u32 regs; /* Window into all Tsi620 regs */ | ||
| 27562 | + u32 srep; /* Serial RapidIO endpoint registers */ | ||
| 27563 | + u32 pci; /* PCI registers */ | ||
| 27564 | + | ||
| 27565 | + u32 memSize; | ||
| 27566 | + | ||
| 27567 | + u32 i2rBase; /* This is the PCI address where we start I2R space */ | ||
| 27568 | + u32 base; /* This is the processor space address used to access I2R space */ | ||
| 27569 | + | ||
| 27570 | + u32 i2rMaint; /* PCI address of where we start maintainence space */ | ||
| 27571 | + u32 maint; /* Processor address of where we start maint space */ | ||
| 27572 | + | ||
| 27573 | + struct tsi620_bar bar[TSI620_SREP_I2R_NUMBARS]; | ||
| 27574 | +}; | ||
| 27575 | + | ||
| 27576 | +#endif | ||
| 27577 | diff --git a/drivers/rapidio/rio-scan.c b/drivers/rapidio/rio-scan.c | ||
| 27578 | index ebe77dd..68d5828 100644 | ||
| 27579 | --- a/drivers/rapidio/rio-scan.c | ||
| 27580 | +++ b/drivers/rapidio/rio-scan.c | ||
| 27581 | @@ -36,6 +36,9 @@ | ||
| 27582 | |||
| 27583 | #include "rio.h" | ||
| 27584 | |||
| 27585 | +#undef pr_debug | ||
| 27586 | +#define pr_debug printk | ||
| 27587 | + | ||
| 27588 | LIST_HEAD(rio_devices); | ||
| 27589 | static LIST_HEAD(rio_switches); | ||
| 27590 | |||
| 27591 | @@ -376,7 +379,7 @@ static struct rio_dev __devinit *rio_setup_device(struct rio_net *net, | ||
| 27592 | int ret = 0; | ||
| 27593 | struct rio_dev *rdev; | ||
| 27594 | struct rio_switch *rswitch = NULL; | ||
| 27595 | - int result, rdid; | ||
| 27596 | + u32 result, rdid; | ||
| 27597 | size_t size; | ||
| 27598 | u32 swpinfo = 0; | ||
| 27599 | |||
| 27600 | @@ -1198,6 +1201,8 @@ int __devinit rio_enum_mport(struct rio_mport *mport) | ||
| 27601 | } | ||
| 27602 | |||
| 27603 | out: | ||
| 27604 | + printk(KERN_INFO "RIO: master port %d destid %d\n", | ||
| 27605 | + mport->id, mport->host_deviceid); | ||
| 27606 | return rc; | ||
| 27607 | } | ||
| 27608 | |||
| 27609 | @@ -1256,6 +1261,7 @@ static void rio_enum_timeout(unsigned long data) | ||
| 27610 | * peer discovery. Returns %0 if discovery succeeds or %-EBUSY | ||
| 27611 | * on failure. | ||
| 27612 | */ | ||
| 27613 | + | ||
| 27614 | int __devinit rio_disc_mport(struct rio_mport *mport) | ||
| 27615 | { | ||
| 27616 | struct rio_net *net = NULL; | ||
| 27617 | @@ -1266,6 +1272,7 @@ int __devinit rio_disc_mport(struct rio_mport *mport) | ||
| 27618 | |||
| 27619 | /* If master port has an active link, allocate net and discover peers */ | ||
| 27620 | if (rio_mport_is_active(mport)) { | ||
| 27621 | + | ||
| 27622 | if (!(net = rio_alloc_net(mport))) { | ||
| 27623 | printk(KERN_ERR "RIO: Failed to allocate new net\n"); | ||
| 27624 | goto bail; | ||
| 27625 | @@ -1277,6 +1284,7 @@ int __devinit rio_disc_mport(struct rio_mport *mport) | ||
| 27626 | jiffies + CONFIG_RAPIDIO_DISC_TIMEOUT * HZ; | ||
| 27627 | rio_enum_timer.data = (unsigned long)&enum_timeout_flag; | ||
| 27628 | add_timer(&rio_enum_timer); | ||
| 27629 | + | ||
| 27630 | while (!rio_enum_complete(mport)) { | ||
| 27631 | mdelay(1); | ||
| 27632 | if (enum_timeout_flag) { | ||
| 27633 | @@ -1304,7 +1312,6 @@ int __devinit rio_disc_mport(struct rio_mport *mport) | ||
| 27634 | |||
| 27635 | rio_build_route_tables(); | ||
| 27636 | } | ||
| 27637 | - | ||
| 27638 | return 0; | ||
| 27639 | |||
| 27640 | timeout: | ||
| 27641 | diff --git a/drivers/rapidio/rio.c b/drivers/rapidio/rio.c | ||
| 27642 | index 86c9a09..4a2487b 100644 | ||
| 27643 | --- a/drivers/rapidio/rio.c | ||
| 27644 | +++ b/drivers/rapidio/rio.c | ||
| 27645 | @@ -243,7 +243,15 @@ int rio_request_inb_dbell(struct rio_mport *mport, | ||
| 27646 | { | ||
| 27647 | int rc = 0; | ||
| 27648 | |||
| 27649 | - struct resource *res = kmalloc(sizeof(struct resource), GFP_KERNEL); | ||
| 27650 | + struct resource *res; | ||
| 27651 | + | ||
| 27652 | + if (mport->ops->open_inb_mbox == NULL) | ||
| 27653 | + { | ||
| 27654 | + rc = -ENOTSUPP; | ||
| 27655 | + goto out; | ||
| 27656 | + } | ||
| 27657 | + | ||
| 27658 | + res = kmalloc(sizeof(struct resource), GFP_KERNEL); | ||
| 27659 | |||
| 27660 | if (res) { | ||
| 27661 | rio_init_dbell_res(res, start, end); | ||
| 27662 | @@ -831,7 +839,7 @@ int rio_inb_pwrite_handler(union rio_pw_msg *pw_msg) | ||
| 27663 | RIO_PORT_N_ACK_CLEAR); | ||
| 27664 | |||
| 27665 | /* Schedule Extraction Service */ | ||
| 27666 | - pr_debug("RIO_PW: Device Extraction on [%s]-P%d\n", | ||
| 27667 | + printk("RIO_PW: Device Extraction on [%s]-P%d\n", | ||
| 27668 | rio_name(rdev), portnum); | ||
| 27669 | } | ||
| 27670 | } | ||
| 27671 | @@ -1184,6 +1192,21 @@ int rio_register_mport(struct rio_mport *port) | ||
| 27672 | return 0; | ||
| 27673 | } | ||
| 27674 | |||
| 27675 | +void* rio_ioremap(struct rio_mport *mport, void* rio_address, | ||
| 27676 | + u16 destid, unsigned int length) | ||
| 27677 | +{ | ||
| 27678 | + if (!mport->ops->rio_ioremap) | ||
| 27679 | + return NULL; | ||
| 27680 | + return mport->ops->rio_ioremap(rio_address, destid, length); | ||
| 27681 | +} | ||
| 27682 | + | ||
| 27683 | +void rio_unmap(struct rio_mport *mport, void* address) | ||
| 27684 | +{ | ||
| 27685 | + if (!mport->ops->rio_unmap) | ||
| 27686 | + return; | ||
| 27687 | + mport->ops->rio_unmap(address); | ||
| 27688 | +} | ||
| 27689 | + | ||
| 27690 | EXPORT_SYMBOL_GPL(rio_local_get_device_id); | ||
| 27691 | EXPORT_SYMBOL_GPL(rio_get_device); | ||
| 27692 | EXPORT_SYMBOL_GPL(rio_get_asm); | ||
| 27693 | @@ -1195,3 +1218,7 @@ EXPORT_SYMBOL_GPL(rio_request_inb_mbox); | ||
| 27694 | EXPORT_SYMBOL_GPL(rio_release_inb_mbox); | ||
| 27695 | EXPORT_SYMBOL_GPL(rio_request_outb_mbox); | ||
| 27696 | EXPORT_SYMBOL_GPL(rio_release_outb_mbox); | ||
| 27697 | +EXPORT_SYMBOL_GPL(rio_ioremap); | ||
| 27698 | +EXPORT_SYMBOL_GPL(rio_unmap); | ||
| 27699 | +EXPORT_SYMBOL_GPL(rio_register_mport); | ||
| 27700 | +EXPORT_SYMBOL_GPL(rio_init_mports); | ||
| 27701 | diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig | ||
| 27702 | index ab085f1..890c08d 100644 | ||
| 27703 | --- a/drivers/usb/host/Kconfig | ||
| 27704 | +++ b/drivers/usb/host/Kconfig | ||
| 27705 | @@ -230,6 +230,19 @@ config USB_OXU210HP_HCD | ||
| 27706 | To compile this driver as a module, choose M here: the | ||
| 27707 | module will be called oxu210hp-hcd. | ||
| 27708 | |||
| 27709 | +config USB_CI13612_HCD | ||
| 27710 | + tristate "CI13612A HCD support" | ||
| 27711 | + depends on USB | ||
| 27712 | + ---help--- | ||
| 27713 | + The CI13612A is an USB host/OTG/device controller. Enable this | ||
| 27714 | + option if your board has this chip. If unsure, say N. | ||
| 27715 | + | ||
| 27716 | + This driver does not support isochronous transfers and doesn't | ||
| 27717 | + implement OTG nor USB device controllers. | ||
| 27718 | + | ||
| 27719 | + To compile this driver as a module, choose M here: the | ||
| 27720 | + module will be called CI13612-hcd. | ||
| 27721 | + | ||
| 27722 | config USB_ISP116X_HCD | ||
| 27723 | tristate "ISP116X HCD support" | ||
| 27724 | depends on USB | ||
| 27725 | diff --git a/drivers/usb/host/ci13612.h b/drivers/usb/host/ci13612.h | ||
| 27726 | new file mode 100644 | ||
| 27727 | index 0000000..b893018 | ||
| 27728 | --- /dev/null | ||
| 27729 | +++ b/drivers/usb/host/ci13612.h | ||
| 27730 | @@ -0,0 +1,887 @@ | ||
| 27731 | +/* | ||
| 27732 | + * System definitions | ||
| 27733 | + */ | ||
| 27734 | +#define ci13612_PHY_ADDR 0x0020004A0000 | ||
| 27735 | +#define ci13162_PHY_ADDR_SIZE 0x20000 | ||
| 27736 | + | ||
| 27737 | +#define MAX_EHCI_FRAME_LIST_SIZE 8 | ||
| 27738 | +#define MAX_EHCI_FRAME_LIST_BITS EHCI_CMD_FRAME_SIZE_8 | ||
| 27739 | + | ||
| 27740 | +#define MAX_QH_DESCRS (8) | ||
| 27741 | +#define MAX_QTD_DESCRS (16) | ||
| 27742 | +#define MAX_ITD_DESCRS (16) | ||
| 27743 | +#define MAX_SITD_DESCRS (16) | ||
| 27744 | + | ||
| 27745 | + | ||
| 27746 | +#define USB_MAX_INTERFACES (10) | ||
| 27747 | +#define RX_BUFFER_SIZE (0xFF) | ||
| 27748 | + | ||
| 27749 | +/* Macro for alignment to specific byte boundary */ | ||
| 27750 | +#define USB_MEM32_ALIGN(n) ((n) + (-(n) & 31)) | ||
| 27751 | +#define USB_MEM512_ALIGN(n) ((n) + (-(n) & 511)) | ||
| 27752 | +#define USB_MEM4096_ALIGN(n) ((n) + (-(n) & 4095)) | ||
| 27753 | + | ||
| 27754 | +#define BitStuffTime(x) (7* 8 * x / 6) | ||
| 27755 | + | ||
| 27756 | +/* | ||
| 27757 | + * Host interface registers | ||
| 27758 | + */ | ||
| 27759 | + | ||
| 27760 | +/* define CI13612 USB registers here */ | ||
| 27761 | + | ||
| 27762 | + | ||
| 27763 | +#define ci13612_USB_CMD 0x140 | ||
| 27764 | + /* 23:16 is r/w intr rate, in microframes; default "8" == 1/msec */ | ||
| 27765 | + #define USB_CMD_PARK (1<<11) /* enable "park" on async qh */ | ||
| 27766 | + #define USB_CMD_PARK_CNT(c) (((c)>>8)&3) /* how many transfers to park for */ | ||
| 27767 | + #define USB_CMD_LRESET (1<<7) /* partial reset (no ports, etc) */ | ||
| 27768 | + #define USB_CMD_IAAD (1<<6) /* "doorbell" interrupt async advance */ | ||
| 27769 | + #define USB_CMD_ASE (1<<5) /* async schedule enable */ | ||
| 27770 | + #define USB_CMD_PSE (1<<4) /* periodic schedule enable */ | ||
| 27771 | + /* 3:2 is periodic frame list size */ | ||
| 27772 | + #define USB_CMD_RESET (1<<1) /* reset HC not bus */ | ||
| 27773 | + #define USB_CMD_RUN (1<<0) /* start/stop HC */ | ||
| 27774 | + | ||
| 27775 | + | ||
| 27776 | +#define ci13612_USB_STS 0x144 | ||
| 27777 | + #define USB_STS_ASS (1<<15) /* Async Schedule Status */ | ||
| 27778 | + #define USB_STS_PSS (1<<14) /* Periodic Schedule Status */ | ||
| 27779 | + #define USB_STS_RECL (1<<13) /* Reclamation */ | ||
| 27780 | + #define USB_STS_HALT (1<<12) /* Not running (any reason) */ | ||
| 27781 | + /* some bits reserved */ | ||
| 27782 | + /* these STS_* flags are also intr_enable bits (USBINTR) */ | ||
| 27783 | + #define USB_STS_IAA (1<<5) /* Interrupted on async advance */ | ||
| 27784 | + #define USB_STS_FATAL (1<<4) /* such as some PCI access errors */ | ||
| 27785 | + #define USB_STS_FLR (1<<3) /* frame list rolled over */ | ||
| 27786 | + #define USB_STS_PCD (1<<2) /* port change detect */ | ||
| 27787 | + #define USB_STS_ERR (1<<1) /* "error" completion (overflow, ...) */ | ||
| 27788 | + #define USB_STS_INT (1<<0) /* "normal" completion (short, ...) */ | ||
| 27789 | + | ||
| 27790 | +#define ci13612_USB_INTEN 0x148 | ||
| 27791 | + | ||
| 27792 | + | ||
| 27793 | +#define ci13612_HCS_PARAMS 0x104 | ||
| 27794 | +#define ci13612_HCC_PARAMS 0x108 | ||
| 27795 | + | ||
| 27796 | +#define ci13612_USBSTS 0x144 | ||
| 27797 | +#define ci13612_USBINTR 0x148 | ||
| 27798 | +#define ci13612_FRINDEX 0x14C | ||
| 27799 | +#define ci13612_CTRLDSSEGMENT 0x150 | ||
| 27800 | +#define ci13612_CONFIGFLAG 0x180 | ||
| 27801 | +#define ci13612_PORTSCX0 0x184 | ||
| 27802 | + | ||
| 27803 | + | ||
| 27804 | +#define ci13612_DEVICEID 0x00 | ||
| 27805 | + #define ci13612_REV_MASK 0xffff0000 | ||
| 27806 | + #define ci13612_REV_SHIFT 16 | ||
| 27807 | + #define ci13612_REV_2100 0x2100 | ||
| 27808 | + #define ci13612_BO_SHIFT 8 | ||
| 27809 | + #define ci13612_BO_MASK (0x3 << ci13612_BO_SHIFT) | ||
| 27810 | + #define ci13612_MAJ_REV_SHIFT 4 | ||
| 27811 | + #define ci13612_MAJ_REV_MASK (0xf << ci13612_MAJ_REV_SHIFT) | ||
| 27812 | + #define ci13612_MIN_REV_SHIFT 0 | ||
| 27813 | + #define ci13612_MIN_REV_MASK (0xf << ci13612_MIN_REV_SHIFT) | ||
| 27814 | +#define ci13612_HOSTIFCONFIG 0x04 | ||
| 27815 | +#define ci13612_SOFTRESET 0x08 | ||
| 27816 | + #define ci13612_SRESET (1 << 0) | ||
| 27817 | + | ||
| 27818 | +#define ci13612_PIOBURSTREADCTRL 0x0C | ||
| 27819 | + | ||
| 27820 | +#define ci13612_CHIPIRQSTATUS 0x10 | ||
| 27821 | +#define ci13612_CHIPIRQEN_SET 0x14 | ||
| 27822 | +#define ci13612_CHIPIRQEN_CLR 0x18 | ||
| 27823 | + #define ci13612_USBSPHLPWUI 0x00000080 | ||
| 27824 | + #define ci13612_USBOTGLPWUI 0x00000040 | ||
| 27825 | + #define ci13612_USBSPHI 0x00000002 | ||
| 27826 | + #define ci13612_USBOTGI 0x00000001 | ||
| 27827 | + | ||
| 27828 | +#define ci13612_CLKCTRL_SET 0x1C | ||
| 27829 | + #define ci13612_SYSCLKEN 0x00000008 | ||
| 27830 | + #define ci13612_USBSPHCLKEN 0x00000002 | ||
| 27831 | + #define ci13612_USBOTGCLKEN 0x00000001 | ||
| 27832 | + | ||
| 27833 | +#define ci13612_ASO 0x68 | ||
| 27834 | + #define ci13612_SPHPOEN 0x00000100 | ||
| 27835 | + #define ci13612_OVRCCURPUPDEN 0x00000800 | ||
| 27836 | + #define ci13612_ASO_OP (1 << 10) | ||
| 27837 | + #define ci13612_COMPARATOR 0x000004000 | ||
| 27838 | + | ||
| 27839 | +#define ci13612_USBMODE 0x1A8 | ||
| 27840 | + #define ci13612_VBPS 0x00000020 | ||
| 27841 | + #define ci13612_ES_LITTLE 0x00000004 | ||
| 27842 | + #define ci13612_CM_HOST_ONLY 0x00000003 | ||
| 27843 | + | ||
| 27844 | +/* | ||
| 27845 | + * Proper EHCI structs & defines | ||
| 27846 | + */ | ||
| 27847 | + | ||
| 27848 | +/* Magic numbers that can affect system performance */ | ||
| 27849 | +#define EHCI_TUNE_CERR 3 /* 0-3 qtd retries; 0 == don't stop */ | ||
| 27850 | +#define EHCI_TUNE_RL_HS 4 /* nak throttle; see 4.9 */ | ||
| 27851 | +#define EHCI_TUNE_RL_TT 0 | ||
| 27852 | +#define EHCI_TUNE_MULT_HS 1 /* 1-3 transactions/uframe; 4.10.3 */ | ||
| 27853 | +#define EHCI_TUNE_MULT_TT 1 | ||
| 27854 | +#define EHCI_TUNE_FLS 2 /* (small) 256 frame schedule */ | ||
| 27855 | + | ||
| 27856 | +struct ci13612_hcd; | ||
| 27857 | + | ||
| 27858 | +/* EHCI register interface, corresponds to EHCI Revision 0.95 specification */ | ||
| 27859 | + | ||
| 27860 | +/* Section 2.2 Host Controller Capability Registers */ | ||
| 27861 | +#define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */ | ||
| 27862 | +#define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */ | ||
| 27863 | +#define HCS_DEBUG_PORT(p) (((p)>>20)&0xf) /* bits 23:20, debug port? */ | ||
| 27864 | +#define HCS_INDICATOR(p) ((p)&(1 << 16)) /* true: has port indicators */ | ||
| 27865 | +#define HCS_N_CC(p) (((p)>>12)&0xf) /* bits 15:12, #companion HCs */ | ||
| 27866 | +#define HCS_N_PCC(p) (((p)>>8)&0xf) /* bits 11:8, ports per CC */ | ||
| 27867 | +#define HCS_PORTROUTED(p) ((p)&(1 << 7)) /* true: port routing */ | ||
| 27868 | +#define HCS_PPC(p) ((p)&(1 << 4)) /* true: port power control */ | ||
| 27869 | +#define HCS_N_PORTS(p) (((p)>>0)&0xf) /* bits 3:0, ports on HC */ | ||
| 27870 | +#define HCC_EXT_CAPS(p) (((p)>>8)&0xff) /* for pci extended caps */ | ||
| 27871 | +#define HCC_ISOC_CACHE(p) ((p)&(1 << 7)) /* true: can cache isoc frame */ | ||
| 27872 | +#define HCC_ISOC_THRES(p) (((p)>>4)&0x7) /* bits 6:4, uframes cached */ | ||
| 27873 | +#define HCC_CANPARK(p) ((p)&(1 << 2)) /* true: can park on async qh */ | ||
| 27874 | +#define HCC_PGM_FRAMELISTLEN(p) ((p)&(1 << 1)) /* true: periodic_size changes*/ | ||
| 27875 | +#define HCC_64BIT_ADDR(p) ((p)&(1)) /* true: can use 64-bit addr */ | ||
| 27876 | + | ||
| 27877 | + | ||
| 27878 | +struct ehci_caps { | ||
| 27879 | + /* these fields are specified as 8 and 16 bit registers, | ||
| 27880 | + * but some hosts can't perform 8 or 16 bit PCI accesses. | ||
| 27881 | + */ | ||
| 27882 | + u32 hc_capbase; | ||
| 27883 | + u32 hcs_params; /* HCSPARAMS - offset 0x4 */ | ||
| 27884 | + u32 hcc_params; /* HCCPARAMS - offset 0x8 */ | ||
| 27885 | + u8 portroute[8]; /* nibbles for routing - offset 0xC */ | ||
| 27886 | +} __attribute__ ((packed)); | ||
| 27887 | + | ||
| 27888 | +/* 23:16 is r/w intr rate, in microframes; default "8" == 1/msec */ | ||
| 27889 | +#define CMD_PARK (1<<11) /* enable "park" on async qh */ | ||
| 27890 | +#define CMD_PARK_CNT(c) (((c)>>8)&3) /* how many transfers to park for */ | ||
| 27891 | +#define CMD_LRESET (1<<7) /* partial reset (no ports, etc) */ | ||
| 27892 | +#define CMD_IAAD (1<<6) /* "doorbell" interrupt async advance */ | ||
| 27893 | +#define CMD_ASE (1<<5) /* async schedule enable */ | ||
| 27894 | +#define CMD_PSE (1<<4) /* periodic schedule enable */ | ||
| 27895 | +/* 3:2 is periodic frame list size */ | ||
| 27896 | +#define CMD_RESET (1<<1) /* reset HC not bus */ | ||
| 27897 | +#define CMD_RUN (1<<0) /* start/stop HC */ | ||
| 27898 | + | ||
| 27899 | +#define STS_ASS (1<<15) /* Async Schedule Status */ | ||
| 27900 | +#define STS_PSS (1<<14) /* Periodic Schedule Status */ | ||
| 27901 | +#define STS_RECL (1<<13) /* Reclamation */ | ||
| 27902 | +#define STS_HALT (1<<12) /* Not running (any reason) */ | ||
| 27903 | +/* some bits reserved */ | ||
| 27904 | + /* these STS_* flags are also intr_enable bits (USBINTR) */ | ||
| 27905 | +#define STS_IAA (1<<5) /* Interrupted on async advance */ | ||
| 27906 | +#define STS_FATAL (1<<4) /* such as some PCI access errors */ | ||
| 27907 | +#define STS_FLR (1<<3) /* frame list rolled over */ | ||
| 27908 | +#define STS_PCD (1<<2) /* port change detect */ | ||
| 27909 | +#define STS_ERR (1<<1) /* "error" completion (overflow, ...) */ | ||
| 27910 | +#define STS_INT (1<<0) /* "normal" completion (short, ...) */ | ||
| 27911 | + | ||
| 27912 | +#define INTR_MASK (STS_IAA | STS_FATAL | STS_PCD | STS_ERR | STS_INT) | ||
| 27913 | + | ||
| 27914 | +#define FLAG_CF (1<<0) /* true: we'll support "high speed" */ | ||
| 27915 | + | ||
| 27916 | + | ||
| 27917 | +/* 31:23 reserved */ | ||
| 27918 | +#define PORT_WKOC_E (1<<22) /* wake on overcurrent (enable) */ | ||
| 27919 | +#define PORT_WKDISC_E (1<<21) /* wake on disconnect (enable) */ | ||
| 27920 | +#define PORT_WKCONN_E (1<<20) /* wake on connect (enable) */ | ||
| 27921 | +/* 19:16 for port testing */ | ||
| 27922 | +#define PORT_LED_OFF (0<<14) | ||
| 27923 | +#define PORT_LED_AMBER (1<<14) | ||
| 27924 | +#define PORT_LED_GREEN (2<<14) | ||
| 27925 | +#define PORT_LED_MASK (3<<14) | ||
| 27926 | +#define PORT_OWNER (1<<13) /* true: companion hc owns this port */ | ||
| 27927 | +#define PORT_POWER (1<<12) /* true: has power (see PPC) */ | ||
| 27928 | +#define PORT_USB11(x) (((x)&(3<<10)) == (1<<10)) /* USB 1.1 device */ | ||
| 27929 | +/* 11:10 for detecting lowspeed devices (reset vs release ownership) */ | ||
| 27930 | +/* 9 reserved */ | ||
| 27931 | +#define PORT_RESET (1<<8) /* reset port */ | ||
| 27932 | +#define PORT_SUSPEND (1<<7) /* suspend port */ | ||
| 27933 | +#define PORT_RESUME (1<<6) /* resume it */ | ||
| 27934 | +#define PORT_OCC (1<<5) /* over current change */ | ||
| 27935 | +#define PORT_OC (1<<4) /* over current active */ | ||
| 27936 | +#define PORT_PEC (1<<3) /* port enable change */ | ||
| 27937 | +#define PORT_PE (1<<2) /* port enable */ | ||
| 27938 | +#define PORT_CSC (1<<1) /* connect status change */ | ||
| 27939 | +#define PORT_CONNECT (1<<0) /* device connected */ | ||
| 27940 | +#define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC) | ||
| 27941 | + | ||
| 27942 | + | ||
| 27943 | +/* Section 2.3 Host Controller Operational Registers */ | ||
| 27944 | +struct ehci_regs { | ||
| 27945 | + /* USBCMD: offset 0x00 */ | ||
| 27946 | + u32 command; | ||
| 27947 | + /* USBSTS: offset 0x04 */ | ||
| 27948 | + u32 status; | ||
| 27949 | + /* USBINTR: offset 0x08 */ | ||
| 27950 | + u32 intr_enable; | ||
| 27951 | + /* FRINDEX: offset 0x0C */ | ||
| 27952 | + u32 frame_index; /* current microframe number */ | ||
| 27953 | + /* CTRLDSSEGMENT: offset 0x10 */ | ||
| 27954 | + u32 segment; /* address bits 63:32 if needed */ | ||
| 27955 | + /* PERIODICLISTBASE: offset 0x14 */ | ||
| 27956 | + u32 frame_list; /* points to periodic list */ | ||
| 27957 | + /* ASYNCLISTADDR: offset 0x18 */ | ||
| 27958 | + u32 async_next; /* address of next async queue head */ | ||
| 27959 | + u32 reserved[9]; | ||
| 27960 | + /* CONFIGFLAG: offset 0x40 */ | ||
| 27961 | + u32 configured_flag; | ||
| 27962 | + /* PORTSC: offset 0x44 */ | ||
| 27963 | + u32 port_status[8]; /* up to N_PORTS */ | ||
| 27964 | + | ||
| 27965 | +} __attribute__ ((packed)); | ||
| 27966 | + | ||
| 27967 | +/* Appendix C, Debug port ... intended for use with special "debug devices" | ||
| 27968 | + * that can help if there's no serial console. (nonstandard enumeration.) | ||
| 27969 | + */ | ||
| 27970 | +struct ehci_dbg_port { | ||
| 27971 | + u32 control; | ||
| 27972 | +#define DBGP_OWNER (1<<30) | ||
| 27973 | +#define DBGP_ENABLED (1<<28) | ||
| 27974 | +#define DBGP_DONE (1<<16) | ||
| 27975 | +#define DBGP_INUSE (1<<10) | ||
| 27976 | +#define DBGP_ERRCODE(x) (((x)>>7)&0x07) | ||
| 27977 | +# define DBGP_ERR_BAD 1 | ||
| 27978 | +# define DBGP_ERR_SIGNAL 2 | ||
| 27979 | +#define DBGP_ERROR (1<<6) | ||
| 27980 | +#define DBGP_GO (1<<5) | ||
| 27981 | +#define DBGP_OUT (1<<4) | ||
| 27982 | +#define DBGP_LEN(x) (((x)>>0)&0x0f) | ||
| 27983 | + u32 pids; | ||
| 27984 | +#define DBGP_PID_GET(x) (((x)>>16)&0xff) | ||
| 27985 | +#define DBGP_PID_SET(data, tok) (((data)<<8)|(tok)) | ||
| 27986 | + u32 data03; | ||
| 27987 | + u32 data47; | ||
| 27988 | + u32 address; | ||
| 27989 | +#define DBGP_EPADDR(dev, ep) (((dev)<<8)|(ep)) | ||
| 27990 | +} __attribute__ ((packed)); | ||
| 27991 | + | ||
| 27992 | + | ||
| 27993 | +#define QTD_NEXT(dma) cpu_to_le32((u32)dma) | ||
| 27994 | + | ||
| 27995 | +/* | ||
| 27996 | + * EHCI Specification 0.95 Section 3.5 | ||
| 27997 | + * QTD: describe data transfer components (buffer, direction, ...) | ||
| 27998 | + * See Fig 3-6 "Queue Element Transfer Descriptor Block Diagram". | ||
| 27999 | + * | ||
| 28000 | + * These are associated only with "QH" (Queue Head) structures, | ||
| 28001 | + * used with control, bulk, and interrupt transfers. | ||
| 28002 | + */ | ||
| 28003 | +struct ehci_qtd { | ||
| 28004 | + /* first part defined by EHCI spec */ | ||
| 28005 | + __le32 hw_next; /* see EHCI 3.5.1 */ | ||
| 28006 | + __le32 hw_alt_next; /* see EHCI 3.5.2 */ | ||
| 28007 | + __le32 hw_token; /* see EHCI 3.5.3 */ | ||
| 28008 | +#define QTD_TOGGLE (1 << 31) /* data toggle */ | ||
| 28009 | +#define QTD_LENGTH(tok) (((tok)>>16) & 0x7fff) | ||
| 28010 | +#define QTD_IOC (1 << 15) /* interrupt on complete */ | ||
| 28011 | +#define QTD_CERR(tok) (((tok)>>10) & 0x3) | ||
| 28012 | +#define QTD_PID(tok) (((tok)>>8) & 0x3) | ||
| 28013 | +#define QTD_STS_ACTIVE (1 << 7) /* HC may execute this */ | ||
| 28014 | +#define QTD_STS_HALT (1 << 6) /* halted on error */ | ||
| 28015 | +#define QTD_STS_DBE (1 << 5) /* data buffer error (in HC) */ | ||
| 28016 | +#define QTD_STS_BABBLE (1 << 4) /* device was babbling (qtd halted) */ | ||
| 28017 | +#define QTD_STS_XACT (1 << 3) /* device gave illegal response */ | ||
| 28018 | +#define QTD_STS_MMF (1 << 2) /* incomplete split transaction */ | ||
| 28019 | +#define QTD_STS_STS (1 << 1) /* split transaction state */ | ||
| 28020 | +#define QTD_STS_PING (1 << 0) /* issue PING? */ | ||
| 28021 | + __le32 hw_buf[5]; /* see EHCI 3.5.4 */ | ||
| 28022 | + __le32 hw_buf_hi[5]; /* Appendix B */ | ||
| 28023 | + | ||
| 28024 | + /* the rest is HCD-private */ | ||
| 28025 | + dma_addr_t qtd_dma; /* qtd address */ | ||
| 28026 | + struct list_head qtd_list; /* sw qtd list */ | ||
| 28027 | + struct urb *urb; /* qtd's urb */ | ||
| 28028 | + size_t length; /* length of buffer */ | ||
| 28029 | + | ||
| 28030 | + u32 qtd_buffer_len; | ||
| 28031 | + void *buffer; | ||
| 28032 | + dma_addr_t buffer_dma; | ||
| 28033 | + void *transfer_buffer; | ||
| 28034 | + void *transfer_dma; | ||
| 28035 | +} __attribute__ ((aligned(32))); | ||
| 28036 | + | ||
| 28037 | +/* mask NakCnt+T in qh->hw_alt_next */ | ||
| 28038 | +#define QTD_MASK __constant_cpu_to_le32 (~0x1f) | ||
| 28039 | + | ||
| 28040 | +#define IS_SHORT_READ(token) (QTD_LENGTH(token) != 0 && QTD_PID(token) == 1) | ||
| 28041 | + | ||
| 28042 | +/* Type tag from {qh, itd, sitd, fstn}->hw_next */ | ||
| 28043 | +#define Q_NEXT_TYPE(dma) ((dma) & __constant_cpu_to_le32 (3 << 1)) | ||
| 28044 | + | ||
| 28045 | +/* values for that type tag */ | ||
| 28046 | +#define Q_TYPE_QH __constant_cpu_to_le32 (1 << 1) | ||
| 28047 | + | ||
| 28048 | +/* next async queue entry, or pointer to interrupt/periodic QH */ | ||
| 28049 | +#define QH_NEXT(dma) (cpu_to_le32(((u32)dma)&~0x01f)|Q_TYPE_QH) | ||
| 28050 | + | ||
| 28051 | +/* for periodic/async schedules and qtd lists, mark end of list */ | ||
| 28052 | +#define EHCI_LIST_END __constant_cpu_to_le32(1) /* "null pointer" to hw */ | ||
| 28053 | + | ||
| 28054 | +/* | ||
| 28055 | + * Entries in periodic shadow table are pointers to one of four kinds | ||
| 28056 | + * of data structure. That's dictated by the hardware; a type tag is | ||
| 28057 | + * encoded in the low bits of the hardware's periodic schedule. Use | ||
| 28058 | + * Q_NEXT_TYPE to get the tag. | ||
| 28059 | + * | ||
| 28060 | + * For entries in the async schedule, the type tag always says "qh". | ||
| 28061 | + */ | ||
| 28062 | +union ehci_shadow { | ||
| 28063 | + struct ehci_qh *qh; /* Q_TYPE_QH */ | ||
| 28064 | + __le32 *hw_next; /* (all types) */ | ||
| 28065 | + void *ptr; | ||
| 28066 | +}; | ||
| 28067 | + | ||
| 28068 | +/* | ||
| 28069 | + * EHCI Specification 0.95 Section 3.6 | ||
| 28070 | + * QH: describes control/bulk/interrupt endpoints | ||
| 28071 | + * See Fig 3-7 "Queue Head Structure Layout". | ||
| 28072 | + * | ||
| 28073 | + * These appear in both the async and (for interrupt) periodic schedules. | ||
| 28074 | + */ | ||
| 28075 | + | ||
| 28076 | +struct ehci_qh { | ||
| 28077 | + /* first part defined by EHCI spec */ | ||
| 28078 | + __le32 hw_next; /* see EHCI 3.6.1 */ | ||
| 28079 | + __le32 hw_info1; /* see EHCI 3.6.2 */ | ||
| 28080 | +#define QH_HEAD 0x00008000 | ||
| 28081 | + __le32 hw_info2; /* see EHCI 3.6.2 */ | ||
| 28082 | +#define QH_SMASK 0x000000ff | ||
| 28083 | +#define QH_CMASK 0x0000ff00 | ||
| 28084 | +#define QH_HUBADDR 0x007f0000 | ||
| 28085 | +#define QH_HUBPORT 0x3f800000 | ||
| 28086 | +#define QH_MULT 0xc0000000 | ||
| 28087 | + __le32 hw_current; /* qtd list - see EHCI 3.6.4 */ | ||
| 28088 | + | ||
| 28089 | + /* qtd overlay (hardware parts of a struct ehci_qtd) */ | ||
| 28090 | + __le32 hw_qtd_next; | ||
| 28091 | + __le32 hw_alt_next; | ||
| 28092 | + __le32 hw_token; | ||
| 28093 | + __le32 hw_buf[5]; | ||
| 28094 | + __le32 hw_buf_hi[5]; | ||
| 28095 | + | ||
| 28096 | + /* the rest is HCD-private */ | ||
| 28097 | + dma_addr_t qh_dma; /* address of qh */ | ||
| 28098 | + union ehci_shadow qh_next; /* ptr to qh; or periodic */ | ||
| 28099 | + struct list_head qtd_list; /* sw qtd list */ | ||
| 28100 | + struct ehci_qtd *dummy; | ||
| 28101 | + struct ehci_qh *reclaim; /* next to reclaim */ | ||
| 28102 | + | ||
| 28103 | + struct ci13612_hcd *ci13612; | ||
| 28104 | + struct kref kref; | ||
| 28105 | + unsigned stamp; | ||
| 28106 | + | ||
| 28107 | + u8 qh_state; | ||
| 28108 | +#define QH_STATE_LINKED 1 /* HC sees this */ | ||
| 28109 | +#define QH_STATE_UNLINK 2 /* HC may still see this */ | ||
| 28110 | +#define QH_STATE_IDLE 3 /* HC doesn't see this */ | ||
| 28111 | +#define QH_STATE_UNLINK_WAIT 4 /* LINKED and on reclaim q */ | ||
| 28112 | +#define QH_STATE_COMPLETING 5 /* don't touch token.HALT */ | ||
| 28113 | + | ||
| 28114 | + /* periodic schedule info */ | ||
| 28115 | + u8 usecs; /* intr bandwidth */ | ||
| 28116 | + u8 gap_uf; /* uframes split/csplit gap */ | ||
| 28117 | + u8 c_usecs; /* ... split completion bw */ | ||
| 28118 | + u16 tt_usecs; /* tt downstream bandwidth */ | ||
| 28119 | + unsigned short period; /* polling interval */ | ||
| 28120 | + unsigned short start; /* where polling starts */ | ||
| 28121 | +#define NO_FRAME ((unsigned short)~0) /* pick new start */ | ||
| 28122 | + struct usb_device *dev; /* access to TT */ | ||
| 28123 | +} __attribute__ ((aligned(32))); | ||
| 28124 | + | ||
| 28125 | +/* | ||
| 28126 | + * Proper ci13612 structs | ||
| 28127 | + */ | ||
| 28128 | + | ||
| 28129 | +#define ci13612_OTG_CORE_OFFSET 0x0 | ||
| 28130 | +#define ci13612_OTG_CAP_OFFSET (ci13612_OTG_CORE_OFFSET + 0x100) | ||
| 28131 | +#define ci13612_SPH_CORE_OFFSET 0x0 | ||
| 28132 | +#define ci13612_SPH_CAP_OFFSET (ci13612_SPH_CORE_OFFSET + 0x100) | ||
| 28133 | + | ||
| 28134 | +#define ci13612_OTG_MEM 0xE000 | ||
| 28135 | +#define ci13612_SPH_MEM 0x16000 | ||
| 28136 | + | ||
| 28137 | +/* Only how many elements & element structure are specifies here. */ | ||
| 28138 | +/* 2 host controllers are enabled - total size <= 28 kbytes */ | ||
| 28139 | +#define DEFAULT_I_TDPS 1024 | ||
| 28140 | +#define QHEAD_NUM 8 | ||
| 28141 | +#define QTD_NUM 16 | ||
| 28142 | +#define SITD_NUM 16 | ||
| 28143 | +#define MURB_NUM 8 | ||
| 28144 | + | ||
| 28145 | +#define BUFFER_NUM 8 | ||
| 28146 | +#define BUFFER_SIZE 512 | ||
| 28147 | + | ||
| 28148 | +struct ci13612_info { | ||
| 28149 | + struct usb_hcd *hcd[2]; | ||
| 28150 | +}; | ||
| 28151 | + | ||
| 28152 | +struct ci13612_buf { | ||
| 28153 | + u8 buffer[BUFFER_SIZE]; | ||
| 28154 | +} __attribute__ ((aligned(BUFFER_SIZE))); | ||
| 28155 | + | ||
| 28156 | +struct ci13612_onchip_mem { | ||
| 28157 | + struct ci13612_buf db_pool[BUFFER_NUM]; | ||
| 28158 | + | ||
| 28159 | + u32 frame_list[DEFAULT_I_TDPS]; | ||
| 28160 | + struct ehci_qh qh_pool[QHEAD_NUM]; | ||
| 28161 | + struct ehci_qtd qtd_pool[QTD_NUM]; | ||
| 28162 | +} __attribute__ ((aligned(4 << 10))); | ||
| 28163 | + | ||
| 28164 | +#define EHCI_MAX_ROOT_PORTS 15 /* see HCS_N_PORTS */ | ||
| 28165 | + | ||
| 28166 | +struct ci13612_murb { | ||
| 28167 | + struct urb urb; | ||
| 28168 | + struct urb *main; | ||
| 28169 | + u8 last; | ||
| 28170 | +}; | ||
| 28171 | + | ||
| 28172 | +struct ci13612_hcd { /* one per controller */ | ||
| 28173 | + unsigned int is_otg:1; | ||
| 28174 | + | ||
| 28175 | + u8 qh_used[QHEAD_NUM]; | ||
| 28176 | + u8 qtd_used[QTD_NUM]; | ||
| 28177 | + u8 db_used[BUFFER_NUM]; | ||
| 28178 | + u8 murb_used[MURB_NUM]; | ||
| 28179 | + | ||
| 28180 | + struct ci13612_onchip_mem __iomem *mem; | ||
| 28181 | + spinlock_t mem_lock; | ||
| 28182 | + | ||
| 28183 | + struct timer_list urb_timer; | ||
| 28184 | + | ||
| 28185 | + struct ehci_caps __iomem *caps; | ||
| 28186 | + struct ehci_regs __iomem *regs; | ||
| 28187 | + | ||
| 28188 | + __u32 hcs_params; /* cached register copy */ | ||
| 28189 | + spinlock_t lock; | ||
| 28190 | + | ||
| 28191 | + u32 FRAME_LIST_SIZE; | ||
| 28192 | + u8 UFRAME_COUNT; | ||
| 28193 | + u8 reset_in_progress; | ||
| 28194 | + u32 SPEED; | ||
| 28195 | + u32 PORT_NUM; | ||
| 28196 | + | ||
| 28197 | + /* async schedule support */ | ||
| 28198 | + struct ehci_qh *async; | ||
| 28199 | + struct ehci_qh *reclaim; | ||
| 28200 | + unsigned reclaim_ready:1; | ||
| 28201 | + unsigned scanning:1; | ||
| 28202 | + | ||
| 28203 | + /* periodic schedule support */ | ||
| 28204 | + unsigned periodic_size; | ||
| 28205 | + __le32 *periodic; /* hw periodic table */ | ||
| 28206 | + dma_addr_t periodic_dma; | ||
| 28207 | + unsigned i_thresh; /* uframes HC might cache */ | ||
| 28208 | + | ||
| 28209 | + union ehci_shadow *pshadow; /* mirror hw periodic table */ | ||
| 28210 | + int next_uframe; /* scan periodic, start here */ | ||
| 28211 | + unsigned periodic_sched; /* periodic activity count */ | ||
| 28212 | + | ||
| 28213 | + /* per root hub port */ | ||
| 28214 | + unsigned long reset_done[EHCI_MAX_ROOT_PORTS]; | ||
| 28215 | + /* bit vectors (one bit per port) */ | ||
| 28216 | + unsigned long bus_suspended; /* which ports were | ||
| 28217 | + * already suspended at the | ||
| 28218 | + * start of a bus suspend | ||
| 28219 | + */ | ||
| 28220 | + unsigned long companion_ports;/* which ports are dedicated | ||
| 28221 | + * to the companion controller | ||
| 28222 | + */ | ||
| 28223 | + | ||
| 28224 | + struct timer_list watchdog; | ||
| 28225 | + unsigned long actions; | ||
| 28226 | + unsigned stamp; | ||
| 28227 | + unsigned long next_statechange; | ||
| 28228 | + u32 command; | ||
| 28229 | + | ||
| 28230 | + /* SILICON QUIRKS */ | ||
| 28231 | + struct list_head urb_list; /* this is the head to urb | ||
| 28232 | + * queue that didn't get enough | ||
| 28233 | + * resources | ||
| 28234 | + */ | ||
| 28235 | + struct ci13612_murb *murb_pool; /* murb per split big urb */ | ||
| 28236 | + unsigned urb_len; | ||
| 28237 | + | ||
| 28238 | + u8 sbrn; /* packed release number */ | ||
| 28239 | +}; | ||
| 28240 | + | ||
| 28241 | +#define EHCI_IAA_JIFFIES (HZ/100) /* arbitrary; ~10 msec */ | ||
| 28242 | +#define EHCI_IO_JIFFIES (HZ/10) /* io watchdog > irq_thresh */ | ||
| 28243 | +#define EHCI_ASYNC_JIFFIES (HZ/20) /* async idle timeout */ | ||
| 28244 | +#define EHCI_SHRINK_JIFFIES (HZ/200) /* async qh unlink delay */ | ||
| 28245 | + | ||
| 28246 | +enum ehci_timer_action { | ||
| 28247 | + TIMER_IO_WATCHDOG, | ||
| 28248 | + TIMER_IAA_WATCHDOG, | ||
| 28249 | + TIMER_ASYNC_SHRINK, | ||
| 28250 | + TIMER_ASYNC_OFF, | ||
| 28251 | +}; | ||
| 28252 | + | ||
| 28253 | + | ||
| 28254 | +/* Host specific */ | ||
| 28255 | +#define USB_DEBOUNCE_DELAY (101) | ||
| 28256 | +#define USB_RESET_RECOVERY_DELAY (11) | ||
| 28257 | +#define USB_RESET_DELAY (60) | ||
| 28258 | +#define USB_RESUME_RECOVERY_DELAY (100) | ||
| 28259 | + | ||
| 28260 | + | ||
| 28261 | +/* VUSBHS specific defines */ | ||
| 28262 | +#define VUSBHS_MAX_PORTS (8) | ||
| 28263 | +#define EHCI_CAP_LEN_MASK (0x000000FF) | ||
| 28264 | +#define EHCI_DATA_STRUCTURE_BASE_ADDRESS (0) | ||
| 28265 | + | ||
| 28266 | +/* Command Register Bit Masks */ | ||
| 28267 | +#define EHCI_CMD_RUN_STOP (0x00000001) | ||
| 28268 | +#define EHCI_CMD_CTRL_RESET (0x00000002) | ||
| 28269 | +#define EHCI_CMD_SETUP_TRIPWIRE_SET (0x00002000) | ||
| 28270 | +#define EHCI_CMD_SETUP_TRIPWIRE_CLEAR ~EHCI_CMD_SETUP_TRIPWIRE_SET | ||
| 28271 | + | ||
| 28272 | +/* Bit 14 is the tripwire bit not bit 12 as some versions of the docs state. */ | ||
| 28273 | +#define EHCI_CMD_ATDTW_TRIPWIRE_SET (0x00004000) | ||
| 28274 | +#define EHCI_CMD_ATDTW_TRIPWIRE_CLEAR ~EHCI_CMD_ATDTW_TRIPWIRE_SET | ||
| 28275 | + | ||
| 28276 | + /*bit 15,3,2 are for frame list size */ | ||
| 28277 | + #define EHCI_CMD_FRAME_SIZE_1024 (0x00000000) /* 000 */ | ||
| 28278 | + #define EHCI_CMD_FRAME_SIZE_512 (0x00000004) /* 001 */ | ||
| 28279 | + #define EHCI_CMD_FRAME_SIZE_256 (0x00000008) /* 010 */ | ||
| 28280 | + #define EHCI_CMD_FRAME_SIZE_128 (0x0000000C) /* 011 */ | ||
| 28281 | + #define EHCI_CMD_FRAME_SIZE_64 (0x00008000) /* 100 */ | ||
| 28282 | + #define EHCI_CMD_FRAME_SIZE_32 (0x00008004) /* 101 */ | ||
| 28283 | + #define EHCI_CMD_FRAME_SIZE_16 (0x00008008) /* 110 */ | ||
| 28284 | + #define EHCI_CMD_FRAME_SIZE_8 (0x0000800C) /* 111 */ | ||
| 28285 | + | ||
| 28286 | + | ||
| 28287 | +/* Hardware Rev 4.0 related change */ | ||
| 28288 | +#ifdef STREAM_ENABLE | ||
| 28289 | + /* Mode Register Bit Masks */ | ||
| 28290 | + #define VUSBHS_MODE_CTRL_MODE_IDLE (0x00000010) | ||
| 28291 | + #define VUSBHS_MODE_CTRL_MODE_DEV (0x00000012) | ||
| 28292 | + #define VUSBHS_MODE_CTRL_MODE_HOST (0x00000013) | ||
| 28293 | + #define VUSBHS_MODE_BIG_ENDIAN (0x00000014) | ||
| 28294 | + #define VUSBHS_MODE_SETUP_LOCK_DISABLE (0x00000008) | ||
| 28295 | + | ||
| 28296 | +#else | ||
| 28297 | + /* Mode Register Bit Masks */ | ||
| 28298 | + #define VUSBHS_MODE_CTRL_MODE_IDLE (0x00000000) | ||
| 28299 | + #define VUSBHS_MODE_CTRL_MODE_DEV (0x00000002) | ||
| 28300 | + #define VUSBHS_MODE_CTRL_MODE_HOST (0x00000003) | ||
| 28301 | + #define VUSBHS_MODE_BIG_ENDIAN (0x00000004) | ||
| 28302 | + #define VUSBHS_MODE_SETUP_LOCK_DISABLE (0x00000008) | ||
| 28303 | +#endif | ||
| 28304 | + | ||
| 28305 | +/* Interrupt Enable Register Bit Masks */ | ||
| 28306 | +#define EHCI_INTR_INT_EN (0x00000001) | ||
| 28307 | +#define EHCI_INTR_ERR_INT_EN (0x00000002) | ||
| 28308 | +#define EHCI_INTR_PORT_CHANGE_DETECT_EN (0x00000004) | ||
| 28309 | + | ||
| 28310 | +#define EHCI_INTR_ASYNC_ADV_AAE (0x00000020) | ||
| 28311 | + #define EHCI_INTR_ASYNC_ADV_AAE_ENABLE (0x00000020) /* | with this to enable */ | ||
| 28312 | + #define EHCI_INTR_ASYNC_ADV_AAE_DISABLE (0xFFFFFFDF) /* & with this to disable */ | ||
| 28313 | + | ||
| 28314 | +#define EHCI_INTR_RESET_EN (0x00000040) | ||
| 28315 | +#define EHCI_INTR_SOF_UFRAME_EN (0x00000080) | ||
| 28316 | +#define EHCI_INTR_DEVICE_SUSPEND (0x00000100) | ||
| 28317 | + | ||
| 28318 | +/* Interrupt Status Register Masks */ | ||
| 28319 | +#define EHCI_STS_SOF (0x00000080) | ||
| 28320 | +#define EHCI_STS_RESET (0x00000040) | ||
| 28321 | +#define EHCI_STS_PORT_CHANGE (0x00000004) | ||
| 28322 | +#define EHCI_STS_ERR (0x00000002) | ||
| 28323 | +#define EHCI_STS_INT (0x00000001) | ||
| 28324 | +#define EHCI_STS_SUSPEND (0x00000100) | ||
| 28325 | +#define EHCI_STS_HC_HALTED (0x00001000) | ||
| 28326 | + | ||
| 28327 | +/* Endpoint Queue Head Bit Masks */ | ||
| 28328 | +#define VUSB_EP_QUEUE_HEAD_IOS (0x00008000) | ||
| 28329 | +#define VUSB_EP_QUEUE_HEAD_IOC (0x00008000) | ||
| 28330 | +#define VUSB_EP_QUEUE_HEAD_INT (0x00000100) | ||
| 28331 | +#define VUSB_EP_QUEUE_HEAD_NEXT_TERMINATE (0x00000001) | ||
| 28332 | +#define VUSB_EP_QUEUE_HEAD_MAX_PKT_LEN_POS (16) | ||
| 28333 | +#define VUSB_EP_QUEUE_HEAD_ZERO_LEN_TER_SEL (0x20000000) | ||
| 28334 | +#define VUSB_EP_QUEUE_HEAD_MULT_POS (30) | ||
| 28335 | +#define VUSB_EP_MAX_LENGTH_TRANSFER (0x4000) | ||
| 28336 | + | ||
| 28337 | +#define VUSB_EP_QUEUE_HEAD_STATUS_ACTIVE (0x00000080) | ||
| 28338 | + | ||
| 28339 | +#define VUSBHS_TD_NEXT_TERMINATE (0x00000001) | ||
| 28340 | +#define VUSBHS_TD_IOC (0x00008000) | ||
| 28341 | +#define VUSBHS_TD_STATUS_ACTIVE (0x00000080) | ||
| 28342 | +#define VUSBHS_TD_STATUS_HALTED (0x00000040) | ||
| 28343 | +#define VUSBHS_TD_RESERVED_FIELDS (0x00007F00) | ||
| 28344 | +#define VUSBHS_TD_ERROR_MASK (0x68) | ||
| 28345 | +#define VUSBHS_TD_ADDR_MASK (0xFFFFFFE0) | ||
| 28346 | +#define VUSBHS_TD_LENGTH_BIT_POS (16) | ||
| 28347 | + | ||
| 28348 | +#define EHCI_EPCTRL_TX_DATA_TOGGLE_RST (0x00400000) | ||
| 28349 | +#define EHCI_EPCTRL_TX_EP_STALL (0x00010000) | ||
| 28350 | +#define EHCI_EPCTRL_RX_EP_STALL (0x00000001) | ||
| 28351 | +#define EHCI_EPCTRL_RX_DATA_TOGGLE_RST (0x00000040) | ||
| 28352 | +#define EHCI_EPCTRL_RX_ENABLE (0x00000080) | ||
| 28353 | +#define EHCI_EPCTRL_TX_ENABLE (0x00800000) | ||
| 28354 | +#define EHCI_EPCTRL_CONTROL (0x00000000) | ||
| 28355 | +#define EHCI_EPCTRL_ISOCHRONOUS (0x00040000) | ||
| 28356 | +#define EHCI_EPCTRL_BULK (0x00080000) | ||
| 28357 | +#define EHCI_EPCTRL_INT (0x000C0000) | ||
| 28358 | +#define EHCI_EPCTRL_TX_TYPE (0x000C0000) | ||
| 28359 | +#define EHCI_EPCTRL_RX_TYPE (0x0000000C) | ||
| 28360 | +#define EHCI_EPCTRL_DATA_TOGGLE_INHIBIT (0x00000020) | ||
| 28361 | +#define EHCI_EPCTRL_TX_EP_TYPE_SHIFT (18) | ||
| 28362 | +#define EHCI_EPCTRL_RX_EP_TYPE_SHIFT (2) | ||
| 28363 | + | ||
| 28364 | +#define EHCI_PORTSCX_FORCE_FULL_SPEED_CONNECT (0x01000000) // set bit 24 (PFSC) in PORTSCX register | ||
| 28365 | +#define EHCI_PORTSCX_PHY_CLOCK_DISABLE (0x00800000) // set bit 23 (PHCD) in PORTSCX register | ||
| 28366 | +#define EHCI_PORTSCX_PORT_TEST_MODE_DISABLE_MASK (0x000F0000) | ||
| 28367 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_J_STATE (0x00010000) | ||
| 28368 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_K_STATE (0x00020000) | ||
| 28369 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_SE0_NAK (0x00030000) | ||
| 28370 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_PACKET (0x00040000) | ||
| 28371 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_FORCE_HS (0x00050000) | ||
| 28372 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_FORCE_FS (0x00060000) | ||
| 28373 | +#define EHCI_PORTSCX_PORT_TEST_CONTROL_FORCE_LS (0x00070000) | ||
| 28374 | +#define EHCI_PORTSCX_PORT_POWER (0x00001000) | ||
| 28375 | +#define EHCI_PORTSCX_LINE_STATUS_BITS (0x00000C00) | ||
| 28376 | +#define EHCI_PORTSCX_LINE_STATUS_SE0 (0x00000000) | ||
| 28377 | +#define EHCI_PORTSCX_LINE_STATUS_KSTATE (0x00000400) | ||
| 28378 | +#define EHCI_PORTSCX_LINE_STATUS_JSTATE (0x00000800) | ||
| 28379 | +#define EHCI_PORTSCX_PORT_HIGH_SPEED (0x00000200) | ||
| 28380 | +#define EHCI_PORTSCX_PORT_RESET (0x00000100) | ||
| 28381 | +#define EHCI_PORTSCX_PORT_SUSPEND (0x00000080) | ||
| 28382 | +#define EHCI_PORTSCX_PORT_FORCE_RESUME (0x00000040) | ||
| 28383 | +#define EHCI_PORTSCX_PORT_EN_DIS_CHANGE (0x00000008) | ||
| 28384 | +#define EHCI_PORTSCX_PORT_ENABLE (0x00000004) | ||
| 28385 | +#define EHCI_PORTSCX_CONNECT_STATUS_CHANGE (0x00000002) | ||
| 28386 | +#define EHCI_PORTSCX_CURRENT_CONNECT_STATUS (0x00000001) | ||
| 28387 | + | ||
| 28388 | +#define VUSBHS_PORTSCX_PORT_SPEED_FULL (0x00000000) | ||
| 28389 | +#define VUSBHS_PORTSCX_PORT_SPEED_LOW (0x04000000) | ||
| 28390 | +#define VUSBHS_PORTSCX_PORT_SPEED_HIGH (0x08000000) | ||
| 28391 | +#define VUSBHS_SPEED_MASK (0x0C000000) | ||
| 28392 | +#define VUSBHS_SPEED_BIT_POS (26) | ||
| 28393 | + | ||
| 28394 | +#define EHCI_PORTSCX_W1C_BITS (0x2A) | ||
| 28395 | +#define VUSB_EP_QH_PACKET_SIZE (0x3FFF0000) | ||
| 28396 | +#define VUSB_EP_TR_PACKET_SIZE (0x7FFF0000) | ||
| 28397 | + | ||
| 28398 | +#define VUSBHS_FRINDEX_MS_MASK (0xFFFFFFF8) | ||
| 28399 | +#define VUSBHS_ADDRESS_BIT_SHIFT (25) | ||
| 28400 | + | ||
| 28401 | +#define VUSB20_MAX_ENDPTS_SUPPORTED (0x1F) | ||
| 28402 | +#define EHCI_HCC_PARAMS_64_BIT_ADDR_CAP (0x01) | ||
| 28403 | +#define EHCI_HCC_PARAMS_PGM_FRM_LIST_FLAG (0x02) | ||
| 28404 | +#define EHCI_HCC_PARAMS_ASYNC_PARK_CAP (0x04) | ||
| 28405 | +#define EHCI_HCC_PARAMS_ISOCH_SCHED_THRESHOLD (0xF0) | ||
| 28406 | +#define EHCI_HCC_PARAMS_ISOCH_FRAME_CACHED (0x80) | ||
| 28407 | + | ||
| 28408 | +#define VUSB20_HCS_PARAMS_PORT_POWER_CONTROL_FLAG (0x10) | ||
| 28409 | + | ||
| 28410 | +#define VUSB20_HOST_INTR_EN_BITS (0x37) | ||
| 28411 | + | ||
| 28412 | +#define VUSB20_DEFAULT_PERIODIC_FRAME_LIST_SIZE (1024) | ||
| 28413 | +#define VUSB20_NEW_PERIODIC_FRAME_LIST_BITS (2) | ||
| 28414 | +#define EHCI_FRAME_LIST_ELEMENT_POINTER_T_BIT (0x01) | ||
| 28415 | +#define EHCI_ITD_T_BIT (0x01) | ||
| 28416 | +#define EHCI_SITD_T_BIT (0x01) | ||
| 28417 | +#define EHCI_QUEUE_HEAD_POINTER_T_BIT (0x01) | ||
| 28418 | + | ||
| 28419 | + | ||
| 28420 | +/************************************************************ | ||
| 28421 | +Split transatcions specific defines | ||
| 28422 | +************************************************************/ | ||
| 28423 | +#define EHCI_START_SPLIT_MAX_BUDGET 188 | ||
| 28424 | + | ||
| 28425 | +#define EHCI_ELEMENT_TYPE_ITD (0x00) | ||
| 28426 | +#define EHCI_ELEMENT_TYPE_QH (0x02) | ||
| 28427 | +#define EHCI_ELEMENT_TYPE_SITD (0x04) | ||
| 28428 | +#define EHCI_ELEMENT_TYPE_FSTN (0x06) | ||
| 28429 | +#define EHCI_ELEMENT_TYPE_MASK (0x06) | ||
| 28430 | + | ||
| 28431 | +#define EHCI_FRAME_LIST_ELEMENT_TYPE_ITD (0x00) | ||
| 28432 | +#define EHCI_FRAME_LIST_ELEMENT_TYPE_QH (0x01) | ||
| 28433 | +#define EHCI_FRAME_LIST_ELEMENT_TYPE_SITD (0x02) | ||
| 28434 | +#define EHCI_FRAME_LIST_ELEMENT_TYPE_FSTN (0x03) | ||
| 28435 | +#define EHCI_FRAME_LIST_ELEMENT_TYPE_BIT_POS (1) | ||
| 28436 | + | ||
| 28437 | + | ||
| 28438 | +#define EHCI_QH_ELEMENT_TYPE_ITD (0x00) | ||
| 28439 | +#define EHCI_QH_ELEMENT_TYPE_QH (0x01) | ||
| 28440 | +#define EHCI_QH_ELEMENT_TYPE_SITD (0x02) | ||
| 28441 | +#define EHCI_QH_ELEMENT_TYPE_FSTN (0x03) | ||
| 28442 | + | ||
| 28443 | +#define EHCI_QH_ELEMENT_TYPE_BIT_POS (1) | ||
| 28444 | + | ||
| 28445 | +#define EHCI_QTD_PID_OUT_TOKEN (0x000) | ||
| 28446 | +#define EHCI_QTD_PID_IN_TOKEN (0x100) | ||
| 28447 | +#define EHCI_QTD_PID_SETUP_TOKEN (0x200) | ||
| 28448 | +#define EHCI_QTD_IOC (0x8000) | ||
| 28449 | +#define EHCI_QTD_STATUS_ACTIVE (0x0080) | ||
| 28450 | +#define EHCI_QTD_STATUS_HALTED (0x0040) | ||
| 28451 | +#define EHCI_QTD_PID_SETUP (0x0200) | ||
| 28452 | +#define EHCI_QTD_PID_IN (0x0100) | ||
| 28453 | +#define EHCI_QTD_PID_OUT (0x0000) | ||
| 28454 | +#define EHCI_QTD_LENGTH_BIT_POS (16) | ||
| 28455 | +#define EHCI_QTD_DATA_TOGGLE (0x80000000) | ||
| 28456 | +#define EHCI_QTD_DATA_TOGGLE_BIT_POS (31) | ||
| 28457 | +#define EHCI_QTD_LENGTH_BIT_MASK (0x7FFF0000) | ||
| 28458 | +#define EHCI_QTD_ERROR_BITS_MASK (0x0000003E) | ||
| 28459 | +#define EHCI_QTD_DEFAULT_CERR_VALUE (0xC00) | ||
| 28460 | + | ||
| 28461 | +#define EHCI_SETUP_TOKEN (2) | ||
| 28462 | +#define EHCI_OUT_TOKEN (0) | ||
| 28463 | +#define EHCI_IN_TOKEN (1) | ||
| 28464 | + | ||
| 28465 | +#define EHCI_QTD_T_BIT (0x01) | ||
| 28466 | + | ||
| 28467 | +#define EHCI_QH_ENDPOINT_SPEED_FULL (0x00) | ||
| 28468 | +#define EHCI_QH_ENDPOINT_SPEED_LOW (0x01) | ||
| 28469 | +#define EHCI_QH_ENDPOINT_SPEED_HIGH (0x02) | ||
| 28470 | +#define EHCI_QH_ENDPOINT_SPEED_RESERVED (0x03) | ||
| 28471 | + | ||
| 28472 | +#define EHCI_ITD_LENGTH_BIT_POS (16) | ||
| 28473 | +#define EHCI_ITD_IOC_BIT (0x00008000) | ||
| 28474 | +#define EHCI_ITD_ACTIVE_BIT (0x80000000) | ||
| 28475 | +#define EHCI_ITD_PG_SELECT_BIT_POS (12) | ||
| 28476 | +#define EHCI_ITD_DIRECTION_BIT_POS (11) | ||
| 28477 | +#define EHCI_ITD_EP_BIT_POS (8) | ||
| 28478 | +#define EHCI_ITD_STATUS (0xF0000000) | ||
| 28479 | + #define EHCI_ITD_STATUS_ACTIVE (0x80000000) /*bit 4 = 1000*/ | ||
| 28480 | + #define EHCI_ITD_STATUS_DATA_BUFFER_ERR (0x40000000) /*bit 3 = 0100*/ | ||
| 28481 | + #define EHCI_ITD_STATUS_BABBLE_ERROR (0x20000000) /*bit 2 = 0010*/ | ||
| 28482 | + #define EHCI_ITD_STATUS_TRANSACTION_ERR (0x10000000) /*bit 4 = 0001*/ | ||
| 28483 | + | ||
| 28484 | +#define EHCI_ITD_LENGTH_TRANSMITTED (0x0FFF0000) | ||
| 28485 | +#define EHCI_ITD_BUFFER_OFFSET (0x00000FFF) | ||
| 28486 | +#define EHCI_ITD_PAGE_NUMBER (0x00007000) | ||
| 28487 | +#define EHCI_ITD_BUFFER_POINTER (0xFFFFF000) | ||
| 28488 | +#define EHCI_ITD_MULTI_TRANSACTION_BITS (0x00000003) | ||
| 28489 | + | ||
| 28490 | + | ||
| 28491 | + | ||
| 28492 | +/* SITD position bits */ | ||
| 28493 | +#define EHCI_SITD_DIRECTION_BIT_POS (31) | ||
| 28494 | +#define EHCI_SITD_PORT_NUMBER_BIT_POS (24) | ||
| 28495 | +#define EHCI_SITD_HUB_ADDR_BIT_POS (16) | ||
| 28496 | +#define EHCI_SITD_EP_ADDR_BIT_POS (8) | ||
| 28497 | + | ||
| 28498 | +#define EHCI_SITD_COMPLETE_SPLIT_MASK_BIT_POS (8) | ||
| 28499 | + | ||
| 28500 | +#define EHCI_SITD_IOC_BIT_SET (0x80000000) | ||
| 28501 | +#define EHCI_SITD_PAGE_SELECT_BIT_POS (30) | ||
| 28502 | +#define EHCI_SITD_TRANSFER_LENGTH_BIT_POS (16) | ||
| 28503 | +#define EHCI_SITD_STATUS_ACTIVE (0x80) | ||
| 28504 | + | ||
| 28505 | +#define EHCI_SITD_STATUS (0xFF) | ||
| 28506 | +#define EHCI_SITD_LENGTH_TRANSMITTED (0x03FF0000) | ||
| 28507 | +#define EHCI_SITD_BUFFER_OFFSET (0x00000FFF) | ||
| 28508 | +#define EHCI_SITD_PAGE_NUMBER (0x40000000) | ||
| 28509 | +#define EHCI_SITD_BUFFER_POINTER (0xFFFFF000) | ||
| 28510 | + | ||
| 28511 | + | ||
| 28512 | + | ||
| 28513 | +#define EHCI_SITD_BUFFER_PTR_BIT_POS (12) | ||
| 28514 | +#define EHCI_SITD_TP_BIT_POS (3) | ||
| 28515 | + #define EHCI_SITD_TP_ALL (0) | ||
| 28516 | + #define EHCI_SITD_TP_BEGIN (1) | ||
| 28517 | + #define EHCI_SITD_TP_MID (2) | ||
| 28518 | + #define EHCI_SITD_TP_END (3) | ||
| 28519 | + | ||
| 28520 | + | ||
| 28521 | + | ||
| 28522 | +/* Interrupt enable bit masks */ | ||
| 28523 | +#define EHCI_IER_ASYNCH_ADVANCE (0x00000020) | ||
| 28524 | +#define EHCI_IER_HOST_SYS_ERROR (0x00000010) | ||
| 28525 | +#define EHCI_IER_FRAME_LIST_ROLLOVER (0x00000008) | ||
| 28526 | +#define EHCI_IER_PORT_CHANGE (0x00000004) | ||
| 28527 | +#define EHCI_IER_USB_ERROR (0x00000002) | ||
| 28528 | +#define EHCI_IER_USB_INTERRUPT (0x00000001) | ||
| 28529 | + | ||
| 28530 | +/* Interrupt status bit masks */ | ||
| 28531 | +#define EHCI_STS_RECLAIMATION (0x00002000) | ||
| 28532 | +#define EHCI_STS_SOF_COUNT (0x00000080) | ||
| 28533 | +#define EHCI_STS_ASYNCH_ADVANCE (0x00000020) | ||
| 28534 | +#define EHCI_STS_HOST_SYS_ERROR (0x00000010) | ||
| 28535 | +#define EHCI_STS_FRAME_LIST_ROLLOVER (0x00000008) | ||
| 28536 | +#define EHCI_STS_PORT_CHANGE (0x00000004) | ||
| 28537 | +#define EHCI_STS_USB_ERROR (0x00000002) | ||
| 28538 | +#define EHCI_STS_USB_INTERRUPT (0x00000001) | ||
| 28539 | + | ||
| 28540 | +/* Status bit masks */ | ||
| 28541 | +#define EHCI_STS_ASYNCH_SCHEDULE (0x00008000) | ||
| 28542 | +#define EHCI_STS_PERIODIC_SCHEDULE (0x00004000) | ||
| 28543 | +#define EHCI_STS_RECLAMATION (0x00002000) | ||
| 28544 | +#define EHCI_STS_HC_HALTED (0x00001000) | ||
| 28545 | + | ||
| 28546 | +/* USB command bit masks */ | ||
| 28547 | +#define EHCI_USBCMD_ASYNC_SCHED_ENABLE (0x00000020) | ||
| 28548 | +#define EHCI_USBCMD_PERIODIC_SCHED_ENABLE (0x00000010) | ||
| 28549 | + | ||
| 28550 | +#define EHCI_HCS_PARAMS_N_PORTS (0x0F) | ||
| 28551 | + | ||
| 28552 | +#define VUSB_HS_DELAY (3500) | ||
| 28553 | + | ||
| 28554 | +#define EHCI_QH_EP_NUM_MASK (0x0F00) | ||
| 28555 | +#define EHCI_QH_EP_NUM_BITS_POS (8) | ||
| 28556 | +#define EHCI_QH_DEVICE_ADDRESS_MASK (0x7F) | ||
| 28557 | +#define EHCI_QH_SPEED_BITS_POS (12) | ||
| 28558 | +#define EHCI_QH_MAX_PKT_SIZE_BITS_POS (16) | ||
| 28559 | +#define EHCI_QH_NAK_COUNT_RL_BITS_POS (28) | ||
| 28560 | +#define EHCI_QH_EP_CTRL_FLAG_BIT_POS (27) | ||
| 28561 | +#define EHCI_QH_HEAD_RECLAMATION_BIT_POS (15) | ||
| 28562 | +#define EHCI_QH_DTC_BIT_POS (14) | ||
| 28563 | +#define EHCI_QH_HIGH_BW_MULT_BIT_POS (30) | ||
| 28564 | +#define EHCI_QH_HUB_PORT_NUM_BITS_POS (23) | ||
| 28565 | +#define EHCI_QH_HUB_ADDR_BITS_POS (16) | ||
| 28566 | +#define EHCI_QH_SPLIT_COMPLETION_MASK_BITS_POS (8) | ||
| 28567 | +#define EHCI_QH_SPLIT_COMPLETION_MASK (0xFF00) | ||
| 28568 | +#define EHCI_QH_INTR_SCHED_MASK (0xFF) | ||
| 28569 | +#define EHCI_QH_INACTIVATE_NEXT_TR_BIT_POS (7) | ||
| 28570 | +#define EHCI_QH_HORIZ_PHY_ADDRESS_MASK (0xFFFFFFE0) | ||
| 28571 | +#define EHCI_QH_TR_OVERLAY_DT_BIT (0x80000000) | ||
| 28572 | + | ||
| 28573 | +#define EHCI_SITD_SPLIT_COMPLETION_MASK_BITS_POS (8) | ||
| 28574 | + | ||
| 28575 | +#define EHCI_INTR_NO_THRESHOLD_IMMEDIATE (0x00010000) | ||
| 28576 | +#define EHCI_NEW_PERIODIC_FRAME_LIST_SIZE (1024) | ||
| 28577 | +#define EHCI_FRAME_LIST_SIZE_BITS_POS (2) | ||
| 28578 | +#define EHCI_HORIZ_PHY_ADDRESS_MASK (0xFFFFFFE0) | ||
| 28579 | + | ||
| 28580 | +#define DEFAULT_MAX_NAK_COUNT (15) | ||
| 28581 | + | ||
| 28582 | +/* OTG Status and control register bit masks */ | ||
| 28583 | + | ||
| 28584 | +/* OTG interrupt enable bit masks */ | ||
| 28585 | +#define VUSBHS_OTGSC_INTERRUPT_ENABLE_BITS_MASK (0x5F000000) | ||
| 28586 | +#define VUSBHS_OTGSC_DPIE (0x40000000) /* Data-line pulsing IE */ | ||
| 28587 | +#define VUSBHS_OTGSC_1MSIE (0x20000000) | ||
| 28588 | +#define VUSBHS_OTGSC_BSEIE (0x10000000) /* B-session end IE */ | ||
| 28589 | +#define VUSBHS_OTGSC_BSVIE (0x08000000) /* B-session valid IE */ | ||
| 28590 | +#define VUSBHS_OTGSC_ASVIE (0x04000000) /* A-session valid IE */ | ||
| 28591 | +#define VUSBHS_OTGSC_AVVIE (0x02000000) /* A-V-bus valid IE */ | ||
| 28592 | +#define VUSBHS_OTGSC_IDIE (0x01000000) /* OTG ID IE */ | ||
| 28593 | + | ||
| 28594 | +/* OTG interrupt status bit masks */ | ||
| 28595 | +#define VUSBHS_OTGSC_INTERRUPT_STATUS_BITS_MASK (0x005F0000) | ||
| 28596 | +#define VUSBHS_OTGSC_DPIS (0x00400000) /* Data-line pulsing IS */ | ||
| 28597 | +#define VUSBHS_OTGSC_1MSIS (0x00200000) | ||
| 28598 | +#define VUSBHS_OTGSC_BSEIS (0x00100000) /* B-session end IS */ | ||
| 28599 | +#define VUSBHS_OTGSC_BSVIS (0x00080000) /* B-session valid IS */ | ||
| 28600 | +#define VUSBHS_OTGSC_ASVIS (0x00040000) /* A-session valid IS */ | ||
| 28601 | +#define VUSBHS_OTGSC_AVVIS (0x00020000) /* A-Vbus valid IS */ | ||
| 28602 | +#define VUSBHS_OTGSC_IDIS (0x00010000) /* OTG ID IS */ | ||
| 28603 | + | ||
| 28604 | +/* OTG status bit masks */ | ||
| 28605 | +#define VUSBHS_OTGSC_DPS (0x00004000) | ||
| 28606 | +#define VUSBHS_OTGSC_BSE (0x00001000) /* B-session end */ | ||
| 28607 | +#define VUSBHS_OTGSC_BSV (0x00000800) /* B-session valid */ | ||
| 28608 | +#define VUSBHS_OTGSC_ASV (0x00000400) /* A-session valid */ | ||
| 28609 | +#define VUSBHS_OTGSC_AVV (0x00000200) /* A-Vbus Valid */ | ||
| 28610 | +#define VUSBHS_OTGSC_ID (0x00000100) /* OTG ID */ | ||
| 28611 | + | ||
| 28612 | +/* OTG control bit masks */ | ||
| 28613 | +#define VUSBHS_OTGSC_CTL_BITS (0x2F) | ||
| 28614 | +#define VUSBHS_OTGSC_HABA (0x00000080) /* hardware assisted data pulse bits*/ | ||
| 28615 | +#define VUSBHS_OTGSC_HADP (0x00000040) /* hardware assisted data pulse bits*/ | ||
| 28616 | + | ||
| 28617 | +/*#include <linux/ci13612.h>*/ | ||
| 28618 | diff --git a/drivers/usb/host/ehci-ci13612.c b/drivers/usb/host/ehci-ci13612.c | ||
| 28619 | new file mode 100644 | ||
| 28620 | index 0000000..82ff48a | ||
| 28621 | --- /dev/null | ||
| 28622 | +++ b/drivers/usb/host/ehci-ci13612.c | ||
| 28623 | @@ -0,0 +1,215 @@ | ||
| 28624 | + /* | ||
| 28625 | + * drivers/usb/host/ehci-ci13612.c | ||
| 28626 | + * | ||
| 28627 | + * USB Host Controller Driver for LSI's ACP | ||
| 28628 | + * | ||
| 28629 | + * Copyright (C) 2010 LSI Inc. | ||
| 28630 | + * | ||
| 28631 | + * This program is free software; you can redistribute it and/or modify | ||
| 28632 | + * it under the terms of the GNU General Public License as published by | ||
| 28633 | + * the Free Software Foundation; either version 2 of the License, or | ||
| 28634 | + * (at your option) any later version. | ||
| 28635 | + * | ||
| 28636 | + * This program is distributed in the hope that it will be useful, | ||
| 28637 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 28638 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 28639 | + * GNU General Public License for more details. | ||
| 28640 | + * | ||
| 28641 | + * You should have received a copy of the GNU General Public License | ||
| 28642 | + * along with this program; if not, write to the Free Software | ||
| 28643 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 28644 | + * | ||
| 28645 | + */ | ||
| 28646 | + | ||
| 28647 | +#include <linux/platform_device.h> | ||
| 28648 | +#include <linux/irq.h> | ||
| 28649 | +#include "ehci-ci13612.h" | ||
| 28650 | + | ||
| 28651 | + | ||
| 28652 | +/* Patch the code to fix the bugs in Bugzilla */ | ||
| 28653 | +static void ci13612_usb_setup(struct usb_hcd *hcd) | ||
| 28654 | +{ | ||
| 28655 | + int USB_TXFIFOTHRES, VUSB_HS_TX_BURST; | ||
| 28656 | + | ||
| 28657 | + /* fix Bugzilla #31874 */ | ||
| 28658 | + /* fix Bugzilla #32212 */ | ||
| 28659 | + VUSB_HS_TX_BURST = inl(USB_HWTXBUF) & 0x0f; | ||
| 28660 | + USB_TXFIFOTHRES = (inl(USB_TXFILLTUNING) & 0x3f0000) >> 16; | ||
| 28661 | + | ||
| 28662 | + printk(KERN_INFO "ehci-ci13612 (ci13612_usb_setup): " | ||
| 28663 | + "VUSB_HS_TX_BURST = 0x%x, USB_TXFIFOTHRES = 0x%x\n", | ||
| 28664 | + VUSB_HS_TX_BURST, USB_TXFIFOTHRES); | ||
| 28665 | + | ||
| 28666 | + return; | ||
| 28667 | +} | ||
| 28668 | + | ||
| 28669 | +/* called after powerup, by probe or system-pm "wakeup" */ | ||
| 28670 | +static int ehci_ci13612_reinit(struct ehci_hcd *ehci) | ||
| 28671 | +{ | ||
| 28672 | + ci13612_usb_setup(ehci_to_hcd(ehci)); | ||
| 28673 | + ehci_port_power(ehci, 0); | ||
| 28674 | + | ||
| 28675 | + return 0; | ||
| 28676 | +} | ||
| 28677 | + | ||
| 28678 | + | ||
| 28679 | +static int ci13612_ehci_init(struct usb_hcd *hcd) | ||
| 28680 | +{ | ||
| 28681 | + struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
| 28682 | + int retval = 0; | ||
| 28683 | + int len; | ||
| 28684 | + | ||
| 28685 | + | ||
| 28686 | + /* EHCI registers start at offset 0x100 */ | ||
| 28687 | + ehci->caps = hcd->regs + 0x100; | ||
| 28688 | + ehci->regs = hcd->regs + 0x100 | ||
| 28689 | + + HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); | ||
| 28690 | + len = HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); | ||
| 28691 | + | ||
| 28692 | + /* configure other settings */ | ||
| 28693 | + ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); | ||
| 28694 | + hcd->has_tt = 1; | ||
| 28695 | + | ||
| 28696 | + ehci->sbrn = 0x20; | ||
| 28697 | + | ||
| 28698 | + /* reset and halt controller */ | ||
| 28699 | + ehci_reset(ehci); | ||
| 28700 | + | ||
| 28701 | + /* data structure init */ | ||
| 28702 | + retval = ehci_init(hcd); | ||
| 28703 | + if (retval) | ||
| 28704 | + return retval; | ||
| 28705 | + hcd->self.sg_tablesize = 0; | ||
| 28706 | + | ||
| 28707 | + retval = ehci_ci13612_reinit(ehci); | ||
| 28708 | + | ||
| 28709 | + return retval; | ||
| 28710 | +} | ||
| 28711 | + | ||
| 28712 | +static int ehci_run_fix(struct usb_hcd *hcd) | ||
| 28713 | +{ | ||
| 28714 | + struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
| 28715 | + u32 port_status; | ||
| 28716 | + unsigned burst_size; | ||
| 28717 | + int retval; | ||
| 28718 | + | ||
| 28719 | + /* fix Bugzilla 33669 */ | ||
| 28720 | + port_status = ehci_readl(ehci, &ehci->regs->port_status[0]); | ||
| 28721 | + printk(KERN_INFO "ehci_run: port_status = 0x%x\n", port_status); | ||
| 28722 | + if (port_status & 0x100) { | ||
| 28723 | + printk(KERN_ERR "USB port is in reset status, not able to " | ||
| 28724 | + "change host controller status to run\n"); | ||
| 28725 | + return -EFAULT; | ||
| 28726 | + } | ||
| 28727 | + | ||
| 28728 | + retval = ehci_run(hcd); | ||
| 28729 | + if (retval) | ||
| 28730 | + return retval; | ||
| 28731 | + | ||
| 28732 | + burst_size = ehci_readl(ehci, &ehci->regs->reserved[1]); | ||
| 28733 | + burst_size = (burst_size & 0xffff00ff) | 0x4000; /* TXPBURST */ | ||
| 28734 | + ehci_writel(ehci, burst_size, &ehci->regs->reserved[1]); | ||
| 28735 | + | ||
| 28736 | + return 0; | ||
| 28737 | +} | ||
| 28738 | + | ||
| 28739 | +static const struct hc_driver ci13612_hc_driver = { | ||
| 28740 | + .description = "ci13612_hcd", | ||
| 28741 | + .product_desc = "CI13612A EHCI USB Host Controller", | ||
| 28742 | + .hcd_priv_size = sizeof(struct ehci_hcd), | ||
| 28743 | + .irq = ehci_irq, | ||
| 28744 | + .flags = HCD_MEMORY | HCD_USB2 | HCD_LOCAL_MEM, | ||
| 28745 | + .reset = ci13612_ehci_init, | ||
| 28746 | + .start = ehci_run_fix, | ||
| 28747 | + .stop = ehci_stop, | ||
| 28748 | + .shutdown = ehci_shutdown, | ||
| 28749 | + .urb_enqueue = ehci_urb_enqueue, | ||
| 28750 | + .urb_dequeue = ehci_urb_dequeue, | ||
| 28751 | + .endpoint_disable = ehci_endpoint_disable, | ||
| 28752 | + .get_frame_number = ehci_get_frame, | ||
| 28753 | + .hub_status_data = ehci_hub_status_data, | ||
| 28754 | + .hub_control = ehci_hub_control, | ||
| 28755 | +#if defined(CONFIG_PM) | ||
| 28756 | + .bus_suspend = ehci_bus_suspend, | ||
| 28757 | + .bus_resume = ehci_bus_resume, | ||
| 28758 | +#endif | ||
| 28759 | + .relinquish_port = ehci_relinquish_port, | ||
| 28760 | + .port_handed_over = ehci_port_handed_over, | ||
| 28761 | +}; | ||
| 28762 | + | ||
| 28763 | +static int ci13612_ehci_probe(struct platform_device *pdev) | ||
| 28764 | +{ | ||
| 28765 | + struct usb_hcd *hcd; | ||
| 28766 | + const struct hc_driver *driver = &ci13612_hc_driver; | ||
| 28767 | + void __iomem *USB_base = (void __iomem *) 0xF00A0000; | ||
| 28768 | + void __iomem *gpreg_base = (void __iomem *) 0xF000C000; | ||
| 28769 | + int irq; | ||
| 28770 | + int retval; | ||
| 28771 | + | ||
| 28772 | + | ||
| 28773 | + if (usb_disabled()) | ||
| 28774 | + return -ENODEV; | ||
| 28775 | + | ||
| 28776 | + /* Map the irq in the PPC476 to get the irq number */ | ||
| 28777 | + irq = irq_create_mapping(NULL, 31); | ||
| 28778 | + | ||
| 28779 | + if (NO_IRQ == irq) { | ||
| 28780 | + dev_dbg(&pdev->dev, "error mapping irq number\n"); | ||
| 28781 | + retval = -EBUSY; | ||
| 28782 | + goto fail_create_hcd; | ||
| 28783 | + } | ||
| 28784 | + | ||
| 28785 | + if (0 != irq_set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH)) { | ||
| 28786 | + dev_dbg(&pdev->dev, "set_irq_type() failed\n"); | ||
| 28787 | + retval = -EBUSY; | ||
| 28788 | + goto fail_create_hcd; | ||
| 28789 | + } | ||
| 28790 | + | ||
| 28791 | + hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); | ||
| 28792 | + if (!hcd) { | ||
| 28793 | + retval = -ENOMEM; | ||
| 28794 | + goto fail_create_hcd; | ||
| 28795 | + } | ||
| 28796 | + | ||
| 28797 | + hcd->rsrc_start = ci13612_PHY_ADDR; | ||
| 28798 | + hcd->rsrc_len = 0x20000; | ||
| 28799 | + | ||
| 28800 | + hcd->regs = USB_base; | ||
| 28801 | + | ||
| 28802 | + /* Setup GPREG for USB to enable the 6-bit address line */ | ||
| 28803 | + writel(0x0, gpreg_base + 0x8); | ||
| 28804 | + | ||
| 28805 | + retval = usb_add_hcd(hcd, irq, IRQF_SHARED); | ||
| 28806 | + if (retval == 0) { | ||
| 28807 | + platform_set_drvdata(pdev, hcd); | ||
| 28808 | + return retval; | ||
| 28809 | + } | ||
| 28810 | + | ||
| 28811 | + usb_put_hcd(hcd); | ||
| 28812 | +fail_create_hcd: | ||
| 28813 | + dev_err(&pdev->dev, "init %s fail, %d\n", dev_name(&pdev->dev), retval); | ||
| 28814 | + return retval; | ||
| 28815 | +} | ||
| 28816 | + | ||
| 28817 | +static int ci13612_ehci_remove(struct platform_device *pdev) | ||
| 28818 | +{ | ||
| 28819 | + struct usb_hcd *hcd = platform_get_drvdata(pdev); | ||
| 28820 | + | ||
| 28821 | + usb_remove_hcd(hcd); | ||
| 28822 | + usb_put_hcd(hcd); | ||
| 28823 | + platform_set_drvdata(pdev, NULL); | ||
| 28824 | + | ||
| 28825 | + return 0; | ||
| 28826 | +} | ||
| 28827 | + | ||
| 28828 | +// MODULE_ALIAS("platform:ci13612-ehci"); | ||
| 28829 | +MODULE_ALIAS("platform:20004a4000.usb"); | ||
| 28830 | + | ||
| 28831 | +static struct platform_driver ci13612_ehci_driver = { | ||
| 28832 | + .probe = ci13612_ehci_probe, | ||
| 28833 | + .remove = ci13612_ehci_remove, | ||
| 28834 | + .driver = { | ||
| 28835 | +// .name = "ci13612-ehci", | ||
| 28836 | + .name = "20004a4000.usb", | ||
| 28837 | + }, | ||
| 28838 | +}; | ||
| 28839 | diff --git a/drivers/usb/host/ehci-ci13612.h b/drivers/usb/host/ehci-ci13612.h | ||
| 28840 | new file mode 100644 | ||
| 28841 | index 0000000..bbba3f4 | ||
| 28842 | --- /dev/null | ||
| 28843 | +++ b/drivers/usb/host/ehci-ci13612.h | ||
| 28844 | @@ -0,0 +1,54 @@ | ||
| 28845 | +/* | ||
| 28846 | + * System definitions | ||
| 28847 | + */ | ||
| 28848 | +#define ci13612_PHY_ADDR 0x0020004A0000ULL | ||
| 28849 | +#define ci13162_PHY_ADDR_SIZE 0x20000 | ||
| 28850 | + | ||
| 28851 | +/* | ||
| 28852 | + * Host interface registers | ||
| 28853 | + */ | ||
| 28854 | + | ||
| 28855 | +/* define CI13612 USB registers here */ | ||
| 28856 | +#define CI13612_USB_BASE ((unsigned) hcd->regs) | ||
| 28857 | + | ||
| 28858 | +#define USB_ID (CI13612_USB_BASE + 0x0000) | ||
| 28859 | +#define USB_HWGENERAL (CI13612_USB_BASE + 0x0004) | ||
| 28860 | +#define USB_HWHOST (CI13612_USB_BASE + 0x0008) | ||
| 28861 | +#define USB_HWDEVICE (CI13612_USB_BASE + 0x000C) | ||
| 28862 | +#define USB_HWTXBUF (CI13612_USB_BASE + 0x0010) | ||
| 28863 | +#define USB_HWRXBUF (CI13612_USB_BASE + 0x0014) | ||
| 28864 | +#define USB_GPTIMER0LD (CI13612_USB_BASE + 0x0080) | ||
| 28865 | +#define USB_GPTIMER0CTRL (CI13612_USB_BASE + 0x0084) | ||
| 28866 | +#define USB_GPTIMER1LD (CI13612_USB_BASE + 0x0088) | ||
| 28867 | +#define USB_GPTIMER1CTRL (CI13612_USB_BASE + 0x008c) | ||
| 28868 | +#define USB_SBUSCFG (CI13612_USB_BASE + 0x0090) | ||
| 28869 | + | ||
| 28870 | +#define USB_CAPLENGTH (CI13612_USB_BASE + 0x0100) /* 8 bit */ | ||
| 28871 | +#define USB_HCIVERSION (CI13612_USB_BASE + 0x0102) /* 16 bit */ | ||
| 28872 | +#define USB_HCSPARAMS (CI13612_USB_BASE + 0x0104) | ||
| 28873 | +#define USB_HCCPARAMS (CI13612_USB_BASE + 0x0108) | ||
| 28874 | +#define USB_DCIVERSION (CI13612_USB_BASE + 0x0120) /* 16 bit */ | ||
| 28875 | +#define USB_DCCPARAMS (CI13612_USB_BASE + 0x0124) | ||
| 28876 | +#define USB_USBCMD (CI13612_USB_BASE + 0x0140) | ||
| 28877 | +#define USB_USBSTS (CI13612_USB_BASE + 0x0144) | ||
| 28878 | +#define USB_USBINTR (CI13612_USB_BASE + 0x0148) | ||
| 28879 | +#define USB_FRINDEX (CI13612_USB_BASE + 0x014C) | ||
| 28880 | +#define USB_DEVICEADDR (CI13612_USB_BASE + 0x0154) | ||
| 28881 | +#define USB_ENDPOINTLISTADDR (CI13612_USB_BASE + 0x0158) | ||
| 28882 | +#define USB_TTCTRL (CI13612_USB_BASE + 0x015C) | ||
| 28883 | +#define USB_BURSTSIZE (CI13612_USB_BASE + 0x0160) | ||
| 28884 | +#define USB_TXFILLTUNING (CI13612_USB_BASE + 0x0164) | ||
| 28885 | +#define USB_ICUSB (CI13612_USB_BASE + 0x016C) | ||
| 28886 | +#define USB_ULPI_VIEWPORT (CI13612_USB_BASE + 0x0170) | ||
| 28887 | +#define USB_ENDPTNAK (CI13612_USB_BASE + 0x0178) | ||
| 28888 | +#define USB_ENDPTNAKEN (CI13612_USB_BASE + 0x017C) | ||
| 28889 | +#define USB_CONFIGFLAG (CI13612_USB_BASE + 0x0180) | ||
| 28890 | +#define USB_PORTSC (CI13612_USB_BASE + 0x0184) | ||
| 28891 | +#define USB_OTGSC (CI13612_USB_BASE + 0x01A4) | ||
| 28892 | +#define USB_USBMODE (CI13612_USB_BASE + 0x01A8) | ||
| 28893 | +#define USB_ENDPTSETUPSTAT (CI13612_USB_BASE + 0x01AC) | ||
| 28894 | +#define USB_ENDPTPRIME (CI13612_USB_BASE + 0x01B0) | ||
| 28895 | +#define USB_ENDPTFLUSH (CI13612_USB_BASE + 0x01B4) | ||
| 28896 | +#define USB_ENDPTSTAT (CI13612_USB_BASE + 0x01B8) | ||
| 28897 | +#define USB_ENDPTCOMPLETE (CI13612_USB_BASE + 0x01BC) | ||
| 28898 | +#define USB_ENDPTCTRL(n) (CI13612_USB_BASE + 0x01C0 + (4 * (n))) | ||
| 28899 | diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c | ||
| 28900 | index 9ff9abc..d460db7 100644 | ||
| 28901 | --- a/drivers/usb/host/ehci-hcd.c | ||
| 28902 | +++ b/drivers/usb/host/ehci-hcd.c | ||
| 28903 | @@ -1284,12 +1284,34 @@ MODULE_LICENSE ("GPL"); | ||
| 28904 | #define PLATFORM_DRIVER ehci_grlib_driver | ||
| 28905 | #endif | ||
| 28906 | |||
| 28907 | + | ||
| 28908 | +#ifdef CONFIG_USB_CI13612_HCD | ||
| 28909 | +#include "ehci-ci13612.c" | ||
| 28910 | +#define PLATFORM_DRIVER ci13612_ehci_driver | ||
| 28911 | +#endif | ||
| 28912 | + | ||
| 28913 | + | ||
| 28914 | #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ | ||
| 28915 | !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \ | ||
| 28916 | !defined(XILINX_OF_PLATFORM_DRIVER) | ||
| 28917 | #error "missing bus glue for ehci-hcd" | ||
| 28918 | #endif | ||
| 28919 | |||
| 28920 | + | ||
| 28921 | +static void ci13612_device_release(struct device *dev) | ||
| 28922 | +{ | ||
| 28923 | +} | ||
| 28924 | + | ||
| 28925 | +static struct platform_device ci13612_device = { | ||
| 28926 | + .name = "ci13612-ehci", | ||
| 28927 | + .id = -1, | ||
| 28928 | + .dev = { | ||
| 28929 | + .release = ci13612_device_release, | ||
| 28930 | + }, | ||
| 28931 | +}; | ||
| 28932 | + | ||
| 28933 | + | ||
| 28934 | + | ||
| 28935 | static int __init ehci_hcd_init(void) | ||
| 28936 | { | ||
| 28937 | int retval = 0; | ||
| 28938 | @@ -1341,6 +1363,11 @@ static int __init ehci_hcd_init(void) | ||
| 28939 | goto clean3; | ||
| 28940 | #endif | ||
| 28941 | |||
| 28942 | + | ||
| 28943 | + retval = platform_device_register(&ci13612_device); | ||
| 28944 | + if (retval < 0) | ||
| 28945 | + goto err_device_register; | ||
| 28946 | + | ||
| 28947 | #ifdef XILINX_OF_PLATFORM_DRIVER | ||
| 28948 | retval = platform_driver_register(&XILINX_OF_PLATFORM_DRIVER); | ||
| 28949 | if (retval < 0) | ||
| 28950 | @@ -1348,6 +1375,7 @@ static int __init ehci_hcd_init(void) | ||
| 28951 | #endif | ||
| 28952 | return retval; | ||
| 28953 | |||
| 28954 | +err_device_register: | ||
| 28955 | #ifdef XILINX_OF_PLATFORM_DRIVER | ||
| 28956 | /* platform_driver_unregister(&XILINX_OF_PLATFORM_DRIVER); */ | ||
| 28957 | clean4: | ||
| 28958 | @@ -1380,6 +1408,9 @@ module_init(ehci_hcd_init); | ||
| 28959 | |||
| 28960 | static void __exit ehci_hcd_cleanup(void) | ||
| 28961 | { | ||
| 28962 | + | ||
| 28963 | +platform_device_unregister(&ci13612_device); | ||
| 28964 | + | ||
| 28965 | #ifdef XILINX_OF_PLATFORM_DRIVER | ||
| 28966 | platform_driver_unregister(&XILINX_OF_PLATFORM_DRIVER); | ||
| 28967 | #endif | ||
| 28968 | diff --git a/include/linux/rio.h b/include/linux/rio.h | ||
| 28969 | index 4d50611..8fb185a 100644 | ||
| 28970 | --- a/include/linux/rio.h | ||
| 28971 | +++ b/include/linux/rio.h | ||
| 28972 | @@ -304,6 +304,17 @@ struct rio_ops { | ||
| 28973 | int (*cwrite) (struct rio_mport *mport, int index, u16 destid, | ||
| 28974 | u8 hopcount, u32 offset, int len, u32 data); | ||
| 28975 | int (*dsend) (struct rio_mport *mport, int index, u16 destid, u16 data); | ||
| 28976 | + | ||
| 28977 | + /* Functions to access port's mailbox routines (may be NULL if not supported) */ | ||
| 28978 | + // int (*hw_add_outb_message)(struct rio_mport *mport, struct rio_dev *rdev, int mbox, void *buffer, size_t len); | ||
| 28979 | + // int (*hw_add_inb_buffer)(struct rio_mport *mport, int mbox, void *buf); | ||
| 28980 | + // void* (*hw_get_inb_message)(struct rio_mport *mport, int mbox); | ||
| 28981 | + | ||
| 28982 | + /* Functions that support ioremap style access to endpoints | ||
| 28983 | + * (may be NULL if not supported) */ | ||
| 28984 | + void* (*rio_ioremap)(void* rio_address, u16 destid, unsigned int length); | ||
| 28985 | + void (*rio_unmap)(void* address); | ||
| 28986 | + | ||
| 28987 | int (*pwenable) (struct rio_mport *mport, int enable); | ||
| 28988 | int (*open_outb_mbox)(struct rio_mport *mport, void *dev_id, | ||
| 28989 | int mbox, int entries); | ||
| 28990 | @@ -402,4 +413,7 @@ extern void rio_close_inb_mbox(struct rio_mport *, int); | ||
| 28991 | extern int rio_open_outb_mbox(struct rio_mport *, void *, int, int); | ||
| 28992 | extern void rio_close_outb_mbox(struct rio_mport *, int); | ||
| 28993 | |||
| 28994 | +extern void* rio_ioremap(struct rio_mport *mport, void* rio_address, u16 destid, unsigned int length); | ||
| 28995 | +extern void rio_unmap(struct rio_mport *mport, void* address); | ||
| 28996 | + | ||
| 28997 | #endif /* LINUX_RIO_H */ | ||
| 28998 | diff --git a/kernel/smp.c b/kernel/smp.c | ||
| 28999 | index fb67dfa..7370bda 100644 | ||
| 29000 | --- a/kernel/smp.c | ||
| 29001 | +++ b/kernel/smp.c | ||
| 29002 | @@ -25,6 +25,7 @@ static struct { | ||
| 29003 | |||
| 29004 | enum { | ||
| 29005 | CSD_FLAG_LOCK = 0x01, | ||
| 29006 | + CSD_FLAG_NOWAIT = 0x02, | ||
| 29007 | }; | ||
| 29008 | |||
| 29009 | struct call_function_data { | ||
| 29010 | @@ -263,6 +264,8 @@ void generic_smp_call_function_single_interrupt(void) | ||
| 29011 | |||
| 29012 | while (!list_empty(&list)) { | ||
| 29013 | struct call_single_data *data; | ||
| 29014 | + void (*func)(void *); | ||
| 29015 | + void *info; | ||
| 29016 | |||
| 29017 | data = list_entry(list.next, struct call_single_data, list); | ||
| 29018 | list_del(&data->list); | ||
| 29019 | @@ -273,12 +276,21 @@ void generic_smp_call_function_single_interrupt(void) | ||
| 29020 | * so save them away before making the call: | ||
| 29021 | */ | ||
| 29022 | data_flags = data->flags; | ||
| 29023 | - | ||
| 29024 | - data->func(data->info); | ||
| 29025 | + func = data->func; | ||
| 29026 | + info = data->info; | ||
| 29027 | |||
| 29028 | /* | ||
| 29029 | + * Unlock before calling func so that func never has | ||
| 29030 | + * to return. | ||
| 29031 | + * | ||
| 29032 | * Unlocked CSDs are valid through generic_exec_single(): | ||
| 29033 | */ | ||
| 29034 | + if ((data_flags & CSD_FLAG_LOCK) && | ||
| 29035 | + (data_flags & CSD_FLAG_NOWAIT)) | ||
| 29036 | + csd_unlock(data); | ||
| 29037 | + | ||
| 29038 | + func(info); | ||
| 29039 | + | ||
| 29040 | if (data_flags & CSD_FLAG_LOCK) | ||
| 29041 | csd_unlock(data); | ||
| 29042 | } | ||
| 29043 | @@ -332,6 +344,9 @@ int smp_call_function_single(int cpu, smp_call_func_t func, void *info, | ||
| 29044 | |||
| 29045 | csd_lock(data); | ||
| 29046 | |||
| 29047 | + if (!wait) | ||
| 29048 | + data->flags |= CSD_FLAG_NOWAIT; | ||
| 29049 | + | ||
| 29050 | data->func = func; | ||
| 29051 | data->info = info; | ||
| 29052 | generic_exec_single(cpu, data, wait); | ||
| 29053 | diff --git a/scripts/rw.sh b/scripts/rw.sh | ||
| 29054 | new file mode 100644 | ||
| 29055 | index 0000000..a393a7c | ||
| 29056 | --- /dev/null | ||
| 29057 | +++ b/scripts/rw.sh | ||
| 29058 | @@ -0,0 +1,120 @@ | ||
| 29059 | +#!/bin/sh | ||
| 29060 | +# Generate tags or cscope files | ||
| 29061 | +# Usage tags.sh <mode> | ||
| 29062 | +# | ||
| 29063 | +# mode may be any of: tags, TAGS, cscope | ||
| 29064 | +# | ||
| 29065 | +# Uses the following environment variables: | ||
| 29066 | +# ARCH, SUBARCH, srctree, src, obj | ||
| 29067 | + | ||
| 29068 | +if [ "$KBUILD_VERBOSE" = "1" ]; then | ||
| 29069 | + set -x | ||
| 29070 | +fi | ||
| 29071 | + | ||
| 29072 | +# This is a duplicate of RCS_FIND_IGNORE without escaped '()' | ||
| 29073 | +ignore="( -name SCCS -o -name BitKeeper -o -name .svn -o \ | ||
| 29074 | + -name CVS -o -name .pc -o -name .hg -o \ | ||
| 29075 | + -name .git ) \ | ||
| 29076 | + -prune -o" | ||
| 29077 | + | ||
| 29078 | +# Do not use full path is we do not use O=.. builds | ||
| 29079 | +if [ "${KBUILD_SRC}" = "" ]; then | ||
| 29080 | + tree= | ||
| 29081 | +else | ||
| 29082 | + tree=${srctree}/ | ||
| 29083 | +fi | ||
| 29084 | + | ||
| 29085 | +# Detect if ALLSOURCE_ARCHS is set. If not, we assume SRCARCH | ||
| 29086 | +if [ "${ALLSOURCE_ARCHS}" = "" ]; then | ||
| 29087 | + ALLSOURCE_ARCHS=${SRCARCH} | ||
| 29088 | +fi | ||
| 29089 | + | ||
| 29090 | +# find sources in arch/$ARCH | ||
| 29091 | +find_arch_sources() | ||
| 29092 | +{ | ||
| 29093 | + find ${tree}arch/$1 $ignore -name "$2" -print; | ||
| 29094 | +} | ||
| 29095 | + | ||
| 29096 | +# find sources in arch/$1/include | ||
| 29097 | +find_arch_include_sources() | ||
| 29098 | +{ | ||
| 29099 | + find ${tree}arch/$1/include $ignore -name "$2" -print; | ||
| 29100 | +} | ||
| 29101 | + | ||
| 29102 | +# find sources in include/ | ||
| 29103 | +find_include_sources() | ||
| 29104 | +{ | ||
| 29105 | + find ${tree}include $ignore -name config -prune -o -name "$1" -print; | ||
| 29106 | +} | ||
| 29107 | + | ||
| 29108 | +# find sources in rest of tree | ||
| 29109 | +# we could benefit from a list of dirs to search in here | ||
| 29110 | +find_other_sources() | ||
| 29111 | +{ | ||
| 29112 | + find ${tree}* $ignore \ | ||
| 29113 | + \( -name include -o -name arch -o -name '.tmp_*' \) -prune -o \ | ||
| 29114 | + -name "$1" -print; | ||
| 29115 | +} | ||
| 29116 | + | ||
| 29117 | +find_sources() | ||
| 29118 | +{ | ||
| 29119 | + find_arch_sources $1 "$2" | ||
| 29120 | +} | ||
| 29121 | + | ||
| 29122 | +all_sources() | ||
| 29123 | +{ | ||
| 29124 | + for arch in $ALLSOURCE_ARCHS | ||
| 29125 | + do | ||
| 29126 | + find_sources $arch '*.[chS]' | ||
| 29127 | + done | ||
| 29128 | + if [ ! -z "$archinclude" ]; then | ||
| 29129 | + find_arch_include_sources $archinclude '*.[chS]' | ||
| 29130 | + fi | ||
| 29131 | + find_include_sources '*.[chS]' | ||
| 29132 | + find_other_sources '*.[chS]' | ||
| 29133 | +} | ||
| 29134 | + | ||
| 29135 | +all_kconfigs() | ||
| 29136 | +{ | ||
| 29137 | + for arch in $ALLSOURCE_ARCHS; do | ||
| 29138 | + find_sources $arch 'Kconfig*' | ||
| 29139 | + done | ||
| 29140 | + find_other_sources 'Kconfig*' | ||
| 29141 | +} | ||
| 29142 | + | ||
| 29143 | +all_defconfigs() | ||
| 29144 | +{ | ||
| 29145 | + find_sources $ALLSOURCE_ARCHS "defconfig" | ||
| 29146 | +} | ||
| 29147 | + | ||
| 29148 | +#docscope() | ||
| 29149 | +#{ | ||
| 29150 | +# (echo \-k; echo \-q; all_sources) > cscope.files | ||
| 29151 | +# cscope -b | ||
| 29152 | +#} | ||
| 29153 | +# | ||
| 29154 | +#case "$1" in | ||
| 29155 | +# "cscope") | ||
| 29156 | +# docscope | ||
| 29157 | +# ;; | ||
| 29158 | +# | ||
| 29159 | +# "tags") | ||
| 29160 | +# xtags ctags | ||
| 29161 | +# ;; | ||
| 29162 | +# | ||
| 29163 | +# "TAGS") | ||
| 29164 | +# xtags etags | ||
| 29165 | +# ;; | ||
| 29166 | +#esac | ||
| 29167 | + | ||
| 29168 | +TEMP=`mktemp rw.path.XXXXXXXXXXXX` || exit 1 | ||
| 29169 | +echo srchpath add linux > $TEMP | ||
| 29170 | + | ||
| 29171 | +for file in `all_sources` | ||
| 29172 | + do | ||
| 29173 | + echo srchpath add linux/`dirname $file` >> $TEMP | ||
| 29174 | +done | ||
| 29175 | + | ||
| 29176 | +cat $TEMP | uniq > rw.path | ||
| 29177 | + | ||
| 29178 | +rm -f $TEMP | ||
| 29179 | diff --git a/scripts/tags.sh b/scripts/tags.sh | ||
| 29180 | index 75c5d24..7935fa5 100755 | ||
| 29181 | --- a/scripts/tags.sh | ||
| 29182 | +++ b/scripts/tags.sh | ||
| 29183 | @@ -93,6 +93,7 @@ all_sources() | ||
| 29184 | find_sources $arch '*.[chS]' | ||
| 29185 | done | ||
| 29186 | find_other_sources '*.[chS]' | ||
| 29187 | + find arch/${SRCARCH} -type f | egrep '(\.c$|\.h$|\.s$|\.S$|\.java$)' | ||
| 29188 | } | ||
| 29189 | |||
| 29190 | all_kconfigs() | ||
| 29191 | @@ -111,7 +112,7 @@ all_defconfigs() | ||
| 29192 | docscope() | ||
| 29193 | { | ||
| 29194 | (echo \-k; echo \-q; all_sources) > cscope.files | ||
| 29195 | - cscope -b -f cscope.out | ||
| 29196 | + cscope -b | ||
| 29197 | } | ||
| 29198 | |||
| 29199 | dogtags() | ||
| 29200 | -- | ||
| 29201 | 1.7.0.4 | ||
| 29202 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0002-Patch-to-head_44x.S-to-support-lsi-acp3448v2.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0002-Patch-to-head_44x.S-to-support-lsi-acp3448v2.patch new file mode 100644 index 0000000..2a9127c --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0002-Patch-to-head_44x.S-to-support-lsi-acp3448v2.patch | |||
| @@ -0,0 +1,246 @@ | |||
| 1 | From 159aad211bf918f2b582f8a12622bf02fb7dd64f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 14:20:03 +0800 | ||
| 4 | Subject: [PATCH 2/7] Patch to head_44x.S to support lsi acp3448v2 | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | arch/powerpc/kernel/head_44x.S | 130 ++++++++++++++++++++++++++++++++++++--- | ||
| 9 | 1 files changed, 120 insertions(+), 10 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S | ||
| 12 | index 5e12b74..ac8d20e 100644 | ||
| 13 | --- a/arch/powerpc/kernel/head_44x.S | ||
| 14 | +++ b/arch/powerpc/kernel/head_44x.S | ||
| 15 | @@ -26,6 +26,8 @@ | ||
| 16 | * under the terms of the GNU General Public License as published by the | ||
| 17 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 18 | * option) any later version. | ||
| 19 | + * | ||
| 20 | + * These patches add ACP3400 support signed-off-by: john.jacques@lsi.com | ||
| 21 | */ | ||
| 22 | |||
| 23 | #include <linux/init.h> | ||
| 24 | @@ -41,6 +43,8 @@ | ||
| 25 | #include <asm/synch.h> | ||
| 26 | #include "head_booke.h" | ||
| 27 | |||
| 28 | +#undef TLBERRORCOUNTER | ||
| 29 | +/*#define TLBERRORCOUNTER*/ | ||
| 30 | |||
| 31 | /* As with the other PowerPC ports, it is expected that when code | ||
| 32 | * execution begins here, the following registers contain valid, yet | ||
| 33 | @@ -93,6 +97,30 @@ _ENTRY(_start); | ||
| 34 | |||
| 35 | bl early_init | ||
| 36 | |||
| 37 | +#ifdef CONFIG_RELOCATABLE | ||
| 38 | + /* | ||
| 39 | + * r25 will contain RPN/ERPN for the start address of memory | ||
| 40 | + * | ||
| 41 | + * Add the difference between KERNELBASE and PAGE_OFFSET to the | ||
| 42 | + * start of physical memory to get kernstart_addr. | ||
| 43 | + */ | ||
| 44 | + lis r3,kernstart_addr@ha | ||
| 45 | + la r3,kernstart_addr@l(r3) | ||
| 46 | + | ||
| 47 | + lis r4,KERNELBASE@h | ||
| 48 | + ori r4,r4,KERNELBASE@l | ||
| 49 | + lis r5,PAGE_OFFSET@h | ||
| 50 | + ori r5,r5,PAGE_OFFSET@l | ||
| 51 | + subf r4,r5,r4 | ||
| 52 | + | ||
| 53 | + rlwinm r6,r25,0,28,31 /* ERPN */ | ||
| 54 | + rlwinm r7,r25,0,0,3 /* RPN - assuming 256 MB page size */ | ||
| 55 | + add r7,r7,r4 | ||
| 56 | + | ||
| 57 | + stw r6,0(r3) | ||
| 58 | + stw r7,4(r3) | ||
| 59 | +#endif | ||
| 60 | + | ||
| 61 | /* | ||
| 62 | * Decide what sort of machine this is and initialize the MMU. | ||
| 63 | */ | ||
| 64 | @@ -449,6 +477,15 @@ finish_tlb_load_44x: | ||
| 65 | mtspr SPRN_SPRG_WSCRATCH1,r11 | ||
| 66 | mtspr SPRN_SPRG_WSCRATCH2,r12 | ||
| 67 | mtspr SPRN_SPRG_WSCRATCH3,r13 | ||
| 68 | + /* ZZZ */ | ||
| 69 | +#ifdef TLBERRORCOUNTER | ||
| 70 | + lis r10,dtlb_misses@h | ||
| 71 | + ori r10,r10,dtlb_misses@l | ||
| 72 | + lwzu r11,0(r10) | ||
| 73 | + addi r11,r11,1 | ||
| 74 | + stwu r11,0(r10) | ||
| 75 | +#endif | ||
| 76 | + /* ZZZ */ | ||
| 77 | mfcr r11 | ||
| 78 | mtspr SPRN_SPRG_WSCRATCH4,r11 | ||
| 79 | mfspr r10,SPRN_DEAR /* Get faulting address */ | ||
| 80 | @@ -546,6 +583,15 @@ finish_tlb_load_44x: | ||
| 81 | mtspr SPRN_SPRG_WSCRATCH1,r11 | ||
| 82 | mtspr SPRN_SPRG_WSCRATCH2,r12 | ||
| 83 | mtspr SPRN_SPRG_WSCRATCH3,r13 | ||
| 84 | + /* ZZZ */ | ||
| 85 | +#ifdef TLBERRORCOUNTER | ||
| 86 | + lis r10,itlb_misses@h | ||
| 87 | + ori r10,r10,itlb_misses@l | ||
| 88 | + lwzu r11,0(r10) | ||
| 89 | + addi r11,r11,1 | ||
| 90 | + stwu r11,0(r10) | ||
| 91 | +#endif | ||
| 92 | + /* ZZZ */ | ||
| 93 | mfcr r11 | ||
| 94 | mtspr SPRN_SPRG_WSCRATCH4,r11 | ||
| 95 | mfspr r10,SPRN_SRR0 /* Get faulting address */ | ||
| 96 | @@ -704,6 +750,7 @@ _GLOBAL(set_context) | ||
| 97 | stw r4, 0x4(r5) | ||
| 98 | #endif | ||
| 99 | mtspr SPRN_PID,r3 | ||
| 100 | + PPC476_ERR_MTPID() | ||
| 101 | isync /* Force context change */ | ||
| 102 | blr | ||
| 103 | |||
| 104 | @@ -718,9 +765,12 @@ _GLOBAL(init_cpu_state) | ||
| 105 | /* We use the PVR to differenciate 44x cores from 476 */ | ||
| 106 | mfspr r3,SPRN_PVR | ||
| 107 | srwi r3,r3,16 | ||
| 108 | - cmplwi cr0,r3,PVR_476@h | ||
| 109 | + cmplwi cr0,r3,PVR_476X2@h /* some x2 had a non-standard PVR */ | ||
| 110 | beq head_start_47x | ||
| 111 | - cmplwi cr0,r3,PVR_476_ISS@h | ||
| 112 | + | ||
| 113 | + /* All other 476 cores have a 0x5 as the 4th nibble */ | ||
| 114 | + rlwinm r3,r3,0,28,31 | ||
| 115 | + cmplwi cr0,r3,PVR_476@h | ||
| 116 | beq head_start_47x | ||
| 117 | #endif /* CONFIG_PPC_47x */ | ||
| 118 | |||
| 119 | @@ -1001,9 +1051,6 @@ clear_utlb_entry: | ||
| 120 | lis r3,PAGE_OFFSET@h | ||
| 121 | ori r3,r3,PAGE_OFFSET@l | ||
| 122 | |||
| 123 | - /* Kernel is at the base of RAM */ | ||
| 124 | - li r4, 0 /* Load the kernel physical address */ | ||
| 125 | - | ||
| 126 | /* Load the kernel PID = 0 */ | ||
| 127 | li r0,0 | ||
| 128 | mtspr SPRN_PID,r0 | ||
| 129 | @@ -1013,9 +1060,8 @@ clear_utlb_entry: | ||
| 130 | clrrwi r3,r3,12 /* Mask off the effective page number */ | ||
| 131 | ori r3,r3,PPC47x_TLB0_VALID | PPC47x_TLB0_256M | ||
| 132 | |||
| 133 | - /* Word 1 */ | ||
| 134 | - clrrwi r4,r4,12 /* Mask off the real page number */ | ||
| 135 | - /* ERPN is 0 for first 4GB page */ | ||
| 136 | + /* Word 1 - use r25. RPN is the same as the original entry */ | ||
| 137 | + | ||
| 138 | /* Word 2 */ | ||
| 139 | li r5,0 | ||
| 140 | ori r5,r5,PPC47x_TLB2_S_RWX | ||
| 141 | @@ -1026,7 +1072,7 @@ clear_utlb_entry: | ||
| 142 | /* We write to way 0 and bolted 0 */ | ||
| 143 | lis r0,0x8800 | ||
| 144 | tlbwe r3,r0,0 | ||
| 145 | - tlbwe r4,r0,1 | ||
| 146 | + tlbwe r25,r0,1 | ||
| 147 | tlbwe r5,r0,2 | ||
| 148 | |||
| 149 | /* | ||
| 150 | @@ -1057,6 +1103,7 @@ clear_utlb_entry: | ||
| 151 | tlbwe r24,r23,2 | ||
| 152 | isync /* Clear out the shadow TLB entries */ | ||
| 153 | |||
| 154 | +#ifndef CONFIG_ACP | ||
| 155 | #ifdef CONFIG_PPC_EARLY_DEBUG_44x | ||
| 156 | /* Add UART mapping for early debug. */ | ||
| 157 | |||
| 158 | @@ -1083,6 +1130,54 @@ clear_utlb_entry: | ||
| 159 | /* Force context change */ | ||
| 160 | isync | ||
| 161 | #endif /* CONFIG_PPC_EARLY_DEBUG_44x */ | ||
| 162 | +#endif /* CONFIG_ACP */ | ||
| 163 | + | ||
| 164 | +#ifdef CONFIG_ACP | ||
| 165 | + /* Add bolted entries for I/O. */ | ||
| 166 | + | ||
| 167 | + /* Word 0 */ | ||
| 168 | + lis r3,(0xf0000000)@h | ||
| 169 | + ori r3,r3,PPC47x_TLB0_VALID | PPC47x_TLB0_1M | ||
| 170 | + | ||
| 171 | + /* Word 1 */ | ||
| 172 | + lis r4,(0x00400000)@h | ||
| 173 | + ori r4,r4,0x20 | ||
| 174 | + | ||
| 175 | + /* Word 2 */ | ||
| 176 | + li r5,(PPC47x_TLB2_SW | PPC47x_TLB2_SR | PPC47x_TLB2_I | PPC47x_TLB2_G) | ||
| 177 | + | ||
| 178 | + /* Bolted in way 0, bolt slot 4, we -hope- we don't hit the same | ||
| 179 | + * congruence class as the kernel, we need to make sure of it at | ||
| 180 | + * some point | ||
| 181 | + */ | ||
| 182 | + lis r0,0x8d00 | ||
| 183 | + tlbwe r3,r0,0 | ||
| 184 | + tlbwe r4,r0,1 | ||
| 185 | + tlbwe r5,r0,2 | ||
| 186 | + | ||
| 187 | + /* Word 0 */ | ||
| 188 | + lis r3,(0xf0100000)@h | ||
| 189 | + ori r3,r3,PPC47x_TLB0_VALID | PPC47x_TLB0_1M | ||
| 190 | + | ||
| 191 | + /* Word 1 */ | ||
| 192 | + lis r4,(0x00500000)@h | ||
| 193 | + ori r4,r4,0x20 | ||
| 194 | + | ||
| 195 | + /* Word 2 */ | ||
| 196 | + li r5,(PPC47x_TLB2_SW | PPC47x_TLB2_SR | PPC47x_TLB2_I | PPC47x_TLB2_G) | ||
| 197 | + | ||
| 198 | + /* Bolted in way 0, bolt slot 4, we -hope- we don't hit the same | ||
| 199 | + * congruence class as the kernel, we need to make sure of it at | ||
| 200 | + * some point | ||
| 201 | + */ | ||
| 202 | + lis r0,0x8c00 | ||
| 203 | + tlbwe r3,r0,0 | ||
| 204 | + tlbwe r4,r0,1 | ||
| 205 | + tlbwe r5,r0,2 | ||
| 206 | + | ||
| 207 | + /* Force context change */ | ||
| 208 | + isync | ||
| 209 | +#endif /* CONFIG_ACP */ | ||
| 210 | |||
| 211 | /* Establish the interrupt vector offsets */ | ||
| 212 | SET_IVOR(0, CriticalInput); | ||
| 213 | @@ -1111,6 +1206,15 @@ clear_utlb_entry: | ||
| 214 | mtspr SPRN_CCR0,r3 | ||
| 215 | isync | ||
| 216 | |||
| 217 | + /* XXX DD1.1 workaround, trap on dcbz & dcbf. We pre-configure | ||
| 218 | + * IOCR1 and 2 but we don't enable them in IOCCR, this will | ||
| 219 | + * be done on kernel entry/exit | ||
| 220 | + */ | ||
| 221 | + LOAD_REG_IMMEDIATE(r3, (31 << 26) | ( 86 << 1)) /* dcbf */ | ||
| 222 | + LOAD_REG_IMMEDIATE(r4, (31 << 26) | (1014 << 1)) /* dcbz */ | ||
| 223 | + mtspr SPRN_IOCR1, r3 | ||
| 224 | + mtspr SPRN_IOCR2, r4 | ||
| 225 | + | ||
| 226 | #endif /* CONFIG_PPC_47x */ | ||
| 227 | |||
| 228 | /* | ||
| 229 | @@ -1124,7 +1228,13 @@ head_start_common: | ||
| 230 | lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */ | ||
| 231 | mtspr SPRN_IVPR,r4 | ||
| 232 | |||
| 233 | - addis r22,r22,KERNELBASE@h | ||
| 234 | + /* | ||
| 235 | + * If the kernel was loaded at a non-zero 256 MB page, we need to | ||
| 236 | + * mask off the most significant 4 bits to get the relative address | ||
| 237 | + * from the start of physical memory | ||
| 238 | + */ | ||
| 239 | + rlwinm r22,r22,0,4,31 | ||
| 240 | + addis r22,r22,PAGE_OFFSET@h | ||
| 241 | mtlr r22 | ||
| 242 | isync | ||
| 243 | blr | ||
| 244 | -- | ||
| 245 | 1.7.0.4 | ||
| 246 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0003-Patch-drivers_dma_Makefile.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0003-Patch-drivers_dma_Makefile.patch new file mode 100644 index 0000000..ad1b5e4 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0003-Patch-drivers_dma_Makefile.patch | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | From 747361b78cf696a55791ba080f53181424f0a04a Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 14:25:27 +0800 | ||
| 4 | Subject: [PATCH 3/7] Patch drivers_dma_Makefile to add lsi acp | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | drivers/dma/Makefile | 1 + | ||
| 9 | 1 files changed, 1 insertions(+), 0 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile | ||
| 12 | index 836095a..6507f65 100644 | ||
| 13 | --- a/drivers/dma/Makefile | ||
| 14 | +++ b/drivers/dma/Makefile | ||
| 15 | @@ -25,3 +25,4 @@ obj-$(CONFIG_STE_DMA40) += ste_dma40.o ste_dma40_ll.o | ||
| 16 | obj-$(CONFIG_PL330_DMA) += pl330.o | ||
| 17 | obj-$(CONFIG_PCH_DMA) += pch_dma.o | ||
| 18 | obj-$(CONFIG_AMBA_PL08X) += amba-pl08x.o | ||
| 19 | +obj-$(CONFIG_LSI_DMA) += lsi-dma.o | ||
| 20 | -- | ||
| 21 | 1.7.0.4 | ||
| 22 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0004-change-arch_powerpc_kernel_setup_32_c.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0004-change-arch_powerpc_kernel_setup_32_c.patch new file mode 100644 index 0000000..06ec9bd --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0004-change-arch_powerpc_kernel_setup_32_c.patch | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | From 33177944407c15cf8b1981c0803c5b30637781fa Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 14:38:06 +0800 | ||
| 4 | Subject: [PATCH 4/7] change arch_powerpc_kernel_setup_32_c for lsi acp | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | arch/powerpc/kernel/setup_32.c | 15 +++++++-------- | ||
| 9 | 1 files changed, 7 insertions(+), 8 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c | ||
| 12 | index 620d792..33c17df 100644 | ||
| 13 | --- a/arch/powerpc/kernel/setup_32.c | ||
| 14 | +++ b/arch/powerpc/kernel/setup_32.c | ||
| 15 | @@ -121,12 +121,12 @@ notrace void __init machine_init(unsigned long dt_ptr) | ||
| 16 | { | ||
| 17 | lockdep_init(); | ||
| 18 | |||
| 19 | - /* Enable early debugging if any specified (see udbg.h) */ | ||
| 20 | - udbg_early_init(); | ||
| 21 | - | ||
| 22 | /* Do some early initialization based on the flat device tree */ | ||
| 23 | early_init_devtree(__va(dt_ptr)); | ||
| 24 | |||
| 25 | + /* Enable early debugging if any specified (see udbg.h) */ | ||
| 26 | + udbg_early_init(); | ||
| 27 | + | ||
| 28 | probe_machine(); | ||
| 29 | |||
| 30 | setup_kdump_trampoline(); | ||
| 31 | @@ -259,18 +259,17 @@ static void __init irqstack_early_init(void) | ||
| 32 | #if defined(CONFIG_BOOKE) || defined(CONFIG_40x) | ||
| 33 | static void __init exc_lvl_early_init(void) | ||
| 34 | { | ||
| 35 | - unsigned int i, hw_cpu; | ||
| 36 | + unsigned int i; | ||
| 37 | |||
| 38 | /* interrupt stacks must be in lowmem, we get that for free on ppc32 | ||
| 39 | * as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */ | ||
| 40 | for_each_possible_cpu(i) { | ||
| 41 | - hw_cpu = get_hard_smp_processor_id(i); | ||
| 42 | - critirq_ctx[hw_cpu] = (struct thread_info *) | ||
| 43 | + critirq_ctx[i] = (struct thread_info *) | ||
| 44 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
| 45 | #ifdef CONFIG_BOOKE | ||
| 46 | - dbgirq_ctx[hw_cpu] = (struct thread_info *) | ||
| 47 | + dbgirq_ctx[i] = (struct thread_info *) | ||
| 48 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
| 49 | - mcheckirq_ctx[hw_cpu] = (struct thread_info *) | ||
| 50 | + mcheckirq_ctx[i] = (struct thread_info *) | ||
| 51 | __va(memblock_alloc(THREAD_SIZE, THREAD_SIZE)); | ||
| 52 | #endif | ||
| 53 | } | ||
| 54 | -- | ||
| 55 | 1.7.0.4 | ||
| 56 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0005-Patch-arch_powerpc_mm_tlb_nohash_c.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0005-Patch-arch_powerpc_mm_tlb_nohash_c.patch new file mode 100644 index 0000000..4c5e0ef --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0005-Patch-arch_powerpc_mm_tlb_nohash_c.patch | |||
| @@ -0,0 +1,85 @@ | |||
| 1 | From c1707a8d6ec37484edeb8d0221ebd6de41b3f4ad Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 14:54:32 +0800 | ||
| 4 | Subject: [PATCH 5/7] Patch arch_powerpc_mm_tlb_nohash_c to support lsi acp | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | arch/powerpc/mm/tlb_nohash.c | 35 ++++++++++++++++++++++++++++++++++- | ||
| 9 | 1 files changed, 34 insertions(+), 1 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c | ||
| 12 | index 0bdad3a..b4e065b 100644 | ||
| 13 | --- a/arch/powerpc/mm/tlb_nohash.c | ||
| 14 | +++ b/arch/powerpc/mm/tlb_nohash.c | ||
| 15 | @@ -36,6 +36,7 @@ | ||
| 16 | #include <linux/spinlock.h> | ||
| 17 | #include <linux/memblock.h> | ||
| 18 | |||
| 19 | +#include <linux/of_fdt.h> | ||
| 20 | #include <asm/tlbflush.h> | ||
| 21 | #include <asm/tlb.h> | ||
| 22 | #include <asm/code-patching.h> | ||
| 23 | @@ -152,6 +153,16 @@ EXPORT_SYMBOL(local_flush_tlb_page); | ||
| 24 | * And here are the SMP non-local implementations | ||
| 25 | */ | ||
| 26 | #ifdef CONFIG_SMP | ||
| 27 | +static int amp; | ||
| 28 | + | ||
| 29 | +#ifdef CONFIG_44x | ||
| 30 | +void __init early_init_mmu_44x(void) | ||
| 31 | +{ | ||
| 32 | + unsigned long root = of_get_flat_dt_root(); | ||
| 33 | + if (of_flat_dt_is_compatible(root, "ibm,47x-AMP")) | ||
| 34 | + amp = 1; | ||
| 35 | +} | ||
| 36 | +#endif /* CONFIG_44x */ | ||
| 37 | |||
| 38 | static DEFINE_RAW_SPINLOCK(tlbivax_lock); | ||
| 39 | |||
| 40 | @@ -232,7 +243,7 @@ void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr, | ||
| 41 | cpu_mask = mm_cpumask(mm); | ||
| 42 | if (!mm_is_core_local(mm)) { | ||
| 43 | /* If broadcast tlbivax is supported, use it */ | ||
| 44 | - if (mmu_has_feature(MMU_FTR_USE_TLBIVAX_BCAST)) { | ||
| 45 | + if (!amp && mmu_has_feature(MMU_FTR_USE_TLBIVAX_BCAST)) { | ||
| 46 | int lock = mmu_has_feature(MMU_FTR_LOCK_BCAST_INVAL); | ||
| 47 | if (lock) | ||
| 48 | raw_spin_lock(&tlbivax_lock); | ||
| 49 | @@ -266,6 +277,17 @@ EXPORT_SYMBOL(flush_tlb_page); | ||
| 50 | |||
| 51 | #endif /* CONFIG_SMP */ | ||
| 52 | |||
| 53 | +#ifdef CONFIG_PPC_47x | ||
| 54 | +void __init early_init_mmu_47x(void) | ||
| 55 | +{ | ||
| 56 | +#ifdef CONFIG_SMP | ||
| 57 | + unsigned long root = of_get_flat_dt_root(); | ||
| 58 | + if (of_get_flat_dt_prop(root, "cooperative-partition", NULL)) | ||
| 59 | + mmu_clear_feature(MMU_FTR_USE_TLBIVAX_BCAST); | ||
| 60 | +#endif /* CONFIG_SMP */ | ||
| 61 | +} | ||
| 62 | +#endif /* CONFIG_PPC_47x */ | ||
| 63 | + | ||
| 64 | /* | ||
| 65 | * Flush kernel TLB entries in the given range | ||
| 66 | */ | ||
| 67 | @@ -584,4 +606,15 @@ void setup_initial_memory_limit(phys_addr_t first_memblock_base, | ||
| 68 | /* Finally limit subsequent allocations */ | ||
| 69 | memblock_set_current_limit(first_memblock_base + ppc64_rma_size); | ||
| 70 | } | ||
| 71 | +#else /* ! CONFIG_PPC64 */ | ||
| 72 | +void __init early_init_mmu(void) | ||
| 73 | +{ | ||
| 74 | +#if defined(CONFIG_SMP) && defined(CONFIG_PPC_44x) | ||
| 75 | + early_init_mmu_44x(); | ||
| 76 | +#endif | ||
| 77 | +#ifdef CONFIG_PPC_47x | ||
| 78 | + early_init_mmu_47x(); | ||
| 79 | +#endif | ||
| 80 | +} | ||
| 81 | #endif /* CONFIG_PPC64 */ | ||
| 82 | + | ||
| 83 | -- | ||
| 84 | 1.7.0.4 | ||
| 85 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0006-backport-mmu_clear_feature-function.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0006-backport-mmu_clear_feature-function.patch new file mode 100644 index 0000000..5c716f7 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0006-backport-mmu_clear_feature-function.patch | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | From 2f2b38fd9d9d21099e1593537b4feb4be4fa1f31 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Mon, 23 Apr 2012 15:01:44 +0800 | ||
| 4 | Subject: [PATCH 6/7] backport mmu_clear_feature() function from mel-linux-3.1.0 | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | arch/powerpc/include/asm/mmu.h | 5 +++++ | ||
| 9 | 1 files changed, 5 insertions(+), 0 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h | ||
| 12 | index 4138b21..c80f7f5 100644 | ||
| 13 | --- a/arch/powerpc/include/asm/mmu.h | ||
| 14 | +++ b/arch/powerpc/include/asm/mmu.h | ||
| 15 | @@ -120,6 +120,11 @@ static inline int mmu_has_feature(unsigned long feature) | ||
| 16 | return (cur_cpu_spec->mmu_features & feature); | ||
| 17 | } | ||
| 18 | |||
| 19 | +static inline void mmu_clear_feature(unsigned long feature) | ||
| 20 | +{ | ||
| 21 | + cur_cpu_spec->mmu_features &= ~feature; | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | extern unsigned int __start___mmu_ftr_fixup, __stop___mmu_ftr_fixup; | ||
| 25 | |||
| 26 | /* MMU initialization (64-bit only fo now) */ | ||
| 27 | -- | ||
| 28 | 1.7.0.4 | ||
| 29 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0007-Enable-CONFIG_RELOCATABLE-for-ppc47x.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0007-Enable-CONFIG_RELOCATABLE-for-ppc47x.patch new file mode 100644 index 0000000..3334bb3 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0007-Enable-CONFIG_RELOCATABLE-for-ppc47x.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From a2a09da26466463d934abdbac152a779b3455fa2 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Wed, 25 Apr 2012 14:22:30 +0800 | ||
| 4 | Subject: [PATCH 7/7] Enable CONFIG_RELOCATABLE for ppc47x | ||
| 5 | |||
| 6 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 7 | --- | ||
| 8 | arch/powerpc/Kconfig | 2 +- | ||
| 9 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig | ||
| 12 | index da004ed..363c95e 100644 | ||
| 13 | --- a/arch/powerpc/Kconfig | ||
| 14 | +++ b/arch/powerpc/Kconfig | ||
| 15 | @@ -841,7 +841,7 @@ config LOWMEM_CAM_NUM | ||
| 16 | |||
| 17 | config RELOCATABLE | ||
| 18 | bool "Build a relocatable kernel (EXPERIMENTAL)" | ||
| 19 | - depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && FSL_BOOKE | ||
| 20 | + depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || PPC_47x) | ||
| 21 | help | ||
| 22 | This builds a kernel image that is capable of running at the | ||
| 23 | location the kernel is loaded at (some alignment restrictions may | ||
| 24 | -- | ||
| 25 | 1.7.0.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0008-change-serial-baudrate_to_115200.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0008-change-serial-baudrate_to_115200.patch new file mode 100644 index 0000000..a86e8f7 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0008-change-serial-baudrate_to_115200.patch | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | From 1e0026b4c525131d4fc41cc14f2655a50fc82955 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: jack zhang <jack.zhang@enea.com> | ||
| 3 | Date: Mon, 7 May 2012 08:46:12 +0200 | ||
| 4 | Subject: [PATCH 2/2] LXCR-472 change the serial port baud rate to be the same | ||
| 5 | as u-boot Signed-off-by: jack zhang | ||
| 6 | <jack.zhang@enea.com> | ||
| 7 | |||
| 8 | --- | ||
| 9 | drivers/lsi/acp/serial.c | 6 +++--- | ||
| 10 | 1 files changed, 3 insertions(+), 3 deletions(-) | ||
| 11 | |||
| 12 | diff --git a/drivers/lsi/acp/serial.c b/drivers/lsi/acp/serial.c | ||
| 13 | index a3da27e..8e4c228 100644 | ||
| 14 | --- a/drivers/lsi/acp/serial.c | ||
| 15 | +++ b/drivers/lsi/acp/serial.c | ||
| 16 | @@ -755,7 +755,7 @@ acp_serial_set_termios(struct uart_port *port, struct ktermios *termios, | ||
| 17 | */ | ||
| 18 | |||
| 19 | /*baud = termios->c_ospeed;*/ | ||
| 20 | - baud = 9600; | ||
| 21 | + baud = 115200; | ||
| 22 | get_clock_stuff(port, baud); | ||
| 23 | |||
| 24 | switch (termios->c_cflag & CSIZE) { | ||
| 25 | @@ -1006,7 +1006,7 @@ acp_console_get_options(struct uart_acp_port *uap, int *baud, | ||
| 26 | int __init acp_console_setup(struct console *co, char *options) | ||
| 27 | { | ||
| 28 | struct uart_acp_port *uap; | ||
| 29 | - int baud = 9600; | ||
| 30 | + int baud = 115200; | ||
| 31 | int bits = 8; | ||
| 32 | int parity = 'n'; | ||
| 33 | int flow = 'n'; | ||
| 34 | @@ -1195,7 +1195,7 @@ acp_serial_add_ports(struct uart_driver *driver) | ||
| 35 | baud_rate = *speed; | ||
| 36 | else { | ||
| 37 | printk(KERN_ERR "current speed not found\n"); | ||
| 38 | - baud_rate = 9600; | ||
| 39 | + baud_rate = 115200; | ||
| 40 | } | ||
| 41 | } else { | ||
| 42 | ret = -ENOMEM; | ||
| 43 | -- | ||
| 44 | 1.7.5.4 | ||
| 45 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0009-add-acp3448-PCIe-controller-driver.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0009-add-acp3448-PCIe-controller-driver.patch new file mode 100644 index 0000000..f97cbc5 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0009-add-acp3448-PCIe-controller-driver.patch | |||
| @@ -0,0 +1,1081 @@ | |||
| 1 | commit b49648c2950a227edb4832924649485537d5c049 | ||
| 2 | Author: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Thu Sep 20 15:14:33 2012 +0800 | ||
| 4 | |||
| 5 | add support for the PCIe controller on ACP34xx | ||
| 6 | |||
| 7 | Extracted from lsi.patch in lsi_acp_linux_3.8.1.28 tarball. | ||
| 8 | |||
| 9 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 10 | |||
| 11 | diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 12 | index 56e8b3c..a4e1c46 100644 | ||
| 13 | --- a/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 14 | +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 15 | @@ -34,8 +34,16 @@ | ||
| 16 | #include <mm/mmu_decl.h> | ||
| 17 | |||
| 18 | #include "ppc4xx_pci.h" | ||
| 19 | +#ifdef CONFIG_ACP | ||
| 20 | +#include <linux/interrupt.h> | ||
| 21 | +#include "../../../drivers/lsi/acp/ncr.h" | ||
| 22 | +static int acp_plx; | ||
| 23 | +#endif | ||
| 24 | |||
| 25 | static int dma_offset_set; | ||
| 26 | +#ifdef CONFIG_ACP | ||
| 27 | +static u32 last_mpage = 0; | ||
| 28 | +#endif | ||
| 29 | |||
| 30 | #define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL)) | ||
| 31 | #define U64_TO_U32_HIGH(val) ((u32)((val) >> 32)) | ||
| 32 | @@ -45,6 +53,9 @@ static int dma_offset_set; | ||
| 33 | #define RES_TO_U32_HIGH(val) \ | ||
| 34 | ((sizeof(resource_size_t) > sizeof(u32)) ? U64_TO_U32_HIGH(val) : (0)) | ||
| 35 | |||
| 36 | +#define ACPX1_PCIE_MPAGE_UPPER(n) (0x1010 + (n * 8)) | ||
| 37 | +#define ACPX1_PCIE_MPAGE_LOWER(n) (0x1014 + (n * 8)) | ||
| 38 | + | ||
| 39 | static inline int ppc440spe_revA(void) | ||
| 40 | { | ||
| 41 | /* Catch both 440SPe variants, with and without RAID6 support */ | ||
| 42 | @@ -87,7 +98,33 @@ static void fixup_ppc4xx_pci_bridge(struct pci_dev *dev) | ||
| 43 | printk(KERN_INFO "PCI: Hiding 4xx host bridge resources %s\n", | ||
| 44 | pci_name(dev)); | ||
| 45 | } | ||
| 46 | + | ||
| 47 | +static void __init | ||
| 48 | +fixup_acp_pci_bridge(struct pci_dev *dev) | ||
| 49 | +{ | ||
| 50 | + /* if we aren't a PCIe don't bother */ | ||
| 51 | + if (!pci_find_capability(dev, PCI_CAP_ID_EXP)) | ||
| 52 | + return ; | ||
| 53 | + | ||
| 54 | + /* | ||
| 55 | + * Set the class appropriately for a bridge device | ||
| 56 | + */ | ||
| 57 | + printk(KERN_INFO "PCI: Setting PCI Class to PCI_CLASS_BRIDGE_HOST for %04x:%04x\n", dev->vendor, dev->device); | ||
| 58 | + | ||
| 59 | + | ||
| 60 | + dev->class = PCI_CLASS_BRIDGE_HOST << 8; | ||
| 61 | + | ||
| 62 | + /* | ||
| 63 | + * Make the bridge transparent | ||
| 64 | + */ | ||
| 65 | + dev->transparent = 1; | ||
| 66 | + | ||
| 67 | + return ; | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, fixup_ppc4xx_pci_bridge); | ||
| 71 | +DECLARE_PCI_FIXUP_HEADER(0x1000, 0x5101, fixup_acp_pci_bridge); | ||
| 72 | +DECLARE_PCI_FIXUP_HEADER(0x1000, 0x5108, fixup_acp_pci_bridge); | ||
| 73 | |||
| 74 | static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose, | ||
| 75 | void __iomem *reg, | ||
| 76 | @@ -646,6 +683,9 @@ struct ppc4xx_pciex_port | ||
| 77 | struct resource cfg_space; | ||
| 78 | struct resource utl_regs; | ||
| 79 | void __iomem *utl_base; | ||
| 80 | +#ifdef CONFIG_ACP | ||
| 81 | + int acpChipType; | ||
| 82 | +#endif | ||
| 83 | }; | ||
| 84 | |||
| 85 | static struct ppc4xx_pciex_port *ppc4xx_pciex_ports; | ||
| 86 | @@ -939,6 +979,35 @@ static struct ppc4xx_pciex_hwops ppc440speB_pcie_hwops __initdata = | ||
| 87 | .check_link = ppc4xx_pciex_check_link_sdr, | ||
| 88 | }; | ||
| 89 | |||
| 90 | +#if defined(CONFIG_ACP) | ||
| 91 | + | ||
| 92 | +static int __init | ||
| 93 | +acp_pciex_core_init(struct device_node *np) | ||
| 94 | +{ | ||
| 95 | + return 3; | ||
| 96 | +} | ||
| 97 | + | ||
| 98 | +static int | ||
| 99 | +acp_pciex_port_init_hw(struct ppc4xx_pciex_port *port) | ||
| 100 | +{ | ||
| 101 | + return 0; | ||
| 102 | +} | ||
| 103 | + | ||
| 104 | +static int | ||
| 105 | +acp_pciex_setup_utl(struct ppc4xx_pciex_port *port) | ||
| 106 | +{ | ||
| 107 | + return 0; | ||
| 108 | +} | ||
| 109 | + | ||
| 110 | +static struct ppc4xx_pciex_hwops acp_pcie_hwops __initdata = | ||
| 111 | +{ | ||
| 112 | + .core_init = acp_pciex_core_init, | ||
| 113 | + .port_init_hw = acp_pciex_port_init_hw, | ||
| 114 | + .setup_utl = acp_pciex_setup_utl | ||
| 115 | +}; | ||
| 116 | + | ||
| 117 | +#endif | ||
| 118 | + | ||
| 119 | static int __init ppc460ex_pciex_core_init(struct device_node *np) | ||
| 120 | { | ||
| 121 | /* Nothing to do, return 2 ports */ | ||
| 122 | @@ -1419,6 +1488,11 @@ static int __init ppc4xx_pciex_check_core_init(struct device_node *np) | ||
| 123 | if (core_init++) | ||
| 124 | return 0; | ||
| 125 | |||
| 126 | +#if defined(CONFIG_ACP) | ||
| 127 | + if (of_device_is_compatible(np, "lsi,plb-pciex")) | ||
| 128 | + ppc4xx_pciex_hwops = &acp_pcie_hwops; | ||
| 129 | +#endif | ||
| 130 | + | ||
| 131 | #ifdef CONFIG_44x | ||
| 132 | if (of_device_is_compatible(np, "ibm,plb-pciex-440spe")) { | ||
| 133 | if (ppc440spe_revA()) | ||
| 134 | @@ -1578,9 +1652,11 @@ static int ppc4xx_pciex_validate_bdf(struct ppc4xx_pciex_port *port, | ||
| 135 | PCI_SLOT(devfn) != 0) | ||
| 136 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 137 | |||
| 138 | +#ifndef CONFIG_ACP | ||
| 139 | /* Check if we have a link */ | ||
| 140 | if ((bus->number != port->hose->first_busno) && !port->link) | ||
| 141 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 142 | +#endif | ||
| 143 | |||
| 144 | return 0; | ||
| 145 | } | ||
| 146 | @@ -1598,10 +1674,80 @@ static void __iomem *ppc4xx_pciex_get_config_base(struct ppc4xx_pciex_port *port | ||
| 147 | return (void __iomem *)port->hose->cfg_addr; | ||
| 148 | |||
| 149 | relbus = bus->number - (port->hose->first_busno + 1); | ||
| 150 | + | ||
| 151 | +#ifndef CONFIG_ACP | ||
| 152 | return (void __iomem *)port->hose->cfg_data + | ||
| 153 | ((relbus << 20) | (devfn << 12)); | ||
| 154 | +#else | ||
| 155 | + | ||
| 156 | + { | ||
| 157 | + unsigned mpage; | ||
| 158 | + u32 addr; | ||
| 159 | + int dev, fn; | ||
| 160 | + int cfg_type; | ||
| 161 | + | ||
| 162 | + /* | ||
| 163 | + * Set MPAGE0 to map config access for this BDF | ||
| 164 | + */ | ||
| 165 | + | ||
| 166 | + dev = ( (devfn & 0xf8) >> 3); | ||
| 167 | + fn = devfn & 0x7; | ||
| 168 | + | ||
| 169 | + if (dev > 31) { | ||
| 170 | + return NULL; | ||
| 171 | + } | ||
| 172 | + | ||
| 173 | +#ifdef CONFIG_ACP_X1V1 | ||
| 174 | + /* v1 only supports fn=0 */ | ||
| 175 | + if (fn) { | ||
| 176 | + return NULL; | ||
| 177 | + } | ||
| 178 | +#else | ||
| 179 | + /* v2 only supports fn0-3 and bus0-63 */ | ||
| 180 | + if (port->acpChipType == 1) { | ||
| 181 | + if ((fn > 3) || (bus->number > 63)) { | ||
| 182 | + return NULL; | ||
| 183 | + } | ||
| 184 | + } | ||
| 185 | +#endif | ||
| 186 | + | ||
| 187 | + if (relbus && (bus->number != bus->primary)) { | ||
| 188 | + cfg_type = 1; | ||
| 189 | + } else { | ||
| 190 | + cfg_type = 0; | ||
| 191 | + } | ||
| 192 | + | ||
| 193 | + /* build the mpage register */ | ||
| 194 | + mpage = (bus->number << 11) | | ||
| 195 | + (dev << 6) | | ||
| 196 | + (cfg_type << 5 ); | ||
| 197 | + | ||
| 198 | + mpage |= 0x10; /* enable MPAGE for configuration access */ | ||
| 199 | + | ||
| 200 | + if (5 > port->acpChipType) | ||
| 201 | + mpage |= 1; | ||
| 202 | + | ||
| 203 | + /* the function number moved for X2 */ | ||
| 204 | + if (port->acpChipType < 2) { | ||
| 205 | + mpage |= (fn << 17); | ||
| 206 | + } else { | ||
| 207 | + mpage |= (fn << 19); | ||
| 208 | + } | ||
| 209 | + | ||
| 210 | + | ||
| 211 | + if (mpage != last_mpage) { | ||
| 212 | + /* printk("%02x:%02x:%02x setting mpage = 0x%08x\n", bus->number, dev, fn, mpage); */ | ||
| 213 | + addr = ((u32) port->hose->cfg_addr) + ACPX1_PCIE_MPAGE_LOWER(7); | ||
| 214 | + out_le32((u32 *) addr, mpage); | ||
| 215 | + last_mpage = mpage; | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + return (void __iomem *)port->hose->cfg_data; | ||
| 219 | + } | ||
| 220 | +#endif | ||
| 221 | } | ||
| 222 | |||
| 223 | +#ifndef CONFIG_ACP | ||
| 224 | static int ppc4xx_pciex_read_config(struct pci_bus *bus, unsigned int devfn, | ||
| 225 | int offset, int len, u32 *val) | ||
| 226 | { | ||
| 227 | @@ -1703,10 +1849,225 @@ static int ppc4xx_pciex_write_config(struct pci_bus *bus, unsigned int devfn, | ||
| 228 | return PCIBIOS_SUCCESSFUL; | ||
| 229 | } | ||
| 230 | |||
| 231 | +#else | ||
| 232 | +static int | ||
| 233 | +ppc4xx_pciex_acp_read_config(struct pci_bus *bus, unsigned int devfn, | ||
| 234 | + int offset, int len, u32 *val) | ||
| 235 | +{ | ||
| 236 | + struct pci_controller *hose = (struct pci_controller *) bus->sysdata; | ||
| 237 | + struct ppc4xx_pciex_port *port = | ||
| 238 | + &ppc4xx_pciex_ports[hose->indirect_type]; | ||
| 239 | + void __iomem *addr; | ||
| 240 | + u32 bus_addr; | ||
| 241 | + u32 val32; | ||
| 242 | + u32 mcsr; | ||
| 243 | + int bo = offset & 0x3; | ||
| 244 | + int rc = PCIBIOS_SUCCESSFUL; | ||
| 245 | + | ||
| 246 | + BUG_ON(hose != port->hose); | ||
| 247 | + | ||
| 248 | + if (ppc4xx_pciex_validate_bdf(port, bus, devfn) != 0) | ||
| 249 | + return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 250 | + | ||
| 251 | + addr = ppc4xx_pciex_get_config_base(port, bus, devfn); | ||
| 252 | + | ||
| 253 | + if (!addr) { | ||
| 254 | + *val = 0; | ||
| 255 | + return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 256 | + } | ||
| 257 | + | ||
| 258 | + /* | ||
| 259 | + * Reading from configuration space of non-existing device can | ||
| 260 | + * generate transaction errors. For the read duration we suppress | ||
| 261 | + * assertion of machine check exceptions to avoid those. | ||
| 262 | + */ | ||
| 263 | + mtmsr( mfmsr() & ~(MSR_ME)); | ||
| 264 | + __asm__ __volatile__("msync"); | ||
| 265 | + | ||
| 266 | + /* | ||
| 267 | + * addressing is different for local config access vs. | ||
| 268 | + * access through the mapped config space. | ||
| 269 | + */ | ||
| 270 | + if (bus->number == port->hose->first_busno) { | ||
| 271 | + int wo = offset & 0xfffffffc; | ||
| 272 | + bus_addr = (u32) addr + wo; | ||
| 273 | + | ||
| 274 | + } else { | ||
| 275 | + | ||
| 276 | + /* | ||
| 277 | + * mapped config space only supports 32-bit access | ||
| 278 | + * | ||
| 279 | + * AXI address [3:0] is not used at all. | ||
| 280 | + * AXI address[9:4] becomes register number. | ||
| 281 | + * AXI address[13:10] becomes Ext. register number | ||
| 282 | + * AXI address[17:14] becomes 1st DWBE for configuration read only. | ||
| 283 | + * AXI address[29:27] is used to select one of 8 Mpage registers. | ||
| 284 | + */ | ||
| 285 | + | ||
| 286 | + bus_addr = (u32) addr + (offset << 2); | ||
| 287 | + | ||
| 288 | + switch (len) { | ||
| 289 | + case 1: | ||
| 290 | + bus_addr |= ((1 << bo) ) << 14; | ||
| 291 | + break; | ||
| 292 | + case 2: | ||
| 293 | + bus_addr |= ((3 << bo) ) << 14; | ||
| 294 | + break; | ||
| 295 | + default: | ||
| 296 | + bus_addr |= ( 0xf ) << 14; | ||
| 297 | + break; | ||
| 298 | + } | ||
| 299 | + | ||
| 300 | + } | ||
| 301 | + | ||
| 302 | + /* | ||
| 303 | + * do the read | ||
| 304 | + */ | ||
| 305 | + | ||
| 306 | + val32 = in_le32((u32 *)bus_addr); | ||
| 307 | + | ||
| 308 | + switch (len) { | ||
| 309 | + case 1: | ||
| 310 | + *val = (val32 >> (bo * 8)) & 0xff; | ||
| 311 | + break; | ||
| 312 | + case 2: | ||
| 313 | + *val = (val32 >> (bo * 8)) & 0xffff; | ||
| 314 | + break; | ||
| 315 | + default: | ||
| 316 | + *val = val32; | ||
| 317 | + break; | ||
| 318 | + } | ||
| 319 | + | ||
| 320 | + __asm__ __volatile__("msync"); | ||
| 321 | + | ||
| 322 | + mcsr = mfspr(SPRN_MCSR); | ||
| 323 | + if ( mcsr != 0) { | ||
| 324 | + mtspr(SPRN_MCSR, 0); | ||
| 325 | + __asm__ __volatile__("msync"); | ||
| 326 | + | ||
| 327 | +#ifdef PRINT_CONFIG_ACCESSES | ||
| 328 | + printk("acp_read_config : %3d [%3d..%3d] fn=0x%04x" | ||
| 329 | + " o=0x%04x l=%d a=0x%08x machine check!! 0x%08x\n", | ||
| 330 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 331 | + devfn, offset, len, bus_addr, mcsr); | ||
| 332 | +#endif | ||
| 333 | + pr_debug("acp_read_config : bus=%3d [%3d..%3d] devfn=0x%04x" | ||
| 334 | + " offset=0x%04x len=%d, addr=0x%08x machine check!! " | ||
| 335 | + "0x%08x\n", | ||
| 336 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 337 | + devfn, offset, len, bus_addr, mcsr); | ||
| 338 | + *val = 0; | ||
| 339 | + rc = PCIBIOS_DEVICE_NOT_FOUND; | ||
| 340 | + } else { | ||
| 341 | +#ifdef PRINT_CONFIG_ACCESSES | ||
| 342 | + printk("acp_read_config : %3d [%3d..%3d] fn=0x%04x" | ||
| 343 | + " o=0x%04x l=%d a=0x%08x v=0x%08x\n", | ||
| 344 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 345 | + devfn, offset, len, bus_addr, *val); | ||
| 346 | +#endif | ||
| 347 | + pr_debug("acp_read_config : bus=%3d [%3d..%3d] devfn=0x%04x" | ||
| 348 | + " offset=0x%04x len=%d, addr=0x%08x val=0x%08x\n", | ||
| 349 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 350 | + devfn, offset, len, bus_addr, *val); | ||
| 351 | + } | ||
| 352 | + | ||
| 353 | + /* re-enable machine checks */ | ||
| 354 | + mtmsr(mfmsr() | (MSR_ME) ); | ||
| 355 | + __asm__ __volatile__("msync"); | ||
| 356 | + | ||
| 357 | + return rc; | ||
| 358 | +} | ||
| 359 | + | ||
| 360 | +static int ppc4xx_pciex_acp_write_config(struct pci_bus *bus, unsigned int devfn, | ||
| 361 | + int offset, int len, u32 val) | ||
| 362 | +{ | ||
| 363 | + struct pci_controller *hose = (struct pci_controller *) bus->sysdata; | ||
| 364 | + struct ppc4xx_pciex_port *port = | ||
| 365 | + &ppc4xx_pciex_ports[hose->indirect_type]; | ||
| 366 | + void __iomem *addr; | ||
| 367 | + u32 bus_addr; | ||
| 368 | + u32 val32; | ||
| 369 | + | ||
| 370 | + if (ppc4xx_pciex_validate_bdf(port, bus, devfn) != 0) | ||
| 371 | + return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 372 | + | ||
| 373 | + addr = ppc4xx_pciex_get_config_base(port, bus, devfn); | ||
| 374 | + | ||
| 375 | + if (!addr) { | ||
| 376 | + return PCIBIOS_DEVICE_NOT_FOUND; | ||
| 377 | + } | ||
| 378 | + | ||
| 379 | + /* | ||
| 380 | + * addressing is different for local config access vs. | ||
| 381 | + * access through the mapped config space. We need to | ||
| 382 | + * translate the offset for mapped config access | ||
| 383 | + */ | ||
| 384 | + if (bus->number == port->hose->first_busno) { | ||
| 385 | + /* the local ACP RC only supports 32-bit dword config access, | ||
| 386 | + * so if this is a byte or 16-bit word access we need to | ||
| 387 | + * perform a read-modify write | ||
| 388 | + */ | ||
| 389 | + if (len == 4) { | ||
| 390 | + bus_addr = (u32) addr + offset; | ||
| 391 | + } else { | ||
| 392 | + int bs = ((offset & 0x3) * 8); | ||
| 393 | + | ||
| 394 | + bus_addr = (u32) addr + (offset & 0xfffffffc); | ||
| 395 | + val32 = in_le32((u32 *)bus_addr); | ||
| 396 | + | ||
| 397 | + | ||
| 398 | + if (len == 2) { | ||
| 399 | + val32 = (val32 & ~(0xffff << bs) ) | ((val & 0xffff) << bs); | ||
| 400 | + } else { | ||
| 401 | + val32 = (val32 & ~(0xff << bs) ) | ((val & 0xff) << bs); | ||
| 402 | + } | ||
| 403 | + | ||
| 404 | + val = val32; | ||
| 405 | + len = 4; | ||
| 406 | + } | ||
| 407 | + | ||
| 408 | + } else { | ||
| 409 | + bus_addr = (u32) addr + (offset << 2) + (offset & 0x3); | ||
| 410 | + } | ||
| 411 | + | ||
| 412 | +#ifdef PRINT_CONFIG_ACCESSES | ||
| 413 | + printk("acp_write_config: %3d [%3d..%3d] fn=0x%04x" | ||
| 414 | + " o=0x%04x l=%d a=0x%08x v=0x%08x\n", | ||
| 415 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 416 | + devfn, offset, len, bus_addr, val); | ||
| 417 | +#endif | ||
| 418 | + pr_debug("acp_write_config: bus=%3d [%3d..%3d] devfn=0x%04x" | ||
| 419 | + " offset=0x%04x len=%d, addr=0x%08x val=0x%08x\n", | ||
| 420 | + bus->number, hose->first_busno, hose->last_busno, | ||
| 421 | + devfn, offset, len, bus_addr, val); | ||
| 422 | + | ||
| 423 | + | ||
| 424 | + switch (len) { | ||
| 425 | + case 1: | ||
| 426 | + out_8((u8 *)(bus_addr), val); | ||
| 427 | + break; | ||
| 428 | + case 2: | ||
| 429 | + out_le16((u16 *)(bus_addr), val); | ||
| 430 | + break; | ||
| 431 | + default: | ||
| 432 | + out_le32((u32 *)(bus_addr), val); | ||
| 433 | + break; | ||
| 434 | + } | ||
| 435 | + | ||
| 436 | + return PCIBIOS_SUCCESSFUL; | ||
| 437 | +} | ||
| 438 | + | ||
| 439 | +#endif | ||
| 440 | + | ||
| 441 | static struct pci_ops ppc4xx_pciex_pci_ops = | ||
| 442 | { | ||
| 443 | +#ifndef CONFIG_ACP | ||
| 444 | .read = ppc4xx_pciex_read_config, | ||
| 445 | .write = ppc4xx_pciex_write_config, | ||
| 446 | +#else | ||
| 447 | + .read = ppc4xx_pciex_acp_read_config, | ||
| 448 | + .write = ppc4xx_pciex_acp_write_config, | ||
| 449 | +#endif | ||
| 450 | }; | ||
| 451 | |||
| 452 | static int __init ppc4xx_setup_one_pciex_POM(struct ppc4xx_pciex_port *port, | ||
| 453 | @@ -1718,7 +2079,10 @@ static int __init ppc4xx_setup_one_pciex_POM(struct ppc4xx_pciex_port *port, | ||
| 454 | unsigned int flags, | ||
| 455 | int index) | ||
| 456 | { | ||
| 457 | - u32 lah, lal, pciah, pcial, sa; | ||
| 458 | + u32 pciah, pcial; | ||
| 459 | +#ifndef CONFIG_ACP | ||
| 460 | + u32 lah, lal, sa; | ||
| 461 | +#endif | ||
| 462 | |||
| 463 | if (!is_power_of_2(size) || | ||
| 464 | (index < 2 && size < 0x100000) || | ||
| 465 | @@ -1730,10 +2094,11 @@ static int __init ppc4xx_setup_one_pciex_POM(struct ppc4xx_pciex_port *port, | ||
| 466 | } | ||
| 467 | |||
| 468 | /* Calculate register values */ | ||
| 469 | - lah = RES_TO_U32_HIGH(plb_addr); | ||
| 470 | - lal = RES_TO_U32_LOW(plb_addr); | ||
| 471 | pciah = RES_TO_U32_HIGH(pci_addr); | ||
| 472 | pcial = RES_TO_U32_LOW(pci_addr); | ||
| 473 | +#ifndef CONFIG_ACP | ||
| 474 | + lah = RES_TO_U32_HIGH(plb_addr); | ||
| 475 | + lal = RES_TO_U32_LOW(plb_addr); | ||
| 476 | sa = (0xffffffffu << ilog2(size)) | 0x1; | ||
| 477 | |||
| 478 | /* Program register values */ | ||
| 479 | @@ -1779,6 +2144,41 @@ static int __init ppc4xx_setup_one_pciex_POM(struct ppc4xx_pciex_port *port, | ||
| 480 | | DCRO_PEGPL_OMRxMSKL_VAL); | ||
| 481 | break; | ||
| 482 | } | ||
| 483 | +#else | ||
| 484 | + { | ||
| 485 | + /* ACP X1 setup MPAGE registers */ | ||
| 486 | + | ||
| 487 | + int i, num_pages; | ||
| 488 | + u32 mpage_lower; | ||
| 489 | + | ||
| 490 | + printk(KERN_INFO "setting outbound window %d with " | ||
| 491 | + "plb_add=0x%012llx, pci_addr=0x%012llx, size=0x%012llx\n", | ||
| 492 | + index, plb_addr, pci_addr, size); | ||
| 493 | + | ||
| 494 | + /* | ||
| 495 | + * MPAGE7 is dedicated to config access, so we only | ||
| 496 | + * have 7 128MB pages available for memory i/o. | ||
| 497 | + * Calculate how many pages we need | ||
| 498 | + */ | ||
| 499 | + if (size > (7 * 0x08000000)) { | ||
| 500 | + printk(KERN_WARNING "%s: Resource size 0x%012llx out of range\n", | ||
| 501 | + hose->dn->full_name, size); | ||
| 502 | + return -1; | ||
| 503 | + } | ||
| 504 | + | ||
| 505 | + num_pages = ( (size - 1) >> 27) + 1; | ||
| 506 | + for (i = 0; i < num_pages; i++) { | ||
| 507 | + mpage_lower = (pcial & 0xf8000000); | ||
| 508 | + | ||
| 509 | + if (5 > port->acpChipType) | ||
| 510 | + mpage_lower |= 1; | ||
| 511 | + | ||
| 512 | + out_le32( mbase + ACPX1_PCIE_MPAGE_UPPER(i), pciah); | ||
| 513 | + out_le32( mbase + ACPX1_PCIE_MPAGE_LOWER(i), mpage_lower); | ||
| 514 | + pcial += 0x08000000; | ||
| 515 | + } | ||
| 516 | + } | ||
| 517 | +#endif | ||
| 518 | |||
| 519 | return 0; | ||
| 520 | } | ||
| 521 | @@ -1907,6 +2307,108 @@ static void __init ppc4xx_configure_pciex_PIMs(struct ppc4xx_pciex_port *port, | ||
| 522 | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); | ||
| 523 | } | ||
| 524 | |||
| 525 | +#if defined(CONFIG_ACP) | ||
| 526 | + | ||
| 527 | +static void __init | ||
| 528 | +ppc4xx_configure_acp_pciex_PIMs(struct ppc4xx_pciex_port *port, | ||
| 529 | + struct pci_controller *hose, | ||
| 530 | + void __iomem *mbase, | ||
| 531 | + struct resource *res) | ||
| 532 | +{ | ||
| 533 | + resource_size_t size = res->end - res->start + 1; | ||
| 534 | + u64 sa; | ||
| 535 | + u32 value = 0; | ||
| 536 | + void __iomem *tpage_base = mbase + 0x1050; | ||
| 537 | + | ||
| 538 | + if (port->endpoint) { | ||
| 539 | + resource_size_t ep_addr = 0; | ||
| 540 | + resource_size_t ep_size = 32 << 20; | ||
| 541 | + | ||
| 542 | + /* Currently we map a fixed 64MByte window to PLB address | ||
| 543 | + * 0 (SDRAM). This should probably be configurable via a dts | ||
| 544 | + * property. | ||
| 545 | + */ | ||
| 546 | + | ||
| 547 | + /* Calculate window size */ | ||
| 548 | + sa = (0xffffffffffffffffull << ilog2(ep_size));; | ||
| 549 | + | ||
| 550 | + /* TODO: */ | ||
| 551 | + | ||
| 552 | + out_le32(mbase + PCI_BASE_ADDRESS_0, RES_TO_U32_LOW(ep_addr)); | ||
| 553 | + out_le32(mbase + PCI_BASE_ADDRESS_1, RES_TO_U32_HIGH(ep_addr)); | ||
| 554 | + } else { | ||
| 555 | + /* Calculate window size */ | ||
| 556 | + sa = (0xffffffffffffffffull << ilog2(size));; | ||
| 557 | + | ||
| 558 | + if (res->flags & IORESOURCE_PREFETCH) | ||
| 559 | + sa |= 0x8; | ||
| 560 | + | ||
| 561 | + printk(KERN_INFO | ||
| 562 | + "configure inbound mapping from 0x%012llx-0x%012llx " | ||
| 563 | + "(0x%08llx bytes)\n", res->start, res->end, size); | ||
| 564 | + | ||
| 565 | + if (0 != ncr_read(NCP_REGION_ID(0xa, 0x10), 0x2c, 4, &value)) | ||
| 566 | + printk(KERN_WARNING "** Unable to get ACP type!\n"); | ||
| 567 | + | ||
| 568 | + /* | ||
| 569 | + * For ACP we need to set the dema_offset to the size of | ||
| 570 | + * inbound window. | ||
| 571 | + */ | ||
| 572 | + | ||
| 573 | + pci_dram_offset = size; | ||
| 574 | + hose->dma_window_base_cur = size; | ||
| 575 | + | ||
| 576 | + out_le32(mbase + PCI_BASE_ADDRESS_0, RES_TO_U32_LOW(size)); | ||
| 577 | + out_le32(mbase + PCI_BASE_ADDRESS_1, RES_TO_U32_HIGH(size)); | ||
| 578 | + | ||
| 579 | + if (5 == port->acpChipType) { | ||
| 580 | + printk(KERN_WARNING "Setting SIZE for 2500\n"); | ||
| 581 | + out_le32(mbase + 0x11f4, 0xf0000000UL); | ||
| 582 | + } | ||
| 583 | + | ||
| 584 | + /* | ||
| 585 | + * set up the TPAGE registers | ||
| 586 | + * | ||
| 587 | + * We set the MSB of each TPAGE to select 128-bit AXI access. | ||
| 588 | + * For the address field we simply program an incrementing value | ||
| 589 | + * to map consecutive pages | ||
| 590 | + */ | ||
| 591 | + if (0 == acp_plx) { | ||
| 592 | + int i; | ||
| 593 | + | ||
| 594 | + for (i = 0; i < 8; i++) { | ||
| 595 | + out_le32(tpage_base, (0x80000000 + i)); | ||
| 596 | + tpage_base += 4; | ||
| 597 | + } | ||
| 598 | + } else { | ||
| 599 | + out_le32(tpage_base, 0x0); /* tpage 0 point to 0x0, not used */ | ||
| 600 | + tpage_base +=4; | ||
| 601 | + out_le32(tpage_base, 0x0); /* tpage 1 point to 0x0, not used */ | ||
| 602 | + tpage_base +=4; | ||
| 603 | + out_le32(tpage_base, 0x0); /* tpage 2 point to 0x0, not used */ | ||
| 604 | + tpage_base +=4; | ||
| 605 | + out_le32(tpage_base, 0x0); /* tpage 3 point to 0x0, not used */ | ||
| 606 | + tpage_base +=4; | ||
| 607 | + out_le32(tpage_base, 0x0); /* tpage 4 point to 0x0, not used */ | ||
| 608 | + tpage_base +=4; | ||
| 609 | + out_le32(tpage_base, 0x0); /* tpage 5 point to 0x0, not used */ | ||
| 610 | + tpage_base +=4; | ||
| 611 | + out_le32(tpage_base, 0x0); /* tpage 6 point to 0x0 for dynamic mapping */ | ||
| 612 | + tpage_base +=4; | ||
| 613 | + out_le32(tpage_base, 0x80001000); /* tpage 7 point to 0x20,0000,0000 tpage size = 256MB */ | ||
| 614 | + } | ||
| 615 | + } | ||
| 616 | + | ||
| 617 | + /* Enable I/O, Mem, and Busmaster cycles */ | ||
| 618 | +#if 0 | ||
| 619 | + out_le16(mbase + PCI_COMMAND, | ||
| 620 | + in_le16(mbase + PCI_COMMAND) | | ||
| 621 | + PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); | ||
| 622 | +#endif | ||
| 623 | +} | ||
| 624 | + | ||
| 625 | +#endif | ||
| 626 | + | ||
| 627 | static void __init ppc4xx_pciex_port_setup_hose(struct ppc4xx_pciex_port *port) | ||
| 628 | { | ||
| 629 | struct resource dma_window; | ||
| 630 | @@ -2070,6 +2572,439 @@ static void __init ppc4xx_pciex_port_setup_hose(struct ppc4xx_pciex_port *port) | ||
| 631 | iounmap(mbase); | ||
| 632 | } | ||
| 633 | |||
| 634 | +#if defined(CONFIG_ACP) | ||
| 635 | + | ||
| 636 | +static irqreturn_t | ||
| 637 | +acp_pcie_isr(int irq, void *arg) | ||
| 638 | +{ | ||
| 639 | + struct pci_controller *hose = (struct pci_controller *) arg; | ||
| 640 | + void __iomem *mbase = (void __iomem *)hose->cfg_addr; | ||
| 641 | + | ||
| 642 | + u32 intr_status; | ||
| 643 | + u32 msg_fifo_stat; | ||
| 644 | + u32 msg_fifo_info; | ||
| 645 | + u8 externalPciIntr = 0; | ||
| 646 | + | ||
| 647 | + | ||
| 648 | + /* read the PEI interrupt status register */ | ||
| 649 | + intr_status = in_le32(mbase + 0x10c0); | ||
| 650 | +#if 0 | ||
| 651 | + { | ||
| 652 | + u32 intr_enb; | ||
| 653 | + intr_enb = in_le32(mbase + 0x10c4); | ||
| 654 | + printk("PCIE%d mbase %p intr_status/enb = 0x%08x 0x%08x\n", | ||
| 655 | + hose->indirect_type, mbase, intr_status, intr_enb); | ||
| 656 | + } | ||
| 657 | +#else | ||
| 658 | + in_le32(mbase + 0x10c4); | ||
| 659 | +#endif | ||
| 660 | + | ||
| 661 | + /* check if this is a PCIe message from an external device */ | ||
| 662 | + if (intr_status & 0x00000010) { | ||
| 663 | + externalPciIntr = 1; | ||
| 664 | + | ||
| 665 | + msg_fifo_stat = in_le32(mbase + 0x10b4); | ||
| 666 | + | ||
| 667 | + /* loop until the message fifo is empty */ | ||
| 668 | + while ( (msg_fifo_stat & 0x01) == 0) { | ||
| 669 | + u8 bus, dev, fn; | ||
| 670 | + u8 msg_type; | ||
| 671 | + msg_fifo_info = in_le32(mbase + 0x10b0); | ||
| 672 | + | ||
| 673 | + bus = (msg_fifo_info >> 16 ) & 0xff; | ||
| 674 | + dev = (msg_fifo_info >> 11 ) & 0x1f; | ||
| 675 | + fn = (msg_fifo_info >> 8 ) & 0x07; | ||
| 676 | + msg_type = msg_fifo_info & 0xff; | ||
| 677 | + | ||
| 678 | + /* print out the BDF and message type. | ||
| 679 | + * We ignore the common message types. | ||
| 680 | + */ | ||
| 681 | + switch (msg_type) { | ||
| 682 | + case 0x20: /* assert_INTa */ | ||
| 683 | + case 0x21: /* assert_INTb */ | ||
| 684 | + case 0x22: /* assert_INTc */ | ||
| 685 | + case 0x23: /* assert_INTd */ | ||
| 686 | + case 0x24: /* de-assert_INTa */ | ||
| 687 | + case 0x25: /* de-assert_INTb */ | ||
| 688 | + case 0x26: /* de-assert_INTc */ | ||
| 689 | + case 0x27: /* de-assert_INTd */ | ||
| 690 | + /* do nothing */ | ||
| 691 | + break; | ||
| 692 | + default: | ||
| 693 | + printk("BDF %02x:%02x.%x sent msgtype 0x%02x\n", | ||
| 694 | + bus, dev, fn, msg_type); | ||
| 695 | + break; | ||
| 696 | + } | ||
| 697 | + | ||
| 698 | + /* re-read fifo status */ | ||
| 699 | + msg_fifo_stat = in_le32(mbase + 0x10b4); | ||
| 700 | + | ||
| 701 | + } | ||
| 702 | + } else { | ||
| 703 | + /* | ||
| 704 | + Ignore the common interrupts, still need to figure out what | ||
| 705 | + they all mean. | ||
| 706 | + */ | ||
| 707 | + if (intr_status & 0xf3ffffab) { | ||
| 708 | + u32 t2a_err_stat; | ||
| 709 | + u32 t2a_other_err_stat; | ||
| 710 | + u32 int_enb; | ||
| 711 | + u32 linkStatus; | ||
| 712 | + u32 offset; | ||
| 713 | + | ||
| 714 | + printk(KERN_ERR "ACP_PCIE_ISR: got PEI error interrupt 0x%08x\n", | ||
| 715 | + intr_status); | ||
| 716 | + | ||
| 717 | + linkStatus = in_le32(mbase + 0x117c); | ||
| 718 | + printk(KERN_ERR "link_status (0x117c) = 0x%08x\n", linkStatus); | ||
| 719 | + | ||
| 720 | + if (intr_status & 0x00020000) { | ||
| 721 | + t2a_err_stat = in_le32(mbase + 0x1170); | ||
| 722 | + printk(KERN_ERR "t2a_fn_indp_err_stat = 0x%08x\n", t2a_err_stat); | ||
| 723 | + int_enb = in_le32(mbase + 0x10c4); | ||
| 724 | + int_enb &= 0xfffdffff; | ||
| 725 | + out_le32(mbase + 0x10c4, int_enb); | ||
| 726 | + } | ||
| 727 | + | ||
| 728 | + if (intr_status & 0x00040000) { | ||
| 729 | + t2a_other_err_stat = in_le32(mbase + 0x1174); | ||
| 730 | + printk(KERN_ERR "t2a_fn_indp_other_err_stat = 0x%08x\n", | ||
| 731 | + t2a_other_err_stat); | ||
| 732 | + int_enb = in_le32(mbase + 0x10c4); | ||
| 733 | + int_enb &= 0xfffbffff; | ||
| 734 | + out_le32(mbase + 0x10c4, int_enb); | ||
| 735 | + } | ||
| 736 | + | ||
| 737 | + if (intr_status & 0x00000800) { | ||
| 738 | + printk("pci_config = 0x%08x\n", in_le32(mbase + 0x1000)); | ||
| 739 | + printk("pci_status = 0x%08x\n", in_le32(mbase + 0x1004)); | ||
| 740 | + | ||
| 741 | + int_enb = in_le32(mbase + 0x10c4); | ||
| 742 | + int_enb &= 0xfffff7ff; | ||
| 743 | + out_le32(mbase + 0x10c4, int_enb); | ||
| 744 | + } | ||
| 745 | + | ||
| 746 | + /* | ||
| 747 | + * dump all the potentially interesting PEI registers | ||
| 748 | + */ | ||
| 749 | + for (offset = 0x114c; offset <= 0x1180; offset += 4) { | ||
| 750 | + printk(" 0x%04x : 0x%08x\n", offset, in_le32(mbase + offset)); | ||
| 751 | + } | ||
| 752 | + } | ||
| 753 | + } | ||
| 754 | + | ||
| 755 | + /* | ||
| 756 | + * We clear all the interrupts in the PEI status, even though | ||
| 757 | + * interrupts from external devices have not yet been handled. | ||
| 758 | + * That should be okay, since the PCI IRQ in the MPIC won't be | ||
| 759 | + * re-enabled until all external handlers have been called. | ||
| 760 | + */ | ||
| 761 | + out_le32(mbase + 0x10c0, intr_status); | ||
| 762 | + | ||
| 763 | + return (externalPciIntr ? IRQ_NONE : IRQ_HANDLED); | ||
| 764 | +} | ||
| 765 | + | ||
| 766 | +static void __init ppc4xx_acp_pciex_port_setup_hose(struct ppc4xx_pciex_port *port) | ||
| 767 | +{ | ||
| 768 | + struct resource dma_window; | ||
| 769 | + struct pci_controller *hose = NULL; | ||
| 770 | + const int *bus_range; | ||
| 771 | + int primary = 0, busses; | ||
| 772 | + void __iomem *mbase = NULL, *cfg_data = NULL; | ||
| 773 | + int mappedIrq; | ||
| 774 | + int err; | ||
| 775 | + u32 pci_status; | ||
| 776 | + u32 link_state; | ||
| 777 | + u32 pci_config; | ||
| 778 | + u32 version; | ||
| 779 | + | ||
| 780 | + /* Check if primary bridge */ | ||
| 781 | + if (of_get_property(port->node, "primary", NULL)) | ||
| 782 | + primary = 1; | ||
| 783 | + | ||
| 784 | + /* Get bus range if any */ | ||
| 785 | + bus_range = of_get_property(port->node, "bus-range", NULL); | ||
| 786 | + | ||
| 787 | + /* Allocate the host controller data structure */ | ||
| 788 | + hose = pcibios_alloc_controller(port->node); | ||
| 789 | + if (!hose) | ||
| 790 | + goto fail; | ||
| 791 | + | ||
| 792 | + /* We stick the port number in "indirect_type" so the config space | ||
| 793 | + * ops can retrieve the port data structure easily | ||
| 794 | + */ | ||
| 795 | + hose->indirect_type = port->index; | ||
| 796 | + | ||
| 797 | + /* Get bus range */ | ||
| 798 | + hose->first_busno = bus_range ? bus_range[0] : 0x0; | ||
| 799 | + hose->last_busno = bus_range ? bus_range[1] : 0xff; | ||
| 800 | + | ||
| 801 | + /* Because of how big mapping the config space is (1M per bus), we | ||
| 802 | + * limit how many busses we support. In the long run, we could replace | ||
| 803 | + * that with something akin to kmap_atomic instead. We set aside 1 bus | ||
| 804 | + * for the host itself too. | ||
| 805 | + */ | ||
| 806 | + busses = hose->last_busno - hose->first_busno; /* This is off by 1 */ | ||
| 807 | + if (busses > MAX_PCIE_BUS_MAPPED) { | ||
| 808 | + busses = MAX_PCIE_BUS_MAPPED; | ||
| 809 | + hose->last_busno = hose->first_busno + busses; | ||
| 810 | + } | ||
| 811 | + | ||
| 812 | + if (!port->endpoint) { | ||
| 813 | + /* | ||
| 814 | + * map the bottom page of PCIe memory for config space access | ||
| 815 | + */ | ||
| 816 | + cfg_data = ioremap(port->cfg_space.start, 0x100000); | ||
| 817 | + if (cfg_data == NULL) { | ||
| 818 | + printk(KERN_ERR "%s: Can't map external config space !", | ||
| 819 | + port->node->full_name); | ||
| 820 | + goto fail; | ||
| 821 | + } | ||
| 822 | + hose->cfg_data = cfg_data; | ||
| 823 | + } | ||
| 824 | + | ||
| 825 | + /* | ||
| 826 | + * The internal config space has already been mapped, so | ||
| 827 | + * just re-use that virtual address. | ||
| 828 | + */ | ||
| 829 | + hose->cfg_addr = port->utl_base; | ||
| 830 | + | ||
| 831 | + pr_debug("PCIE %s, bus %d..%d\n", port->node->full_name, | ||
| 832 | + hose->first_busno, hose->last_busno); | ||
| 833 | + pr_debug(" config space mapped at: root @0x%p, other @0x%p\n", | ||
| 834 | + hose->cfg_addr, hose->cfg_data); | ||
| 835 | + | ||
| 836 | + /* Setup config space */ | ||
| 837 | + hose->ops = &ppc4xx_pciex_pci_ops; | ||
| 838 | + port->hose = hose; | ||
| 839 | + mbase = (void __iomem *)hose->cfg_addr; | ||
| 840 | + | ||
| 841 | + if (port->endpoint) { | ||
| 842 | + /* if we're an endpoint don't do anything else */ | ||
| 843 | + printk(KERN_INFO "PCIE%d: successfully set as endpoint\n", | ||
| 844 | + port->index); | ||
| 845 | + return; | ||
| 846 | + } | ||
| 847 | + | ||
| 848 | + /* setting up as root complex */ | ||
| 849 | + pci_config = in_le32(mbase + 0x1000); | ||
| 850 | + | ||
| 851 | + pci_status = in_le32(mbase + 0x1004); | ||
| 852 | + link_state = (pci_status & 0x3f00) >> 8; | ||
| 853 | + printk("PCIE%d status = 0x%08x : PCI link state = 0x%x\n", | ||
| 854 | + port->index, pci_status, link_state); | ||
| 855 | + | ||
| 856 | + /* make sure the ACP device is configured as PCI Root Complex */ | ||
| 857 | + if ((pci_status & 0x18) != 0x18) { | ||
| 858 | + printk("ACP device is not PCI Root Complex! status = 0x%08x\n", | ||
| 859 | + pci_status); | ||
| 860 | + goto fail; | ||
| 861 | + } | ||
| 862 | + | ||
| 863 | + /* make sure the link is up */ | ||
| 864 | + if (link_state != 0xb) { | ||
| 865 | + /* reset */ | ||
| 866 | + printk("PCI link in bad state - resetting\n"); | ||
| 867 | + pci_config |= 1; | ||
| 868 | + out_le32(mbase + 0x1000, pci_config); | ||
| 869 | + msleep(1000); | ||
| 870 | + | ||
| 871 | + pci_status = in_le32(mbase + 0x1004); | ||
| 872 | + link_state = (pci_status & 0x3f00) >> 8; | ||
| 873 | + | ||
| 874 | + printk("PCI link state now = 0x%x\n", link_state); | ||
| 875 | + | ||
| 876 | + if (link_state != 0xb) { | ||
| 877 | + printk("PCI link still in bad state - giving up!\n"); | ||
| 878 | + goto fail; | ||
| 879 | + } | ||
| 880 | + } | ||
| 881 | + | ||
| 882 | + /* get the device version */ | ||
| 883 | + if (0 != ncr_read(NCP_REGION_ID(0xa, 0x10), 0x2c, 4, &version)) { | ||
| 884 | + printk(KERN_ERR "Unable to detect ACP revision!\n"); | ||
| 885 | + goto fail; | ||
| 886 | + } | ||
| 887 | + port->acpChipType = (version & 0x1f); | ||
| 888 | + printk(KERN_INFO "Using PEI register set for ACP chipType %d\n", | ||
| 889 | + port->acpChipType); | ||
| 890 | + | ||
| 891 | + /* | ||
| 892 | + * Set bus numbers on our root port | ||
| 893 | + */ | ||
| 894 | + out_8(mbase + PCI_PRIMARY_BUS, hose->first_busno); | ||
| 895 | + out_8(mbase + PCI_SECONDARY_BUS, hose->first_busno + 1); | ||
| 896 | + out_8(mbase + PCI_SUBORDINATE_BUS, hose->last_busno); | ||
| 897 | + | ||
| 898 | + | ||
| 899 | + /* Parse outbound mapping resources */ | ||
| 900 | + pci_process_bridge_OF_ranges(hose, port->node, primary); | ||
| 901 | + | ||
| 902 | + /* Parse inbound mapping resources */ | ||
| 903 | + if (ppc4xx_parse_dma_ranges(hose, mbase, &dma_window) != 0) | ||
| 904 | + goto fail; | ||
| 905 | + | ||
| 906 | + /* Configure outbound ranges POMs */ | ||
| 907 | + ppc4xx_configure_pciex_POMs(port, hose, mbase); | ||
| 908 | + | ||
| 909 | + /* Configure inbound ranges PIMs */ | ||
| 910 | + ppc4xx_configure_acp_pciex_PIMs(port, hose, mbase, &dma_window); | ||
| 911 | + | ||
| 912 | + /* | ||
| 913 | + * hook up an interrupt handler | ||
| 914 | + */ | ||
| 915 | +#if 0 | ||
| 916 | + mappedIrq = irq_create_mapping(NULL, 29); | ||
| 917 | + if (mappedIrq == NO_IRQ) { | ||
| 918 | + printk(KERN_ERR "irq_create_mapping failed!!!\n"); | ||
| 919 | + goto fail; | ||
| 920 | + } | ||
| 921 | + | ||
| 922 | + err = set_irq_type(mappedIrq, IRQ_TYPE_LEVEL_HIGH); | ||
| 923 | + if (err) { | ||
| 924 | + printk(KERN_ERR "set_irq_type failed!!!!\n"); | ||
| 925 | + goto fail; | ||
| 926 | + } | ||
| 927 | +#endif | ||
| 928 | + printk("PCIE%d mapping interrupt\n", port->index); | ||
| 929 | + mappedIrq = irq_of_parse_and_map(port->node, 0); | ||
| 930 | + | ||
| 931 | + err = request_irq(mappedIrq, acp_pcie_isr, IRQF_SHARED, "acp_pcie", hose); | ||
| 932 | + if (err) { | ||
| 933 | + printk(KERN_ERR "request_irq failed!!!!\n"); | ||
| 934 | + goto fail; | ||
| 935 | + } | ||
| 936 | + | ||
| 937 | + /* unmask PEI interrupts */ | ||
| 938 | +#if 0 | ||
| 939 | + out_le32(mbase + 0x10c4, 0xffffffff); | ||
| 940 | +#else | ||
| 941 | + /* for now ignore retry requests, and INT assert/deassert */ | ||
| 942 | + out_le32(mbase + 0x10c4, 0xf3fffffd); | ||
| 943 | +#endif | ||
| 944 | + | ||
| 945 | + if (port->acpChipType == 1) { | ||
| 946 | + /* | ||
| 947 | + * for v2 we need to set the 'axi_interface_rdy' bit | ||
| 948 | + * this bit didn't exist in X1V1, and means something | ||
| 949 | + * else for X2... | ||
| 950 | + */ | ||
| 951 | + pci_config = in_le32(mbase + 0x1000); | ||
| 952 | + pci_config |= 0x00040000; | ||
| 953 | + out_le32(mbase + 0x1000, pci_config); | ||
| 954 | + } | ||
| 955 | + | ||
| 956 | + if (!port->endpoint) { | ||
| 957 | + printk(KERN_INFO "PCIE%d: successfully set as root-complex\n", | ||
| 958 | + port->index); | ||
| 959 | + } else { | ||
| 960 | + } | ||
| 961 | + | ||
| 962 | + return; | ||
| 963 | + fail: | ||
| 964 | + if (hose) | ||
| 965 | + pcibios_free_controller(hose); | ||
| 966 | + if (cfg_data) | ||
| 967 | + iounmap(cfg_data); | ||
| 968 | +} | ||
| 969 | + | ||
| 970 | +static void __init ppc4xx_probe_acp_pciex_bridge(struct device_node *np) | ||
| 971 | +{ | ||
| 972 | + struct ppc4xx_pciex_port *port; | ||
| 973 | + const u32 *pval; | ||
| 974 | + int portno; | ||
| 975 | + const char *val; | ||
| 976 | + const u32 *field; | ||
| 977 | + | ||
| 978 | + /* First, proceed to core initialization as we assume there's | ||
| 979 | + * only one PCIe core in the system | ||
| 980 | + */ | ||
| 981 | + if (ppc4xx_pciex_check_core_init(np)) | ||
| 982 | + return; | ||
| 983 | + | ||
| 984 | + /* Get the port number from the device-tree */ | ||
| 985 | + pval = of_get_property(np, "port", NULL); | ||
| 986 | + if (pval == NULL) { | ||
| 987 | + printk(KERN_ERR "PCIE: Can't find port number for %s\n", | ||
| 988 | + np->full_name); | ||
| 989 | + return; | ||
| 990 | + } | ||
| 991 | + portno = *pval; | ||
| 992 | + if (portno >= ppc4xx_pciex_port_count) { | ||
| 993 | + printk(KERN_ERR "PCIE: port number out of range for %s\n", | ||
| 994 | + np->full_name); | ||
| 995 | + return; | ||
| 996 | + } | ||
| 997 | + port = &ppc4xx_pciex_ports[portno]; | ||
| 998 | + port->index = portno; | ||
| 999 | + | ||
| 1000 | + /* | ||
| 1001 | + * Check if device is enabled | ||
| 1002 | + */ | ||
| 1003 | + if (!of_device_is_available(np)) { | ||
| 1004 | + printk(KERN_INFO "PCIE%d: Port disabled via device-tree\n", | ||
| 1005 | + port->index); | ||
| 1006 | + return; | ||
| 1007 | + } | ||
| 1008 | + | ||
| 1009 | + /* Make sure PCIe is enabled in the device tree. */ | ||
| 1010 | + field = of_get_property(np, "enabled", NULL); | ||
| 1011 | + | ||
| 1012 | + if (!field || (field && (0 == *field))) { | ||
| 1013 | + printk(KERN_INFO "%s: Port disabled via device-tree\n", | ||
| 1014 | + np->full_name); | ||
| 1015 | + return; | ||
| 1016 | + } | ||
| 1017 | + | ||
| 1018 | + /* Check for the PLX work-around. */ | ||
| 1019 | + field = of_get_property(np, "plx", NULL); | ||
| 1020 | + | ||
| 1021 | + if (field && (0 != *field)) | ||
| 1022 | + acp_plx = 1; | ||
| 1023 | + else | ||
| 1024 | + acp_plx = 0; | ||
| 1025 | + | ||
| 1026 | + port->node = of_node_get(np); | ||
| 1027 | + | ||
| 1028 | + /* Check if device_type property is set to "pci" or "pci-endpoint". | ||
| 1029 | + * Resulting from this setup this PCIe port will be configured | ||
| 1030 | + * as root-complex or as endpoint. | ||
| 1031 | + */ | ||
| 1032 | + val = of_get_property(port->node, "device_type", NULL); | ||
| 1033 | + if (!strcmp(val, "pci-endpoint")) { | ||
| 1034 | + port->endpoint = 1; | ||
| 1035 | + } else if (!strcmp(val, "pci")) { | ||
| 1036 | + port->endpoint = 0; | ||
| 1037 | + } else { | ||
| 1038 | + printk(KERN_ERR "PCIE%d: missing or incorrect device_type for %s\n", | ||
| 1039 | + portno, np->full_name); | ||
| 1040 | + return; | ||
| 1041 | + } | ||
| 1042 | + | ||
| 1043 | + /* Fetch config space registers address */ | ||
| 1044 | + if (of_address_to_resource(np, 0, &port->cfg_space)) { | ||
| 1045 | + printk(KERN_ERR "%s: Can't get PCI-E config space !", | ||
| 1046 | + np->full_name); | ||
| 1047 | + return; | ||
| 1048 | + } | ||
| 1049 | + | ||
| 1050 | + /* Fetch host bridge internal registers address */ | ||
| 1051 | + if (of_address_to_resource(np, 1, &port->utl_regs)) { | ||
| 1052 | + printk(KERN_ERR "%s: Can't get UTL register base !", | ||
| 1053 | + np->full_name); | ||
| 1054 | + return; | ||
| 1055 | + } | ||
| 1056 | + | ||
| 1057 | + port->utl_base = ioremap(port->utl_regs.start, resource_size(&port->utl_regs)); | ||
| 1058 | + | ||
| 1059 | + printk("%s PCIE%d config base = 0x%012llx (0x%08x virtual)\n", np->full_name, port->index, port->utl_regs.start, (u32) port->utl_base); | ||
| 1060 | + | ||
| 1061 | + /* Setup the linux hose data structure */ | ||
| 1062 | + ppc4xx_acp_pciex_port_setup_hose(port); | ||
| 1063 | +} | ||
| 1064 | + | ||
| 1065 | +#endif /* CONFIG_ACP */ | ||
| 1066 | + | ||
| 1067 | static void __init ppc4xx_probe_pciex_bridge(struct device_node *np) | ||
| 1068 | { | ||
| 1069 | struct ppc4xx_pciex_port *port; | ||
| 1070 | @@ -2174,6 +3109,11 @@ static int __init ppc4xx_pci_find_bridges(void) | ||
| 1071 | |||
| 1072 | pci_add_flags(PCI_ENABLE_PROC_DOMAINS | PCI_COMPAT_DOMAIN_0); | ||
| 1073 | |||
| 1074 | +#if defined(CONFIG_ACP) | ||
| 1075 | + for_each_compatible_node(np, NULL, "lsi,plb-pciex") | ||
| 1076 | + ppc4xx_probe_acp_pciex_bridge(np); | ||
| 1077 | +#endif | ||
| 1078 | + | ||
| 1079 | #ifdef CONFIG_PPC4xx_PCI_EXPRESS | ||
| 1080 | for_each_compatible_node(np, NULL, "ibm,plb-pciex") | ||
| 1081 | ppc4xx_probe_pciex_bridge(np); | ||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0010-fix-typo-error-for-acp-pcie.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0010-fix-typo-error-for-acp-pcie.patch new file mode 100644 index 0000000..b7f4d33 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0010-fix-typo-error-for-acp-pcie.patch | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | commit 57aaa696b09b81d3407ef0ce93315394405ef042 | ||
| 2 | Author: Jerry Pei <jerry.pei@enea.com> | ||
| 3 | Date: Wed Sep 26 11:12:02 2012 +0800 | ||
| 4 | |||
| 5 | fix typo error for acp pcie | ||
| 6 | |||
| 7 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 8 | |||
| 9 | diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 10 | index a4e1c46..278144e 100644 | ||
| 11 | --- a/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 12 | +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | ||
| 13 | @@ -2373,7 +2373,7 @@ ppc4xx_configure_acp_pciex_PIMs(struct ppc4xx_pciex_port *port, | ||
| 14 | * For the address field we simply program an incrementing value | ||
| 15 | * to map consecutive pages | ||
| 16 | */ | ||
| 17 | - if (0 == acp_plx) { | ||
| 18 | + if (acp_plx) { | ||
| 19 | int i; | ||
| 20 | |||
| 21 | for (i = 0; i < 8; i++) { | ||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/0011-fix-compiler.h-__attribute_const__-redefined-problem.patch b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0011-fix-compiler.h-__attribute_const__-redefined-problem.patch new file mode 100644 index 0000000..7ecb907 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/0011-fix-compiler.h-__attribute_const__-redefined-problem.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From efbd09c38d2060b045f2e897531cde94c7693c63 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Yuanyuan Liu <yuanyuan.liu@enea.com> | ||
| 3 | Date: Mon, 26 Nov 2012 04:30:03 +0100 | ||
| 4 | Subject: [PATCH] fix compiler.h __attribute_const__ redefined problem | ||
| 5 | |||
| 6 | --- | ||
| 7 | tools/perf/util/include/linux/compiler.h | 2 ++ | ||
| 8 | 1 files changed, 2 insertions(+), 0 deletions(-) | ||
| 9 | |||
| 10 | diff --git a/tools/perf/util/include/linux/compiler.h b/tools/perf/util/include/linux/compiler.h | ||
| 11 | index 791f9dd..547628e 100644 | ||
| 12 | --- a/tools/perf/util/include/linux/compiler.h | ||
| 13 | +++ b/tools/perf/util/include/linux/compiler.h | ||
| 14 | @@ -5,7 +5,9 @@ | ||
| 15 | #define __always_inline inline | ||
| 16 | #endif | ||
| 17 | #define __user | ||
| 18 | +#ifndef __attribute_const__ | ||
| 19 | #define __attribute_const__ | ||
| 20 | +#endif | ||
| 21 | |||
| 22 | #define __used __attribute__((__unused__)) | ||
| 23 | |||
| 24 | -- | ||
| 25 | 1.7.5.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-3.0.6/acp3448v2/defconfig b/recipes-kernel/linux/linux-3.0.6/acp3448v2/defconfig new file mode 100644 index 0000000..db18b58 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/acp3448v2/defconfig | |||
| @@ -0,0 +1,1862 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated file; DO NOT EDIT. | ||
| 3 | # Linux/powerpc 3.1.0-rc9 Kernel Configuration | ||
| 4 | # | ||
| 5 | # CONFIG_PPC64 is not set | ||
| 6 | |||
| 7 | # | ||
| 8 | # Processor support | ||
| 9 | # | ||
| 10 | # CONFIG_PPC_BOOK3S_32 is not set | ||
| 11 | # CONFIG_PPC_85xx is not set | ||
| 12 | # CONFIG_PPC_8xx is not set | ||
| 13 | # CONFIG_40x is not set | ||
| 14 | CONFIG_44x=y | ||
| 15 | # CONFIG_E200 is not set | ||
| 16 | CONFIG_PPC_FPU=y | ||
| 17 | CONFIG_4xx=y | ||
| 18 | CONFIG_BOOKE=y | ||
| 19 | CONFIG_PTE_64BIT=y | ||
| 20 | CONFIG_PHYS_64BIT=y | ||
| 21 | CONFIG_PPC_MMU_NOHASH=y | ||
| 22 | CONFIG_PPC_MMU_NOHASH_32=y | ||
| 23 | # CONFIG_PPC_MM_SLICES is not set | ||
| 24 | CONFIG_SMP=y | ||
| 25 | CONFIG_NR_CPUS=4 | ||
| 26 | # CONFIG_NOT_COHERENT_CACHE is not set | ||
| 27 | CONFIG_PPC32=y | ||
| 28 | CONFIG_32BIT=y | ||
| 29 | CONFIG_WORD_SIZE=32 | ||
| 30 | CONFIG_ARCH_PHYS_ADDR_T_64BIT=y | ||
| 31 | CONFIG_ARCH_DMA_ADDR_T_64BIT=y | ||
| 32 | CONFIG_MMU=y | ||
| 33 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 34 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 35 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 36 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 37 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 38 | CONFIG_NR_IRQS=512 | ||
| 39 | CONFIG_STACKTRACE_SUPPORT=y | ||
| 40 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 41 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 42 | CONFIG_LOCKDEP_SUPPORT=y | ||
| 43 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
| 44 | CONFIG_GENERIC_LOCKBREAK=y | ||
| 45 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 46 | CONFIG_GENERIC_HWEIGHT=y | ||
| 47 | CONFIG_GENERIC_GPIO=y | ||
| 48 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 49 | CONFIG_PPC=y | ||
| 50 | CONFIG_EARLY_PRINTK=y | ||
| 51 | CONFIG_GENERIC_NVRAM=y | ||
| 52 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 53 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 54 | CONFIG_PPC_OF=y | ||
| 55 | CONFIG_PPC_UDBG_16550=y | ||
| 56 | CONFIG_GENERIC_TBSYNC=y | ||
| 57 | CONFIG_AUDIT_ARCH=y | ||
| 58 | CONFIG_GENERIC_BUG=y | ||
| 59 | # CONFIG_EPAPR_BOOT is not set | ||
| 60 | # CONFIG_DEFAULT_UIMAGE is not set | ||
| 61 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 62 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
| 63 | CONFIG_PPC_DCR_NATIVE=y | ||
| 64 | # CONFIG_PPC_DCR_MMIO is not set | ||
| 65 | CONFIG_PPC_DCR=y | ||
| 66 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 67 | CONFIG_PPC_ADV_DEBUG_REGS=y | ||
| 68 | CONFIG_PPC_ADV_DEBUG_IACS=4 | ||
| 69 | CONFIG_PPC_ADV_DEBUG_DACS=2 | ||
| 70 | CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||
| 71 | CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||
| 72 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 73 | CONFIG_HAVE_IRQ_WORK=y | ||
| 74 | |||
| 75 | # | ||
| 76 | # General setup | ||
| 77 | # | ||
| 78 | CONFIG_EXPERIMENTAL=y | ||
| 79 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 80 | CONFIG_CROSS_COMPILE="powerpc-linux-gnu-" | ||
| 81 | CONFIG_LOCALVERSION="" | ||
| 82 | CONFIG_LOCALVERSION_AUTO=y | ||
| 83 | CONFIG_DEFAULT_HOSTNAME="el-paso" | ||
| 84 | CONFIG_SWAP=y | ||
| 85 | CONFIG_SYSVIPC=y | ||
| 86 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 87 | CONFIG_POSIX_MQUEUE=y | ||
| 88 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 89 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
| 90 | # CONFIG_FHANDLE is not set | ||
| 91 | # CONFIG_TASKSTATS is not set | ||
| 92 | # CONFIG_AUDIT is not set | ||
| 93 | CONFIG_HAVE_GENERIC_HARDIRQS=y | ||
| 94 | |||
| 95 | # | ||
| 96 | # IRQ subsystem | ||
| 97 | # | ||
| 98 | CONFIG_GENERIC_HARDIRQS=y | ||
| 99 | CONFIG_HAVE_SPARSE_IRQ=y | ||
| 100 | CONFIG_GENERIC_IRQ_SHOW=y | ||
| 101 | CONFIG_GENERIC_IRQ_SHOW_LEVEL=y | ||
| 102 | CONFIG_SPARSE_IRQ=y | ||
| 103 | |||
| 104 | # | ||
| 105 | # RCU Subsystem | ||
| 106 | # | ||
| 107 | CONFIG_TREE_PREEMPT_RCU=y | ||
| 108 | CONFIG_PREEMPT_RCU=y | ||
| 109 | # CONFIG_RCU_TRACE is not set | ||
| 110 | CONFIG_RCU_FANOUT=32 | ||
| 111 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
| 112 | # CONFIG_TREE_RCU_TRACE is not set | ||
| 113 | # CONFIG_RCU_BOOST is not set | ||
| 114 | CONFIG_IKCONFIG=m | ||
| 115 | CONFIG_IKCONFIG_PROC=y | ||
| 116 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 117 | # CONFIG_CGROUPS is not set | ||
| 118 | # CONFIG_NAMESPACES is not set | ||
| 119 | # CONFIG_SCHED_AUTOGROUP is not set | ||
| 120 | # CONFIG_SYSFS_DEPRECATED is not set | ||
| 121 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
| 122 | # CONFIG_RELAY is not set | ||
| 123 | CONFIG_BLK_DEV_INITRD=y | ||
| 124 | CONFIG_INITRAMFS_SOURCE="" | ||
| 125 | CONFIG_RD_GZIP=y | ||
| 126 | CONFIG_DECOMPRESS_GZIP=y | ||
| 127 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 128 | CONFIG_SYSCTL=y | ||
| 129 | CONFIG_ANON_INODES=y | ||
| 130 | CONFIG_EXPERT=y | ||
| 131 | CONFIG_SYSCTL_SYSCALL=y | ||
| 132 | CONFIG_KALLSYMS=y | ||
| 133 | # CONFIG_KALLSYMS_ALL is not set | ||
| 134 | CONFIG_HOTPLUG=y | ||
| 135 | CONFIG_PRINTK=y | ||
| 136 | CONFIG_BUG=y | ||
| 137 | CONFIG_ELF_CORE=y | ||
| 138 | CONFIG_BASE_FULL=y | ||
| 139 | CONFIG_FUTEX=y | ||
| 140 | CONFIG_EPOLL=y | ||
| 141 | CONFIG_SIGNALFD=y | ||
| 142 | CONFIG_TIMERFD=y | ||
| 143 | CONFIG_EVENTFD=y | ||
| 144 | CONFIG_SHMEM=y | ||
| 145 | CONFIG_AIO=y | ||
| 146 | CONFIG_EMBEDDED=y | ||
| 147 | CONFIG_HAVE_PERF_EVENTS=y | ||
| 148 | |||
| 149 | # | ||
| 150 | # Kernel Performance Events And Counters | ||
| 151 | # | ||
| 152 | # CONFIG_PERF_EVENTS is not set | ||
| 153 | # CONFIG_PERF_COUNTERS is not set | ||
| 154 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 155 | CONFIG_PCI_QUIRKS=y | ||
| 156 | CONFIG_SLUB_DEBUG=y | ||
| 157 | CONFIG_COMPAT_BRK=y | ||
| 158 | # CONFIG_SLAB is not set | ||
| 159 | CONFIG_SLUB=y | ||
| 160 | # CONFIG_SLOB is not set | ||
| 161 | CONFIG_PROFILING=y | ||
| 162 | CONFIG_OPROFILE=m | ||
| 163 | CONFIG_HAVE_OPROFILE=y | ||
| 164 | # CONFIG_KPROBES is not set | ||
| 165 | # CONFIG_JUMP_LABEL is not set | ||
| 166 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 167 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 168 | CONFIG_HAVE_KPROBES=y | ||
| 169 | CONFIG_HAVE_KRETPROBES=y | ||
| 170 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 171 | CONFIG_HAVE_DMA_ATTRS=y | ||
| 172 | CONFIG_USE_GENERIC_SMP_HELPERS=y | ||
| 173 | CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
| 174 | CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 175 | CONFIG_HAVE_ARCH_JUMP_LABEL=y | ||
| 176 | CONFIG_HAVE_RCU_TABLE_FREE=y | ||
| 177 | CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y | ||
| 178 | |||
| 179 | # | ||
| 180 | # GCOV-based kernel profiling | ||
| 181 | # | ||
| 182 | # CONFIG_GCOV_KERNEL is not set | ||
| 183 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 184 | CONFIG_SLABINFO=y | ||
| 185 | CONFIG_RT_MUTEXES=y | ||
| 186 | CONFIG_BASE_SMALL=0 | ||
| 187 | CONFIG_MODULES=y | ||
| 188 | CONFIG_MODULE_FORCE_LOAD=y | ||
| 189 | CONFIG_MODULE_UNLOAD=y | ||
| 190 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 191 | CONFIG_MODVERSIONS=y | ||
| 192 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
| 193 | CONFIG_STOP_MACHINE=y | ||
| 194 | CONFIG_BLOCK=y | ||
| 195 | CONFIG_LBDAF=y | ||
| 196 | # CONFIG_BLK_DEV_BSG is not set | ||
| 197 | # CONFIG_BLK_DEV_BSGLIB is not set | ||
| 198 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 199 | |||
| 200 | # | ||
| 201 | # IO Schedulers | ||
| 202 | # | ||
| 203 | CONFIG_IOSCHED_NOOP=y | ||
| 204 | CONFIG_IOSCHED_DEADLINE=y | ||
| 205 | CONFIG_IOSCHED_CFQ=y | ||
| 206 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 207 | CONFIG_DEFAULT_CFQ=y | ||
| 208 | # CONFIG_DEFAULT_NOOP is not set | ||
| 209 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 210 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 211 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 212 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
| 213 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 214 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 215 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 216 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
| 217 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 218 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
| 219 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 220 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 221 | # CONFIG_INLINE_READ_LOCK is not set | ||
| 222 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 223 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 224 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 225 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
| 226 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 227 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
| 228 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 229 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 230 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
| 231 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 232 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 233 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 234 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
| 235 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 236 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
| 237 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 238 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
| 239 | CONFIG_FREEZER=y | ||
| 240 | CONFIG_PPC4xx_PCI_EXPRESS=y | ||
| 241 | # CONFIG_PPC4xx_MSI is not set | ||
| 242 | CONFIG_PPC_MSI_BITMAP=y | ||
| 243 | # CONFIG_PPC_XICS is not set | ||
| 244 | # CONFIG_PPC_ICP_NATIVE is not set | ||
| 245 | # CONFIG_PPC_ICP_HV is not set | ||
| 246 | # CONFIG_PPC_ICS_RTAS is not set | ||
| 247 | |||
| 248 | # | ||
| 249 | # Platform support | ||
| 250 | # | ||
| 251 | # CONFIG_PPC_CELL is not set | ||
| 252 | # CONFIG_PPC_CELL_NATIVE is not set | ||
| 253 | # CONFIG_PQ2ADS is not set | ||
| 254 | CONFIG_PPC_47x=y | ||
| 255 | # CONFIG_BAMBOO is not set | ||
| 256 | # CONFIG_BLUESTONE is not set | ||
| 257 | # CONFIG_EBONY is not set | ||
| 258 | # CONFIG_SAM440EP is not set | ||
| 259 | # CONFIG_SEQUOIA is not set | ||
| 260 | # CONFIG_TAISHAN is not set | ||
| 261 | # CONFIG_KATMAI is not set | ||
| 262 | # CONFIG_RAINIER is not set | ||
| 263 | # CONFIG_WARP is not set | ||
| 264 | # CONFIG_ARCHES is not set | ||
| 265 | # CONFIG_CANYONLANDS is not set | ||
| 266 | # CONFIG_GLACIER is not set | ||
| 267 | # CONFIG_REDWOOD is not set | ||
| 268 | # CONFIG_EIGER is not set | ||
| 269 | # CONFIG_YOSEMITE is not set | ||
| 270 | # CONFIG_ISS4xx is not set | ||
| 271 | # CONFIG_ICON is not set | ||
| 272 | CONFIG_ACP=y | ||
| 273 | # CONFIG_ACPISS is not set | ||
| 274 | # CONFIG_ACP_X1V1 is not set | ||
| 275 | # CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set | ||
| 276 | # CONFIG_PPC44x_SIMPLE is not set | ||
| 277 | CONFIG_PPC4xx_GPIO=y | ||
| 278 | CONFIG_440GP=y | ||
| 279 | # CONFIG_PPC_WSP is not set | ||
| 280 | # CONFIG_KVM_GUEST is not set | ||
| 281 | # CONFIG_IPIC is not set | ||
| 282 | CONFIG_MPIC=y | ||
| 283 | # CONFIG_PPC_EPAPR_HV_PIC is not set | ||
| 284 | # CONFIG_MPIC_WEIRD is not set | ||
| 285 | # CONFIG_PPC_I8259 is not set | ||
| 286 | # CONFIG_PPC_RTAS is not set | ||
| 287 | # CONFIG_MMIO_NVRAM is not set | ||
| 288 | # CONFIG_MPIC_U3_HT_IRQS is not set | ||
| 289 | # CONFIG_PPC_MPC106 is not set | ||
| 290 | # CONFIG_PPC_970_NAP is not set | ||
| 291 | # CONFIG_PPC_P7_NAP is not set | ||
| 292 | |||
| 293 | # | ||
| 294 | # CPU Frequency scaling | ||
| 295 | # | ||
| 296 | # CONFIG_CPU_FREQ is not set | ||
| 297 | # CONFIG_FSL_ULI1575 is not set | ||
| 298 | CONFIG_SIMPLE_GPIO=y | ||
| 299 | |||
| 300 | # | ||
| 301 | # Kernel options | ||
| 302 | # | ||
| 303 | CONFIG_HIGHMEM=y | ||
| 304 | CONFIG_TICK_ONESHOT=y | ||
| 305 | # CONFIG_NO_HZ is not set | ||
| 306 | CONFIG_HIGH_RES_TIMERS=y | ||
| 307 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 308 | CONFIG_HZ_100=y | ||
| 309 | # CONFIG_HZ_250 is not set | ||
| 310 | # CONFIG_HZ_300 is not set | ||
| 311 | # CONFIG_HZ_1000 is not set | ||
| 312 | CONFIG_HZ=100 | ||
| 313 | CONFIG_SCHED_HRTICK=y | ||
| 314 | # CONFIG_PREEMPT_NONE is not set | ||
| 315 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 316 | CONFIG_PREEMPT=y | ||
| 317 | CONFIG_PREEMPT_COUNT=y | ||
| 318 | CONFIG_BINFMT_ELF=y | ||
| 319 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 320 | # CONFIG_HAVE_AOUT is not set | ||
| 321 | # CONFIG_BINFMT_MISC is not set | ||
| 322 | # CONFIG_MATH_EMULATION is not set | ||
| 323 | # CONFIG_IOMMU_HELPER is not set | ||
| 324 | # CONFIG_SWIOTLB is not set | ||
| 325 | CONFIG_HOTPLUG_CPU=y | ||
| 326 | CONFIG_ARCH_CPU_PROBE_RELEASE=y | ||
| 327 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 328 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 329 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 330 | # CONFIG_IRQ_ALL_CPUS is not set | ||
| 331 | CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 332 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 333 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 334 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 335 | CONFIG_FLATMEM_MANUAL=y | ||
| 336 | CONFIG_FLATMEM=y | ||
| 337 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 338 | CONFIG_HAVE_MEMBLOCK=y | ||
| 339 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 340 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 341 | # CONFIG_COMPACTION is not set | ||
| 342 | CONFIG_MIGRATION=y | ||
| 343 | CONFIG_PHYS_ADDR_T_64BIT=y | ||
| 344 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 345 | CONFIG_BOUNCE=y | ||
| 346 | CONFIG_VIRT_TO_BUS=y | ||
| 347 | # CONFIG_KSM is not set | ||
| 348 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 349 | # CONFIG_CLEANCACHE is not set | ||
| 350 | CONFIG_STDBINUTILS=y | ||
| 351 | CONFIG_PPC_4K_PAGES=y | ||
| 352 | # CONFIG_PPC_16K_PAGES is not set | ||
| 353 | # CONFIG_PPC_64K_PAGES is not set | ||
| 354 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 355 | # CONFIG_CMDLINE_BOOL is not set | ||
| 356 | CONFIG_EXTRA_TARGETS="" | ||
| 357 | CONFIG_SUSPEND=y | ||
| 358 | CONFIG_SUSPEND_FREEZER=y | ||
| 359 | # CONFIG_HIBERNATION is not set | ||
| 360 | CONFIG_PM_SLEEP=y | ||
| 361 | CONFIG_PM_SLEEP_SMP=y | ||
| 362 | # CONFIG_PM_RUNTIME is not set | ||
| 363 | CONFIG_PM=y | ||
| 364 | # CONFIG_PM_DEBUG is not set | ||
| 365 | CONFIG_SECCOMP=y | ||
| 366 | CONFIG_ISA_DMA_API=y | ||
| 367 | |||
| 368 | # | ||
| 369 | # Bus options | ||
| 370 | # | ||
| 371 | CONFIG_ZONE_DMA=y | ||
| 372 | # CONFIG_NEED_DMA_MAP_STATE is not set | ||
| 373 | CONFIG_NEED_SG_DMA_LENGTH=y | ||
| 374 | CONFIG_GENERIC_ISA_DMA=y | ||
| 375 | CONFIG_PPC_INDIRECT_PCI=y | ||
| 376 | CONFIG_PPC4xx_CPM=y | ||
| 377 | CONFIG_4xx_SOC=y | ||
| 378 | CONFIG_PPC_PCI_CHOICE=y | ||
| 379 | CONFIG_PCI=y | ||
| 380 | CONFIG_PCI_DOMAINS=y | ||
| 381 | CONFIG_PCI_SYSCALL=y | ||
| 382 | CONFIG_PCIEPORTBUS=y | ||
| 383 | # CONFIG_PCIEAER is not set | ||
| 384 | CONFIG_PCIEASPM=y | ||
| 385 | # CONFIG_PCIEASPM_DEBUG is not set | ||
| 386 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 387 | CONFIG_PCI_MSI=y | ||
| 388 | # CONFIG_PCI_DEBUG is not set | ||
| 389 | # CONFIG_PCI_STUB is not set | ||
| 390 | # CONFIG_PCI_IOV is not set | ||
| 391 | # CONFIG_PCCARD is not set | ||
| 392 | # CONFIG_HOTPLUG_PCI is not set | ||
| 393 | CONFIG_HAS_RAPIDIO=y | ||
| 394 | CONFIG_RAPIDIO=y | ||
| 395 | # CONFIG_FSL_RIO is not set | ||
| 396 | CONFIG_RAPIDIO_DISC_TIMEOUT=30 | ||
| 397 | # CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set | ||
| 398 | # CONFIG_RAPIDIO_ACP is not set | ||
| 399 | CONFIG_RAPIDIO_TSI57X=y | ||
| 400 | CONFIG_RAPIDIO_CPS_XX=y | ||
| 401 | CONFIG_RAPIDIO_TSI568=y | ||
| 402 | # CONFIG_RAPIDIO_CPS_GEN2 is not set | ||
| 403 | CONFIG_RAPIDIO_TSI500=y | ||
| 404 | CONFIG_RAPIDIO_DEBUG=y | ||
| 405 | |||
| 406 | # | ||
| 407 | # Advanced setup | ||
| 408 | # | ||
| 409 | CONFIG_ADVANCED_OPTIONS=y | ||
| 410 | # CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 411 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 412 | CONFIG_RELOCATABLE=y | ||
| 413 | CONFIG_PAGE_OFFSET_BOOL=y | ||
| 414 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 415 | CONFIG_KERNEL_START_BOOL=y | ||
| 416 | CONFIG_KERNEL_START=0xc0400000 | ||
| 417 | CONFIG_PHYSICAL_START_BOOL=y | ||
| 418 | CONFIG_PHYSICAL_START=0x00400000 | ||
| 419 | CONFIG_TASK_SIZE_BOOL=y | ||
| 420 | CONFIG_TASK_SIZE=0xc0000000 | ||
| 421 | CONFIG_NET=y | ||
| 422 | |||
| 423 | # | ||
| 424 | # Networking options | ||
| 425 | # | ||
| 426 | CONFIG_PACKET=y | ||
| 427 | CONFIG_UNIX=y | ||
| 428 | CONFIG_XFRM=y | ||
| 429 | CONFIG_XFRM_USER=y | ||
| 430 | CONFIG_XFRM_SUB_POLICY=y | ||
| 431 | CONFIG_XFRM_MIGRATE=y | ||
| 432 | CONFIG_XFRM_STATISTICS=y | ||
| 433 | CONFIG_XFRM_IPCOMP=y | ||
| 434 | CONFIG_NET_KEY=y | ||
| 435 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 436 | CONFIG_INET=y | ||
| 437 | CONFIG_IP_MULTICAST=y | ||
| 438 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 439 | CONFIG_IP_PNP=y | ||
| 440 | CONFIG_IP_PNP_DHCP=y | ||
| 441 | CONFIG_IP_PNP_BOOTP=y | ||
| 442 | CONFIG_IP_PNP_RARP=y | ||
| 443 | CONFIG_NET_IPIP=y | ||
| 444 | # CONFIG_NET_IPGRE_DEMUX is not set | ||
| 445 | # CONFIG_IP_MROUTE is not set | ||
| 446 | # CONFIG_ARPD is not set | ||
| 447 | CONFIG_SYN_COOKIES=y | ||
| 448 | CONFIG_INET_AH=y | ||
| 449 | CONFIG_INET_ESP=y | ||
| 450 | CONFIG_INET_IPCOMP=y | ||
| 451 | CONFIG_INET_XFRM_TUNNEL=y | ||
| 452 | CONFIG_INET_TUNNEL=y | ||
| 453 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 454 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 455 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 456 | # CONFIG_INET_LRO is not set | ||
| 457 | CONFIG_INET_DIAG=y | ||
| 458 | CONFIG_INET_TCP_DIAG=y | ||
| 459 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 460 | CONFIG_TCP_CONG_CUBIC=y | ||
| 461 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 462 | # CONFIG_TCP_MD5SIG is not set | ||
| 463 | CONFIG_IPV6=y | ||
| 464 | # CONFIG_IPV6_PRIVACY is not set | ||
| 465 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 466 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 467 | CONFIG_INET6_AH=y | ||
| 468 | CONFIG_INET6_ESP=y | ||
| 469 | CONFIG_INET6_IPCOMP=y | ||
| 470 | CONFIG_IPV6_MIP6=y | ||
| 471 | CONFIG_INET6_XFRM_TUNNEL=y | ||
| 472 | CONFIG_INET6_TUNNEL=y | ||
| 473 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 474 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 475 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 476 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 477 | CONFIG_IPV6_SIT=y | ||
| 478 | # CONFIG_IPV6_SIT_6RD is not set | ||
| 479 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 480 | CONFIG_IPV6_TUNNEL=y | ||
| 481 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 482 | # CONFIG_IPV6_MROUTE is not set | ||
| 483 | CONFIG_NETWORK_SECMARK=y | ||
| 484 | # CONFIG_NETWORK_PHY_TIMESTAMPING is not set | ||
| 485 | CONFIG_NETFILTER=y | ||
| 486 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 487 | CONFIG_NETFILTER_ADVANCED=y | ||
| 488 | |||
| 489 | # | ||
| 490 | # Core Netfilter Configuration | ||
| 491 | # | ||
| 492 | # CONFIG_NETFILTER_NETLINK_QUEUE is not set | ||
| 493 | # CONFIG_NETFILTER_NETLINK_LOG is not set | ||
| 494 | # CONFIG_NF_CONNTRACK is not set | ||
| 495 | # CONFIG_NETFILTER_XTABLES is not set | ||
| 496 | # CONFIG_IP_VS is not set | ||
| 497 | |||
| 498 | # | ||
| 499 | # IP: Netfilter Configuration | ||
| 500 | # | ||
| 501 | # CONFIG_NF_DEFRAG_IPV4 is not set | ||
| 502 | # CONFIG_IP_NF_QUEUE is not set | ||
| 503 | # CONFIG_IP_NF_IPTABLES is not set | ||
| 504 | # CONFIG_IP_NF_ARPTABLES is not set | ||
| 505 | |||
| 506 | # | ||
| 507 | # IPv6: Netfilter Configuration | ||
| 508 | # | ||
| 509 | # CONFIG_NF_DEFRAG_IPV6 is not set | ||
| 510 | # CONFIG_IP6_NF_QUEUE is not set | ||
| 511 | # CONFIG_IP6_NF_IPTABLES is not set | ||
| 512 | # CONFIG_IP_DCCP is not set | ||
| 513 | # CONFIG_IP_SCTP is not set | ||
| 514 | # CONFIG_RDS is not set | ||
| 515 | # CONFIG_TIPC is not set | ||
| 516 | # CONFIG_ATM is not set | ||
| 517 | # CONFIG_L2TP is not set | ||
| 518 | # CONFIG_BRIDGE is not set | ||
| 519 | # CONFIG_NET_DSA is not set | ||
| 520 | CONFIG_VLAN_8021Q=y | ||
| 521 | # CONFIG_VLAN_8021Q_GVRP is not set | ||
| 522 | # CONFIG_DECNET is not set | ||
| 523 | # CONFIG_LLC2 is not set | ||
| 524 | # CONFIG_IPX is not set | ||
| 525 | # CONFIG_ATALK is not set | ||
| 526 | # CONFIG_X25 is not set | ||
| 527 | # CONFIG_LAPB is not set | ||
| 528 | # CONFIG_ECONET is not set | ||
| 529 | # CONFIG_WAN_ROUTER is not set | ||
| 530 | # CONFIG_PHONET is not set | ||
| 531 | # CONFIG_IEEE802154 is not set | ||
| 532 | # CONFIG_NET_SCHED is not set | ||
| 533 | # CONFIG_DCB is not set | ||
| 534 | CONFIG_DNS_RESOLVER=y | ||
| 535 | # CONFIG_BATMAN_ADV is not set | ||
| 536 | CONFIG_RPS=y | ||
| 537 | CONFIG_RFS_ACCEL=y | ||
| 538 | CONFIG_XPS=y | ||
| 539 | |||
| 540 | # | ||
| 541 | # Network testing | ||
| 542 | # | ||
| 543 | # CONFIG_NET_PKTGEN is not set | ||
| 544 | # CONFIG_HAMRADIO is not set | ||
| 545 | # CONFIG_CAN is not set | ||
| 546 | # CONFIG_IRDA is not set | ||
| 547 | # CONFIG_BT is not set | ||
| 548 | # CONFIG_AF_RXRPC is not set | ||
| 549 | CONFIG_WIRELESS=y | ||
| 550 | CONFIG_WIRELESS_EXT=y | ||
| 551 | CONFIG_WEXT_CORE=y | ||
| 552 | CONFIG_WEXT_PROC=y | ||
| 553 | CONFIG_WEXT_PRIV=y | ||
| 554 | # CONFIG_CFG80211 is not set | ||
| 555 | CONFIG_WIRELESS_EXT_SYSFS=y | ||
| 556 | # CONFIG_LIB80211 is not set | ||
| 557 | |||
| 558 | # | ||
| 559 | # CFG80211 needs to be enabled for MAC80211 | ||
| 560 | # | ||
| 561 | # CONFIG_WIMAX is not set | ||
| 562 | # CONFIG_RFKILL is not set | ||
| 563 | # CONFIG_NET_9P is not set | ||
| 564 | # CONFIG_CAIF is not set | ||
| 565 | # CONFIG_CEPH_LIB is not set | ||
| 566 | # CONFIG_NFC is not set | ||
| 567 | |||
| 568 | # | ||
| 569 | # Device Drivers | ||
| 570 | # | ||
| 571 | |||
| 572 | # | ||
| 573 | # Generic Driver Options | ||
| 574 | # | ||
| 575 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 576 | # CONFIG_DEVTMPFS is not set | ||
| 577 | CONFIG_STANDALONE=y | ||
| 578 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 579 | CONFIG_FW_LOADER=y | ||
| 580 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 581 | CONFIG_EXTRA_FIRMWARE="" | ||
| 582 | CONFIG_DEBUG_DRIVER=y | ||
| 583 | # CONFIG_DEBUG_DEVRES is not set | ||
| 584 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 585 | # CONFIG_CONNECTOR is not set | ||
| 586 | CONFIG_MTD=y | ||
| 587 | # CONFIG_MTD_DEBUG is not set | ||
| 588 | # CONFIG_MTD_TESTS is not set | ||
| 589 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 590 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 591 | CONFIG_MTD_OF_PARTS=y | ||
| 592 | # CONFIG_MTD_AR7_PARTS is not set | ||
| 593 | |||
| 594 | # | ||
| 595 | # User Modules And Translation Layers | ||
| 596 | # | ||
| 597 | CONFIG_MTD_CHAR=y | ||
| 598 | CONFIG_MTD_BLKDEVS=y | ||
| 599 | CONFIG_MTD_BLOCK=y | ||
| 600 | # CONFIG_FTL is not set | ||
| 601 | # CONFIG_NFTL is not set | ||
| 602 | # CONFIG_INFTL is not set | ||
| 603 | # CONFIG_RFD_FTL is not set | ||
| 604 | # CONFIG_SSFDC is not set | ||
| 605 | # CONFIG_SM_FTL is not set | ||
| 606 | # CONFIG_MTD_OOPS is not set | ||
| 607 | # CONFIG_MTD_SWAP is not set | ||
| 608 | |||
| 609 | # | ||
| 610 | # RAM/ROM/Flash chip drivers | ||
| 611 | # | ||
| 612 | # CONFIG_MTD_CFI is not set | ||
| 613 | CONFIG_MTD_JEDECPROBE=y | ||
| 614 | CONFIG_MTD_GEN_PROBE=y | ||
| 615 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 616 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 617 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 618 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 619 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 620 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 621 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 622 | CONFIG_MTD_CFI_I1=y | ||
| 623 | CONFIG_MTD_CFI_I2=y | ||
| 624 | # CONFIG_MTD_CFI_I4 is not set | ||
| 625 | # CONFIG_MTD_CFI_I8 is not set | ||
| 626 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
| 627 | CONFIG_MTD_CFI_AMDSTD=y | ||
| 628 | # CONFIG_MTD_CFI_STAA is not set | ||
| 629 | CONFIG_MTD_CFI_UTIL=y | ||
| 630 | # CONFIG_MTD_RAM is not set | ||
| 631 | # CONFIG_MTD_ROM is not set | ||
| 632 | # CONFIG_MTD_ABSENT is not set | ||
| 633 | |||
| 634 | # | ||
| 635 | # Mapping drivers for chip access | ||
| 636 | # | ||
| 637 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 638 | # CONFIG_MTD_PHYSMAP is not set | ||
| 639 | CONFIG_MTD_PHYSMAP_OF=y | ||
| 640 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 641 | # CONFIG_MTD_PLATRAM is not set | ||
| 642 | |||
| 643 | # | ||
| 644 | # Self-contained MTD device drivers | ||
| 645 | # | ||
| 646 | # CONFIG_MTD_PMC551 is not set | ||
| 647 | # CONFIG_MTD_SLRAM is not set | ||
| 648 | # CONFIG_MTD_PHRAM is not set | ||
| 649 | # CONFIG_MTD_MTDRAM is not set | ||
| 650 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 651 | |||
| 652 | # | ||
| 653 | # Disk-On-Chip Device Drivers | ||
| 654 | # | ||
| 655 | # CONFIG_MTD_DOC2000 is not set | ||
| 656 | # CONFIG_MTD_DOC2001 is not set | ||
| 657 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 658 | CONFIG_MTD_NAND_ECC=y | ||
| 659 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 660 | CONFIG_MTD_NAND=y | ||
| 661 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 662 | # CONFIG_MTD_NAND_ECC_BCH is not set | ||
| 663 | # CONFIG_MTD_SM_COMMON is not set | ||
| 664 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 665 | # CONFIG_MTD_NAND_DENALI is not set | ||
| 666 | CONFIG_MTD_NAND_IDS=y | ||
| 667 | # CONFIG_MTD_NAND_RICOH is not set | ||
| 668 | # CONFIG_MTD_NAND_NDFC is not set | ||
| 669 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 670 | # CONFIG_MTD_NAND_CAFE is not set | ||
| 671 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 672 | CONFIG_MTD_NAND_PLATFORM=y | ||
| 673 | # CONFIG_MTD_ALAUDA is not set | ||
| 674 | # CONFIG_MTD_NAND_FSL_ELBC is not set | ||
| 675 | # CONFIG_MTD_ONENAND is not set | ||
| 676 | |||
| 677 | # | ||
| 678 | # LPDDR flash memory drivers | ||
| 679 | # | ||
| 680 | # CONFIG_MTD_LPDDR is not set | ||
| 681 | # CONFIG_MTD_UBI is not set | ||
| 682 | CONFIG_DTC=y | ||
| 683 | CONFIG_OF=y | ||
| 684 | |||
| 685 | # | ||
| 686 | # Device Tree and Open Firmware support | ||
| 687 | # | ||
| 688 | CONFIG_PROC_DEVICETREE=y | ||
| 689 | CONFIG_OF_FLATTREE=y | ||
| 690 | CONFIG_OF_EARLY_FLATTREE=y | ||
| 691 | CONFIG_OF_DYNAMIC=y | ||
| 692 | CONFIG_OF_ADDRESS=y | ||
| 693 | CONFIG_OF_IRQ=y | ||
| 694 | CONFIG_OF_DEVICE=y | ||
| 695 | CONFIG_OF_GPIO=y | ||
| 696 | CONFIG_OF_NET=y | ||
| 697 | CONFIG_OF_PCI=y | ||
| 698 | CONFIG_OF_PCI_IRQ=y | ||
| 699 | # CONFIG_PARPORT is not set | ||
| 700 | CONFIG_BLK_DEV=y | ||
| 701 | # CONFIG_BLK_DEV_FD is not set | ||
| 702 | # CONFIG_BLK_CPQ_DA is not set | ||
| 703 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 704 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 705 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 706 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 707 | # CONFIG_BLK_DEV_LOOP is not set | ||
| 708 | |||
| 709 | # | ||
| 710 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 711 | # | ||
| 712 | # CONFIG_BLK_DEV_NBD is not set | ||
| 713 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 714 | CONFIG_BLK_DEV_UB=y | ||
| 715 | CONFIG_BLK_DEV_RAM=y | ||
| 716 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 717 | CONFIG_BLK_DEV_RAM_SIZE=35000 | ||
| 718 | # CONFIG_BLK_DEV_XIP is not set | ||
| 719 | # CONFIG_BLK_DEV_ISS is not set | ||
| 720 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 721 | # CONFIG_ATA_OVER_ETH is not set | ||
| 722 | # CONFIG_XILINX_SYSACE is not set | ||
| 723 | # CONFIG_BLK_DEV_HD is not set | ||
| 724 | # CONFIG_BLK_DEV_RBD is not set | ||
| 725 | # CONFIG_SENSORS_LIS3LV02D is not set | ||
| 726 | CONFIG_MISC_DEVICES=y | ||
| 727 | # CONFIG_PHANTOM is not set | ||
| 728 | # CONFIG_INTEL_MID_PTI is not set | ||
| 729 | # CONFIG_SGI_IOC4 is not set | ||
| 730 | # CONFIG_TIFM_CORE is not set | ||
| 731 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
| 732 | # CONFIG_HP_ILO is not set | ||
| 733 | # CONFIG_PCH_PHUB is not set | ||
| 734 | # CONFIG_C2PORT is not set | ||
| 735 | |||
| 736 | # | ||
| 737 | # EEPROM support | ||
| 738 | # | ||
| 739 | # CONFIG_EEPROM_93CX6 is not set | ||
| 740 | # CONFIG_CB710_CORE is not set | ||
| 741 | |||
| 742 | # | ||
| 743 | # Texas Instruments shared transport line discipline | ||
| 744 | # | ||
| 745 | # CONFIG_TI_ST is not set | ||
| 746 | CONFIG_HAVE_IDE=y | ||
| 747 | # CONFIG_IDE is not set | ||
| 748 | |||
| 749 | # | ||
| 750 | # SCSI device support | ||
| 751 | # | ||
| 752 | CONFIG_SCSI_MOD=y | ||
| 753 | # CONFIG_RAID_ATTRS is not set | ||
| 754 | CONFIG_SCSI=y | ||
| 755 | CONFIG_SCSI_DMA=y | ||
| 756 | CONFIG_SCSI_TGT=y | ||
| 757 | # CONFIG_SCSI_NETLINK is not set | ||
| 758 | CONFIG_SCSI_PROC_FS=y | ||
| 759 | |||
| 760 | # | ||
| 761 | # SCSI support type (disk, tape, CD-ROM) | ||
| 762 | # | ||
| 763 | CONFIG_BLK_DEV_SD=y | ||
| 764 | # CONFIG_CHR_DEV_ST is not set | ||
| 765 | # CONFIG_CHR_DEV_OSST is not set | ||
| 766 | # CONFIG_BLK_DEV_SR is not set | ||
| 767 | # CONFIG_CHR_DEV_SG is not set | ||
| 768 | # CONFIG_CHR_DEV_SCH is not set | ||
| 769 | # CONFIG_SCSI_MULTI_LUN is not set | ||
| 770 | CONFIG_SCSI_CONSTANTS=y | ||
| 771 | # CONFIG_SCSI_LOGGING is not set | ||
| 772 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 773 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 774 | |||
| 775 | # | ||
| 776 | # SCSI Transports | ||
| 777 | # | ||
| 778 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 779 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 780 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 781 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 782 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 783 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
| 784 | CONFIG_SCSI_LOWLEVEL=y | ||
| 785 | # CONFIG_ISCSI_TCP is not set | ||
| 786 | # CONFIG_ISCSI_BOOT_SYSFS is not set | ||
| 787 | # CONFIG_SCSI_CXGB3_ISCSI is not set | ||
| 788 | # CONFIG_SCSI_CXGB4_ISCSI is not set | ||
| 789 | # CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 790 | # CONFIG_SCSI_BNX2X_FCOE is not set | ||
| 791 | # CONFIG_BE2ISCSI is not set | ||
| 792 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 793 | # CONFIG_SCSI_HPSA is not set | ||
| 794 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 795 | # CONFIG_SCSI_3W_SAS is not set | ||
| 796 | # CONFIG_SCSI_ACARD is not set | ||
| 797 | # CONFIG_SCSI_AACRAID is not set | ||
| 798 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 799 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 800 | # CONFIG_SCSI_AIC79XX is not set | ||
| 801 | # CONFIG_SCSI_AIC94XX is not set | ||
| 802 | # CONFIG_SCSI_MVSAS is not set | ||
| 803 | # CONFIG_SCSI_DPT_I2O is not set | ||
| 804 | # CONFIG_SCSI_ADVANSYS is not set | ||
| 805 | # CONFIG_SCSI_ARCMSR is not set | ||
| 806 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 807 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 808 | # CONFIG_MEGARAID_SAS is not set | ||
| 809 | # CONFIG_SCSI_MPT2SAS is not set | ||
| 810 | # CONFIG_SCSI_HPTIOP is not set | ||
| 811 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 812 | # CONFIG_LIBFC is not set | ||
| 813 | # CONFIG_LIBFCOE is not set | ||
| 814 | # CONFIG_FCOE is not set | ||
| 815 | # CONFIG_SCSI_DMX3191D is not set | ||
| 816 | # CONFIG_SCSI_EATA is not set | ||
| 817 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 818 | # CONFIG_SCSI_GDTH is not set | ||
| 819 | # CONFIG_SCSI_IPS is not set | ||
| 820 | # CONFIG_SCSI_INITIO is not set | ||
| 821 | # CONFIG_SCSI_INIA100 is not set | ||
| 822 | # CONFIG_SCSI_STEX is not set | ||
| 823 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 824 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 825 | # CONFIG_SCSI_QLA_FC is not set | ||
| 826 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 827 | # CONFIG_SCSI_LPFC is not set | ||
| 828 | # CONFIG_SCSI_DC395x is not set | ||
| 829 | # CONFIG_SCSI_DC390T is not set | ||
| 830 | # CONFIG_SCSI_NSP32 is not set | ||
| 831 | # CONFIG_SCSI_DEBUG is not set | ||
| 832 | # CONFIG_SCSI_PMCRAID is not set | ||
| 833 | # CONFIG_SCSI_PM8001 is not set | ||
| 834 | # CONFIG_SCSI_SRP is not set | ||
| 835 | # CONFIG_SCSI_BFA_FC is not set | ||
| 836 | # CONFIG_SCSI_DH is not set | ||
| 837 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 838 | # CONFIG_ATA is not set | ||
| 839 | CONFIG_MD=y | ||
| 840 | CONFIG_BLK_DEV_MD=y | ||
| 841 | CONFIG_MD_AUTODETECT=y | ||
| 842 | CONFIG_MD_LINEAR=y | ||
| 843 | CONFIG_MD_RAID0=y | ||
| 844 | CONFIG_MD_RAID1=y | ||
| 845 | CONFIG_MD_RAID10=y | ||
| 846 | # CONFIG_MD_RAID456 is not set | ||
| 847 | CONFIG_MD_MULTIPATH=y | ||
| 848 | CONFIG_MD_FAULTY=y | ||
| 849 | CONFIG_BLK_DEV_DM=y | ||
| 850 | # CONFIG_DM_DEBUG is not set | ||
| 851 | CONFIG_DM_CRYPT=y | ||
| 852 | CONFIG_DM_SNAPSHOT=y | ||
| 853 | CONFIG_DM_MIRROR=y | ||
| 854 | # CONFIG_DM_RAID is not set | ||
| 855 | # CONFIG_DM_LOG_USERSPACE is not set | ||
| 856 | CONFIG_DM_ZERO=y | ||
| 857 | # CONFIG_DM_MULTIPATH is not set | ||
| 858 | # CONFIG_DM_DELAY is not set | ||
| 859 | # CONFIG_DM_UEVENT is not set | ||
| 860 | # CONFIG_DM_FLAKEY is not set | ||
| 861 | # CONFIG_TARGET_CORE is not set | ||
| 862 | # CONFIG_FUSION is not set | ||
| 863 | |||
| 864 | # | ||
| 865 | # IEEE 1394 (FireWire) support | ||
| 866 | # | ||
| 867 | # CONFIG_FIREWIRE is not set | ||
| 868 | # CONFIG_FIREWIRE_NOSY is not set | ||
| 869 | # CONFIG_I2O is not set | ||
| 870 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
| 871 | CONFIG_NETDEVICES=y | ||
| 872 | CONFIG_DUMMY=y | ||
| 873 | # CONFIG_BONDING is not set | ||
| 874 | # CONFIG_MACVLAN is not set | ||
| 875 | # CONFIG_EQUALIZER is not set | ||
| 876 | CONFIG_TUN=y | ||
| 877 | # CONFIG_VETH is not set | ||
| 878 | # CONFIG_ARCNET is not set | ||
| 879 | CONFIG_MII=y | ||
| 880 | # CONFIG_PHYLIB is not set | ||
| 881 | CONFIG_NET_ETHERNET=y | ||
| 882 | # CONFIG_HAPPYMEAL is not set | ||
| 883 | # CONFIG_SUNGEM is not set | ||
| 884 | # CONFIG_CASSINI is not set | ||
| 885 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 886 | # CONFIG_ETHOC is not set | ||
| 887 | # CONFIG_DNET is not set | ||
| 888 | # CONFIG_NET_TULIP is not set | ||
| 889 | # CONFIG_HP100 is not set | ||
| 890 | # CONFIG_IBM_NEW_EMAC is not set | ||
| 891 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
| 892 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 893 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 894 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 895 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 896 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 897 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 898 | # CONFIG_NET_PCI is not set | ||
| 899 | # CONFIG_B44 is not set | ||
| 900 | # CONFIG_KS8842 is not set | ||
| 901 | # CONFIG_KS8851_MLL is not set | ||
| 902 | # CONFIG_ATL2 is not set | ||
| 903 | # CONFIG_XILINX_EMACLITE is not set | ||
| 904 | CONFIG_NETDEV_1000=y | ||
| 905 | # CONFIG_ACENIC is not set | ||
| 906 | # CONFIG_DL2K is not set | ||
| 907 | CONFIG_E1000=y | ||
| 908 | CONFIG_E1000E=y | ||
| 909 | # CONFIG_IP1000 is not set | ||
| 910 | CONFIG_IGB=y | ||
| 911 | CONFIG_IGBVF=y | ||
| 912 | # CONFIG_NS83820 is not set | ||
| 913 | # CONFIG_HAMACHI is not set | ||
| 914 | # CONFIG_YELLOWFIN is not set | ||
| 915 | # CONFIG_R8169 is not set | ||
| 916 | # CONFIG_SIS190 is not set | ||
| 917 | # CONFIG_SKGE is not set | ||
| 918 | # CONFIG_SKY2 is not set | ||
| 919 | # CONFIG_VIA_VELOCITY is not set | ||
| 920 | # CONFIG_TIGON3 is not set | ||
| 921 | # CONFIG_BNX2 is not set | ||
| 922 | # CONFIG_CNIC is not set | ||
| 923 | # CONFIG_MV643XX_ETH is not set | ||
| 924 | # CONFIG_XILINX_LL_TEMAC is not set | ||
| 925 | # CONFIG_QLA3XXX is not set | ||
| 926 | # CONFIG_ATL1 is not set | ||
| 927 | # CONFIG_ATL1E is not set | ||
| 928 | # CONFIG_ATL1C is not set | ||
| 929 | # CONFIG_JME is not set | ||
| 930 | # CONFIG_STMMAC_ETH is not set | ||
| 931 | # CONFIG_PCH_GBE is not set | ||
| 932 | # CONFIG_NETDEV_10000 is not set | ||
| 933 | # CONFIG_TR is not set | ||
| 934 | CONFIG_WLAN=y | ||
| 935 | # CONFIG_AIRO is not set | ||
| 936 | # CONFIG_ATMEL is not set | ||
| 937 | # CONFIG_PRISM54 is not set | ||
| 938 | CONFIG_USB_ZD1201=y | ||
| 939 | # CONFIG_HOSTAP is not set | ||
| 940 | |||
| 941 | # | ||
| 942 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 943 | # | ||
| 944 | |||
| 945 | # | ||
| 946 | # USB Network Adapters | ||
| 947 | # | ||
| 948 | # CONFIG_USB_CATC is not set | ||
| 949 | # CONFIG_USB_KAWETH is not set | ||
| 950 | # CONFIG_USB_PEGASUS is not set | ||
| 951 | # CONFIG_USB_RTL8150 is not set | ||
| 952 | # CONFIG_USB_USBNET is not set | ||
| 953 | # CONFIG_USB_IPHETH is not set | ||
| 954 | # CONFIG_WAN is not set | ||
| 955 | |||
| 956 | # | ||
| 957 | # CAIF transport drivers | ||
| 958 | # | ||
| 959 | # CONFIG_RIONET is not set | ||
| 960 | # CONFIG_FDDI is not set | ||
| 961 | # CONFIG_HIPPI is not set | ||
| 962 | CONFIG_PPP=m | ||
| 963 | CONFIG_PPP_MULTILINK=y | ||
| 964 | CONFIG_PPP_FILTER=y | ||
| 965 | CONFIG_PPP_ASYNC=m | ||
| 966 | CONFIG_PPP_SYNC_TTY=m | ||
| 967 | CONFIG_PPP_DEFLATE=m | ||
| 968 | CONFIG_PPP_BSDCOMP=m | ||
| 969 | # CONFIG_PPP_MPPE is not set | ||
| 970 | CONFIG_PPPOE=m | ||
| 971 | CONFIG_SLIP=m | ||
| 972 | CONFIG_SLIP_COMPRESSED=y | ||
| 973 | CONFIG_SLHC=m | ||
| 974 | CONFIG_SLIP_SMART=y | ||
| 975 | CONFIG_SLIP_MODE_SLIP6=y | ||
| 976 | # CONFIG_NET_FC is not set | ||
| 977 | CONFIG_NETCONSOLE=y | ||
| 978 | CONFIG_NETPOLL=y | ||
| 979 | CONFIG_NETPOLL_TRAP=y | ||
| 980 | CONFIG_NET_POLL_CONTROLLER=y | ||
| 981 | # CONFIG_VMXNET3 is not set | ||
| 982 | # CONFIG_ISDN is not set | ||
| 983 | # CONFIG_PHONE is not set | ||
| 984 | |||
| 985 | # | ||
| 986 | # Input device support | ||
| 987 | # | ||
| 988 | CONFIG_INPUT=y | ||
| 989 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
| 990 | # CONFIG_INPUT_POLLDEV is not set | ||
| 991 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
| 992 | |||
| 993 | # | ||
| 994 | # Userland interfaces | ||
| 995 | # | ||
| 996 | CONFIG_INPUT_MOUSEDEV=y | ||
| 997 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
| 998 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
| 999 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
| 1000 | # CONFIG_INPUT_JOYDEV is not set | ||
| 1001 | # CONFIG_INPUT_EVDEV is not set | ||
| 1002 | # CONFIG_INPUT_EVBUG is not set | ||
| 1003 | |||
| 1004 | # | ||
| 1005 | # Input Device Drivers | ||
| 1006 | # | ||
| 1007 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 1008 | # CONFIG_INPUT_MOUSE is not set | ||
| 1009 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 1010 | # CONFIG_INPUT_TABLET is not set | ||
| 1011 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 1012 | # CONFIG_INPUT_MISC is not set | ||
| 1013 | |||
| 1014 | # | ||
| 1015 | # Hardware I/O ports | ||
| 1016 | # | ||
| 1017 | CONFIG_SERIO=y | ||
| 1018 | CONFIG_SERIO_I8042=y | ||
| 1019 | CONFIG_SERIO_SERPORT=y | ||
| 1020 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 1021 | CONFIG_SERIO_LIBPS2=y | ||
| 1022 | # CONFIG_SERIO_RAW is not set | ||
| 1023 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 1024 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 1025 | # CONFIG_SERIO_PS2MULT is not set | ||
| 1026 | # CONFIG_GAMEPORT is not set | ||
| 1027 | |||
| 1028 | # | ||
| 1029 | # Character devices | ||
| 1030 | # | ||
| 1031 | CONFIG_VT=y | ||
| 1032 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 1033 | CONFIG_VT_CONSOLE=y | ||
| 1034 | CONFIG_HW_CONSOLE=y | ||
| 1035 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 1036 | CONFIG_UNIX98_PTYS=y | ||
| 1037 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 1038 | CONFIG_LEGACY_PTYS=y | ||
| 1039 | CONFIG_LEGACY_PTY_COUNT=20 | ||
| 1040 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 1041 | # CONFIG_NOZOMI is not set | ||
| 1042 | CONFIG_N_GSM=y | ||
| 1043 | # CONFIG_TRACE_SINK is not set | ||
| 1044 | CONFIG_DEVKMEM=y | ||
| 1045 | |||
| 1046 | # | ||
| 1047 | # Serial drivers | ||
| 1048 | # | ||
| 1049 | # CONFIG_SERIAL_8250 is not set | ||
| 1050 | |||
| 1051 | # | ||
| 1052 | # Non-8250 serial port support | ||
| 1053 | # | ||
| 1054 | # CONFIG_SERIAL_MFD_HSU is not set | ||
| 1055 | # CONFIG_SERIAL_UARTLITE is not set | ||
| 1056 | CONFIG_SERIAL_CORE=y | ||
| 1057 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 1058 | # CONFIG_SERIAL_JSM is not set | ||
| 1059 | # CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set | ||
| 1060 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
| 1061 | # CONFIG_SERIAL_ALTERA_JTAGUART is not set | ||
| 1062 | # CONFIG_SERIAL_ALTERA_UART is not set | ||
| 1063 | # CONFIG_SERIAL_PCH_UART is not set | ||
| 1064 | # CONFIG_SERIAL_XILINX_PS_UART is not set | ||
| 1065 | # CONFIG_TTY_PRINTK is not set | ||
| 1066 | # CONFIG_HVC_UDBG is not set | ||
| 1067 | # CONFIG_IPMI_HANDLER is not set | ||
| 1068 | # CONFIG_HW_RANDOM is not set | ||
| 1069 | # CONFIG_NVRAM is not set | ||
| 1070 | # CONFIG_R3964 is not set | ||
| 1071 | # CONFIG_APPLICOM is not set | ||
| 1072 | # CONFIG_RAW_DRIVER is not set | ||
| 1073 | # CONFIG_TCG_TPM is not set | ||
| 1074 | CONFIG_DEVPORT=y | ||
| 1075 | # CONFIG_RAMOOPS is not set | ||
| 1076 | # CONFIG_I2C is not set | ||
| 1077 | # CONFIG_SPI is not set | ||
| 1078 | |||
| 1079 | # | ||
| 1080 | # PPS support | ||
| 1081 | # | ||
| 1082 | # CONFIG_PPS is not set | ||
| 1083 | |||
| 1084 | # | ||
| 1085 | # PPS generators support | ||
| 1086 | # | ||
| 1087 | |||
| 1088 | # | ||
| 1089 | # PTP clock support | ||
| 1090 | # | ||
| 1091 | |||
| 1092 | # | ||
| 1093 | # Enable Device Drivers -> PPS to see the PTP clock options. | ||
| 1094 | # | ||
| 1095 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 1096 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
| 1097 | CONFIG_GPIOLIB=y | ||
| 1098 | # CONFIG_DEBUG_GPIO is not set | ||
| 1099 | CONFIG_GPIO_SYSFS=y | ||
| 1100 | |||
| 1101 | # | ||
| 1102 | # Memory mapped GPIO drivers: | ||
| 1103 | # | ||
| 1104 | # CONFIG_GPIO_GENERIC_PLATFORM is not set | ||
| 1105 | # CONFIG_GPIO_IT8761E is not set | ||
| 1106 | # CONFIG_GPIO_XILINX is not set | ||
| 1107 | |||
| 1108 | # | ||
| 1109 | # I2C GPIO expanders: | ||
| 1110 | # | ||
| 1111 | |||
| 1112 | # | ||
| 1113 | # PCI GPIO expanders: | ||
| 1114 | # | ||
| 1115 | # CONFIG_GPIO_BT8XX is not set | ||
| 1116 | # CONFIG_GPIO_ML_IOH is not set | ||
| 1117 | # CONFIG_GPIO_RDC321X is not set | ||
| 1118 | |||
| 1119 | # | ||
| 1120 | # SPI GPIO expanders: | ||
| 1121 | # | ||
| 1122 | |||
| 1123 | # | ||
| 1124 | # AC97 GPIO expanders: | ||
| 1125 | # | ||
| 1126 | |||
| 1127 | # | ||
| 1128 | # MODULbus GPIO expanders: | ||
| 1129 | # | ||
| 1130 | # CONFIG_W1 is not set | ||
| 1131 | # CONFIG_POWER_SUPPLY is not set | ||
| 1132 | # CONFIG_HWMON is not set | ||
| 1133 | CONFIG_THERMAL=y | ||
| 1134 | # CONFIG_WATCHDOG is not set | ||
| 1135 | CONFIG_SSB_POSSIBLE=y | ||
| 1136 | |||
| 1137 | # | ||
| 1138 | # Sonics Silicon Backplane | ||
| 1139 | # | ||
| 1140 | # CONFIG_SSB is not set | ||
| 1141 | CONFIG_BCMA_POSSIBLE=y | ||
| 1142 | |||
| 1143 | # | ||
| 1144 | # Broadcom specific AMBA | ||
| 1145 | # | ||
| 1146 | # CONFIG_BCMA is not set | ||
| 1147 | # CONFIG_MFD_SUPPORT is not set | ||
| 1148 | # CONFIG_REGULATOR is not set | ||
| 1149 | # CONFIG_MEDIA_SUPPORT is not set | ||
| 1150 | |||
| 1151 | # | ||
| 1152 | # Graphics support | ||
| 1153 | # | ||
| 1154 | # CONFIG_AGP is not set | ||
| 1155 | # CONFIG_VGA_ARB is not set | ||
| 1156 | # CONFIG_DRM is not set | ||
| 1157 | # CONFIG_STUB_POULSBO is not set | ||
| 1158 | # CONFIG_VGASTATE is not set | ||
| 1159 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
| 1160 | # CONFIG_FB is not set | ||
| 1161 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 1162 | |||
| 1163 | # | ||
| 1164 | # Display device support | ||
| 1165 | # | ||
| 1166 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 1167 | |||
| 1168 | # | ||
| 1169 | # Console display driver support | ||
| 1170 | # | ||
| 1171 | CONFIG_DUMMY_CONSOLE=y | ||
| 1172 | # CONFIG_SOUND is not set | ||
| 1173 | CONFIG_HID_SUPPORT=y | ||
| 1174 | CONFIG_HID=y | ||
| 1175 | CONFIG_HIDRAW=y | ||
| 1176 | |||
| 1177 | # | ||
| 1178 | # USB Input Devices | ||
| 1179 | # | ||
| 1180 | CONFIG_USB_HID=y | ||
| 1181 | CONFIG_HID_PID=y | ||
| 1182 | CONFIG_USB_HIDDEV=y | ||
| 1183 | |||
| 1184 | # | ||
| 1185 | # Special HID drivers | ||
| 1186 | # | ||
| 1187 | CONFIG_HID_A4TECH=y | ||
| 1188 | # CONFIG_HID_ACRUX is not set | ||
| 1189 | CONFIG_HID_APPLE=y | ||
| 1190 | # CONFIG_HID_BELKIN is not set | ||
| 1191 | # CONFIG_HID_CHERRY is not set | ||
| 1192 | # CONFIG_HID_CHICONY is not set | ||
| 1193 | # CONFIG_HID_CYPRESS is not set | ||
| 1194 | # CONFIG_HID_DRAGONRISE is not set | ||
| 1195 | # CONFIG_HID_EMS_FF is not set | ||
| 1196 | # CONFIG_HID_EZKEY is not set | ||
| 1197 | # CONFIG_HID_HOLTEK is not set | ||
| 1198 | # CONFIG_HID_KEYTOUCH is not set | ||
| 1199 | # CONFIG_HID_KYE is not set | ||
| 1200 | # CONFIG_HID_UCLOGIC is not set | ||
| 1201 | # CONFIG_HID_WALTOP is not set | ||
| 1202 | # CONFIG_HID_GYRATION is not set | ||
| 1203 | # CONFIG_HID_TWINHAN is not set | ||
| 1204 | # CONFIG_HID_KENSINGTON is not set | ||
| 1205 | # CONFIG_HID_LCPOWER is not set | ||
| 1206 | # CONFIG_HID_LOGITECH is not set | ||
| 1207 | # CONFIG_HID_MICROSOFT is not set | ||
| 1208 | # CONFIG_HID_MONTEREY is not set | ||
| 1209 | # CONFIG_HID_MULTITOUCH is not set | ||
| 1210 | # CONFIG_HID_NTRIG is not set | ||
| 1211 | # CONFIG_HID_ORTEK is not set | ||
| 1212 | # CONFIG_HID_PANTHERLORD is not set | ||
| 1213 | # CONFIG_HID_PETALYNX is not set | ||
| 1214 | # CONFIG_HID_PICOLCD is not set | ||
| 1215 | # CONFIG_HID_QUANTA is not set | ||
| 1216 | # CONFIG_HID_ROCCAT is not set | ||
| 1217 | # CONFIG_HID_SAMSUNG is not set | ||
| 1218 | # CONFIG_HID_SONY is not set | ||
| 1219 | # CONFIG_HID_SPEEDLINK is not set | ||
| 1220 | # CONFIG_HID_SUNPLUS is not set | ||
| 1221 | # CONFIG_HID_GREENASIA is not set | ||
| 1222 | # CONFIG_HID_SMARTJOYPLUS is not set | ||
| 1223 | # CONFIG_HID_TOPSEED is not set | ||
| 1224 | # CONFIG_HID_THRUSTMASTER is not set | ||
| 1225 | # CONFIG_HID_ZEROPLUS is not set | ||
| 1226 | # CONFIG_HID_ZYDACRON is not set | ||
| 1227 | CONFIG_USB_SUPPORT=y | ||
| 1228 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 1229 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 1230 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 1231 | CONFIG_USB=y | ||
| 1232 | # CONFIG_USB_DEBUG is not set | ||
| 1233 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
| 1234 | |||
| 1235 | # | ||
| 1236 | # Miscellaneous USB options | ||
| 1237 | # | ||
| 1238 | CONFIG_USB_DEVICEFS=y | ||
| 1239 | CONFIG_USB_DEVICE_CLASS=y | ||
| 1240 | CONFIG_USB_DYNAMIC_MINORS=y | ||
| 1241 | # CONFIG_USB_OTG_WHITELIST is not set | ||
| 1242 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 1243 | CONFIG_USB_MON=y | ||
| 1244 | # CONFIG_USB_WUSB is not set | ||
| 1245 | # CONFIG_USB_WUSB_CBAF is not set | ||
| 1246 | |||
| 1247 | # | ||
| 1248 | # USB Host Controller Drivers | ||
| 1249 | # | ||
| 1250 | # CONFIG_USB_C67X00_HCD is not set | ||
| 1251 | # CONFIG_USB_XHCI_HCD is not set | ||
| 1252 | CONFIG_USB_EHCI_HCD=y | ||
| 1253 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 1254 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 1255 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | ||
| 1256 | CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y | ||
| 1257 | CONFIG_XPS_USB_HCD_XILINX=y | ||
| 1258 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
| 1259 | # CONFIG_USB_OXU210HP_HCD is not set | ||
| 1260 | CONFIG_USB_CI13612_HCD=y | ||
| 1261 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 1262 | # CONFIG_USB_ISP1760_HCD is not set | ||
| 1263 | # CONFIG_USB_ISP1362_HCD is not set | ||
| 1264 | # CONFIG_USB_OHCI_HCD is not set | ||
| 1265 | # CONFIG_USB_UHCI_HCD is not set | ||
| 1266 | # CONFIG_USB_SL811_HCD is not set | ||
| 1267 | # CONFIG_USB_R8A66597_HCD is not set | ||
| 1268 | # CONFIG_USB_WHCI_HCD is not set | ||
| 1269 | # CONFIG_USB_HWA_HCD is not set | ||
| 1270 | |||
| 1271 | # | ||
| 1272 | # USB Device Class drivers | ||
| 1273 | # | ||
| 1274 | # CONFIG_USB_ACM is not set | ||
| 1275 | # CONFIG_USB_PRINTER is not set | ||
| 1276 | # CONFIG_USB_WDM is not set | ||
| 1277 | # CONFIG_USB_TMC is not set | ||
| 1278 | |||
| 1279 | # | ||
| 1280 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 1281 | # | ||
| 1282 | |||
| 1283 | # | ||
| 1284 | # also be needed; see USB_STORAGE Help for more info | ||
| 1285 | # | ||
| 1286 | CONFIG_USB_STORAGE=y | ||
| 1287 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 1288 | # CONFIG_USB_STORAGE_REALTEK is not set | ||
| 1289 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 1290 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 1291 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 1292 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 1293 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 1294 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 1295 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 1296 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 1297 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 1298 | # CONFIG_USB_STORAGE_KARMA is not set | ||
| 1299 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 1300 | # CONFIG_USB_STORAGE_ENE_UB6250 is not set | ||
| 1301 | # CONFIG_USB_UAS is not set | ||
| 1302 | CONFIG_USB_LIBUSUAL=y | ||
| 1303 | |||
| 1304 | # | ||
| 1305 | # USB Imaging devices | ||
| 1306 | # | ||
| 1307 | # CONFIG_USB_MDC800 is not set | ||
| 1308 | # CONFIG_USB_MICROTEK is not set | ||
| 1309 | |||
| 1310 | # | ||
| 1311 | # USB port drivers | ||
| 1312 | # | ||
| 1313 | # CONFIG_USB_SERIAL is not set | ||
| 1314 | |||
| 1315 | # | ||
| 1316 | # USB Miscellaneous drivers | ||
| 1317 | # | ||
| 1318 | # CONFIG_USB_EMI62 is not set | ||
| 1319 | # CONFIG_USB_EMI26 is not set | ||
| 1320 | # CONFIG_USB_ADUTUX is not set | ||
| 1321 | # CONFIG_USB_SEVSEG is not set | ||
| 1322 | # CONFIG_USB_RIO500 is not set | ||
| 1323 | # CONFIG_USB_LEGOTOWER is not set | ||
| 1324 | # CONFIG_USB_LCD is not set | ||
| 1325 | # CONFIG_USB_LED is not set | ||
| 1326 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1327 | # CONFIG_USB_CYTHERM is not set | ||
| 1328 | # CONFIG_USB_IDMOUSE is not set | ||
| 1329 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1330 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1331 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1332 | # CONFIG_USB_LD is not set | ||
| 1333 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1334 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1335 | # CONFIG_USB_TEST is not set | ||
| 1336 | # CONFIG_USB_ISIGHTFW is not set | ||
| 1337 | # CONFIG_USB_YUREX is not set | ||
| 1338 | # CONFIG_USB_GADGET is not set | ||
| 1339 | |||
| 1340 | # | ||
| 1341 | # OTG and related infrastructure | ||
| 1342 | # | ||
| 1343 | # CONFIG_USB_GPIO_VBUS is not set | ||
| 1344 | # CONFIG_NOP_USB_XCEIV is not set | ||
| 1345 | # CONFIG_UWB is not set | ||
| 1346 | # CONFIG_MMC is not set | ||
| 1347 | # CONFIG_MEMSTICK is not set | ||
| 1348 | # CONFIG_NEW_LEDS is not set | ||
| 1349 | # CONFIG_ACCESSIBILITY is not set | ||
| 1350 | # CONFIG_INFINIBAND is not set | ||
| 1351 | # CONFIG_EDAC is not set | ||
| 1352 | CONFIG_RTC_LIB=y | ||
| 1353 | CONFIG_RTC_CLASS=y | ||
| 1354 | CONFIG_RTC_HCTOSYS=y | ||
| 1355 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 1356 | # CONFIG_RTC_DEBUG is not set | ||
| 1357 | |||
| 1358 | # | ||
| 1359 | # RTC interfaces | ||
| 1360 | # | ||
| 1361 | CONFIG_RTC_INTF_SYSFS=y | ||
| 1362 | CONFIG_RTC_INTF_PROC=y | ||
| 1363 | CONFIG_RTC_INTF_DEV=y | ||
| 1364 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 1365 | # CONFIG_RTC_DRV_TEST is not set | ||
| 1366 | |||
| 1367 | # | ||
| 1368 | # SPI RTC drivers | ||
| 1369 | # | ||
| 1370 | |||
| 1371 | # | ||
| 1372 | # Platform RTC drivers | ||
| 1373 | # | ||
| 1374 | # CONFIG_RTC_DRV_CMOS is not set | ||
| 1375 | # CONFIG_RTC_DRV_DS1286 is not set | ||
| 1376 | # CONFIG_RTC_DRV_DS1511 is not set | ||
| 1377 | # CONFIG_RTC_DRV_DS1553 is not set | ||
| 1378 | CONFIG_RTC_DRV_DS1742=y | ||
| 1379 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
| 1380 | # CONFIG_RTC_DRV_M48T86 is not set | ||
| 1381 | # CONFIG_RTC_DRV_M48T35 is not set | ||
| 1382 | # CONFIG_RTC_DRV_M48T59 is not set | ||
| 1383 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
| 1384 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
| 1385 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
| 1386 | # CONFIG_RTC_DRV_V3020 is not set | ||
| 1387 | |||
| 1388 | # | ||
| 1389 | # on-CPU RTC drivers | ||
| 1390 | # | ||
| 1391 | # CONFIG_RTC_DRV_GENERIC is not set | ||
| 1392 | CONFIG_DMADEVICES=y | ||
| 1393 | CONFIG_DMADEVICES_DEBUG=y | ||
| 1394 | CONFIG_DMADEVICES_VDEBUG=y | ||
| 1395 | |||
| 1396 | # | ||
| 1397 | # DMA Devices | ||
| 1398 | # | ||
| 1399 | # CONFIG_TIMB_DMA is not set | ||
| 1400 | CONFIG_LSI_DMA=y | ||
| 1401 | CONFIG_DMA_ENGINE=y | ||
| 1402 | |||
| 1403 | # | ||
| 1404 | # DMA Clients | ||
| 1405 | # | ||
| 1406 | # CONFIG_NET_DMA is not set | ||
| 1407 | # CONFIG_ASYNC_TX_DMA is not set | ||
| 1408 | CONFIG_DMATEST=m | ||
| 1409 | # CONFIG_AUXDISPLAY is not set | ||
| 1410 | # CONFIG_UIO is not set | ||
| 1411 | |||
| 1412 | # | ||
| 1413 | # Virtio drivers | ||
| 1414 | # | ||
| 1415 | # CONFIG_VIRTIO_PCI is not set | ||
| 1416 | # CONFIG_VIRTIO_BALLOON is not set | ||
| 1417 | # CONFIG_STAGING is not set | ||
| 1418 | CONFIG_IOMMU_SUPPORT=y | ||
| 1419 | # CONFIG_VIRT_DRIVERS is not set | ||
| 1420 | |||
| 1421 | # | ||
| 1422 | # LSI Drivers (APP3, APP3K, and ACP) | ||
| 1423 | # | ||
| 1424 | CONFIG_SERIAL_ACP=y | ||
| 1425 | CONFIG_SERIAL_ACP_CONSOLE=y | ||
| 1426 | # CONFIG_SERIAL_ACP_CONSOLE_POLL is not set | ||
| 1427 | CONFIG_LSI_NET=y | ||
| 1428 | CONFIG_LSI_NET_NUM_RX_DESC=16 | ||
| 1429 | CONFIG_LSI_NET_RX_BUF_SZ=131072 | ||
| 1430 | CONFIG_LSI_NET_NUM_TX_DESC=8 | ||
| 1431 | CONFIG_LSI_NET_TX_BUF_SZ=65536 | ||
| 1432 | CONFIG_LSI_NAND=y | ||
| 1433 | CONFIG_LSI_UBOOTENV=y | ||
| 1434 | CONFIG_LSI_PLX_PCIE_BRIDGE=y | ||
| 1435 | |||
| 1436 | # | ||
| 1437 | # File systems | ||
| 1438 | # | ||
| 1439 | CONFIG_EXT2_FS=y | ||
| 1440 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 1441 | # CONFIG_EXT2_FS_XIP is not set | ||
| 1442 | CONFIG_EXT3_FS=y | ||
| 1443 | CONFIG_EXT3_DEFAULTS_TO_ORDERED=y | ||
| 1444 | CONFIG_EXT3_FS_XATTR=y | ||
| 1445 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 1446 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 1447 | CONFIG_EXT4_FS=y | ||
| 1448 | CONFIG_EXT4_FS_XATTR=y | ||
| 1449 | # CONFIG_EXT4_FS_POSIX_ACL is not set | ||
| 1450 | # CONFIG_EXT4_FS_SECURITY is not set | ||
| 1451 | # CONFIG_EXT4_DEBUG is not set | ||
| 1452 | CONFIG_JBD=y | ||
| 1453 | # CONFIG_JBD_DEBUG is not set | ||
| 1454 | CONFIG_JBD2=y | ||
| 1455 | # CONFIG_JBD2_DEBUG is not set | ||
| 1456 | CONFIG_FS_MBCACHE=y | ||
| 1457 | # CONFIG_REISERFS_FS is not set | ||
| 1458 | # CONFIG_JFS_FS is not set | ||
| 1459 | # CONFIG_XFS_FS is not set | ||
| 1460 | # CONFIG_GFS2_FS is not set | ||
| 1461 | # CONFIG_OCFS2_FS is not set | ||
| 1462 | # CONFIG_BTRFS_FS is not set | ||
| 1463 | # CONFIG_NILFS2_FS is not set | ||
| 1464 | CONFIG_FS_POSIX_ACL=y | ||
| 1465 | CONFIG_EXPORTFS=m | ||
| 1466 | CONFIG_FILE_LOCKING=y | ||
| 1467 | CONFIG_FSNOTIFY=y | ||
| 1468 | CONFIG_DNOTIFY=y | ||
| 1469 | CONFIG_INOTIFY_USER=y | ||
| 1470 | CONFIG_FANOTIFY=y | ||
| 1471 | # CONFIG_QUOTA is not set | ||
| 1472 | # CONFIG_QUOTACTL is not set | ||
| 1473 | CONFIG_AUTOFS4_FS=y | ||
| 1474 | # CONFIG_FUSE_FS is not set | ||
| 1475 | |||
| 1476 | # | ||
| 1477 | # Caches | ||
| 1478 | # | ||
| 1479 | # CONFIG_FSCACHE is not set | ||
| 1480 | |||
| 1481 | # | ||
| 1482 | # CD-ROM/DVD Filesystems | ||
| 1483 | # | ||
| 1484 | # CONFIG_ISO9660_FS is not set | ||
| 1485 | # CONFIG_UDF_FS is not set | ||
| 1486 | |||
| 1487 | # | ||
| 1488 | # DOS/FAT/NT Filesystems | ||
| 1489 | # | ||
| 1490 | CONFIG_FAT_FS=y | ||
| 1491 | CONFIG_MSDOS_FS=y | ||
| 1492 | CONFIG_VFAT_FS=y | ||
| 1493 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1494 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1495 | CONFIG_NTFS_FS=m | ||
| 1496 | # CONFIG_NTFS_DEBUG is not set | ||
| 1497 | CONFIG_NTFS_RW=y | ||
| 1498 | |||
| 1499 | # | ||
| 1500 | # Pseudo filesystems | ||
| 1501 | # | ||
| 1502 | CONFIG_PROC_FS=y | ||
| 1503 | # CONFIG_PROC_KCORE is not set | ||
| 1504 | CONFIG_PROC_SYSCTL=y | ||
| 1505 | CONFIG_PROC_PAGE_MONITOR=y | ||
| 1506 | CONFIG_SYSFS=y | ||
| 1507 | CONFIG_TMPFS=y | ||
| 1508 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1509 | # CONFIG_TMPFS_XATTR is not set | ||
| 1510 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1511 | CONFIG_CONFIGFS_FS=m | ||
| 1512 | CONFIG_MISC_FILESYSTEMS=y | ||
| 1513 | # CONFIG_ADFS_FS is not set | ||
| 1514 | # CONFIG_AFFS_FS is not set | ||
| 1515 | # CONFIG_ECRYPT_FS is not set | ||
| 1516 | # CONFIG_HFS_FS is not set | ||
| 1517 | # CONFIG_HFSPLUS_FS is not set | ||
| 1518 | # CONFIG_BEFS_FS is not set | ||
| 1519 | # CONFIG_BFS_FS is not set | ||
| 1520 | # CONFIG_EFS_FS is not set | ||
| 1521 | CONFIG_JFFS2_FS=y | ||
| 1522 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1523 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1524 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
| 1525 | # CONFIG_JFFS2_SUMMARY is not set | ||
| 1526 | # CONFIG_JFFS2_FS_XATTR is not set | ||
| 1527 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 1528 | CONFIG_JFFS2_ZLIB=y | ||
| 1529 | # CONFIG_JFFS2_LZO is not set | ||
| 1530 | CONFIG_JFFS2_RTIME=y | ||
| 1531 | # CONFIG_JFFS2_RUBIN is not set | ||
| 1532 | # CONFIG_LOGFS is not set | ||
| 1533 | # CONFIG_CRAMFS is not set | ||
| 1534 | # CONFIG_SQUASHFS is not set | ||
| 1535 | # CONFIG_VXFS_FS is not set | ||
| 1536 | # CONFIG_MINIX_FS is not set | ||
| 1537 | # CONFIG_OMFS_FS is not set | ||
| 1538 | # CONFIG_HPFS_FS is not set | ||
| 1539 | # CONFIG_QNX4FS_FS is not set | ||
| 1540 | # CONFIG_ROMFS_FS is not set | ||
| 1541 | # CONFIG_PSTORE is not set | ||
| 1542 | # CONFIG_SYSV_FS is not set | ||
| 1543 | # CONFIG_UFS_FS is not set | ||
| 1544 | CONFIG_NETWORK_FILESYSTEMS=y | ||
| 1545 | CONFIG_NFS_FS=y | ||
| 1546 | CONFIG_NFS_V3=y | ||
| 1547 | # CONFIG_NFS_V3_ACL is not set | ||
| 1548 | # CONFIG_NFS_V4 is not set | ||
| 1549 | CONFIG_ROOT_NFS=y | ||
| 1550 | CONFIG_NFSD=m | ||
| 1551 | CONFIG_NFSD_V3=y | ||
| 1552 | # CONFIG_NFSD_V3_ACL is not set | ||
| 1553 | CONFIG_NFSD_V4=y | ||
| 1554 | CONFIG_LOCKD=y | ||
| 1555 | CONFIG_LOCKD_V4=y | ||
| 1556 | CONFIG_NFS_COMMON=y | ||
| 1557 | CONFIG_SUNRPC=y | ||
| 1558 | CONFIG_SUNRPC_GSS=m | ||
| 1559 | # CONFIG_CEPH_FS is not set | ||
| 1560 | # CONFIG_CIFS is not set | ||
| 1561 | # CONFIG_NCP_FS is not set | ||
| 1562 | # CONFIG_CODA_FS is not set | ||
| 1563 | # CONFIG_AFS_FS is not set | ||
| 1564 | |||
| 1565 | # | ||
| 1566 | # Partition Types | ||
| 1567 | # | ||
| 1568 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 1569 | CONFIG_MSDOS_PARTITION=y | ||
| 1570 | CONFIG_NLS=y | ||
| 1571 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1572 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1573 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1574 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1575 | CONFIG_NLS_CODEPAGE_850=y | ||
| 1576 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1577 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1578 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1579 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1580 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1581 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1582 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1583 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1584 | CONFIG_NLS_CODEPAGE_865=y | ||
| 1585 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1586 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1587 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1588 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1589 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1590 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1591 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1592 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1593 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1594 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1595 | CONFIG_NLS_ASCII=y | ||
| 1596 | CONFIG_NLS_ISO8859_1=y | ||
| 1597 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1598 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1599 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1600 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1601 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1602 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1603 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1604 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1605 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1606 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1607 | # CONFIG_NLS_KOI8_R is not set | ||
| 1608 | # CONFIG_NLS_KOI8_U is not set | ||
| 1609 | # CONFIG_NLS_UTF8 is not set | ||
| 1610 | # CONFIG_DLM is not set | ||
| 1611 | # CONFIG_BINARY_PRINTF is not set | ||
| 1612 | |||
| 1613 | # | ||
| 1614 | # Library routines | ||
| 1615 | # | ||
| 1616 | CONFIG_BITREVERSE=y | ||
| 1617 | CONFIG_CRC_CCITT=m | ||
| 1618 | CONFIG_CRC16=y | ||
| 1619 | # CONFIG_CRC_T10DIF is not set | ||
| 1620 | # CONFIG_CRC_ITU_T is not set | ||
| 1621 | CONFIG_CRC32=y | ||
| 1622 | # CONFIG_CRC7 is not set | ||
| 1623 | # CONFIG_LIBCRC32C is not set | ||
| 1624 | # CONFIG_CRC8 is not set | ||
| 1625 | CONFIG_ZLIB_INFLATE=y | ||
| 1626 | CONFIG_ZLIB_DEFLATE=y | ||
| 1627 | # CONFIG_XZ_DEC is not set | ||
| 1628 | # CONFIG_XZ_DEC_BCJ is not set | ||
| 1629 | CONFIG_HAS_IOMEM=y | ||
| 1630 | CONFIG_HAS_IOPORT=y | ||
| 1631 | CONFIG_HAS_DMA=y | ||
| 1632 | CONFIG_CPU_RMAP=y | ||
| 1633 | CONFIG_NLATTR=y | ||
| 1634 | CONFIG_GENERIC_ATOMIC64=y | ||
| 1635 | # CONFIG_AVERAGE is not set | ||
| 1636 | # CONFIG_CORDIC is not set | ||
| 1637 | |||
| 1638 | # | ||
| 1639 | # Kernel hacking | ||
| 1640 | # | ||
| 1641 | # CONFIG_PRINTK_TIME is not set | ||
| 1642 | CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 | ||
| 1643 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 1644 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1645 | CONFIG_FRAME_WARN=1024 | ||
| 1646 | CONFIG_MAGIC_SYSRQ=y | ||
| 1647 | # CONFIG_STRIP_ASM_SYMS is not set | ||
| 1648 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1649 | CONFIG_DEBUG_FS=y | ||
| 1650 | # CONFIG_HEADERS_CHECK is not set | ||
| 1651 | # CONFIG_DEBUG_SECTION_MISMATCH is not set | ||
| 1652 | CONFIG_DEBUG_KERNEL=y | ||
| 1653 | # CONFIG_DEBUG_SHIRQ is not set | ||
| 1654 | # CONFIG_LOCKUP_DETECTOR is not set | ||
| 1655 | # CONFIG_HARDLOCKUP_DETECTOR is not set | ||
| 1656 | # CONFIG_DETECT_HUNG_TASK is not set | ||
| 1657 | CONFIG_SCHED_DEBUG=y | ||
| 1658 | # CONFIG_SCHEDSTATS is not set | ||
| 1659 | # CONFIG_TIMER_STATS is not set | ||
| 1660 | # CONFIG_DEBUG_OBJECTS is not set | ||
| 1661 | # CONFIG_SLUB_DEBUG_ON is not set | ||
| 1662 | # CONFIG_SLUB_STATS is not set | ||
| 1663 | # CONFIG_DEBUG_KMEMLEAK is not set | ||
| 1664 | CONFIG_DEBUG_PREEMPT=y | ||
| 1665 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
| 1666 | # CONFIG_RT_MUTEX_TESTER is not set | ||
| 1667 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1668 | # CONFIG_DEBUG_MUTEXES is not set | ||
| 1669 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
| 1670 | # CONFIG_PROVE_LOCKING is not set | ||
| 1671 | # CONFIG_SPARSE_RCU_POINTER is not set | ||
| 1672 | # CONFIG_LOCK_STAT is not set | ||
| 1673 | # CONFIG_DEBUG_ATOMIC_SLEEP is not set | ||
| 1674 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
| 1675 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
| 1676 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1677 | # CONFIG_DEBUG_HIGHMEM is not set | ||
| 1678 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1679 | CONFIG_DEBUG_INFO=y | ||
| 1680 | # CONFIG_DEBUG_INFO_REDUCED is not set | ||
| 1681 | # CONFIG_DEBUG_VM is not set | ||
| 1682 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
| 1683 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 1684 | # CONFIG_DEBUG_LIST is not set | ||
| 1685 | # CONFIG_TEST_LIST_SORT is not set | ||
| 1686 | # CONFIG_DEBUG_SG is not set | ||
| 1687 | # CONFIG_DEBUG_NOTIFIERS is not set | ||
| 1688 | # CONFIG_DEBUG_CREDENTIALS is not set | ||
| 1689 | # CONFIG_RCU_TORTURE_TEST is not set | ||
| 1690 | CONFIG_RCU_CPU_STALL_TIMEOUT=60 | ||
| 1691 | CONFIG_RCU_CPU_STALL_VERBOSE=y | ||
| 1692 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
| 1693 | # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set | ||
| 1694 | # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set | ||
| 1695 | # CONFIG_DEBUG_PER_CPU_MAPS is not set | ||
| 1696 | # CONFIG_LKDTM is not set | ||
| 1697 | # CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set | ||
| 1698 | # CONFIG_FAULT_INJECTION is not set | ||
| 1699 | # CONFIG_LATENCYTOP is not set | ||
| 1700 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
| 1701 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
| 1702 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 1703 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 1704 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 1705 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 1706 | CONFIG_HAVE_SYSCALL_TRACEPOINTS=y | ||
| 1707 | CONFIG_RING_BUFFER=y | ||
| 1708 | CONFIG_RING_BUFFER_ALLOW_SWAP=y | ||
| 1709 | CONFIG_TRACING_SUPPORT=y | ||
| 1710 | CONFIG_FTRACE=y | ||
| 1711 | # CONFIG_FUNCTION_TRACER is not set | ||
| 1712 | # CONFIG_IRQSOFF_TRACER is not set | ||
| 1713 | # CONFIG_PREEMPT_TRACER is not set | ||
| 1714 | # CONFIG_SCHED_TRACER is not set | ||
| 1715 | # CONFIG_ENABLE_DEFAULT_TRACERS is not set | ||
| 1716 | # CONFIG_FTRACE_SYSCALLS is not set | ||
| 1717 | CONFIG_BRANCH_PROFILE_NONE=y | ||
| 1718 | # CONFIG_PROFILE_ANNOTATED_BRANCHES is not set | ||
| 1719 | # CONFIG_PROFILE_ALL_BRANCHES is not set | ||
| 1720 | # CONFIG_STACK_TRACER is not set | ||
| 1721 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
| 1722 | # CONFIG_RING_BUFFER_BENCHMARK is not set | ||
| 1723 | # CONFIG_DYNAMIC_DEBUG is not set | ||
| 1724 | # CONFIG_DMA_API_DEBUG is not set | ||
| 1725 | # CONFIG_ATOMIC64_SELFTEST is not set | ||
| 1726 | # CONFIG_SAMPLES is not set | ||
| 1727 | CONFIG_HAVE_ARCH_KGDB=y | ||
| 1728 | # CONFIG_KGDB is not set | ||
| 1729 | # CONFIG_TEST_KSTRTOX is not set | ||
| 1730 | # CONFIG_PPC_DISABLE_WERROR is not set | ||
| 1731 | CONFIG_PPC_WERROR=y | ||
| 1732 | CONFIG_PRINT_STACK_DEPTH=64 | ||
| 1733 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
| 1734 | # CONFIG_PPC_EMULATED_STATS is not set | ||
| 1735 | # CONFIG_CODE_PATCHING_SELFTEST is not set | ||
| 1736 | # CONFIG_FTR_FIXUP_SELFTEST is not set | ||
| 1737 | # CONFIG_MSI_BITMAP_SELFTEST is not set | ||
| 1738 | CONFIG_XMON=y | ||
| 1739 | CONFIG_XMON_DEFAULT=y | ||
| 1740 | CONFIG_XMON_DISASSEMBLY=y | ||
| 1741 | CONFIG_DEBUGGER=y | ||
| 1742 | # CONFIG_VIRQ_DEBUG is not set | ||
| 1743 | # CONFIG_BDI_SWITCH is not set | ||
| 1744 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
| 1745 | |||
| 1746 | # | ||
| 1747 | # Security options | ||
| 1748 | # | ||
| 1749 | CONFIG_KEYS=y | ||
| 1750 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
| 1751 | # CONFIG_SECURITY_DMESG_RESTRICT is not set | ||
| 1752 | # CONFIG_SECURITY is not set | ||
| 1753 | # CONFIG_SECURITYFS is not set | ||
| 1754 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 1755 | CONFIG_DEFAULT_SECURITY="" | ||
| 1756 | CONFIG_CRYPTO=y | ||
| 1757 | |||
| 1758 | # | ||
| 1759 | # Crypto core or helper | ||
| 1760 | # | ||
| 1761 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1762 | CONFIG_CRYPTO_ALGAPI2=y | ||
| 1763 | CONFIG_CRYPTO_AEAD=y | ||
| 1764 | CONFIG_CRYPTO_AEAD2=y | ||
| 1765 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1766 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 1767 | CONFIG_CRYPTO_HASH=y | ||
| 1768 | CONFIG_CRYPTO_HASH2=y | ||
| 1769 | CONFIG_CRYPTO_RNG=y | ||
| 1770 | CONFIG_CRYPTO_RNG2=y | ||
| 1771 | CONFIG_CRYPTO_PCOMP2=y | ||
| 1772 | CONFIG_CRYPTO_MANAGER=y | ||
| 1773 | CONFIG_CRYPTO_MANAGER2=y | ||
| 1774 | CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y | ||
| 1775 | CONFIG_CRYPTO_GF128MUL=y | ||
| 1776 | CONFIG_CRYPTO_NULL=y | ||
| 1777 | # CONFIG_CRYPTO_PCRYPT is not set | ||
| 1778 | CONFIG_CRYPTO_WORKQUEUE=y | ||
| 1779 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1780 | CONFIG_CRYPTO_AUTHENC=y | ||
| 1781 | # CONFIG_CRYPTO_TEST is not set | ||
| 1782 | |||
| 1783 | # | ||
| 1784 | # Authenticated Encryption with Associated Data | ||
| 1785 | # | ||
| 1786 | # CONFIG_CRYPTO_CCM is not set | ||
| 1787 | CONFIG_CRYPTO_GCM=y | ||
| 1788 | CONFIG_CRYPTO_SEQIV=y | ||
| 1789 | |||
| 1790 | # | ||
| 1791 | # Block modes | ||
| 1792 | # | ||
| 1793 | CONFIG_CRYPTO_CBC=y | ||
| 1794 | CONFIG_CRYPTO_CTR=y | ||
| 1795 | # CONFIG_CRYPTO_CTS is not set | ||
| 1796 | # CONFIG_CRYPTO_ECB is not set | ||
| 1797 | # CONFIG_CRYPTO_LRW is not set | ||
| 1798 | # CONFIG_CRYPTO_PCBC is not set | ||
| 1799 | # CONFIG_CRYPTO_XTS is not set | ||
| 1800 | |||
| 1801 | # | ||
| 1802 | # Hash modes | ||
| 1803 | # | ||
| 1804 | CONFIG_CRYPTO_HMAC=y | ||
| 1805 | CONFIG_CRYPTO_XCBC=y | ||
| 1806 | # CONFIG_CRYPTO_VMAC is not set | ||
| 1807 | |||
| 1808 | # | ||
| 1809 | # Digest | ||
| 1810 | # | ||
| 1811 | # CONFIG_CRYPTO_CRC32C is not set | ||
| 1812 | CONFIG_CRYPTO_GHASH=y | ||
| 1813 | # CONFIG_CRYPTO_MD4 is not set | ||
| 1814 | CONFIG_CRYPTO_MD5=y | ||
| 1815 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 1816 | # CONFIG_CRYPTO_RMD128 is not set | ||
| 1817 | # CONFIG_CRYPTO_RMD160 is not set | ||
| 1818 | # CONFIG_CRYPTO_RMD256 is not set | ||
| 1819 | # CONFIG_CRYPTO_RMD320 is not set | ||
| 1820 | CONFIG_CRYPTO_SHA1=y | ||
| 1821 | CONFIG_CRYPTO_SHA256=y | ||
| 1822 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 1823 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1824 | # CONFIG_CRYPTO_WP512 is not set | ||
| 1825 | |||
| 1826 | # | ||
| 1827 | # Ciphers | ||
| 1828 | # | ||
| 1829 | CONFIG_CRYPTO_AES=y | ||
| 1830 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 1831 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 1832 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 1833 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1834 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 1835 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 1836 | CONFIG_CRYPTO_DES=y | ||
| 1837 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1838 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 1839 | # CONFIG_CRYPTO_SALSA20 is not set | ||
| 1840 | # CONFIG_CRYPTO_SEED is not set | ||
| 1841 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 1842 | # CONFIG_CRYPTO_TEA is not set | ||
| 1843 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 1844 | |||
| 1845 | # | ||
| 1846 | # Compression | ||
| 1847 | # | ||
| 1848 | CONFIG_CRYPTO_DEFLATE=y | ||
| 1849 | # CONFIG_CRYPTO_ZLIB is not set | ||
| 1850 | # CONFIG_CRYPTO_LZO is not set | ||
| 1851 | |||
| 1852 | # | ||
| 1853 | # Random Number Generation | ||
| 1854 | # | ||
| 1855 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 1856 | # CONFIG_CRYPTO_USER_API_HASH is not set | ||
| 1857 | # CONFIG_CRYPTO_USER_API_SKCIPHER is not set | ||
| 1858 | CONFIG_CRYPTO_HW=y | ||
| 1859 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 1860 | CONFIG_CRYPTO_DEV_PPC4XX=y | ||
| 1861 | # CONFIG_PPC_CLOCK is not set | ||
| 1862 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/recipes-kernel/linux/linux-3.0.6/merge_config.sh b/recipes-kernel/linux/linux-3.0.6/merge_config.sh new file mode 100755 index 0000000..33f18d4 --- /dev/null +++ b/recipes-kernel/linux/linux-3.0.6/merge_config.sh | |||
| @@ -0,0 +1,142 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # merge_config.sh - Takes a list of config fragment values, and merges | ||
| 3 | # them one by one. Provides warnings on overridden values, and specified | ||
| 4 | # values that did not make it to the resulting .config file (due to missed | ||
| 5 | # dependencies or config symbol removal). | ||
| 6 | # | ||
| 7 | # Portions reused from kconf_check and generate_cfg: | ||
| 8 | # http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check | ||
| 9 | # http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg | ||
| 10 | # | ||
| 11 | # Copyright (c) 2009-2010 Wind River Systems, Inc. | ||
| 12 | # Copyright 2011 Linaro | ||
| 13 | # | ||
| 14 | # This program is free software; you can redistribute it and/or modify | ||
| 15 | # it under the terms of the GNU General Public License version 2 as | ||
| 16 | # published by the Free Software Foundation. | ||
| 17 | # | ||
| 18 | # This program is distributed in the hope that it will be useful, | ||
| 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 21 | # See the GNU General Public License for more details. | ||
| 22 | |||
| 23 | |||
| 24 | usage() { | ||
| 25 | echo "Usage: $0 [OPTIONS] [CONFIG [...]]" | ||
| 26 | echo " -h display this help text" | ||
| 27 | echo " -m only merge the fragments, do not execute the make command" | ||
| 28 | echo " -n use allnoconfig instead of alldefconfig" | ||
| 29 | echo " -x use allmodconfig instead of alldefconfig" | ||
| 30 | echo " -d debug. Don't cleanup temporary files" | ||
| 31 | } | ||
| 32 | |||
| 33 | MAKE_FLAG=true | ||
| 34 | ALLTARGET=alldefconfig | ||
| 35 | |||
| 36 | # There are two variables that impact where the .config will be dropped, | ||
| 37 | # O= and KBUILD_OUTPUT=. So we'll respect those variables and use them as | ||
| 38 | # an output directory as well. These two variables are not propagating | ||
| 39 | # automatically to the kernel build, so always explicitly setting O= | ||
| 40 | # and passing it to the kernel build ensures that it is respected. | ||
| 41 | if [ -n "$KBUILD_OUTPUT" ]; then | ||
| 42 | O=$KBUILD_OUTPUT | ||
| 43 | fi | ||
| 44 | if [ -z "$O" ]; then | ||
| 45 | O=. | ||
| 46 | fi | ||
| 47 | |||
| 48 | while true; do | ||
| 49 | case $1 in | ||
| 50 | "-n") | ||
| 51 | ALLTARGET=allnoconfig | ||
| 52 | shift | ||
| 53 | continue | ||
| 54 | ;; | ||
| 55 | "-m") | ||
| 56 | MAKE_FLAG=false | ||
| 57 | shift | ||
| 58 | continue | ||
| 59 | ;; | ||
| 60 | "-d") | ||
| 61 | DEBUG=true | ||
| 62 | shift | ||
| 63 | continue | ||
| 64 | ;; | ||
| 65 | "-h") | ||
| 66 | usage | ||
| 67 | exit | ||
| 68 | ;; | ||
| 69 | *) | ||
| 70 | break | ||
| 71 | ;; | ||
| 72 | esac | ||
| 73 | done | ||
| 74 | |||
| 75 | clean_up() { | ||
| 76 | rm -f $TMP_FILE | ||
| 77 | exit | ||
| 78 | } | ||
| 79 | if [ -z "$DEBUG" ]; then | ||
| 80 | trap clean_up SIGHUP SIGINT SIGTERM | ||
| 81 | fi | ||
| 82 | |||
| 83 | |||
| 84 | MERGE_LIST=$* | ||
| 85 | SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" | ||
| 86 | TMP_FILE=$(mktemp $O/.tmp.config.XXXXXXXXXX) | ||
| 87 | |||
| 88 | # Merge files, printing warnings on overrided values | ||
| 89 | for MERGE_FILE in $MERGE_LIST ; do | ||
| 90 | echo "Merging $MERGE_FILE" | ||
| 91 | CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) | ||
| 92 | |||
| 93 | for CFG in $CFG_LIST ; do | ||
| 94 | grep -q -w $CFG $TMP_FILE | ||
| 95 | if [ $? -eq 0 ] ; then | ||
| 96 | PREV_VAL=$(grep -w $CFG $TMP_FILE) | ||
| 97 | NEW_VAL=$(grep -w $CFG $MERGE_FILE) | ||
| 98 | if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then | ||
| 99 | echo Value of $CFG is redefined by fragment $MERGE_FILE: | ||
| 100 | echo Previous value: $PREV_VAL | ||
| 101 | echo New value: $NEW_VAL | ||
| 102 | echo | ||
| 103 | fi | ||
| 104 | sed -i "/$CFG[ =]/d" $TMP_FILE | ||
| 105 | fi | ||
| 106 | done | ||
| 107 | cat $MERGE_FILE >> $TMP_FILE | ||
| 108 | done | ||
| 109 | |||
| 110 | if [ "$MAKE_FLAG" = "false" ]; then | ||
| 111 | cp $TMP_FILE $O/.config | ||
| 112 | echo "#" | ||
| 113 | echo "# merged configuration written to $O/.config (needs make)" | ||
| 114 | echo "#" | ||
| 115 | if [ -z "$DEBUG" ]; then | ||
| 116 | clean_up | ||
| 117 | fi | ||
| 118 | exit | ||
| 119 | fi | ||
| 120 | |||
| 121 | # Use the merged file as the starting point for: | ||
| 122 | # alldefconfig: Fills in any missing symbols with Kconfig default | ||
| 123 | # allnoconfig: Fills in any missing symbols with # CONFIG_* is not set | ||
| 124 | make KCONFIG_ALLCONFIG=$TMP_FILE O=$O $ALLTARGET | ||
| 125 | |||
| 126 | |||
| 127 | # Check all specified config values took (might have missed-dependency issues) | ||
| 128 | for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do | ||
| 129 | |||
| 130 | REQUESTED_VAL=$(sed -n "$SED_CONFIG_EXP" $TMP_FILE | grep -w -e "$CFG") | ||
| 131 | ACTUAL_VAL=$(sed -n "$SED_CONFIG_EXP" $O/.config | grep -w -e "$CFG") | ||
| 132 | if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then | ||
| 133 | echo "Value requested for $CFG not in final .config" | ||
| 134 | echo "Requested value: $REQUESTED_VAL" | ||
| 135 | echo "Actual value: $ACTUAL_VAL" | ||
| 136 | echo "" | ||
| 137 | fi | ||
| 138 | done | ||
| 139 | |||
| 140 | if [ -z "$DEBUG" ]; then | ||
| 141 | clean_up | ||
| 142 | fi | ||
diff --git a/recipes-kernel/linux/linux-bsc913x-headers.bb b/recipes-kernel/linux/linux-bsc913x-headers.bb new file mode 100644 index 0000000..8078aad --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x-headers.bb | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | DESCRIPTION = "Linux kernel headers for Freescale platforms" | ||
| 2 | SECTION = "devel" | ||
| 3 | LICENSE = "GPLv2" | ||
| 4 | |||
| 5 | PKGSUFFIX = "" | ||
| 6 | PKGSUFFIX_virtclass-nativesdk = "-nativesdk" | ||
| 7 | |||
| 8 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 9 | DEPENDS += "unifdef-native" | ||
| 10 | |||
| 11 | PROVIDES = "linux-libc-headers${PKGSUFFIX} ${PN}" | ||
| 12 | RPROVIDES_${PN}-dev += "linux-libc-headers${PKGSUFFIX}-dev" | ||
| 13 | RPROVIDES_${PN}-dbg += "linux-libc-headers${PKGSUFFIX}-dbg" | ||
| 14 | RDEPENDS_${PN}-dev = "" | ||
| 15 | RRECOMMENDS_${PN}-dbg = "linux-libc-headers${PKGSUFFIX}-dev (= ${EXTENDPKGV})" | ||
| 16 | |||
| 17 | require recipes-kernel/linux/linux-bsc913x.inc | ||
| 18 | |||
| 19 | set_arch() { | ||
| 20 | case ${TARGET_ARCH} in | ||
| 21 | arm*) ARCH=arm ;; | ||
| 22 | i*86*) ARCH=i386 ;; | ||
| 23 | ia64*) ARCH=ia64 ;; | ||
| 24 | mips*) ARCH=mips ;; | ||
| 25 | powerpc*) ARCH=powerpc ;; | ||
| 26 | x86_64*) ARCH=x86_64 ;; | ||
| 27 | esac | ||
| 28 | } | ||
| 29 | |||
| 30 | do_configure () { | ||
| 31 | set_arch | ||
| 32 | oe_runmake allnoconfig ARCH=$ARCH | ||
| 33 | } | ||
| 34 | |||
| 35 | do_compile () { | ||
| 36 | : | ||
| 37 | } | ||
| 38 | |||
| 39 | do_install() { | ||
| 40 | set_arch | ||
| 41 | cd ${S} | ||
| 42 | oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix} ARCH=${ARCH} | ||
| 43 | |||
| 44 | # The ..install.cmd conflicts between various configure runs | ||
| 45 | find ${D}${includedir} -name ..install.cmd | xargs rm -f | ||
| 46 | } | ||
| 47 | |||
| 48 | BBCLASSEXTEND = "nativesdk" | ||
| 49 | |||
| 50 | # The following tasks are not required when we just want | ||
| 51 | # headers. So we override and stub them out. | ||
| 52 | do_kernel_configme() { | ||
| 53 | } | ||
| 54 | |||
| 55 | do_compile () { | ||
| 56 | } | ||
| 57 | |||
| 58 | do_validate_branches () { | ||
| 59 | } | ||
| 60 | |||
| 61 | do_kernel_configcheck () { | ||
| 62 | } | ||
diff --git a/recipes-kernel/linux/linux-bsc913x.bb b/recipes-kernel/linux/linux-bsc913x.bb new file mode 100644 index 0000000..3a53b8b --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x.bb | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | inherit kernel | ||
| 2 | require recipes-kernel/linux/linux-dtb.inc | ||
| 3 | |||
| 4 | DESCRIPTION = "Linux kernel headers for Freescale platforms" | ||
| 5 | SECTION = "kernel" | ||
| 6 | LICENSE = "GPLv2" | ||
| 7 | |||
| 8 | # For bsc913x kernel, the defconfig is included locally | ||
| 9 | KERNEL_DEFCONFIG="${WORKDIR}/defconfig" | ||
| 10 | |||
| 11 | KERNEL_FEATURES="cfg/localversion \ | ||
| 12 | cfg/with_modules \ | ||
| 13 | cfg/embedded \ | ||
| 14 | cfg/root_nfs \ | ||
| 15 | cfg/devtmpfs \ | ||
| 16 | cfg/bootlogd \ | ||
| 17 | cfg/mtd_tests \ | ||
| 18 | " | ||
| 19 | |||
| 20 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/debug" | ||
| 21 | STAGING_KERNEL_FEATURES_append = " cfg/kprobes cfg/oprofile cfg/i2c" | ||
| 22 | |||
| 23 | require recipes-kernel/linux/linux-bsc913x.inc | ||
| 24 | require recipes-kernel/linux/staging-kernel.inc | ||
| 25 | require recipes-kernel/linux/pramfs-2.6.33.inc | ||
| 26 | |||
| 27 | # For linx-mod built | ||
| 28 | kernel_do_install_append() { | ||
| 29 | cp -fR ${S}/include/generated/* ${D}/usr/src/kernel/include/generated | ||
| 30 | } | ||
diff --git a/recipes-kernel/linux/linux-bsc913x.inc b/recipes-kernel/linux/linux-bsc913x.inc new file mode 100644 index 0000000..468efed --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x.inc | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
| 2 | |||
| 3 | FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-bsc913x/${MACHINE}" | ||
| 4 | |||
| 5 | SRC_URI = "file://linux-${MACHINE}-${PV}.tar.bz2 \ | ||
| 6 | file://defconfig \ | ||
| 7 | " | ||
| 8 | SRC_URI_append = " \ | ||
| 9 | file://0001-add-options-to-KBUILD_CFLAGS.patch \ | ||
| 10 | file://0002-take-back-DECLARE_MUTEX-for-linx.patch \ | ||
| 11 | file://0003-fix-nonexistant-type-u8-issue.patch \ | ||
| 12 | file://0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch \ | ||
| 13 | file://0007-perf-makefile.patch \ | ||
| 14 | file://0008-solve-bsc9131-MExtUtils-error.patch \ | ||
| 15 | " | ||
| 16 | |||
| 17 | PV = "2.6.33" | ||
| 18 | PR = "r0" | ||
| 19 | |||
| 20 | S = "${WORKDIR}/linux-${PV}" | ||
| 21 | |||
| 22 | COMPATIBLE_MACHINE = "(bsc9131rdb)" | ||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0001-add-options-to-KBUILD_CFLAGS.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0001-add-options-to-KBUILD_CFLAGS.patch new file mode 100644 index 0000000..b74d512 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0001-add-options-to-KBUILD_CFLAGS.patch | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 2 | Date: Tue, 10 Jul 2012 11:44:18 +0800 | ||
| 3 | Subject: [PATCH] add options to KBUILD_CFLAGS | ||
| 4 | |||
| 5 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 6 | --- | ||
| 7 | Makefile | 2 ++ | ||
| 8 | 1 file changed, 2 insertions(+) | ||
| 9 | |||
| 10 | diff --git a/Makefile b/Makefile | ||
| 11 | index e19c848..b07ce1e 100644 | ||
| 12 | --- a/Makefile | ||
| 13 | +++ b/Makefile | ||
| 14 | @@ -526,6 +526,8 @@ endif # $(dot-config) | ||
| 15 | # Defaults vmlinux but it is usually overridden in the arch makefile | ||
| 16 | all: vmlinux | ||
| 17 | |||
| 18 | +KBUILD_CFLAGS += -Wno-unused-but-set-variable -Wno-error=array-bounds | ||
| 19 | + | ||
| 20 | ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE | ||
| 21 | KBUILD_CFLAGS += -Os | ||
| 22 | else | ||
| 23 | -- | ||
| 24 | 1.7.9.5 | ||
| 25 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0002-take-back-DECLARE_MUTEX-for-linx.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0002-take-back-DECLARE_MUTEX-for-linx.patch new file mode 100644 index 0000000..a648a81 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0002-take-back-DECLARE_MUTEX-for-linx.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From: Jerry Pei <jeei@sestofb01.enea.se> | ||
| 2 | Date: Thu, 22 Dec 2011 03:55:03 +0100 | ||
| 3 | Subject: [PATCH] take back DECLARE_MUTEX for linx | ||
| 4 | |||
| 5 | Signed-off-by: Jerry Pei <jeei@sestofb01.enea.se> | ||
| 6 | --- | ||
| 7 | include/linux/semaphore.h | 3 +++ | ||
| 8 | 1 files changed, 3 insertions(+), 0 deletions(-) | ||
| 9 | |||
| 10 | diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h | ||
| 11 | index 66d2591..8b75bb6 100644 | ||
| 12 | --- a/include/linux/semaphore.h | ||
| 13 | +++ b/include/linux/semaphore.h | ||
| 14 | @@ -29,6 +29,9 @@ struct semaphore { | ||
| 15 | #define DEFINE_SEMAPHORE(name, val) \ | ||
| 16 | struct semaphore name = __SEMAPHORE_INITIALIZER(name, val) | ||
| 17 | |||
| 18 | +#define DECLARE_MUTEX(name) \ | ||
| 19 | + struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1) | ||
| 20 | + | ||
| 21 | static inline void sema_init(struct semaphore *sem, int val) | ||
| 22 | { | ||
| 23 | static struct lock_class_key __key; | ||
| 24 | -- | ||
| 25 | 1.7.5.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0003-fix-nonexistant-type-u8-issue.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0003-fix-nonexistant-type-u8-issue.patch new file mode 100644 index 0000000..b091290 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0003-fix-nonexistant-type-u8-issue.patch | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | From: jerry pei <jerry.pei@enea.com> | ||
| 2 | Date: Mon, 30 Jul 2012 05:06:27 +0200 | ||
| 3 | Subject: [PATCH] change u8 to __u8 in scsi.h | ||
| 4 | |||
| 5 | Signed-off-by: jerry pei <jerry.pei@enea.com> | ||
| 6 | --- | ||
| 7 | include/scsi/scsi.h | 8 ++++---- | ||
| 8 | 1 files changed, 4 insertions(+), 4 deletions(-) | ||
| 9 | |||
| 10 | diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h | ||
| 11 | index 8b4deca..ec3053e 100644 | ||
| 12 | --- a/include/scsi/scsi.h | ||
| 13 | +++ b/include/scsi/scsi.h | ||
| 14 | @@ -149,10 +149,10 @@ struct scsi_cmnd; | ||
| 15 | |||
| 16 | /* defined in T10 SCSI Primary Commands-2 (SPC2) */ | ||
| 17 | struct scsi_varlen_cdb_hdr { | ||
| 18 | - u8 opcode; /* opcode always == VARIABLE_LENGTH_CMD */ | ||
| 19 | - u8 control; | ||
| 20 | - u8 misc[5]; | ||
| 21 | - u8 additional_cdb_length; /* total cdb length - 8 */ | ||
| 22 | + __u8 opcode; /* opcode always == VARIABLE_LENGTH_CMD */ | ||
| 23 | + __u8 control; | ||
| 24 | + __u8 misc[5]; | ||
| 25 | + __u8 additional_cdb_length; /* total cdb length - 8 */ | ||
| 26 | __be16 service_action; | ||
| 27 | /* service specific data follows */ | ||
| 28 | }; | ||
| 29 | -- | ||
| 30 | 1.7.5.4 | ||
| 31 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch new file mode 100644 index 0000000..fa5d061 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From f94d0836740b00fb99861651ce261df94244a1d7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Alex He <Alex.He@enea.com> | ||
| 3 | Date: Wed, 22 Aug 2012 11:40:11 +0200 | ||
| 4 | Subject: [PATCH] fix wrong WDTP_MASK in booke_wdt.c in | ||
| 5 | linux-bsc9131qds-2.6.33 | ||
| 6 | |||
| 7 | --- | ||
| 8 | drivers/watchdog/booke_wdt.c | 2 +- | ||
| 9 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c | ||
| 12 | index a01e298..77defbe 100644 | ||
| 13 | --- a/drivers/watchdog/booke_wdt.c | ||
| 14 | +++ b/drivers/watchdog/booke_wdt.c | ||
| 15 | @@ -44,7 +44,7 @@ u32 booke_wdt_period = WDT_PERIOD_DEFAULT; | ||
| 16 | |||
| 17 | #ifdef CONFIG_FSL_BOOKE | ||
| 18 | #define WDTP(x) ((((x)&0x3)<<30)|(((x)&0x3c)<<15)) | ||
| 19 | -#define WDTP_MASK (WDTP(0)) | ||
| 20 | +#define WDTP_MASK (WDTP(0x3f)) | ||
| 21 | #else | ||
| 22 | #define WDTP(x) (TCR_WP(x)) | ||
| 23 | #define WDTP_MASK (TCR_WP_MASK) | ||
| 24 | -- | ||
| 25 | 1.7.5.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0007-perf-makefile.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0007-perf-makefile.patch new file mode 100644 index 0000000..911ffd9 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0007-perf-makefile.patch | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | --- a/tools/perf/Makefile 2012-08-27 09:40:05.887241976 +0200 | ||
| 2 | +++ b/tools/perf/Makefile 2012-08-27 09:40:16.742768991 +0200 | ||
| 3 | @@ -198,7 +198,7 @@ | ||
| 4 | CFLAGS_OPTIMIZE = -O6 | ||
| 5 | endif | ||
| 6 | |||
| 7 | -CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | ||
| 8 | +CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | ||
| 9 | EXTLIBS = -lpthread -lrt -lelf -lm | ||
| 10 | ALL_CFLAGS = $(CFLAGS) | ||
| 11 | ALL_LDFLAGS = $(LDFLAGS) | ||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0008-solve-bsc9131-MExtUtils-error.patch b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0008-solve-bsc9131-MExtUtils-error.patch new file mode 100644 index 0000000..fd2ae86 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/0008-solve-bsc9131-MExtUtils-error.patch | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | From d4dc0a79f4e6db11b3c3eabb079f4a97119717d9 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: jack zhang <jack.zhang@enea.com> | ||
| 3 | Date: Tue, 27 Nov 2012 02:53:06 +0100 | ||
| 4 | Subject: [PATCH] LXCRF-1247 BSC9131 failed to build images after upgrading | ||
| 5 | yocto 1.3 | ||
| 6 | |||
| 7 | Signed-off-by: jack zhang <jack.zhang@enea.com> | ||
| 8 | |||
| 9 | MExtUtils::Embed generate wrong LDFLAGS for libperl | ||
| 10 | --- | ||
| 11 | tools/perf/Makefile | 4 ++-- | ||
| 12 | 1 files changed, 2 insertions(+), 2 deletions(-) | ||
| 13 | |||
| 14 | diff --git a/tools/perf/Makefile b/tools/perf/Makefile | ||
| 15 | index 560e515..a94a4f8 100644 | ||
| 16 | --- a/tools/perf/Makefile | ||
| 17 | +++ b/tools/perf/Makefile | ||
| 18 | @@ -514,8 +514,8 @@ else | ||
| 19 | endif | ||
| 20 | |||
| 21 | ifndef NO_LIBPERL | ||
| 22 | -PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null` | ||
| 23 | -PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` | ||
| 24 | +#PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null` | ||
| 25 | +#PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` | ||
| 26 | endif | ||
| 27 | |||
| 28 | ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o $(BITBUCKET) $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y) | ||
| 29 | -- | ||
| 30 | 1.7.5.4 | ||
| 31 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/defconfig b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/defconfig new file mode 100644 index 0000000..9f91c73 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/defconfig | |||
| @@ -0,0 +1,1958 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.33.9-rt31 | ||
| 4 | # Wed Mar 7 11:18:39 2012 | ||
| 5 | # | ||
| 6 | # CONFIG_PPC64 is not set | ||
| 7 | |||
| 8 | # | ||
| 9 | # Processor support | ||
| 10 | # | ||
| 11 | # CONFIG_PPC_BOOK3S_32 is not set | ||
| 12 | CONFIG_PPC_85xx=y | ||
| 13 | # CONFIG_PPC_8xx is not set | ||
| 14 | # CONFIG_40x is not set | ||
| 15 | # CONFIG_44x is not set | ||
| 16 | # CONFIG_E200 is not set | ||
| 17 | CONFIG_E500=y | ||
| 18 | # CONFIG_PPC_E500MC is not set | ||
| 19 | CONFIG_FSL_EMB_PERFMON=y | ||
| 20 | CONFIG_BOOKE=y | ||
| 21 | CONFIG_FSL_BOOKE=y | ||
| 22 | CONFIG_PPC_FSL_BOOK3E=y | ||
| 23 | CONFIG_PTE_64BIT=y | ||
| 24 | # CONFIG_PHYS_64BIT is not set | ||
| 25 | CONFIG_SPE=y | ||
| 26 | CONFIG_PPC_MMU_NOHASH=y | ||
| 27 | CONFIG_PPC_MMU_NOHASH_32=y | ||
| 28 | CONFIG_PPC_BOOK3E_MMU=y | ||
| 29 | # CONFIG_PPC_MM_SLICES is not set | ||
| 30 | # CONFIG_SMP is not set | ||
| 31 | CONFIG_PPC32=y | ||
| 32 | CONFIG_WORD_SIZE=32 | ||
| 33 | # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set | ||
| 34 | CONFIG_MMU=y | ||
| 35 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 36 | CONFIG_GENERIC_TIME=y | ||
| 37 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 38 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 39 | CONFIG_GENERIC_HARDIRQS=y | ||
| 40 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 41 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 42 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 43 | CONFIG_IRQ_PER_CPU=y | ||
| 44 | CONFIG_NR_IRQS=512 | ||
| 45 | CONFIG_STACKTRACE_SUPPORT=y | ||
| 46 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 47 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 48 | CONFIG_LOCKDEP_SUPPORT=y | ||
| 49 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 50 | CONFIG_GENERIC_HWEIGHT=y | ||
| 51 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 52 | CONFIG_GENERIC_GPIO=y | ||
| 53 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 54 | CONFIG_PPC=y | ||
| 55 | CONFIG_EARLY_PRINTK=y | ||
| 56 | CONFIG_GENERIC_NVRAM=y | ||
| 57 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 58 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 59 | CONFIG_PPC_OF=y | ||
| 60 | CONFIG_OF=y | ||
| 61 | CONFIG_PPC_UDBG_16550=y | ||
| 62 | # CONFIG_GENERIC_TBSYNC is not set | ||
| 63 | CONFIG_AUDIT_ARCH=y | ||
| 64 | CONFIG_GENERIC_BUG=y | ||
| 65 | CONFIG_DTC=y | ||
| 66 | CONFIG_DEFAULT_UIMAGE=y | ||
| 67 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 68 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
| 69 | # CONFIG_PPC_DCR_NATIVE is not set | ||
| 70 | # CONFIG_PPC_DCR_MMIO is not set | ||
| 71 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 72 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 73 | CONFIG_CONSTRUCTORS=y | ||
| 74 | |||
| 75 | # | ||
| 76 | # General setup | ||
| 77 | # | ||
| 78 | CONFIG_EXPERIMENTAL=y | ||
| 79 | CONFIG_BROKEN_ON_SMP=y | ||
| 80 | CONFIG_LOCK_KERNEL=y | ||
| 81 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 82 | CONFIG_LOCALVERSION="" | ||
| 83 | # CONFIG_LOCALVERSION_AUTO is not set | ||
| 84 | CONFIG_SWAP=y | ||
| 85 | CONFIG_SYSVIPC=y | ||
| 86 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 87 | CONFIG_POSIX_MQUEUE=y | ||
| 88 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 89 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 90 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 91 | # CONFIG_TASKSTATS is not set | ||
| 92 | CONFIG_AUDIT=y | ||
| 93 | # CONFIG_AUDITSYSCALL is not set | ||
| 94 | |||
| 95 | # | ||
| 96 | # RCU Subsystem | ||
| 97 | # | ||
| 98 | # CONFIG_TREE_RCU is not set | ||
| 99 | CONFIG_TREE_PREEMPT_RCU=y | ||
| 100 | # CONFIG_TINY_RCU is not set | ||
| 101 | # CONFIG_RCU_TRACE is not set | ||
| 102 | CONFIG_RCU_FANOUT=32 | ||
| 103 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
| 104 | # CONFIG_TREE_RCU_TRACE is not set | ||
| 105 | CONFIG_IKCONFIG=y | ||
| 106 | CONFIG_IKCONFIG_PROC=y | ||
| 107 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 108 | # CONFIG_GROUP_SCHED is not set | ||
| 109 | # CONFIG_CGROUPS is not set | ||
| 110 | CONFIG_SYSFS_DEPRECATED=y | ||
| 111 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 112 | # CONFIG_RELAY is not set | ||
| 113 | # CONFIG_NAMESPACES is not set | ||
| 114 | CONFIG_BLK_DEV_INITRD=y | ||
| 115 | CONFIG_INITRAMFS_SOURCE="" | ||
| 116 | CONFIG_RD_GZIP=y | ||
| 117 | # CONFIG_RD_BZIP2 is not set | ||
| 118 | # CONFIG_RD_LZMA is not set | ||
| 119 | # CONFIG_RD_LZO is not set | ||
| 120 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 121 | CONFIG_SYSCTL=y | ||
| 122 | CONFIG_ANON_INODES=y | ||
| 123 | CONFIG_EMBEDDED=y | ||
| 124 | CONFIG_SYSCTL_SYSCALL=y | ||
| 125 | CONFIG_KALLSYMS=y | ||
| 126 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 127 | CONFIG_HOTPLUG=y | ||
| 128 | CONFIG_PRINTK=y | ||
| 129 | CONFIG_BUG=y | ||
| 130 | CONFIG_ELF_CORE=y | ||
| 131 | CONFIG_BASE_FULL=y | ||
| 132 | CONFIG_FUTEX=y | ||
| 133 | CONFIG_EPOLL=y | ||
| 134 | CONFIG_SIGNALFD=y | ||
| 135 | CONFIG_TIMERFD=y | ||
| 136 | CONFIG_EVENTFD=y | ||
| 137 | CONFIG_SHMEM=y | ||
| 138 | CONFIG_AIO=y | ||
| 139 | CONFIG_HAVE_PERF_EVENTS=y | ||
| 140 | |||
| 141 | # | ||
| 142 | # Kernel Performance Events And Counters | ||
| 143 | # | ||
| 144 | # CONFIG_PERF_EVENTS is not set | ||
| 145 | # CONFIG_PERF_COUNTERS is not set | ||
| 146 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 147 | CONFIG_PCI_QUIRKS=y | ||
| 148 | CONFIG_COMPAT_BRK=y | ||
| 149 | CONFIG_SLAB=y | ||
| 150 | # CONFIG_SLUB is not set | ||
| 151 | # CONFIG_SLOB is not set | ||
| 152 | # CONFIG_PROFILING is not set | ||
| 153 | CONFIG_HAVE_OPROFILE=y | ||
| 154 | # CONFIG_KPROBES is not set | ||
| 155 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 156 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 157 | CONFIG_HAVE_KPROBES=y | ||
| 158 | CONFIG_HAVE_KRETPROBES=y | ||
| 159 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 160 | CONFIG_HAVE_DMA_ATTRS=y | ||
| 161 | CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 162 | |||
| 163 | # | ||
| 164 | # GCOV-based kernel profiling | ||
| 165 | # | ||
| 166 | CONFIG_SLOW_WORK=y | ||
| 167 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 168 | CONFIG_SLABINFO=y | ||
| 169 | CONFIG_RT_MUTEXES=y | ||
| 170 | CONFIG_BASE_SMALL=0 | ||
| 171 | CONFIG_MODULES=y | ||
| 172 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
| 173 | CONFIG_MODULE_UNLOAD=y | ||
| 174 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 175 | # CONFIG_MODVERSIONS is not set | ||
| 176 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 177 | CONFIG_BLOCK=y | ||
| 178 | CONFIG_LBDAF=y | ||
| 179 | # CONFIG_BLK_DEV_BSG is not set | ||
| 180 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 181 | |||
| 182 | # | ||
| 183 | # IO Schedulers | ||
| 184 | # | ||
| 185 | CONFIG_IOSCHED_NOOP=y | ||
| 186 | CONFIG_IOSCHED_DEADLINE=y | ||
| 187 | CONFIG_IOSCHED_CFQ=y | ||
| 188 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 189 | CONFIG_DEFAULT_CFQ=y | ||
| 190 | # CONFIG_DEFAULT_NOOP is not set | ||
| 191 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 192 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 193 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 194 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
| 195 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 196 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 197 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 198 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
| 199 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 200 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
| 201 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 202 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 203 | # CONFIG_INLINE_READ_LOCK is not set | ||
| 204 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 205 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 206 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 207 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
| 208 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 209 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
| 210 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 211 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 212 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
| 213 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 214 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 215 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 216 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
| 217 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 218 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
| 219 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 220 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
| 221 | CONFIG_FREEZER=y | ||
| 222 | CONFIG_PPC_MSI_BITMAP=y | ||
| 223 | |||
| 224 | # | ||
| 225 | # Platform support | ||
| 226 | # | ||
| 227 | # CONFIG_PPC_CELL is not set | ||
| 228 | # CONFIG_PPC_CELL_NATIVE is not set | ||
| 229 | # CONFIG_PQ2ADS is not set | ||
| 230 | CONFIG_FSL_SOC_BOOKE=y | ||
| 231 | # CONFIG_MPC8540_ADS is not set | ||
| 232 | # CONFIG_MPC8560_ADS is not set | ||
| 233 | # CONFIG_FLEXCAN is not set | ||
| 234 | # CONFIG_MPC85xx_CDS is not set | ||
| 235 | # CONFIG_MPC85xx_MDS is not set | ||
| 236 | # CONFIG_MPC8536_DS is not set | ||
| 237 | # CONFIG_MPC85xx_DS is not set | ||
| 238 | CONFIG_MPC85xx_RDB=y | ||
| 239 | CONFIG_P1010_RDB=y | ||
| 240 | # CONFIG_P1022_DS is not set | ||
| 241 | CONFIG_BSC9131_QDS=y | ||
| 242 | CONFIG_BSC9132_QDS=y | ||
| 243 | CONFIG_BSC9131_RDB=y | ||
| 244 | # CONFIG_SOCRATES is not set | ||
| 245 | # CONFIG_KSI8560 is not set | ||
| 246 | # CONFIG_XES_MPC85xx is not set | ||
| 247 | # CONFIG_STX_GP3 is not set | ||
| 248 | # CONFIG_TQM8540 is not set | ||
| 249 | # CONFIG_TQM8541 is not set | ||
| 250 | # CONFIG_TQM8548 is not set | ||
| 251 | # CONFIG_TQM8555 is not set | ||
| 252 | # CONFIG_TQM8560 is not set | ||
| 253 | # CONFIG_SBC8548 is not set | ||
| 254 | # CONFIG_SBC8560 is not set | ||
| 255 | # CONFIG_P4080_DS is not set | ||
| 256 | CONFIG_FSL_85XX_CACHE_SRAM=y | ||
| 257 | # CONFIG_IPIC is not set | ||
| 258 | CONFIG_MPIC=y | ||
| 259 | # CONFIG_MPIC_WEIRD is not set | ||
| 260 | CONFIG_PPC_I8259=y | ||
| 261 | # CONFIG_PPC_RTAS is not set | ||
| 262 | # CONFIG_MMIO_NVRAM is not set | ||
| 263 | # CONFIG_PPC_MPC106 is not set | ||
| 264 | # CONFIG_PPC_970_NAP is not set | ||
| 265 | # CONFIG_PPC_INDIRECT_IO is not set | ||
| 266 | # CONFIG_GENERIC_IOMAP is not set | ||
| 267 | # CONFIG_CPU_FREQ is not set | ||
| 268 | # CONFIG_QUICC_ENGINE is not set | ||
| 269 | # CONFIG_CPM2 is not set | ||
| 270 | CONFIG_FSL_ULI1575=y | ||
| 271 | CONFIG_MPC8xxx_GPIO=y | ||
| 272 | # CONFIG_SIMPLE_GPIO is not set | ||
| 273 | |||
| 274 | # | ||
| 275 | # Kernel options | ||
| 276 | # | ||
| 277 | CONFIG_HIGHMEM=y | ||
| 278 | CONFIG_TICK_ONESHOT=y | ||
| 279 | CONFIG_NO_HZ=y | ||
| 280 | CONFIG_HIGH_RES_TIMERS=y | ||
| 281 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 282 | # CONFIG_HZ_100 is not set | ||
| 283 | CONFIG_HZ_250=y | ||
| 284 | # CONFIG_HZ_300 is not set | ||
| 285 | # CONFIG_HZ_1000 is not set | ||
| 286 | CONFIG_HZ=250 | ||
| 287 | CONFIG_SCHED_HRTICK=y | ||
| 288 | # CONFIG_PREEMPT_NONE is not set | ||
| 289 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 290 | # CONFIG_PREEMPT_DESKTOP is not set | ||
| 291 | CONFIG_PREEMPT_RT=y | ||
| 292 | CONFIG_PREEMPT=y | ||
| 293 | CONFIG_PREEMPT_SOFTIRQS=y | ||
| 294 | CONFIG_PREEMPT_HARDIRQS=y | ||
| 295 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 296 | CONFIG_BINFMT_ELF=y | ||
| 297 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 298 | # CONFIG_HAVE_AOUT is not set | ||
| 299 | # CONFIG_BINFMT_MISC is not set | ||
| 300 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | ||
| 301 | CONFIG_MATH_EMULATION=y | ||
| 302 | CONFIG_IOMMU_HELPER=y | ||
| 303 | CONFIG_SWIOTLB=y | ||
| 304 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 305 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 306 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 307 | CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 308 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 309 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 310 | CONFIG_SYS_SUPPORTS_HUGETLBFS=y | ||
| 311 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 312 | CONFIG_FLATMEM_MANUAL=y | ||
| 313 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 314 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 315 | CONFIG_FLATMEM=y | ||
| 316 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 317 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 318 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 319 | CONFIG_MIGRATION=y | ||
| 320 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
| 321 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 322 | CONFIG_BOUNCE=y | ||
| 323 | CONFIG_VIRT_TO_BUS=y | ||
| 324 | # CONFIG_KSM is not set | ||
| 325 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 326 | CONFIG_PPC_4K_PAGES=y | ||
| 327 | # CONFIG_PPC_16K_PAGES is not set | ||
| 328 | # CONFIG_PPC_64K_PAGES is not set | ||
| 329 | # CONFIG_PPC_256K_PAGES is not set | ||
| 330 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 331 | CONFIG_PROC_DEVICETREE=y | ||
| 332 | # CONFIG_CMDLINE_BOOL is not set | ||
| 333 | CONFIG_EXTRA_TARGETS="" | ||
| 334 | CONFIG_PM=y | ||
| 335 | # CONFIG_PM_DEBUG is not set | ||
| 336 | CONFIG_PM_SLEEP=y | ||
| 337 | CONFIG_SUSPEND=y | ||
| 338 | CONFIG_SUSPEND_FREEZER=y | ||
| 339 | # CONFIG_HIBERNATION is not set | ||
| 340 | # CONFIG_PM_RUNTIME is not set | ||
| 341 | CONFIG_SECCOMP=y | ||
| 342 | CONFIG_ISA_DMA_API=y | ||
| 343 | |||
| 344 | # | ||
| 345 | # Bus options | ||
| 346 | # | ||
| 347 | CONFIG_ZONE_DMA=y | ||
| 348 | CONFIG_GENERIC_ISA_DMA=y | ||
| 349 | CONFIG_PPC_INDIRECT_PCI=y | ||
| 350 | CONFIG_FSL_SOC=y | ||
| 351 | CONFIG_FSL_PCI=y | ||
| 352 | CONFIG_FSL_PMC=y | ||
| 353 | CONFIG_FSL_LBC=y | ||
| 354 | CONFIG_FSL_IFC=y | ||
| 355 | CONFIG_FSL_MPIC_MSG_INTS=y | ||
| 356 | CONFIG_PPC_PCI_CHOICE=y | ||
| 357 | CONFIG_PCI=y | ||
| 358 | CONFIG_PCI_DOMAINS=y | ||
| 359 | CONFIG_PCI_SYSCALL=y | ||
| 360 | CONFIG_PCIEPORTBUS=y | ||
| 361 | # CONFIG_PCIEAER is not set | ||
| 362 | # CONFIG_PCIEASPM is not set | ||
| 363 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 364 | CONFIG_PCI_MSI=y | ||
| 365 | CONFIG_PCI_LEGACY=y | ||
| 366 | # CONFIG_PCI_STUB is not set | ||
| 367 | # CONFIG_PCI_IOV is not set | ||
| 368 | # CONFIG_PCCARD is not set | ||
| 369 | # CONFIG_HOTPLUG_PCI is not set | ||
| 370 | # CONFIG_HAS_RAPIDIO is not set | ||
| 371 | |||
| 372 | # | ||
| 373 | # Advanced setup | ||
| 374 | # | ||
| 375 | CONFIG_ADVANCED_OPTIONS=y | ||
| 376 | # CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 377 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 378 | CONFIG_LOWMEM_CAM_NUM_BOOL=y | ||
| 379 | CONFIG_LOWMEM_CAM_NUM=6 | ||
| 380 | # CONFIG_RELOCATABLE is not set | ||
| 381 | # CONFIG_PAGE_OFFSET_BOOL is not set | ||
| 382 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 383 | # CONFIG_KERNEL_START_BOOL is not set | ||
| 384 | CONFIG_KERNEL_START=0xc0000000 | ||
| 385 | # CONFIG_PHYSICAL_START_BOOL is not set | ||
| 386 | CONFIG_PHYSICAL_START=0x00000000 | ||
| 387 | CONFIG_PHYSICAL_ALIGN=0x04000000 | ||
| 388 | # CONFIG_TASK_SIZE_BOOL is not set | ||
| 389 | CONFIG_TASK_SIZE=0xc0000000 | ||
| 390 | CONFIG_NET=y | ||
| 391 | |||
| 392 | # | ||
| 393 | # Networking options | ||
| 394 | # | ||
| 395 | CONFIG_PACKET=y | ||
| 396 | # CONFIG_PACKET_MMAP is not set | ||
| 397 | CONFIG_UNIX=y | ||
| 398 | CONFIG_XFRM=y | ||
| 399 | CONFIG_XFRM_USER=y | ||
| 400 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 401 | # CONFIG_XFRM_MIGRATE is not set | ||
| 402 | # CONFIG_XFRM_STATISTICS is not set | ||
| 403 | CONFIG_XFRM_IPCOMP=y | ||
| 404 | CONFIG_NET_KEY=y | ||
| 405 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 406 | CONFIG_INET=y | ||
| 407 | CONFIG_IP_MULTICAST=y | ||
| 408 | CONFIG_IP_ADVANCED_ROUTER=y | ||
| 409 | CONFIG_ASK_IP_FIB_HASH=y | ||
| 410 | # CONFIG_IP_FIB_TRIE is not set | ||
| 411 | CONFIG_IP_FIB_HASH=y | ||
| 412 | CONFIG_IP_MULTIPLE_TABLES=y | ||
| 413 | CONFIG_IP_ROUTE_MULTIPATH=y | ||
| 414 | CONFIG_IP_ROUTE_VERBOSE=y | ||
| 415 | CONFIG_IP_PNP=y | ||
| 416 | CONFIG_IP_PNP_DHCP=y | ||
| 417 | CONFIG_IP_PNP_BOOTP=y | ||
| 418 | CONFIG_IP_PNP_RARP=y | ||
| 419 | CONFIG_NET_IPIP=y | ||
| 420 | CONFIG_NET_IPGRE=y | ||
| 421 | CONFIG_NET_IPGRE_BROADCAST=y | ||
| 422 | CONFIG_IP_MROUTE=y | ||
| 423 | CONFIG_IP_PIMSM_V1=y | ||
| 424 | CONFIG_IP_PIMSM_V2=y | ||
| 425 | CONFIG_ARPD=y | ||
| 426 | # CONFIG_SYN_COOKIES is not set | ||
| 427 | CONFIG_INET_AH=y | ||
| 428 | CONFIG_INET_ESP=y | ||
| 429 | CONFIG_INET_IPCOMP=y | ||
| 430 | CONFIG_INET_XFRM_TUNNEL=y | ||
| 431 | CONFIG_INET_TUNNEL=y | ||
| 432 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 433 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 434 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 435 | # CONFIG_INET_LRO is not set | ||
| 436 | CONFIG_INET_DIAG=y | ||
| 437 | CONFIG_INET_TCP_DIAG=y | ||
| 438 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 439 | CONFIG_TCP_CONG_CUBIC=y | ||
| 440 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 441 | # CONFIG_TCP_MD5SIG is not set | ||
| 442 | CONFIG_IPV6=y | ||
| 443 | # CONFIG_IPV6_PRIVACY is not set | ||
| 444 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 445 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 446 | # CONFIG_INET6_AH is not set | ||
| 447 | # CONFIG_INET6_ESP is not set | ||
| 448 | # CONFIG_INET6_IPCOMP is not set | ||
| 449 | # CONFIG_IPV6_MIP6 is not set | ||
| 450 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 451 | # CONFIG_INET6_TUNNEL is not set | ||
| 452 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 453 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 454 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 455 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 456 | CONFIG_IPV6_SIT=y | ||
| 457 | # CONFIG_IPV6_SIT_6RD is not set | ||
| 458 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 459 | # CONFIG_IPV6_TUNNEL is not set | ||
| 460 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 461 | # CONFIG_IPV6_MROUTE is not set | ||
| 462 | # CONFIG_NETWORK_SECMARK is not set | ||
| 463 | # CONFIG_NETFILTER is not set | ||
| 464 | # CONFIG_IP_DCCP is not set | ||
| 465 | # CONFIG_IP_SCTP is not set | ||
| 466 | # CONFIG_RDS is not set | ||
| 467 | # CONFIG_TIPC is not set | ||
| 468 | # CONFIG_ATM is not set | ||
| 469 | CONFIG_STP=y | ||
| 470 | CONFIG_BRIDGE=y | ||
| 471 | # CONFIG_NET_DSA is not set | ||
| 472 | CONFIG_VLAN_8021Q=y | ||
| 473 | # CONFIG_VLAN_8021Q_GVRP is not set | ||
| 474 | # CONFIG_DECNET is not set | ||
| 475 | CONFIG_LLC=y | ||
| 476 | # CONFIG_LLC2 is not set | ||
| 477 | # CONFIG_IPX is not set | ||
| 478 | # CONFIG_ATALK is not set | ||
| 479 | # CONFIG_X25 is not set | ||
| 480 | # CONFIG_LAPB is not set | ||
| 481 | # CONFIG_ECONET is not set | ||
| 482 | # CONFIG_WAN_ROUTER is not set | ||
| 483 | # CONFIG_PHONET is not set | ||
| 484 | # CONFIG_IEEE802154 is not set | ||
| 485 | # CONFIG_NET_SCHED is not set | ||
| 486 | # CONFIG_DCB is not set | ||
| 487 | |||
| 488 | # | ||
| 489 | # Network testing | ||
| 490 | # | ||
| 491 | # CONFIG_NET_PKTGEN is not set | ||
| 492 | # CONFIG_HAMRADIO is not set | ||
| 493 | # CONFIG_CAN is not set | ||
| 494 | # CONFIG_IRDA is not set | ||
| 495 | # CONFIG_BT is not set | ||
| 496 | # CONFIG_AF_RXRPC is not set | ||
| 497 | CONFIG_FIB_RULES=y | ||
| 498 | CONFIG_WIRELESS=y | ||
| 499 | # CONFIG_CFG80211 is not set | ||
| 500 | # CONFIG_LIB80211 is not set | ||
| 501 | |||
| 502 | # | ||
| 503 | # CFG80211 needs to be enabled for MAC80211 | ||
| 504 | # | ||
| 505 | |||
| 506 | # | ||
| 507 | # Some wireless drivers require a rate control algorithm | ||
| 508 | # | ||
| 509 | # CONFIG_WIMAX is not set | ||
| 510 | # CONFIG_RFKILL is not set | ||
| 511 | # CONFIG_NET_9P is not set | ||
| 512 | |||
| 513 | # | ||
| 514 | # Device Drivers | ||
| 515 | # | ||
| 516 | |||
| 517 | # | ||
| 518 | # Generic Driver Options | ||
| 519 | # | ||
| 520 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 521 | # CONFIG_DEVTMPFS is not set | ||
| 522 | CONFIG_STANDALONE=y | ||
| 523 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 524 | CONFIG_FW_LOADER=y | ||
| 525 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 526 | CONFIG_EXTRA_FIRMWARE="" | ||
| 527 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 528 | # CONFIG_CONNECTOR is not set | ||
| 529 | CONFIG_MTD=y | ||
| 530 | # CONFIG_MTD_DEBUG is not set | ||
| 531 | # CONFIG_MTD_TESTS is not set | ||
| 532 | # CONFIG_MTD_CONCAT is not set | ||
| 533 | CONFIG_MTD_PARTITIONS=y | ||
| 534 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 535 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 536 | CONFIG_MTD_OF_PARTS=y | ||
| 537 | # CONFIG_MTD_AR7_PARTS is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # User Modules And Translation Layers | ||
| 541 | # | ||
| 542 | CONFIG_MTD_CHAR=y | ||
| 543 | CONFIG_MTD_BLKDEVS=y | ||
| 544 | CONFIG_MTD_BLOCK=y | ||
| 545 | CONFIG_FTL=y | ||
| 546 | # CONFIG_NFTL is not set | ||
| 547 | # CONFIG_INFTL is not set | ||
| 548 | # CONFIG_RFD_FTL is not set | ||
| 549 | # CONFIG_SSFDC is not set | ||
| 550 | # CONFIG_MTD_OOPS is not set | ||
| 551 | |||
| 552 | # | ||
| 553 | # RAM/ROM/Flash chip drivers | ||
| 554 | # | ||
| 555 | CONFIG_MTD_CFI=y | ||
| 556 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 557 | CONFIG_MTD_GEN_PROBE=y | ||
| 558 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 559 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 560 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 561 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 562 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 563 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 564 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 565 | CONFIG_MTD_CFI_I1=y | ||
| 566 | CONFIG_MTD_CFI_I2=y | ||
| 567 | # CONFIG_MTD_CFI_I4 is not set | ||
| 568 | # CONFIG_MTD_CFI_I8 is not set | ||
| 569 | CONFIG_MTD_CFI_INTELEXT=y | ||
| 570 | CONFIG_MTD_CFI_AMDSTD=y | ||
| 571 | # CONFIG_MTD_CFI_STAA is not set | ||
| 572 | CONFIG_MTD_CFI_UTIL=y | ||
| 573 | # CONFIG_MTD_RAM is not set | ||
| 574 | # CONFIG_MTD_ROM is not set | ||
| 575 | # CONFIG_MTD_ABSENT is not set | ||
| 576 | |||
| 577 | # | ||
| 578 | # Mapping drivers for chip access | ||
| 579 | # | ||
| 580 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 581 | # CONFIG_MTD_PHYSMAP is not set | ||
| 582 | CONFIG_MTD_PHYSMAP_OF=y | ||
| 583 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 584 | # CONFIG_MTD_PLATRAM is not set | ||
| 585 | |||
| 586 | # | ||
| 587 | # Self-contained MTD device drivers | ||
| 588 | # | ||
| 589 | # CONFIG_MTD_PMC551 is not set | ||
| 590 | # CONFIG_MTD_DATAFLASH is not set | ||
| 591 | # CONFIG_MTD_M25P80 is not set | ||
| 592 | CONFIG_MTD_FSL_M25P80=y | ||
| 593 | CONFIG_M25PXX_USE_FAST_READ=y | ||
| 594 | # CONFIG_MTD_SST25L is not set | ||
| 595 | # CONFIG_MTD_SLRAM is not set | ||
| 596 | # CONFIG_MTD_PHRAM is not set | ||
| 597 | # CONFIG_MTD_MTDRAM is not set | ||
| 598 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 599 | |||
| 600 | # | ||
| 601 | # Disk-On-Chip Device Drivers | ||
| 602 | # | ||
| 603 | # CONFIG_MTD_DOC2000 is not set | ||
| 604 | # CONFIG_MTD_DOC2001 is not set | ||
| 605 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 606 | CONFIG_MTD_NAND=y | ||
| 607 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 608 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 609 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 610 | CONFIG_MTD_NAND_IDS=y | ||
| 611 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 612 | # CONFIG_MTD_NAND_CAFE is not set | ||
| 613 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 614 | CONFIG_MTD_NAND_PLATFORM=y | ||
| 615 | # CONFIG_MTD_ALAUDA is not set | ||
| 616 | CONFIG_MTD_NAND_FSL_ELBC=y | ||
| 617 | CONFIG_MTD_NAND_FSL_IFC=y | ||
| 618 | CONFIG_MTD_NAND_FSL_UPM=y | ||
| 619 | # CONFIG_MTD_ONENAND is not set | ||
| 620 | |||
| 621 | # | ||
| 622 | # LPDDR flash memory drivers | ||
| 623 | # | ||
| 624 | # CONFIG_MTD_LPDDR is not set | ||
| 625 | |||
| 626 | # | ||
| 627 | # UBI - Unsorted block images | ||
| 628 | # | ||
| 629 | CONFIG_MTD_UBI=y | ||
| 630 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
| 631 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
| 632 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
| 633 | |||
| 634 | # | ||
| 635 | # UBI debugging options | ||
| 636 | # | ||
| 637 | # CONFIG_MTD_UBI_DEBUG is not set | ||
| 638 | CONFIG_OF_DEVICE=y | ||
| 639 | CONFIG_OF_GPIO=y | ||
| 640 | CONFIG_OF_I2C=y | ||
| 641 | CONFIG_OF_SPI=y | ||
| 642 | CONFIG_OF_MDIO=y | ||
| 643 | # CONFIG_PARPORT is not set | ||
| 644 | CONFIG_BLK_DEV=y | ||
| 645 | # CONFIG_BLK_DEV_FD is not set | ||
| 646 | # CONFIG_BLK_CPQ_DA is not set | ||
| 647 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 648 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 649 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 650 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 651 | CONFIG_BLK_DEV_LOOP=y | ||
| 652 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 653 | |||
| 654 | # | ||
| 655 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 656 | # | ||
| 657 | # CONFIG_BLK_DEV_NBD is not set | ||
| 658 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 659 | # CONFIG_BLK_DEV_UB is not set | ||
| 660 | CONFIG_BLK_DEV_RAM=y | ||
| 661 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 662 | CONFIG_BLK_DEV_RAM_SIZE=131072 | ||
| 663 | # CONFIG_BLK_DEV_XIP is not set | ||
| 664 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 665 | # CONFIG_ATA_OVER_ETH is not set | ||
| 666 | # CONFIG_BLK_DEV_HD is not set | ||
| 667 | CONFIG_MISC_DEVICES=y | ||
| 668 | # CONFIG_AD525X_DPOT is not set | ||
| 669 | # CONFIG_PHANTOM is not set | ||
| 670 | # CONFIG_SGI_IOC4 is not set | ||
| 671 | # CONFIG_TIFM_CORE is not set | ||
| 672 | # CONFIG_ICS932S401 is not set | ||
| 673 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
| 674 | # CONFIG_HP_ILO is not set | ||
| 675 | # CONFIG_ISL29003 is not set | ||
| 676 | # CONFIG_DS1682 is not set | ||
| 677 | # CONFIG_TI_DAC7512 is not set | ||
| 678 | # CONFIG_C2PORT is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # EEPROM support | ||
| 682 | # | ||
| 683 | # CONFIG_EEPROM_AT24 is not set | ||
| 684 | # CONFIG_EEPROM_AT25 is not set | ||
| 685 | # CONFIG_EEPROM_LEGACY is not set | ||
| 686 | # CONFIG_EEPROM_MAX6875 is not set | ||
| 687 | # CONFIG_EEPROM_93CX6 is not set | ||
| 688 | # CONFIG_CB710_CORE is not set | ||
| 689 | # CONFIG_IWMC3200TOP is not set | ||
| 690 | # CONFIG_FSL_PME is not set | ||
| 691 | CONFIG_BSC9131_HET_IPC=y | ||
| 692 | CONFIG_BSC9131_HET_MGR=y | ||
| 693 | CONFIG_FSL_HUGEPAGE_SHM=y | ||
| 694 | # CONFIG_FSL_PWM is not set | ||
| 695 | CONFIG_HAVE_IDE=y | ||
| 696 | # CONFIG_IDE is not set | ||
| 697 | |||
| 698 | # | ||
| 699 | # SCSI device support | ||
| 700 | # | ||
| 701 | # CONFIG_RAID_ATTRS is not set | ||
| 702 | CONFIG_SCSI=y | ||
| 703 | CONFIG_SCSI_DMA=y | ||
| 704 | # CONFIG_SCSI_TGT is not set | ||
| 705 | # CONFIG_SCSI_NETLINK is not set | ||
| 706 | CONFIG_SCSI_PROC_FS=y | ||
| 707 | |||
| 708 | # | ||
| 709 | # SCSI support type (disk, tape, CD-ROM) | ||
| 710 | # | ||
| 711 | CONFIG_BLK_DEV_SD=y | ||
| 712 | CONFIG_CHR_DEV_ST=y | ||
| 713 | # CONFIG_CHR_DEV_OSST is not set | ||
| 714 | CONFIG_BLK_DEV_SR=y | ||
| 715 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
| 716 | CONFIG_CHR_DEV_SG=y | ||
| 717 | # CONFIG_CHR_DEV_SCH is not set | ||
| 718 | CONFIG_SCSI_MULTI_LUN=y | ||
| 719 | # CONFIG_SCSI_CONSTANTS is not set | ||
| 720 | CONFIG_SCSI_LOGGING=y | ||
| 721 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 722 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 723 | |||
| 724 | # | ||
| 725 | # SCSI Transports | ||
| 726 | # | ||
| 727 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 728 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 729 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 730 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 731 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
| 732 | CONFIG_SCSI_LOWLEVEL=y | ||
| 733 | # CONFIG_ISCSI_TCP is not set | ||
| 734 | # CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 735 | # CONFIG_BE2ISCSI is not set | ||
| 736 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 737 | # CONFIG_SCSI_HPSA is not set | ||
| 738 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 739 | # CONFIG_SCSI_3W_SAS is not set | ||
| 740 | # CONFIG_SCSI_ACARD is not set | ||
| 741 | # CONFIG_SCSI_AACRAID is not set | ||
| 742 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 743 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 744 | # CONFIG_SCSI_AIC79XX is not set | ||
| 745 | # CONFIG_SCSI_AIC94XX is not set | ||
| 746 | # CONFIG_SCSI_MVSAS is not set | ||
| 747 | # CONFIG_SCSI_DPT_I2O is not set | ||
| 748 | # CONFIG_SCSI_ADVANSYS is not set | ||
| 749 | # CONFIG_SCSI_ARCMSR is not set | ||
| 750 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 751 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 752 | # CONFIG_MEGARAID_SAS is not set | ||
| 753 | # CONFIG_SCSI_MPT2SAS is not set | ||
| 754 | # CONFIG_SCSI_HPTIOP is not set | ||
| 755 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 756 | # CONFIG_LIBFC is not set | ||
| 757 | # CONFIG_LIBFCOE is not set | ||
| 758 | # CONFIG_FCOE is not set | ||
| 759 | # CONFIG_SCSI_DMX3191D is not set | ||
| 760 | # CONFIG_SCSI_EATA is not set | ||
| 761 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 762 | # CONFIG_SCSI_GDTH is not set | ||
| 763 | # CONFIG_SCSI_IPS is not set | ||
| 764 | # CONFIG_SCSI_INITIO is not set | ||
| 765 | # CONFIG_SCSI_INIA100 is not set | ||
| 766 | # CONFIG_SCSI_STEX is not set | ||
| 767 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 768 | # CONFIG_SCSI_IPR is not set | ||
| 769 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 770 | # CONFIG_SCSI_QLA_FC is not set | ||
| 771 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 772 | # CONFIG_SCSI_LPFC is not set | ||
| 773 | # CONFIG_SCSI_DC395x is not set | ||
| 774 | # CONFIG_SCSI_DC390T is not set | ||
| 775 | # CONFIG_SCSI_NSP32 is not set | ||
| 776 | # CONFIG_SCSI_DEBUG is not set | ||
| 777 | # CONFIG_SCSI_PMCRAID is not set | ||
| 778 | # CONFIG_SCSI_PM8001 is not set | ||
| 779 | # CONFIG_SCSI_SRP is not set | ||
| 780 | # CONFIG_SCSI_BFA_FC is not set | ||
| 781 | # CONFIG_SCSI_DH is not set | ||
| 782 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 783 | CONFIG_ATA=y | ||
| 784 | # CONFIG_ATA_NONSTANDARD is not set | ||
| 785 | CONFIG_ATA_VERBOSE_ERROR=y | ||
| 786 | CONFIG_SATA_PMP=y | ||
| 787 | CONFIG_SATA_AHCI=y | ||
| 788 | CONFIG_SATA_SIL24=y | ||
| 789 | CONFIG_SATA_FSL=y | ||
| 790 | CONFIG_ATA_SFF=y | ||
| 791 | # CONFIG_SATA_SVW is not set | ||
| 792 | # CONFIG_ATA_PIIX is not set | ||
| 793 | # CONFIG_SATA_MV is not set | ||
| 794 | # CONFIG_SATA_NV is not set | ||
| 795 | # CONFIG_PDC_ADMA is not set | ||
| 796 | # CONFIG_SATA_QSTOR is not set | ||
| 797 | # CONFIG_SATA_PROMISE is not set | ||
| 798 | # CONFIG_SATA_SX4 is not set | ||
| 799 | # CONFIG_SATA_SIL is not set | ||
| 800 | # CONFIG_SATA_SIS is not set | ||
| 801 | # CONFIG_SATA_ULI is not set | ||
| 802 | # CONFIG_SATA_VIA is not set | ||
| 803 | # CONFIG_SATA_VITESSE is not set | ||
| 804 | # CONFIG_SATA_INIC162X is not set | ||
| 805 | # CONFIG_PATA_ALI is not set | ||
| 806 | # CONFIG_PATA_AMD is not set | ||
| 807 | # CONFIG_PATA_ARTOP is not set | ||
| 808 | # CONFIG_PATA_ATP867X is not set | ||
| 809 | # CONFIG_PATA_ATIIXP is not set | ||
| 810 | # CONFIG_PATA_CMD640_PCI is not set | ||
| 811 | # CONFIG_PATA_CMD64X is not set | ||
| 812 | # CONFIG_PATA_CS5520 is not set | ||
| 813 | # CONFIG_PATA_CS5530 is not set | ||
| 814 | # CONFIG_PATA_CYPRESS is not set | ||
| 815 | # CONFIG_PATA_EFAR is not set | ||
| 816 | # CONFIG_ATA_GENERIC is not set | ||
| 817 | # CONFIG_PATA_HPT366 is not set | ||
| 818 | # CONFIG_PATA_HPT37X is not set | ||
| 819 | # CONFIG_PATA_HPT3X2N is not set | ||
| 820 | # CONFIG_PATA_HPT3X3 is not set | ||
| 821 | # CONFIG_PATA_IT821X is not set | ||
| 822 | # CONFIG_PATA_IT8213 is not set | ||
| 823 | # CONFIG_PATA_JMICRON is not set | ||
| 824 | # CONFIG_PATA_TRIFLEX is not set | ||
| 825 | # CONFIG_PATA_MARVELL is not set | ||
| 826 | # CONFIG_PATA_MPIIX is not set | ||
| 827 | # CONFIG_PATA_OLDPIIX is not set | ||
| 828 | # CONFIG_PATA_NETCELL is not set | ||
| 829 | # CONFIG_PATA_NINJA32 is not set | ||
| 830 | # CONFIG_PATA_NS87410 is not set | ||
| 831 | # CONFIG_PATA_NS87415 is not set | ||
| 832 | # CONFIG_PATA_OPTI is not set | ||
| 833 | # CONFIG_PATA_OPTIDMA is not set | ||
| 834 | # CONFIG_PATA_PDC2027X is not set | ||
| 835 | # CONFIG_PATA_PDC_OLD is not set | ||
| 836 | # CONFIG_PATA_RADISYS is not set | ||
| 837 | # CONFIG_PATA_RDC is not set | ||
| 838 | # CONFIG_PATA_RZ1000 is not set | ||
| 839 | # CONFIG_PATA_SC1200 is not set | ||
| 840 | # CONFIG_PATA_SERVERWORKS is not set | ||
| 841 | # CONFIG_PATA_SIL680 is not set | ||
| 842 | # CONFIG_PATA_SIS is not set | ||
| 843 | # CONFIG_PATA_TOSHIBA is not set | ||
| 844 | # CONFIG_PATA_VIA is not set | ||
| 845 | # CONFIG_PATA_WINBOND is not set | ||
| 846 | # CONFIG_PATA_PLATFORM is not set | ||
| 847 | # CONFIG_PATA_SCH is not set | ||
| 848 | CONFIG_MD=y | ||
| 849 | CONFIG_BLK_DEV_MD=y | ||
| 850 | # CONFIG_MD_AUTODETECT is not set | ||
| 851 | # CONFIG_MD_LINEAR is not set | ||
| 852 | # CONFIG_MD_RAID0 is not set | ||
| 853 | # CONFIG_MD_RAID1 is not set | ||
| 854 | # CONFIG_MD_RAID10 is not set | ||
| 855 | CONFIG_MD_RAID456=y | ||
| 856 | CONFIG_MD_RAID6_PQ=y | ||
| 857 | # CONFIG_ASYNC_RAID6_TEST is not set | ||
| 858 | # CONFIG_MD_MULTIPATH is not set | ||
| 859 | # CONFIG_MD_FAULTY is not set | ||
| 860 | # CONFIG_BLK_DEV_DM is not set | ||
| 861 | # CONFIG_FUSION is not set | ||
| 862 | |||
| 863 | # | ||
| 864 | # IEEE 1394 (FireWire) support | ||
| 865 | # | ||
| 866 | |||
| 867 | # | ||
| 868 | # You can enable one or both FireWire driver stacks. | ||
| 869 | # | ||
| 870 | |||
| 871 | # | ||
| 872 | # The newer stack is recommended. | ||
| 873 | # | ||
| 874 | # CONFIG_FIREWIRE is not set | ||
| 875 | # CONFIG_IEEE1394 is not set | ||
| 876 | # CONFIG_I2O is not set | ||
| 877 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
| 878 | CONFIG_NETDEVICES=y | ||
| 879 | # CONFIG_AS_FASTPATH is not set | ||
| 880 | CONFIG_DUMMY=y | ||
| 881 | # CONFIG_BONDING is not set | ||
| 882 | # CONFIG_MACVLAN is not set | ||
| 883 | # CONFIG_EQUALIZER is not set | ||
| 884 | # CONFIG_TUN is not set | ||
| 885 | # CONFIG_VETH is not set | ||
| 886 | |||
| 887 | # | ||
| 888 | # MPC85xx PCI agent mode driver | ||
| 889 | # | ||
| 890 | # CONFIG_CARDNET is not set | ||
| 891 | |||
| 892 | # | ||
| 893 | # MPC85xx board PCI demo driver | ||
| 894 | # | ||
| 895 | # CONFIG_BOARDNET is not set | ||
| 896 | # CONFIG_ARCNET is not set | ||
| 897 | CONFIG_PHYLIB=y | ||
| 898 | |||
| 899 | # | ||
| 900 | # MII PHY device drivers | ||
| 901 | # | ||
| 902 | # CONFIG_MARVELL_PHY is not set | ||
| 903 | # CONFIG_DAVICOM_PHY is not set | ||
| 904 | # CONFIG_QSEMI_PHY is not set | ||
| 905 | # CONFIG_LXT_PHY is not set | ||
| 906 | # CONFIG_CICADA_PHY is not set | ||
| 907 | CONFIG_VITESSE_PHY=y | ||
| 908 | # CONFIG_SMSC_PHY is not set | ||
| 909 | # CONFIG_BROADCOM_PHY is not set | ||
| 910 | # CONFIG_ICPLUS_PHY is not set | ||
| 911 | # CONFIG_REALTEK_PHY is not set | ||
| 912 | # CONFIG_NATIONAL_PHY is not set | ||
| 913 | # CONFIG_STE10XP is not set | ||
| 914 | # CONFIG_LSI_ET1011C_PHY is not set | ||
| 915 | CONFIG_FIXED_PHY=y | ||
| 916 | # CONFIG_MDIO_BITBANG is not set | ||
| 917 | CONFIG_NET_ETHERNET=y | ||
| 918 | CONFIG_MII=y | ||
| 919 | # CONFIG_HAPPYMEAL is not set | ||
| 920 | # CONFIG_SUNGEM is not set | ||
| 921 | # CONFIG_CASSINI is not set | ||
| 922 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 923 | # CONFIG_ENC28J60 is not set | ||
| 924 | # CONFIG_ETHOC is not set | ||
| 925 | # CONFIG_DNET is not set | ||
| 926 | # CONFIG_NET_TULIP is not set | ||
| 927 | # CONFIG_HP100 is not set | ||
| 928 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 929 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 930 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 931 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 932 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 933 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 934 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 935 | # CONFIG_NET_PCI is not set | ||
| 936 | # CONFIG_B44 is not set | ||
| 937 | # CONFIG_KS8842 is not set | ||
| 938 | # CONFIG_KS8851 is not set | ||
| 939 | # CONFIG_KS8851_MLL is not set | ||
| 940 | # CONFIG_ATL2 is not set | ||
| 941 | # CONFIG_XILINX_EMACLITE is not set | ||
| 942 | CONFIG_NETDEV_1000=y | ||
| 943 | # CONFIG_ACENIC is not set | ||
| 944 | # CONFIG_DL2K is not set | ||
| 945 | # CONFIG_E1000 is not set | ||
| 946 | CONFIG_E1000E=y | ||
| 947 | # CONFIG_IP1000 is not set | ||
| 948 | # CONFIG_IGB is not set | ||
| 949 | # CONFIG_IGBVF is not set | ||
| 950 | # CONFIG_NS83820 is not set | ||
| 951 | # CONFIG_HAMACHI is not set | ||
| 952 | # CONFIG_YELLOWFIN is not set | ||
| 953 | # CONFIG_R8169 is not set | ||
| 954 | # CONFIG_SIS190 is not set | ||
| 955 | # CONFIG_SKGE is not set | ||
| 956 | # CONFIG_SKY2 is not set | ||
| 957 | # CONFIG_VIA_VELOCITY is not set | ||
| 958 | # CONFIG_TIGON3 is not set | ||
| 959 | # CONFIG_BNX2 is not set | ||
| 960 | # CONFIG_CNIC is not set | ||
| 961 | CONFIG_FSL_PQ_MDIO=y | ||
| 962 | CONFIG_GIANFAR=y | ||
| 963 | # CONFIG_TCP_FAST_ACK is not set | ||
| 964 | # CONFIG_GFAR_HW_TCP_RECEIVE_OFFLOAD is not set | ||
| 965 | CONFIG_GFAR_SKBUFF_RECYCLING=y | ||
| 966 | # CONFIG_RX_TX_BD_XNGE is not set | ||
| 967 | CONFIG_GIANFAR_TXNAPI=y | ||
| 968 | CONFIG_GIANFAR_L2SRAM=y | ||
| 969 | # CONFIG_GFAR_SW_VLAN is not set | ||
| 970 | # CONFIG_GIANFAR_SG_SUPPORT is not set | ||
| 971 | # CONFIG_NET_GIANFAR_FP is not set | ||
| 972 | # CONFIG_1588_MUX_eTSEC1 is not set | ||
| 973 | # CONFIG_1588_MUX_eTSEC2 is not set | ||
| 974 | # CONFIG_GFAR_SW_PKT_STEERING is not set | ||
| 975 | # CONFIG_MV643XX_ETH is not set | ||
| 976 | # CONFIG_QLA3XXX is not set | ||
| 977 | # CONFIG_ATL1 is not set | ||
| 978 | # CONFIG_ATL1E is not set | ||
| 979 | # CONFIG_ATL1C is not set | ||
| 980 | # CONFIG_JME is not set | ||
| 981 | # CONFIG_NETDEV_10000 is not set | ||
| 982 | # CONFIG_TR is not set | ||
| 983 | CONFIG_WLAN=y | ||
| 984 | # CONFIG_AIRO is not set | ||
| 985 | # CONFIG_ATMEL is not set | ||
| 986 | # CONFIG_PRISM54 is not set | ||
| 987 | # CONFIG_USB_ZD1201 is not set | ||
| 988 | # CONFIG_HOSTAP is not set | ||
| 989 | |||
| 990 | # | ||
| 991 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 992 | # | ||
| 993 | |||
| 994 | # | ||
| 995 | # USB Network Adapters | ||
| 996 | # | ||
| 997 | # CONFIG_USB_CATC is not set | ||
| 998 | # CONFIG_USB_KAWETH is not set | ||
| 999 | # CONFIG_USB_PEGASUS is not set | ||
| 1000 | # CONFIG_USB_RTL8150 is not set | ||
| 1001 | # CONFIG_USB_USBNET is not set | ||
| 1002 | # CONFIG_WAN is not set | ||
| 1003 | # CONFIG_FDDI is not set | ||
| 1004 | # CONFIG_HIPPI is not set | ||
| 1005 | # CONFIG_PPP is not set | ||
| 1006 | # CONFIG_SLIP is not set | ||
| 1007 | # CONFIG_NET_FC is not set | ||
| 1008 | # CONFIG_NETCONSOLE is not set | ||
| 1009 | # CONFIG_NETPOLL is not set | ||
| 1010 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 1011 | # CONFIG_VMXNET3 is not set | ||
| 1012 | # CONFIG_ISDN is not set | ||
| 1013 | # CONFIG_PHONE is not set | ||
| 1014 | |||
| 1015 | # | ||
| 1016 | # Input device support | ||
| 1017 | # | ||
| 1018 | CONFIG_INPUT=y | ||
| 1019 | CONFIG_INPUT_FF_MEMLESS=m | ||
| 1020 | # CONFIG_INPUT_POLLDEV is not set | ||
| 1021 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
| 1022 | |||
| 1023 | # | ||
| 1024 | # Userland interfaces | ||
| 1025 | # | ||
| 1026 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 1027 | # CONFIG_INPUT_JOYDEV is not set | ||
| 1028 | # CONFIG_INPUT_EVDEV is not set | ||
| 1029 | # CONFIG_INPUT_EVBUG is not set | ||
| 1030 | |||
| 1031 | # | ||
| 1032 | # Input Device Drivers | ||
| 1033 | # | ||
| 1034 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 1035 | # CONFIG_INPUT_MOUSE is not set | ||
| 1036 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 1037 | # CONFIG_INPUT_TABLET is not set | ||
| 1038 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 1039 | # CONFIG_INPUT_MISC is not set | ||
| 1040 | |||
| 1041 | # | ||
| 1042 | # Hardware I/O ports | ||
| 1043 | # | ||
| 1044 | CONFIG_SERIO=y | ||
| 1045 | CONFIG_SERIO_I8042=y | ||
| 1046 | CONFIG_SERIO_SERPORT=y | ||
| 1047 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 1048 | CONFIG_SERIO_LIBPS2=y | ||
| 1049 | # CONFIG_SERIO_RAW is not set | ||
| 1050 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 1051 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 1052 | # CONFIG_GAMEPORT is not set | ||
| 1053 | |||
| 1054 | # | ||
| 1055 | # Character devices | ||
| 1056 | # | ||
| 1057 | CONFIG_VT=y | ||
| 1058 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 1059 | CONFIG_VT_CONSOLE=y | ||
| 1060 | CONFIG_HW_CONSOLE=y | ||
| 1061 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 1062 | CONFIG_DEVKMEM=y | ||
| 1063 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 1064 | # CONFIG_NOZOMI is not set | ||
| 1065 | CONFIG_FSL_SIM=y | ||
| 1066 | |||
| 1067 | # | ||
| 1068 | # Serial drivers | ||
| 1069 | # | ||
| 1070 | CONFIG_SERIAL_8250=y | ||
| 1071 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 1072 | CONFIG_SERIAL_8250_PCI=y | ||
| 1073 | CONFIG_SERIAL_8250_NR_UARTS=2 | ||
| 1074 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | ||
| 1075 | CONFIG_SERIAL_8250_EXTENDED=y | ||
| 1076 | CONFIG_SERIAL_8250_MANY_PORTS=y | ||
| 1077 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
| 1078 | CONFIG_SERIAL_8250_DETECT_IRQ=y | ||
| 1079 | CONFIG_SERIAL_8250_RSA=y | ||
| 1080 | |||
| 1081 | # | ||
| 1082 | # Non-8250 serial port support | ||
| 1083 | # | ||
| 1084 | # CONFIG_SERIAL_MAX3100 is not set | ||
| 1085 | # CONFIG_SERIAL_UARTLITE is not set | ||
| 1086 | CONFIG_SERIAL_CORE=y | ||
| 1087 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 1088 | # CONFIG_SERIAL_JSM is not set | ||
| 1089 | # CONFIG_SERIAL_OF_PLATFORM is not set | ||
| 1090 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 1091 | CONFIG_UNIX98_PTYS=y | ||
| 1092 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 1093 | CONFIG_LEGACY_PTYS=y | ||
| 1094 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 1095 | # CONFIG_HVC_UDBG is not set | ||
| 1096 | # CONFIG_IPMI_HANDLER is not set | ||
| 1097 | CONFIG_HW_RANDOM=y | ||
| 1098 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | ||
| 1099 | CONFIG_NVRAM=y | ||
| 1100 | # CONFIG_R3964 is not set | ||
| 1101 | # CONFIG_APPLICOM is not set | ||
| 1102 | # CONFIG_RAW_DRIVER is not set | ||
| 1103 | # CONFIG_TCG_TPM is not set | ||
| 1104 | CONFIG_DEVPORT=y | ||
| 1105 | CONFIG_I2C=y | ||
| 1106 | CONFIG_I2C_BOARDINFO=y | ||
| 1107 | CONFIG_I2C_COMPAT=y | ||
| 1108 | CONFIG_I2C_CHARDEV=y | ||
| 1109 | CONFIG_I2C_HELPER_AUTO=y | ||
| 1110 | |||
| 1111 | # | ||
| 1112 | # I2C Hardware Bus support | ||
| 1113 | # | ||
| 1114 | |||
| 1115 | # | ||
| 1116 | # PC SMBus host controller drivers | ||
| 1117 | # | ||
| 1118 | # CONFIG_I2C_ALI1535 is not set | ||
| 1119 | # CONFIG_I2C_ALI1563 is not set | ||
| 1120 | # CONFIG_I2C_ALI15X3 is not set | ||
| 1121 | # CONFIG_I2C_AMD756 is not set | ||
| 1122 | # CONFIG_I2C_AMD8111 is not set | ||
| 1123 | # CONFIG_I2C_I801 is not set | ||
| 1124 | # CONFIG_I2C_ISCH is not set | ||
| 1125 | # CONFIG_I2C_PIIX4 is not set | ||
| 1126 | # CONFIG_I2C_NFORCE2 is not set | ||
| 1127 | # CONFIG_I2C_SIS5595 is not set | ||
| 1128 | # CONFIG_I2C_SIS630 is not set | ||
| 1129 | # CONFIG_I2C_SIS96X is not set | ||
| 1130 | # CONFIG_I2C_VIA is not set | ||
| 1131 | # CONFIG_I2C_VIAPRO is not set | ||
| 1132 | |||
| 1133 | # | ||
| 1134 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
| 1135 | # | ||
| 1136 | # CONFIG_I2C_GPIO is not set | ||
| 1137 | CONFIG_I2C_MPC=y | ||
| 1138 | # CONFIG_I2C_OCORES is not set | ||
| 1139 | # CONFIG_I2C_SIMTEC is not set | ||
| 1140 | |||
| 1141 | # | ||
| 1142 | # External I2C/SMBus adapter drivers | ||
| 1143 | # | ||
| 1144 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1145 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1146 | # CONFIG_I2C_TINY_USB is not set | ||
| 1147 | |||
| 1148 | # | ||
| 1149 | # Other I2C/SMBus bus drivers | ||
| 1150 | # | ||
| 1151 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
| 1152 | # CONFIG_I2C_STUB is not set | ||
| 1153 | |||
| 1154 | # | ||
| 1155 | # Miscellaneous I2C Chip support | ||
| 1156 | # | ||
| 1157 | # CONFIG_SENSORS_TSL2550 is not set | ||
| 1158 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 1159 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 1160 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 1161 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 1162 | CONFIG_SPI=y | ||
| 1163 | CONFIG_SPI_MASTER=y | ||
| 1164 | |||
| 1165 | # | ||
| 1166 | # SPI Master Controller Drivers | ||
| 1167 | # | ||
| 1168 | CONFIG_SPI_BITBANG=y | ||
| 1169 | # CONFIG_SPI_GPIO is not set | ||
| 1170 | # CONFIG_SPI_MPC8xxx is not set | ||
| 1171 | CONFIG_FSL_ESPI=y | ||
| 1172 | # CONFIG_SPI_XILINX is not set | ||
| 1173 | # CONFIG_SPI_DESIGNWARE is not set | ||
| 1174 | |||
| 1175 | # | ||
| 1176 | # SPI Protocol Masters | ||
| 1177 | # | ||
| 1178 | # CONFIG_SPI_SPIDEV is not set | ||
| 1179 | # CONFIG_SPI_TLE62X0 is not set | ||
| 1180 | |||
| 1181 | # | ||
| 1182 | # PPS support | ||
| 1183 | # | ||
| 1184 | # CONFIG_PPS is not set | ||
| 1185 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 1186 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
| 1187 | CONFIG_GPIOLIB=y | ||
| 1188 | # CONFIG_GPIO_SYSFS is not set | ||
| 1189 | |||
| 1190 | # | ||
| 1191 | # Memory mapped GPIO expanders: | ||
| 1192 | # | ||
| 1193 | # CONFIG_GPIO_XILINX is not set | ||
| 1194 | |||
| 1195 | # | ||
| 1196 | # I2C GPIO expanders: | ||
| 1197 | # | ||
| 1198 | # CONFIG_GPIO_MAX732X is not set | ||
| 1199 | # CONFIG_GPIO_PCA953X is not set | ||
| 1200 | # CONFIG_GPIO_PCF857X is not set | ||
| 1201 | # CONFIG_GPIO_ADP5588 is not set | ||
| 1202 | |||
| 1203 | # | ||
| 1204 | # PCI GPIO expanders: | ||
| 1205 | # | ||
| 1206 | # CONFIG_GPIO_CS5535 is not set | ||
| 1207 | # CONFIG_GPIO_BT8XX is not set | ||
| 1208 | # CONFIG_GPIO_LANGWELL is not set | ||
| 1209 | |||
| 1210 | # | ||
| 1211 | # SPI GPIO expanders: | ||
| 1212 | # | ||
| 1213 | # CONFIG_GPIO_MAX7301 is not set | ||
| 1214 | # CONFIG_GPIO_MCP23S08 is not set | ||
| 1215 | # CONFIG_GPIO_MC33880 is not set | ||
| 1216 | |||
| 1217 | # | ||
| 1218 | # AC97 GPIO expanders: | ||
| 1219 | # | ||
| 1220 | # CONFIG_W1 is not set | ||
| 1221 | # CONFIG_POWER_SUPPLY is not set | ||
| 1222 | # CONFIG_HWMON is not set | ||
| 1223 | # CONFIG_THERMAL is not set | ||
| 1224 | CONFIG_WATCHDOG=y | ||
| 1225 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 1226 | |||
| 1227 | # | ||
| 1228 | # Watchdog Device Drivers | ||
| 1229 | # | ||
| 1230 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 1231 | # CONFIG_ALIM7101_WDT is not set | ||
| 1232 | CONFIG_BOOKE_WDT=y | ||
| 1233 | CONFIG_BOOKE_WDT_TESTER=m | ||
| 1234 | |||
| 1235 | # | ||
| 1236 | # PCI-based Watchdog Cards | ||
| 1237 | # | ||
| 1238 | # CONFIG_PCIPCWATCHDOG is not set | ||
| 1239 | # CONFIG_WDTPCI is not set | ||
| 1240 | |||
| 1241 | # | ||
| 1242 | # USB-based Watchdog Cards | ||
| 1243 | # | ||
| 1244 | # CONFIG_USBPCWATCHDOG is not set | ||
| 1245 | CONFIG_SSB_POSSIBLE=y | ||
| 1246 | |||
| 1247 | # | ||
| 1248 | # Sonics Silicon Backplane | ||
| 1249 | # | ||
| 1250 | # CONFIG_SSB is not set | ||
| 1251 | |||
| 1252 | # | ||
| 1253 | # Multifunction device drivers | ||
| 1254 | # | ||
| 1255 | # CONFIG_MFD_CORE is not set | ||
| 1256 | # CONFIG_MFD_SM501 is not set | ||
| 1257 | # CONFIG_HTC_PASIC3 is not set | ||
| 1258 | # CONFIG_TPS65010 is not set | ||
| 1259 | # CONFIG_TWL4030_CORE is not set | ||
| 1260 | # CONFIG_MFD_TMIO is not set | ||
| 1261 | # CONFIG_PMIC_DA903X is not set | ||
| 1262 | # CONFIG_PMIC_ADP5520 is not set | ||
| 1263 | # CONFIG_MFD_WM8400 is not set | ||
| 1264 | # CONFIG_MFD_WM831X is not set | ||
| 1265 | # CONFIG_MFD_WM8350_I2C is not set | ||
| 1266 | # CONFIG_MFD_PCF50633 is not set | ||
| 1267 | # CONFIG_MFD_MC13783 is not set | ||
| 1268 | # CONFIG_AB3100_CORE is not set | ||
| 1269 | # CONFIG_EZX_PCAP is not set | ||
| 1270 | # CONFIG_MFD_88PM8607 is not set | ||
| 1271 | # CONFIG_AB4500_CORE is not set | ||
| 1272 | # CONFIG_REGULATOR is not set | ||
| 1273 | # CONFIG_MEDIA_SUPPORT is not set | ||
| 1274 | |||
| 1275 | # | ||
| 1276 | # Graphics support | ||
| 1277 | # | ||
| 1278 | # CONFIG_AGP is not set | ||
| 1279 | CONFIG_VGA_ARB=y | ||
| 1280 | # CONFIG_DRM is not set | ||
| 1281 | # CONFIG_VGASTATE is not set | ||
| 1282 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
| 1283 | # CONFIG_FB is not set | ||
| 1284 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 1285 | |||
| 1286 | # | ||
| 1287 | # Display device support | ||
| 1288 | # | ||
| 1289 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 1290 | |||
| 1291 | # | ||
| 1292 | # Console display driver support | ||
| 1293 | # | ||
| 1294 | CONFIG_VGA_CONSOLE=y | ||
| 1295 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
| 1296 | CONFIG_DUMMY_CONSOLE=y | ||
| 1297 | # CONFIG_SOUND is not set | ||
| 1298 | # CONFIG_HID_SUPPORT is not set | ||
| 1299 | CONFIG_USB_SUPPORT=y | ||
| 1300 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 1301 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 1302 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 1303 | CONFIG_USB=y | ||
| 1304 | # CONFIG_USB_DEBUG is not set | ||
| 1305 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
| 1306 | |||
| 1307 | # | ||
| 1308 | # Miscellaneous USB options | ||
| 1309 | # | ||
| 1310 | CONFIG_USB_DEVICEFS=y | ||
| 1311 | # CONFIG_USB_DEVICE_CLASS is not set | ||
| 1312 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 1313 | # CONFIG_USB_SUSPEND is not set | ||
| 1314 | # CONFIG_USB_OTG is not set | ||
| 1315 | # CONFIG_USB_OTG_WHITELIST is not set | ||
| 1316 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 1317 | # CONFIG_USB_MON is not set | ||
| 1318 | # CONFIG_USB_WUSB is not set | ||
| 1319 | # CONFIG_USB_WUSB_CBAF is not set | ||
| 1320 | |||
| 1321 | # | ||
| 1322 | # USB Host Controller Drivers | ||
| 1323 | # | ||
| 1324 | # CONFIG_USB_C67X00_HCD is not set | ||
| 1325 | # CONFIG_USB_XHCI_HCD is not set | ||
| 1326 | CONFIG_USB_EHCI_HCD=y | ||
| 1327 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 1328 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 1329 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
| 1330 | CONFIG_USB_EHCI_FSL=y | ||
| 1331 | CONFIG_USB_EHCI_HCD_PPC_OF=y | ||
| 1332 | # CONFIG_USB_OXU210HP_HCD is not set | ||
| 1333 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 1334 | # CONFIG_USB_ISP1760_HCD is not set | ||
| 1335 | # CONFIG_USB_ISP1362_HCD is not set | ||
| 1336 | CONFIG_USB_OHCI_HCD=y | ||
| 1337 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | ||
| 1338 | CONFIG_USB_OHCI_HCD_PPC_OF_LE=y | ||
| 1339 | CONFIG_USB_OHCI_HCD_PPC_OF=y | ||
| 1340 | CONFIG_USB_OHCI_HCD_PCI=y | ||
| 1341 | CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y | ||
| 1342 | CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | ||
| 1343 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 1344 | # CONFIG_USB_UHCI_HCD is not set | ||
| 1345 | # CONFIG_USB_SL811_HCD is not set | ||
| 1346 | # CONFIG_USB_R8A66597_HCD is not set | ||
| 1347 | # CONFIG_USB_WHCI_HCD is not set | ||
| 1348 | # CONFIG_USB_HWA_HCD is not set | ||
| 1349 | |||
| 1350 | # | ||
| 1351 | # USB Device Class drivers | ||
| 1352 | # | ||
| 1353 | # CONFIG_USB_ACM is not set | ||
| 1354 | # CONFIG_USB_PRINTER is not set | ||
| 1355 | # CONFIG_USB_WDM is not set | ||
| 1356 | # CONFIG_USB_TMC is not set | ||
| 1357 | |||
| 1358 | # | ||
| 1359 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 1360 | # | ||
| 1361 | |||
| 1362 | # | ||
| 1363 | # also be needed; see USB_STORAGE Help for more info | ||
| 1364 | # | ||
| 1365 | CONFIG_USB_STORAGE=y | ||
| 1366 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 1367 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 1368 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 1369 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 1370 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 1371 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 1372 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 1373 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 1374 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 1375 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 1376 | # CONFIG_USB_STORAGE_KARMA is not set | ||
| 1377 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 1378 | # CONFIG_USB_LIBUSUAL is not set | ||
| 1379 | |||
| 1380 | # | ||
| 1381 | # USB Imaging devices | ||
| 1382 | # | ||
| 1383 | # CONFIG_USB_MDC800 is not set | ||
| 1384 | # CONFIG_USB_MICROTEK is not set | ||
| 1385 | |||
| 1386 | # | ||
| 1387 | # USB port drivers | ||
| 1388 | # | ||
| 1389 | # CONFIG_FSL_USB_OTG is not set | ||
| 1390 | # CONFIG_USB_SERIAL is not set | ||
| 1391 | |||
| 1392 | # | ||
| 1393 | # USB Miscellaneous drivers | ||
| 1394 | # | ||
| 1395 | # CONFIG_USB_EMI62 is not set | ||
| 1396 | # CONFIG_USB_EMI26 is not set | ||
| 1397 | # CONFIG_USB_ADUTUX is not set | ||
| 1398 | # CONFIG_USB_SEVSEG is not set | ||
| 1399 | # CONFIG_USB_RIO500 is not set | ||
| 1400 | # CONFIG_USB_LEGOTOWER is not set | ||
| 1401 | # CONFIG_USB_LCD is not set | ||
| 1402 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1403 | # CONFIG_USB_LED is not set | ||
| 1404 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1405 | # CONFIG_USB_CYTHERM is not set | ||
| 1406 | # CONFIG_USB_IDMOUSE is not set | ||
| 1407 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1408 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1409 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1410 | # CONFIG_USB_LD is not set | ||
| 1411 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1412 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1413 | # CONFIG_USB_TEST is not set | ||
| 1414 | # CONFIG_USB_ISIGHTFW is not set | ||
| 1415 | # CONFIG_USB_VST is not set | ||
| 1416 | # CONFIG_USB_GADGET is not set | ||
| 1417 | |||
| 1418 | # | ||
| 1419 | # OTG and related infrastructure | ||
| 1420 | # | ||
| 1421 | # CONFIG_USB_GPIO_VBUS is not set | ||
| 1422 | # CONFIG_NOP_USB_XCEIV is not set | ||
| 1423 | # CONFIG_UWB is not set | ||
| 1424 | CONFIG_MMC=y | ||
| 1425 | # CONFIG_MMC_DEBUG is not set | ||
| 1426 | CONFIG_MMC_UNSAFE_RESUME=y | ||
| 1427 | |||
| 1428 | # | ||
| 1429 | # MMC/SD/SDIO Card Drivers | ||
| 1430 | # | ||
| 1431 | CONFIG_MMC_BLOCK=y | ||
| 1432 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
| 1433 | # CONFIG_SDIO_UART is not set | ||
| 1434 | # CONFIG_MMC_TEST is not set | ||
| 1435 | |||
| 1436 | # | ||
| 1437 | # MMC/SD/SDIO Host Controller Drivers | ||
| 1438 | # | ||
| 1439 | CONFIG_MMC_SDHCI=y | ||
| 1440 | CONFIG_MMC_SDHCI_IO_ACCESSORS=y | ||
| 1441 | CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y | ||
| 1442 | # CONFIG_MMC_SDHCI_PCI is not set | ||
| 1443 | CONFIG_MMC_SDHCI_OF=y | ||
| 1444 | CONFIG_MMC_SDHCI_OF_ESDHC=y | ||
| 1445 | # CONFIG_MMC_SDHCI_OF_HLWD is not set | ||
| 1446 | CONFIG_MMC_SDHCI_PLTFM=y | ||
| 1447 | # CONFIG_MMC_WBSD is not set | ||
| 1448 | # CONFIG_MMC_AT91 is not set | ||
| 1449 | # CONFIG_MMC_ATMELMCI is not set | ||
| 1450 | # CONFIG_MMC_TIFM_SD is not set | ||
| 1451 | # CONFIG_MMC_CB710 is not set | ||
| 1452 | # CONFIG_MMC_VIA_SDMMC is not set | ||
| 1453 | # CONFIG_MEMSTICK is not set | ||
| 1454 | # CONFIG_NEW_LEDS is not set | ||
| 1455 | # CONFIG_ACCESSIBILITY is not set | ||
| 1456 | # CONFIG_INFINIBAND is not set | ||
| 1457 | # CONFIG_EDAC is not set | ||
| 1458 | CONFIG_RTC_LIB=y | ||
| 1459 | CONFIG_RTC_CLASS=y | ||
| 1460 | CONFIG_RTC_HCTOSYS=y | ||
| 1461 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 1462 | # CONFIG_RTC_DEBUG is not set | ||
| 1463 | |||
| 1464 | # | ||
| 1465 | # RTC interfaces | ||
| 1466 | # | ||
| 1467 | CONFIG_RTC_INTF_SYSFS=y | ||
| 1468 | CONFIG_RTC_INTF_PROC=y | ||
| 1469 | CONFIG_RTC_INTF_DEV=y | ||
| 1470 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 1471 | # CONFIG_RTC_DRV_TEST is not set | ||
| 1472 | |||
| 1473 | # | ||
| 1474 | # I2C RTC drivers | ||
| 1475 | # | ||
| 1476 | CONFIG_RTC_DRV_DS1307=y | ||
| 1477 | # CONFIG_RTC_DRV_DS1374 is not set | ||
| 1478 | # CONFIG_RTC_DRV_DS1672 is not set | ||
| 1479 | CONFIG_RTC_DRV_DS3232=y | ||
| 1480 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
| 1481 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
| 1482 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
| 1483 | # CONFIG_RTC_DRV_X1205 is not set | ||
| 1484 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
| 1485 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
| 1486 | # CONFIG_RTC_DRV_M41T80 is not set | ||
| 1487 | # CONFIG_RTC_DRV_BQ32K is not set | ||
| 1488 | # CONFIG_RTC_DRV_S35390A is not set | ||
| 1489 | # CONFIG_RTC_DRV_FM3130 is not set | ||
| 1490 | # CONFIG_RTC_DRV_RX8581 is not set | ||
| 1491 | # CONFIG_RTC_DRV_RX8025 is not set | ||
| 1492 | CONFIG_RTC_DRV_PT7C4338=y | ||
| 1493 | |||
| 1494 | # | ||
| 1495 | # SPI RTC drivers | ||
| 1496 | # | ||
| 1497 | # CONFIG_RTC_DRV_M41T94 is not set | ||
| 1498 | # CONFIG_RTC_DRV_DS1305 is not set | ||
| 1499 | # CONFIG_RTC_DRV_DS1390 is not set | ||
| 1500 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
| 1501 | # CONFIG_RTC_DRV_R9701 is not set | ||
| 1502 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
| 1503 | # CONFIG_RTC_DRV_DS3234 is not set | ||
| 1504 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
| 1505 | |||
| 1506 | # | ||
| 1507 | # Platform RTC drivers | ||
| 1508 | # | ||
| 1509 | CONFIG_RTC_DRV_CMOS=y | ||
| 1510 | # CONFIG_RTC_DRV_DS1286 is not set | ||
| 1511 | # CONFIG_RTC_DRV_DS1511 is not set | ||
| 1512 | # CONFIG_RTC_DRV_DS1553 is not set | ||
| 1513 | # CONFIG_RTC_DRV_DS1742 is not set | ||
| 1514 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
| 1515 | # CONFIG_RTC_DRV_M48T86 is not set | ||
| 1516 | # CONFIG_RTC_DRV_M48T35 is not set | ||
| 1517 | # CONFIG_RTC_DRV_M48T59 is not set | ||
| 1518 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
| 1519 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
| 1520 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
| 1521 | # CONFIG_RTC_DRV_V3020 is not set | ||
| 1522 | |||
| 1523 | # | ||
| 1524 | # on-CPU RTC drivers | ||
| 1525 | # | ||
| 1526 | # CONFIG_RTC_DRV_GENERIC is not set | ||
| 1527 | CONFIG_DMADEVICES=y | ||
| 1528 | |||
| 1529 | # | ||
| 1530 | # DMA Devices | ||
| 1531 | # | ||
| 1532 | CONFIG_FSL_DMA=y | ||
| 1533 | CONFIG_DMA_ENGINE=y | ||
| 1534 | |||
| 1535 | # | ||
| 1536 | # DMA Clients | ||
| 1537 | # | ||
| 1538 | # CONFIG_NET_DMA is not set | ||
| 1539 | CONFIG_ASYNC_TX_DMA=y | ||
| 1540 | # CONFIG_DMATEST is not set | ||
| 1541 | # CONFIG_AUXDISPLAY is not set | ||
| 1542 | CONFIG_UIO=y | ||
| 1543 | # CONFIG_UIO_CIF is not set | ||
| 1544 | # CONFIG_UIO_PDRV is not set | ||
| 1545 | # CONFIG_UIO_PDRV_GENIRQ is not set | ||
| 1546 | # CONFIG_UIO_SMX is not set | ||
| 1547 | # CONFIG_UIO_AEC is not set | ||
| 1548 | # CONFIG_UIO_SERCOS3 is not set | ||
| 1549 | # CONFIG_UIO_PCI_GENERIC is not set | ||
| 1550 | # CONFIG_UIO_NETX is not set | ||
| 1551 | |||
| 1552 | # | ||
| 1553 | # TI VLYNQ | ||
| 1554 | # | ||
| 1555 | # CONFIG_STAGING is not set | ||
| 1556 | # CONFIG_TDM is not set | ||
| 1557 | CONFIG_RFDEVICES=y | ||
| 1558 | CONFIG_RFDEV_CORE=y | ||
| 1559 | CONFIG_FSL_AIC=y | ||
| 1560 | CONFIG_ADI9361=y | ||
| 1561 | # CONFIG_FSL_SWIM_EDC is not set | ||
| 1562 | |||
| 1563 | # | ||
| 1564 | # File systems | ||
| 1565 | # | ||
| 1566 | CONFIG_EXT2_FS=y | ||
| 1567 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 1568 | # CONFIG_EXT2_FS_XIP is not set | ||
| 1569 | CONFIG_EXT3_FS=y | ||
| 1570 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
| 1571 | CONFIG_EXT3_FS_XATTR=y | ||
| 1572 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 1573 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 1574 | # CONFIG_EXT4_FS is not set | ||
| 1575 | CONFIG_JBD=y | ||
| 1576 | CONFIG_FS_MBCACHE=y | ||
| 1577 | # CONFIG_REISERFS_FS is not set | ||
| 1578 | # CONFIG_JFS_FS is not set | ||
| 1579 | CONFIG_FS_POSIX_ACL=y | ||
| 1580 | CONFIG_XFS_FS=y | ||
| 1581 | # CONFIG_XFS_QUOTA is not set | ||
| 1582 | # CONFIG_XFS_POSIX_ACL is not set | ||
| 1583 | # CONFIG_XFS_RT is not set | ||
| 1584 | # CONFIG_XFS_DEBUG is not set | ||
| 1585 | # CONFIG_GFS2_FS is not set | ||
| 1586 | # CONFIG_OCFS2_FS is not set | ||
| 1587 | # CONFIG_BTRFS_FS is not set | ||
| 1588 | # CONFIG_NILFS2_FS is not set | ||
| 1589 | CONFIG_FILE_LOCKING=y | ||
| 1590 | # CONFIG_OPTIMIZE_SD_PERFORMANCE is not set | ||
| 1591 | # CONFIG_DELAY_ASYNC_READAHEAD is not set | ||
| 1592 | # CONFIG_SEND_PAGES is not set | ||
| 1593 | CONFIG_FSNOTIFY=y | ||
| 1594 | CONFIG_DNOTIFY=y | ||
| 1595 | CONFIG_INOTIFY=y | ||
| 1596 | CONFIG_INOTIFY_USER=y | ||
| 1597 | # CONFIG_QUOTA is not set | ||
| 1598 | # CONFIG_AUTOFS_FS is not set | ||
| 1599 | # CONFIG_AUTOFS4_FS is not set | ||
| 1600 | # CONFIG_FUSE_FS is not set | ||
| 1601 | |||
| 1602 | # | ||
| 1603 | # Caches | ||
| 1604 | # | ||
| 1605 | # CONFIG_FSCACHE is not set | ||
| 1606 | |||
| 1607 | # | ||
| 1608 | # CD-ROM/DVD Filesystems | ||
| 1609 | # | ||
| 1610 | CONFIG_ISO9660_FS=m | ||
| 1611 | CONFIG_JOLIET=y | ||
| 1612 | CONFIG_ZISOFS=y | ||
| 1613 | CONFIG_UDF_FS=m | ||
| 1614 | CONFIG_UDF_NLS=y | ||
| 1615 | |||
| 1616 | # | ||
| 1617 | # DOS/FAT/NT Filesystems | ||
| 1618 | # | ||
| 1619 | CONFIG_FAT_FS=y | ||
| 1620 | CONFIG_MSDOS_FS=m | ||
| 1621 | CONFIG_VFAT_FS=y | ||
| 1622 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1623 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1624 | CONFIG_NTFS_FS=y | ||
| 1625 | # CONFIG_NTFS_DEBUG is not set | ||
| 1626 | # CONFIG_NTFS_RW is not set | ||
| 1627 | |||
| 1628 | # | ||
| 1629 | # Pseudo filesystems | ||
| 1630 | # | ||
| 1631 | CONFIG_PROC_FS=y | ||
| 1632 | CONFIG_PROC_KCORE=y | ||
| 1633 | CONFIG_PROC_SYSCTL=y | ||
| 1634 | CONFIG_PROC_PAGE_MONITOR=y | ||
| 1635 | CONFIG_SYSFS=y | ||
| 1636 | CONFIG_TMPFS=y | ||
| 1637 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1638 | CONFIG_HUGETLBFS=y | ||
| 1639 | CONFIG_HUGETLB_PAGE=y | ||
| 1640 | # CONFIG_CONFIGFS_FS is not set | ||
| 1641 | CONFIG_MISC_FILESYSTEMS=y | ||
| 1642 | # CONFIG_ADFS_FS is not set | ||
| 1643 | # CONFIG_AFFS_FS is not set | ||
| 1644 | # CONFIG_HFS_FS is not set | ||
| 1645 | # CONFIG_HFSPLUS_FS is not set | ||
| 1646 | # CONFIG_BEFS_FS is not set | ||
| 1647 | # CONFIG_BFS_FS is not set | ||
| 1648 | # CONFIG_EFS_FS is not set | ||
| 1649 | CONFIG_JFFS2_FS=y | ||
| 1650 | CONFIG_JFFS2_FS_DEBUG=1 | ||
| 1651 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1652 | CONFIG_JFFS2_FS_WBUF_VERIFY=y | ||
| 1653 | CONFIG_JFFS2_SUMMARY=y | ||
| 1654 | CONFIG_JFFS2_FS_XATTR=y | ||
| 1655 | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
| 1656 | CONFIG_JFFS2_FS_SECURITY=y | ||
| 1657 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
| 1658 | CONFIG_JFFS2_ZLIB=y | ||
| 1659 | CONFIG_JFFS2_LZO=y | ||
| 1660 | CONFIG_JFFS2_RTIME=y | ||
| 1661 | CONFIG_JFFS2_RUBIN=y | ||
| 1662 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
| 1663 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
| 1664 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
| 1665 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | ||
| 1666 | CONFIG_UBIFS_FS=y | ||
| 1667 | CONFIG_UBIFS_FS_XATTR=y | ||
| 1668 | # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set | ||
| 1669 | CONFIG_UBIFS_FS_LZO=y | ||
| 1670 | CONFIG_UBIFS_FS_ZLIB=y | ||
| 1671 | # CONFIG_UBIFS_FS_DEBUG is not set | ||
| 1672 | # CONFIG_CRAMFS is not set | ||
| 1673 | # CONFIG_SQUASHFS is not set | ||
| 1674 | # CONFIG_VXFS_FS is not set | ||
| 1675 | # CONFIG_MINIX_FS is not set | ||
| 1676 | # CONFIG_OMFS_FS is not set | ||
| 1677 | # CONFIG_HPFS_FS is not set | ||
| 1678 | # CONFIG_QNX4FS_FS is not set | ||
| 1679 | # CONFIG_ROMFS_FS is not set | ||
| 1680 | # CONFIG_SYSV_FS is not set | ||
| 1681 | # CONFIG_UFS_FS is not set | ||
| 1682 | CONFIG_NETWORK_FILESYSTEMS=y | ||
| 1683 | CONFIG_NFS_FS=y | ||
| 1684 | CONFIG_NFS_V3=y | ||
| 1685 | # CONFIG_NFS_V3_ACL is not set | ||
| 1686 | CONFIG_NFS_V4=y | ||
| 1687 | # CONFIG_NFS_V4_1 is not set | ||
| 1688 | CONFIG_ROOT_NFS=y | ||
| 1689 | CONFIG_NFSD=y | ||
| 1690 | # CONFIG_NFSD_V3 is not set | ||
| 1691 | # CONFIG_NFSD_V4 is not set | ||
| 1692 | CONFIG_LOCKD=y | ||
| 1693 | CONFIG_LOCKD_V4=y | ||
| 1694 | CONFIG_EXPORTFS=y | ||
| 1695 | CONFIG_NFS_COMMON=y | ||
| 1696 | CONFIG_SUNRPC=y | ||
| 1697 | CONFIG_SUNRPC_GSS=y | ||
| 1698 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1699 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1700 | # CONFIG_SMB_FS is not set | ||
| 1701 | CONFIG_CIFS=y | ||
| 1702 | # CONFIG_CIFS_STATS is not set | ||
| 1703 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 1704 | # CONFIG_CIFS_XATTR is not set | ||
| 1705 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 1706 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1707 | # CONFIG_NCP_FS is not set | ||
| 1708 | # CONFIG_CODA_FS is not set | ||
| 1709 | # CONFIG_AFS_FS is not set | ||
| 1710 | |||
| 1711 | # | ||
| 1712 | # Partition Types | ||
| 1713 | # | ||
| 1714 | CONFIG_PARTITION_ADVANCED=y | ||
| 1715 | # CONFIG_ACORN_PARTITION is not set | ||
| 1716 | # CONFIG_OSF_PARTITION is not set | ||
| 1717 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1718 | # CONFIG_ATARI_PARTITION is not set | ||
| 1719 | CONFIG_MAC_PARTITION=y | ||
| 1720 | CONFIG_MSDOS_PARTITION=y | ||
| 1721 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1722 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1723 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1724 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1725 | # CONFIG_LDM_PARTITION is not set | ||
| 1726 | # CONFIG_SGI_PARTITION is not set | ||
| 1727 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1728 | # CONFIG_SUN_PARTITION is not set | ||
| 1729 | # CONFIG_KARMA_PARTITION is not set | ||
| 1730 | # CONFIG_EFI_PARTITION is not set | ||
| 1731 | # CONFIG_SYSV68_PARTITION is not set | ||
| 1732 | CONFIG_NLS=y | ||
| 1733 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1734 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1735 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1736 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1737 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1738 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1739 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1740 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1741 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1742 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1743 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1744 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1745 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1746 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1747 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1748 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1749 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1750 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1751 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1752 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1753 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1754 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1755 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1756 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1757 | # CONFIG_NLS_ASCII is not set | ||
| 1758 | CONFIG_NLS_ISO8859_1=y | ||
| 1759 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1760 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1761 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1762 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1763 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1764 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1765 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1766 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1767 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1768 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1769 | # CONFIG_NLS_KOI8_R is not set | ||
| 1770 | # CONFIG_NLS_KOI8_U is not set | ||
| 1771 | # CONFIG_NLS_UTF8 is not set | ||
| 1772 | # CONFIG_DLM is not set | ||
| 1773 | # CONFIG_BINARY_PRINTF is not set | ||
| 1774 | |||
| 1775 | # | ||
| 1776 | # Library routines | ||
| 1777 | # | ||
| 1778 | CONFIG_BITREVERSE=y | ||
| 1779 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 1780 | # CONFIG_CRC_CCITT is not set | ||
| 1781 | CONFIG_CRC16=y | ||
| 1782 | CONFIG_CRC_T10DIF=y | ||
| 1783 | CONFIG_CRC_ITU_T=m | ||
| 1784 | CONFIG_CRC32=y | ||
| 1785 | # CONFIG_CRC7 is not set | ||
| 1786 | # CONFIG_LIBCRC32C is not set | ||
| 1787 | CONFIG_ZLIB_INFLATE=y | ||
| 1788 | CONFIG_ZLIB_DEFLATE=y | ||
| 1789 | CONFIG_LZO_COMPRESS=y | ||
| 1790 | CONFIG_LZO_DECOMPRESS=y | ||
| 1791 | CONFIG_DECOMPRESS_GZIP=y | ||
| 1792 | CONFIG_HAS_IOMEM=y | ||
| 1793 | CONFIG_HAS_IOPORT=y | ||
| 1794 | CONFIG_HAS_DMA=y | ||
| 1795 | CONFIG_HAVE_LMB=y | ||
| 1796 | CONFIG_NLATTR=y | ||
| 1797 | CONFIG_GENERIC_ATOMIC64=y | ||
| 1798 | |||
| 1799 | # | ||
| 1800 | # Kernel hacking | ||
| 1801 | # | ||
| 1802 | # CONFIG_PRINTK_TIME is not set | ||
| 1803 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 1804 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1805 | CONFIG_FRAME_WARN=1024 | ||
| 1806 | # CONFIG_MAGIC_SYSRQ is not set | ||
| 1807 | # CONFIG_STRIP_ASM_SYMS is not set | ||
| 1808 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1809 | # CONFIG_DEBUG_FS is not set | ||
| 1810 | # CONFIG_HEADERS_CHECK is not set | ||
| 1811 | # CONFIG_DEBUG_KERNEL is not set | ||
| 1812 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1813 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 1814 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 1815 | # CONFIG_LATENCYTOP is not set | ||
| 1816 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
| 1817 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 1818 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 1819 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 1820 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 1821 | CONFIG_TRACING_SUPPORT=y | ||
| 1822 | # CONFIG_FTRACE is not set | ||
| 1823 | # CONFIG_DMA_API_DEBUG is not set | ||
| 1824 | # CONFIG_SAMPLES is not set | ||
| 1825 | CONFIG_HAVE_ARCH_KGDB=y | ||
| 1826 | # CONFIG_PPC_DISABLE_WERROR is not set | ||
| 1827 | CONFIG_PPC_WERROR=y | ||
| 1828 | CONFIG_PRINT_STACK_DEPTH=64 | ||
| 1829 | # CONFIG_IRQSTACKS is not set | ||
| 1830 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
| 1831 | |||
| 1832 | # | ||
| 1833 | # Security options | ||
| 1834 | # | ||
| 1835 | # CONFIG_KEYS is not set | ||
| 1836 | # CONFIG_SECURITY is not set | ||
| 1837 | # CONFIG_SECURITYFS is not set | ||
| 1838 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 1839 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 1840 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 1841 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 1842 | CONFIG_DEFAULT_SECURITY="" | ||
| 1843 | CONFIG_XOR_BLOCKS=y | ||
| 1844 | CONFIG_ASYNC_CORE=y | ||
| 1845 | CONFIG_ASYNC_MEMCPY=y | ||
| 1846 | CONFIG_ASYNC_XOR=y | ||
| 1847 | CONFIG_ASYNC_PQ=y | ||
| 1848 | CONFIG_ASYNC_RAID6_RECOV=y | ||
| 1849 | CONFIG_CRYPTO=y | ||
| 1850 | |||
| 1851 | # | ||
| 1852 | # Crypto core or helper | ||
| 1853 | # | ||
| 1854 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1855 | CONFIG_CRYPTO_ALGAPI2=y | ||
| 1856 | CONFIG_CRYPTO_AEAD=y | ||
| 1857 | CONFIG_CRYPTO_AEAD2=y | ||
| 1858 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1859 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 1860 | CONFIG_CRYPTO_HASH=y | ||
| 1861 | CONFIG_CRYPTO_HASH2=y | ||
| 1862 | CONFIG_CRYPTO_RNG2=y | ||
| 1863 | CONFIG_CRYPTO_PCOMP=y | ||
| 1864 | CONFIG_CRYPTO_MANAGER=y | ||
| 1865 | CONFIG_CRYPTO_MANAGER2=y | ||
| 1866 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1867 | # CONFIG_CRYPTO_NULL is not set | ||
| 1868 | CONFIG_CRYPTO_WORKQUEUE=y | ||
| 1869 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1870 | CONFIG_CRYPTO_AUTHENC=y | ||
| 1871 | # CONFIG_CRYPTO_TEST is not set | ||
| 1872 | |||
| 1873 | # | ||
| 1874 | # Authenticated Encryption with Associated Data | ||
| 1875 | # | ||
| 1876 | # CONFIG_CRYPTO_CCM is not set | ||
| 1877 | # CONFIG_CRYPTO_GCM is not set | ||
| 1878 | # CONFIG_CRYPTO_SEQIV is not set | ||
| 1879 | |||
| 1880 | # | ||
| 1881 | # Block modes | ||
| 1882 | # | ||
| 1883 | CONFIG_CRYPTO_CBC=y | ||
| 1884 | # CONFIG_CRYPTO_CTR is not set | ||
| 1885 | # CONFIG_CRYPTO_CTS is not set | ||
| 1886 | CONFIG_CRYPTO_ECB=y | ||
| 1887 | # CONFIG_CRYPTO_LRW is not set | ||
| 1888 | CONFIG_CRYPTO_PCBC=y | ||
| 1889 | # CONFIG_CRYPTO_XTS is not set | ||
| 1890 | |||
| 1891 | # | ||
| 1892 | # Hash modes | ||
| 1893 | # | ||
| 1894 | CONFIG_CRYPTO_HMAC=y | ||
| 1895 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1896 | # CONFIG_CRYPTO_VMAC is not set | ||
| 1897 | |||
| 1898 | # | ||
| 1899 | # Digest | ||
| 1900 | # | ||
| 1901 | CONFIG_CRYPTO_CRC32C=y | ||
| 1902 | # CONFIG_CRYPTO_GHASH is not set | ||
| 1903 | CONFIG_CRYPTO_MD4=y | ||
| 1904 | CONFIG_CRYPTO_MD5=y | ||
| 1905 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 1906 | # CONFIG_CRYPTO_RMD128 is not set | ||
| 1907 | # CONFIG_CRYPTO_RMD160 is not set | ||
| 1908 | # CONFIG_CRYPTO_RMD256 is not set | ||
| 1909 | # CONFIG_CRYPTO_RMD320 is not set | ||
| 1910 | CONFIG_CRYPTO_SHA1=y | ||
| 1911 | # CONFIG_CRYPTO_SHA256 is not set | ||
| 1912 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 1913 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1914 | # CONFIG_CRYPTO_WP512 is not set | ||
| 1915 | |||
| 1916 | # | ||
| 1917 | # Ciphers | ||
| 1918 | # | ||
| 1919 | CONFIG_CRYPTO_AES=y | ||
| 1920 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 1921 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 1922 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 1923 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1924 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 1925 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 1926 | CONFIG_CRYPTO_DES=y | ||
| 1927 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1928 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 1929 | # CONFIG_CRYPTO_SALSA20 is not set | ||
| 1930 | # CONFIG_CRYPTO_SEED is not set | ||
| 1931 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 1932 | # CONFIG_CRYPTO_TEA is not set | ||
| 1933 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 1934 | |||
| 1935 | # | ||
| 1936 | # Compression | ||
| 1937 | # | ||
| 1938 | CONFIG_CRYPTO_DEFLATE=y | ||
| 1939 | # CONFIG_CRYPTO_ZLIB is not set | ||
| 1940 | CONFIG_CRYPTO_LZO=y | ||
| 1941 | |||
| 1942 | # | ||
| 1943 | # Random Number Generation | ||
| 1944 | # | ||
| 1945 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 1946 | CONFIG_CRYPTO_HW=y | ||
| 1947 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 1948 | CONFIG_CRYPTO_DEV_FSL_CAAM=y | ||
| 1949 | CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 | ||
| 1950 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y | ||
| 1951 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 | ||
| 1952 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 | ||
| 1953 | CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y | ||
| 1954 | CONFIG_CRYPTO_DEV_FSL_CAAM_UIO=y | ||
| 1955 | # CONFIG_CRYPTO_DEV_TALITOS is not set | ||
| 1956 | # CONFIG_PPC_CLOCK is not set | ||
| 1957 | CONFIG_PPC_LIB_RHEAP=y | ||
| 1958 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/linux-bsc9131rdb-2.6.33.tar.bz2 b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/linux-bsc9131rdb-2.6.33.tar.bz2 new file mode 100644 index 0000000..a16bf61 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9131rdb/linux-bsc9131rdb-2.6.33.tar.bz2 | |||
| Binary files differ | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0001-add-options-to-KBUILD_CFLAGS.patch b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0001-add-options-to-KBUILD_CFLAGS.patch new file mode 100644 index 0000000..b74d512 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0001-add-options-to-KBUILD_CFLAGS.patch | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | From: Jerry Pei <jerry.pei@enea.com> | ||
| 2 | Date: Tue, 10 Jul 2012 11:44:18 +0800 | ||
| 3 | Subject: [PATCH] add options to KBUILD_CFLAGS | ||
| 4 | |||
| 5 | Signed-off-by: Jerry Pei <jerry.pei@enea.com> | ||
| 6 | --- | ||
| 7 | Makefile | 2 ++ | ||
| 8 | 1 file changed, 2 insertions(+) | ||
| 9 | |||
| 10 | diff --git a/Makefile b/Makefile | ||
| 11 | index e19c848..b07ce1e 100644 | ||
| 12 | --- a/Makefile | ||
| 13 | +++ b/Makefile | ||
| 14 | @@ -526,6 +526,8 @@ endif # $(dot-config) | ||
| 15 | # Defaults vmlinux but it is usually overridden in the arch makefile | ||
| 16 | all: vmlinux | ||
| 17 | |||
| 18 | +KBUILD_CFLAGS += -Wno-unused-but-set-variable -Wno-error=array-bounds | ||
| 19 | + | ||
| 20 | ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE | ||
| 21 | KBUILD_CFLAGS += -Os | ||
| 22 | else | ||
| 23 | -- | ||
| 24 | 1.7.9.5 | ||
| 25 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0002-take-back-DECLARE_MUTEX-for-linx.patch b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0002-take-back-DECLARE_MUTEX-for-linx.patch new file mode 100644 index 0000000..a648a81 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0002-take-back-DECLARE_MUTEX-for-linx.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From: Jerry Pei <jeei@sestofb01.enea.se> | ||
| 2 | Date: Thu, 22 Dec 2011 03:55:03 +0100 | ||
| 3 | Subject: [PATCH] take back DECLARE_MUTEX for linx | ||
| 4 | |||
| 5 | Signed-off-by: Jerry Pei <jeei@sestofb01.enea.se> | ||
| 6 | --- | ||
| 7 | include/linux/semaphore.h | 3 +++ | ||
| 8 | 1 files changed, 3 insertions(+), 0 deletions(-) | ||
| 9 | |||
| 10 | diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h | ||
| 11 | index 66d2591..8b75bb6 100644 | ||
| 12 | --- a/include/linux/semaphore.h | ||
| 13 | +++ b/include/linux/semaphore.h | ||
| 14 | @@ -29,6 +29,9 @@ struct semaphore { | ||
| 15 | #define DEFINE_SEMAPHORE(name, val) \ | ||
| 16 | struct semaphore name = __SEMAPHORE_INITIALIZER(name, val) | ||
| 17 | |||
| 18 | +#define DECLARE_MUTEX(name) \ | ||
| 19 | + struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1) | ||
| 20 | + | ||
| 21 | static inline void sema_init(struct semaphore *sem, int val) | ||
| 22 | { | ||
| 23 | static struct lock_class_key __key; | ||
| 24 | -- | ||
| 25 | 1.7.5.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0003-fix-nonexistant-type-u8-issue.patch b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0003-fix-nonexistant-type-u8-issue.patch new file mode 100644 index 0000000..b091290 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0003-fix-nonexistant-type-u8-issue.patch | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | From: jerry pei <jerry.pei@enea.com> | ||
| 2 | Date: Mon, 30 Jul 2012 05:06:27 +0200 | ||
| 3 | Subject: [PATCH] change u8 to __u8 in scsi.h | ||
| 4 | |||
| 5 | Signed-off-by: jerry pei <jerry.pei@enea.com> | ||
| 6 | --- | ||
| 7 | include/scsi/scsi.h | 8 ++++---- | ||
| 8 | 1 files changed, 4 insertions(+), 4 deletions(-) | ||
| 9 | |||
| 10 | diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h | ||
| 11 | index 8b4deca..ec3053e 100644 | ||
| 12 | --- a/include/scsi/scsi.h | ||
| 13 | +++ b/include/scsi/scsi.h | ||
| 14 | @@ -149,10 +149,10 @@ struct scsi_cmnd; | ||
| 15 | |||
| 16 | /* defined in T10 SCSI Primary Commands-2 (SPC2) */ | ||
| 17 | struct scsi_varlen_cdb_hdr { | ||
| 18 | - u8 opcode; /* opcode always == VARIABLE_LENGTH_CMD */ | ||
| 19 | - u8 control; | ||
| 20 | - u8 misc[5]; | ||
| 21 | - u8 additional_cdb_length; /* total cdb length - 8 */ | ||
| 22 | + __u8 opcode; /* opcode always == VARIABLE_LENGTH_CMD */ | ||
| 23 | + __u8 control; | ||
| 24 | + __u8 misc[5]; | ||
| 25 | + __u8 additional_cdb_length; /* total cdb length - 8 */ | ||
| 26 | __be16 service_action; | ||
| 27 | /* service specific data follows */ | ||
| 28 | }; | ||
| 29 | -- | ||
| 30 | 1.7.5.4 | ||
| 31 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch new file mode 100644 index 0000000..c9e2308 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0004-fix-wrong-WDTP_MASK-in-booke_wdt_c.patch | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | From f94d0836740b00fb99861651ce261df94244a1d7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Alex He <Alex.He@enea.com> | ||
| 3 | Date: Wed, 22 Aug 2012 11:40:11 +0200 | ||
| 4 | Subject: [PATCH] fix wrong WDTP_MASK in booke_wdt.c in | ||
| 5 | linux-bsc9132qds-2.6.33 | ||
| 6 | |||
| 7 | --- | ||
| 8 | drivers/watchdog/booke_wdt.c | 2 +- | ||
| 9 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
| 10 | |||
| 11 | diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c | ||
| 12 | index a01e298..77defbe 100644 | ||
| 13 | --- a/drivers/watchdog/booke_wdt.c | ||
| 14 | +++ b/drivers/watchdog/booke_wdt.c | ||
| 15 | @@ -44,7 +44,7 @@ u32 booke_wdt_period = WDT_PERIOD_DEFAULT; | ||
| 16 | |||
| 17 | #ifdef CONFIG_FSL_BOOKE | ||
| 18 | #define WDTP(x) ((((x)&0x3)<<30)|(((x)&0x3c)<<15)) | ||
| 19 | -#define WDTP_MASK (WDTP(0)) | ||
| 20 | +#define WDTP_MASK (WDTP(0x3f)) | ||
| 21 | #else | ||
| 22 | #define WDTP(x) (TCR_WP(x)) | ||
| 23 | #define WDTP_MASK (TCR_WP_MASK) | ||
| 24 | -- | ||
| 25 | 1.7.5.4 | ||
| 26 | |||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0007-perf-makefile.patch b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0007-perf-makefile.patch new file mode 100644 index 0000000..911ffd9 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/0007-perf-makefile.patch | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | --- a/tools/perf/Makefile 2012-08-27 09:40:05.887241976 +0200 | ||
| 2 | +++ b/tools/perf/Makefile 2012-08-27 09:40:16.742768991 +0200 | ||
| 3 | @@ -198,7 +198,7 @@ | ||
| 4 | CFLAGS_OPTIMIZE = -O6 | ||
| 5 | endif | ||
| 6 | |||
| 7 | -CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | ||
| 8 | +CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | ||
| 9 | EXTLIBS = -lpthread -lrt -lelf -lm | ||
| 10 | ALL_CFLAGS = $(CFLAGS) | ||
| 11 | ALL_LDFLAGS = $(LDFLAGS) | ||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/defconfig b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/defconfig new file mode 100644 index 0000000..9f91c73 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/defconfig | |||
| @@ -0,0 +1,1958 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.33.9-rt31 | ||
| 4 | # Wed Mar 7 11:18:39 2012 | ||
| 5 | # | ||
| 6 | # CONFIG_PPC64 is not set | ||
| 7 | |||
| 8 | # | ||
| 9 | # Processor support | ||
| 10 | # | ||
| 11 | # CONFIG_PPC_BOOK3S_32 is not set | ||
| 12 | CONFIG_PPC_85xx=y | ||
| 13 | # CONFIG_PPC_8xx is not set | ||
| 14 | # CONFIG_40x is not set | ||
| 15 | # CONFIG_44x is not set | ||
| 16 | # CONFIG_E200 is not set | ||
| 17 | CONFIG_E500=y | ||
| 18 | # CONFIG_PPC_E500MC is not set | ||
| 19 | CONFIG_FSL_EMB_PERFMON=y | ||
| 20 | CONFIG_BOOKE=y | ||
| 21 | CONFIG_FSL_BOOKE=y | ||
| 22 | CONFIG_PPC_FSL_BOOK3E=y | ||
| 23 | CONFIG_PTE_64BIT=y | ||
| 24 | # CONFIG_PHYS_64BIT is not set | ||
| 25 | CONFIG_SPE=y | ||
| 26 | CONFIG_PPC_MMU_NOHASH=y | ||
| 27 | CONFIG_PPC_MMU_NOHASH_32=y | ||
| 28 | CONFIG_PPC_BOOK3E_MMU=y | ||
| 29 | # CONFIG_PPC_MM_SLICES is not set | ||
| 30 | # CONFIG_SMP is not set | ||
| 31 | CONFIG_PPC32=y | ||
| 32 | CONFIG_WORD_SIZE=32 | ||
| 33 | # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set | ||
| 34 | CONFIG_MMU=y | ||
| 35 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
| 36 | CONFIG_GENERIC_TIME=y | ||
| 37 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
| 38 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
| 39 | CONFIG_GENERIC_HARDIRQS=y | ||
| 40 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | ||
| 41 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
| 42 | # CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set | ||
| 43 | CONFIG_IRQ_PER_CPU=y | ||
| 44 | CONFIG_NR_IRQS=512 | ||
| 45 | CONFIG_STACKTRACE_SUPPORT=y | ||
| 46 | CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
| 47 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
| 48 | CONFIG_LOCKDEP_SUPPORT=y | ||
| 49 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
| 50 | CONFIG_GENERIC_HWEIGHT=y | ||
| 51 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
| 52 | CONFIG_GENERIC_GPIO=y | ||
| 53 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
| 54 | CONFIG_PPC=y | ||
| 55 | CONFIG_EARLY_PRINTK=y | ||
| 56 | CONFIG_GENERIC_NVRAM=y | ||
| 57 | CONFIG_SCHED_OMIT_FRAME_POINTER=y | ||
| 58 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 59 | CONFIG_PPC_OF=y | ||
| 60 | CONFIG_OF=y | ||
| 61 | CONFIG_PPC_UDBG_16550=y | ||
| 62 | # CONFIG_GENERIC_TBSYNC is not set | ||
| 63 | CONFIG_AUDIT_ARCH=y | ||
| 64 | CONFIG_GENERIC_BUG=y | ||
| 65 | CONFIG_DTC=y | ||
| 66 | CONFIG_DEFAULT_UIMAGE=y | ||
| 67 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
| 68 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
| 69 | # CONFIG_PPC_DCR_NATIVE is not set | ||
| 70 | # CONFIG_PPC_DCR_MMIO is not set | ||
| 71 | CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y | ||
| 72 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
| 73 | CONFIG_CONSTRUCTORS=y | ||
| 74 | |||
| 75 | # | ||
| 76 | # General setup | ||
| 77 | # | ||
| 78 | CONFIG_EXPERIMENTAL=y | ||
| 79 | CONFIG_BROKEN_ON_SMP=y | ||
| 80 | CONFIG_LOCK_KERNEL=y | ||
| 81 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 82 | CONFIG_LOCALVERSION="" | ||
| 83 | # CONFIG_LOCALVERSION_AUTO is not set | ||
| 84 | CONFIG_SWAP=y | ||
| 85 | CONFIG_SYSVIPC=y | ||
| 86 | CONFIG_SYSVIPC_SYSCTL=y | ||
| 87 | CONFIG_POSIX_MQUEUE=y | ||
| 88 | CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
| 89 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 90 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 91 | # CONFIG_TASKSTATS is not set | ||
| 92 | CONFIG_AUDIT=y | ||
| 93 | # CONFIG_AUDITSYSCALL is not set | ||
| 94 | |||
| 95 | # | ||
| 96 | # RCU Subsystem | ||
| 97 | # | ||
| 98 | # CONFIG_TREE_RCU is not set | ||
| 99 | CONFIG_TREE_PREEMPT_RCU=y | ||
| 100 | # CONFIG_TINY_RCU is not set | ||
| 101 | # CONFIG_RCU_TRACE is not set | ||
| 102 | CONFIG_RCU_FANOUT=32 | ||
| 103 | # CONFIG_RCU_FANOUT_EXACT is not set | ||
| 104 | # CONFIG_TREE_RCU_TRACE is not set | ||
| 105 | CONFIG_IKCONFIG=y | ||
| 106 | CONFIG_IKCONFIG_PROC=y | ||
| 107 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 108 | # CONFIG_GROUP_SCHED is not set | ||
| 109 | # CONFIG_CGROUPS is not set | ||
| 110 | CONFIG_SYSFS_DEPRECATED=y | ||
| 111 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 112 | # CONFIG_RELAY is not set | ||
| 113 | # CONFIG_NAMESPACES is not set | ||
| 114 | CONFIG_BLK_DEV_INITRD=y | ||
| 115 | CONFIG_INITRAMFS_SOURCE="" | ||
| 116 | CONFIG_RD_GZIP=y | ||
| 117 | # CONFIG_RD_BZIP2 is not set | ||
| 118 | # CONFIG_RD_LZMA is not set | ||
| 119 | # CONFIG_RD_LZO is not set | ||
| 120 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 121 | CONFIG_SYSCTL=y | ||
| 122 | CONFIG_ANON_INODES=y | ||
| 123 | CONFIG_EMBEDDED=y | ||
| 124 | CONFIG_SYSCTL_SYSCALL=y | ||
| 125 | CONFIG_KALLSYMS=y | ||
| 126 | CONFIG_KALLSYMS_EXTRA_PASS=y | ||
| 127 | CONFIG_HOTPLUG=y | ||
| 128 | CONFIG_PRINTK=y | ||
| 129 | CONFIG_BUG=y | ||
| 130 | CONFIG_ELF_CORE=y | ||
| 131 | CONFIG_BASE_FULL=y | ||
| 132 | CONFIG_FUTEX=y | ||
| 133 | CONFIG_EPOLL=y | ||
| 134 | CONFIG_SIGNALFD=y | ||
| 135 | CONFIG_TIMERFD=y | ||
| 136 | CONFIG_EVENTFD=y | ||
| 137 | CONFIG_SHMEM=y | ||
| 138 | CONFIG_AIO=y | ||
| 139 | CONFIG_HAVE_PERF_EVENTS=y | ||
| 140 | |||
| 141 | # | ||
| 142 | # Kernel Performance Events And Counters | ||
| 143 | # | ||
| 144 | # CONFIG_PERF_EVENTS is not set | ||
| 145 | # CONFIG_PERF_COUNTERS is not set | ||
| 146 | CONFIG_VM_EVENT_COUNTERS=y | ||
| 147 | CONFIG_PCI_QUIRKS=y | ||
| 148 | CONFIG_COMPAT_BRK=y | ||
| 149 | CONFIG_SLAB=y | ||
| 150 | # CONFIG_SLUB is not set | ||
| 151 | # CONFIG_SLOB is not set | ||
| 152 | # CONFIG_PROFILING is not set | ||
| 153 | CONFIG_HAVE_OPROFILE=y | ||
| 154 | # CONFIG_KPROBES is not set | ||
| 155 | CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||
| 156 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 157 | CONFIG_HAVE_KPROBES=y | ||
| 158 | CONFIG_HAVE_KRETPROBES=y | ||
| 159 | CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
| 160 | CONFIG_HAVE_DMA_ATTRS=y | ||
| 161 | CONFIG_HAVE_DMA_API_DEBUG=y | ||
| 162 | |||
| 163 | # | ||
| 164 | # GCOV-based kernel profiling | ||
| 165 | # | ||
| 166 | CONFIG_SLOW_WORK=y | ||
| 167 | # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set | ||
| 168 | CONFIG_SLABINFO=y | ||
| 169 | CONFIG_RT_MUTEXES=y | ||
| 170 | CONFIG_BASE_SMALL=0 | ||
| 171 | CONFIG_MODULES=y | ||
| 172 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
| 173 | CONFIG_MODULE_UNLOAD=y | ||
| 174 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 175 | # CONFIG_MODVERSIONS is not set | ||
| 176 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 177 | CONFIG_BLOCK=y | ||
| 178 | CONFIG_LBDAF=y | ||
| 179 | # CONFIG_BLK_DEV_BSG is not set | ||
| 180 | # CONFIG_BLK_DEV_INTEGRITY is not set | ||
| 181 | |||
| 182 | # | ||
| 183 | # IO Schedulers | ||
| 184 | # | ||
| 185 | CONFIG_IOSCHED_NOOP=y | ||
| 186 | CONFIG_IOSCHED_DEADLINE=y | ||
| 187 | CONFIG_IOSCHED_CFQ=y | ||
| 188 | # CONFIG_DEFAULT_DEADLINE is not set | ||
| 189 | CONFIG_DEFAULT_CFQ=y | ||
| 190 | # CONFIG_DEFAULT_NOOP is not set | ||
| 191 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
| 192 | # CONFIG_INLINE_SPIN_TRYLOCK is not set | ||
| 193 | # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set | ||
| 194 | # CONFIG_INLINE_SPIN_LOCK is not set | ||
| 195 | # CONFIG_INLINE_SPIN_LOCK_BH is not set | ||
| 196 | # CONFIG_INLINE_SPIN_LOCK_IRQ is not set | ||
| 197 | # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set | ||
| 198 | # CONFIG_INLINE_SPIN_UNLOCK is not set | ||
| 199 | # CONFIG_INLINE_SPIN_UNLOCK_BH is not set | ||
| 200 | # CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set | ||
| 201 | # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set | ||
| 202 | # CONFIG_INLINE_READ_TRYLOCK is not set | ||
| 203 | # CONFIG_INLINE_READ_LOCK is not set | ||
| 204 | # CONFIG_INLINE_READ_LOCK_BH is not set | ||
| 205 | # CONFIG_INLINE_READ_LOCK_IRQ is not set | ||
| 206 | # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set | ||
| 207 | # CONFIG_INLINE_READ_UNLOCK is not set | ||
| 208 | # CONFIG_INLINE_READ_UNLOCK_BH is not set | ||
| 209 | # CONFIG_INLINE_READ_UNLOCK_IRQ is not set | ||
| 210 | # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set | ||
| 211 | # CONFIG_INLINE_WRITE_TRYLOCK is not set | ||
| 212 | # CONFIG_INLINE_WRITE_LOCK is not set | ||
| 213 | # CONFIG_INLINE_WRITE_LOCK_BH is not set | ||
| 214 | # CONFIG_INLINE_WRITE_LOCK_IRQ is not set | ||
| 215 | # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set | ||
| 216 | # CONFIG_INLINE_WRITE_UNLOCK is not set | ||
| 217 | # CONFIG_INLINE_WRITE_UNLOCK_BH is not set | ||
| 218 | # CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set | ||
| 219 | # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set | ||
| 220 | # CONFIG_MUTEX_SPIN_ON_OWNER is not set | ||
| 221 | CONFIG_FREEZER=y | ||
| 222 | CONFIG_PPC_MSI_BITMAP=y | ||
| 223 | |||
| 224 | # | ||
| 225 | # Platform support | ||
| 226 | # | ||
| 227 | # CONFIG_PPC_CELL is not set | ||
| 228 | # CONFIG_PPC_CELL_NATIVE is not set | ||
| 229 | # CONFIG_PQ2ADS is not set | ||
| 230 | CONFIG_FSL_SOC_BOOKE=y | ||
| 231 | # CONFIG_MPC8540_ADS is not set | ||
| 232 | # CONFIG_MPC8560_ADS is not set | ||
| 233 | # CONFIG_FLEXCAN is not set | ||
| 234 | # CONFIG_MPC85xx_CDS is not set | ||
| 235 | # CONFIG_MPC85xx_MDS is not set | ||
| 236 | # CONFIG_MPC8536_DS is not set | ||
| 237 | # CONFIG_MPC85xx_DS is not set | ||
| 238 | CONFIG_MPC85xx_RDB=y | ||
| 239 | CONFIG_P1010_RDB=y | ||
| 240 | # CONFIG_P1022_DS is not set | ||
| 241 | CONFIG_BSC9131_QDS=y | ||
| 242 | CONFIG_BSC9132_QDS=y | ||
| 243 | CONFIG_BSC9131_RDB=y | ||
| 244 | # CONFIG_SOCRATES is not set | ||
| 245 | # CONFIG_KSI8560 is not set | ||
| 246 | # CONFIG_XES_MPC85xx is not set | ||
| 247 | # CONFIG_STX_GP3 is not set | ||
| 248 | # CONFIG_TQM8540 is not set | ||
| 249 | # CONFIG_TQM8541 is not set | ||
| 250 | # CONFIG_TQM8548 is not set | ||
| 251 | # CONFIG_TQM8555 is not set | ||
| 252 | # CONFIG_TQM8560 is not set | ||
| 253 | # CONFIG_SBC8548 is not set | ||
| 254 | # CONFIG_SBC8560 is not set | ||
| 255 | # CONFIG_P4080_DS is not set | ||
| 256 | CONFIG_FSL_85XX_CACHE_SRAM=y | ||
| 257 | # CONFIG_IPIC is not set | ||
| 258 | CONFIG_MPIC=y | ||
| 259 | # CONFIG_MPIC_WEIRD is not set | ||
| 260 | CONFIG_PPC_I8259=y | ||
| 261 | # CONFIG_PPC_RTAS is not set | ||
| 262 | # CONFIG_MMIO_NVRAM is not set | ||
| 263 | # CONFIG_PPC_MPC106 is not set | ||
| 264 | # CONFIG_PPC_970_NAP is not set | ||
| 265 | # CONFIG_PPC_INDIRECT_IO is not set | ||
| 266 | # CONFIG_GENERIC_IOMAP is not set | ||
| 267 | # CONFIG_CPU_FREQ is not set | ||
| 268 | # CONFIG_QUICC_ENGINE is not set | ||
| 269 | # CONFIG_CPM2 is not set | ||
| 270 | CONFIG_FSL_ULI1575=y | ||
| 271 | CONFIG_MPC8xxx_GPIO=y | ||
| 272 | # CONFIG_SIMPLE_GPIO is not set | ||
| 273 | |||
| 274 | # | ||
| 275 | # Kernel options | ||
| 276 | # | ||
| 277 | CONFIG_HIGHMEM=y | ||
| 278 | CONFIG_TICK_ONESHOT=y | ||
| 279 | CONFIG_NO_HZ=y | ||
| 280 | CONFIG_HIGH_RES_TIMERS=y | ||
| 281 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
| 282 | # CONFIG_HZ_100 is not set | ||
| 283 | CONFIG_HZ_250=y | ||
| 284 | # CONFIG_HZ_300 is not set | ||
| 285 | # CONFIG_HZ_1000 is not set | ||
| 286 | CONFIG_HZ=250 | ||
| 287 | CONFIG_SCHED_HRTICK=y | ||
| 288 | # CONFIG_PREEMPT_NONE is not set | ||
| 289 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
| 290 | # CONFIG_PREEMPT_DESKTOP is not set | ||
| 291 | CONFIG_PREEMPT_RT=y | ||
| 292 | CONFIG_PREEMPT=y | ||
| 293 | CONFIG_PREEMPT_SOFTIRQS=y | ||
| 294 | CONFIG_PREEMPT_HARDIRQS=y | ||
| 295 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 296 | CONFIG_BINFMT_ELF=y | ||
| 297 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set | ||
| 298 | # CONFIG_HAVE_AOUT is not set | ||
| 299 | # CONFIG_BINFMT_MISC is not set | ||
| 300 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | ||
| 301 | CONFIG_MATH_EMULATION=y | ||
| 302 | CONFIG_IOMMU_HELPER=y | ||
| 303 | CONFIG_SWIOTLB=y | ||
| 304 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
| 305 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
| 306 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
| 307 | CONFIG_MAX_ACTIVE_REGIONS=32 | ||
| 308 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
| 309 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
| 310 | CONFIG_SYS_SUPPORTS_HUGETLBFS=y | ||
| 311 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 312 | CONFIG_FLATMEM_MANUAL=y | ||
| 313 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 314 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 315 | CONFIG_FLATMEM=y | ||
| 316 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 317 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
| 318 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
| 319 | CONFIG_MIGRATION=y | ||
| 320 | # CONFIG_PHYS_ADDR_T_64BIT is not set | ||
| 321 | CONFIG_ZONE_DMA_FLAG=1 | ||
| 322 | CONFIG_BOUNCE=y | ||
| 323 | CONFIG_VIRT_TO_BUS=y | ||
| 324 | # CONFIG_KSM is not set | ||
| 325 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | ||
| 326 | CONFIG_PPC_4K_PAGES=y | ||
| 327 | # CONFIG_PPC_16K_PAGES is not set | ||
| 328 | # CONFIG_PPC_64K_PAGES is not set | ||
| 329 | # CONFIG_PPC_256K_PAGES is not set | ||
| 330 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
| 331 | CONFIG_PROC_DEVICETREE=y | ||
| 332 | # CONFIG_CMDLINE_BOOL is not set | ||
| 333 | CONFIG_EXTRA_TARGETS="" | ||
| 334 | CONFIG_PM=y | ||
| 335 | # CONFIG_PM_DEBUG is not set | ||
| 336 | CONFIG_PM_SLEEP=y | ||
| 337 | CONFIG_SUSPEND=y | ||
| 338 | CONFIG_SUSPEND_FREEZER=y | ||
| 339 | # CONFIG_HIBERNATION is not set | ||
| 340 | # CONFIG_PM_RUNTIME is not set | ||
| 341 | CONFIG_SECCOMP=y | ||
| 342 | CONFIG_ISA_DMA_API=y | ||
| 343 | |||
| 344 | # | ||
| 345 | # Bus options | ||
| 346 | # | ||
| 347 | CONFIG_ZONE_DMA=y | ||
| 348 | CONFIG_GENERIC_ISA_DMA=y | ||
| 349 | CONFIG_PPC_INDIRECT_PCI=y | ||
| 350 | CONFIG_FSL_SOC=y | ||
| 351 | CONFIG_FSL_PCI=y | ||
| 352 | CONFIG_FSL_PMC=y | ||
| 353 | CONFIG_FSL_LBC=y | ||
| 354 | CONFIG_FSL_IFC=y | ||
| 355 | CONFIG_FSL_MPIC_MSG_INTS=y | ||
| 356 | CONFIG_PPC_PCI_CHOICE=y | ||
| 357 | CONFIG_PCI=y | ||
| 358 | CONFIG_PCI_DOMAINS=y | ||
| 359 | CONFIG_PCI_SYSCALL=y | ||
| 360 | CONFIG_PCIEPORTBUS=y | ||
| 361 | # CONFIG_PCIEAER is not set | ||
| 362 | # CONFIG_PCIEASPM is not set | ||
| 363 | CONFIG_ARCH_SUPPORTS_MSI=y | ||
| 364 | CONFIG_PCI_MSI=y | ||
| 365 | CONFIG_PCI_LEGACY=y | ||
| 366 | # CONFIG_PCI_STUB is not set | ||
| 367 | # CONFIG_PCI_IOV is not set | ||
| 368 | # CONFIG_PCCARD is not set | ||
| 369 | # CONFIG_HOTPLUG_PCI is not set | ||
| 370 | # CONFIG_HAS_RAPIDIO is not set | ||
| 371 | |||
| 372 | # | ||
| 373 | # Advanced setup | ||
| 374 | # | ||
| 375 | CONFIG_ADVANCED_OPTIONS=y | ||
| 376 | # CONFIG_LOWMEM_SIZE_BOOL is not set | ||
| 377 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
| 378 | CONFIG_LOWMEM_CAM_NUM_BOOL=y | ||
| 379 | CONFIG_LOWMEM_CAM_NUM=6 | ||
| 380 | # CONFIG_RELOCATABLE is not set | ||
| 381 | # CONFIG_PAGE_OFFSET_BOOL is not set | ||
| 382 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
| 383 | # CONFIG_KERNEL_START_BOOL is not set | ||
| 384 | CONFIG_KERNEL_START=0xc0000000 | ||
| 385 | # CONFIG_PHYSICAL_START_BOOL is not set | ||
| 386 | CONFIG_PHYSICAL_START=0x00000000 | ||
| 387 | CONFIG_PHYSICAL_ALIGN=0x04000000 | ||
| 388 | # CONFIG_TASK_SIZE_BOOL is not set | ||
| 389 | CONFIG_TASK_SIZE=0xc0000000 | ||
| 390 | CONFIG_NET=y | ||
| 391 | |||
| 392 | # | ||
| 393 | # Networking options | ||
| 394 | # | ||
| 395 | CONFIG_PACKET=y | ||
| 396 | # CONFIG_PACKET_MMAP is not set | ||
| 397 | CONFIG_UNIX=y | ||
| 398 | CONFIG_XFRM=y | ||
| 399 | CONFIG_XFRM_USER=y | ||
| 400 | # CONFIG_XFRM_SUB_POLICY is not set | ||
| 401 | # CONFIG_XFRM_MIGRATE is not set | ||
| 402 | # CONFIG_XFRM_STATISTICS is not set | ||
| 403 | CONFIG_XFRM_IPCOMP=y | ||
| 404 | CONFIG_NET_KEY=y | ||
| 405 | # CONFIG_NET_KEY_MIGRATE is not set | ||
| 406 | CONFIG_INET=y | ||
| 407 | CONFIG_IP_MULTICAST=y | ||
| 408 | CONFIG_IP_ADVANCED_ROUTER=y | ||
| 409 | CONFIG_ASK_IP_FIB_HASH=y | ||
| 410 | # CONFIG_IP_FIB_TRIE is not set | ||
| 411 | CONFIG_IP_FIB_HASH=y | ||
| 412 | CONFIG_IP_MULTIPLE_TABLES=y | ||
| 413 | CONFIG_IP_ROUTE_MULTIPATH=y | ||
| 414 | CONFIG_IP_ROUTE_VERBOSE=y | ||
| 415 | CONFIG_IP_PNP=y | ||
| 416 | CONFIG_IP_PNP_DHCP=y | ||
| 417 | CONFIG_IP_PNP_BOOTP=y | ||
| 418 | CONFIG_IP_PNP_RARP=y | ||
| 419 | CONFIG_NET_IPIP=y | ||
| 420 | CONFIG_NET_IPGRE=y | ||
| 421 | CONFIG_NET_IPGRE_BROADCAST=y | ||
| 422 | CONFIG_IP_MROUTE=y | ||
| 423 | CONFIG_IP_PIMSM_V1=y | ||
| 424 | CONFIG_IP_PIMSM_V2=y | ||
| 425 | CONFIG_ARPD=y | ||
| 426 | # CONFIG_SYN_COOKIES is not set | ||
| 427 | CONFIG_INET_AH=y | ||
| 428 | CONFIG_INET_ESP=y | ||
| 429 | CONFIG_INET_IPCOMP=y | ||
| 430 | CONFIG_INET_XFRM_TUNNEL=y | ||
| 431 | CONFIG_INET_TUNNEL=y | ||
| 432 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
| 433 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
| 434 | CONFIG_INET_XFRM_MODE_BEET=y | ||
| 435 | # CONFIG_INET_LRO is not set | ||
| 436 | CONFIG_INET_DIAG=y | ||
| 437 | CONFIG_INET_TCP_DIAG=y | ||
| 438 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 439 | CONFIG_TCP_CONG_CUBIC=y | ||
| 440 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
| 441 | # CONFIG_TCP_MD5SIG is not set | ||
| 442 | CONFIG_IPV6=y | ||
| 443 | # CONFIG_IPV6_PRIVACY is not set | ||
| 444 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
| 445 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
| 446 | # CONFIG_INET6_AH is not set | ||
| 447 | # CONFIG_INET6_ESP is not set | ||
| 448 | # CONFIG_INET6_IPCOMP is not set | ||
| 449 | # CONFIG_IPV6_MIP6 is not set | ||
| 450 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
| 451 | # CONFIG_INET6_TUNNEL is not set | ||
| 452 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
| 453 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
| 454 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
| 455 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
| 456 | CONFIG_IPV6_SIT=y | ||
| 457 | # CONFIG_IPV6_SIT_6RD is not set | ||
| 458 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
| 459 | # CONFIG_IPV6_TUNNEL is not set | ||
| 460 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
| 461 | # CONFIG_IPV6_MROUTE is not set | ||
| 462 | # CONFIG_NETWORK_SECMARK is not set | ||
| 463 | # CONFIG_NETFILTER is not set | ||
| 464 | # CONFIG_IP_DCCP is not set | ||
| 465 | # CONFIG_IP_SCTP is not set | ||
| 466 | # CONFIG_RDS is not set | ||
| 467 | # CONFIG_TIPC is not set | ||
| 468 | # CONFIG_ATM is not set | ||
| 469 | CONFIG_STP=y | ||
| 470 | CONFIG_BRIDGE=y | ||
| 471 | # CONFIG_NET_DSA is not set | ||
| 472 | CONFIG_VLAN_8021Q=y | ||
| 473 | # CONFIG_VLAN_8021Q_GVRP is not set | ||
| 474 | # CONFIG_DECNET is not set | ||
| 475 | CONFIG_LLC=y | ||
| 476 | # CONFIG_LLC2 is not set | ||
| 477 | # CONFIG_IPX is not set | ||
| 478 | # CONFIG_ATALK is not set | ||
| 479 | # CONFIG_X25 is not set | ||
| 480 | # CONFIG_LAPB is not set | ||
| 481 | # CONFIG_ECONET is not set | ||
| 482 | # CONFIG_WAN_ROUTER is not set | ||
| 483 | # CONFIG_PHONET is not set | ||
| 484 | # CONFIG_IEEE802154 is not set | ||
| 485 | # CONFIG_NET_SCHED is not set | ||
| 486 | # CONFIG_DCB is not set | ||
| 487 | |||
| 488 | # | ||
| 489 | # Network testing | ||
| 490 | # | ||
| 491 | # CONFIG_NET_PKTGEN is not set | ||
| 492 | # CONFIG_HAMRADIO is not set | ||
| 493 | # CONFIG_CAN is not set | ||
| 494 | # CONFIG_IRDA is not set | ||
| 495 | # CONFIG_BT is not set | ||
| 496 | # CONFIG_AF_RXRPC is not set | ||
| 497 | CONFIG_FIB_RULES=y | ||
| 498 | CONFIG_WIRELESS=y | ||
| 499 | # CONFIG_CFG80211 is not set | ||
| 500 | # CONFIG_LIB80211 is not set | ||
| 501 | |||
| 502 | # | ||
| 503 | # CFG80211 needs to be enabled for MAC80211 | ||
| 504 | # | ||
| 505 | |||
| 506 | # | ||
| 507 | # Some wireless drivers require a rate control algorithm | ||
| 508 | # | ||
| 509 | # CONFIG_WIMAX is not set | ||
| 510 | # CONFIG_RFKILL is not set | ||
| 511 | # CONFIG_NET_9P is not set | ||
| 512 | |||
| 513 | # | ||
| 514 | # Device Drivers | ||
| 515 | # | ||
| 516 | |||
| 517 | # | ||
| 518 | # Generic Driver Options | ||
| 519 | # | ||
| 520 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
| 521 | # CONFIG_DEVTMPFS is not set | ||
| 522 | CONFIG_STANDALONE=y | ||
| 523 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 524 | CONFIG_FW_LOADER=y | ||
| 525 | CONFIG_FIRMWARE_IN_KERNEL=y | ||
| 526 | CONFIG_EXTRA_FIRMWARE="" | ||
| 527 | # CONFIG_SYS_HYPERVISOR is not set | ||
| 528 | # CONFIG_CONNECTOR is not set | ||
| 529 | CONFIG_MTD=y | ||
| 530 | # CONFIG_MTD_DEBUG is not set | ||
| 531 | # CONFIG_MTD_TESTS is not set | ||
| 532 | # CONFIG_MTD_CONCAT is not set | ||
| 533 | CONFIG_MTD_PARTITIONS=y | ||
| 534 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 535 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 536 | CONFIG_MTD_OF_PARTS=y | ||
| 537 | # CONFIG_MTD_AR7_PARTS is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # User Modules And Translation Layers | ||
| 541 | # | ||
| 542 | CONFIG_MTD_CHAR=y | ||
| 543 | CONFIG_MTD_BLKDEVS=y | ||
| 544 | CONFIG_MTD_BLOCK=y | ||
| 545 | CONFIG_FTL=y | ||
| 546 | # CONFIG_NFTL is not set | ||
| 547 | # CONFIG_INFTL is not set | ||
| 548 | # CONFIG_RFD_FTL is not set | ||
| 549 | # CONFIG_SSFDC is not set | ||
| 550 | # CONFIG_MTD_OOPS is not set | ||
| 551 | |||
| 552 | # | ||
| 553 | # RAM/ROM/Flash chip drivers | ||
| 554 | # | ||
| 555 | CONFIG_MTD_CFI=y | ||
| 556 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 557 | CONFIG_MTD_GEN_PROBE=y | ||
| 558 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
| 559 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 560 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 561 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 562 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 563 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 564 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 565 | CONFIG_MTD_CFI_I1=y | ||
| 566 | CONFIG_MTD_CFI_I2=y | ||
| 567 | # CONFIG_MTD_CFI_I4 is not set | ||
| 568 | # CONFIG_MTD_CFI_I8 is not set | ||
| 569 | CONFIG_MTD_CFI_INTELEXT=y | ||
| 570 | CONFIG_MTD_CFI_AMDSTD=y | ||
| 571 | # CONFIG_MTD_CFI_STAA is not set | ||
| 572 | CONFIG_MTD_CFI_UTIL=y | ||
| 573 | # CONFIG_MTD_RAM is not set | ||
| 574 | # CONFIG_MTD_ROM is not set | ||
| 575 | # CONFIG_MTD_ABSENT is not set | ||
| 576 | |||
| 577 | # | ||
| 578 | # Mapping drivers for chip access | ||
| 579 | # | ||
| 580 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 581 | # CONFIG_MTD_PHYSMAP is not set | ||
| 582 | CONFIG_MTD_PHYSMAP_OF=y | ||
| 583 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
| 584 | # CONFIG_MTD_PLATRAM is not set | ||
| 585 | |||
| 586 | # | ||
| 587 | # Self-contained MTD device drivers | ||
| 588 | # | ||
| 589 | # CONFIG_MTD_PMC551 is not set | ||
| 590 | # CONFIG_MTD_DATAFLASH is not set | ||
| 591 | # CONFIG_MTD_M25P80 is not set | ||
| 592 | CONFIG_MTD_FSL_M25P80=y | ||
| 593 | CONFIG_M25PXX_USE_FAST_READ=y | ||
| 594 | # CONFIG_MTD_SST25L is not set | ||
| 595 | # CONFIG_MTD_SLRAM is not set | ||
| 596 | # CONFIG_MTD_PHRAM is not set | ||
| 597 | # CONFIG_MTD_MTDRAM is not set | ||
| 598 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 599 | |||
| 600 | # | ||
| 601 | # Disk-On-Chip Device Drivers | ||
| 602 | # | ||
| 603 | # CONFIG_MTD_DOC2000 is not set | ||
| 604 | # CONFIG_MTD_DOC2001 is not set | ||
| 605 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 606 | CONFIG_MTD_NAND=y | ||
| 607 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
| 608 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
| 609 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
| 610 | CONFIG_MTD_NAND_IDS=y | ||
| 611 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 612 | # CONFIG_MTD_NAND_CAFE is not set | ||
| 613 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 614 | CONFIG_MTD_NAND_PLATFORM=y | ||
| 615 | # CONFIG_MTD_ALAUDA is not set | ||
| 616 | CONFIG_MTD_NAND_FSL_ELBC=y | ||
| 617 | CONFIG_MTD_NAND_FSL_IFC=y | ||
| 618 | CONFIG_MTD_NAND_FSL_UPM=y | ||
| 619 | # CONFIG_MTD_ONENAND is not set | ||
| 620 | |||
| 621 | # | ||
| 622 | # LPDDR flash memory drivers | ||
| 623 | # | ||
| 624 | # CONFIG_MTD_LPDDR is not set | ||
| 625 | |||
| 626 | # | ||
| 627 | # UBI - Unsorted block images | ||
| 628 | # | ||
| 629 | CONFIG_MTD_UBI=y | ||
| 630 | CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||
| 631 | CONFIG_MTD_UBI_BEB_RESERVE=1 | ||
| 632 | # CONFIG_MTD_UBI_GLUEBI is not set | ||
| 633 | |||
| 634 | # | ||
| 635 | # UBI debugging options | ||
| 636 | # | ||
| 637 | # CONFIG_MTD_UBI_DEBUG is not set | ||
| 638 | CONFIG_OF_DEVICE=y | ||
| 639 | CONFIG_OF_GPIO=y | ||
| 640 | CONFIG_OF_I2C=y | ||
| 641 | CONFIG_OF_SPI=y | ||
| 642 | CONFIG_OF_MDIO=y | ||
| 643 | # CONFIG_PARPORT is not set | ||
| 644 | CONFIG_BLK_DEV=y | ||
| 645 | # CONFIG_BLK_DEV_FD is not set | ||
| 646 | # CONFIG_BLK_CPQ_DA is not set | ||
| 647 | # CONFIG_BLK_CPQ_CISS_DA is not set | ||
| 648 | # CONFIG_BLK_DEV_DAC960 is not set | ||
| 649 | # CONFIG_BLK_DEV_UMEM is not set | ||
| 650 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 651 | CONFIG_BLK_DEV_LOOP=y | ||
| 652 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 653 | |||
| 654 | # | ||
| 655 | # DRBD disabled because PROC_FS, INET or CONNECTOR not selected | ||
| 656 | # | ||
| 657 | # CONFIG_BLK_DEV_NBD is not set | ||
| 658 | # CONFIG_BLK_DEV_SX8 is not set | ||
| 659 | # CONFIG_BLK_DEV_UB is not set | ||
| 660 | CONFIG_BLK_DEV_RAM=y | ||
| 661 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 662 | CONFIG_BLK_DEV_RAM_SIZE=131072 | ||
| 663 | # CONFIG_BLK_DEV_XIP is not set | ||
| 664 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 665 | # CONFIG_ATA_OVER_ETH is not set | ||
| 666 | # CONFIG_BLK_DEV_HD is not set | ||
| 667 | CONFIG_MISC_DEVICES=y | ||
| 668 | # CONFIG_AD525X_DPOT is not set | ||
| 669 | # CONFIG_PHANTOM is not set | ||
| 670 | # CONFIG_SGI_IOC4 is not set | ||
| 671 | # CONFIG_TIFM_CORE is not set | ||
| 672 | # CONFIG_ICS932S401 is not set | ||
| 673 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
| 674 | # CONFIG_HP_ILO is not set | ||
| 675 | # CONFIG_ISL29003 is not set | ||
| 676 | # CONFIG_DS1682 is not set | ||
| 677 | # CONFIG_TI_DAC7512 is not set | ||
| 678 | # CONFIG_C2PORT is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # EEPROM support | ||
| 682 | # | ||
| 683 | # CONFIG_EEPROM_AT24 is not set | ||
| 684 | # CONFIG_EEPROM_AT25 is not set | ||
| 685 | # CONFIG_EEPROM_LEGACY is not set | ||
| 686 | # CONFIG_EEPROM_MAX6875 is not set | ||
| 687 | # CONFIG_EEPROM_93CX6 is not set | ||
| 688 | # CONFIG_CB710_CORE is not set | ||
| 689 | # CONFIG_IWMC3200TOP is not set | ||
| 690 | # CONFIG_FSL_PME is not set | ||
| 691 | CONFIG_BSC9131_HET_IPC=y | ||
| 692 | CONFIG_BSC9131_HET_MGR=y | ||
| 693 | CONFIG_FSL_HUGEPAGE_SHM=y | ||
| 694 | # CONFIG_FSL_PWM is not set | ||
| 695 | CONFIG_HAVE_IDE=y | ||
| 696 | # CONFIG_IDE is not set | ||
| 697 | |||
| 698 | # | ||
| 699 | # SCSI device support | ||
| 700 | # | ||
| 701 | # CONFIG_RAID_ATTRS is not set | ||
| 702 | CONFIG_SCSI=y | ||
| 703 | CONFIG_SCSI_DMA=y | ||
| 704 | # CONFIG_SCSI_TGT is not set | ||
| 705 | # CONFIG_SCSI_NETLINK is not set | ||
| 706 | CONFIG_SCSI_PROC_FS=y | ||
| 707 | |||
| 708 | # | ||
| 709 | # SCSI support type (disk, tape, CD-ROM) | ||
| 710 | # | ||
| 711 | CONFIG_BLK_DEV_SD=y | ||
| 712 | CONFIG_CHR_DEV_ST=y | ||
| 713 | # CONFIG_CHR_DEV_OSST is not set | ||
| 714 | CONFIG_BLK_DEV_SR=y | ||
| 715 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
| 716 | CONFIG_CHR_DEV_SG=y | ||
| 717 | # CONFIG_CHR_DEV_SCH is not set | ||
| 718 | CONFIG_SCSI_MULTI_LUN=y | ||
| 719 | # CONFIG_SCSI_CONSTANTS is not set | ||
| 720 | CONFIG_SCSI_LOGGING=y | ||
| 721 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
| 722 | CONFIG_SCSI_WAIT_SCAN=m | ||
| 723 | |||
| 724 | # | ||
| 725 | # SCSI Transports | ||
| 726 | # | ||
| 727 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 728 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 729 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 730 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
| 731 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
| 732 | CONFIG_SCSI_LOWLEVEL=y | ||
| 733 | # CONFIG_ISCSI_TCP is not set | ||
| 734 | # CONFIG_SCSI_BNX2_ISCSI is not set | ||
| 735 | # CONFIG_BE2ISCSI is not set | ||
| 736 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
| 737 | # CONFIG_SCSI_HPSA is not set | ||
| 738 | # CONFIG_SCSI_3W_9XXX is not set | ||
| 739 | # CONFIG_SCSI_3W_SAS is not set | ||
| 740 | # CONFIG_SCSI_ACARD is not set | ||
| 741 | # CONFIG_SCSI_AACRAID is not set | ||
| 742 | # CONFIG_SCSI_AIC7XXX is not set | ||
| 743 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
| 744 | # CONFIG_SCSI_AIC79XX is not set | ||
| 745 | # CONFIG_SCSI_AIC94XX is not set | ||
| 746 | # CONFIG_SCSI_MVSAS is not set | ||
| 747 | # CONFIG_SCSI_DPT_I2O is not set | ||
| 748 | # CONFIG_SCSI_ADVANSYS is not set | ||
| 749 | # CONFIG_SCSI_ARCMSR is not set | ||
| 750 | # CONFIG_MEGARAID_NEWGEN is not set | ||
| 751 | # CONFIG_MEGARAID_LEGACY is not set | ||
| 752 | # CONFIG_MEGARAID_SAS is not set | ||
| 753 | # CONFIG_SCSI_MPT2SAS is not set | ||
| 754 | # CONFIG_SCSI_HPTIOP is not set | ||
| 755 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 756 | # CONFIG_LIBFC is not set | ||
| 757 | # CONFIG_LIBFCOE is not set | ||
| 758 | # CONFIG_FCOE is not set | ||
| 759 | # CONFIG_SCSI_DMX3191D is not set | ||
| 760 | # CONFIG_SCSI_EATA is not set | ||
| 761 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
| 762 | # CONFIG_SCSI_GDTH is not set | ||
| 763 | # CONFIG_SCSI_IPS is not set | ||
| 764 | # CONFIG_SCSI_INITIO is not set | ||
| 765 | # CONFIG_SCSI_INIA100 is not set | ||
| 766 | # CONFIG_SCSI_STEX is not set | ||
| 767 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
| 768 | # CONFIG_SCSI_IPR is not set | ||
| 769 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
| 770 | # CONFIG_SCSI_QLA_FC is not set | ||
| 771 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
| 772 | # CONFIG_SCSI_LPFC is not set | ||
| 773 | # CONFIG_SCSI_DC395x is not set | ||
| 774 | # CONFIG_SCSI_DC390T is not set | ||
| 775 | # CONFIG_SCSI_NSP32 is not set | ||
| 776 | # CONFIG_SCSI_DEBUG is not set | ||
| 777 | # CONFIG_SCSI_PMCRAID is not set | ||
| 778 | # CONFIG_SCSI_PM8001 is not set | ||
| 779 | # CONFIG_SCSI_SRP is not set | ||
| 780 | # CONFIG_SCSI_BFA_FC is not set | ||
| 781 | # CONFIG_SCSI_DH is not set | ||
| 782 | # CONFIG_SCSI_OSD_INITIATOR is not set | ||
| 783 | CONFIG_ATA=y | ||
| 784 | # CONFIG_ATA_NONSTANDARD is not set | ||
| 785 | CONFIG_ATA_VERBOSE_ERROR=y | ||
| 786 | CONFIG_SATA_PMP=y | ||
| 787 | CONFIG_SATA_AHCI=y | ||
| 788 | CONFIG_SATA_SIL24=y | ||
| 789 | CONFIG_SATA_FSL=y | ||
| 790 | CONFIG_ATA_SFF=y | ||
| 791 | # CONFIG_SATA_SVW is not set | ||
| 792 | # CONFIG_ATA_PIIX is not set | ||
| 793 | # CONFIG_SATA_MV is not set | ||
| 794 | # CONFIG_SATA_NV is not set | ||
| 795 | # CONFIG_PDC_ADMA is not set | ||
| 796 | # CONFIG_SATA_QSTOR is not set | ||
| 797 | # CONFIG_SATA_PROMISE is not set | ||
| 798 | # CONFIG_SATA_SX4 is not set | ||
| 799 | # CONFIG_SATA_SIL is not set | ||
| 800 | # CONFIG_SATA_SIS is not set | ||
| 801 | # CONFIG_SATA_ULI is not set | ||
| 802 | # CONFIG_SATA_VIA is not set | ||
| 803 | # CONFIG_SATA_VITESSE is not set | ||
| 804 | # CONFIG_SATA_INIC162X is not set | ||
| 805 | # CONFIG_PATA_ALI is not set | ||
| 806 | # CONFIG_PATA_AMD is not set | ||
| 807 | # CONFIG_PATA_ARTOP is not set | ||
| 808 | # CONFIG_PATA_ATP867X is not set | ||
| 809 | # CONFIG_PATA_ATIIXP is not set | ||
| 810 | # CONFIG_PATA_CMD640_PCI is not set | ||
| 811 | # CONFIG_PATA_CMD64X is not set | ||
| 812 | # CONFIG_PATA_CS5520 is not set | ||
| 813 | # CONFIG_PATA_CS5530 is not set | ||
| 814 | # CONFIG_PATA_CYPRESS is not set | ||
| 815 | # CONFIG_PATA_EFAR is not set | ||
| 816 | # CONFIG_ATA_GENERIC is not set | ||
| 817 | # CONFIG_PATA_HPT366 is not set | ||
| 818 | # CONFIG_PATA_HPT37X is not set | ||
| 819 | # CONFIG_PATA_HPT3X2N is not set | ||
| 820 | # CONFIG_PATA_HPT3X3 is not set | ||
| 821 | # CONFIG_PATA_IT821X is not set | ||
| 822 | # CONFIG_PATA_IT8213 is not set | ||
| 823 | # CONFIG_PATA_JMICRON is not set | ||
| 824 | # CONFIG_PATA_TRIFLEX is not set | ||
| 825 | # CONFIG_PATA_MARVELL is not set | ||
| 826 | # CONFIG_PATA_MPIIX is not set | ||
| 827 | # CONFIG_PATA_OLDPIIX is not set | ||
| 828 | # CONFIG_PATA_NETCELL is not set | ||
| 829 | # CONFIG_PATA_NINJA32 is not set | ||
| 830 | # CONFIG_PATA_NS87410 is not set | ||
| 831 | # CONFIG_PATA_NS87415 is not set | ||
| 832 | # CONFIG_PATA_OPTI is not set | ||
| 833 | # CONFIG_PATA_OPTIDMA is not set | ||
| 834 | # CONFIG_PATA_PDC2027X is not set | ||
| 835 | # CONFIG_PATA_PDC_OLD is not set | ||
| 836 | # CONFIG_PATA_RADISYS is not set | ||
| 837 | # CONFIG_PATA_RDC is not set | ||
| 838 | # CONFIG_PATA_RZ1000 is not set | ||
| 839 | # CONFIG_PATA_SC1200 is not set | ||
| 840 | # CONFIG_PATA_SERVERWORKS is not set | ||
| 841 | # CONFIG_PATA_SIL680 is not set | ||
| 842 | # CONFIG_PATA_SIS is not set | ||
| 843 | # CONFIG_PATA_TOSHIBA is not set | ||
| 844 | # CONFIG_PATA_VIA is not set | ||
| 845 | # CONFIG_PATA_WINBOND is not set | ||
| 846 | # CONFIG_PATA_PLATFORM is not set | ||
| 847 | # CONFIG_PATA_SCH is not set | ||
| 848 | CONFIG_MD=y | ||
| 849 | CONFIG_BLK_DEV_MD=y | ||
| 850 | # CONFIG_MD_AUTODETECT is not set | ||
| 851 | # CONFIG_MD_LINEAR is not set | ||
| 852 | # CONFIG_MD_RAID0 is not set | ||
| 853 | # CONFIG_MD_RAID1 is not set | ||
| 854 | # CONFIG_MD_RAID10 is not set | ||
| 855 | CONFIG_MD_RAID456=y | ||
| 856 | CONFIG_MD_RAID6_PQ=y | ||
| 857 | # CONFIG_ASYNC_RAID6_TEST is not set | ||
| 858 | # CONFIG_MD_MULTIPATH is not set | ||
| 859 | # CONFIG_MD_FAULTY is not set | ||
| 860 | # CONFIG_BLK_DEV_DM is not set | ||
| 861 | # CONFIG_FUSION is not set | ||
| 862 | |||
| 863 | # | ||
| 864 | # IEEE 1394 (FireWire) support | ||
| 865 | # | ||
| 866 | |||
| 867 | # | ||
| 868 | # You can enable one or both FireWire driver stacks. | ||
| 869 | # | ||
| 870 | |||
| 871 | # | ||
| 872 | # The newer stack is recommended. | ||
| 873 | # | ||
| 874 | # CONFIG_FIREWIRE is not set | ||
| 875 | # CONFIG_IEEE1394 is not set | ||
| 876 | # CONFIG_I2O is not set | ||
| 877 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
| 878 | CONFIG_NETDEVICES=y | ||
| 879 | # CONFIG_AS_FASTPATH is not set | ||
| 880 | CONFIG_DUMMY=y | ||
| 881 | # CONFIG_BONDING is not set | ||
| 882 | # CONFIG_MACVLAN is not set | ||
| 883 | # CONFIG_EQUALIZER is not set | ||
| 884 | # CONFIG_TUN is not set | ||
| 885 | # CONFIG_VETH is not set | ||
| 886 | |||
| 887 | # | ||
| 888 | # MPC85xx PCI agent mode driver | ||
| 889 | # | ||
| 890 | # CONFIG_CARDNET is not set | ||
| 891 | |||
| 892 | # | ||
| 893 | # MPC85xx board PCI demo driver | ||
| 894 | # | ||
| 895 | # CONFIG_BOARDNET is not set | ||
| 896 | # CONFIG_ARCNET is not set | ||
| 897 | CONFIG_PHYLIB=y | ||
| 898 | |||
| 899 | # | ||
| 900 | # MII PHY device drivers | ||
| 901 | # | ||
| 902 | # CONFIG_MARVELL_PHY is not set | ||
| 903 | # CONFIG_DAVICOM_PHY is not set | ||
| 904 | # CONFIG_QSEMI_PHY is not set | ||
| 905 | # CONFIG_LXT_PHY is not set | ||
| 906 | # CONFIG_CICADA_PHY is not set | ||
| 907 | CONFIG_VITESSE_PHY=y | ||
| 908 | # CONFIG_SMSC_PHY is not set | ||
| 909 | # CONFIG_BROADCOM_PHY is not set | ||
| 910 | # CONFIG_ICPLUS_PHY is not set | ||
| 911 | # CONFIG_REALTEK_PHY is not set | ||
| 912 | # CONFIG_NATIONAL_PHY is not set | ||
| 913 | # CONFIG_STE10XP is not set | ||
| 914 | # CONFIG_LSI_ET1011C_PHY is not set | ||
| 915 | CONFIG_FIXED_PHY=y | ||
| 916 | # CONFIG_MDIO_BITBANG is not set | ||
| 917 | CONFIG_NET_ETHERNET=y | ||
| 918 | CONFIG_MII=y | ||
| 919 | # CONFIG_HAPPYMEAL is not set | ||
| 920 | # CONFIG_SUNGEM is not set | ||
| 921 | # CONFIG_CASSINI is not set | ||
| 922 | # CONFIG_NET_VENDOR_3COM is not set | ||
| 923 | # CONFIG_ENC28J60 is not set | ||
| 924 | # CONFIG_ETHOC is not set | ||
| 925 | # CONFIG_DNET is not set | ||
| 926 | # CONFIG_NET_TULIP is not set | ||
| 927 | # CONFIG_HP100 is not set | ||
| 928 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
| 929 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
| 930 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
| 931 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
| 932 | # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set | ||
| 933 | # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set | ||
| 934 | # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set | ||
| 935 | # CONFIG_NET_PCI is not set | ||
| 936 | # CONFIG_B44 is not set | ||
| 937 | # CONFIG_KS8842 is not set | ||
| 938 | # CONFIG_KS8851 is not set | ||
| 939 | # CONFIG_KS8851_MLL is not set | ||
| 940 | # CONFIG_ATL2 is not set | ||
| 941 | # CONFIG_XILINX_EMACLITE is not set | ||
| 942 | CONFIG_NETDEV_1000=y | ||
| 943 | # CONFIG_ACENIC is not set | ||
| 944 | # CONFIG_DL2K is not set | ||
| 945 | # CONFIG_E1000 is not set | ||
| 946 | CONFIG_E1000E=y | ||
| 947 | # CONFIG_IP1000 is not set | ||
| 948 | # CONFIG_IGB is not set | ||
| 949 | # CONFIG_IGBVF is not set | ||
| 950 | # CONFIG_NS83820 is not set | ||
| 951 | # CONFIG_HAMACHI is not set | ||
| 952 | # CONFIG_YELLOWFIN is not set | ||
| 953 | # CONFIG_R8169 is not set | ||
| 954 | # CONFIG_SIS190 is not set | ||
| 955 | # CONFIG_SKGE is not set | ||
| 956 | # CONFIG_SKY2 is not set | ||
| 957 | # CONFIG_VIA_VELOCITY is not set | ||
| 958 | # CONFIG_TIGON3 is not set | ||
| 959 | # CONFIG_BNX2 is not set | ||
| 960 | # CONFIG_CNIC is not set | ||
| 961 | CONFIG_FSL_PQ_MDIO=y | ||
| 962 | CONFIG_GIANFAR=y | ||
| 963 | # CONFIG_TCP_FAST_ACK is not set | ||
| 964 | # CONFIG_GFAR_HW_TCP_RECEIVE_OFFLOAD is not set | ||
| 965 | CONFIG_GFAR_SKBUFF_RECYCLING=y | ||
| 966 | # CONFIG_RX_TX_BD_XNGE is not set | ||
| 967 | CONFIG_GIANFAR_TXNAPI=y | ||
| 968 | CONFIG_GIANFAR_L2SRAM=y | ||
| 969 | # CONFIG_GFAR_SW_VLAN is not set | ||
| 970 | # CONFIG_GIANFAR_SG_SUPPORT is not set | ||
| 971 | # CONFIG_NET_GIANFAR_FP is not set | ||
| 972 | # CONFIG_1588_MUX_eTSEC1 is not set | ||
| 973 | # CONFIG_1588_MUX_eTSEC2 is not set | ||
| 974 | # CONFIG_GFAR_SW_PKT_STEERING is not set | ||
| 975 | # CONFIG_MV643XX_ETH is not set | ||
| 976 | # CONFIG_QLA3XXX is not set | ||
| 977 | # CONFIG_ATL1 is not set | ||
| 978 | # CONFIG_ATL1E is not set | ||
| 979 | # CONFIG_ATL1C is not set | ||
| 980 | # CONFIG_JME is not set | ||
| 981 | # CONFIG_NETDEV_10000 is not set | ||
| 982 | # CONFIG_TR is not set | ||
| 983 | CONFIG_WLAN=y | ||
| 984 | # CONFIG_AIRO is not set | ||
| 985 | # CONFIG_ATMEL is not set | ||
| 986 | # CONFIG_PRISM54 is not set | ||
| 987 | # CONFIG_USB_ZD1201 is not set | ||
| 988 | # CONFIG_HOSTAP is not set | ||
| 989 | |||
| 990 | # | ||
| 991 | # Enable WiMAX (Networking options) to see the WiMAX drivers | ||
| 992 | # | ||
| 993 | |||
| 994 | # | ||
| 995 | # USB Network Adapters | ||
| 996 | # | ||
| 997 | # CONFIG_USB_CATC is not set | ||
| 998 | # CONFIG_USB_KAWETH is not set | ||
| 999 | # CONFIG_USB_PEGASUS is not set | ||
| 1000 | # CONFIG_USB_RTL8150 is not set | ||
| 1001 | # CONFIG_USB_USBNET is not set | ||
| 1002 | # CONFIG_WAN is not set | ||
| 1003 | # CONFIG_FDDI is not set | ||
| 1004 | # CONFIG_HIPPI is not set | ||
| 1005 | # CONFIG_PPP is not set | ||
| 1006 | # CONFIG_SLIP is not set | ||
| 1007 | # CONFIG_NET_FC is not set | ||
| 1008 | # CONFIG_NETCONSOLE is not set | ||
| 1009 | # CONFIG_NETPOLL is not set | ||
| 1010 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 1011 | # CONFIG_VMXNET3 is not set | ||
| 1012 | # CONFIG_ISDN is not set | ||
| 1013 | # CONFIG_PHONE is not set | ||
| 1014 | |||
| 1015 | # | ||
| 1016 | # Input device support | ||
| 1017 | # | ||
| 1018 | CONFIG_INPUT=y | ||
| 1019 | CONFIG_INPUT_FF_MEMLESS=m | ||
| 1020 | # CONFIG_INPUT_POLLDEV is not set | ||
| 1021 | # CONFIG_INPUT_SPARSEKMAP is not set | ||
| 1022 | |||
| 1023 | # | ||
| 1024 | # Userland interfaces | ||
| 1025 | # | ||
| 1026 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 1027 | # CONFIG_INPUT_JOYDEV is not set | ||
| 1028 | # CONFIG_INPUT_EVDEV is not set | ||
| 1029 | # CONFIG_INPUT_EVBUG is not set | ||
| 1030 | |||
| 1031 | # | ||
| 1032 | # Input Device Drivers | ||
| 1033 | # | ||
| 1034 | # CONFIG_INPUT_KEYBOARD is not set | ||
| 1035 | # CONFIG_INPUT_MOUSE is not set | ||
| 1036 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 1037 | # CONFIG_INPUT_TABLET is not set | ||
| 1038 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 1039 | # CONFIG_INPUT_MISC is not set | ||
| 1040 | |||
| 1041 | # | ||
| 1042 | # Hardware I/O ports | ||
| 1043 | # | ||
| 1044 | CONFIG_SERIO=y | ||
| 1045 | CONFIG_SERIO_I8042=y | ||
| 1046 | CONFIG_SERIO_SERPORT=y | ||
| 1047 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 1048 | CONFIG_SERIO_LIBPS2=y | ||
| 1049 | # CONFIG_SERIO_RAW is not set | ||
| 1050 | # CONFIG_SERIO_XILINX_XPS_PS2 is not set | ||
| 1051 | # CONFIG_SERIO_ALTERA_PS2 is not set | ||
| 1052 | # CONFIG_GAMEPORT is not set | ||
| 1053 | |||
| 1054 | # | ||
| 1055 | # Character devices | ||
| 1056 | # | ||
| 1057 | CONFIG_VT=y | ||
| 1058 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
| 1059 | CONFIG_VT_CONSOLE=y | ||
| 1060 | CONFIG_HW_CONSOLE=y | ||
| 1061 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
| 1062 | CONFIG_DEVKMEM=y | ||
| 1063 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 1064 | # CONFIG_NOZOMI is not set | ||
| 1065 | CONFIG_FSL_SIM=y | ||
| 1066 | |||
| 1067 | # | ||
| 1068 | # Serial drivers | ||
| 1069 | # | ||
| 1070 | CONFIG_SERIAL_8250=y | ||
| 1071 | CONFIG_SERIAL_8250_CONSOLE=y | ||
| 1072 | CONFIG_SERIAL_8250_PCI=y | ||
| 1073 | CONFIG_SERIAL_8250_NR_UARTS=2 | ||
| 1074 | CONFIG_SERIAL_8250_RUNTIME_UARTS=2 | ||
| 1075 | CONFIG_SERIAL_8250_EXTENDED=y | ||
| 1076 | CONFIG_SERIAL_8250_MANY_PORTS=y | ||
| 1077 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
| 1078 | CONFIG_SERIAL_8250_DETECT_IRQ=y | ||
| 1079 | CONFIG_SERIAL_8250_RSA=y | ||
| 1080 | |||
| 1081 | # | ||
| 1082 | # Non-8250 serial port support | ||
| 1083 | # | ||
| 1084 | # CONFIG_SERIAL_MAX3100 is not set | ||
| 1085 | # CONFIG_SERIAL_UARTLITE is not set | ||
| 1086 | CONFIG_SERIAL_CORE=y | ||
| 1087 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 1088 | # CONFIG_SERIAL_JSM is not set | ||
| 1089 | # CONFIG_SERIAL_OF_PLATFORM is not set | ||
| 1090 | # CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set | ||
| 1091 | CONFIG_UNIX98_PTYS=y | ||
| 1092 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | ||
| 1093 | CONFIG_LEGACY_PTYS=y | ||
| 1094 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 1095 | # CONFIG_HVC_UDBG is not set | ||
| 1096 | # CONFIG_IPMI_HANDLER is not set | ||
| 1097 | CONFIG_HW_RANDOM=y | ||
| 1098 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | ||
| 1099 | CONFIG_NVRAM=y | ||
| 1100 | # CONFIG_R3964 is not set | ||
| 1101 | # CONFIG_APPLICOM is not set | ||
| 1102 | # CONFIG_RAW_DRIVER is not set | ||
| 1103 | # CONFIG_TCG_TPM is not set | ||
| 1104 | CONFIG_DEVPORT=y | ||
| 1105 | CONFIG_I2C=y | ||
| 1106 | CONFIG_I2C_BOARDINFO=y | ||
| 1107 | CONFIG_I2C_COMPAT=y | ||
| 1108 | CONFIG_I2C_CHARDEV=y | ||
| 1109 | CONFIG_I2C_HELPER_AUTO=y | ||
| 1110 | |||
| 1111 | # | ||
| 1112 | # I2C Hardware Bus support | ||
| 1113 | # | ||
| 1114 | |||
| 1115 | # | ||
| 1116 | # PC SMBus host controller drivers | ||
| 1117 | # | ||
| 1118 | # CONFIG_I2C_ALI1535 is not set | ||
| 1119 | # CONFIG_I2C_ALI1563 is not set | ||
| 1120 | # CONFIG_I2C_ALI15X3 is not set | ||
| 1121 | # CONFIG_I2C_AMD756 is not set | ||
| 1122 | # CONFIG_I2C_AMD8111 is not set | ||
| 1123 | # CONFIG_I2C_I801 is not set | ||
| 1124 | # CONFIG_I2C_ISCH is not set | ||
| 1125 | # CONFIG_I2C_PIIX4 is not set | ||
| 1126 | # CONFIG_I2C_NFORCE2 is not set | ||
| 1127 | # CONFIG_I2C_SIS5595 is not set | ||
| 1128 | # CONFIG_I2C_SIS630 is not set | ||
| 1129 | # CONFIG_I2C_SIS96X is not set | ||
| 1130 | # CONFIG_I2C_VIA is not set | ||
| 1131 | # CONFIG_I2C_VIAPRO is not set | ||
| 1132 | |||
| 1133 | # | ||
| 1134 | # I2C system bus drivers (mostly embedded / system-on-chip) | ||
| 1135 | # | ||
| 1136 | # CONFIG_I2C_GPIO is not set | ||
| 1137 | CONFIG_I2C_MPC=y | ||
| 1138 | # CONFIG_I2C_OCORES is not set | ||
| 1139 | # CONFIG_I2C_SIMTEC is not set | ||
| 1140 | |||
| 1141 | # | ||
| 1142 | # External I2C/SMBus adapter drivers | ||
| 1143 | # | ||
| 1144 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 1145 | # CONFIG_I2C_TAOS_EVM is not set | ||
| 1146 | # CONFIG_I2C_TINY_USB is not set | ||
| 1147 | |||
| 1148 | # | ||
| 1149 | # Other I2C/SMBus bus drivers | ||
| 1150 | # | ||
| 1151 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
| 1152 | # CONFIG_I2C_STUB is not set | ||
| 1153 | |||
| 1154 | # | ||
| 1155 | # Miscellaneous I2C Chip support | ||
| 1156 | # | ||
| 1157 | # CONFIG_SENSORS_TSL2550 is not set | ||
| 1158 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 1159 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 1160 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 1161 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 1162 | CONFIG_SPI=y | ||
| 1163 | CONFIG_SPI_MASTER=y | ||
| 1164 | |||
| 1165 | # | ||
| 1166 | # SPI Master Controller Drivers | ||
| 1167 | # | ||
| 1168 | CONFIG_SPI_BITBANG=y | ||
| 1169 | # CONFIG_SPI_GPIO is not set | ||
| 1170 | # CONFIG_SPI_MPC8xxx is not set | ||
| 1171 | CONFIG_FSL_ESPI=y | ||
| 1172 | # CONFIG_SPI_XILINX is not set | ||
| 1173 | # CONFIG_SPI_DESIGNWARE is not set | ||
| 1174 | |||
| 1175 | # | ||
| 1176 | # SPI Protocol Masters | ||
| 1177 | # | ||
| 1178 | # CONFIG_SPI_SPIDEV is not set | ||
| 1179 | # CONFIG_SPI_TLE62X0 is not set | ||
| 1180 | |||
| 1181 | # | ||
| 1182 | # PPS support | ||
| 1183 | # | ||
| 1184 | # CONFIG_PPS is not set | ||
| 1185 | CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||
| 1186 | CONFIG_ARCH_REQUIRE_GPIOLIB=y | ||
| 1187 | CONFIG_GPIOLIB=y | ||
| 1188 | # CONFIG_GPIO_SYSFS is not set | ||
| 1189 | |||
| 1190 | # | ||
| 1191 | # Memory mapped GPIO expanders: | ||
| 1192 | # | ||
| 1193 | # CONFIG_GPIO_XILINX is not set | ||
| 1194 | |||
| 1195 | # | ||
| 1196 | # I2C GPIO expanders: | ||
| 1197 | # | ||
| 1198 | # CONFIG_GPIO_MAX732X is not set | ||
| 1199 | # CONFIG_GPIO_PCA953X is not set | ||
| 1200 | # CONFIG_GPIO_PCF857X is not set | ||
| 1201 | # CONFIG_GPIO_ADP5588 is not set | ||
| 1202 | |||
| 1203 | # | ||
| 1204 | # PCI GPIO expanders: | ||
| 1205 | # | ||
| 1206 | # CONFIG_GPIO_CS5535 is not set | ||
| 1207 | # CONFIG_GPIO_BT8XX is not set | ||
| 1208 | # CONFIG_GPIO_LANGWELL is not set | ||
| 1209 | |||
| 1210 | # | ||
| 1211 | # SPI GPIO expanders: | ||
| 1212 | # | ||
| 1213 | # CONFIG_GPIO_MAX7301 is not set | ||
| 1214 | # CONFIG_GPIO_MCP23S08 is not set | ||
| 1215 | # CONFIG_GPIO_MC33880 is not set | ||
| 1216 | |||
| 1217 | # | ||
| 1218 | # AC97 GPIO expanders: | ||
| 1219 | # | ||
| 1220 | # CONFIG_W1 is not set | ||
| 1221 | # CONFIG_POWER_SUPPLY is not set | ||
| 1222 | # CONFIG_HWMON is not set | ||
| 1223 | # CONFIG_THERMAL is not set | ||
| 1224 | CONFIG_WATCHDOG=y | ||
| 1225 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
| 1226 | |||
| 1227 | # | ||
| 1228 | # Watchdog Device Drivers | ||
| 1229 | # | ||
| 1230 | # CONFIG_SOFT_WATCHDOG is not set | ||
| 1231 | # CONFIG_ALIM7101_WDT is not set | ||
| 1232 | CONFIG_BOOKE_WDT=y | ||
| 1233 | CONFIG_BOOKE_WDT_TESTER=m | ||
| 1234 | |||
| 1235 | # | ||
| 1236 | # PCI-based Watchdog Cards | ||
| 1237 | # | ||
| 1238 | # CONFIG_PCIPCWATCHDOG is not set | ||
| 1239 | # CONFIG_WDTPCI is not set | ||
| 1240 | |||
| 1241 | # | ||
| 1242 | # USB-based Watchdog Cards | ||
| 1243 | # | ||
| 1244 | # CONFIG_USBPCWATCHDOG is not set | ||
| 1245 | CONFIG_SSB_POSSIBLE=y | ||
| 1246 | |||
| 1247 | # | ||
| 1248 | # Sonics Silicon Backplane | ||
| 1249 | # | ||
| 1250 | # CONFIG_SSB is not set | ||
| 1251 | |||
| 1252 | # | ||
| 1253 | # Multifunction device drivers | ||
| 1254 | # | ||
| 1255 | # CONFIG_MFD_CORE is not set | ||
| 1256 | # CONFIG_MFD_SM501 is not set | ||
| 1257 | # CONFIG_HTC_PASIC3 is not set | ||
| 1258 | # CONFIG_TPS65010 is not set | ||
| 1259 | # CONFIG_TWL4030_CORE is not set | ||
| 1260 | # CONFIG_MFD_TMIO is not set | ||
| 1261 | # CONFIG_PMIC_DA903X is not set | ||
| 1262 | # CONFIG_PMIC_ADP5520 is not set | ||
| 1263 | # CONFIG_MFD_WM8400 is not set | ||
| 1264 | # CONFIG_MFD_WM831X is not set | ||
| 1265 | # CONFIG_MFD_WM8350_I2C is not set | ||
| 1266 | # CONFIG_MFD_PCF50633 is not set | ||
| 1267 | # CONFIG_MFD_MC13783 is not set | ||
| 1268 | # CONFIG_AB3100_CORE is not set | ||
| 1269 | # CONFIG_EZX_PCAP is not set | ||
| 1270 | # CONFIG_MFD_88PM8607 is not set | ||
| 1271 | # CONFIG_AB4500_CORE is not set | ||
| 1272 | # CONFIG_REGULATOR is not set | ||
| 1273 | # CONFIG_MEDIA_SUPPORT is not set | ||
| 1274 | |||
| 1275 | # | ||
| 1276 | # Graphics support | ||
| 1277 | # | ||
| 1278 | # CONFIG_AGP is not set | ||
| 1279 | CONFIG_VGA_ARB=y | ||
| 1280 | # CONFIG_DRM is not set | ||
| 1281 | # CONFIG_VGASTATE is not set | ||
| 1282 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
| 1283 | # CONFIG_FB is not set | ||
| 1284 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 1285 | |||
| 1286 | # | ||
| 1287 | # Display device support | ||
| 1288 | # | ||
| 1289 | # CONFIG_DISPLAY_SUPPORT is not set | ||
| 1290 | |||
| 1291 | # | ||
| 1292 | # Console display driver support | ||
| 1293 | # | ||
| 1294 | CONFIG_VGA_CONSOLE=y | ||
| 1295 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
| 1296 | CONFIG_DUMMY_CONSOLE=y | ||
| 1297 | # CONFIG_SOUND is not set | ||
| 1298 | # CONFIG_HID_SUPPORT is not set | ||
| 1299 | CONFIG_USB_SUPPORT=y | ||
| 1300 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 1301 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 1302 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
| 1303 | CONFIG_USB=y | ||
| 1304 | # CONFIG_USB_DEBUG is not set | ||
| 1305 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
| 1306 | |||
| 1307 | # | ||
| 1308 | # Miscellaneous USB options | ||
| 1309 | # | ||
| 1310 | CONFIG_USB_DEVICEFS=y | ||
| 1311 | # CONFIG_USB_DEVICE_CLASS is not set | ||
| 1312 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 1313 | # CONFIG_USB_SUSPEND is not set | ||
| 1314 | # CONFIG_USB_OTG is not set | ||
| 1315 | # CONFIG_USB_OTG_WHITELIST is not set | ||
| 1316 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
| 1317 | # CONFIG_USB_MON is not set | ||
| 1318 | # CONFIG_USB_WUSB is not set | ||
| 1319 | # CONFIG_USB_WUSB_CBAF is not set | ||
| 1320 | |||
| 1321 | # | ||
| 1322 | # USB Host Controller Drivers | ||
| 1323 | # | ||
| 1324 | # CONFIG_USB_C67X00_HCD is not set | ||
| 1325 | # CONFIG_USB_XHCI_HCD is not set | ||
| 1326 | CONFIG_USB_EHCI_HCD=y | ||
| 1327 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
| 1328 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
| 1329 | # CONFIG_XPS_USB_HCD_XILINX is not set | ||
| 1330 | CONFIG_USB_EHCI_FSL=y | ||
| 1331 | CONFIG_USB_EHCI_HCD_PPC_OF=y | ||
| 1332 | # CONFIG_USB_OXU210HP_HCD is not set | ||
| 1333 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 1334 | # CONFIG_USB_ISP1760_HCD is not set | ||
| 1335 | # CONFIG_USB_ISP1362_HCD is not set | ||
| 1336 | CONFIG_USB_OHCI_HCD=y | ||
| 1337 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | ||
| 1338 | CONFIG_USB_OHCI_HCD_PPC_OF_LE=y | ||
| 1339 | CONFIG_USB_OHCI_HCD_PPC_OF=y | ||
| 1340 | CONFIG_USB_OHCI_HCD_PCI=y | ||
| 1341 | CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y | ||
| 1342 | CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | ||
| 1343 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 1344 | # CONFIG_USB_UHCI_HCD is not set | ||
| 1345 | # CONFIG_USB_SL811_HCD is not set | ||
| 1346 | # CONFIG_USB_R8A66597_HCD is not set | ||
| 1347 | # CONFIG_USB_WHCI_HCD is not set | ||
| 1348 | # CONFIG_USB_HWA_HCD is not set | ||
| 1349 | |||
| 1350 | # | ||
| 1351 | # USB Device Class drivers | ||
| 1352 | # | ||
| 1353 | # CONFIG_USB_ACM is not set | ||
| 1354 | # CONFIG_USB_PRINTER is not set | ||
| 1355 | # CONFIG_USB_WDM is not set | ||
| 1356 | # CONFIG_USB_TMC is not set | ||
| 1357 | |||
| 1358 | # | ||
| 1359 | # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may | ||
| 1360 | # | ||
| 1361 | |||
| 1362 | # | ||
| 1363 | # also be needed; see USB_STORAGE Help for more info | ||
| 1364 | # | ||
| 1365 | CONFIG_USB_STORAGE=y | ||
| 1366 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 1367 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 1368 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 1369 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 1370 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 1371 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 1372 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 1373 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 1374 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
| 1375 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 1376 | # CONFIG_USB_STORAGE_KARMA is not set | ||
| 1377 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
| 1378 | # CONFIG_USB_LIBUSUAL is not set | ||
| 1379 | |||
| 1380 | # | ||
| 1381 | # USB Imaging devices | ||
| 1382 | # | ||
| 1383 | # CONFIG_USB_MDC800 is not set | ||
| 1384 | # CONFIG_USB_MICROTEK is not set | ||
| 1385 | |||
| 1386 | # | ||
| 1387 | # USB port drivers | ||
| 1388 | # | ||
| 1389 | # CONFIG_FSL_USB_OTG is not set | ||
| 1390 | # CONFIG_USB_SERIAL is not set | ||
| 1391 | |||
| 1392 | # | ||
| 1393 | # USB Miscellaneous drivers | ||
| 1394 | # | ||
| 1395 | # CONFIG_USB_EMI62 is not set | ||
| 1396 | # CONFIG_USB_EMI26 is not set | ||
| 1397 | # CONFIG_USB_ADUTUX is not set | ||
| 1398 | # CONFIG_USB_SEVSEG is not set | ||
| 1399 | # CONFIG_USB_RIO500 is not set | ||
| 1400 | # CONFIG_USB_LEGOTOWER is not set | ||
| 1401 | # CONFIG_USB_LCD is not set | ||
| 1402 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1403 | # CONFIG_USB_LED is not set | ||
| 1404 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
| 1405 | # CONFIG_USB_CYTHERM is not set | ||
| 1406 | # CONFIG_USB_IDMOUSE is not set | ||
| 1407 | # CONFIG_USB_FTDI_ELAN is not set | ||
| 1408 | # CONFIG_USB_APPLEDISPLAY is not set | ||
| 1409 | # CONFIG_USB_SISUSBVGA is not set | ||
| 1410 | # CONFIG_USB_LD is not set | ||
| 1411 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
| 1412 | # CONFIG_USB_IOWARRIOR is not set | ||
| 1413 | # CONFIG_USB_TEST is not set | ||
| 1414 | # CONFIG_USB_ISIGHTFW is not set | ||
| 1415 | # CONFIG_USB_VST is not set | ||
| 1416 | # CONFIG_USB_GADGET is not set | ||
| 1417 | |||
| 1418 | # | ||
| 1419 | # OTG and related infrastructure | ||
| 1420 | # | ||
| 1421 | # CONFIG_USB_GPIO_VBUS is not set | ||
| 1422 | # CONFIG_NOP_USB_XCEIV is not set | ||
| 1423 | # CONFIG_UWB is not set | ||
| 1424 | CONFIG_MMC=y | ||
| 1425 | # CONFIG_MMC_DEBUG is not set | ||
| 1426 | CONFIG_MMC_UNSAFE_RESUME=y | ||
| 1427 | |||
| 1428 | # | ||
| 1429 | # MMC/SD/SDIO Card Drivers | ||
| 1430 | # | ||
| 1431 | CONFIG_MMC_BLOCK=y | ||
| 1432 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
| 1433 | # CONFIG_SDIO_UART is not set | ||
| 1434 | # CONFIG_MMC_TEST is not set | ||
| 1435 | |||
| 1436 | # | ||
| 1437 | # MMC/SD/SDIO Host Controller Drivers | ||
| 1438 | # | ||
| 1439 | CONFIG_MMC_SDHCI=y | ||
| 1440 | CONFIG_MMC_SDHCI_IO_ACCESSORS=y | ||
| 1441 | CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=y | ||
| 1442 | # CONFIG_MMC_SDHCI_PCI is not set | ||
| 1443 | CONFIG_MMC_SDHCI_OF=y | ||
| 1444 | CONFIG_MMC_SDHCI_OF_ESDHC=y | ||
| 1445 | # CONFIG_MMC_SDHCI_OF_HLWD is not set | ||
| 1446 | CONFIG_MMC_SDHCI_PLTFM=y | ||
| 1447 | # CONFIG_MMC_WBSD is not set | ||
| 1448 | # CONFIG_MMC_AT91 is not set | ||
| 1449 | # CONFIG_MMC_ATMELMCI is not set | ||
| 1450 | # CONFIG_MMC_TIFM_SD is not set | ||
| 1451 | # CONFIG_MMC_CB710 is not set | ||
| 1452 | # CONFIG_MMC_VIA_SDMMC is not set | ||
| 1453 | # CONFIG_MEMSTICK is not set | ||
| 1454 | # CONFIG_NEW_LEDS is not set | ||
| 1455 | # CONFIG_ACCESSIBILITY is not set | ||
| 1456 | # CONFIG_INFINIBAND is not set | ||
| 1457 | # CONFIG_EDAC is not set | ||
| 1458 | CONFIG_RTC_LIB=y | ||
| 1459 | CONFIG_RTC_CLASS=y | ||
| 1460 | CONFIG_RTC_HCTOSYS=y | ||
| 1461 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
| 1462 | # CONFIG_RTC_DEBUG is not set | ||
| 1463 | |||
| 1464 | # | ||
| 1465 | # RTC interfaces | ||
| 1466 | # | ||
| 1467 | CONFIG_RTC_INTF_SYSFS=y | ||
| 1468 | CONFIG_RTC_INTF_PROC=y | ||
| 1469 | CONFIG_RTC_INTF_DEV=y | ||
| 1470 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
| 1471 | # CONFIG_RTC_DRV_TEST is not set | ||
| 1472 | |||
| 1473 | # | ||
| 1474 | # I2C RTC drivers | ||
| 1475 | # | ||
| 1476 | CONFIG_RTC_DRV_DS1307=y | ||
| 1477 | # CONFIG_RTC_DRV_DS1374 is not set | ||
| 1478 | # CONFIG_RTC_DRV_DS1672 is not set | ||
| 1479 | CONFIG_RTC_DRV_DS3232=y | ||
| 1480 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
| 1481 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
| 1482 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
| 1483 | # CONFIG_RTC_DRV_X1205 is not set | ||
| 1484 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
| 1485 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
| 1486 | # CONFIG_RTC_DRV_M41T80 is not set | ||
| 1487 | # CONFIG_RTC_DRV_BQ32K is not set | ||
| 1488 | # CONFIG_RTC_DRV_S35390A is not set | ||
| 1489 | # CONFIG_RTC_DRV_FM3130 is not set | ||
| 1490 | # CONFIG_RTC_DRV_RX8581 is not set | ||
| 1491 | # CONFIG_RTC_DRV_RX8025 is not set | ||
| 1492 | CONFIG_RTC_DRV_PT7C4338=y | ||
| 1493 | |||
| 1494 | # | ||
| 1495 | # SPI RTC drivers | ||
| 1496 | # | ||
| 1497 | # CONFIG_RTC_DRV_M41T94 is not set | ||
| 1498 | # CONFIG_RTC_DRV_DS1305 is not set | ||
| 1499 | # CONFIG_RTC_DRV_DS1390 is not set | ||
| 1500 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
| 1501 | # CONFIG_RTC_DRV_R9701 is not set | ||
| 1502 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
| 1503 | # CONFIG_RTC_DRV_DS3234 is not set | ||
| 1504 | # CONFIG_RTC_DRV_PCF2123 is not set | ||
| 1505 | |||
| 1506 | # | ||
| 1507 | # Platform RTC drivers | ||
| 1508 | # | ||
| 1509 | CONFIG_RTC_DRV_CMOS=y | ||
| 1510 | # CONFIG_RTC_DRV_DS1286 is not set | ||
| 1511 | # CONFIG_RTC_DRV_DS1511 is not set | ||
| 1512 | # CONFIG_RTC_DRV_DS1553 is not set | ||
| 1513 | # CONFIG_RTC_DRV_DS1742 is not set | ||
| 1514 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
| 1515 | # CONFIG_RTC_DRV_M48T86 is not set | ||
| 1516 | # CONFIG_RTC_DRV_M48T35 is not set | ||
| 1517 | # CONFIG_RTC_DRV_M48T59 is not set | ||
| 1518 | # CONFIG_RTC_DRV_MSM6242 is not set | ||
| 1519 | # CONFIG_RTC_DRV_BQ4802 is not set | ||
| 1520 | # CONFIG_RTC_DRV_RP5C01 is not set | ||
| 1521 | # CONFIG_RTC_DRV_V3020 is not set | ||
| 1522 | |||
| 1523 | # | ||
| 1524 | # on-CPU RTC drivers | ||
| 1525 | # | ||
| 1526 | # CONFIG_RTC_DRV_GENERIC is not set | ||
| 1527 | CONFIG_DMADEVICES=y | ||
| 1528 | |||
| 1529 | # | ||
| 1530 | # DMA Devices | ||
| 1531 | # | ||
| 1532 | CONFIG_FSL_DMA=y | ||
| 1533 | CONFIG_DMA_ENGINE=y | ||
| 1534 | |||
| 1535 | # | ||
| 1536 | # DMA Clients | ||
| 1537 | # | ||
| 1538 | # CONFIG_NET_DMA is not set | ||
| 1539 | CONFIG_ASYNC_TX_DMA=y | ||
| 1540 | # CONFIG_DMATEST is not set | ||
| 1541 | # CONFIG_AUXDISPLAY is not set | ||
| 1542 | CONFIG_UIO=y | ||
| 1543 | # CONFIG_UIO_CIF is not set | ||
| 1544 | # CONFIG_UIO_PDRV is not set | ||
| 1545 | # CONFIG_UIO_PDRV_GENIRQ is not set | ||
| 1546 | # CONFIG_UIO_SMX is not set | ||
| 1547 | # CONFIG_UIO_AEC is not set | ||
| 1548 | # CONFIG_UIO_SERCOS3 is not set | ||
| 1549 | # CONFIG_UIO_PCI_GENERIC is not set | ||
| 1550 | # CONFIG_UIO_NETX is not set | ||
| 1551 | |||
| 1552 | # | ||
| 1553 | # TI VLYNQ | ||
| 1554 | # | ||
| 1555 | # CONFIG_STAGING is not set | ||
| 1556 | # CONFIG_TDM is not set | ||
| 1557 | CONFIG_RFDEVICES=y | ||
| 1558 | CONFIG_RFDEV_CORE=y | ||
| 1559 | CONFIG_FSL_AIC=y | ||
| 1560 | CONFIG_ADI9361=y | ||
| 1561 | # CONFIG_FSL_SWIM_EDC is not set | ||
| 1562 | |||
| 1563 | # | ||
| 1564 | # File systems | ||
| 1565 | # | ||
| 1566 | CONFIG_EXT2_FS=y | ||
| 1567 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 1568 | # CONFIG_EXT2_FS_XIP is not set | ||
| 1569 | CONFIG_EXT3_FS=y | ||
| 1570 | # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set | ||
| 1571 | CONFIG_EXT3_FS_XATTR=y | ||
| 1572 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
| 1573 | # CONFIG_EXT3_FS_SECURITY is not set | ||
| 1574 | # CONFIG_EXT4_FS is not set | ||
| 1575 | CONFIG_JBD=y | ||
| 1576 | CONFIG_FS_MBCACHE=y | ||
| 1577 | # CONFIG_REISERFS_FS is not set | ||
| 1578 | # CONFIG_JFS_FS is not set | ||
| 1579 | CONFIG_FS_POSIX_ACL=y | ||
| 1580 | CONFIG_XFS_FS=y | ||
| 1581 | # CONFIG_XFS_QUOTA is not set | ||
| 1582 | # CONFIG_XFS_POSIX_ACL is not set | ||
| 1583 | # CONFIG_XFS_RT is not set | ||
| 1584 | # CONFIG_XFS_DEBUG is not set | ||
| 1585 | # CONFIG_GFS2_FS is not set | ||
| 1586 | # CONFIG_OCFS2_FS is not set | ||
| 1587 | # CONFIG_BTRFS_FS is not set | ||
| 1588 | # CONFIG_NILFS2_FS is not set | ||
| 1589 | CONFIG_FILE_LOCKING=y | ||
| 1590 | # CONFIG_OPTIMIZE_SD_PERFORMANCE is not set | ||
| 1591 | # CONFIG_DELAY_ASYNC_READAHEAD is not set | ||
| 1592 | # CONFIG_SEND_PAGES is not set | ||
| 1593 | CONFIG_FSNOTIFY=y | ||
| 1594 | CONFIG_DNOTIFY=y | ||
| 1595 | CONFIG_INOTIFY=y | ||
| 1596 | CONFIG_INOTIFY_USER=y | ||
| 1597 | # CONFIG_QUOTA is not set | ||
| 1598 | # CONFIG_AUTOFS_FS is not set | ||
| 1599 | # CONFIG_AUTOFS4_FS is not set | ||
| 1600 | # CONFIG_FUSE_FS is not set | ||
| 1601 | |||
| 1602 | # | ||
| 1603 | # Caches | ||
| 1604 | # | ||
| 1605 | # CONFIG_FSCACHE is not set | ||
| 1606 | |||
| 1607 | # | ||
| 1608 | # CD-ROM/DVD Filesystems | ||
| 1609 | # | ||
| 1610 | CONFIG_ISO9660_FS=m | ||
| 1611 | CONFIG_JOLIET=y | ||
| 1612 | CONFIG_ZISOFS=y | ||
| 1613 | CONFIG_UDF_FS=m | ||
| 1614 | CONFIG_UDF_NLS=y | ||
| 1615 | |||
| 1616 | # | ||
| 1617 | # DOS/FAT/NT Filesystems | ||
| 1618 | # | ||
| 1619 | CONFIG_FAT_FS=y | ||
| 1620 | CONFIG_MSDOS_FS=m | ||
| 1621 | CONFIG_VFAT_FS=y | ||
| 1622 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1623 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1624 | CONFIG_NTFS_FS=y | ||
| 1625 | # CONFIG_NTFS_DEBUG is not set | ||
| 1626 | # CONFIG_NTFS_RW is not set | ||
| 1627 | |||
| 1628 | # | ||
| 1629 | # Pseudo filesystems | ||
| 1630 | # | ||
| 1631 | CONFIG_PROC_FS=y | ||
| 1632 | CONFIG_PROC_KCORE=y | ||
| 1633 | CONFIG_PROC_SYSCTL=y | ||
| 1634 | CONFIG_PROC_PAGE_MONITOR=y | ||
| 1635 | CONFIG_SYSFS=y | ||
| 1636 | CONFIG_TMPFS=y | ||
| 1637 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
| 1638 | CONFIG_HUGETLBFS=y | ||
| 1639 | CONFIG_HUGETLB_PAGE=y | ||
| 1640 | # CONFIG_CONFIGFS_FS is not set | ||
| 1641 | CONFIG_MISC_FILESYSTEMS=y | ||
| 1642 | # CONFIG_ADFS_FS is not set | ||
| 1643 | # CONFIG_AFFS_FS is not set | ||
| 1644 | # CONFIG_HFS_FS is not set | ||
| 1645 | # CONFIG_HFSPLUS_FS is not set | ||
| 1646 | # CONFIG_BEFS_FS is not set | ||
| 1647 | # CONFIG_BFS_FS is not set | ||
| 1648 | # CONFIG_EFS_FS is not set | ||
| 1649 | CONFIG_JFFS2_FS=y | ||
| 1650 | CONFIG_JFFS2_FS_DEBUG=1 | ||
| 1651 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1652 | CONFIG_JFFS2_FS_WBUF_VERIFY=y | ||
| 1653 | CONFIG_JFFS2_SUMMARY=y | ||
| 1654 | CONFIG_JFFS2_FS_XATTR=y | ||
| 1655 | CONFIG_JFFS2_FS_POSIX_ACL=y | ||
| 1656 | CONFIG_JFFS2_FS_SECURITY=y | ||
| 1657 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
| 1658 | CONFIG_JFFS2_ZLIB=y | ||
| 1659 | CONFIG_JFFS2_LZO=y | ||
| 1660 | CONFIG_JFFS2_RTIME=y | ||
| 1661 | CONFIG_JFFS2_RUBIN=y | ||
| 1662 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
| 1663 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
| 1664 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
| 1665 | # CONFIG_JFFS2_CMODE_FAVOURLZO is not set | ||
| 1666 | CONFIG_UBIFS_FS=y | ||
| 1667 | CONFIG_UBIFS_FS_XATTR=y | ||
| 1668 | # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set | ||
| 1669 | CONFIG_UBIFS_FS_LZO=y | ||
| 1670 | CONFIG_UBIFS_FS_ZLIB=y | ||
| 1671 | # CONFIG_UBIFS_FS_DEBUG is not set | ||
| 1672 | # CONFIG_CRAMFS is not set | ||
| 1673 | # CONFIG_SQUASHFS is not set | ||
| 1674 | # CONFIG_VXFS_FS is not set | ||
| 1675 | # CONFIG_MINIX_FS is not set | ||
| 1676 | # CONFIG_OMFS_FS is not set | ||
| 1677 | # CONFIG_HPFS_FS is not set | ||
| 1678 | # CONFIG_QNX4FS_FS is not set | ||
| 1679 | # CONFIG_ROMFS_FS is not set | ||
| 1680 | # CONFIG_SYSV_FS is not set | ||
| 1681 | # CONFIG_UFS_FS is not set | ||
| 1682 | CONFIG_NETWORK_FILESYSTEMS=y | ||
| 1683 | CONFIG_NFS_FS=y | ||
| 1684 | CONFIG_NFS_V3=y | ||
| 1685 | # CONFIG_NFS_V3_ACL is not set | ||
| 1686 | CONFIG_NFS_V4=y | ||
| 1687 | # CONFIG_NFS_V4_1 is not set | ||
| 1688 | CONFIG_ROOT_NFS=y | ||
| 1689 | CONFIG_NFSD=y | ||
| 1690 | # CONFIG_NFSD_V3 is not set | ||
| 1691 | # CONFIG_NFSD_V4 is not set | ||
| 1692 | CONFIG_LOCKD=y | ||
| 1693 | CONFIG_LOCKD_V4=y | ||
| 1694 | CONFIG_EXPORTFS=y | ||
| 1695 | CONFIG_NFS_COMMON=y | ||
| 1696 | CONFIG_SUNRPC=y | ||
| 1697 | CONFIG_SUNRPC_GSS=y | ||
| 1698 | CONFIG_RPCSEC_GSS_KRB5=y | ||
| 1699 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1700 | # CONFIG_SMB_FS is not set | ||
| 1701 | CONFIG_CIFS=y | ||
| 1702 | # CONFIG_CIFS_STATS is not set | ||
| 1703 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
| 1704 | # CONFIG_CIFS_XATTR is not set | ||
| 1705 | # CONFIG_CIFS_DEBUG2 is not set | ||
| 1706 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1707 | # CONFIG_NCP_FS is not set | ||
| 1708 | # CONFIG_CODA_FS is not set | ||
| 1709 | # CONFIG_AFS_FS is not set | ||
| 1710 | |||
| 1711 | # | ||
| 1712 | # Partition Types | ||
| 1713 | # | ||
| 1714 | CONFIG_PARTITION_ADVANCED=y | ||
| 1715 | # CONFIG_ACORN_PARTITION is not set | ||
| 1716 | # CONFIG_OSF_PARTITION is not set | ||
| 1717 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1718 | # CONFIG_ATARI_PARTITION is not set | ||
| 1719 | CONFIG_MAC_PARTITION=y | ||
| 1720 | CONFIG_MSDOS_PARTITION=y | ||
| 1721 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1722 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1723 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1724 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1725 | # CONFIG_LDM_PARTITION is not set | ||
| 1726 | # CONFIG_SGI_PARTITION is not set | ||
| 1727 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1728 | # CONFIG_SUN_PARTITION is not set | ||
| 1729 | # CONFIG_KARMA_PARTITION is not set | ||
| 1730 | # CONFIG_EFI_PARTITION is not set | ||
| 1731 | # CONFIG_SYSV68_PARTITION is not set | ||
| 1732 | CONFIG_NLS=y | ||
| 1733 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
| 1734 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1735 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1736 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1737 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1738 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1739 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1740 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1741 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1742 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1743 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1744 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1745 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1746 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1747 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1748 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1749 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1750 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1751 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1752 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1753 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1754 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1755 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1756 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1757 | # CONFIG_NLS_ASCII is not set | ||
| 1758 | CONFIG_NLS_ISO8859_1=y | ||
| 1759 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1760 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1761 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1762 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1763 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1764 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1765 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1766 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1767 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1768 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1769 | # CONFIG_NLS_KOI8_R is not set | ||
| 1770 | # CONFIG_NLS_KOI8_U is not set | ||
| 1771 | # CONFIG_NLS_UTF8 is not set | ||
| 1772 | # CONFIG_DLM is not set | ||
| 1773 | # CONFIG_BINARY_PRINTF is not set | ||
| 1774 | |||
| 1775 | # | ||
| 1776 | # Library routines | ||
| 1777 | # | ||
| 1778 | CONFIG_BITREVERSE=y | ||
| 1779 | CONFIG_GENERIC_FIND_LAST_BIT=y | ||
| 1780 | # CONFIG_CRC_CCITT is not set | ||
| 1781 | CONFIG_CRC16=y | ||
| 1782 | CONFIG_CRC_T10DIF=y | ||
| 1783 | CONFIG_CRC_ITU_T=m | ||
| 1784 | CONFIG_CRC32=y | ||
| 1785 | # CONFIG_CRC7 is not set | ||
| 1786 | # CONFIG_LIBCRC32C is not set | ||
| 1787 | CONFIG_ZLIB_INFLATE=y | ||
| 1788 | CONFIG_ZLIB_DEFLATE=y | ||
| 1789 | CONFIG_LZO_COMPRESS=y | ||
| 1790 | CONFIG_LZO_DECOMPRESS=y | ||
| 1791 | CONFIG_DECOMPRESS_GZIP=y | ||
| 1792 | CONFIG_HAS_IOMEM=y | ||
| 1793 | CONFIG_HAS_IOPORT=y | ||
| 1794 | CONFIG_HAS_DMA=y | ||
| 1795 | CONFIG_HAVE_LMB=y | ||
| 1796 | CONFIG_NLATTR=y | ||
| 1797 | CONFIG_GENERIC_ATOMIC64=y | ||
| 1798 | |||
| 1799 | # | ||
| 1800 | # Kernel hacking | ||
| 1801 | # | ||
| 1802 | # CONFIG_PRINTK_TIME is not set | ||
| 1803 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
| 1804 | CONFIG_ENABLE_MUST_CHECK=y | ||
| 1805 | CONFIG_FRAME_WARN=1024 | ||
| 1806 | # CONFIG_MAGIC_SYSRQ is not set | ||
| 1807 | # CONFIG_STRIP_ASM_SYMS is not set | ||
| 1808 | # CONFIG_UNUSED_SYMBOLS is not set | ||
| 1809 | # CONFIG_DEBUG_FS is not set | ||
| 1810 | # CONFIG_HEADERS_CHECK is not set | ||
| 1811 | # CONFIG_DEBUG_KERNEL is not set | ||
| 1812 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1813 | # CONFIG_DEBUG_MEMORY_INIT is not set | ||
| 1814 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
| 1815 | # CONFIG_LATENCYTOP is not set | ||
| 1816 | # CONFIG_SYSCTL_SYSCALL_CHECK is not set | ||
| 1817 | CONFIG_HAVE_FUNCTION_TRACER=y | ||
| 1818 | CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
| 1819 | CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
| 1820 | CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
| 1821 | CONFIG_TRACING_SUPPORT=y | ||
| 1822 | # CONFIG_FTRACE is not set | ||
| 1823 | # CONFIG_DMA_API_DEBUG is not set | ||
| 1824 | # CONFIG_SAMPLES is not set | ||
| 1825 | CONFIG_HAVE_ARCH_KGDB=y | ||
| 1826 | # CONFIG_PPC_DISABLE_WERROR is not set | ||
| 1827 | CONFIG_PPC_WERROR=y | ||
| 1828 | CONFIG_PRINT_STACK_DEPTH=64 | ||
| 1829 | # CONFIG_IRQSTACKS is not set | ||
| 1830 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
| 1831 | |||
| 1832 | # | ||
| 1833 | # Security options | ||
| 1834 | # | ||
| 1835 | # CONFIG_KEYS is not set | ||
| 1836 | # CONFIG_SECURITY is not set | ||
| 1837 | # CONFIG_SECURITYFS is not set | ||
| 1838 | # CONFIG_DEFAULT_SECURITY_SELINUX is not set | ||
| 1839 | # CONFIG_DEFAULT_SECURITY_SMACK is not set | ||
| 1840 | # CONFIG_DEFAULT_SECURITY_TOMOYO is not set | ||
| 1841 | CONFIG_DEFAULT_SECURITY_DAC=y | ||
| 1842 | CONFIG_DEFAULT_SECURITY="" | ||
| 1843 | CONFIG_XOR_BLOCKS=y | ||
| 1844 | CONFIG_ASYNC_CORE=y | ||
| 1845 | CONFIG_ASYNC_MEMCPY=y | ||
| 1846 | CONFIG_ASYNC_XOR=y | ||
| 1847 | CONFIG_ASYNC_PQ=y | ||
| 1848 | CONFIG_ASYNC_RAID6_RECOV=y | ||
| 1849 | CONFIG_CRYPTO=y | ||
| 1850 | |||
| 1851 | # | ||
| 1852 | # Crypto core or helper | ||
| 1853 | # | ||
| 1854 | CONFIG_CRYPTO_ALGAPI=y | ||
| 1855 | CONFIG_CRYPTO_ALGAPI2=y | ||
| 1856 | CONFIG_CRYPTO_AEAD=y | ||
| 1857 | CONFIG_CRYPTO_AEAD2=y | ||
| 1858 | CONFIG_CRYPTO_BLKCIPHER=y | ||
| 1859 | CONFIG_CRYPTO_BLKCIPHER2=y | ||
| 1860 | CONFIG_CRYPTO_HASH=y | ||
| 1861 | CONFIG_CRYPTO_HASH2=y | ||
| 1862 | CONFIG_CRYPTO_RNG2=y | ||
| 1863 | CONFIG_CRYPTO_PCOMP=y | ||
| 1864 | CONFIG_CRYPTO_MANAGER=y | ||
| 1865 | CONFIG_CRYPTO_MANAGER2=y | ||
| 1866 | # CONFIG_CRYPTO_GF128MUL is not set | ||
| 1867 | # CONFIG_CRYPTO_NULL is not set | ||
| 1868 | CONFIG_CRYPTO_WORKQUEUE=y | ||
| 1869 | # CONFIG_CRYPTO_CRYPTD is not set | ||
| 1870 | CONFIG_CRYPTO_AUTHENC=y | ||
| 1871 | # CONFIG_CRYPTO_TEST is not set | ||
| 1872 | |||
| 1873 | # | ||
| 1874 | # Authenticated Encryption with Associated Data | ||
| 1875 | # | ||
| 1876 | # CONFIG_CRYPTO_CCM is not set | ||
| 1877 | # CONFIG_CRYPTO_GCM is not set | ||
| 1878 | # CONFIG_CRYPTO_SEQIV is not set | ||
| 1879 | |||
| 1880 | # | ||
| 1881 | # Block modes | ||
| 1882 | # | ||
| 1883 | CONFIG_CRYPTO_CBC=y | ||
| 1884 | # CONFIG_CRYPTO_CTR is not set | ||
| 1885 | # CONFIG_CRYPTO_CTS is not set | ||
| 1886 | CONFIG_CRYPTO_ECB=y | ||
| 1887 | # CONFIG_CRYPTO_LRW is not set | ||
| 1888 | CONFIG_CRYPTO_PCBC=y | ||
| 1889 | # CONFIG_CRYPTO_XTS is not set | ||
| 1890 | |||
| 1891 | # | ||
| 1892 | # Hash modes | ||
| 1893 | # | ||
| 1894 | CONFIG_CRYPTO_HMAC=y | ||
| 1895 | # CONFIG_CRYPTO_XCBC is not set | ||
| 1896 | # CONFIG_CRYPTO_VMAC is not set | ||
| 1897 | |||
| 1898 | # | ||
| 1899 | # Digest | ||
| 1900 | # | ||
| 1901 | CONFIG_CRYPTO_CRC32C=y | ||
| 1902 | # CONFIG_CRYPTO_GHASH is not set | ||
| 1903 | CONFIG_CRYPTO_MD4=y | ||
| 1904 | CONFIG_CRYPTO_MD5=y | ||
| 1905 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
| 1906 | # CONFIG_CRYPTO_RMD128 is not set | ||
| 1907 | # CONFIG_CRYPTO_RMD160 is not set | ||
| 1908 | # CONFIG_CRYPTO_RMD256 is not set | ||
| 1909 | # CONFIG_CRYPTO_RMD320 is not set | ||
| 1910 | CONFIG_CRYPTO_SHA1=y | ||
| 1911 | # CONFIG_CRYPTO_SHA256 is not set | ||
| 1912 | # CONFIG_CRYPTO_SHA512 is not set | ||
| 1913 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1914 | # CONFIG_CRYPTO_WP512 is not set | ||
| 1915 | |||
| 1916 | # | ||
| 1917 | # Ciphers | ||
| 1918 | # | ||
| 1919 | CONFIG_CRYPTO_AES=y | ||
| 1920 | # CONFIG_CRYPTO_ANUBIS is not set | ||
| 1921 | # CONFIG_CRYPTO_ARC4 is not set | ||
| 1922 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
| 1923 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
| 1924 | # CONFIG_CRYPTO_CAST5 is not set | ||
| 1925 | # CONFIG_CRYPTO_CAST6 is not set | ||
| 1926 | CONFIG_CRYPTO_DES=y | ||
| 1927 | # CONFIG_CRYPTO_FCRYPT is not set | ||
| 1928 | # CONFIG_CRYPTO_KHAZAD is not set | ||
| 1929 | # CONFIG_CRYPTO_SALSA20 is not set | ||
| 1930 | # CONFIG_CRYPTO_SEED is not set | ||
| 1931 | # CONFIG_CRYPTO_SERPENT is not set | ||
| 1932 | # CONFIG_CRYPTO_TEA is not set | ||
| 1933 | # CONFIG_CRYPTO_TWOFISH is not set | ||
| 1934 | |||
| 1935 | # | ||
| 1936 | # Compression | ||
| 1937 | # | ||
| 1938 | CONFIG_CRYPTO_DEFLATE=y | ||
| 1939 | # CONFIG_CRYPTO_ZLIB is not set | ||
| 1940 | CONFIG_CRYPTO_LZO=y | ||
| 1941 | |||
| 1942 | # | ||
| 1943 | # Random Number Generation | ||
| 1944 | # | ||
| 1945 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | ||
| 1946 | CONFIG_CRYPTO_HW=y | ||
| 1947 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
| 1948 | CONFIG_CRYPTO_DEV_FSL_CAAM=y | ||
| 1949 | CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 | ||
| 1950 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y | ||
| 1951 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255 | ||
| 1952 | CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048 | ||
| 1953 | CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y | ||
| 1954 | CONFIG_CRYPTO_DEV_FSL_CAAM_UIO=y | ||
| 1955 | # CONFIG_CRYPTO_DEV_TALITOS is not set | ||
| 1956 | # CONFIG_PPC_CLOCK is not set | ||
| 1957 | CONFIG_PPC_LIB_RHEAP=y | ||
| 1958 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/recipes-kernel/linux/linux-bsc913x/bsc9132qds/linux-bsc9132qds-2.6.33.tar.bz2 b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/linux-bsc9132qds-2.6.33.tar.bz2 new file mode 100644 index 0000000..b81ece1 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x/bsc9132qds/linux-bsc9132qds-2.6.33.tar.bz2 | |||
| Binary files differ | |||
diff --git a/recipes-kernel/linux/linux-davinci-mainline.bbappend b/recipes-kernel/linux/linux-davinci-mainline.bbappend new file mode 100644 index 0000000..fd607dc --- /dev/null +++ b/recipes-kernel/linux/linux-davinci-mainline.bbappend | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | KERNEL_FEATURES=" \ | ||
| 4 | cfg/localversion \ | ||
| 5 | cfg/with_modules \ | ||
| 6 | cfg/embedded \ | ||
| 7 | cfg/preempt \ | ||
| 8 | cfg/root_nfs \ | ||
| 9 | cfg/devtmpfs \ | ||
| 10 | cfg/bootlogd \ | ||
| 11 | cfg/mtd_tests \ | ||
| 12 | cfg/lttng \ | ||
| 13 | cfg/ltp \ | ||
| 14 | " | ||
| 15 | |||
| 16 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/debug cfg/kprobes cfg/oprofile cfg/i2c" | ||
| 17 | |||
| 18 | require recipes-kernel/linux/staging-kernel.inc | ||
diff --git a/recipes-kernel/linux/linux-kernel-headers_3.0.6.bb b/recipes-kernel/linux/linux-kernel-headers_3.0.6.bb new file mode 100644 index 0000000..9dfed39 --- /dev/null +++ b/recipes-kernel/linux/linux-kernel-headers_3.0.6.bb | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | PROVIDES = "linux-libc-headers" | ||
| 2 | |||
| 3 | DESCRIPTION = "linux v${PV} kernel headers" | ||
| 4 | SECTION = "devel" | ||
| 5 | LICENSE = "GPLv2" | ||
| 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
| 7 | |||
| 8 | PKGSUFFIX = "" | ||
| 9 | PKGSUFFIX_virtclass-nativesdk = "-nativesdk" | ||
| 10 | |||
| 11 | INHIBIT_DEFAULT_DEPS = "1" | ||
| 12 | DEPENDS += "unifdef-native" | ||
| 13 | |||
| 14 | RDEPENDS_${PN}-dev = "" | ||
| 15 | RPROVIDES_${PN} = "linux-kernel-headers" | ||
| 16 | |||
| 17 | RPROVIDES_${PN}-dev += "linux-libc-headers${PKGSUFFIX}-dev" | ||
| 18 | RPROVIDES_${PN}-dbg += "linux-libc-headers${PKGSUFFIX}-dbg" | ||
| 19 | RRECOMMENDS_${PN}-dbg = "linux-libc-headers${PKGSUFFIX}-dev (= ${EXTENDPKGV})" | ||
| 20 | |||
| 21 | require linux-3.0.6.inc | ||
| 22 | |||
| 23 | set_arch() { | ||
| 24 | case ${TARGET_ARCH} in | ||
| 25 | arm*) ARCH=arm ;; | ||
| 26 | i*86*) ARCH=i386 ;; | ||
| 27 | ia64*) ARCH=ia64 ;; | ||
| 28 | mips*) ARCH=mips ;; | ||
| 29 | powerpc*) ARCH=powerpc ;; | ||
| 30 | x86_64*) ARCH=x86_64 ;; | ||
| 31 | esac | ||
| 32 | } | ||
| 33 | |||
| 34 | do_configure () { | ||
| 35 | set_arch | ||
| 36 | oe_runmake allnoconfig ARCH=$ARCH | ||
| 37 | } | ||
| 38 | |||
| 39 | do_compile () { | ||
| 40 | : | ||
| 41 | } | ||
| 42 | |||
| 43 | do_install() { | ||
| 44 | set_arch | ||
| 45 | cd ${S} | ||
| 46 | oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix} ARCH=${ARCH} | ||
| 47 | |||
| 48 | # The ..install.cmd conflicts between various configure runs | ||
| 49 | find ${D}${includedir} -name ..install.cmd | xargs rm -f | ||
| 50 | } | ||
| 51 | |||
| 52 | BBCLASSEXTEND = "nativesdk" | ||
| 53 | |||
| 54 | # The following tasks are not required when we just want | ||
| 55 | # headers. So we override and stub them out. | ||
| 56 | do_kernel_configme() { | ||
| 57 | } | ||
| 58 | |||
| 59 | do_compile () { | ||
| 60 | } | ||
| 61 | |||
| 62 | do_validate_branches () { | ||
| 63 | } | ||
| 64 | |||
| 65 | do_kernel_configcheck () { | ||
| 66 | } | ||
diff --git a/recipes-kernel/linux/linux-keystone_3.8.4.bbappend b/recipes-kernel/linux/linux-keystone_3.8.4.bbappend new file mode 100644 index 0000000..76d0615 --- /dev/null +++ b/recipes-kernel/linux/linux-keystone_3.8.4.bbappend | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | SRC_URI += "file://fix_for_CVE-2013-2094.patch \ | ||
| 4 | file://disable_hw_checksum_offload.patch \ | ||
| 5 | file://set-keystone2-clock-frequency.patch \ | ||
| 6 | " | ||
| 7 | |||
| 8 | KERNEL_FEATURES = " \ | ||
| 9 | cfg/kgdb \ | ||
| 10 | cfg/lttng \ | ||
| 11 | cfg/perf \ | ||
| 12 | cfg/powertop \ | ||
| 13 | cfg/systemtap \ | ||
| 14 | " | ||
| 15 | KERNEL_DEFCONFIG = "${WORKDIR}/defconfig" | ||
| 16 | |||
| 17 | require kernel-configure.inc | ||
| 18 | |||
| 19 | do_configure_prepend() { | ||
| 20 | |||
| 21 | configure_kernel ${KERNEL_DEFCONFIG} "${KERNEL_FEATURES}" | ||
| 22 | |||
| 23 | } | ||
| 24 | |||
diff --git a/recipes-kernel/linux/linux-omap4_3.4.bbappend b/recipes-kernel/linux/linux-omap4_3.4.bbappend new file mode 100644 index 0000000..4ebd15b --- /dev/null +++ b/recipes-kernel/linux/linux-omap4_3.4.bbappend | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | SRC_URI += "file://fix_for_CVE-2013-2094.patch \ | ||
| 4 | " | ||
| 5 | |||
| 6 | KERNEL_FEATURES = " \ | ||
| 7 | cfg/localversion \ | ||
| 8 | cfg/with_modules \ | ||
| 9 | cfg/embedded \ | ||
| 10 | cfg/preempt \ | ||
| 11 | cfg/root_nfs \ | ||
| 12 | cfg/devtmpfs \ | ||
| 13 | cfg/bootlogd \ | ||
| 14 | cfg/mtd_tests \ | ||
| 15 | cfg/ltp \ | ||
| 16 | " | ||
| 17 | |||
| 18 | KERNEL_DEFCONFIG = "${WORKDIR}/defconfig" | ||
| 19 | |||
| 20 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/debug cfg/kprobes cfg/oprofile cfg/i2c cfg/lttngcfg/powertop cfg/latencytop cfg/systemtap cfg/kgdb" | ||
| 21 | |||
| 22 | require recipes-kernel/linux/staging-kernel.inc | ||
diff --git a/recipes-kernel/linux/linux-qoriq-sdk.bbappend b/recipes-kernel/linux/linux-qoriq-sdk.bbappend new file mode 100644 index 0000000..cc78946 --- /dev/null +++ b/recipes-kernel/linux/linux-qoriq-sdk.bbappend | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | |||
| 4 | SRC_URI += "file://add-no-error-uninitialized.patch \ | ||
| 5 | " | ||
| 6 | |||
| 7 | KERNEL_FEATURES="cfg/localversion \ | ||
| 8 | cfg/with_modules \ | ||
| 9 | cfg/embedded \ | ||
| 10 | cfg/preempt \ | ||
| 11 | cfg/root_nfs \ | ||
| 12 | cfg/devtmpfs \ | ||
| 13 | cfg/bootlogd \ | ||
| 14 | cfg/mtd_tests \ | ||
| 15 | cfg/latencytop \ | ||
| 16 | cfg/ltp \ | ||
| 17 | " | ||
| 18 | |||
| 19 | KERNEL_FEATURES_append_p4080ds="cfg/dpa" | ||
| 20 | KERNEL_FEATURES_append_p2041rdb="cfg/dpa" | ||
| 21 | KERNEL_FEATURES_append_p2020rdb="cfg/uio" | ||
| 22 | |||
| 23 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/debug cfg/kprobes cfg/oprofile cfg/i2c cfg/lttng cfg/powertop cfg/systemtap cfg/kgdb" | ||
| 24 | STAGING_KERNEL_FEATURES_RT_p4080ds="${STAGING_KERNEL_FEATURES} cfg/rt" | ||
| 25 | |||
| 26 | require recipes-kernel/linux/staging-kernel.inc | ||
| 27 | require recipes-kernel/linux/pramfs-3.0.inc | ||
diff --git a/recipes-kernel/linux/linux-raspberrypi_3.6.11.bbappend b/recipes-kernel/linux/linux-raspberrypi_3.6.11.bbappend new file mode 100644 index 0000000..382f5e4 --- /dev/null +++ b/recipes-kernel/linux/linux-raspberrypi_3.6.11.bbappend | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | KERNEL_FEATURES="cfg/localversion \ | ||
| 4 | cfg/with_modules \ | ||
| 5 | cfg/embedded \ | ||
| 6 | cfg/preempt \ | ||
| 7 | cfg/root_nfs \ | ||
| 8 | cfg/devtmpfs \ | ||
| 9 | cfg/bootlogd \ | ||
| 10 | cfg/mtd_tests \ | ||
| 11 | cfg/ltp \ | ||
| 12 | " | ||
| 13 | |||
| 14 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/debug cfg/kprobes cfg/oprofile cfg/i2c cfg/lttng cfg/perf cfg/powertop cfg/latencytop cfg/systemtap" | ||
| 15 | |||
| 16 | require recipes-kernel/linux/staging-kernel.inc | ||
diff --git a/recipes-kernel/linux/linux-xlnx_3.8.bbappend b/recipes-kernel/linux/linux-xlnx_3.8.bbappend new file mode 100644 index 0000000..a162c49 --- /dev/null +++ b/recipes-kernel/linux/linux-xlnx_3.8.bbappend | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | SRC_URI += "file://fix_for_CVE-2013-2094.patch \ | ||
| 4 | " | ||
| 5 | SRC_URI_append = "file://cfg/kgdb.cfg \ | ||
| 6 | file://cfg/lttng.cfg \ | ||
| 7 | file://cfg/perf.cfg \ | ||
| 8 | file://cfg/powertop.cfg \ | ||
| 9 | file://cfg/systemtap.cfg \ | ||
| 10 | " | ||
| 11 | |||
diff --git a/recipes-kernel/linux/linux-yocto_3.10.bbappend b/recipes-kernel/linux/linux-yocto_3.10.bbappend new file mode 100644 index 0000000..f96e359 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_3.10.bbappend | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | SRC_URI += "file://cfg/kgdb.cfg \ | ||
| 4 | " | ||
diff --git a/recipes-kernel/linux/linux-yocto_3.8.bbappend b/recipes-kernel/linux/linux-yocto_3.8.bbappend new file mode 100644 index 0000000..6faf928 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_3.8.bbappend | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
| 2 | |||
| 3 | SRC_URI += "file://cfg/igb_drv.cfg \ | ||
| 4 | file://cfg/kgdb.cfg \ | ||
| 5 | " | ||
diff --git a/recipes-kernel/linux/linux_3.0.6.bb b/recipes-kernel/linux/linux_3.0.6.bb new file mode 100644 index 0000000..a283f77 --- /dev/null +++ b/recipes-kernel/linux/linux_3.0.6.bb | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | inherit kernel | ||
| 2 | require recipes-kernel/linux/linux-dtb.inc | ||
| 3 | |||
| 4 | DESCRIPTION = "linux v${PV} kernel" | ||
| 5 | LICENSE = "GPLv2" | ||
| 6 | LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" | ||
| 7 | |||
| 8 | # For this kernel, the defconfig is included locally | ||
| 9 | KERNEL_DEFCONFIG="${WORKDIR}/defconfig" | ||
| 10 | |||
| 11 | KERNEL_FEATURES="cfg/localversion \ | ||
| 12 | cfg/uio \ | ||
| 13 | " | ||
| 14 | |||
| 15 | STAGING_KERNEL_FEATURES="${KERNEL_FEATURES} cfg/debug" | ||
| 16 | STAGING_KERNEL_FEATURES_append=" cfg/kprobes cfg/oprofile cfg/lttng" | ||
| 17 | #STAGING_KERNEL_FEATURES_append_acp3448v2="" | ||
| 18 | |||
| 19 | require linux-3.0.6.inc | ||
| 20 | require staging-kernel.inc | ||
| 21 | require pramfs-3.0.inc | ||
diff --git a/recipes-kernel/linux/pramfs-2.6.33.inc b/recipes-kernel/linux/pramfs-2.6.33.inc new file mode 100644 index 0000000..1a4a1be --- /dev/null +++ b/recipes-kernel/linux/pramfs-2.6.33.inc | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | RRECOMMENDS_${PN} += "pramfs-init" | ||
| 2 | |||
| 3 | SRC_URI += "file://pramfs-2.6.33-1.1.6.tar.gz" | ||
| 4 | |||
| 5 | KERNEL_FEATURES_append = " cfg/pramfs-bsc913x" | ||
| 6 | |||
| 7 | do_apply_pramfs() { | ||
| 8 | # Apply PRAMFS patch | ||
| 9 | |||
| 10 | cd ${WORKDIR}/linux-2.6.33 | ||
| 11 | patch -p1 < ${WORKDIR}/pramfs-2.6.33.patch | ||
| 12 | cd - | ||
| 13 | } | ||
| 14 | |||
| 15 | do_apply_pramfs[deptask] = "do_unpack" | ||
| 16 | addtask apply_pramfs after do_unpack before do_patch | ||
diff --git a/recipes-kernel/linux/pramfs-3.0.inc b/recipes-kernel/linux/pramfs-3.0.inc new file mode 100644 index 0000000..86d78e3 --- /dev/null +++ b/recipes-kernel/linux/pramfs-3.0.inc | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | RRECOMMENDS_${PN} += "pramfs-init" | ||
| 2 | |||
| 3 | PRAMFS_VERSION = '1.4.2-3.10_patched' | ||
| 4 | |||
| 5 | SRC_URI += "file://pramfs-${PRAMFS_VERSION}.tar.gz" | ||
| 6 | |||
| 7 | KERNEL_FEATURES_append = " cfg/pramfs" | ||
| 8 | STAGING_KERNEL_FEATURES_append = " cfg/pramfs" | ||
| 9 | |||
| 10 | do_apply_pramfs() { | ||
| 11 | # Apply PRAMFS patch | ||
| 12 | |||
| 13 | # Already done by bitbake -> | ||
| 14 | # tar xvf ${WORKDIR}/pramfs-${PRAMFS_VERSION}.tar.gz -C ${WORKDIR} | ||
| 15 | cd ${WORKDIR}/pramfs-${PRAMFS_VERSION}/ | ||
| 16 | ./patch-ker.sh ${S} | ||
| 17 | cd - | ||
| 18 | } | ||
| 19 | |||
| 20 | do_apply_pramfs[deptask] = "do_unpack" | ||
| 21 | addtask apply_pramfs after do_unpack before do_patch | ||
diff --git a/recipes-kernel/linux/staging-kernel.inc b/recipes-kernel/linux/staging-kernel.inc new file mode 100644 index 0000000..a8c2ba4 --- /dev/null +++ b/recipes-kernel/linux/staging-kernel.inc | |||
| @@ -0,0 +1,156 @@ | |||
| 1 | # This .inc file allows building and deploying staging kernel + modules | ||
| 2 | # with defconfig + fragment cfgs | ||
| 3 | |||
| 4 | require kernel-configure.inc | ||
| 5 | |||
| 6 | STAGING_NAME ?= "RELEASE" | ||
| 7 | STAGING_KERNEL_FEATURES ?= "" | ||
| 8 | KERNEL_FEATURES ?= "" | ||
| 9 | MODULES_IMAGE_BASE_NAME = "modules-${PV}-${PR}-${MACHINE}" | ||
| 10 | EXTRA_OEMAKE_prepend_task-stagingkernel = "${PARALLEL_MAKE} " | ||
| 11 | |||
| 12 | kernel_do_configure_prepend() { | ||
| 13 | |||
| 14 | configure_kernel "${KERNEL_DEFCONFIG}" "${STAGING_KERNEL_FEATURES}" | ||
| 15 | |||
| 16 | } | ||
| 17 | |||
| 18 | do_stagingkernel () { | ||
| 19 | stagingkernel "${KERNEL_FEATURES}" ${STAGING_NAME} | ||
| 20 | if [ -n "${STAGING_KERNEL_FEATURES_RT}" ]; then | ||
| 21 | cd ${B} | ||
| 22 | stagingkernel "${STAGING_KERNEL_FEATURES_RT}" "rt" | ||
| 23 | fi | ||
| 24 | |||
| 25 | } | ||
| 26 | |||
| 27 | stagingkernel () { | ||
| 28 | |||
| 29 | configure_kernel "${KERNEL_DEFCONFIG}" "${1}" | ||
| 30 | |||
| 31 | # Copy defconfig to .config if .config does not exist. This allows | ||
| 32 | # recipes to manage the .config themselves in do_configure_prepend(). | ||
| 33 | if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then | ||
| 34 | cp "${WORKDIR}/defconfig" "${B}/.config" | ||
| 35 | fi | ||
| 36 | yes '' | oe_runmake oldconfig | ||
| 37 | |||
| 38 | if [ ! -z "${INITRAMFS_IMAGE}" ]; then | ||
| 39 | for img in cpio.gz cpio.lzo cpio.lzma cpio.xz; do | ||
| 40 | if [ -e "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$img" ]; then | ||
| 41 | cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$img" initramfs.$img | ||
| 42 | fi | ||
| 43 | done | ||
| 44 | fi | ||
| 45 | |||
| 46 | # | ||
| 47 | # Build this alternative kernel | ||
| 48 | # | ||
| 49 | |||
| 50 | kernel_do_compile | ||
| 51 | do_compile_kernelmodules | ||
| 52 | |||
| 53 | # | ||
| 54 | # First install the modules to deploy dir | ||
| 55 | # | ||
| 56 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE | ||
| 57 | if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then | ||
| 58 | oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install | ||
| 59 | else | ||
| 60 | bbnote "no modules to install" | ||
| 61 | fi | ||
| 62 | if [ -d "${D}/lib" ]; then | ||
| 63 | tar -cvzf ${DEPLOY_DIR_IMAGE}/${MODULES_IMAGE_BASE_NAME}-${2}.tgz -C ${D} lib | ||
| 64 | fi | ||
| 65 | rm -fr ${D}/lib | ||
| 66 | |||
| 67 | # | ||
| 68 | # Dont build any dtb:s for the staging kernel | ||
| 69 | # | ||
| 70 | |||
| 71 | # | ||
| 72 | # Drop the resulting images in the deploy dir | ||
| 73 | # | ||
| 74 | cd ${S} | ||
| 75 | install -d ${DEPLOY_DIR_IMAGE} | ||
| 76 | install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${2}.bin | ||
| 77 | mv ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}-${2} | ||
| 78 | |||
| 79 | # | ||
| 80 | # Install the final config alongside the images | ||
| 81 | # | ||
| 82 | cd ${S} | ||
| 83 | cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}-${2}.config | ||
| 84 | rm -f .config | ||
| 85 | |||
| 86 | # | ||
| 87 | # Create symlinks | ||
| 88 | # | ||
| 89 | cd ${DEPLOY_DIR_IMAGE} | ||
| 90 | rm -f ${KERNEL_IMAGE_SYMLINK_NAME}-${2}.bin | ||
| 91 | ln -sf ${KERNEL_IMAGE_BASE_NAME}-${2}.bin ${KERNEL_IMAGE_SYMLINK_NAME}-${2}.bin | ||
| 92 | |||
| 93 | rm -f config-${MACHINE}-${2}.config | ||
| 94 | ln -sf config-${PV}-${PR}-${MACHINE}-${2}.config config-${MACHINE}-${2}.config | ||
| 95 | |||
| 96 | } | ||
| 97 | |||
| 98 | do_stagingkernel[dirs] = "${DEPLOY_DIR_IMAGE} ${B}" | ||
| 99 | |||
| 100 | do_stagingkernel[depends] += "u-boot-mkimage-native:do_populate_sysroot virtual/${TARGET_PREFIX}gcc:do_populate_sysroot virtual/${TARGET_PREFIX}gcc:do_populate_sysroot" | ||
| 101 | |||
| 102 | addtask stagingkernel after do_patch before do_configure | ||
| 103 | |||
| 104 | # | ||
| 105 | # For reference, copy .config to deploy image | ||
| 106 | # | ||
| 107 | do_deploy_append () { | ||
| 108 | |||
| 109 | install -d ${DEPLOY_DIR_IMAGE} | ||
| 110 | |||
| 111 | # | ||
| 112 | # Drop the regular defconfig along side the others for consistency | ||
| 113 | # | ||
| 114 | cd ${S} | ||
| 115 | cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}.config | ||
| 116 | |||
| 117 | # | ||
| 118 | # add symlink | ||
| 119 | # | ||
| 120 | cd ${DEPLOY_DIR_IMAGE} | ||
| 121 | rm -f config-${MACHINE}.config | ||
| 122 | ln -s config-${PV}-${PR}-${MACHINE}.config config-${MACHINE}.config | ||
| 123 | |||
| 124 | if [ -n "${STAGING_KERNEL_FEATURES_RT}" ]; then | ||
| 125 | cd ${S} | ||
| 126 | install -m 0644 ${KERNEL_OUTPUT}-rt ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}-rt.bin | ||
| 127 | |||
| 128 | # | ||
| 129 | # Create symlinks | ||
| 130 | # | ||
| 131 | cd ${DEPLOYDIR} | ||
| 132 | rm -f ${KERNEL_IMAGE_SYMLINK_NAME}-rt.bin | ||
| 133 | ln -sf ${KERNEL_IMAGE_BASE_NAME}-rt.bin ${KERNEL_IMAGE_SYMLINK_NAME}-rt.bin | ||
| 134 | fi | ||
| 135 | |||
| 136 | } | ||
| 137 | |||
| 138 | # | ||
| 139 | # Clean staging kernel related files in deploy dir | ||
| 140 | # | ||
| 141 | do_cleanstagingkernel () { | ||
| 142 | |||
| 143 | cd ${DEPLOY_DIR_IMAGE} | ||
| 144 | rm -f *-${STAGING_NAME}.* | ||
| 145 | |||
| 146 | rm -f config-${PV}-${PR}-${MACHINE}.config | ||
| 147 | rm -f config-${MACHINE}.config | ||
| 148 | |||
| 149 | } | ||
| 150 | |||
| 151 | LDFLAGS="" | ||
| 152 | |||
| 153 | do_cleanstagingkernel[nostamp] = "1" | ||
| 154 | |||
| 155 | addtask cleanstagingkernel after do_cleansstate | ||
| 156 | |||
diff --git a/recipes-kernel/pramfs-init/files/pramfs_init b/recipes-kernel/pramfs-init/files/pramfs_init new file mode 100644 index 0000000..64c7bc2 --- /dev/null +++ b/recipes-kernel/pramfs-init/files/pramfs_init | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | #set -e | ||
| 3 | |||
| 4 | echo "Setting up pramfs" | ||
| 5 | |||
| 6 | # ensure the required binaries are present | ||
| 7 | #[ -x /sbin/modprobe ] || exit 1 | ||
| 8 | [ -x /bin/mount ] || exit 1 | ||
| 9 | [ -x /bin/grep ] || exit 1 | ||
| 10 | [ -x /bin/cat ] || exit 1 | ||
| 11 | [ -x /bin/sed ] || exit 1 | ||
| 12 | |||
| 13 | #modprobe pramfs | ||
| 14 | mkdir -p /mnt/pram | ||
| 15 | |||
| 16 | case "$1" in | ||
| 17 | start) | ||
| 18 | # Figure out RAM for pramfs | ||
| 19 | # This requires a kernel cmdline resevation of PRAMFS physmem | ||
| 20 | # in format memmap=16M$0x7000000 | ||
| 21 | grep memmap /proc/cmdline > /dev/null | ||
| 22 | if [ $? -eq 0 ]; then | ||
| 23 | addr=$(sed 's/.*memmap=\([^ ]*\)\$\([^ ]*\).*/\2/' < /proc/cmdline) | ||
| 24 | size=$(sed 's/.*memmap=\([^ ]*\)\$\([^ ]*\).*/\1/' < /proc/cmdline) | ||
| 25 | |||
| 26 | if [ -d /seed ]; then | ||
| 27 | echo "Init new pramfs" | ||
| 28 | mount -t pramfs -o physaddr=$addr,init=$size,bs=1k none /mnt/pram > /dev/null 2>&1 | ||
| 29 | cp /seed/* /mnt/pram | ||
| 30 | echo "0" > /mnt/pram/kcount | ||
| 31 | else | ||
| 32 | echo "Mounting old pramfs" | ||
| 33 | mount -t pramfs -o physaddr=$addr,bs=1k none /mnt/pram > /dev/null 2>&1 | ||
| 34 | if [ $? -ne 0 ]; then | ||
| 35 | echo "Mounting old pramfs failed, zeroing" | ||
| 36 | mount -t pramfs -o physaddr=$addr,init=$size,bs=1k none /mnt/pram > /dev/null 2>&1 | ||
| 37 | if [ $? -ne 0 ]; then | ||
| 38 | echo "All attempts to mount pramfs has failed, exiting" | ||
| 39 | rm -fr /mnt/pram | ||
| 40 | exit 1 | ||
| 41 | fi | ||
| 42 | echo "0" > /mnt/pram/kcount | ||
| 43 | fi | ||
| 44 | fi | ||
| 45 | |||
| 46 | # echo "* Setting up kexec" | ||
| 47 | # kexec -l --reuse-cmdline --initrd=/mnt/pram/initramfs.cpio.gz /mnt/pram/vmlinuz | ||
| 48 | |||
| 49 | # Calculate number of boots | ||
| 50 | export KCOUNT=$(expr $(cat /mnt/pram/kcount) + 1) | ||
| 51 | echo $KCOUNT > /mnt/pram/kcount | ||
| 52 | else | ||
| 53 | KCOUNT="no-mem" | ||
| 54 | echo "Can't find memory area for pram fs" | ||
| 55 | rm -fr /mnt/pram | ||
| 56 | fi | ||
| 57 | |||
| 58 | echo "PRAMFS boot count: $KCOUNT" | ||
| 59 | # echo "kexec -e to kexec and keep persistent files in /mnt/pram" | ||
| 60 | ;; | ||
| 61 | stop) | ||
| 62 | echo | ||
| 63 | ;; | ||
| 64 | restart) | ||
| 65 | $0 stop | ||
| 66 | $0 start | ||
| 67 | ;; | ||
| 68 | *) | ||
| 69 | echo "usage: $0 { start | stop | restart }" >&2 | ||
| 70 | exit 1 | ||
| 71 | ;; | ||
| 72 | esac | ||
| 73 | |||
| 74 | exit 0 | ||
| 75 | |||
| 76 | |||
| 77 | |||
| 78 | |||
| 79 | |||
| 80 | |||
diff --git a/recipes-kernel/pramfs-init/pramfs-init_1.0.bb b/recipes-kernel/pramfs-init/pramfs-init_1.0.bb new file mode 100644 index 0000000..4252655 --- /dev/null +++ b/recipes-kernel/pramfs-init/pramfs-init_1.0.bb | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | DESCRIPTION = "Pramfs init scripts" | ||
| 2 | SECTION = "init" | ||
| 3 | LICENSE = "BSD" | ||
| 4 | SRC_URI = "file://pramfs_init" | ||
| 5 | PR = "r0" | ||
| 6 | |||
| 7 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
| 8 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
| 9 | |||
| 10 | PACKAGE_ARCH = "all" | ||
| 11 | |||
| 12 | do_install() { | ||
| 13 | install -d ${D}${sysconfdir}/init.d/ | ||
| 14 | install -m 0755 ${WORKDIR}/pramfs_init ${D}${sysconfdir}/init.d/pramfs_init | ||
| 15 | } | ||
| 16 | |||
| 17 | inherit update-rc.d | ||
| 18 | |||
| 19 | INITSCRIPT_NAME = "pramfs_init" | ||
| 20 | INITSCRIPT_PARAMS = "start 99 5 2 . stop 19 0 1 6 ." | ||
