diff options
author | Tudor Florea <tudor.florea@enea.com> | 2014-10-10 00:31:33 +0200 |
---|---|---|
committer | Tudor Florea <tudor.florea@enea.com> | 2014-10-10 00:53:44 +0200 |
commit | cd3411088f6bb4393d79c50b5f7eef3f11a83435 (patch) | |
tree | e1b44fd7c353d9018f489d03f3dea78bc876b94a | |
download | meta-enea-daisy-140929.tar.gz |
initial commit for Enea Linux 4.0-140929daisy-140929
Migrated from the internal git server on the daisy-enea-point-release branch
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
280 files changed, 49898 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e4e5f6c --- /dev/null +++ b/.gitignore | |||
@@ -0,0 +1 @@ | |||
*~ \ No newline at end of file | |||
@@ -0,0 +1,38 @@ | |||
1 | OpenEmbedded/Yocto BSP layer for Enea Linux reconfigurable platforms | ||
2 | ==================================================================== | ||
3 | |||
4 | This layer provides support for Enea Linux reconfigurable platforms | ||
5 | to use with OpenEmbedded and/or Yocto. | ||
6 | |||
7 | Dependencies | ||
8 | ------------ | ||
9 | This layer depends on: | ||
10 | URI: git://git.enea.com/linux/poky | ||
11 | branch: daisy | ||
12 | |||
13 | URI: git://git.enea.com/linux/meta-openembedded | ||
14 | branch: daisy | ||
15 | layers: meta-filesystems | ||
16 | |||
17 | Source code | ||
18 | ----------- | ||
19 | |||
20 | git://git.enea.com/linux/meta-enea.git | ||
21 | |||
22 | Maintenance | ||
23 | ----------- | ||
24 | |||
25 | Maintainers: Enea Linux Team <linux-maintainers@enea.com> | ||
26 | |||
27 | Contributing | ||
28 | ------------ | ||
29 | |||
30 | Contributions and patches can be sent to the Enea Linux mailing | ||
31 | list: enealinux@lists.enea.com | ||
32 | |||
33 | License | ||
34 | ------- | ||
35 | |||
36 | All metadata is MIT licensed unless otherwise stated. Source code | ||
37 | included in tree for individual recipes is under the LICENSE stated | ||
38 | in each recipe (.bb file) unless otherwise stated. | ||
diff --git a/conf/conf-notes.txt b/conf/conf-notes.txt new file mode 100644 index 0000000..55281bd --- /dev/null +++ b/conf/conf-notes.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Common targets are: | ||
2 | enea-image-minimal | ||
3 | enea-image-demo | ||
4 | meta-toolchain | ||
5 | |||
6 | You can also run generated qemu images with a command like 'runqemu qemuppc' | ||
7 | |||
diff --git a/conf/distro/enea.conf b/conf/distro/enea.conf new file mode 100644 index 0000000..540aa88 --- /dev/null +++ b/conf/distro/enea.conf | |||
@@ -0,0 +1,64 @@ | |||
1 | require conf/distro/poky.conf | ||
2 | DISTRO = "enea" | ||
3 | DISTRO_NAME = "Enea Linux" | ||
4 | DISTRO_VERSION = "4.0" | ||
5 | SDK_VENDOR = "-eneasdk" | ||
6 | SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}" | ||
7 | |||
8 | MAINTAINER = "ENEA <issues@enea.com>" | ||
9 | |||
10 | TARGET_VENDOR = "-enea" | ||
11 | TARGET_VENDOR_virtclass-multilib-lib32 = "-enea" | ||
12 | TARGET_VENDOR_virtclass-multilib-lib64 = "-enea" | ||
13 | |||
14 | SANITY_TESTED_DISTROS += "\ | ||
15 | CentOS-6.1 \n \ | ||
16 | RedHatEnterpriseServer-6.1 \n \ | ||
17 | RedHatEnterpriseServer-6.4 \n \ | ||
18 | Ubuntu-12.10 \n \ | ||
19 | " | ||
20 | |||
21 | DISTRO_FEATURES_LIBC = "\ | ||
22 | ipv4 \ | ||
23 | ipv6 \ | ||
24 | libc-backtrace \ | ||
25 | libc-big-macros \ | ||
26 | libc-bsd \ | ||
27 | libc-cxx-tests \ | ||
28 | libc-catgets \ | ||
29 | libc-charsets \ | ||
30 | libc-crypt \ | ||
31 | libc-crypt-ufc \ | ||
32 | libc-db-aliases \ | ||
33 | libc-envz \ | ||
34 | libc-fcvt \ | ||
35 | libc-fmtmsg \ | ||
36 | libc-fstab \ | ||
37 | libc-ftraverse \ | ||
38 | libc-getlogin \ | ||
39 | libc-idn \ | ||
40 | libc-inet-anl \ | ||
41 | libc-libm \ | ||
42 | libc-libm-big \ | ||
43 | libc-locales \ | ||
44 | libc-locale-code \ | ||
45 | libc-memusage libc-nis \ | ||
46 | libc-nsswitch \ | ||
47 | libc-rcmd \ | ||
48 | libc-rtld-debug \ | ||
49 | libc-spawn \ | ||
50 | libc-streams \ | ||
51 | libc-sunrpc \ | ||
52 | libc-utmp \ | ||
53 | libc-utmpx \ | ||
54 | libc-wordexp \ | ||
55 | libc-posix-clang-wchar \ | ||
56 | libc-posix-regexp \ | ||
57 | libc-posix-regexp-glibc \ | ||
58 | libc-posix-wchar-io \ | ||
59 | " | ||
60 | CONNECTIVITY_CHECK_URIS = " \ | ||
61 | http://linux.enea.com" | ||
62 | |||
63 | DISTRO_FEATURES = "ptest argp ext2 largefile xattr nfs pci multiarch ${DISTRO_FEATURES_LIBC} " | ||
64 | BB_DANGLINGAPPENDS_WARNONLY ?= "1" | ||
diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..bfd4ef2 --- /dev/null +++ b/conf/layer.conf | |||
@@ -0,0 +1,12 @@ | |||
1 | # We have a packages directory, add to BBFILES | ||
2 | BBPATH .= ":${LAYERDIR}" | ||
3 | |||
4 | BBFILES += "${LAYERDIR}/recipes-*/*/*.bb*" | ||
5 | BBFILES += "${LAYERDIR}/images/*.bb*" | ||
6 | |||
7 | BBFILE_COLLECTIONS += "enea" | ||
8 | BBFILE_PATTERN_enea := "^${LAYERDIR}/" | ||
9 | BBFILE_PRIORITY_enea = "6" | ||
10 | |||
11 | BB_ENV_EXTRAWHITE := "KSRC USRC" | ||
12 | BB_DANGLINGAPPENDS_WARNONLY = "yes" | ||
diff --git a/conf/machine/acp3448v2.conf b/conf/machine/acp3448v2.conf new file mode 100644 index 0000000..7fa628f --- /dev/null +++ b/conf/machine/acp3448v2.conf | |||
@@ -0,0 +1,28 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@DESCRIPTION: Machine configuration for running | ||
3 | |||
4 | require include/tune-ppc476.inc | ||
5 | |||
6 | MACHINE_FEATURES = "usbhost pci ext2 ext3" | ||
7 | |||
8 | PREFERRED_PROVIDER_virtual/kernel ?= "linux" | ||
9 | PREFERRED_VERSION_virtual/kernel ?= "3.0.6" | ||
10 | |||
11 | PREFERRED_PROVIDER_linux-libc-headers ?= "linux-kernel-headers" | ||
12 | PREFERRED_PROVIDER_linux-libc-headers-nativesdk ?= "linux-kernel-headers-nativesdk" | ||
13 | PREFERRED_VERSION_linux-kernel-headers ?= "3.0.6" | ||
14 | PREFERRED_VERSION_linux-kernel-headers-nativesdk ?= "3.0.6" | ||
15 | |||
16 | KERNEL_EXTRA_OEMAKE = "V=1" | ||
17 | #KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/acp.dts" | ||
18 | #KERNEL_DEFCONFIG = "${S}/arch/powerpc/configs/acp_dbgconfig" | ||
19 | KERNEL_IMAGETYPE = "uImage" | ||
20 | UBOOT_ENTRYPOINT = "0x00400000" | ||
21 | UBOOT_LOADADDRESS = "0x00400000" | ||
22 | IMAGE_FSTYPES = "tar.gz ext2.gz ext2.gz.u-boot" | ||
23 | USE_VT = "0" | ||
24 | SERIAL_CONSOLE = "115200 ttyS0" | ||
25 | |||
26 | # override version preference in tcmode-default.inc | ||
27 | #PREFERRED_VERSION_u-boot-mkimage-native_powerpc = "" | ||
28 | |||
diff --git a/conf/machine/bsc9131rdb.conf b/conf/machine/bsc9131rdb.conf new file mode 100644 index 0000000..72a4532 --- /dev/null +++ b/conf/machine/bsc9131rdb.conf | |||
@@ -0,0 +1,22 @@ | |||
1 | TARGET_FPU = "ppc-efd" | ||
2 | |||
3 | require conf/machine/include/tune-ppce500v2.inc | ||
4 | |||
5 | MACHINE_FEATURES = "kernel26 pci ext2 ext3 serial" | ||
6 | MACHINE_EXTRA_RRECOMMENDS = "" | ||
7 | |||
8 | PREFERRED_PROVIDER_virtual/kernel ?= "linux-bsc913x" | ||
9 | PREFERRED_VERSION_virtual/kernel ?= "2.6.33" | ||
10 | PREFERRED_PROVIDER_linux-libc-headers ?= "linux-bsc913x-headers" | ||
11 | PREFERRED_PROVIDER_linux-libc-headers-nativesdk ?= "linux-bsc913x-headers-nativesdk" | ||
12 | |||
13 | KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/bsc9131rdb.dts" | ||
14 | |||
15 | KERNEL_IMAGETYPE ?= "uImage" | ||
16 | # disable the images below for now | ||
17 | # ext2.bz2 ext2.lzma \ | ||
18 | # ext2.gz.u-boot ext2.bz2.u-boot ext2.lzma.u-boot" | ||
19 | |||
20 | MACHINEOVERRIDES .= ":e500v2" | ||
21 | SERIAL_CONSOLE = "115200 ttyS0" | ||
22 | USE_VT = "0" | ||
diff --git a/conf/machine/bsc9132qds.conf b/conf/machine/bsc9132qds.conf new file mode 100644 index 0000000..1c4aab3 --- /dev/null +++ b/conf/machine/bsc9132qds.conf | |||
@@ -0,0 +1,20 @@ | |||
1 | TARGET_FPU = "ppc-efd" | ||
2 | |||
3 | require conf/machine/include/tune-ppce500v2.inc | ||
4 | |||
5 | MACHINE_FEATURES = "kernel26 pci ext2 ext3 serial" | ||
6 | MACHINE_EXTRA_RRECOMMENDS = "" | ||
7 | |||
8 | PREFERRED_PROVIDER_virtual/kernel ?= "linux-bsc913x" | ||
9 | PREFERRED_VERSION_virtual/kernel ?= "2.6.33" | ||
10 | PREFERRED_PROVIDER_linux-libc-headers ?= "linux-bsc913x-headers" | ||
11 | PREFERRED_PROVIDER_linux-libc-headers-nativesdk ?= "linux-bsc913x-headers-nativesdk" | ||
12 | |||
13 | KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/bsc9132qds.dts" | ||
14 | |||
15 | KERNEL_IMAGETYPE ?= "uImage" | ||
16 | # disable the images below for now | ||
17 | # ext2.bz2 ext2.lzma \ | ||
18 | # ext2.gz.u-boot ext2.bz2.u-boot ext2.lzma.u-boot" | ||
19 | |||
20 | MACHINEOVERRIDES .= ":e500v2" | ||
diff --git a/conf/machine/ebony.conf b/conf/machine/ebony.conf new file mode 100644 index 0000000..25734be --- /dev/null +++ b/conf/machine/ebony.conf | |||
@@ -0,0 +1,27 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@DESCRIPTION: Machine configuration for running | ||
3 | |||
4 | require include/tune-ppc440.inc | ||
5 | |||
6 | PREFERRED_PROVIDER_virtual/kernel ?= "kernel-org" | ||
7 | PREFERRED_VERSION_kernel-org ?= "3.0.6" | ||
8 | |||
9 | PREFERRED_PROVIDER_linux-libc-headers ?= "kernel-org-headers" | ||
10 | PREFERRED_PROVIDER_linux-libc-headers-nativesdk ?= "kernel-org-headers-nativesdk" | ||
11 | |||
12 | PREFERRED_VERSION_kernel-org-headers ?= "3.0.6" | ||
13 | PREFERRED_VERSION_kernel-org-headers-nativesdk ?= "3.0.6" | ||
14 | |||
15 | #PREFERRED_VERSION_linx = "2.6.3" | ||
16 | #PREFERRED_VERSION_linx-mod = "2.6.3" | ||
17 | |||
18 | IMAGE_FSTYPES = "tar.gz ext2.gz ext2.gz.u-boot" | ||
19 | |||
20 | UBOOT_MACHINES = "ebony_config" | ||
21 | KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/ebony.dts" | ||
22 | KERNEL_DEFCONFIG = "${S}/arch/powerpc/configs/44x/ebony_defconfig" | ||
23 | KERNEL_IMAGETYPE = "uImage" | ||
24 | MACHINE_FEATURES = "kernel26 ext3 serial" | ||
25 | |||
26 | # override version preference in tcmode-default.inc | ||
27 | PREFERRED_VERSION_u-boot-mkimage-native_powerpc = "" | ||
diff --git a/conf/machine/include/tune-ppc440.inc b/conf/machine/include/tune-ppc440.inc new file mode 100644 index 0000000..6262fb7 --- /dev/null +++ b/conf/machine/include/tune-ppc440.inc | |||
@@ -0,0 +1,11 @@ | |||
1 | DEFAULTTUNE ?= "ppc440" | ||
2 | |||
3 | require conf/machine/include/powerpc/arch-powerpc.inc | ||
4 | |||
5 | TUNEVALID[ppc440] = "Enable ppc440 specific processor optimizations" | ||
6 | TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppc440", "-mcpu=440", "", d)}" | ||
7 | TUNE_PKGARCH = "${@bb.utils.contains("TUNE_FEATURES", "ppc440", "ppc440", "", d)}" | ||
8 | |||
9 | AVAILTUNES = "ppc440" | ||
10 | TUNE_FEATURES_tune-ppc440 = "m32 fpu-soft ppc440" | ||
11 | PACKAGE_EXTRA_ARCHS_tune-ppc440 = "powerpc-nf ppc440 ppc405" | ||
diff --git a/conf/machine/include/tune-ppc476.inc b/conf/machine/include/tune-ppc476.inc new file mode 100644 index 0000000..a34690f --- /dev/null +++ b/conf/machine/include/tune-ppc476.inc | |||
@@ -0,0 +1,11 @@ | |||
1 | DEFAULTTUNE ?= "ppc476" | ||
2 | |||
3 | require conf/machine/include/powerpc/arch-powerpc.inc | ||
4 | |||
5 | AVAILTUNES += "ppc476" | ||
6 | TUNE_FEATURES_tune-ppc476 = "m32 fpu-hard ppc476" | ||
7 | TUNEVALID[ppc476] = "Enable ppc476 specific processor optimizations" | ||
8 | TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "ppc476", "-mcpu=476", "", d)}" | ||
9 | TUNE_PKGARCH_tune-ppc476 = "ppc476" | ||
10 | |||
11 | PACKAGE_EXTRA_ARCHS_tune-ppc476 = "powerpc-nf ppc476 ppc440 ppc405" | ||
diff --git a/conf/machine/p2020rdb-prt.conf b/conf/machine/p2020rdb-prt.conf new file mode 100644 index 0000000..55eccdf --- /dev/null +++ b/conf/machine/p2020rdb-prt.conf | |||
@@ -0,0 +1,20 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@Name: Freescale P2020RDB | ||
3 | #@DESCRIPTION: Machine configuration for the Freescale P2020RDB with Preempt-RT enabled | ||
4 | |||
5 | require conf/machine/e500v2.inc | ||
6 | require conf/machine/include/soc-family.inc | ||
7 | |||
8 | SOC_FAMILY = "p2020" | ||
9 | BOOTFORMAT_CONFIG = "config_sram_p1022ds.dat" | ||
10 | UBOOT_MACHINES ?= " P2020RDB-PC P2020RDB-PC_NAND P2020RDB-PC_SDCARD P2020RDB-PC_SPIFLASH P2020RDB-PC_36BIT P2020RDB-PC_36BIT_SPIFLASH P2020RDB-PC_36BIT_NAND P2020RDB-PC_36BIT_SDCARD" | ||
11 | KERNEL_DEVICETREE ?= "p2020rdb-pc_32b.dtb" | ||
12 | KERNEL_DEFCONFIG ?= "${S}/arch/powerpc/configs/mpc85xx_smp_defconfig" | ||
13 | |||
14 | PREFERRED_PROVIDER_virtual/kernel = "linux-qoriq-sdk-prt" | ||
15 | |||
16 | JFFS2_ERASEBLOCK = "0x20000" | ||
17 | |||
18 | SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" | ||
19 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
20 | USE_VT = "0" | ||
diff --git a/conf/machine/p2041rdb-prt.conf b/conf/machine/p2041rdb-prt.conf new file mode 100644 index 0000000..3172a56 --- /dev/null +++ b/conf/machine/p2041rdb-prt.conf | |||
@@ -0,0 +1,18 @@ | |||
1 | #@TYPE: Machine | ||
2 | #@DESCRIPTION: Machine configuration for running with preempt-RT enabled | ||
3 | |||
4 | require conf/machine/e500mc.inc | ||
5 | require conf/machine/include/soc-family.inc | ||
6 | |||
7 | SOC_FAMILY = "p2041" | ||
8 | UBOOT_MACHINES ?= "P2041RDB P2041RDB_NAND P2041RDB_SECURE_BOOT P2041RDB_SDCARD P2041RDB_SPIFLASH" | ||
9 | KERNEL_DEVICETREE ?= "p2041rdb.dtb p2041rdb-usdpaa.dtb" | ||
10 | KERNEL_DEFCONFIG ?= "${S}/arch/powerpc/configs/corenet32_smp_defconfig" | ||
11 | |||
12 | PREFERRED_PROVIDER_virtual/kernel = "linux-qoriq-sdk-prt" | ||
13 | |||
14 | JFFS2_ERASEBLOCK = "0x10000" | ||
15 | |||
16 | SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1" | ||
17 | SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}" | ||
18 | USE_VT = "0" | ||
diff --git a/images/enea-image-demo.bb b/images/enea-image-demo.bb new file mode 100644 index 0000000..6b4c346 --- /dev/null +++ b/images/enea-image-demo.bb | |||
@@ -0,0 +1,93 @@ | |||
1 | # Uncomment for opkg/dpkg/rpm on available on target | ||
2 | IMAGE_FSTYPES += "ext2.gz.u-boot ext3 tar.gz" | ||
3 | IMAGE_FEATURES += "package-management" | ||
4 | |||
5 | IMAGE_FEATURES += "eclipse-debug tools-debug tools-profile dbg-pkgs" | ||
6 | IMAGE_FEATURES += "ssh-server-dropbear" | ||
7 | |||
8 | ENEA_GPL = " \ | ||
9 | linx \ | ||
10 | linx-mod" | ||
11 | |||
12 | ENEA_GPL_qemux86 = "" | ||
13 | ENEA_GPL_qemuppc = "" | ||
14 | ENEA_GPL_armv5 = "" | ||
15 | ENEA_GPL_armv7a = "" | ||
16 | |||
17 | VALGRIND ?= "" | ||
18 | VALGRIND_powerpc ?= "valgrind" | ||
19 | VALGRIND_e500v2 ?= "" | ||
20 | VALGRIND_x86 ?= "valgrind" | ||
21 | VALGRIND_x86_64 ?= "valgrind" | ||
22 | VALGRIND_armv7a ?= "valgrind" | ||
23 | |||
24 | IMAGE_INSTALL = " \ | ||
25 | packagegroup-enea-core-boot \ | ||
26 | packagegroup-enea-debug \ | ||
27 | packagegroup-enea-profile \ | ||
28 | packagegroup-enea-rt-tools \ | ||
29 | ${ROOTFS_PKGMANAGE_BOOTSTRAP} \ | ||
30 | babeltrace \ | ||
31 | bc \ | ||
32 | beecrypt \ | ||
33 | chkconfig \ | ||
34 | cracklib \ | ||
35 | curl \ | ||
36 | dhcp-client \ | ||
37 | eventlog \ | ||
38 | file \ | ||
39 | findutils \ | ||
40 | freetype \ | ||
41 | fuse \ | ||
42 | gawk \ | ||
43 | gettext \ | ||
44 | gettext-runtime \ | ||
45 | gnutls \ | ||
46 | grep \ | ||
47 | gzip \ | ||
48 | icu \ | ||
49 | insserv \ | ||
50 | kbd \ | ||
51 | kexec-tools \ | ||
52 | libgcrypt \ | ||
53 | libgpg-error \ | ||
54 | libtasn1 \ | ||
55 | libuio \ | ||
56 | logrotate \ | ||
57 | lsb \ | ||
58 | lsbinitscripts \ | ||
59 | ltp \ | ||
60 | lttng-modules \ | ||
61 | lttng-tools \ | ||
62 | mingetty \ | ||
63 | mtd-utils \ | ||
64 | net-tools \ | ||
65 | netbase \ | ||
66 | openssl \ | ||
67 | ossp-uuid \ | ||
68 | pciutils \ | ||
69 | pkgconfig \ | ||
70 | pramfs-init \ | ||
71 | procps \ | ||
72 | psmisc \ | ||
73 | rpm \ | ||
74 | sed \ | ||
75 | sqlite3 \ | ||
76 | sudo \ | ||
77 | tar \ | ||
78 | tipcutils \ | ||
79 | udev-extraconf \ | ||
80 | usbutils \ | ||
81 | zip \ | ||
82 | ${ENEA_GPL} \ | ||
83 | ${VALGRIND} \ | ||
84 | " | ||
85 | |||
86 | IMAGE_LINGUAS = "" | ||
87 | |||
88 | inherit core-image | ||
89 | inherit image_types_uboot | ||
90 | |||
91 | IMAGE_ROOTFS_SIZE = "1" | ||
92 | # Increased the overhead factor to be able to build via nfs. | ||
93 | IMAGE_OVERHEAD_FACTOR = "2" | ||
diff --git a/images/enea-image-minimal.bb b/images/enea-image-minimal.bb new file mode 100644 index 0000000..12a0e9b --- /dev/null +++ b/images/enea-image-minimal.bb | |||
@@ -0,0 +1,32 @@ | |||
1 | # | ||
2 | # Poky specific package kits. | ||
3 | # | ||
4 | |||
5 | # no need for udev | ||
6 | VIRTUAL-RUNTIME_dev_manager = "" | ||
7 | |||
8 | |||
9 | # | ||
10 | # Enea Specific Packages | ||
11 | # | ||
12 | IMAGE_FEATURES += "ssh-server-dropbear" | ||
13 | |||
14 | IMAGE_INSTALL = " \ | ||
15 | packagegroup-enea-core-boot \ | ||
16 | pramfs-init \ | ||
17 | fuse \ | ||
18 | " | ||
19 | |||
20 | IMAGE_LINGUAS = "" | ||
21 | |||
22 | LICENSE = "MIT" | ||
23 | |||
24 | inherit core-image | ||
25 | inherit image_types_uboot | ||
26 | |||
27 | IMAGE_FSTYPES += "ext2.gz.u-boot ext3 tar.gz" | ||
28 | |||
29 | # The bigger of below two will be chosen | ||
30 | IMAGE_ROOTFS_SIZE = "1" | ||
31 | # Increased the overhead factor to be able to build via nfs. | ||
32 | IMAGE_OVERHEAD_FACTOR = "2" | ||
diff --git a/images/enea-image-test-bash.bb b/images/enea-image-test-bash.bb new file mode 100644 index 0000000..b6d3305 --- /dev/null +++ b/images/enea-image-test-bash.bb | |||
@@ -0,0 +1,22 @@ | |||
1 | IMAGE_FSTYPES += "ext2.gz.u-boot ext3 tar.gz" | ||
2 | IMAGE_FEATURES += "ptest-pkgs" | ||
3 | IMAGE_FEATURES += "ssh-server-openssh" | ||
4 | |||
5 | PERF ?= "perf" | ||
6 | PERF_armv5 ?= "" | ||
7 | PERF_armv6 ?= "" | ||
8 | PERF_armv7a ?= "" | ||
9 | |||
10 | IMAGE_INSTALL = " \ | ||
11 | packagegroup-enea-core-boot \ | ||
12 | packagegroup-enea-ptest \ | ||
13 | packagegroup-enea-ddt \ | ||
14 | packagegroup-enea-sys \ | ||
15 | packagegroup-enea-rt-tools \ | ||
16 | openssh \ | ||
17 | console-tools \ | ||
18 | ${PERF}\ | ||
19 | " | ||
20 | |||
21 | inherit core-image | ||
22 | inherit image_types_uboot | ||
diff --git a/images/enea-image-test-busybox.bb b/images/enea-image-test-busybox.bb new file mode 100644 index 0000000..4c371e0 --- /dev/null +++ b/images/enea-image-test-busybox.bb | |||
@@ -0,0 +1,12 @@ | |||
1 | IMAGE_FSTYPES += "ext2.gz.u-boot ext3 tar.gz" | ||
2 | IMAGE_FEATURES += "ptest-pkgs" | ||
3 | IMAGE_FEATURES += "ssh-server-dropbear" | ||
4 | |||
5 | IMAGE_INSTALL = " \ | ||
6 | packagegroup-enea-core-boot \ | ||
7 | packagegroup-enea-ptest \ | ||
8 | packagegroup-enea-sys \ | ||
9 | " | ||
10 | |||
11 | inherit core-image | ||
12 | inherit image_types_uboot | ||
diff --git a/recipes-append/busybox/busybox_1.22.1.bbappend b/recipes-append/busybox/busybox_1.22.1.bbappend new file mode 100644 index 0000000..33ffdc5 --- /dev/null +++ b/recipes-append/busybox/busybox_1.22.1.bbappend | |||
@@ -0,0 +1,5 @@ | |||
1 | do_prepare_config_append () { | ||
2 | sed -i -e 's/# CONFIG_CHRT is not set/CONFIG_CHRT=y/' .config | ||
3 | sed -i -e 's/# CONFIG_TASKSET is not set/CONFIG_TASKSET=y/' .config | ||
4 | sed -i -e 's/# CONFIG_FEATURE_TASKSET_FANCY is not set/CONFIG_FEATURE_TASKSET_FANCY=y/' .config | ||
5 | } \ No newline at end of file | ||
diff --git a/recipes-append/eglibc/eglibc_2.19.bbappend b/recipes-append/eglibc/eglibc_2.19.bbappend new file mode 100644 index 0000000..e95b480 --- /dev/null +++ b/recipes-append/eglibc/eglibc_2.19.bbappend | |||
@@ -0,0 +1,5 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "\ | ||
4 | file://glibc-fedora-linux-tcsetattr.patch \ | ||
5 | " | ||
diff --git a/recipes-append/eglibc/files/glibc-fedora-linux-tcsetattr.patch b/recipes-append/eglibc/files/glibc-fedora-linux-tcsetattr.patch new file mode 100644 index 0000000..ca9030d --- /dev/null +++ b/recipes-append/eglibc/files/glibc-fedora-linux-tcsetattr.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c | ||
2 | --- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 | ||
3 | +++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 | ||
4 | @@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios | ||
5 | { | ||
6 | struct __kernel_termios k_termios; | ||
7 | unsigned long int cmd; | ||
8 | + int retval; | ||
9 | |||
10 | switch (optional_actions) | ||
11 | { | ||
12 | @@ -79,6 +80,35 @@ tcsetattr (fd, optional_actions, termios | ||
13 | memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0], | ||
14 | __KERNEL_NCCS * sizeof (cc_t)); | ||
15 | |||
16 | - return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); | ||
17 | + retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); | ||
18 | + | ||
19 | + if (retval == 0 && cmd == TCSETS) | ||
20 | + { | ||
21 | + /* The Linux kernel has a bug which silently ignore the invalid | ||
22 | + c_cflag on pty. We have to check it here. */ | ||
23 | + int save = errno; | ||
24 | + retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios); | ||
25 | + if (retval) | ||
26 | + { | ||
27 | + /* We cannot verify if the setting is ok. We don't return | ||
28 | + an error (?). */ | ||
29 | + __set_errno (save); | ||
30 | + retval = 0; | ||
31 | + } | ||
32 | + else if ((termios_p->c_cflag & (PARENB | CREAD)) | ||
33 | + != (k_termios.c_cflag & (PARENB | CREAD)) | ||
34 | + || ((termios_p->c_cflag & CSIZE) | ||
35 | + && ((termios_p->c_cflag & CSIZE) | ||
36 | + != (k_termios.c_cflag & CSIZE)))) | ||
37 | + { | ||
38 | + /* It looks like the Linux kernel silently changed the | ||
39 | + PARENB/CREAD/CSIZE bits in c_cflag. Report it as an | ||
40 | + error. */ | ||
41 | + __set_errno (EINVAL); | ||
42 | + retval = -1; | ||
43 | + } | ||
44 | + } | ||
45 | + | ||
46 | + return retval; | ||
47 | } | ||
48 | libc_hidden_def (tcsetattr) | ||
49 | |||
diff --git a/recipes-append/hv-cfg/hv-cfg_git.bbappend b/recipes-append/hv-cfg/hv-cfg_git.bbappend new file mode 100644 index 0000000..ff749c9 --- /dev/null +++ b/recipes-append/hv-cfg/hv-cfg_git.bbappend | |||
@@ -0,0 +1,2 @@ | |||
1 | # Set to SDK 1.2 release, and override AUTOREV | ||
2 | SRCREV = "102ab848d94f3c04f364ed273d0e00b21b0266f4" | ||
diff --git a/recipes-append/ltp/ltp_20140115.bbappend b/recipes-append/ltp/ltp_20140115.bbappend new file mode 100644 index 0000000..59a4341 --- /dev/null +++ b/recipes-append/ltp/ltp_20140115.bbappend | |||
@@ -0,0 +1,3 @@ | |||
1 | do_compile_prepend () { | ||
2 | ( make -C ${B}/testcases/open_posix_testsuite generate-makefiles conformance-all tools-all functional-all stress-all ) | ||
3 | } | ||
diff --git a/recipes-append/oprofile/files/oprofile-e500mc.patch b/recipes-append/oprofile/files/oprofile-e500mc.patch new file mode 100644 index 0000000..f784ae6 --- /dev/null +++ b/recipes-append/oprofile/files/oprofile-e500mc.patch | |||
@@ -0,0 +1,2095 @@ | |||
1 | diff -uNr a/events/Makefile.am b/events/Makefile.am | ||
2 | --- a/events/Makefile.am 2012-08-27 20:59:13.000000000 +0200 | ||
3 | +++ b/events/Makefile.am 2013-02-07 07:06:04.168567619 +0100 | ||
4 | @@ -72,6 +72,7 @@ | ||
5 | ppc/7450/events ppc/7450/unit_masks \ | ||
6 | ppc/e500/events ppc/e500/unit_masks \ | ||
7 | ppc/e500v2/events ppc/e500v2/unit_masks \ | ||
8 | + ppc/e500mc/events ppc/e500mc/unit_masks \ | ||
9 | ppc/e300/events ppc/e300/unit_masks \ | ||
10 | tile/tile64/events tile/tile64/unit_masks \ | ||
11 | tile/tilepro/events tile/tilepro/unit_masks \ | ||
12 | diff -uNr a/events/ppc/e500mc/events b/events/ppc/e500mc/events | ||
13 | --- a/events/ppc/e500mc/events 1970-01-01 01:00:00.000000000 +0100 | ||
14 | +++ b/events/ppc/e500mc/events 2013-02-07 07:03:57.990063725 +0100 | ||
15 | @@ -0,0 +1,83 @@ | ||
16 | +# e500 Events | ||
17 | +# | ||
18 | +event:0x1 counters:0,1,2,3 um:zero minimum:100 name:CPU_CLK : Cycles | ||
19 | +event:0x2 counters:0,1,2,3 um:zero minimum:500 name:COMPLETED_INSNS : Completed Instructions (0, 1, or 2 per cycle) | ||
20 | +event:0x3 counters:0,1,2,3 um:zero minimum:500 name:COMPLETED_OPS : Completed Micro-ops (counts 2 for load/store w/update) | ||
21 | +event:0x4 counters:0,1,2,3 um:zero minimum:500 name:INSTRUCTION_FETCHES : Instruction fetches | ||
22 | +event:0x5 counters:0,1,2,3 um:zero minimum:500 name:DECODED_OPS : Micro-ops decoded | ||
23 | +event:0x8 counters:0,1,2,3 um:zero minimum:500 name:COMPLETED_BRANCHES : Branch Instructions completed | ||
24 | +event:0x9 counters:0,1,2,3 um:zero minimum:500 name:COMPLETED_LOAD_OPS : Load micro-ops completed | ||
25 | +event:0xa counters:0,1,2,3 um:zero minimum:500 name:COMPLETED_STORE_OPS : Store micro-ops completed | ||
26 | +event:0xb counters:0,1,2,3 um:zero minimum:500 name:COMPLETION_REDIRECTS : Number of completion buffer redirects | ||
27 | +event:0xc counters:0,1,2,3 um:zero minimum:500 name:BRANCHES_FINISHED : Branches finished | ||
28 | +event:0xd counters:0,1,2,3 um:zero minimum:500 name:TAKEN_BRANCHES_FINISHED : Taken branches finished | ||
29 | +event:0xe counters:0,1,2,3 um:zero minimum:500 name:BIFFED_BRANCHES_FINISHED : Biffed branches finished | ||
30 | +event:0xf counters:0,1,2,3 um:zero minimum:500 name:BRANCHES_MISPREDICTED : Branch instructions mispredicted due to direction, target, or IAB prediction | ||
31 | +event:0x10 counters:0,1,2,3 um:zero minimum:500 name:BRANCHES_MISPREDICTED_DIRECTION : Branches mispredicted due to direction prediction | ||
32 | +event:0x11 counters:0,1,2,3 um:zero minimum:500 name:BTB_HITS : Branches that hit in the BTB, or missed but are not taken | ||
33 | +event:0x12 counters:0,1,2,3 um:zero minimum:500 name:DECODE_STALLED : Cycles the instruction buffer was not empty, but 0 instructions decoded | ||
34 | +event:0x13 counters:0,1,2,3 um:zero minimum:500 name:ISSUE_STALLED : Cycles the issue buffer is not empty but 0 instructions issued | ||
35 | +event:0x14 counters:0,1,2,3 um:zero minimum:500 name:BRANCH_ISSUE_STALLED : Cycles the branch buffer is not empty but 0 instructions issued | ||
36 | +event:0x15 counters:0,1,2,3 um:zero minimum:500 name:SRS0_SCHEDULE_STALLED : Cycles SRS0 is not empty but 0 instructions scheduled | ||
37 | +event:0x16 counters:0,1,2,3 um:zero minimum:500 name:SRS1_SCHEDULE_STALLED : Cycles SRS1 is not empty but 0 instructions scheduled | ||
38 | +event:0x17 counters:0,1,2,3 um:zero minimum:500 name:VRS_SCHEDULE_STALLED : Cycles VRS is not empty but 0 instructions scheduled | ||
39 | +event:0x18 counters:0,1,2,3 um:zero minimum:500 name:LRS_SCHEDULE_STALLED : Cycles LRS is not empty but 0 instructions scheduled | ||
40 | +event:0x19 counters:0,1,2,3 um:zero minimum:500 name:BRS_SCHEDULE_STALLED : Cycles BRS is not empty but 0 instructions scheduled Load/Store, Data Cache, and dLFB Events | ||
41 | +event:0x1a counters:0,1,2,3 um:zero minimum:500 name:TOTAL_TRANSLATED : Total Ldst microops translated. | ||
42 | +event:0x1b counters:0,1,2,3 um:zero minimum:500 name:LOADS_TRANSLATED : Number of cacheable L* or EVL* microops translated. (This includes microops from load-multiple, load-update, and load-context instructions.) | ||
43 | +event:0x1c counters:0,1,2,3 um:zero minimum:500 name:STORES_TRANSLATED : Number of cacheable ST* or EVST* microops translated. (This includes microops from store-multiple, store-update, and save-context instructions.) | ||
44 | +event:0x1d counters:0,1,2,3 um:zero minimum:500 name:TOUCHES_TRANSLATED : Number of cacheable DCBT and DCBTST instructions translated (L1 only) (Does not count touches that are converted to nops i.e. exceptions, noncacheable, hid0[nopti] bit is set.) | ||
45 | +event:0x1e counters:0,1,2,3 um:zero minimum:500 name:CACHEOPS_TRANSLATED : Number of dcba, dcbf, dcbst, and dcbz instructions translated (e500 traps on dcbi) | ||
46 | +event:0x1f counters:0,1,2,3 um:zero minimum:500 name:CACHEINHIBITED_ACCESSES_TRANSLATED : Number of cache inhibited accesses translated | ||
47 | +event:0x20 counters:0,1,2,3 um:zero minimum:500 name:GUARDED_LOADS_TRANSLATED : Number of guarded loads translated | ||
48 | +event:0x21 counters:0,1,2,3 um:zero minimum:500 name:WRITETHROUGH_STORES_TRANSLATED : Number of write-through stores translated | ||
49 | +event:0x22 counters:0,1,2,3 um:zero minimum:500 name:MISALIGNED_ACCESSES_TRANSLATED : Number of misaligned load or store accesses translated. | ||
50 | +event:0x23 counters:0,1,2,3 um:zero minimum:500 name:TOTAL_ALLOCATED_DLFB : Total allocated to dLFB | ||
51 | +event:0x24 counters:0,1,2,3 um:zero minimum:500 name:LOADS_TRANSLATED_ALLOCATED_DLFB : Loads translated and allocated to dLFB (Applies to same class of instructions as loads translated.) | ||
52 | +event:0x25 counters:0,1,2,3 um:zero minimum:500 name:STORES_COMPLETED_ALLOCATED_DLFB : Stores completed and allocated to dLFB (Applies to same class of instructions as stores translated.) | ||
53 | +event:0x26 counters:0,1,2,3 um:zero minimum:500 name:TOUCHES_TRANSLATED_ALLOCATED_DLFB : Touches translated and allocated to dLFB (Applies to same class of instructions as touches translated.) | ||
54 | +event:0x27 counters:0,1,2,3 um:zero minimum:500 name:STORES_COMPLETED : Number of cacheable ST* or EVST* microops completed. (Applies to the same class of instructions as stores translated.) | ||
55 | +event:0x28 counters:0,1,2,3 um:zero minimum:500 name:DL1_LOCKS : Number of cache lines locked in the dL1. (Counts a lock even if an overlock condition is encountered.) | ||
56 | +event:0x29 counters:0,1,2,3 um:zero minimum:500 name:DL1_RELOADS : This is historically used to determine dcache miss rate (along with loads/stores completed). This counts dL1 reloads for any reason. | ||
57 | +event:0x2a counters:0,1,2,3 um:zero minimum:500 name:DL1_CASTOUTS : dL1 castouts. Does not count castouts due to DCBF. | ||
58 | +event:0x2b counters:0,1,2,3 um:zero minimum:500 name:DETECTED_REPLAYS : Times detected replay condition - Load miss with dLFB full. | ||
59 | +event:0x2c counters:0,1,2,3 um:zero minimum:500 name:LOAD_MISS_QUEUE_FULL_REPLAYS : Load miss with load queue full. | ||
60 | +event:0x2d counters:0,1,2,3 um:zero minimum:500 name:LOAD_GUARDED_MISS_NOT_LAST_REPLAYS : Load guarded miss when the load is not yet at the bottom of the completion buffer. | ||
61 | +event:0x2e counters:0,1,2,3 um:zero minimum:500 name:STORE_TRANSLATED_QUEUE_FULL_REPLAYS : Translate a store when the StQ is full. | ||
62 | +event:0x2f counters:0,1,2,3 um:zero minimum:500 name:ADDRESS_COLLISION_REPLAYS : Address collision. | ||
63 | +event:0x30 counters:0,1,2,3 um:zero minimum:500 name:DMMU_MISS_REPLAYS : DMMU_MISS_REPLAYS : DMMU miss. | ||
64 | +event:0x31 counters:0,1,2,3 um:zero minimum:500 name:DMMU_BUSY_REPLAYS : DMMU_BUSY_REPLAYS : DMMU busy. | ||
65 | +event:0x32 counters:0,1,2,3 um:zero minimum:500 name:SECOND_PART_MISALIGNED_AFTER_MISS_REPLAYS : Second part of misaligned access when first part missed in cache. | ||
66 | +event:0x33 counters:0,1,2,3 um:zero minimum:500 name:LOAD_MISS_DLFB_FULL_CYCLES : Cycles stalled on replay condition - Load miss with dLFB full. | ||
67 | +event:0x34 counters:0,1,2,3 um:zero minimum:500 name:LOAD_MISS_QUEUE_FULL_CYCLES : Cycles stalled on replay condition - Load miss with load queue full. | ||
68 | +event:0x35 counters:0,1,2,3 um:zero minimum:500 name:LOAD_GUARDED_MISS_NOT_LAST_CYCLES : Cycles stalled on replay condition - Load guarded miss when the load is not yet at the bottom of the completion buffer. | ||
69 | +event:0x36 counters:0,1,2,3 um:zero minimum:500 name:STORE_TRANSLATED_QUEUE_FULL_CYCLES : Cycles stalled on replay condition - Translate a store when the StQ is full. | ||
70 | +event:0x37 counters:0,1,2,3 um:zero minimum:500 name:ADDRESS_COLLISION_CYCLES : Cycles stalled on replay condition - Address collision. | ||
71 | +event:0x38 counters:0,1,2,3 um:zero minimum:500 name:DMMU_MISS_CYCLES : Cycles stalled on replay condition - DMMU miss. | ||
72 | +event:0x39 counters:0,1,2,3 um:zero minimum:500 name:DMMU_BUSY_CYCLES : Cycles stalled on replay condition - DMMU busy. | ||
73 | +event:0x3a counters:0,1,2,3 um:zero minimum:500 name:SECOND_PART_MISALIGNED_AFTER_MISS_CYCLES : Cycles stalled on replay condition - Second part of misaligned access when first part missed in cache. | ||
74 | +event:0x3b counters:0,1,2,3 um:zero minimum:500 name:IL1_LOCKS : Number of cache lines locked in the iL1. (Counts a lock even if an overlock condition is encountered.) | ||
75 | +event:0x3c counters:0,1,2,3 um:zero minimum:500 name:IL1_FETCH_RELOADS : This is historically used to determine icache miss rate (along with instructions completed) Reloads due to demand fetch. | ||
76 | +event:0x3d counters:0,1,2,3 um:zero minimum:500 name:FETCHES : Counts the number of fetches that write at least one instruction to the instruction buffer. (With instruction fetched, can used to compute instructions-per-fetch) | ||
77 | +event:0x3e counters:0,1,2,3 um:zero minimum:500 name:IMMU_TLB4K_RELOADS : iMMU TLB4K reloads | ||
78 | +event:0x3f counters:0,1,2,3 um:zero minimum:500 name:IMMU_VSP_RELOADS : iMMU VSP reloads | ||
79 | +event:0x40 counters:0,1,2,3 um:zero minimum:500 name:DMMU_TLB4K_RELOADS : dMMU TLB4K reloads | ||
80 | +event:0x41 counters:0,1,2,3 um:zero minimum:500 name:DMMU_VSP_RELOADS : dMMU VSP reloads | ||
81 | +event:0x42 counters:0,1,2,3 um:zero minimum:500 name:L2MMU_MISSES : Counts iTLB/dTLB error interrupt | ||
82 | +event:0x43 counters:0,1,2,3 um:zero minimum:500 name:BIU_MASTER_REQUESTS : Number of master transactions. (Number of master TSs.) | ||
83 | +event:0x44 counters:0,1,2,3 um:zero minimum:500 name:BIU_MASTER_I_REQUESTS : Number of master I-Side transactions. (Number of master I-Side TSs.) | ||
84 | +event:0x45 counters:0,1,2,3 um:zero minimum:500 name:BIU_MASTER_D_REQUESTS : Number of master D-Side transactions. (Number of master D-Side TSs.) | ||
85 | +event:0x46 counters:0,1,2,3 um:zero minimum:500 name:BIU_MASTER_D_CASTOUT_REQUESTS : Number of master D-Side non-program-demand castout transactions. This counts replacement pushes and snoop pushes. This does not count DCBF castouts. (Number of master D-side non-program-demand castout TSs.) | ||
86 | +event:0x47 counters:0,1,2,3 um:zero minimum:500 name:BIU_MASTER_RETRIES : Number of transactions which were initiated by this processor which were retried on the BIU interface. (Number of master ARTRYs.) | ||
87 | +event:0x48 counters:0,1,2,3 um:zero minimum:500 name:SNOOP_REQUESTS : Number of externally generated snoop requests. (Counts snoop TSs.) | ||
88 | +event:0x49 counters:0,1,2,3 um:zero minimum:500 name:SNOOP_HITS : Number of snoop hits on all D-side resources regardless of the cache state (modified, exclusive, or shared) | ||
89 | +event:0x4a counters:0,1,2,3 um:zero minimum:500 name:SNOOP_PUSHES : Number of snoop pushes from all D-side resources. (Counts snoop ARTRY/WOPs.) | ||
90 | +event:0x4b counters:0,1,2,3 um:zero minimum:500 name:SNOOP_RETRIES : Number of snoop requests retried. (Counts snoop ARTRYs.) | ||
91 | +event:0x52 counters:0,1,2,3 um:zero minimum:500 name:PMC0_OVERFLOW : Counts the number of times PMC0[32] transitioned from 1 to 0. | ||
92 | +event:0x53 counters:0,1,2,3 um:zero minimum:500 name:PMC1_OVERFLOW : Counts the number of times PMC1[32] transitioned from 1 to 0. | ||
93 | +event:0x54 counters:0,1,2,3 um:zero minimum:500 name:PMC2_OVERFLOW : Counts the number of times PMC2[32] transitioned from 1 to 0. | ||
94 | +event:0x55 counters:0,1,2,3 um:zero minimum:500 name:PMC3_OVERFLOW : Counts the number of times PMC3[32] transitioned from 1 to 0. | ||
95 | +event:0x56 counters:0,1,2,3 um:zero minimum:500 name:INTERRUPTS : Number of interrupts taken | ||
96 | +event:0x57 counters:0,1,2,3 um:zero minimum:500 name:EXTERNAL_INTERRUPTS : Number of external input interrupts taken | ||
97 | +event:0x58 counters:0,1,2,3 um:zero minimum:500 name:CRITICAL_INTERRUPTS : Number of critical input interrupts taken | ||
98 | +event:0x59 counters:0,1,2,3 um:zero minimum:500 name:SC_TRAP_INTERRUPTS : Number of system call and trap interrupts | ||
99 | diff -uNr a/events/ppc/e500mc/unit_masks b/events/ppc/e500mc/unit_masks | ||
100 | --- a/events/ppc/e500mc/unit_masks 1970-01-01 01:00:00.000000000 +0100 | ||
101 | +++ b/events/ppc/e500mc/unit_masks 2013-02-07 07:03:57.994063551 +0100 | ||
102 | @@ -0,0 +1,4 @@ | ||
103 | +# e500 possible unit masks | ||
104 | +# | ||
105 | +name:zero type:mandatory default:0x0 | ||
106 | + 0x0 No unit mask | ||
107 | diff -uNr a/libop/op_cpu_type.c b/libop/op_cpu_type.c | ||
108 | --- a/libop/op_cpu_type.c 2012-08-27 20:59:14.000000000 +0200 | ||
109 | +++ b/libop/op_cpu_type.c 2013-02-07 07:03:57.994063551 +0100 | ||
110 | @@ -66,6 +66,7 @@ | ||
111 | { "NEC VR5500", "mips/vr5500", CPU_MIPS_VR5500, 2 }, | ||
112 | { "e500", "ppc/e500", CPU_PPC_E500, 4 }, | ||
113 | { "e500v2", "ppc/e500v2", CPU_PPC_E500_2, 4 }, | ||
114 | + { "e500mc", "ppc/e500mc", CPU_PPC_E500MC, 4 }, | ||
115 | { "Core Solo / Duo", "i386/core", CPU_CORE, 2 }, | ||
116 | { "PowerPC G4", "ppc/7450", CPU_PPC_7450, 6 }, | ||
117 | { "Core 2", "i386/core_2", CPU_CORE_2, 2 }, | ||
118 | diff -uNr a/libop/op_cpu_type.c.orig b/libop/op_cpu_type.c.orig | ||
119 | --- a/libop/op_cpu_type.c.orig 1970-01-01 01:00:00.000000000 +0100 | ||
120 | +++ b/libop/op_cpu_type.c.orig 2013-02-07 07:01:39.408100801 +0100 | ||
121 | @@ -0,0 +1,621 @@ | ||
122 | +/** | ||
123 | + * @file op_cpu_type.c | ||
124 | + * CPU type determination | ||
125 | + * | ||
126 | + * @remark Copyright 2002 OProfile authors | ||
127 | + * @remark Read the file COPYING | ||
128 | + * | ||
129 | + * @author John Levon | ||
130 | + * @author Philippe Elie | ||
131 | + */ | ||
132 | + | ||
133 | +#include <stdio.h> | ||
134 | +#include <stdlib.h> | ||
135 | +#include <string.h> | ||
136 | +#include <sys/utsname.h> | ||
137 | +#include <ctype.h> | ||
138 | +#include <errno.h> | ||
139 | +#include <fnmatch.h> | ||
140 | + | ||
141 | +#include "op_cpu_type.h" | ||
142 | +#include "op_hw_specific.h" | ||
143 | + | ||
144 | +struct cpu_descr { | ||
145 | + char const * pretty; | ||
146 | + char const * name; | ||
147 | + op_cpu cpu; | ||
148 | + unsigned int nr_counters; | ||
149 | +}; | ||
150 | + | ||
151 | +static struct cpu_descr const cpu_descrs[MAX_CPU_TYPE] = { | ||
152 | + { "Pentium Pro", "i386/ppro", CPU_PPRO, 2 }, | ||
153 | + { "PII", "i386/pii", CPU_PII, 2 }, | ||
154 | + { "PIII", "i386/piii", CPU_PIII, 2 }, | ||
155 | + { "Athlon", "i386/athlon", CPU_ATHLON, 4 }, | ||
156 | + { "CPU with timer interrupt", "timer", CPU_TIMER_INT, 1 }, | ||
157 | + { "CPU with RTC device", "rtc", CPU_RTC, 1 }, | ||
158 | + { "P4 / Xeon", "i386/p4", CPU_P4, 8 }, | ||
159 | + { "IA64", "ia64/ia64", CPU_IA64, 4 }, | ||
160 | + { "Itanium", "ia64/itanium", CPU_IA64_1, 4 }, | ||
161 | + { "Itanium 2", "ia64/itanium2", CPU_IA64_2, 4 }, | ||
162 | + { "AMD64 processors", "x86-64/hammer", CPU_HAMMER, 4 }, | ||
163 | + { "P4 / Xeon with 2 hyper-threads", "i386/p4-ht", CPU_P4_HT2, 4 }, | ||
164 | + { "Alpha EV4", "alpha/ev4", CPU_AXP_EV4, 2 }, | ||
165 | + { "Alpha EV5", "alpha/ev5", CPU_AXP_EV5, 3 }, | ||
166 | + { "Alpha PCA56", "alpha/pca56", CPU_AXP_PCA56, 3 }, | ||
167 | + { "Alpha EV6", "alpha/ev6", CPU_AXP_EV6, 2 }, | ||
168 | + { "Alpha EV67", "alpha/ev67", CPU_AXP_EV67, 20 }, | ||
169 | + { "Pentium M (P6 core)", "i386/p6_mobile", CPU_P6_MOBILE, 2 }, | ||
170 | + { "ARM/XScale PMU1", "arm/xscale1", CPU_ARM_XSCALE1, 3 }, | ||
171 | + { "ARM/XScale PMU2", "arm/xscale2", CPU_ARM_XSCALE2, 5 }, | ||
172 | + { "ppc64 POWER4", "ppc64/power4", CPU_PPC64_POWER4, 8 }, | ||
173 | + { "ppc64 POWER5", "ppc64/power5", CPU_PPC64_POWER5, 6 }, | ||
174 | + { "ppc64 POWER5+", "ppc64/power5+", CPU_PPC64_POWER5p, 6 }, | ||
175 | + { "ppc64 970", "ppc64/970", CPU_PPC64_970, 8 }, | ||
176 | + { "MIPS 20K", "mips/20K", CPU_MIPS_20K, 1}, | ||
177 | + { "MIPS 24K", "mips/24K", CPU_MIPS_24K, 2}, | ||
178 | + { "MIPS 25K", "mips/25K", CPU_MIPS_25K, 2}, | ||
179 | + { "MIPS 34K", "mips/34K", CPU_MIPS_34K, 2}, | ||
180 | + { "MIPS 5K", "mips/5K", CPU_MIPS_5K, 2}, | ||
181 | + { "MIPS R10000", "mips/r10000", CPU_MIPS_R10000, 2 }, | ||
182 | + { "MIPS R12000", "mips/r12000", CPU_MIPS_R12000, 4 }, | ||
183 | + { "QED RM7000", "mips/rm7000", CPU_MIPS_RM7000, 1 }, | ||
184 | + { "PMC-Sierra RM9000", "mips/rm9000", CPU_MIPS_RM9000, 2 }, | ||
185 | + { "Sibyte SB1", "mips/sb1", CPU_MIPS_SB1, 4 }, | ||
186 | + { "NEC VR5432", "mips/vr5432", CPU_MIPS_VR5432, 2 }, | ||
187 | + { "NEC VR5500", "mips/vr5500", CPU_MIPS_VR5500, 2 }, | ||
188 | + { "e500", "ppc/e500", CPU_PPC_E500, 4 }, | ||
189 | + { "e500v2", "ppc/e500v2", CPU_PPC_E500_2, 4 }, | ||
190 | + { "Core Solo / Duo", "i386/core", CPU_CORE, 2 }, | ||
191 | + { "PowerPC G4", "ppc/7450", CPU_PPC_7450, 6 }, | ||
192 | + { "Core 2", "i386/core_2", CPU_CORE_2, 2 }, | ||
193 | + { "ppc64 POWER6", "ppc64/power6", CPU_PPC64_POWER6, 4 }, | ||
194 | + { "ppc64 970MP", "ppc64/970MP", CPU_PPC64_970MP, 8 }, | ||
195 | + { "ppc64 Cell Broadband Engine", "ppc64/cell-be", CPU_PPC64_CELL, 8 }, | ||
196 | + { "AMD64 family10", "x86-64/family10", CPU_FAMILY10, 4 }, | ||
197 | + { "ppc64 PA6T", "ppc64/pa6t", CPU_PPC64_PA6T, 6 }, | ||
198 | + { "ARM 11MPCore", "arm/mpcore", CPU_ARM_MPCORE, 2 }, | ||
199 | + { "ARM V6 PMU", "arm/armv6", CPU_ARM_V6, 3 }, | ||
200 | + { "ppc64 POWER5++", "ppc64/power5++", CPU_PPC64_POWER5pp, 6 }, | ||
201 | + { "e300", "ppc/e300", CPU_PPC_E300, 4 }, | ||
202 | + { "AVR32", "avr32", CPU_AVR32, 3 }, | ||
203 | + { "ARM Cortex-A8", "arm/armv7", CPU_ARM_V7, 5 }, | ||
204 | + { "Intel Architectural Perfmon", "i386/arch_perfmon", CPU_ARCH_PERFMON, 0}, | ||
205 | + { "AMD64 family11h", "x86-64/family11h", CPU_FAMILY11H, 4 }, | ||
206 | + { "ppc64 POWER7", "ppc64/power7", CPU_PPC64_POWER7, 6 }, | ||
207 | + { "ppc64 compat version 1", "ppc64/ibm-compat-v1", CPU_PPC64_IBM_COMPAT_V1, 4 }, | ||
208 | + { "Intel Core/i7", "i386/core_i7", CPU_CORE_I7, 4 }, | ||
209 | + { "Intel Atom", "i386/atom", CPU_ATOM, 2 }, | ||
210 | + { "Loongson2", "mips/loongson2", CPU_MIPS_LOONGSON2, 2 }, | ||
211 | + { "Intel Nehalem microarchitecture", "i386/nehalem", CPU_NEHALEM, 4 }, | ||
212 | + { "ARM Cortex-A9", "arm/armv7-ca9", CPU_ARM_V7_CA9, 7 }, | ||
213 | + { "MIPS 74K", "mips/74K", CPU_MIPS_74K, 4}, | ||
214 | + { "MIPS 1004K", "mips/1004K", CPU_MIPS_1004K, 2}, | ||
215 | + { "AMD64 family12h", "x86-64/family12h", CPU_FAMILY12H, 4 }, | ||
216 | + { "AMD64 family14h", "x86-64/family14h", CPU_FAMILY14H, 4 }, | ||
217 | + { "AMD64 family15h", "x86-64/family15h", CPU_FAMILY15H, 6 }, | ||
218 | + { "Intel Westmere microarchitecture", "i386/westmere", CPU_WESTMERE, 4 }, | ||
219 | + { "ARMv7 Scorpion", "arm/armv7-scorpion", CPU_ARM_SCORPION, 5 }, | ||
220 | + { "ARMv7 ScorpionMP", "arm/armv7-scorpionmp", CPU_ARM_SCORPIONMP, 5 }, | ||
221 | + { "Intel Sandy Bridge microarchitecture", "i386/sandybridge", CPU_SANDYBRIDGE, 8 }, | ||
222 | + { "TILE64", "tile/tile64", CPU_TILE_TILE64, 2 }, | ||
223 | + { "TILEPro", "tile/tilepro", CPU_TILE_TILEPRO, 4 }, | ||
224 | + { "TILE-GX", "tile/tilegx", CPU_TILE_TILEGX, 4 }, | ||
225 | + { "IBM System z10", "s390/z10", CPU_S390_Z10, 1 }, | ||
226 | + { "IBM zEnterprise z196", "s390/z196", CPU_S390_Z196, 1 }, | ||
227 | + { "Intel Ivy Bridge microarchitecture", "i386/ivybridge", CPU_IVYBRIDGE, 8 }, | ||
228 | + { "ARM Cortex-A5", "arm/armv7-ca5", CPU_ARM_V7_CA5, 3 }, | ||
229 | + { "ARM Cortex-A7", "arm/armv7-ca7", CPU_ARM_V7_CA7, 5 }, | ||
230 | + { "ARM Cortex-A15", "arm/armv7-ca15", CPU_ARM_V7_CA15, 7 }, | ||
231 | +}; | ||
232 | + | ||
233 | +static size_t const nr_cpu_descrs = sizeof(cpu_descrs) / sizeof(struct cpu_descr); | ||
234 | + | ||
235 | +static char * _get_cpuinfo_cpu_type_line(char * buf, int len, const char * prefix, int token) | ||
236 | +{ | ||
237 | + char * ret = NULL; | ||
238 | + char * end = NULL; | ||
239 | + int prefix_len = strlen(prefix); | ||
240 | + FILE * fp = fopen("/proc/cpuinfo", "r"); | ||
241 | + | ||
242 | + if (!fp) { | ||
243 | + perror("Unable to open /proc/cpuinfo\n"); | ||
244 | + return ret; | ||
245 | + } | ||
246 | + | ||
247 | + memset(buf, 0, len); | ||
248 | + | ||
249 | + while (!ret) { | ||
250 | + if (fgets(buf, len, fp) == NULL) { | ||
251 | + fprintf(stderr, "Did not find processor type in /proc/cpuinfo.\n"); | ||
252 | + break; | ||
253 | + } | ||
254 | + if (!strncmp(buf, prefix, prefix_len)) { | ||
255 | + ret = buf + prefix_len; | ||
256 | + /* Strip leading whitespace and ':' delimiter */ | ||
257 | + while (*ret && (*ret == ':' || isspace(*ret))) | ||
258 | + ++ret; | ||
259 | + buf = ret; | ||
260 | + /* if token param 0 then read the whole line else | ||
261 | + * first token only. */ | ||
262 | + if (token == 0) { | ||
263 | + /* Trim trailing whitespace */ | ||
264 | + end = buf + strlen(buf) - 1; | ||
265 | + while (isspace(*end)) | ||
266 | + --end; | ||
267 | + *(++end) = '\0'; | ||
268 | + break; | ||
269 | + } else { | ||
270 | + /* Scan ahead to the end of the token */ | ||
271 | + while (*buf && !isspace(*buf)) | ||
272 | + ++buf; | ||
273 | + /* Trim trailing whitespace */ | ||
274 | + *buf = '\0'; | ||
275 | + break; | ||
276 | + } | ||
277 | + } | ||
278 | + } | ||
279 | + | ||
280 | + fclose(fp); | ||
281 | + return ret; | ||
282 | +} | ||
283 | + | ||
284 | +static char * _get_cpuinfo_cpu_type(char * buf, int len, const char * prefix) | ||
285 | +{ | ||
286 | + return _get_cpuinfo_cpu_type_line(buf, len, prefix, 1); | ||
287 | +} | ||
288 | + | ||
289 | +static op_cpu _get_ppc64_cpu_type(void) | ||
290 | +{ | ||
291 | + int i; | ||
292 | + size_t len; | ||
293 | + char line[100], cpu_type_str[64], cpu_name_lowercase[64], * cpu_name; | ||
294 | + | ||
295 | + cpu_name = _get_cpuinfo_cpu_type(line, 100, "cpu"); | ||
296 | + if (!cpu_name) | ||
297 | + return CPU_NO_GOOD; | ||
298 | + | ||
299 | + len = strlen(cpu_name); | ||
300 | + for (i = 0; i < (int)len ; i++) | ||
301 | + cpu_name_lowercase[i] = tolower(cpu_name[i]); | ||
302 | + | ||
303 | + cpu_type_str[0] = '\0'; | ||
304 | + strcat(cpu_type_str, "ppc64/"); | ||
305 | + strncat(cpu_type_str, cpu_name_lowercase, len); | ||
306 | + return op_get_cpu_number(cpu_type_str); | ||
307 | +} | ||
308 | + | ||
309 | +static op_cpu _get_arm_cpu_type(void) | ||
310 | +{ | ||
311 | + unsigned long cpuid, vendorid; | ||
312 | + char line[100]; | ||
313 | + char * cpu_part, * cpu_implementer; | ||
314 | + | ||
315 | + cpu_implementer = _get_cpuinfo_cpu_type(line, 100, "CPU implementer"); | ||
316 | + if (!cpu_implementer) | ||
317 | + return CPU_NO_GOOD; | ||
318 | + | ||
319 | + errno = 0; | ||
320 | + vendorid = strtoul(cpu_implementer, NULL, 16); | ||
321 | + if (errno) { | ||
322 | + fprintf(stderr, "Unable to parse CPU implementer %s\n", cpu_implementer); | ||
323 | + return CPU_NO_GOOD; | ||
324 | + } | ||
325 | + | ||
326 | + cpu_part = _get_cpuinfo_cpu_type(line, 100, "CPU part"); | ||
327 | + if (!cpu_part) | ||
328 | + return CPU_NO_GOOD; | ||
329 | + | ||
330 | + errno = 0; | ||
331 | + cpuid = strtoul(cpu_part, NULL, 16); | ||
332 | + if (errno) { | ||
333 | + fprintf(stderr, "Unable to parse CPU part %s\n", cpu_part); | ||
334 | + return CPU_NO_GOOD; | ||
335 | + } | ||
336 | + | ||
337 | + if (vendorid == 0x41) { /* ARM Ltd. */ | ||
338 | + switch (cpuid) { | ||
339 | + case 0xb36: | ||
340 | + case 0xb56: | ||
341 | + case 0xb76: | ||
342 | + return op_get_cpu_number("arm/armv6"); | ||
343 | + case 0xb02: | ||
344 | + return op_get_cpu_number("arm/mpcore"); | ||
345 | + case 0xc05: | ||
346 | + return op_get_cpu_number("arm/armv7-ca5"); | ||
347 | + case 0xc07: | ||
348 | + return op_get_cpu_number("arm/armv7-ca7"); | ||
349 | + case 0xc08: | ||
350 | + return op_get_cpu_number("arm/armv7"); | ||
351 | + case 0xc09: | ||
352 | + return op_get_cpu_number("arm/armv7-ca9"); | ||
353 | + case 0xc0f: | ||
354 | + return op_get_cpu_number("arm/armv7-ca15"); | ||
355 | + } | ||
356 | + } else if (vendorid == 0x69) { /* Intel xscale */ | ||
357 | + switch (cpuid >> 9) { | ||
358 | + case 1: | ||
359 | + return op_get_cpu_number("arm/xscale1"); | ||
360 | + case 2: | ||
361 | + return op_get_cpu_number("arm/xscale2"); | ||
362 | + } | ||
363 | + } | ||
364 | + | ||
365 | + return CPU_NO_GOOD; | ||
366 | +} | ||
367 | + | ||
368 | +static op_cpu _get_tile_cpu_type(void) | ||
369 | +{ | ||
370 | + int i; | ||
371 | + size_t len; | ||
372 | + char line[100], cpu_type_str[64], cpu_name_lowercase[64], * cpu_name; | ||
373 | + | ||
374 | + cpu_name = _get_cpuinfo_cpu_type(line, 100, "model name"); | ||
375 | + if (!cpu_name) | ||
376 | + return CPU_NO_GOOD; | ||
377 | + | ||
378 | + len = strlen(cpu_name); | ||
379 | + for (i = 0; i < (int)len ; i++) | ||
380 | + cpu_name_lowercase[i] = tolower(cpu_name[i]); | ||
381 | + | ||
382 | + cpu_type_str[0] = '\0'; | ||
383 | + strcat(cpu_type_str, "tile/"); | ||
384 | + strncat(cpu_type_str, cpu_name_lowercase, len); | ||
385 | + return op_get_cpu_number(cpu_type_str); | ||
386 | +} | ||
387 | + | ||
388 | +#if defined(__x86_64__) || defined(__i386__) | ||
389 | +int op_is_cpu_vendor(char * vendor) | ||
390 | +{ | ||
391 | + return cpuid_vendor(vendor); | ||
392 | +} | ||
393 | + | ||
394 | +static unsigned cpuid_eax(unsigned func) | ||
395 | +{ | ||
396 | + cpuid_data d; | ||
397 | + | ||
398 | + cpuid(func, &d); | ||
399 | + return d.eax; | ||
400 | +} | ||
401 | + | ||
402 | +static inline int perfmon_available(void) | ||
403 | +{ | ||
404 | + unsigned eax; | ||
405 | + if (cpuid_eax(0) < 10) | ||
406 | + return 0; | ||
407 | + eax = cpuid_eax(10); | ||
408 | + if ((eax & 0xff) == 0) | ||
409 | + return 0; | ||
410 | + return (eax >> 8) & 0xff; | ||
411 | +} | ||
412 | + | ||
413 | +static int cpu_info_number(char *name, unsigned long *number) | ||
414 | +{ | ||
415 | + char buf[100]; | ||
416 | + char *end; | ||
417 | + | ||
418 | + if (!_get_cpuinfo_cpu_type(buf, sizeof buf, name)) | ||
419 | + return 0; | ||
420 | + *number = strtoul(buf, &end, 0); | ||
421 | + return end > buf; | ||
422 | +} | ||
423 | + | ||
424 | +static op_cpu _get_intel_cpu_type(void) | ||
425 | +{ | ||
426 | + unsigned eax, family, model; | ||
427 | + | ||
428 | + if (perfmon_available()) | ||
429 | + return op_cpu_specific_type(CPU_ARCH_PERFMON); | ||
430 | + | ||
431 | + /* Handle old non arch perfmon CPUs */ | ||
432 | + eax = cpuid_signature(); | ||
433 | + family = cpu_family(eax); | ||
434 | + model = cpu_model(eax); | ||
435 | + | ||
436 | + if (family == 6) { | ||
437 | + /* Reproduce kernel p6_init logic. Only for non arch perfmon cpus */ | ||
438 | + switch (model) { | ||
439 | + case 0 ... 2: | ||
440 | + return op_get_cpu_number("i386/ppro"); | ||
441 | + case 3 ... 5: | ||
442 | + return op_get_cpu_number("i386/pii"); | ||
443 | + case 6 ... 8: | ||
444 | + case 10 ... 11: | ||
445 | + return op_get_cpu_number("i386/piii"); | ||
446 | + case 9: | ||
447 | + case 13: | ||
448 | + return op_get_cpu_number("i386/p6_mobile"); | ||
449 | + } | ||
450 | + } else if (family == 15) { | ||
451 | + unsigned long siblings; | ||
452 | + | ||
453 | + /* Reproduce kernel p4_init() logic */ | ||
454 | + if (model > 6 || model == 5) | ||
455 | + return CPU_NO_GOOD; | ||
456 | + if (!cpu_info_number("siblings", &siblings) || | ||
457 | + siblings == 1) | ||
458 | + return op_get_cpu_number("i386/p4"); | ||
459 | + if (siblings == 2) | ||
460 | + return op_get_cpu_number("i386/p4-ht"); | ||
461 | + } | ||
462 | + return CPU_NO_GOOD; | ||
463 | +} | ||
464 | + | ||
465 | +static op_cpu _get_amd_cpu_type(void) | ||
466 | +{ | ||
467 | + unsigned eax, family, model; | ||
468 | + op_cpu ret = CPU_NO_GOOD; | ||
469 | + | ||
470 | + eax = cpuid_signature(); | ||
471 | + family = cpu_family(eax); | ||
472 | + model = cpu_model(eax); | ||
473 | + | ||
474 | + switch (family) { | ||
475 | + case 0x0f: | ||
476 | + ret = op_get_cpu_number("x86-64/hammer"); | ||
477 | + break; | ||
478 | + case 0x10: | ||
479 | + ret = op_get_cpu_number("x86-64/family10"); | ||
480 | + break; | ||
481 | + case 0x11: | ||
482 | + ret = op_get_cpu_number("x86-64/family11h"); | ||
483 | + break; | ||
484 | + case 0x12: | ||
485 | + ret = op_get_cpu_number("x86-64/family12h"); | ||
486 | + break; | ||
487 | + case 0x14: | ||
488 | + ret = op_get_cpu_number("x86-64/family14h"); | ||
489 | + break; | ||
490 | + case 0x15: | ||
491 | + switch (model) { | ||
492 | + case 0x00 ... 0x0f: | ||
493 | + ret = op_get_cpu_number("x86-64/family15h"); | ||
494 | + break; | ||
495 | + default: | ||
496 | + break; | ||
497 | + } | ||
498 | + break; | ||
499 | + default: | ||
500 | + break; | ||
501 | + } | ||
502 | + | ||
503 | + return ret; | ||
504 | +} | ||
505 | + | ||
506 | +static op_cpu _get_x86_64_cpu_type(void) | ||
507 | +{ | ||
508 | + op_cpu ret = CPU_NO_GOOD; | ||
509 | + | ||
510 | + if (cpuid_vendor("GenuineIntel")) { | ||
511 | + ret = _get_intel_cpu_type(); | ||
512 | + } else if (cpuid_vendor("AuthenticAMD")) { | ||
513 | + ret = _get_amd_cpu_type(); | ||
514 | + } | ||
515 | + | ||
516 | + return ret; | ||
517 | +} | ||
518 | + | ||
519 | +#else | ||
520 | +static op_cpu _get_x86_64_cpu_type(void) | ||
521 | +{ | ||
522 | + return CPU_NO_GOOD; | ||
523 | +} | ||
524 | +#endif | ||
525 | + | ||
526 | +struct mips_cpu_descr | ||
527 | +{ | ||
528 | + const char * key; | ||
529 | + const char * value; | ||
530 | +}; | ||
531 | + | ||
532 | +static struct mips_cpu_descr mips_cpu_descrs[] = { | ||
533 | + { .key = "MIPS 5Kc", .value = "mips/5K" }, /* CPU_5KC */ | ||
534 | + { .key = "MIPS 20Kc", .value = "mips/20K" }, /* CPU_20KC */ | ||
535 | + { .key = "MIPS 24Kc", .value = "mips/24K" }, /* CPU_24K */ | ||
536 | + { .key = "MIPS 25Kc", .value = "mips/25K" }, /* CPU_25KF */ | ||
537 | + { .key = "MIPS 34Kc", .value = "mips/34K" }, /* CPU_34K */ | ||
538 | + { .key = "MIPS 74Kc", .value = "mips/74K" }, /* CPU_74K */ | ||
539 | + { .key = "MIPS M14Kc", .value = "mips/M14Kc" }, /* CPU_M14KC */ | ||
540 | + { .key = "RM9000", .value = "mips/rm9000" }, /* CPU_RM9000 */ | ||
541 | + { .key = "R10000", .value = "mips/r10000" }, /* CPU_R10000 */ | ||
542 | + { .key = "R12000", .value = "mips/r12000" }, /* CPU_R12000 */ | ||
543 | + { .key = "R14000", .value = "mips/r12000" }, /* CPU_R14000 */ | ||
544 | + { .key = "ICT Loongson-2", .value = "mips/loongson2" }, /* CPU_LOONGSON2 */ | ||
545 | + { .key = NULL, .value = NULL } | ||
546 | +}; | ||
547 | + | ||
548 | +static const char * _get_mips_op_name(const char * key) | ||
549 | +{ | ||
550 | + struct mips_cpu_descr * p_it = mips_cpu_descrs; | ||
551 | + size_t len; | ||
552 | + | ||
553 | + | ||
554 | + while (p_it->key != NULL) { | ||
555 | + len = strlen(p_it->key); | ||
556 | + if (0 == strncmp(key, p_it->key, len)) | ||
557 | + return p_it->value; | ||
558 | + ++p_it; | ||
559 | + } | ||
560 | + return NULL; | ||
561 | +} | ||
562 | + | ||
563 | +static op_cpu _get_mips_cpu_type(void) | ||
564 | +{ | ||
565 | + char line[100]; | ||
566 | + char * cpu_model; | ||
567 | + const char * op_name = NULL; | ||
568 | + | ||
569 | + cpu_model = _get_cpuinfo_cpu_type_line(line, 100, "cpu model", 0); | ||
570 | + if (!cpu_model) | ||
571 | + return CPU_NO_GOOD; | ||
572 | + | ||
573 | + op_name = _get_mips_op_name(cpu_model); | ||
574 | + | ||
575 | + if (op_name) | ||
576 | + return op_get_cpu_number(op_name); | ||
577 | + return CPU_NO_GOOD; | ||
578 | +} | ||
579 | + | ||
580 | +static op_cpu __get_cpu_type_alt_method(void) | ||
581 | +{ | ||
582 | + struct utsname uname_info; | ||
583 | + if (uname(&uname_info) < 0) { | ||
584 | + perror("uname failed"); | ||
585 | + return CPU_NO_GOOD; | ||
586 | + } | ||
587 | + if (strncmp(uname_info.machine, "x86_64", 6) == 0 || | ||
588 | + fnmatch("i?86", uname_info.machine, 0) == 0) { | ||
589 | + return _get_x86_64_cpu_type(); | ||
590 | + } | ||
591 | + if (strncmp(uname_info.machine, "ppc64", 5) == 0) { | ||
592 | + return _get_ppc64_cpu_type(); | ||
593 | + } | ||
594 | + if (strncmp(uname_info.machine, "arm", 3) == 0) { | ||
595 | + return _get_arm_cpu_type(); | ||
596 | + } | ||
597 | + if (strncmp(uname_info.machine, "tile", 4) == 0) { | ||
598 | + return _get_tile_cpu_type(); | ||
599 | + } | ||
600 | + if (strncmp(uname_info.machine, "mips", 4) == 0) { | ||
601 | + return _get_mips_cpu_type(); | ||
602 | + } | ||
603 | + return CPU_NO_GOOD; | ||
604 | +} | ||
605 | + | ||
606 | +int op_cpu_variations(op_cpu cpu_type) | ||
607 | +{ | ||
608 | + switch (cpu_type) { | ||
609 | + case CPU_ARCH_PERFMON: | ||
610 | + return 1; | ||
611 | + default: | ||
612 | + return 0; | ||
613 | + } | ||
614 | +} | ||
615 | + | ||
616 | + | ||
617 | +op_cpu op_cpu_base_type(op_cpu cpu_type) | ||
618 | +{ | ||
619 | + /* All the processors that support CPU_ARCH_PERFMON */ | ||
620 | + switch (cpu_type) { | ||
621 | + case CPU_CORE_2: | ||
622 | + case CPU_CORE_I7: | ||
623 | + case CPU_ATOM: | ||
624 | + case CPU_NEHALEM: | ||
625 | + case CPU_WESTMERE: | ||
626 | + case CPU_SANDYBRIDGE: | ||
627 | + case CPU_IVYBRIDGE: | ||
628 | + return CPU_ARCH_PERFMON; | ||
629 | + default: | ||
630 | + /* assume processor in a class by itself */ | ||
631 | + return cpu_type; | ||
632 | + } | ||
633 | +} | ||
634 | + | ||
635 | +op_cpu op_get_cpu_type(void) | ||
636 | +{ | ||
637 | + int cpu_type = CPU_NO_GOOD; | ||
638 | + char str[100]; | ||
639 | + FILE * fp; | ||
640 | + | ||
641 | + fp = fopen("/proc/sys/dev/oprofile/cpu_type", "r"); | ||
642 | + if (!fp) { | ||
643 | + /* Try 2.6's oprofilefs one instead. */ | ||
644 | + fp = fopen("/dev/oprofile/cpu_type", "r"); | ||
645 | + if (!fp) { | ||
646 | + if ((cpu_type = __get_cpu_type_alt_method()) == CPU_NO_GOOD) { | ||
647 | + fprintf(stderr, "Unable to open cpu_type file for reading\n"); | ||
648 | + fprintf(stderr, "Make sure you have done opcontrol --init\n"); | ||
649 | + } | ||
650 | + return cpu_type; | ||
651 | + } | ||
652 | + } | ||
653 | + | ||
654 | + if (!fgets(str, 99, fp)) { | ||
655 | + fprintf(stderr, "Could not read cpu type.\n"); | ||
656 | + fclose(fp); | ||
657 | + return cpu_type; | ||
658 | + } | ||
659 | + | ||
660 | + cpu_type = op_get_cpu_number(str); | ||
661 | + | ||
662 | + if (op_cpu_variations(cpu_type)) | ||
663 | + cpu_type = op_cpu_specific_type(cpu_type); | ||
664 | + | ||
665 | + fclose(fp); | ||
666 | + | ||
667 | + return cpu_type; | ||
668 | +} | ||
669 | + | ||
670 | + | ||
671 | +op_cpu op_get_cpu_number(char const * cpu_string) | ||
672 | +{ | ||
673 | + int cpu_type = CPU_NO_GOOD; | ||
674 | + size_t i; | ||
675 | + | ||
676 | + for (i = 0; i < nr_cpu_descrs; ++i) { | ||
677 | + if (!strcmp(cpu_descrs[i].name, cpu_string)) { | ||
678 | + cpu_type = cpu_descrs[i].cpu; | ||
679 | + break; | ||
680 | + } | ||
681 | + } | ||
682 | + | ||
683 | + /* Attempt to convert into a number */ | ||
684 | + if (cpu_type == CPU_NO_GOOD) | ||
685 | + sscanf(cpu_string, "%d\n", &cpu_type); | ||
686 | + | ||
687 | + if (cpu_type <= CPU_NO_GOOD || cpu_type >= MAX_CPU_TYPE) | ||
688 | + cpu_type = CPU_NO_GOOD; | ||
689 | + | ||
690 | + return cpu_type; | ||
691 | +} | ||
692 | + | ||
693 | + | ||
694 | +char const * op_get_cpu_type_str(op_cpu cpu_type) | ||
695 | +{ | ||
696 | + if (cpu_type <= CPU_NO_GOOD || cpu_type >= MAX_CPU_TYPE) | ||
697 | + return "invalid cpu type"; | ||
698 | + | ||
699 | + return cpu_descrs[cpu_type].pretty; | ||
700 | +} | ||
701 | + | ||
702 | + | ||
703 | +char const * op_get_cpu_name(op_cpu cpu_type) | ||
704 | +{ | ||
705 | + if (cpu_type <= CPU_NO_GOOD || cpu_type >= MAX_CPU_TYPE) | ||
706 | + return "invalid cpu type"; | ||
707 | + | ||
708 | + return cpu_descrs[cpu_type].name; | ||
709 | +} | ||
710 | + | ||
711 | + | ||
712 | +int op_get_nr_counters(op_cpu cpu_type) | ||
713 | +{ | ||
714 | + int cnt; | ||
715 | + | ||
716 | + if (cpu_type <= CPU_NO_GOOD || cpu_type >= MAX_CPU_TYPE) | ||
717 | + return 0; | ||
718 | + | ||
719 | + cnt = arch_num_counters(cpu_type); | ||
720 | + if (cnt >= 0) | ||
721 | + return cnt; | ||
722 | + | ||
723 | + return op_cpu_has_timer_fs() | ||
724 | + ? cpu_descrs[cpu_type].nr_counters + 1 | ||
725 | + : cpu_descrs[cpu_type].nr_counters; | ||
726 | +} | ||
727 | + | ||
728 | +int op_cpu_has_timer_fs(void) | ||
729 | +{ | ||
730 | + static int cached_has_timer_fs_p = -1; | ||
731 | + FILE * fp; | ||
732 | + | ||
733 | + if (cached_has_timer_fs_p != -1) | ||
734 | + return cached_has_timer_fs_p; | ||
735 | + | ||
736 | + fp = fopen("/dev/oprofile/timer", "r"); | ||
737 | + cached_has_timer_fs_p = !!fp; | ||
738 | + if (fp) | ||
739 | + fclose(fp); | ||
740 | + | ||
741 | + return cached_has_timer_fs_p; | ||
742 | +} | ||
743 | diff -uNr a/libop/op_cpu_type.h b/libop/op_cpu_type.h | ||
744 | --- a/libop/op_cpu_type.h 2012-08-27 20:59:14.000000000 +0200 | ||
745 | +++ b/libop/op_cpu_type.h 2013-02-07 07:03:57.994063551 +0100 | ||
746 | @@ -59,6 +59,7 @@ | ||
747 | CPU_MIPS_VR5500, /**< MIPS VR5500, VR5532 and VR7701 */ | ||
748 | CPU_PPC_E500, /**< e500 */ | ||
749 | CPU_PPC_E500_2, /**< e500v2 */ | ||
750 | + CPU_PPC_E500MC, /**< e500mc */ | ||
751 | CPU_CORE, /**< Core Solo / Duo series */ | ||
752 | CPU_PPC_7450, /**< PowerPC G4 */ | ||
753 | CPU_CORE_2, /**< Intel Core 2 */ | ||
754 | diff -uNr a/libop/op_events.c b/libop/op_events.c | ||
755 | --- a/libop/op_events.c 2012-08-27 20:59:14.000000000 +0200 | ||
756 | +++ b/libop/op_events.c 2013-02-07 07:03:57.994063551 +0100 | ||
757 | @@ -1182,6 +1182,7 @@ | ||
758 | |||
759 | case CPU_PPC_E500: | ||
760 | case CPU_PPC_E500_2: | ||
761 | + case CPU_PPC_E500MC: | ||
762 | case CPU_PPC_E300: | ||
763 | descr->name = "CPU_CLK"; | ||
764 | break; | ||
765 | diff -uNr a/libop/op_events.c.orig b/libop/op_events.c.orig | ||
766 | --- a/libop/op_events.c.orig 1970-01-01 01:00:00.000000000 +0100 | ||
767 | +++ b/libop/op_events.c.orig 2013-02-07 07:01:39.408100801 +0100 | ||
768 | @@ -0,0 +1,1327 @@ | ||
769 | +/** | ||
770 | + * @file op_events.c | ||
771 | + * Details of PMC profiling events | ||
772 | + * | ||
773 | + * You can have silliness here. | ||
774 | + * | ||
775 | + * @remark Copyright 2002 OProfile authors | ||
776 | + * @remark Read the file COPYING | ||
777 | + * | ||
778 | + * @author John Levon | ||
779 | + * @author Philippe Elie | ||
780 | + */ | ||
781 | + | ||
782 | +#include "op_events.h" | ||
783 | +#include "op_libiberty.h" | ||
784 | +#include "op_fileio.h" | ||
785 | +#include "op_string.h" | ||
786 | +#include "op_cpufreq.h" | ||
787 | +#include "op_hw_specific.h" | ||
788 | +#include "op_parse_event.h" | ||
789 | + | ||
790 | +#include <string.h> | ||
791 | +#include <stdlib.h> | ||
792 | +#include <stdio.h> | ||
793 | +#include <ctype.h> | ||
794 | + | ||
795 | +static LIST_HEAD(events_list); | ||
796 | +static LIST_HEAD(um_list); | ||
797 | + | ||
798 | +static char const * filename; | ||
799 | +static unsigned int line_nr; | ||
800 | + | ||
801 | +static void delete_event(struct op_event * event); | ||
802 | +static void read_events(char const * file); | ||
803 | +static void read_unit_masks(char const * file); | ||
804 | +static void free_unit_mask(struct op_unit_mask * um); | ||
805 | + | ||
806 | +static char *build_fn(const char *cpu_name, const char *fn) | ||
807 | +{ | ||
808 | + char *s; | ||
809 | + static const char *dir; | ||
810 | + if (dir == NULL) | ||
811 | + dir = getenv("OPROFILE_EVENTS_DIR"); | ||
812 | + if (dir == NULL) | ||
813 | + dir = OP_DATADIR; | ||
814 | + s = xmalloc(strlen(dir) + strlen(cpu_name) + strlen(fn) + 5); | ||
815 | + sprintf(s, "%s/%s/%s", dir, cpu_name, fn); | ||
816 | + return s; | ||
817 | +} | ||
818 | + | ||
819 | +static void parse_error(char const * context) | ||
820 | +{ | ||
821 | + fprintf(stderr, "oprofile: parse error in %s, line %u\n", | ||
822 | + filename, line_nr); | ||
823 | + fprintf(stderr, "%s\n", context); | ||
824 | + exit(EXIT_FAILURE); | ||
825 | +} | ||
826 | + | ||
827 | + | ||
828 | +static int parse_int(char const * str) | ||
829 | +{ | ||
830 | + int value; | ||
831 | + if (sscanf(str, "%d", &value) != 1) | ||
832 | + parse_error("expected decimal value"); | ||
833 | + | ||
834 | + return value; | ||
835 | +} | ||
836 | + | ||
837 | + | ||
838 | +static int parse_hex(char const * str) | ||
839 | +{ | ||
840 | + int value; | ||
841 | + /* 0x/0X to force the use of hexa notation for field intended to | ||
842 | + be in hexadecimal */ | ||
843 | + if (sscanf(str, "0x%x", &value) != 1 && | ||
844 | + sscanf(str, "0X%x", &value) != 1) | ||
845 | + parse_error("expected hexadecimal value"); | ||
846 | + | ||
847 | + return value; | ||
848 | +} | ||
849 | + | ||
850 | + | ||
851 | +static u64 parse_long_hex(char const * str) | ||
852 | +{ | ||
853 | + u64 value; | ||
854 | + if (sscanf(str, "%Lx", &value) != 1) | ||
855 | + parse_error("expected long hexadecimal value"); | ||
856 | + | ||
857 | + fflush(stderr); | ||
858 | + return value; | ||
859 | +} | ||
860 | + | ||
861 | +static void include_um(const char *start, const char *end) | ||
862 | +{ | ||
863 | + char *s; | ||
864 | + char cpu[end - start + 1]; | ||
865 | + int old_line_nr; | ||
866 | + const char *old_filename; | ||
867 | + | ||
868 | + strncpy(cpu, start, end - start); | ||
869 | + cpu[end - start] = 0; | ||
870 | + s = build_fn(cpu, "unit_masks"); | ||
871 | + old_line_nr = line_nr; | ||
872 | + old_filename = filename; | ||
873 | + read_unit_masks(s); | ||
874 | + line_nr = old_line_nr; | ||
875 | + filename = old_filename; | ||
876 | + free(s); | ||
877 | +} | ||
878 | + | ||
879 | +/* extra:cmask=12,inv,edge */ | ||
880 | +unsigned parse_extra(const char *s) | ||
881 | +{ | ||
882 | + unsigned v, w; | ||
883 | + int o; | ||
884 | + | ||
885 | + v = 0; | ||
886 | + while (*s) { | ||
887 | + if (isspace(*s)) | ||
888 | + break; | ||
889 | + if (strisprefix(s, "edge")) { | ||
890 | + v |= EXTRA_EDGE; | ||
891 | + s += 4; | ||
892 | + } else if (strisprefix(s, "inv")) { | ||
893 | + v |= EXTRA_INV; | ||
894 | + s += 3; | ||
895 | + } else if (sscanf(s, "cmask=%x%n", &w, &o) >= 1) { | ||
896 | + v |= (w & EXTRA_CMASK_MASK) << EXTRA_CMASK_SHIFT; | ||
897 | + s += o; | ||
898 | + } else if (strisprefix(s, "any")) { | ||
899 | + v |= EXTRA_ANY; | ||
900 | + s += 3; | ||
901 | + } else { | ||
902 | + parse_error("Illegal extra field modifier"); | ||
903 | + } | ||
904 | + if (*s == ',') | ||
905 | + ++s; | ||
906 | + } | ||
907 | + return v; | ||
908 | +} | ||
909 | + | ||
910 | +/* name:MESI type:bitmask default:0x0f */ | ||
911 | +static void parse_um(struct op_unit_mask * um, char const * line) | ||
912 | +{ | ||
913 | + int seen_name = 0; | ||
914 | + int seen_type = 0; | ||
915 | + int seen_default = 0; | ||
916 | + char const * valueend = line + 1; | ||
917 | + char const * tagend = line + 1; | ||
918 | + char const * start = line; | ||
919 | + | ||
920 | + while (*valueend) { | ||
921 | + valueend = skip_nonws(valueend); | ||
922 | + | ||
923 | + while (*tagend != ':' && *tagend) | ||
924 | + ++tagend; | ||
925 | + | ||
926 | + if (valueend == tagend) | ||
927 | + break; | ||
928 | + | ||
929 | + if (!*tagend) | ||
930 | + parse_error("parse_um() expected :value"); | ||
931 | + | ||
932 | + ++tagend; | ||
933 | + | ||
934 | + if (strisprefix(start, "include")) { | ||
935 | + if (seen_name + seen_type + seen_default > 0) | ||
936 | + parse_error("include must be on its own"); | ||
937 | + free_unit_mask(um); | ||
938 | + include_um(tagend, valueend); | ||
939 | + return; | ||
940 | + } | ||
941 | + | ||
942 | + if (strisprefix(start, "name")) { | ||
943 | + if (seen_name) | ||
944 | + parse_error("duplicate name: tag"); | ||
945 | + seen_name = 1; | ||
946 | + um->name = op_xstrndup(tagend, valueend - tagend); | ||
947 | + } else if (strisprefix(start, "type")) { | ||
948 | + if (seen_type) | ||
949 | + parse_error("duplicate type: tag"); | ||
950 | + seen_type = 1; | ||
951 | + if (strisprefix(tagend, "mandatory")) { | ||
952 | + um->unit_type_mask = utm_mandatory; | ||
953 | + } else if (strisprefix(tagend, "bitmask")) { | ||
954 | + um->unit_type_mask = utm_bitmask; | ||
955 | + } else if (strisprefix(tagend, "exclusive")) { | ||
956 | + um->unit_type_mask = utm_exclusive; | ||
957 | + } else { | ||
958 | + parse_error("invalid unit mask type"); | ||
959 | + } | ||
960 | + } else if (strisprefix(start, "default")) { | ||
961 | + if (seen_default) | ||
962 | + parse_error("duplicate default: tag"); | ||
963 | + seen_default = 1; | ||
964 | + um->default_mask = parse_hex(tagend); | ||
965 | + } else { | ||
966 | + parse_error("invalid unit mask tag"); | ||
967 | + } | ||
968 | + | ||
969 | + valueend = skip_ws(valueend); | ||
970 | + tagend = valueend; | ||
971 | + start = valueend; | ||
972 | + } | ||
973 | + | ||
974 | + if (!um->name) | ||
975 | + parse_error("Missing name for unit mask"); | ||
976 | + if (!seen_type) | ||
977 | + parse_error("Missing type for unit mask"); | ||
978 | +} | ||
979 | + | ||
980 | + | ||
981 | +/* \t0x08 (M)odified cache state */ | ||
982 | +/* \t0x08 extra:inv,cmask=... (M)odified cache state */ | ||
983 | +static void parse_um_entry(struct op_described_um * entry, char const * line) | ||
984 | +{ | ||
985 | + char const * c = line; | ||
986 | + | ||
987 | + c = skip_ws(c); | ||
988 | + entry->value = parse_hex(c); | ||
989 | + c = skip_nonws(c); | ||
990 | + | ||
991 | + c = skip_ws(c); | ||
992 | + if (strisprefix(c, "extra:")) { | ||
993 | + c += 6; | ||
994 | + entry->extra = parse_extra(c); | ||
995 | + c = skip_nonws(c); | ||
996 | + } else | ||
997 | + entry->extra = 0; | ||
998 | + | ||
999 | + if (!*c) | ||
1000 | + parse_error("invalid unit mask entry"); | ||
1001 | + | ||
1002 | + c = skip_ws(c); | ||
1003 | + | ||
1004 | + if (!*c) | ||
1005 | + parse_error("invalid unit mask entry"); | ||
1006 | + | ||
1007 | + entry->desc = xstrdup(c); | ||
1008 | +} | ||
1009 | + | ||
1010 | + | ||
1011 | +static struct op_unit_mask * new_unit_mask(void) | ||
1012 | +{ | ||
1013 | + struct op_unit_mask * um = xmalloc(sizeof(struct op_unit_mask)); | ||
1014 | + memset(um, '\0', sizeof(struct op_unit_mask)); | ||
1015 | + list_add_tail(&um->um_next, &um_list); | ||
1016 | + | ||
1017 | + return um; | ||
1018 | +} | ||
1019 | + | ||
1020 | +static void free_unit_mask(struct op_unit_mask * um) | ||
1021 | +{ | ||
1022 | + list_del(&um->um_next); | ||
1023 | + free(um); | ||
1024 | +} | ||
1025 | + | ||
1026 | +/* | ||
1027 | + * name:zero type:mandatory default:0x0 | ||
1028 | + * \t0x0 No unit mask | ||
1029 | + */ | ||
1030 | +static void read_unit_masks(char const * file) | ||
1031 | +{ | ||
1032 | + struct op_unit_mask * um = NULL; | ||
1033 | + char * line; | ||
1034 | + FILE * fp = fopen(file, "r"); | ||
1035 | + | ||
1036 | + if (!fp) { | ||
1037 | + fprintf(stderr, | ||
1038 | + "oprofile: could not open unit mask description file %s\n", file); | ||
1039 | + exit(EXIT_FAILURE); | ||
1040 | + } | ||
1041 | + | ||
1042 | + filename = file; | ||
1043 | + line_nr = 1; | ||
1044 | + | ||
1045 | + line = op_get_line(fp); | ||
1046 | + | ||
1047 | + while (line) { | ||
1048 | + if (empty_line(line) || comment_line(line)) | ||
1049 | + goto next; | ||
1050 | + | ||
1051 | + if (line[0] != '\t') { | ||
1052 | + um = new_unit_mask(); | ||
1053 | + parse_um(um, line); | ||
1054 | + } else { | ||
1055 | + if (!um) | ||
1056 | + parse_error("no unit mask name line"); | ||
1057 | + if (um->num >= MAX_UNIT_MASK) | ||
1058 | + parse_error("oprofile: maximum unit mask entries exceeded"); | ||
1059 | + | ||
1060 | + parse_um_entry(&um->um[um->num], line); | ||
1061 | + ++(um->num); | ||
1062 | + } | ||
1063 | + | ||
1064 | +next: | ||
1065 | + free(line); | ||
1066 | + line = op_get_line(fp); | ||
1067 | + ++line_nr; | ||
1068 | + } | ||
1069 | + | ||
1070 | + fclose(fp); | ||
1071 | +} | ||
1072 | + | ||
1073 | + | ||
1074 | +static u32 parse_counter_mask(char const * str) | ||
1075 | +{ | ||
1076 | + u32 mask = 0; | ||
1077 | + char const * numstart = str; | ||
1078 | + | ||
1079 | + while (*numstart) { | ||
1080 | + mask |= 1 << parse_int(numstart); | ||
1081 | + | ||
1082 | + while (*numstart && *numstart != ',') | ||
1083 | + ++numstart; | ||
1084 | + /* skip , unless we reach eos */ | ||
1085 | + if (*numstart) | ||
1086 | + ++numstart; | ||
1087 | + | ||
1088 | + numstart = skip_ws(numstart); | ||
1089 | + } | ||
1090 | + | ||
1091 | + return mask; | ||
1092 | +} | ||
1093 | + | ||
1094 | +static struct op_unit_mask * try_find_um(char const * value) | ||
1095 | +{ | ||
1096 | + struct list_head * pos; | ||
1097 | + | ||
1098 | + list_for_each(pos, &um_list) { | ||
1099 | + struct op_unit_mask * um = list_entry(pos, struct op_unit_mask, um_next); | ||
1100 | + if (strcmp(value, um->name) == 0) { | ||
1101 | + um->used = 1; | ||
1102 | + return um; | ||
1103 | + } | ||
1104 | + } | ||
1105 | + return NULL; | ||
1106 | +} | ||
1107 | + | ||
1108 | +static struct op_unit_mask * find_um(char const * value) | ||
1109 | +{ | ||
1110 | + struct op_unit_mask * um = try_find_um(value); | ||
1111 | + if (um) | ||
1112 | + return um; | ||
1113 | + fprintf(stderr, "oprofile: could not find unit mask %s\n", value); | ||
1114 | + exit(EXIT_FAILURE); | ||
1115 | +} | ||
1116 | + | ||
1117 | +/* um:a,b,c,d merge multiple unit masks */ | ||
1118 | +static struct op_unit_mask * merge_um(char * value) | ||
1119 | +{ | ||
1120 | + int num; | ||
1121 | + char *s; | ||
1122 | + struct op_unit_mask *new, *um; | ||
1123 | + enum unit_mask_type type = -1U; | ||
1124 | + | ||
1125 | + um = try_find_um(value); | ||
1126 | + if (um) | ||
1127 | + return um; | ||
1128 | + | ||
1129 | + new = new_unit_mask(); | ||
1130 | + new->name = xstrdup(value); | ||
1131 | + new->used = 1; | ||
1132 | + num = 0; | ||
1133 | + while ((s = strsep(&value, ",")) != NULL) { | ||
1134 | + unsigned c; | ||
1135 | + um = find_um(s); | ||
1136 | + if (type == -1U) | ||
1137 | + type = um->unit_type_mask; | ||
1138 | + if (um->unit_type_mask != type) | ||
1139 | + parse_error("combined unit mask must be all the same types"); | ||
1140 | + if (type != utm_bitmask && type != utm_exclusive) | ||
1141 | + parse_error("combined unit mask must be all bitmasks or exclusive"); | ||
1142 | + new->default_mask |= um->default_mask; | ||
1143 | + new->num += um->num; | ||
1144 | + if (new->num > MAX_UNIT_MASK) | ||
1145 | + parse_error("too many members in combined unit mask"); | ||
1146 | + for (c = 0; c < um->num; c++, num++) { | ||
1147 | + new->um[num] = um->um[c]; | ||
1148 | + new->um[num].desc = xstrdup(new->um[num].desc); | ||
1149 | + } | ||
1150 | + } | ||
1151 | + if (type == -1U) | ||
1152 | + parse_error("Empty unit mask"); | ||
1153 | + new->unit_type_mask = type; | ||
1154 | + return new; | ||
1155 | +} | ||
1156 | + | ||
1157 | +/* parse either a "tag:value" or a ": trailing description string" */ | ||
1158 | +static int next_token(char const ** cp, char ** name, char ** value) | ||
1159 | +{ | ||
1160 | + size_t tag_len; | ||
1161 | + size_t val_len; | ||
1162 | + char const * c = *cp; | ||
1163 | + char const * end; | ||
1164 | + char const * colon; | ||
1165 | + | ||
1166 | + c = skip_ws(c); | ||
1167 | + end = colon = c; | ||
1168 | + end = skip_nonws(end); | ||
1169 | + | ||
1170 | + colon = strchr(colon, ':'); | ||
1171 | + | ||
1172 | + if (!colon) { | ||
1173 | + if (*c) | ||
1174 | + parse_error("next_token(): garbage at end of line"); | ||
1175 | + return 0; | ||
1176 | + } | ||
1177 | + | ||
1178 | + if (colon >= end) | ||
1179 | + parse_error("next_token() expected ':'"); | ||
1180 | + | ||
1181 | + tag_len = colon - c; | ||
1182 | + val_len = end - (colon + 1); | ||
1183 | + | ||
1184 | + if (!tag_len) { | ||
1185 | + /* : trailing description */ | ||
1186 | + end = skip_ws(end); | ||
1187 | + *name = xstrdup("desc"); | ||
1188 | + *value = xstrdup(end); | ||
1189 | + end += strlen(end); | ||
1190 | + } else { | ||
1191 | + /* tag:value */ | ||
1192 | + *name = op_xstrndup(c, tag_len); | ||
1193 | + *value = op_xstrndup(colon + 1, val_len); | ||
1194 | + end = skip_ws(end); | ||
1195 | + } | ||
1196 | + | ||
1197 | + *cp = end; | ||
1198 | + return 1; | ||
1199 | +} | ||
1200 | + | ||
1201 | +static void include_events (char *value) | ||
1202 | +{ | ||
1203 | + char * event_file; | ||
1204 | + const char *old_filename; | ||
1205 | + int old_line_nr; | ||
1206 | + | ||
1207 | + event_file = build_fn(value, "events"); | ||
1208 | + old_line_nr = line_nr; | ||
1209 | + old_filename = filename; | ||
1210 | + read_events(event_file); | ||
1211 | + line_nr = old_line_nr; | ||
1212 | + filename = old_filename; | ||
1213 | + free(event_file); | ||
1214 | +} | ||
1215 | + | ||
1216 | +static struct op_event * new_event(void) | ||
1217 | +{ | ||
1218 | + struct op_event * event = xmalloc(sizeof(struct op_event)); | ||
1219 | + memset(event, '\0', sizeof(struct op_event)); | ||
1220 | + list_add_tail(&event->event_next, &events_list); | ||
1221 | + | ||
1222 | + return event; | ||
1223 | +} | ||
1224 | + | ||
1225 | +static void free_event(struct op_event * event) | ||
1226 | +{ | ||
1227 | + list_del(&event->event_next); | ||
1228 | + free(event); | ||
1229 | +} | ||
1230 | + | ||
1231 | +/* event:0x00 counters:0 um:zero minimum:4096 name:ISSUES : Total issues */ | ||
1232 | +/* event:0x00 ext:xxxxxx um:zero minimum:4096 name:ISSUES : Total issues */ | ||
1233 | +static void read_events(char const * file) | ||
1234 | +{ | ||
1235 | + struct op_event * event = NULL; | ||
1236 | + char * line; | ||
1237 | + char * name; | ||
1238 | + char * value; | ||
1239 | + char const * c; | ||
1240 | + int seen_event, seen_counters, seen_um, seen_minimum, seen_name, seen_ext; | ||
1241 | + FILE * fp = fopen(file, "r"); | ||
1242 | + int tags; | ||
1243 | + | ||
1244 | + if (!fp) { | ||
1245 | + fprintf(stderr, "oprofile: could not open event description file %s\n", file); | ||
1246 | + exit(EXIT_FAILURE); | ||
1247 | + } | ||
1248 | + | ||
1249 | + filename = file; | ||
1250 | + line_nr = 1; | ||
1251 | + | ||
1252 | + line = op_get_line(fp); | ||
1253 | + | ||
1254 | + while (line) { | ||
1255 | + if (empty_line(line) || comment_line(line)) | ||
1256 | + goto next; | ||
1257 | + | ||
1258 | + tags = 0; | ||
1259 | + seen_name = 0; | ||
1260 | + seen_event = 0; | ||
1261 | + seen_counters = 0; | ||
1262 | + seen_ext = 0; | ||
1263 | + seen_um = 0; | ||
1264 | + seen_minimum = 0; | ||
1265 | + event = new_event(); | ||
1266 | + event->filter = -1; | ||
1267 | + event->ext = NULL; | ||
1268 | + | ||
1269 | + c = line; | ||
1270 | + while (next_token(&c, &name, &value)) { | ||
1271 | + if (strcmp(name, "name") == 0) { | ||
1272 | + if (seen_name) | ||
1273 | + parse_error("duplicate name: tag"); | ||
1274 | + seen_name = 1; | ||
1275 | + if (strchr(value, '/') != NULL) | ||
1276 | + parse_error("invalid event name"); | ||
1277 | + if (strchr(value, '.') != NULL) | ||
1278 | + parse_error("invalid event name"); | ||
1279 | + event->name = value; | ||
1280 | + } else if (strcmp(name, "event") == 0) { | ||
1281 | + if (seen_event) | ||
1282 | + parse_error("duplicate event: tag"); | ||
1283 | + seen_event = 1; | ||
1284 | + event->val = parse_hex(value); | ||
1285 | + free(value); | ||
1286 | + } else if (strcmp(name, "counters") == 0) { | ||
1287 | + if (seen_counters) | ||
1288 | + parse_error("duplicate counters: tag"); | ||
1289 | + seen_counters = 1; | ||
1290 | + if (!strcmp(value, "cpuid")) | ||
1291 | + event->counter_mask = arch_get_counter_mask(); | ||
1292 | + else | ||
1293 | + event->counter_mask = parse_counter_mask(value); | ||
1294 | + free(value); | ||
1295 | + } else if (strcmp(name, "ext") == 0) { | ||
1296 | + if (seen_ext) | ||
1297 | + parse_error("duplicate ext: tag"); | ||
1298 | + seen_ext = 1; | ||
1299 | + event->ext = value; | ||
1300 | + } else if (strcmp(name, "um") == 0) { | ||
1301 | + if (seen_um) | ||
1302 | + parse_error("duplicate um: tag"); | ||
1303 | + seen_um = 1; | ||
1304 | + if (strchr(value, ',')) | ||
1305 | + event->unit = merge_um(value); | ||
1306 | + else | ||
1307 | + event->unit = find_um(value); | ||
1308 | + free(value); | ||
1309 | + } else if (strcmp(name, "minimum") == 0) { | ||
1310 | + if (seen_minimum) | ||
1311 | + parse_error("duplicate minimum: tag"); | ||
1312 | + seen_minimum = 1; | ||
1313 | + event->min_count = parse_int(value); | ||
1314 | + free(value); | ||
1315 | + } else if (strcmp(name, "desc") == 0) { | ||
1316 | + event->desc = value; | ||
1317 | + } else if (strcmp(name, "filter") == 0) { | ||
1318 | + event->filter = parse_int(value); | ||
1319 | + free(value); | ||
1320 | + } else if (strcmp(name, "include") == 0) { | ||
1321 | + if (tags > 0) | ||
1322 | + parse_error("tags before include:"); | ||
1323 | + free_event(event); | ||
1324 | + include_events(value); | ||
1325 | + free(value); | ||
1326 | + c = skip_ws(c); | ||
1327 | + if (*c != '\0' && *c != '#') | ||
1328 | + parse_error("non whitespace after include:"); | ||
1329 | + } else { | ||
1330 | + parse_error("unknown tag"); | ||
1331 | + } | ||
1332 | + tags++; | ||
1333 | + | ||
1334 | + free(name); | ||
1335 | + } | ||
1336 | +next: | ||
1337 | + free(line); | ||
1338 | + line = op_get_line(fp); | ||
1339 | + ++line_nr; | ||
1340 | + } | ||
1341 | + | ||
1342 | + fclose(fp); | ||
1343 | +} | ||
1344 | + | ||
1345 | + | ||
1346 | +/* usefull for make check */ | ||
1347 | +static int check_unit_mask(struct op_unit_mask const * um, | ||
1348 | + char const * cpu_name) | ||
1349 | +{ | ||
1350 | + u32 i; | ||
1351 | + int err = 0; | ||
1352 | + | ||
1353 | + if (!um->used) { | ||
1354 | + fprintf(stderr, "um %s is not used\n", um->name); | ||
1355 | + err = EXIT_FAILURE; | ||
1356 | + } | ||
1357 | + | ||
1358 | + if (um->unit_type_mask == utm_mandatory && um->num != 1) { | ||
1359 | + fprintf(stderr, "mandatory um %s doesn't contain exactly one " | ||
1360 | + "entry (%s)\n", um->name, cpu_name); | ||
1361 | + err = EXIT_FAILURE; | ||
1362 | + } else if (um->unit_type_mask == utm_bitmask) { | ||
1363 | + u32 default_mask = um->default_mask; | ||
1364 | + for (i = 0; i < um->num; ++i) | ||
1365 | + default_mask &= ~um->um[i].value; | ||
1366 | + | ||
1367 | + if (default_mask) { | ||
1368 | + fprintf(stderr, "um %s default mask is not valid " | ||
1369 | + "(%s)\n", um->name, cpu_name); | ||
1370 | + err = EXIT_FAILURE; | ||
1371 | + } | ||
1372 | + } else { | ||
1373 | + for (i = 0; i < um->num; ++i) { | ||
1374 | + if (um->default_mask == um->um[i].value) | ||
1375 | + break; | ||
1376 | + } | ||
1377 | + | ||
1378 | + if (i == um->num) { | ||
1379 | + fprintf(stderr, "exclusive um %s default value is not " | ||
1380 | + "valid (%s)\n", um->name, cpu_name); | ||
1381 | + err = EXIT_FAILURE; | ||
1382 | + } | ||
1383 | + } | ||
1384 | + return err; | ||
1385 | +} | ||
1386 | + | ||
1387 | +static void arch_filter_events(op_cpu cpu_type) | ||
1388 | +{ | ||
1389 | + struct list_head * pos, * pos2; | ||
1390 | + unsigned filter = arch_get_filter(cpu_type); | ||
1391 | + if (!filter) | ||
1392 | + return; | ||
1393 | + list_for_each_safe (pos, pos2, &events_list) { | ||
1394 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1395 | + if (event->filter >= 0 && ((1U << event->filter) & filter)) | ||
1396 | + delete_event(event); | ||
1397 | + } | ||
1398 | +} | ||
1399 | + | ||
1400 | +static void load_events_name(const char *cpu_name) | ||
1401 | +{ | ||
1402 | + char * event_file; | ||
1403 | + char * um_file; | ||
1404 | + | ||
1405 | + event_file = build_fn(cpu_name, "events"); | ||
1406 | + um_file = build_fn(cpu_name, "unit_masks"); | ||
1407 | + | ||
1408 | + read_unit_masks(um_file); | ||
1409 | + read_events(event_file); | ||
1410 | + | ||
1411 | + free(um_file); | ||
1412 | + free(event_file); | ||
1413 | +} | ||
1414 | + | ||
1415 | +static void load_events(op_cpu cpu_type) | ||
1416 | +{ | ||
1417 | + const char * cpu_name = op_get_cpu_name(cpu_type); | ||
1418 | + struct list_head * pos; | ||
1419 | + struct op_event *event; | ||
1420 | + struct op_unit_mask *unit_mask; | ||
1421 | + int err = 0; | ||
1422 | + | ||
1423 | + if (!list_empty(&events_list)) | ||
1424 | + return; | ||
1425 | + | ||
1426 | + load_events_name(cpu_name); | ||
1427 | + | ||
1428 | + arch_filter_events(cpu_type); | ||
1429 | + | ||
1430 | + /* sanity check: all unit mask must be used */ | ||
1431 | + list_for_each(pos, &um_list) { | ||
1432 | + struct op_unit_mask * um = list_entry(pos, struct op_unit_mask, um_next); | ||
1433 | + err |= check_unit_mask(um, cpu_name); | ||
1434 | + } | ||
1435 | + if (err) | ||
1436 | + exit(err); | ||
1437 | + | ||
1438 | + if (!op_cpu_has_timer_fs()) | ||
1439 | + return; | ||
1440 | + | ||
1441 | + /* sanity check: Don't use event `TIMER' since it is predefined. */ | ||
1442 | + list_for_each(pos, &events_list) { | ||
1443 | + struct op_event * event = list_entry(pos, struct op_event, | ||
1444 | + event_next); | ||
1445 | + | ||
1446 | + if (strcmp(event->name, TIMER_EVENT_NAME) == 0) { | ||
1447 | + fprintf(stderr, "Error: " TIMER_EVENT_NAME | ||
1448 | + " event cannot be redefined.\n"); | ||
1449 | + exit(EXIT_FAILURE); | ||
1450 | + } | ||
1451 | + if (event->val == TIMER_EVENT_VALUE) { | ||
1452 | + fprintf(stderr, "Error: Event %s uses " TIMER_EVENT_NAME | ||
1453 | + " which is reserverd for timer based sampling.\n", | ||
1454 | + event->name); | ||
1455 | + exit(EXIT_FAILURE); | ||
1456 | + } | ||
1457 | + } | ||
1458 | + | ||
1459 | + list_for_each(pos, &um_list) { | ||
1460 | + struct op_unit_mask * um = list_entry(pos, struct op_unit_mask, | ||
1461 | + um_next); | ||
1462 | + if (strcmp(um->name, TIMER_EVENT_UNIT_MASK_NAME) == 0) { | ||
1463 | + fprintf(stderr, "Error: " TIMER_EVENT_UNIT_MASK_NAME | ||
1464 | + " unit mask cannot be redefined.\n"); | ||
1465 | + exit(EXIT_FAILURE); | ||
1466 | + } | ||
1467 | + } | ||
1468 | + | ||
1469 | + unit_mask = new_unit_mask(); | ||
1470 | + unit_mask->name = xstrdup(TIMER_EVENT_UNIT_MASK_NAME); | ||
1471 | + unit_mask->num = 1; | ||
1472 | + unit_mask->unit_type_mask = utm_mandatory; | ||
1473 | + unit_mask->um[0].extra = 0; | ||
1474 | + unit_mask->um[0].value = 0; | ||
1475 | + unit_mask->um[0].desc = xstrdup("No unit mask"); | ||
1476 | + unit_mask->used = 1; | ||
1477 | + | ||
1478 | + event = new_event(); | ||
1479 | + event->name = xstrdup(TIMER_EVENT_NAME); | ||
1480 | + event->desc = xstrdup(TIMER_EVENT_DESC); | ||
1481 | + event->val = TIMER_EVENT_VALUE; | ||
1482 | + event->unit = unit_mask; | ||
1483 | + event->min_count = 0; | ||
1484 | + event->filter = 0; | ||
1485 | + event->counter_mask = 1 << (op_get_nr_counters(cpu_type) - 1); | ||
1486 | + event->ext = NULL; | ||
1487 | + event->filter = -1; | ||
1488 | +} | ||
1489 | + | ||
1490 | +struct list_head * op_events(op_cpu cpu_type) | ||
1491 | +{ | ||
1492 | + load_events(cpu_type); | ||
1493 | + arch_filter_events(cpu_type); | ||
1494 | + return &events_list; | ||
1495 | +} | ||
1496 | + | ||
1497 | + | ||
1498 | +static void delete_unit_mask(struct op_unit_mask * unit) | ||
1499 | +{ | ||
1500 | + u32 cur; | ||
1501 | + for (cur = 0 ; cur < unit->num ; ++cur) { | ||
1502 | + if (unit->um[cur].desc) | ||
1503 | + free(unit->um[cur].desc); | ||
1504 | + } | ||
1505 | + | ||
1506 | + if (unit->name) | ||
1507 | + free(unit->name); | ||
1508 | + | ||
1509 | + list_del(&unit->um_next); | ||
1510 | + free(unit); | ||
1511 | +} | ||
1512 | + | ||
1513 | + | ||
1514 | +static void delete_event(struct op_event * event) | ||
1515 | +{ | ||
1516 | + if (event->name) | ||
1517 | + free(event->name); | ||
1518 | + if (event->desc) | ||
1519 | + free(event->desc); | ||
1520 | + | ||
1521 | + list_del(&event->event_next); | ||
1522 | + free(event); | ||
1523 | +} | ||
1524 | + | ||
1525 | + | ||
1526 | +void op_free_events(void) | ||
1527 | +{ | ||
1528 | + struct list_head * pos, * pos2; | ||
1529 | + list_for_each_safe(pos, pos2, &events_list) { | ||
1530 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1531 | + delete_event(event); | ||
1532 | + } | ||
1533 | + | ||
1534 | + list_for_each_safe(pos, pos2, &um_list) { | ||
1535 | + struct op_unit_mask * unit = list_entry(pos, struct op_unit_mask, um_next); | ||
1536 | + delete_unit_mask(unit); | ||
1537 | + } | ||
1538 | +} | ||
1539 | + | ||
1540 | +/* There can be actually multiple events here, so this is not quite correct */ | ||
1541 | +static struct op_event * find_event_any(u32 nr) | ||
1542 | +{ | ||
1543 | + struct list_head * pos; | ||
1544 | + | ||
1545 | + list_for_each(pos, &events_list) { | ||
1546 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1547 | + if (event->val == nr) | ||
1548 | + return event; | ||
1549 | + } | ||
1550 | + | ||
1551 | + return NULL; | ||
1552 | +} | ||
1553 | + | ||
1554 | +static struct op_event * find_event_um(u32 nr, u32 um) | ||
1555 | +{ | ||
1556 | + struct list_head * pos; | ||
1557 | + unsigned int i; | ||
1558 | + | ||
1559 | + list_for_each(pos, &events_list) { | ||
1560 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1561 | + if (event->val == nr) { | ||
1562 | + for (i = 0; i < event->unit->num; i++) { | ||
1563 | + if (event->unit->um[i].value == um) | ||
1564 | + return event; | ||
1565 | + } | ||
1566 | + } | ||
1567 | + } | ||
1568 | + | ||
1569 | + return NULL; | ||
1570 | +} | ||
1571 | + | ||
1572 | +static FILE * open_event_mapping_file(char const * cpu_name) | ||
1573 | +{ | ||
1574 | + char * ev_map_file; | ||
1575 | + char * dir; | ||
1576 | + dir = getenv("OPROFILE_EVENTS_DIR"); | ||
1577 | + if (dir == NULL) | ||
1578 | + dir = OP_DATADIR; | ||
1579 | + | ||
1580 | + ev_map_file = xmalloc(strlen(dir) + strlen("/") + strlen(cpu_name) + | ||
1581 | + strlen("/") + + strlen("event_mappings") + 1); | ||
1582 | + strcpy(ev_map_file, dir); | ||
1583 | + strcat(ev_map_file, "/"); | ||
1584 | + | ||
1585 | + strcat(ev_map_file, cpu_name); | ||
1586 | + strcat(ev_map_file, "/"); | ||
1587 | + strcat(ev_map_file, "event_mappings"); | ||
1588 | + filename = ev_map_file; | ||
1589 | + return (fopen(ev_map_file, "r")); | ||
1590 | +} | ||
1591 | + | ||
1592 | + | ||
1593 | +/** | ||
1594 | + * This function is PPC64-specific. | ||
1595 | + */ | ||
1596 | +static char const * get_mapping(u32 nr, FILE * fp) | ||
1597 | +{ | ||
1598 | + char * line; | ||
1599 | + char * name; | ||
1600 | + char * value; | ||
1601 | + char const * c; | ||
1602 | + char * map = NULL; | ||
1603 | + int seen_event = 0, seen_mmcr0 = 0, seen_mmcr1 = 0, seen_mmcra = 0; | ||
1604 | + u32 mmcr0 = 0; | ||
1605 | + u64 mmcr1 = 0; | ||
1606 | + u32 mmcra = 0; | ||
1607 | + int event_found = 0; | ||
1608 | + | ||
1609 | + line_nr = 1; | ||
1610 | + line = op_get_line(fp); | ||
1611 | + while (line && !event_found) { | ||
1612 | + if (empty_line(line) || comment_line(line)) | ||
1613 | + goto next; | ||
1614 | + | ||
1615 | + seen_event = 0; | ||
1616 | + seen_mmcr0 = 0; | ||
1617 | + seen_mmcr1 = 0; | ||
1618 | + seen_mmcra = 0; | ||
1619 | + mmcr0 = 0; | ||
1620 | + mmcr1 = 0; | ||
1621 | + mmcra = 0; | ||
1622 | + | ||
1623 | + c = line; | ||
1624 | + while (next_token(&c, &name, &value)) { | ||
1625 | + if (strcmp(name, "event") == 0) { | ||
1626 | + u32 evt; | ||
1627 | + if (seen_event) | ||
1628 | + parse_error("duplicate event tag"); | ||
1629 | + seen_event = 1; | ||
1630 | + evt = parse_hex(value); | ||
1631 | + if (evt == nr) | ||
1632 | + event_found = 1; | ||
1633 | + free(value); | ||
1634 | + } else if (strcmp(name, "mmcr0") == 0) { | ||
1635 | + if (seen_mmcr0) | ||
1636 | + parse_error("duplicate mmcr0 tag"); | ||
1637 | + seen_mmcr0 = 1; | ||
1638 | + mmcr0 = parse_hex(value); | ||
1639 | + free(value); | ||
1640 | + } else if (strcmp(name, "mmcr1") == 0) { | ||
1641 | + if (seen_mmcr1) | ||
1642 | + parse_error("duplicate mmcr1: tag"); | ||
1643 | + seen_mmcr1 = 1; | ||
1644 | + mmcr1 = parse_long_hex(value); | ||
1645 | + free(value); | ||
1646 | + } else if (strcmp(name, "mmcra") == 0) { | ||
1647 | + if (seen_mmcra) | ||
1648 | + parse_error("duplicate mmcra: tag"); | ||
1649 | + seen_mmcra = 1; | ||
1650 | + mmcra = parse_hex(value); | ||
1651 | + free(value); | ||
1652 | + } else { | ||
1653 | + parse_error("unknown tag"); | ||
1654 | + } | ||
1655 | + | ||
1656 | + free(name); | ||
1657 | + } | ||
1658 | +next: | ||
1659 | + free(line); | ||
1660 | + line = op_get_line(fp); | ||
1661 | + ++line_nr; | ||
1662 | + } | ||
1663 | + if (event_found) { | ||
1664 | + if (!seen_mmcr0 || !seen_mmcr1 || !seen_mmcra) { | ||
1665 | + fprintf(stderr, "Error: Missing information in line %d of event mapping file %s\n", line_nr, filename); | ||
1666 | + exit(EXIT_FAILURE); | ||
1667 | + } | ||
1668 | + map = xmalloc(70); | ||
1669 | + snprintf(map, 70, "mmcr0:%u mmcr1:%Lu mmcra:%u", | ||
1670 | + mmcr0, mmcr1, mmcra); | ||
1671 | + } | ||
1672 | + | ||
1673 | + return map; | ||
1674 | +} | ||
1675 | + | ||
1676 | + | ||
1677 | +char const * find_mapping_for_event(u32 nr, op_cpu cpu_type) | ||
1678 | +{ | ||
1679 | + char const * cpu_name = op_get_cpu_name(cpu_type); | ||
1680 | + FILE * fp = open_event_mapping_file(cpu_name); | ||
1681 | + char const * map = NULL; | ||
1682 | + switch (cpu_type) { | ||
1683 | + case CPU_PPC64_PA6T: | ||
1684 | + case CPU_PPC64_970: | ||
1685 | + case CPU_PPC64_970MP: | ||
1686 | + case CPU_PPC64_POWER4: | ||
1687 | + case CPU_PPC64_POWER5: | ||
1688 | + case CPU_PPC64_POWER5p: | ||
1689 | + case CPU_PPC64_POWER5pp: | ||
1690 | + case CPU_PPC64_POWER6: | ||
1691 | + case CPU_PPC64_POWER7: | ||
1692 | + case CPU_PPC64_IBM_COMPAT_V1: | ||
1693 | + if (!fp) { | ||
1694 | + fprintf(stderr, "oprofile: could not open event mapping file %s\n", filename); | ||
1695 | + exit(EXIT_FAILURE); | ||
1696 | + } else { | ||
1697 | + map = get_mapping(nr, fp); | ||
1698 | + } | ||
1699 | + break; | ||
1700 | + default: | ||
1701 | + break; | ||
1702 | + } | ||
1703 | + | ||
1704 | + if (fp) | ||
1705 | + fclose(fp); | ||
1706 | + | ||
1707 | + return map; | ||
1708 | +} | ||
1709 | + | ||
1710 | +static int match_event(int i, struct op_event *event, unsigned um) | ||
1711 | +{ | ||
1712 | + unsigned v = event->unit->um[i].value; | ||
1713 | + | ||
1714 | + switch (event->unit->unit_type_mask) { | ||
1715 | + case utm_exclusive: | ||
1716 | + case utm_mandatory: | ||
1717 | + return v == um; | ||
1718 | + | ||
1719 | + case utm_bitmask: | ||
1720 | + return (v & um) || (!v && v == 0); | ||
1721 | + } | ||
1722 | + | ||
1723 | + abort(); | ||
1724 | +} | ||
1725 | + | ||
1726 | +struct op_event * find_event_by_name(char const * name, unsigned um, int um_valid) | ||
1727 | +{ | ||
1728 | + struct list_head * pos; | ||
1729 | + | ||
1730 | + list_for_each(pos, &events_list) { | ||
1731 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1732 | + if (strcmp(event->name, name) == 0) { | ||
1733 | + if (um_valid) { | ||
1734 | + unsigned i; | ||
1735 | + | ||
1736 | + for (i = 0; i < event->unit->num; i++) | ||
1737 | + if (match_event(i, event, um)) | ||
1738 | + return event; | ||
1739 | + continue; | ||
1740 | + } | ||
1741 | + return event; | ||
1742 | + } | ||
1743 | + } | ||
1744 | + | ||
1745 | + return NULL; | ||
1746 | +} | ||
1747 | + | ||
1748 | + | ||
1749 | +static struct op_event * find_next_event(struct op_event * e) | ||
1750 | +{ | ||
1751 | + struct list_head * n; | ||
1752 | + | ||
1753 | + for (n = e->event_next.next; n != &events_list; n = n->next) { | ||
1754 | + struct op_event * ne = list_entry(n, struct op_event, event_next); | ||
1755 | + if (!strcmp(e->name, ne->name)) | ||
1756 | + return ne; | ||
1757 | + } | ||
1758 | + return NULL; | ||
1759 | +} | ||
1760 | + | ||
1761 | +struct op_event * op_find_event(op_cpu cpu_type, u32 nr, u32 um) | ||
1762 | +{ | ||
1763 | + struct op_event * event; | ||
1764 | + | ||
1765 | + load_events(cpu_type); | ||
1766 | + | ||
1767 | + event = find_event_um(nr, um); | ||
1768 | + | ||
1769 | + return event; | ||
1770 | +} | ||
1771 | + | ||
1772 | +struct op_event * op_find_event_any(op_cpu cpu_type, u32 nr) | ||
1773 | +{ | ||
1774 | + load_events(cpu_type); | ||
1775 | + | ||
1776 | + return find_event_any(nr); | ||
1777 | +} | ||
1778 | + | ||
1779 | +int op_check_events(int ctr, u32 nr, u32 um, op_cpu cpu_type) | ||
1780 | +{ | ||
1781 | + int ret = OP_INVALID_EVENT; | ||
1782 | + size_t i; | ||
1783 | + u32 ctr_mask = 1 << ctr; | ||
1784 | + struct list_head * pos; | ||
1785 | + | ||
1786 | + load_events(cpu_type); | ||
1787 | + | ||
1788 | + list_for_each(pos, &events_list) { | ||
1789 | + struct op_event * event = list_entry(pos, struct op_event, event_next); | ||
1790 | + if (event->val != nr) | ||
1791 | + continue; | ||
1792 | + | ||
1793 | + ret = OP_OK_EVENT; | ||
1794 | + | ||
1795 | + if ((event->counter_mask & ctr_mask) == 0) | ||
1796 | + ret |= OP_INVALID_COUNTER; | ||
1797 | + | ||
1798 | + if (event->unit->unit_type_mask == utm_bitmask) { | ||
1799 | + for (i = 0; i < event->unit->num; ++i) | ||
1800 | + um &= ~(event->unit->um[i].value); | ||
1801 | + | ||
1802 | + if (um) | ||
1803 | + ret |= OP_INVALID_UM; | ||
1804 | + | ||
1805 | + } else { | ||
1806 | + for (i = 0; i < event->unit->num; ++i) { | ||
1807 | + if (event->unit->um[i].value == um) | ||
1808 | + break; | ||
1809 | + } | ||
1810 | + | ||
1811 | + if (i == event->unit->num) | ||
1812 | + ret |= OP_INVALID_UM; | ||
1813 | + | ||
1814 | + } | ||
1815 | + | ||
1816 | + if (ret == OP_OK_EVENT) | ||
1817 | + return ret; | ||
1818 | + } | ||
1819 | + | ||
1820 | + return ret; | ||
1821 | +} | ||
1822 | + | ||
1823 | + | ||
1824 | +void op_default_event(op_cpu cpu_type, struct op_default_event_descr * descr) | ||
1825 | +{ | ||
1826 | + descr->name = ""; | ||
1827 | + descr->um = 0x0; | ||
1828 | + /* A fixed value of CPU cycles; this should ensure good | ||
1829 | + * granulity even on faster CPUs, though it will generate more | ||
1830 | + * interrupts. | ||
1831 | + */ | ||
1832 | + descr->count = 100000; | ||
1833 | + | ||
1834 | + switch (cpu_type) { | ||
1835 | + case CPU_PPRO: | ||
1836 | + case CPU_PII: | ||
1837 | + case CPU_PIII: | ||
1838 | + case CPU_P6_MOBILE: | ||
1839 | + case CPU_CORE: | ||
1840 | + case CPU_CORE_2: | ||
1841 | + case CPU_ATHLON: | ||
1842 | + case CPU_HAMMER: | ||
1843 | + case CPU_FAMILY10: | ||
1844 | + case CPU_ARCH_PERFMON: | ||
1845 | + case CPU_FAMILY11H: | ||
1846 | + case CPU_ATOM: | ||
1847 | + case CPU_CORE_I7: | ||
1848 | + case CPU_NEHALEM: | ||
1849 | + case CPU_WESTMERE: | ||
1850 | + case CPU_SANDYBRIDGE: | ||
1851 | + case CPU_IVYBRIDGE: | ||
1852 | + case CPU_MIPS_LOONGSON2: | ||
1853 | + case CPU_FAMILY12H: | ||
1854 | + case CPU_FAMILY14H: | ||
1855 | + case CPU_FAMILY15H: | ||
1856 | + descr->name = "CPU_CLK_UNHALTED"; | ||
1857 | + break; | ||
1858 | + | ||
1859 | + case CPU_RTC: | ||
1860 | + descr->name = "RTC_INTERRUPTS"; | ||
1861 | + descr->count = 1024; | ||
1862 | + break; | ||
1863 | + | ||
1864 | + case CPU_P4: | ||
1865 | + case CPU_P4_HT2: | ||
1866 | + descr->name = "GLOBAL_POWER_EVENTS"; | ||
1867 | + descr->um = 0x1; | ||
1868 | + break; | ||
1869 | + | ||
1870 | + case CPU_IA64: | ||
1871 | + case CPU_IA64_1: | ||
1872 | + case CPU_IA64_2: | ||
1873 | + descr->count = 1000000; | ||
1874 | + descr->name = "CPU_CYCLES"; | ||
1875 | + break; | ||
1876 | + | ||
1877 | + case CPU_AXP_EV4: | ||
1878 | + case CPU_AXP_EV5: | ||
1879 | + case CPU_AXP_PCA56: | ||
1880 | + case CPU_AXP_EV6: | ||
1881 | + case CPU_AXP_EV67: | ||
1882 | + descr->name = "CYCLES"; | ||
1883 | + break; | ||
1884 | + | ||
1885 | + // we could possibly use the CCNT | ||
1886 | + case CPU_ARM_XSCALE1: | ||
1887 | + case CPU_ARM_XSCALE2: | ||
1888 | + case CPU_ARM_MPCORE: | ||
1889 | + case CPU_ARM_V6: | ||
1890 | + case CPU_ARM_V7: | ||
1891 | + case CPU_ARM_V7_CA5: | ||
1892 | + case CPU_ARM_V7_CA7: | ||
1893 | + case CPU_ARM_V7_CA9: | ||
1894 | + case CPU_ARM_V7_CA15: | ||
1895 | + case CPU_AVR32: | ||
1896 | + case CPU_ARM_SCORPION: | ||
1897 | + case CPU_ARM_SCORPIONMP: | ||
1898 | + descr->name = "CPU_CYCLES"; | ||
1899 | + break; | ||
1900 | + | ||
1901 | + case CPU_PPC64_PA6T: | ||
1902 | + case CPU_PPC64_970: | ||
1903 | + case CPU_PPC64_970MP: | ||
1904 | + case CPU_PPC_7450: | ||
1905 | + case CPU_PPC64_POWER4: | ||
1906 | + case CPU_PPC64_POWER5: | ||
1907 | + case CPU_PPC64_POWER6: | ||
1908 | + case CPU_PPC64_POWER5p: | ||
1909 | + case CPU_PPC64_POWER5pp: | ||
1910 | + case CPU_PPC64_CELL: | ||
1911 | + case CPU_PPC64_POWER7: | ||
1912 | + case CPU_PPC64_IBM_COMPAT_V1: | ||
1913 | + descr->name = "CYCLES"; | ||
1914 | + break; | ||
1915 | + | ||
1916 | + case CPU_MIPS_20K: | ||
1917 | + descr->name = "CYCLES"; | ||
1918 | + break; | ||
1919 | + | ||
1920 | + case CPU_MIPS_24K: | ||
1921 | + case CPU_MIPS_34K: | ||
1922 | + case CPU_MIPS_74K: | ||
1923 | + case CPU_MIPS_1004K: | ||
1924 | + descr->name = "INSTRUCTIONS"; | ||
1925 | + break; | ||
1926 | + | ||
1927 | + case CPU_MIPS_5K: | ||
1928 | + case CPU_MIPS_25K: | ||
1929 | + descr->name = "CYCLES"; | ||
1930 | + break; | ||
1931 | + | ||
1932 | + case CPU_MIPS_R10000: | ||
1933 | + case CPU_MIPS_R12000: | ||
1934 | + descr->name = "INSTRUCTIONS_GRADUATED"; | ||
1935 | + break; | ||
1936 | + | ||
1937 | + case CPU_MIPS_RM7000: | ||
1938 | + case CPU_MIPS_RM9000: | ||
1939 | + descr->name = "INSTRUCTIONS_ISSUED"; | ||
1940 | + break; | ||
1941 | + | ||
1942 | + case CPU_MIPS_SB1: | ||
1943 | + descr->name = "INSN_SURVIVED_STAGE7"; | ||
1944 | + break; | ||
1945 | + | ||
1946 | + case CPU_MIPS_VR5432: | ||
1947 | + case CPU_MIPS_VR5500: | ||
1948 | + descr->name = "INSTRUCTIONS_EXECUTED"; | ||
1949 | + break; | ||
1950 | + | ||
1951 | + case CPU_PPC_E500: | ||
1952 | + case CPU_PPC_E500_2: | ||
1953 | + case CPU_PPC_E300: | ||
1954 | + descr->name = "CPU_CLK"; | ||
1955 | + break; | ||
1956 | + case CPU_S390_Z10: | ||
1957 | + case CPU_S390_Z196: | ||
1958 | + if (op_get_nr_counters(cpu_type) > 1) { | ||
1959 | + descr->name = "HWSAMPLING"; | ||
1960 | + descr->count = 4127518; | ||
1961 | + } else { | ||
1962 | + descr->name = TIMER_EVENT_NAME; | ||
1963 | + descr->count = 10000; | ||
1964 | + } | ||
1965 | + break; | ||
1966 | + | ||
1967 | + case CPU_TILE_TILE64: | ||
1968 | + case CPU_TILE_TILEPRO: | ||
1969 | + case CPU_TILE_TILEGX: | ||
1970 | + descr->name = "ONE"; | ||
1971 | + break; | ||
1972 | + | ||
1973 | + // don't use default, if someone add a cpu he wants a compiler | ||
1974 | + // warning if he forgets to handle it here. | ||
1975 | + case CPU_TIMER_INT: | ||
1976 | + case CPU_NO_GOOD: | ||
1977 | + case MAX_CPU_TYPE: | ||
1978 | + break; | ||
1979 | + } | ||
1980 | +} | ||
1981 | + | ||
1982 | +static void extra_check(struct op_event *e, u32 unit_mask) | ||
1983 | +{ | ||
1984 | + unsigned i; | ||
1985 | + int found = 0; | ||
1986 | + | ||
1987 | + for (i = 0; i < e->unit->num; i++) | ||
1988 | + if (e->unit->um[i].value == unit_mask) | ||
1989 | + found++; | ||
1990 | + if (found > 1) { | ||
1991 | + fprintf(stderr, | ||
1992 | +"Named unit masks not allowed for events without 'extra:' values.\n" | ||
1993 | +"Please specify the numerical value for the unit mask. See 'opcontrol'" | ||
1994 | +" man page for more info.\n"); | ||
1995 | + exit(EXIT_FAILURE); | ||
1996 | + } | ||
1997 | +} | ||
1998 | + | ||
1999 | +static void another_extra_check(struct op_event *e, char *name, unsigned w) | ||
2000 | +{ | ||
2001 | + int found; | ||
2002 | + unsigned i; | ||
2003 | + | ||
2004 | + if (!e->unit->um[w].extra) { | ||
2005 | + fprintf(stderr, | ||
2006 | +"Named unit mask (%s) not allowed for event without 'extra:' values.\n" | ||
2007 | +"Please specify the numerical value for the unit mask. See 'opcontrol'" | ||
2008 | +" man page for more info.\n", name); | ||
2009 | + exit(EXIT_FAILURE); | ||
2010 | + } | ||
2011 | + | ||
2012 | + found = 0; | ||
2013 | + for (i = 0; i < e->unit->num; i++) { | ||
2014 | + int len = strcspn(e->unit->um[i].desc, " \t"); | ||
2015 | + if (!strncmp(name, e->unit->um[i].desc, len) && | ||
2016 | + name[len] == '\0') | ||
2017 | + found++; | ||
2018 | + } | ||
2019 | + if (found > 1) { | ||
2020 | + fprintf(stderr, | ||
2021 | + "Unit mask name `%s' not unique. Sorry please use a numerical unit mask\n", name); | ||
2022 | + exit(EXIT_FAILURE); | ||
2023 | + } | ||
2024 | +} | ||
2025 | + | ||
2026 | +static void do_resolve_unit_mask(struct op_event *e, struct parsed_event *pe, | ||
2027 | + u32 *extra) | ||
2028 | +{ | ||
2029 | + unsigned i; | ||
2030 | + int found; | ||
2031 | + | ||
2032 | + for (;;) { | ||
2033 | + if (pe->unit_mask_name == NULL) { | ||
2034 | + int had_unit_mask = pe->unit_mask_valid; | ||
2035 | + | ||
2036 | + found = 0; | ||
2037 | + for (i = 0; i < e->unit->num; i++) { | ||
2038 | + if (!pe->unit_mask_valid && | ||
2039 | + e->unit->um[i].value == e->unit->default_mask) { | ||
2040 | + pe->unit_mask_valid = 1; | ||
2041 | + pe->unit_mask = e->unit->default_mask; | ||
2042 | + break; | ||
2043 | + } | ||
2044 | + } | ||
2045 | + if (found > 1 && had_unit_mask) { | ||
2046 | + fprintf(stderr, | ||
2047 | + "Non unique numerical unit mask.\n" | ||
2048 | + "Please specify the unit mask using the first word of the description\n"); | ||
2049 | + exit(EXIT_FAILURE); | ||
2050 | + } | ||
2051 | + extra_check(e, pe->unit_mask); | ||
2052 | + if (i == e->unit->num) { | ||
2053 | + e = find_next_event(e); | ||
2054 | + if (e != NULL) | ||
2055 | + continue; | ||
2056 | + } else { | ||
2057 | + if (extra) | ||
2058 | + *extra = e->unit->um[i].extra; | ||
2059 | + } | ||
2060 | + return; | ||
2061 | + } | ||
2062 | + for (i = 0; i < e->unit->num; i++) { | ||
2063 | + int len = strcspn(e->unit->um[i].desc, " \t"); | ||
2064 | + if (!strncmp(pe->unit_mask_name, e->unit->um[i].desc, | ||
2065 | + len) && pe->unit_mask_name[len] == '\0') | ||
2066 | + break; | ||
2067 | + } | ||
2068 | + if (i == e->unit->num) { | ||
2069 | + e = find_next_event(e); | ||
2070 | + if (e != NULL) | ||
2071 | + continue; | ||
2072 | + fprintf(stderr, "Cannot find unit mask %s for %s\n", | ||
2073 | + pe->unit_mask_name, pe->name); | ||
2074 | + exit(EXIT_FAILURE); | ||
2075 | + } | ||
2076 | + another_extra_check(e, pe->unit_mask_name, i); | ||
2077 | + pe->unit_mask_valid = 1; | ||
2078 | + pe->unit_mask = e->unit->um[i].value; | ||
2079 | + if (extra) | ||
2080 | + *extra = e->unit->um[i].extra; | ||
2081 | + return; | ||
2082 | + } | ||
2083 | +} | ||
2084 | + | ||
2085 | +void op_resolve_unit_mask(struct parsed_event *pe, u32 *extra) | ||
2086 | +{ | ||
2087 | + struct op_event *e; | ||
2088 | + | ||
2089 | + e = find_event_by_name(pe->name, 0, 0); | ||
2090 | + if (!e) { | ||
2091 | + fprintf(stderr, "Cannot find event %s\n", pe->name); | ||
2092 | + exit(EXIT_FAILURE); | ||
2093 | + } | ||
2094 | + return do_resolve_unit_mask(e, pe, extra); | ||
2095 | +} | ||
diff --git a/recipes-append/oprofile/oprofile_0.9.8.bbappend b/recipes-append/oprofile/oprofile_0.9.8.bbappend new file mode 100644 index 0000000..c631963 --- /dev/null +++ b/recipes-append/oprofile/oprofile_0.9.8.bbappend | |||
@@ -0,0 +1,3 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "file://oprofile-e500mc.patch" | ||
diff --git a/recipes-append/perf/perf.bbappend b/recipes-append/perf/perf.bbappend new file mode 100644 index 0000000..864f938 --- /dev/null +++ b/recipes-append/perf/perf.bbappend | |||
@@ -0,0 +1,4 @@ | |||
1 | # | ||
2 | # added the python-math and python-sqlite3 modules, required by perf | ||
3 | # | ||
4 | SCRIPTING_RDEPENDS = "${@perf_feature_enabled('perf-scripting', 'perl perl-modules python python-math python-sqlite3', '',d)}" | ||
diff --git a/recipes-bsp/fm-ucode/fm-ucode_git.bb b/recipes-bsp/fm-ucode/fm-ucode_git.bb new file mode 100644 index 0000000..89c43ba --- /dev/null +++ b/recipes-bsp/fm-ucode/fm-ucode_git.bb | |||
@@ -0,0 +1,46 @@ | |||
1 | DESCRIPTION = "Fman microcode binary" | ||
2 | SECTION = "fm-ucode" | ||
3 | LICENSE = "Freescale EULA" | ||
4 | LIC_FILES_CHKSUM = "file://EULA;md5=60037ccba533a5995e8d1a838d85799c" | ||
5 | |||
6 | FMAN_UCODE_INSTALL_FILE = "fsl_fman_ucode" | ||
7 | FMAN_UCODE_INSTALL_FILE_append_p2041rdb = "_P2041" | ||
8 | FMAN_UCODE_INSTALL_FILE_append_p4080ds= "_P4080" | ||
9 | FMAN_UCODE_INSTALL_FILE_append_p1023rds = "_*1023" | ||
10 | FMAN_UCODE_INSTALL_FILE_append_p5020ds = "_P5020" | ||
11 | FMAN_UCODE_INSTALL_FILE_append_p5020ds-64b = "_P5020" | ||
12 | FMAN_UCODE_INSTALL_FILE_append_p5040ds = "_P5040" | ||
13 | FMAN_UCODE_INSTALL_FILE_append_p5040ds-64b = "_P5040" | ||
14 | FMAN_UCODE_INSTALL_FILE_append_p3041ds = "_P3041" | ||
15 | FMAN_UCODE_INSTALL_FILE_append_b4420qds = "_B4860" | ||
16 | FMAN_UCODE_INSTALL_FILE_append_b4420qds-64b = "_B4860" | ||
17 | FMAN_UCODE_INSTALL_FILE_append_b4860qds = "_B4860" | ||
18 | FMAN_UCODE_INSTALL_FILE_append_b4860qds-64b = "_B4860" | ||
19 | FMAN_UCODE_INSTALL_FILE_append_t4160qds = "_T4240" | ||
20 | FMAN_UCODE_INSTALL_FILE_append_t4160qds-64b = "_T4240" | ||
21 | FMAN_UCODE_INSTALL_FILE_append_t4240qds = "_T4240" | ||
22 | FMAN_UCODE_INSTALL_FILE_append_t4240qds-64b = "_T4240" | ||
23 | |||
24 | COMPATIBLE_MACHINE = "(p1023rds|p4080ds|p5020ds|p5040ds|p5020ds-64b|p5040ds-64b|p3041ds|p2041rdb|b4420qds|b4420qds-64b|b4860qds|b4860qds-64b|t4160qds|t4160qds-64b|t4240qds|t4240qds-64b)" | ||
25 | inherit deploy | ||
26 | |||
27 | SRC_URI = "git://git.freescale.com/ppc/sdk/fm-ucode.git" | ||
28 | SRCREV = "f4a43e8ad6a6e5fdedff6e1484386f963bccfdff" | ||
29 | |||
30 | S = "${WORKDIR}/git" | ||
31 | |||
32 | ALLOW_EMPTY_${PN} = "1" | ||
33 | do_install () { | ||
34 | install -d ${D}/boot | ||
35 | install -m 644 ${FMAN_UCODE_INSTALL_FILE}*.bin ${D}/boot/ | ||
36 | } | ||
37 | |||
38 | do_deploy () { | ||
39 | install -d ${DEPLOYDIR}/ | ||
40 | install -m 644 ${FMAN_UCODE_INSTALL_FILE}*.bin ${DEPLOYDIR}/ | ||
41 | } | ||
42 | addtask deploy before do_build after do_install | ||
43 | |||
44 | PACKAGES += "${PN}-image" | ||
45 | FILES_${PN}-image += "/boot" | ||
46 | |||
diff --git a/recipes-bsp/i2c-tools/i2c-tools-3.0.3/Module.mk b/recipes-bsp/i2c-tools/i2c-tools-3.0.3/Module.mk new file mode 100644 index 0000000..fcaf72f --- /dev/null +++ b/recipes-bsp/i2c-tools/i2c-tools-3.0.3/Module.mk | |||
@@ -0,0 +1,72 @@ | |||
1 | # EEPROMER | ||
2 | # | ||
3 | # Licensed under the GNU General Public License. | ||
4 | |||
5 | EEPROMER_DIR := eepromer | ||
6 | |||
7 | EEPROMER_CFLAGS := -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual \ | ||
8 | -Wcast-align -Wwrite-strings -Wnested-externs -Winline \ | ||
9 | -W -Wundef -Wmissing-prototypes -Iinclude | ||
10 | |||
11 | EEPROMER_TARGETS := eepromer eeprom eeprog | ||
12 | |||
13 | # | ||
14 | # Programs | ||
15 | # | ||
16 | |||
17 | $(EEPROMER_DIR)/eepromer: $(EEPROMER_DIR)/eepromer.o | ||
18 | $(CC) $(LDFLAGS) -o $@ $^ | ||
19 | |||
20 | $(EEPROMER_DIR)/eeprom: $(EEPROMER_DIR)/eeprom.o | ||
21 | $(CC) $(LDFLAGS) -o $@ $^ | ||
22 | |||
23 | $(EEPROMER_DIR)/eeprog: $(EEPROMER_DIR)/eeprog.o $(EEPROMER_DIR)/24cXX.o | ||
24 | $(CC) $(LDFLAGS) -o $@ $^ | ||
25 | |||
26 | # | ||
27 | # Objects | ||
28 | # | ||
29 | |||
30 | $(EEPROMER_DIR)/eepromer.o: $(EEPROMER_DIR)/eepromer.c | ||
31 | $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ | ||
32 | |||
33 | $(EEPROMER_DIR)/eeprom.o: $(EEPROMER_DIR)/eeprom.c | ||
34 | $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ | ||
35 | |||
36 | $(EEPROMER_DIR)/eeprog.o: $(EEPROMER_DIR)/eeprog.c | ||
37 | $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ | ||
38 | |||
39 | $(EEPROMER_DIR)/24cXX.o: $(EEPROMER_DIR)/24cXX.c | ||
40 | $(CC) $(CFLAGS) $(EEPROMER_CFLAGS) -c $< -o $@ | ||
41 | |||
42 | # | ||
43 | # Commands | ||
44 | # | ||
45 | |||
46 | all-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) | ||
47 | |||
48 | strip-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) | ||
49 | strip $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) | ||
50 | |||
51 | clean-eepromer: | ||
52 | $(RM) $(addprefix $(EEPROMER_DIR)/,*.o $(EEPROMER_TARGETS)) | ||
53 | |||
54 | install-eepromer: $(addprefix $(EEPROMER_DIR)/,$(EEPROMER_TARGETS)) | ||
55 | $(INSTALL_DIR) $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir) | ||
56 | for program in $(EEPROMER_TARGETS) ; do \ | ||
57 | $(INSTALL_PROGRAM) $(EEPROMER_DIR)/$$program $(DESTDIR)$(sbindir) ; done | ||
58 | |||
59 | uninstall-eepromer: | ||
60 | for program in $(EEPROMER_TARGETS) ; do \ | ||
61 | $(RM) $(DESTDIR)$(sbindir)/$$program ; \ | ||
62 | $(RM) $(DESTDIR)$(man8dir)/$$program.8 ; done | ||
63 | |||
64 | all: all-eepromer | ||
65 | |||
66 | strip: strip-eepromer | ||
67 | |||
68 | clean: clean-eepromer | ||
69 | |||
70 | install: install-eepromer | ||
71 | |||
72 | uninstall: uninstall-eepromer | ||
diff --git a/recipes-bsp/i2c-tools/i2c-tools_3.0.3.bb b/recipes-bsp/i2c-tools/i2c-tools_3.0.3.bb new file mode 100644 index 0000000..021090c --- /dev/null +++ b/recipes-bsp/i2c-tools/i2c-tools_3.0.3.bb | |||
@@ -0,0 +1,24 @@ | |||
1 | DESCRIPTION = "Set of i2c tools for linux" | ||
2 | SECTION = "base" | ||
3 | LICENSE = "GPLv2" | ||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" | ||
5 | |||
6 | SRC_URI = "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-${PV}.tar.bz2 \ | ||
7 | file://Module.mk \ | ||
8 | " | ||
9 | SRC_URI[md5sum] = "511376eed04455cdb277ef19c5f73bb4" | ||
10 | SRC_URI[sha256sum] = "23b28e474741834e3f1b35b0686528769a13adc92d2ff5603cbda1d6bd5e5629" | ||
11 | |||
12 | inherit autotools | ||
13 | |||
14 | do_compile_prepend() { | ||
15 | cp ${WORKDIR}/Module.mk ${S}/eepromer/ | ||
16 | sed -i 's#/usr/local#/usr#' Makefile | ||
17 | echo "include eepromer/Module.mk" >> Makefile | ||
18 | } | ||
19 | |||
20 | do_install_append() { | ||
21 | install -d ${D}${includedir}/linux | ||
22 | install -m 0644 include/linux/i2c-dev.h ${D}${includedir}/linux/i2c-dev-user.h | ||
23 | rm -f ${D}${includedir}/linux/i2c-dev.h | ||
24 | } | ||
diff --git a/recipes-bsp/libuio/libuio/run-ptest b/recipes-bsp/libuio/libuio/run-ptest new file mode 100644 index 0000000..46c80b5 --- /dev/null +++ b/recipes-bsp/libuio/libuio/run-ptest | |||
@@ -0,0 +1,3 @@ | |||
1 | #!/bin/sh | ||
2 | echo "SKIP: no upstream test" | ||
3 | |||
diff --git a/recipes-bsp/libuio/libuio_git.bb b/recipes-bsp/libuio/libuio_git.bb new file mode 100644 index 0000000..6b004c7 --- /dev/null +++ b/recipes-bsp/libuio/libuio_git.bb | |||
@@ -0,0 +1,27 @@ | |||
1 | SUMMARY = "libUIO" | ||
2 | DESCRIPTION = "Provide a generic framework for handling devices in userspace." | ||
3 | HOMEPAGE = "https://www.osadl.org/UIO.uio.0.html" | ||
4 | SECTION = "libs" | ||
5 | LICENSE = "GPLv2" | ||
6 | |||
7 | LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" | ||
8 | |||
9 | SRCREV = "cc233857ba1613801e7218d07127d19608a99702" | ||
10 | PR = "r0" | ||
11 | PV = "1.0+git${SRCPV}" | ||
12 | |||
13 | SRC_URI = "git://git.linutronix.de/projects/libUIO;protocol=git \ | ||
14 | file://run-ptest" | ||
15 | |||
16 | DEPENDS = "virtual/libc" | ||
17 | |||
18 | S = "${WORKDIR}/git" | ||
19 | |||
20 | inherit autotools | ||
21 | |||
22 | do_install_append () { | ||
23 | if [ "${PN}" = "${BPN}" -a ${PTEST_ENABLED} = "1" ]; then | ||
24 | mkdir -p ${D}${PTEST_PATH} | ||
25 | install -m 0755 ${WORKDIR}/run-ptest ${D}${PTEST_PATH} | ||
26 | fi | ||
27 | } | ||
diff --git a/recipes-bsp/rtl8168/files/r8168-8.031.00.tar.bz2 b/recipes-bsp/rtl8168/files/r8168-8.031.00.tar.bz2 new file mode 100644 index 0000000..114d5a1 --- /dev/null +++ b/recipes-bsp/rtl8168/files/r8168-8.031.00.tar.bz2 | |||
Binary files differ | |||
diff --git a/recipes-bsp/rtl8168/rtl8168_8.031.00.bb b/recipes-bsp/rtl8168/rtl8168_8.031.00.bb new file mode 100644 index 0000000..e5831c6 --- /dev/null +++ b/recipes-bsp/rtl8168/rtl8168_8.031.00.bb | |||
@@ -0,0 +1,35 @@ | |||
1 | SUMMARY = "RTL8111/8168 PCI Express 10/100/1000M Gigabit Ethernet" | ||
2 | DESCRIPTION = "http://www.realtek.com.tw/" | ||
3 | SECTION = "kernel/modules" | ||
4 | |||
5 | LICENSE = "GPLv2" | ||
6 | LIC_FILES_CHKSUM = "file://Makefile;md5=27208bd930c8f7f55db149f659059e10" | ||
7 | |||
8 | DEPENDS = "linux-libc-headers module-init-tools" | ||
9 | |||
10 | SRC_URI = "file://r8168-${PV}.tar.bz2" | ||
11 | |||
12 | SRC_URI[md5sum] = "ec1654f02e2dad930bbeb0210ddab7e5" | ||
13 | SRC_URI[sha256sum] = "5c617b3c08aca18d1eb24d33f77df40020eb64fb32c8e4008265e08b7ffe5779" | ||
14 | |||
15 | S = "${WORKDIR}/r8168-${PV}/src" | ||
16 | |||
17 | inherit module | ||
18 | |||
19 | do_compile () { | ||
20 | cd ${S} | ||
21 | do_make_scripts | ||
22 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS | ||
23 | oe_runmake KERNELDIR=${STAGING_KERNEL_DIR} \ | ||
24 | KERNEL_SRC=${STAGING_KERNEL_DIR} \ | ||
25 | KERNEL_VERSION=${KERNEL_VERSION} \ | ||
26 | CC="${KERNEL_CC}" LD="${KERNEL_LD}" \ | ||
27 | AR="${KERNEL_AR}" \ | ||
28 | modules | ||
29 | } | ||
30 | |||
31 | do_install () { | ||
32 | mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net | ||
33 | cp ${S}/*ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net | ||
34 | } | ||
35 | |||
diff --git a/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend new file mode 100644 index 0000000..590b4f1 --- /dev/null +++ b/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend | |||
@@ -0,0 +1 @@ | |||
RDEPENDS_${PN} += "nativesdk-e2fsprogs nativesdk-u-boot-mkimage" | |||
diff --git a/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend b/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend new file mode 100644 index 0000000..3e1516c --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend | |||
@@ -0,0 +1 @@ | |||
RDEPENDS_${PN} += "libstdc++-staticdev eglibc-staticdev" | |||
diff --git a/recipes-core/packagegroups/packagegroup-enea-core-boot.bb b/recipes-core/packagegroups/packagegroup-enea-core-boot.bb new file mode 100644 index 0000000..9006a3d --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-core-boot.bb | |||
@@ -0,0 +1,65 @@ | |||
1 | # | ||
2 | # Copyright (C) 2007 OpenedHand Ltd. | ||
3 | # | ||
4 | |||
5 | SUMMARY = "Minimal boot requirements" | ||
6 | DESCRIPTION = "The minimal and busybox set of packages required to boot the system" | ||
7 | LICENSE = "MIT" | ||
8 | DEPENDS = "virtual/kernel" | ||
9 | PR = "r11" | ||
10 | |||
11 | inherit packagegroup | ||
12 | |||
13 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
14 | |||
15 | # | ||
16 | # Set by the machine configuration with packages essential for device bootup | ||
17 | # | ||
18 | MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "" | ||
19 | MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= "" | ||
20 | |||
21 | # For backwards compatibility after rename | ||
22 | RPROVIDES_${PN} = "task-core-boot" | ||
23 | RREPLACES_${PN} = "task-core-boot" | ||
24 | RCONFLICTS_${PN} = "task-core-boot" | ||
25 | |||
26 | # Distro can override the following VIRTUAL-RUNTIME providers: | ||
27 | VIRTUAL-RUNTIME_dev_manager ?= "udev" | ||
28 | VIRTUAL-RUNTIME_login_manager ?= "busybox" | ||
29 | VIRTUAL-RUNTIME_init_manager ?= "sysvinit" | ||
30 | VIRTUAL-RUNTIME_initscripts ?= "initscripts" | ||
31 | VIRTUAL-RUNTIME_keymaps ?= "keymaps" | ||
32 | |||
33 | RDEPENDS_${PN} += "\ | ||
34 | base-files \ | ||
35 | base-passwd \ | ||
36 | ${@base_contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \ | ||
37 | modutils-initscripts \ | ||
38 | netbase \ | ||
39 | init-ifupdown \ | ||
40 | ${VIRTUAL-RUNTIME_login_manager} \ | ||
41 | ${VIRTUAL-RUNTIME_init_manager} \ | ||
42 | ${VIRTUAL-RUNTIME_initscripts} \ | ||
43 | ${VIRTUAL-RUNTIME_dev_manager} \ | ||
44 | ${VIRTUAL-RUNTIME_update-alternatives} \ | ||
45 | ${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}" | ||
46 | |||
47 | RDEPENDS_${PN}_append_fslmachine = " u-boot" | ||
48 | RDEPENDS_${PN}_append_p2041 = " fm-ucode rcw" | ||
49 | RDEPENDS_${PN}_append_p4080 = " fm-ucode rcw" | ||
50 | RDEPENDS_${PN} += "\ | ||
51 | busybox \ | ||
52 | ${@base_contains("MACHINE_FEATURES", "rtc", "busybox-hwclock", "", d)} \ | ||
53 | " | ||
54 | |||
55 | RDEPENDS_${PN}_append_x86 = "\ | ||
56 | kernel-vmlinux \ | ||
57 | kernel \ | ||
58 | " | ||
59 | RDEPENDS_${PN}_append_x86-64 = "\ | ||
60 | kernel-vmlinux \ | ||
61 | kernel \ | ||
62 | " | ||
63 | |||
64 | RRECOMMENDS_${PN} = "\ | ||
65 | ${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}" | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-ddt.bb b/recipes-core/packagegroups/packagegroup-enea-ddt.bb new file mode 100644 index 0000000..3116b4b --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-ddt.bb | |||
@@ -0,0 +1,22 @@ | |||
1 | DESCRIPTION = "Package group for driver test" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r0" | ||
6 | |||
7 | inherit packagegroup | ||
8 | |||
9 | RDEPENDS_${PN} = "\ | ||
10 | hdparm \ | ||
11 | rt-tests \ | ||
12 | i2c-tools \ | ||
13 | mtd-utils \ | ||
14 | net-tools \ | ||
15 | pciutils \ | ||
16 | usbutils \ | ||
17 | watchdog \ | ||
18 | " | ||
19 | |||
20 | RRECOMMENDS_${PN} = "\ | ||
21 | ddt-runner \ | ||
22 | " | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-debug.bb b/recipes-core/packagegroups/packagegroup-enea-debug.bb new file mode 100644 index 0000000..b1d386b --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-debug.bb | |||
@@ -0,0 +1,35 @@ | |||
1 | DESCRIPTION = "Tools package group for OE-Core" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r0" | ||
6 | |||
7 | PACKAGES = "\ | ||
8 | ${PN} \ | ||
9 | ${PN}-dbg \ | ||
10 | ${PN}-dev \ | ||
11 | " | ||
12 | |||
13 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
14 | |||
15 | ALLOW_EMPTY_${PN} = "1" | ||
16 | |||
17 | # systemtap needs elfutils which is not fully buildable on uclibc | ||
18 | # hence we exclude it from uclibc based builds | ||
19 | SYSTEMTAP = "systemtap" | ||
20 | SYSTEMTAP_libc-uclibc = "" | ||
21 | |||
22 | # kexec-tools doesn't work on Mips | ||
23 | KEXECTOOLS ?= "kexec-tools" | ||
24 | KEXECTOOLS_mips ?= "" | ||
25 | KEXECTOOLS_mipsel ?= "" | ||
26 | # No need to remove kexec-tools from powerpc | ||
27 | #KEXECTOOLS_powerpc ?= "" | ||
28 | |||
29 | RDEPENDS_${PN} = "\ | ||
30 | gdb \ | ||
31 | gdbserver \ | ||
32 | rsync \ | ||
33 | strace \ | ||
34 | ${SYSTEMTAP} \ | ||
35 | " | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-profile.bb b/recipes-core/packagegroups/packagegroup-enea-profile.bb new file mode 100644 index 0000000..95b275a --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-profile.bb | |||
@@ -0,0 +1,66 @@ | |||
1 | DESCRIPTION = "Profiling package grooup for OE-Core" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r0" | ||
6 | |||
7 | inherit pkgconfig | ||
8 | |||
9 | PACKAGES = "\ | ||
10 | ${PN} \ | ||
11 | ${PN}-dbg \ | ||
12 | ${PN}-dev \ | ||
13 | " | ||
14 | |||
15 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
16 | |||
17 | ALLOW_EMPTY_${PN} = "1" | ||
18 | |||
19 | |||
20 | # dany: oprofileui-server | ||
21 | # lttng-viewer | ||
22 | # latencytop | ||
23 | # removed due to their x11 dependency. | ||
24 | # | ||
25 | # dany: blktrace | ||
26 | # sysprof | ||
27 | # removed due to their x11 dependency. | ||
28 | RDEPENDS_${PN} = "\ | ||
29 | oprofile \ | ||
30 | ${LTTNG} \ | ||
31 | " | ||
32 | |||
33 | LTTNG ?= "\ | ||
34 | lttng-tools \ | ||
35 | lttng-modules \ | ||
36 | lttng-ust \ | ||
37 | " | ||
38 | LTTNG_armv6 ?= "" | ||
39 | |||
40 | # comment out perf since it can not been built in linux-2.6.33.9 kernel | ||
41 | # perf | ||
42 | |||
43 | # Will fail without a debug flavoured kernel | ||
44 | # kernel-module-oprofile" | ||
45 | |||
46 | # lttng-ust uses sched_getcpu() which is not there on uclibc | ||
47 | # for some of the architectures it can be patched to call the | ||
48 | # syscall directly but for x86_64 __NR_getcpu is a vsyscall | ||
49 | # which means we can not use syscall() to call it. So we ignore | ||
50 | # it for x86_64/uclibc | ||
51 | |||
52 | LTTNGUST = "lttng-ust" | ||
53 | LTTNGUST_libc-uclibc = "" | ||
54 | |||
55 | # exmap-console | ||
56 | # exmap-server | ||
57 | |||
58 | # At present we only build lttng-ust on | ||
59 | # qemux86/qemux86-64/qemuppc/qemuarm/emenlow/atom-pc since upstream liburcu | ||
60 | # (which is required by lttng-ust) may not build on other platforms, like | ||
61 | # MIPS. | ||
62 | RDEPENDS_${PN}_append_qemux86 = " valgrind lttng-ust" | ||
63 | RDEPENDS_${PN}_append_qemux86-64 = " ${LTTNGUST}" | ||
64 | RDEPENDS_${PN}_append_qemuppc = " ${LTTNGUST}" | ||
65 | RDEPENDS_${PN}_append_qemuarm = " ${LTTNGUST}" | ||
66 | RDEPENDS_${PN}_append_powerpc = " ${LTTNGUST}" | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-ptest.bb b/recipes-core/packagegroups/packagegroup-enea-ptest.bb new file mode 100644 index 0000000..ee775da --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-ptest.bb | |||
@@ -0,0 +1,117 @@ | |||
1 | DESCRIPTION = "Ptest package group" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r0" | ||
6 | |||
7 | inherit packagegroup | ||
8 | |||
9 | ENEA_DAEMONS = " \ | ||
10 | at \ | ||
11 | cronie \ | ||
12 | " | ||
13 | |||
14 | ENEA_DATABASE = " \ | ||
15 | sqlite3 \ | ||
16 | " | ||
17 | |||
18 | ENEA_TRACE = " \ | ||
19 | babeltrace \ | ||
20 | ${VALGRIND} \ | ||
21 | " | ||
22 | |||
23 | VALGRIND ?= "" | ||
24 | VALGRIND_powerpc ?= "valgrind" | ||
25 | VALGRIND_e500v2 ?= "" | ||
26 | VALGRIND_x86 ?= "valgrind" | ||
27 | VALGRIND_x86_64 ?= "valgrind" | ||
28 | VALGRIND_armv7a ?= "valgrind" | ||
29 | |||
30 | ENEA_DEV = " \ | ||
31 | eglibc-locale \ | ||
32 | " | ||
33 | |||
34 | ENEA_DEVICE = " \ | ||
35 | libusb1-dbg \ | ||
36 | libusb-compat-dbg \ | ||
37 | usbutils \ | ||
38 | " | ||
39 | |||
40 | ENEA_FSYS = " \ | ||
41 | acl \ | ||
42 | pramfs-init \ | ||
43 | " | ||
44 | |||
45 | ENEA_HIGHAVA = " \ | ||
46 | kexec \ | ||
47 | kexec-tools \ | ||
48 | " | ||
49 | |||
50 | ENEA_LIBS = " \ | ||
51 | gettext \ | ||
52 | gettext-runtime \ | ||
53 | libstdc++ \ | ||
54 | libuio \ | ||
55 | zlib \ | ||
56 | " | ||
57 | |||
58 | ENEA_MESSAGING = " \ | ||
59 | dbus \ | ||
60 | " | ||
61 | |||
62 | ENEA_SCRIPTING = " \ | ||
63 | tcl \ | ||
64 | python \ | ||
65 | " | ||
66 | |||
67 | ENEA_SECURITY = " \ | ||
68 | openssl" | ||
69 | |||
70 | ENEA_SHELL = " \ | ||
71 | ncurses" | ||
72 | |||
73 | ENEA_UTILS = " \ | ||
74 | bc \ | ||
75 | bonnie++ \ | ||
76 | expat \ | ||
77 | " | ||
78 | |||
79 | ENEA_GPL ?= " \ | ||
80 | linx \ | ||
81 | linx-mod \ | ||
82 | " | ||
83 | ENEA_BSD = " \ | ||
84 | partrt \ | ||
85 | " | ||
86 | |||
87 | ENEA_GPL_qemux86 = "" | ||
88 | ENEA_GPL_qemuppc = "" | ||
89 | ENEA_GPL_armv5 = "" | ||
90 | ENEA_GPL_armv7a = "" | ||
91 | |||
92 | RDEPENDS_${PN} = " \ | ||
93 | ${ENEA_DAEMONS} \ | ||
94 | ${ENEA_DATABASE} \ | ||
95 | ${ENEA_TRACE} \ | ||
96 | ${ENEA_DEV} \ | ||
97 | ${ENEA_DEVICE} \ | ||
98 | ${ENEA_FSYS} \ | ||
99 | ${ENEA_HIGHAVA} \ | ||
100 | ${ENEA_LIBS} \ | ||
101 | ${ENEA_MESSAGING} \ | ||
102 | ${ENEA_SCRIPTING} \ | ||
103 | ${ENEA_SECURITY} \ | ||
104 | ${ENEA_SHELL} \ | ||
105 | ${ENEA_UTILS} \ | ||
106 | ${ENEA_GPL} \ | ||
107 | ${ENEA_BSD} \ | ||
108 | ethtool \ | ||
109 | libxml2 \ | ||
110 | gdb \ | ||
111 | elfutils \ | ||
112 | " | ||
113 | |||
114 | |||
115 | RRECOMMENDS_${PN} = " \ | ||
116 | ptest-runner \ | ||
117 | " | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-rt-tools.bb b/recipes-core/packagegroups/packagegroup-enea-rt-tools.bb new file mode 100644 index 0000000..7515ed4 --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-rt-tools.bb | |||
@@ -0,0 +1,13 @@ | |||
1 | DESCRIPTION = "Enea RT-tools package group" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r1" | ||
6 | |||
7 | inherit packagegroup | ||
8 | |||
9 | RDEPENDS_${PN} = " \ | ||
10 | partrt \ | ||
11 | count-ticks \ | ||
12 | list2mask \ | ||
13 | " | ||
diff --git a/recipes-core/packagegroups/packagegroup-enea-sys.bb b/recipes-core/packagegroups/packagegroup-enea-sys.bb new file mode 100644 index 0000000..bfed070 --- /dev/null +++ b/recipes-core/packagegroups/packagegroup-enea-sys.bb | |||
@@ -0,0 +1,18 @@ | |||
1 | DESCRIPTION = "Package group for system test" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
4 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | PR = "r0" | ||
6 | |||
7 | inherit packagegroup | ||
8 | |||
9 | RDEPENDS_${PN} = "\ | ||
10 | ltp \ | ||
11 | logrotate \ | ||
12 | sudo \ | ||
13 | perf-networking \ | ||
14 | " | ||
15 | |||
16 | RRECOMMENDS_${PN} = "\ | ||
17 | systest-runner \ | ||
18 | " | ||
diff --git a/recipes-devtools/binutils/binutils-2.24.inc b/recipes-devtools/binutils/binutils-2.24.inc new file mode 100644 index 0000000..3a1186c --- /dev/null +++ b/recipes-devtools/binutils/binutils-2.24.inc | |||
@@ -0,0 +1,6 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "\ | ||
4 | file://0001-Revert-Report-overflow-on-PowerPC64-h-and-ha-relocat.patch \ | ||
5 | " | ||
6 | |||
diff --git a/recipes-devtools/binutils/binutils-cross-canadian_2.24.bbappend b/recipes-devtools/binutils/binutils-cross-canadian_2.24.bbappend new file mode 100644 index 0000000..0427595 --- /dev/null +++ b/recipes-devtools/binutils/binutils-cross-canadian_2.24.bbappend | |||
@@ -0,0 +1 @@ | |||
require binutils-${PV}.inc | |||
diff --git a/recipes-devtools/binutils/binutils-cross_2.24.bbappend b/recipes-devtools/binutils/binutils-cross_2.24.bbappend new file mode 100644 index 0000000..0427595 --- /dev/null +++ b/recipes-devtools/binutils/binutils-cross_2.24.bbappend | |||
@@ -0,0 +1 @@ | |||
require binutils-${PV}.inc | |||
diff --git a/recipes-devtools/binutils/binutils-crosssdk_2.24.bbappend b/recipes-devtools/binutils/binutils-crosssdk_2.24.bbappend new file mode 100644 index 0000000..0427595 --- /dev/null +++ b/recipes-devtools/binutils/binutils-crosssdk_2.24.bbappend | |||
@@ -0,0 +1 @@ | |||
require binutils-${PV}.inc | |||
diff --git a/recipes-devtools/binutils/binutils_2.24.bbappend b/recipes-devtools/binutils/binutils_2.24.bbappend new file mode 100644 index 0000000..0427595 --- /dev/null +++ b/recipes-devtools/binutils/binutils_2.24.bbappend | |||
@@ -0,0 +1 @@ | |||
require binutils-${PV}.inc | |||
diff --git a/recipes-devtools/binutils/files/0001-Revert-Report-overflow-on-PowerPC64-h-and-ha-relocat.patch b/recipes-devtools/binutils/files/0001-Revert-Report-overflow-on-PowerPC64-h-and-ha-relocat.patch new file mode 100644 index 0000000..bda760f --- /dev/null +++ b/recipes-devtools/binutils/files/0001-Revert-Report-overflow-on-PowerPC64-h-and-ha-relocat.patch | |||
@@ -0,0 +1,1087 @@ | |||
1 | From 269bee7df1abfdc230f1ed6a6de3150adffde962 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com> | ||
3 | Date: Fri, 11 Apr 2014 16:15:36 +0300 | ||
4 | Subject: [PATCH] Revert 'Report overflow on PowerPC64 @h and @ha | ||
5 | relocations.' patch | ||
6 | |||
7 | --- | ||
8 | bfd/elf64-ppc.c | 183 +++++++++------------------------------------------ | ||
9 | bfd/reloc.c | 12 ---- | ||
10 | elfcpp/powerpc.h | 6 -- | ||
11 | gas/config/tc-ppc.c | 139 ++++++++++---------------------------- | ||
12 | gold/powerpc.cc | 130 +++++++++++------------------------- | ||
13 | include/elf/ppc64.h | 13 +--- | ||
14 | 6 files changed, 109 insertions(+), 374 deletions(-) | ||
15 | |||
16 | diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c | ||
17 | index bf13a5d..ba3c655 100644 | ||
18 | --- a/bfd/elf64-ppc.c | ||
19 | +++ b/bfd/elf64-ppc.c | ||
20 | @@ -327,7 +327,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
21 | 16, /* bitsize */ | ||
22 | FALSE, /* pc_relative */ | ||
23 | 0, /* bitpos */ | ||
24 | - complain_overflow_signed, /* complain_on_overflow */ | ||
25 | + complain_overflow_dont, /* complain_on_overflow */ | ||
26 | bfd_elf_generic_reloc, /* special_function */ | ||
27 | "R_PPC64_ADDR16_HI", /* name */ | ||
28 | FALSE, /* partial_inplace */ | ||
29 | @@ -343,7 +343,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
30 | 16, /* bitsize */ | ||
31 | FALSE, /* pc_relative */ | ||
32 | 0, /* bitpos */ | ||
33 | - complain_overflow_signed, /* complain_on_overflow */ | ||
34 | + complain_overflow_dont, /* complain_on_overflow */ | ||
35 | ppc64_elf_ha_reloc, /* special_function */ | ||
36 | "R_PPC64_ADDR16_HA", /* name */ | ||
37 | FALSE, /* partial_inplace */ | ||
38 | @@ -505,7 +505,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
39 | 16, /* bitsize */ | ||
40 | FALSE, /* pc_relative */ | ||
41 | 0, /* bitpos */ | ||
42 | - complain_overflow_signed,/* complain_on_overflow */ | ||
43 | + complain_overflow_dont,/* complain_on_overflow */ | ||
44 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
45 | "R_PPC64_GOT16_HI", /* name */ | ||
46 | FALSE, /* partial_inplace */ | ||
47 | @@ -521,7 +521,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
48 | 16, /* bitsize */ | ||
49 | FALSE, /* pc_relative */ | ||
50 | 0, /* bitpos */ | ||
51 | - complain_overflow_signed,/* complain_on_overflow */ | ||
52 | + complain_overflow_dont,/* complain_on_overflow */ | ||
53 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
54 | "R_PPC64_GOT16_HA", /* name */ | ||
55 | FALSE, /* partial_inplace */ | ||
56 | @@ -698,7 +698,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
57 | 16, /* bitsize */ | ||
58 | FALSE, /* pc_relative */ | ||
59 | 0, /* bitpos */ | ||
60 | - complain_overflow_signed, /* complain_on_overflow */ | ||
61 | + complain_overflow_dont, /* complain_on_overflow */ | ||
62 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
63 | "R_PPC64_PLT16_HI", /* name */ | ||
64 | FALSE, /* partial_inplace */ | ||
65 | @@ -714,7 +714,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
66 | 16, /* bitsize */ | ||
67 | FALSE, /* pc_relative */ | ||
68 | 0, /* bitpos */ | ||
69 | - complain_overflow_signed, /* complain_on_overflow */ | ||
70 | + complain_overflow_dont, /* complain_on_overflow */ | ||
71 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
72 | "R_PPC64_PLT16_HA", /* name */ | ||
73 | FALSE, /* partial_inplace */ | ||
74 | @@ -759,7 +759,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
75 | 16, /* bitsize */ | ||
76 | FALSE, /* pc_relative */ | ||
77 | 0, /* bitpos */ | ||
78 | - complain_overflow_signed, /* complain_on_overflow */ | ||
79 | + complain_overflow_dont, /* complain_on_overflow */ | ||
80 | ppc64_elf_sectoff_reloc, /* special_function */ | ||
81 | "R_PPC64_SECTOFF_HI", /* name */ | ||
82 | FALSE, /* partial_inplace */ | ||
83 | @@ -774,7 +774,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
84 | 16, /* bitsize */ | ||
85 | FALSE, /* pc_relative */ | ||
86 | 0, /* bitpos */ | ||
87 | - complain_overflow_signed, /* complain_on_overflow */ | ||
88 | + complain_overflow_dont, /* complain_on_overflow */ | ||
89 | ppc64_elf_sectoff_ha_reloc, /* special_function */ | ||
90 | "R_PPC64_SECTOFF_HA", /* name */ | ||
91 | FALSE, /* partial_inplace */ | ||
92 | @@ -981,7 +981,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
93 | 16, /* bitsize */ | ||
94 | FALSE, /* pc_relative */ | ||
95 | 0, /* bitpos */ | ||
96 | - complain_overflow_signed, /* complain_on_overflow */ | ||
97 | + complain_overflow_dont, /* complain_on_overflow */ | ||
98 | ppc64_elf_toc_reloc, /* special_function */ | ||
99 | "R_PPC64_TOC16_HI", /* name */ | ||
100 | FALSE, /* partial_inplace */ | ||
101 | @@ -1000,7 +1000,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
102 | 16, /* bitsize */ | ||
103 | FALSE, /* pc_relative */ | ||
104 | 0, /* bitpos */ | ||
105 | - complain_overflow_signed, /* complain_on_overflow */ | ||
106 | + complain_overflow_dont, /* complain_on_overflow */ | ||
107 | ppc64_elf_toc_ha_reloc, /* special_function */ | ||
108 | "R_PPC64_TOC16_HA", /* name */ | ||
109 | FALSE, /* partial_inplace */ | ||
110 | @@ -1072,7 +1072,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
111 | 16, /* bitsize */ | ||
112 | FALSE, /* pc_relative */ | ||
113 | 0, /* bitpos */ | ||
114 | - complain_overflow_signed, /* complain_on_overflow */ | ||
115 | + complain_overflow_dont, /* complain_on_overflow */ | ||
116 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
117 | "R_PPC64_PLTGOT16_HI", /* name */ | ||
118 | FALSE, /* partial_inplace */ | ||
119 | @@ -1090,7 +1090,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
120 | 16, /* bitsize */ | ||
121 | FALSE, /* pc_relative */ | ||
122 | 0, /* bitpos */ | ||
123 | - complain_overflow_signed, /* complain_on_overflow */ | ||
124 | + complain_overflow_dont,/* complain_on_overflow */ | ||
125 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
126 | "R_PPC64_PLTGOT16_HA", /* name */ | ||
127 | FALSE, /* partial_inplace */ | ||
128 | @@ -1392,7 +1392,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
129 | 16, /* bitsize */ | ||
130 | FALSE, /* pc_relative */ | ||
131 | 0, /* bitpos */ | ||
132 | - complain_overflow_signed, /* complain_on_overflow */ | ||
133 | + complain_overflow_dont, /* complain_on_overflow */ | ||
134 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
135 | "R_PPC64_DTPREL16_HI", /* name */ | ||
136 | FALSE, /* partial_inplace */ | ||
137 | @@ -1407,7 +1407,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
138 | 16, /* bitsize */ | ||
139 | FALSE, /* pc_relative */ | ||
140 | 0, /* bitpos */ | ||
141 | - complain_overflow_signed, /* complain_on_overflow */ | ||
142 | + complain_overflow_dont, /* complain_on_overflow */ | ||
143 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
144 | "R_PPC64_DTPREL16_HA", /* name */ | ||
145 | FALSE, /* partial_inplace */ | ||
146 | @@ -1558,7 +1558,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
147 | 16, /* bitsize */ | ||
148 | FALSE, /* pc_relative */ | ||
149 | 0, /* bitpos */ | ||
150 | - complain_overflow_signed, /* complain_on_overflow */ | ||
151 | + complain_overflow_dont, /* complain_on_overflow */ | ||
152 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
153 | "R_PPC64_TPREL16_HI", /* name */ | ||
154 | FALSE, /* partial_inplace */ | ||
155 | @@ -1573,7 +1573,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
156 | 16, /* bitsize */ | ||
157 | FALSE, /* pc_relative */ | ||
158 | 0, /* bitpos */ | ||
159 | - complain_overflow_signed, /* complain_on_overflow */ | ||
160 | + complain_overflow_dont, /* complain_on_overflow */ | ||
161 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
162 | "R_PPC64_TPREL16_HA", /* name */ | ||
163 | FALSE, /* partial_inplace */ | ||
164 | @@ -1710,7 +1710,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
165 | 16, /* bitsize */ | ||
166 | FALSE, /* pc_relative */ | ||
167 | 0, /* bitpos */ | ||
168 | - complain_overflow_signed, /* complain_on_overflow */ | ||
169 | + complain_overflow_dont, /* complain_on_overflow */ | ||
170 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
171 | "R_PPC64_GOT_TLSGD16_HI", /* name */ | ||
172 | FALSE, /* partial_inplace */ | ||
173 | @@ -1725,7 +1725,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
174 | 16, /* bitsize */ | ||
175 | FALSE, /* pc_relative */ | ||
176 | 0, /* bitpos */ | ||
177 | - complain_overflow_signed, /* complain_on_overflow */ | ||
178 | + complain_overflow_dont, /* complain_on_overflow */ | ||
179 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
180 | "R_PPC64_GOT_TLSGD16_HA", /* name */ | ||
181 | FALSE, /* partial_inplace */ | ||
182 | @@ -1772,7 +1772,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
183 | 16, /* bitsize */ | ||
184 | FALSE, /* pc_relative */ | ||
185 | 0, /* bitpos */ | ||
186 | - complain_overflow_signed, /* complain_on_overflow */ | ||
187 | + complain_overflow_dont, /* complain_on_overflow */ | ||
188 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
189 | "R_PPC64_GOT_TLSLD16_HI", /* name */ | ||
190 | FALSE, /* partial_inplace */ | ||
191 | @@ -1787,7 +1787,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
192 | 16, /* bitsize */ | ||
193 | FALSE, /* pc_relative */ | ||
194 | 0, /* bitpos */ | ||
195 | - complain_overflow_signed, /* complain_on_overflow */ | ||
196 | + complain_overflow_dont, /* complain_on_overflow */ | ||
197 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
198 | "R_PPC64_GOT_TLSLD16_HA", /* name */ | ||
199 | FALSE, /* partial_inplace */ | ||
200 | @@ -1833,7 +1833,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
201 | 16, /* bitsize */ | ||
202 | FALSE, /* pc_relative */ | ||
203 | 0, /* bitpos */ | ||
204 | - complain_overflow_signed, /* complain_on_overflow */ | ||
205 | + complain_overflow_dont, /* complain_on_overflow */ | ||
206 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
207 | "R_PPC64_GOT_DTPREL16_HI", /* name */ | ||
208 | FALSE, /* partial_inplace */ | ||
209 | @@ -1848,7 +1848,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
210 | 16, /* bitsize */ | ||
211 | FALSE, /* pc_relative */ | ||
212 | 0, /* bitpos */ | ||
213 | - complain_overflow_signed, /* complain_on_overflow */ | ||
214 | + complain_overflow_dont, /* complain_on_overflow */ | ||
215 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
216 | "R_PPC64_GOT_DTPREL16_HA", /* name */ | ||
217 | FALSE, /* partial_inplace */ | ||
218 | @@ -1894,7 +1894,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
219 | 16, /* bitsize */ | ||
220 | FALSE, /* pc_relative */ | ||
221 | 0, /* bitpos */ | ||
222 | - complain_overflow_signed, /* complain_on_overflow */ | ||
223 | + complain_overflow_dont, /* complain_on_overflow */ | ||
224 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
225 | "R_PPC64_GOT_TPREL16_HI", /* name */ | ||
226 | FALSE, /* partial_inplace */ | ||
227 | @@ -1909,7 +1909,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
228 | 16, /* bitsize */ | ||
229 | FALSE, /* pc_relative */ | ||
230 | 0, /* bitpos */ | ||
231 | - complain_overflow_signed, /* complain_on_overflow */ | ||
232 | + complain_overflow_dont, /* complain_on_overflow */ | ||
233 | ppc64_elf_unhandled_reloc, /* special_function */ | ||
234 | "R_PPC64_GOT_TPREL16_HA", /* name */ | ||
235 | FALSE, /* partial_inplace */ | ||
236 | @@ -1982,7 +1982,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
237 | 16, /* bitsize */ | ||
238 | TRUE, /* pc_relative */ | ||
239 | 0, /* bitpos */ | ||
240 | - complain_overflow_signed, /* complain_on_overflow */ | ||
241 | + complain_overflow_dont, /* complain_on_overflow */ | ||
242 | bfd_elf_generic_reloc, /* special_function */ | ||
243 | "R_PPC64_REL16_HI", /* name */ | ||
244 | FALSE, /* partial_inplace */ | ||
245 | @@ -1998,7 +1998,7 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
246 | 16, /* bitsize */ | ||
247 | TRUE, /* pc_relative */ | ||
248 | 0, /* bitpos */ | ||
249 | - complain_overflow_signed, /* complain_on_overflow */ | ||
250 | + complain_overflow_dont, /* complain_on_overflow */ | ||
251 | ppc64_elf_ha_reloc, /* special_function */ | ||
252 | "R_PPC64_REL16_HA", /* name */ | ||
253 | FALSE, /* partial_inplace */ | ||
254 | @@ -2006,96 +2006,6 @@ static reloc_howto_type ppc64_elf_howto_raw[] = { | ||
255 | 0xffff, /* dst_mask */ | ||
256 | TRUE), /* pcrel_offset */ | ||
257 | |||
258 | - /* Like R_PPC64_ADDR16_HI, but no overflow. */ | ||
259 | - HOWTO (R_PPC64_ADDR16_HIGH, /* type */ | ||
260 | - 16, /* rightshift */ | ||
261 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
262 | - 16, /* bitsize */ | ||
263 | - FALSE, /* pc_relative */ | ||
264 | - 0, /* bitpos */ | ||
265 | - complain_overflow_dont, /* complain_on_overflow */ | ||
266 | - bfd_elf_generic_reloc, /* special_function */ | ||
267 | - "R_PPC64_ADDR16_HIGH", /* name */ | ||
268 | - FALSE, /* partial_inplace */ | ||
269 | - 0, /* src_mask */ | ||
270 | - 0xffff, /* dst_mask */ | ||
271 | - FALSE), /* pcrel_offset */ | ||
272 | - | ||
273 | - /* Like R_PPC64_ADDR16_HA, but no overflow. */ | ||
274 | - HOWTO (R_PPC64_ADDR16_HIGHA, /* type */ | ||
275 | - 16, /* rightshift */ | ||
276 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
277 | - 16, /* bitsize */ | ||
278 | - FALSE, /* pc_relative */ | ||
279 | - 0, /* bitpos */ | ||
280 | - complain_overflow_dont, /* complain_on_overflow */ | ||
281 | - ppc64_elf_ha_reloc, /* special_function */ | ||
282 | - "R_PPC64_ADDR16_HIGHA", /* name */ | ||
283 | - FALSE, /* partial_inplace */ | ||
284 | - 0, /* src_mask */ | ||
285 | - 0xffff, /* dst_mask */ | ||
286 | - FALSE), /* pcrel_offset */ | ||
287 | - | ||
288 | - /* Like R_PPC64_DTPREL16_HI, but no overflow. */ | ||
289 | - HOWTO (R_PPC64_DTPREL16_HIGH, | ||
290 | - 16, /* rightshift */ | ||
291 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
292 | - 16, /* bitsize */ | ||
293 | - FALSE, /* pc_relative */ | ||
294 | - 0, /* bitpos */ | ||
295 | - complain_overflow_dont, /* complain_on_overflow */ | ||
296 | - ppc64_elf_unhandled_reloc, /* special_function */ | ||
297 | - "R_PPC64_DTPREL16_HIGH", /* name */ | ||
298 | - FALSE, /* partial_inplace */ | ||
299 | - 0, /* src_mask */ | ||
300 | - 0xffff, /* dst_mask */ | ||
301 | - FALSE), /* pcrel_offset */ | ||
302 | - | ||
303 | - /* Like R_PPC64_DTPREL16_HA, but no overflow. */ | ||
304 | - HOWTO (R_PPC64_DTPREL16_HIGHA, | ||
305 | - 16, /* rightshift */ | ||
306 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
307 | - 16, /* bitsize */ | ||
308 | - FALSE, /* pc_relative */ | ||
309 | - 0, /* bitpos */ | ||
310 | - complain_overflow_dont, /* complain_on_overflow */ | ||
311 | - ppc64_elf_unhandled_reloc, /* special_function */ | ||
312 | - "R_PPC64_DTPREL16_HIGHA", /* name */ | ||
313 | - FALSE, /* partial_inplace */ | ||
314 | - 0, /* src_mask */ | ||
315 | - 0xffff, /* dst_mask */ | ||
316 | - FALSE), /* pcrel_offset */ | ||
317 | - | ||
318 | - /* Like R_PPC64_TPREL16_HI, but no overflow. */ | ||
319 | - HOWTO (R_PPC64_TPREL16_HIGH, | ||
320 | - 16, /* rightshift */ | ||
321 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
322 | - 16, /* bitsize */ | ||
323 | - FALSE, /* pc_relative */ | ||
324 | - 0, /* bitpos */ | ||
325 | - complain_overflow_dont, /* complain_on_overflow */ | ||
326 | - ppc64_elf_unhandled_reloc, /* special_function */ | ||
327 | - "R_PPC64_TPREL16_HIGH", /* name */ | ||
328 | - FALSE, /* partial_inplace */ | ||
329 | - 0, /* src_mask */ | ||
330 | - 0xffff, /* dst_mask */ | ||
331 | - FALSE), /* pcrel_offset */ | ||
332 | - | ||
333 | - /* Like R_PPC64_TPREL16_HA, but no overflow. */ | ||
334 | - HOWTO (R_PPC64_TPREL16_HIGHA, | ||
335 | - 16, /* rightshift */ | ||
336 | - 1, /* size (0 = byte, 1 = short, 2 = long) */ | ||
337 | - 16, /* bitsize */ | ||
338 | - FALSE, /* pc_relative */ | ||
339 | - 0, /* bitpos */ | ||
340 | - complain_overflow_dont, /* complain_on_overflow */ | ||
341 | - ppc64_elf_unhandled_reloc, /* special_function */ | ||
342 | - "R_PPC64_TPREL16_HIGHA", /* name */ | ||
343 | - FALSE, /* partial_inplace */ | ||
344 | - 0, /* src_mask */ | ||
345 | - 0xffff, /* dst_mask */ | ||
346 | - FALSE), /* pcrel_offset */ | ||
347 | - | ||
348 | /* GNU extension to record C++ vtable hierarchy. */ | ||
349 | HOWTO (R_PPC64_GNU_VTINHERIT, /* type */ | ||
350 | 0, /* rightshift */ | ||
351 | @@ -2174,12 +2084,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, | ||
352 | break; | ||
353 | case BFD_RELOC_HI16: r = R_PPC64_ADDR16_HI; | ||
354 | break; | ||
355 | - case BFD_RELOC_PPC64_ADDR16_HIGH: r = R_PPC64_ADDR16_HIGH; | ||
356 | - break; | ||
357 | case BFD_RELOC_HI16_S: r = R_PPC64_ADDR16_HA; | ||
358 | break; | ||
359 | - case BFD_RELOC_PPC64_ADDR16_HIGHA: r = R_PPC64_ADDR16_HIGHA; | ||
360 | - break; | ||
361 | case BFD_RELOC_PPC_BA16: r = R_PPC64_ADDR14; | ||
362 | break; | ||
363 | case BFD_RELOC_PPC_BA16_BRTAKEN: r = R_PPC64_ADDR14_BRTAKEN; | ||
364 | @@ -2298,12 +2204,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, | ||
365 | break; | ||
366 | case BFD_RELOC_PPC_TPREL16_HI: r = R_PPC64_TPREL16_HI; | ||
367 | break; | ||
368 | - case BFD_RELOC_PPC64_TPREL16_HIGH: r = R_PPC64_TPREL16_HIGH; | ||
369 | - break; | ||
370 | case BFD_RELOC_PPC_TPREL16_HA: r = R_PPC64_TPREL16_HA; | ||
371 | break; | ||
372 | - case BFD_RELOC_PPC64_TPREL16_HIGHA: r = R_PPC64_TPREL16_HIGHA; | ||
373 | - break; | ||
374 | case BFD_RELOC_PPC_TPREL: r = R_PPC64_TPREL64; | ||
375 | break; | ||
376 | case BFD_RELOC_PPC_DTPREL16: r = R_PPC64_DTPREL16; | ||
377 | @@ -2312,12 +2214,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, | ||
378 | break; | ||
379 | case BFD_RELOC_PPC_DTPREL16_HI: r = R_PPC64_DTPREL16_HI; | ||
380 | break; | ||
381 | - case BFD_RELOC_PPC64_DTPREL16_HIGH: r = R_PPC64_DTPREL16_HIGH; | ||
382 | - break; | ||
383 | case BFD_RELOC_PPC_DTPREL16_HA: r = R_PPC64_DTPREL16_HA; | ||
384 | break; | ||
385 | - case BFD_RELOC_PPC64_DTPREL16_HIGHA: r = R_PPC64_DTPREL16_HIGHA; | ||
386 | - break; | ||
387 | case BFD_RELOC_PPC_DTPREL: r = R_PPC64_DTPREL64; | ||
388 | break; | ||
389 | case BFD_RELOC_PPC_GOT_TLSGD16: r = R_PPC64_GOT_TLSGD16; | ||
390 | @@ -3662,8 +3560,6 @@ must_be_dyn_reloc (struct bfd_link_info *info, | ||
391 | case R_PPC64_TPREL16_HA: | ||
392 | case R_PPC64_TPREL16_DS: | ||
393 | case R_PPC64_TPREL16_LO_DS: | ||
394 | - case R_PPC64_TPREL16_HIGH: | ||
395 | - case R_PPC64_TPREL16_HIGHA: | ||
396 | case R_PPC64_TPREL16_HIGHER: | ||
397 | case R_PPC64_TPREL16_HIGHERA: | ||
398 | case R_PPC64_TPREL16_HIGHEST: | ||
399 | @@ -5394,8 +5290,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, | ||
400 | case R_PPC64_DTPREL16_HA: | ||
401 | case R_PPC64_DTPREL16_DS: | ||
402 | case R_PPC64_DTPREL16_LO_DS: | ||
403 | - case R_PPC64_DTPREL16_HIGH: | ||
404 | - case R_PPC64_DTPREL16_HIGHA: | ||
405 | case R_PPC64_DTPREL16_HIGHER: | ||
406 | case R_PPC64_DTPREL16_HIGHERA: | ||
407 | case R_PPC64_DTPREL16_HIGHEST: | ||
408 | @@ -5556,8 +5450,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, | ||
409 | case R_PPC64_TPREL16_HA: | ||
410 | case R_PPC64_TPREL16_DS: | ||
411 | case R_PPC64_TPREL16_LO_DS: | ||
412 | - case R_PPC64_TPREL16_HIGH: | ||
413 | - case R_PPC64_TPREL16_HIGHA: | ||
414 | case R_PPC64_TPREL16_HIGHER: | ||
415 | case R_PPC64_TPREL16_HIGHERA: | ||
416 | case R_PPC64_TPREL16_HIGHEST: | ||
417 | @@ -5605,8 +5497,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, | ||
418 | case R_PPC64_ADDR16_DS: | ||
419 | case R_PPC64_ADDR16_HA: | ||
420 | case R_PPC64_ADDR16_HI: | ||
421 | - case R_PPC64_ADDR16_HIGH: | ||
422 | - case R_PPC64_ADDR16_HIGHA: | ||
423 | case R_PPC64_ADDR16_HIGHER: | ||
424 | case R_PPC64_ADDR16_HIGHERA: | ||
425 | case R_PPC64_ADDR16_HIGHEST: | ||
426 | @@ -7363,8 +7253,6 @@ dec_dynrel_count (bfd_vma r_info, | ||
427 | case R_PPC64_TPREL16_HA: | ||
428 | case R_PPC64_TPREL16_DS: | ||
429 | case R_PPC64_TPREL16_LO_DS: | ||
430 | - case R_PPC64_TPREL16_HIGH: | ||
431 | - case R_PPC64_TPREL16_HIGHA: | ||
432 | case R_PPC64_TPREL16_HIGHER: | ||
433 | case R_PPC64_TPREL16_HIGHERA: | ||
434 | case R_PPC64_TPREL16_HIGHEST: | ||
435 | @@ -7386,8 +7274,6 @@ dec_dynrel_count (bfd_vma r_info, | ||
436 | case R_PPC64_ADDR16_DS: | ||
437 | case R_PPC64_ADDR16_HA: | ||
438 | case R_PPC64_ADDR16_HI: | ||
439 | - case R_PPC64_ADDR16_HIGH: | ||
440 | - case R_PPC64_ADDR16_HIGHA: | ||
441 | case R_PPC64_ADDR16_HIGHER: | ||
442 | case R_PPC64_ADDR16_HIGHERA: | ||
443 | case R_PPC64_ADDR16_HIGHEST: | ||
444 | @@ -14091,8 +13977,6 @@ ppc64_elf_relocate_section (bfd *output_bfd, | ||
445 | case R_PPC64_TPREL16_HA: | ||
446 | case R_PPC64_TPREL16_DS: | ||
447 | case R_PPC64_TPREL16_LO_DS: | ||
448 | - case R_PPC64_TPREL16_HIGH: | ||
449 | - case R_PPC64_TPREL16_HIGHA: | ||
450 | case R_PPC64_TPREL16_HIGHER: | ||
451 | case R_PPC64_TPREL16_HIGHERA: | ||
452 | case R_PPC64_TPREL16_HIGHEST: | ||
453 | @@ -14127,8 +14011,6 @@ ppc64_elf_relocate_section (bfd *output_bfd, | ||
454 | case R_PPC64_DTPREL16_HA: | ||
455 | case R_PPC64_DTPREL16_DS: | ||
456 | case R_PPC64_DTPREL16_LO_DS: | ||
457 | - case R_PPC64_DTPREL16_HIGH: | ||
458 | - case R_PPC64_DTPREL16_HIGHA: | ||
459 | case R_PPC64_DTPREL16_HIGHER: | ||
460 | case R_PPC64_DTPREL16_HIGHERA: | ||
461 | case R_PPC64_DTPREL16_HIGHEST: | ||
462 | @@ -14161,8 +14043,6 @@ ppc64_elf_relocate_section (bfd *output_bfd, | ||
463 | case R_PPC64_ADDR16_DS: | ||
464 | case R_PPC64_ADDR16_HA: | ||
465 | case R_PPC64_ADDR16_HI: | ||
466 | - case R_PPC64_ADDR16_HIGH: | ||
467 | - case R_PPC64_ADDR16_HIGHA: | ||
468 | case R_PPC64_ADDR16_HIGHER: | ||
469 | case R_PPC64_ADDR16_HIGHERA: | ||
470 | case R_PPC64_ADDR16_HIGHEST: | ||
471 | @@ -14477,20 +14357,21 @@ ppc64_elf_relocate_section (bfd *output_bfd, | ||
472 | default: | ||
473 | break; | ||
474 | |||
475 | - case R_PPC64_REL16_HA: | ||
476 | case R_PPC64_ADDR16_HA: | ||
477 | - case R_PPC64_ADDR16_HIGHA: | ||
478 | + case R_PPC64_REL16_HA: | ||
479 | case R_PPC64_ADDR16_HIGHERA: | ||
480 | case R_PPC64_ADDR16_HIGHESTA: | ||
481 | case R_PPC64_TOC16_HA: | ||
482 | case R_PPC64_SECTOFF_HA: | ||
483 | case R_PPC64_TPREL16_HA: | ||
484 | - case R_PPC64_TPREL16_HIGHA: | ||
485 | + case R_PPC64_DTPREL16_HA: | ||
486 | + case R_PPC64_TPREL16_HIGHER: | ||
487 | case R_PPC64_TPREL16_HIGHERA: | ||
488 | + case R_PPC64_TPREL16_HIGHEST: | ||
489 | case R_PPC64_TPREL16_HIGHESTA: | ||
490 | - case R_PPC64_DTPREL16_HA: | ||
491 | - case R_PPC64_DTPREL16_HIGHA: | ||
492 | + case R_PPC64_DTPREL16_HIGHER: | ||
493 | case R_PPC64_DTPREL16_HIGHERA: | ||
494 | + case R_PPC64_DTPREL16_HIGHEST: | ||
495 | case R_PPC64_DTPREL16_HIGHESTA: | ||
496 | /* It's just possible that this symbol is a weak symbol | ||
497 | that's not actually defined anywhere. In that case, | ||
498 | diff --git a/bfd/reloc.c b/bfd/reloc.c | ||
499 | index 77a04f8..cc34760 100644 | ||
500 | --- a/bfd/reloc.c | ||
501 | +++ b/bfd/reloc.c | ||
502 | @@ -2895,10 +2895,6 @@ ENUMX | ||
503 | BFD_RELOC_PPC64_PLTGOT16_DS | ||
504 | ENUMX | ||
505 | BFD_RELOC_PPC64_PLTGOT16_LO_DS | ||
506 | -ENUMX | ||
507 | - BFD_RELOC_PPC64_ADDR16_HIGH | ||
508 | -ENUMX | ||
509 | - BFD_RELOC_PPC64_ADDR16_HIGHA | ||
510 | ENUMDOC | ||
511 | Power(rs6000) and PowerPC relocations. | ||
512 | |||
513 | @@ -2986,14 +2982,6 @@ ENUMX | ||
514 | BFD_RELOC_PPC64_DTPREL16_HIGHEST | ||
515 | ENUMX | ||
516 | BFD_RELOC_PPC64_DTPREL16_HIGHESTA | ||
517 | -ENUMX | ||
518 | - BFD_RELOC_PPC64_TPREL16_HIGH | ||
519 | -ENUMX | ||
520 | - BFD_RELOC_PPC64_TPREL16_HIGHA | ||
521 | -ENUMX | ||
522 | - BFD_RELOC_PPC64_DTPREL16_HIGH | ||
523 | -ENUMX | ||
524 | - BFD_RELOC_PPC64_DTPREL16_HIGHA | ||
525 | ENUMDOC | ||
526 | PowerPC and PowerPC64 thread-local storage relocations. | ||
527 | |||
528 | diff --git a/elfcpp/powerpc.h b/elfcpp/powerpc.h | ||
529 | index 98354a2..0f13eda 100644 | ||
530 | --- a/elfcpp/powerpc.h | ||
531 | +++ b/elfcpp/powerpc.h | ||
532 | @@ -164,17 +164,11 @@ enum | ||
533 | R_PPC_EMB_SDA21 = 109, | ||
534 | R_PPC64_TOCSAVE = 109, | ||
535 | R_PPC_EMB_MRKREF = 110, | ||
536 | - R_PPC64_ADDR16_HIGH = 110, | ||
537 | R_PPC_EMB_RELSEC16 = 111, | ||
538 | - R_PPC64_ADDR16_HIGHA = 111, | ||
539 | R_PPC_EMB_RELST_LO = 112, | ||
540 | - R_PPC64_TPREL16_HIGH = 112, | ||
541 | R_PPC_EMB_RELST_HI = 113, | ||
542 | - R_PPC64_TPREL16_HIGHA = 113, | ||
543 | R_PPC_EMB_RELST_HA = 114, | ||
544 | - R_PPC64_DTPREL16_HIGH = 114, | ||
545 | R_PPC_EMB_BIT_FLD = 115, | ||
546 | - R_PPC64_DTPREL16_HIGHA = 115, | ||
547 | R_PPC_EMB_RELSDA = 116, | ||
548 | |||
549 | R_PPC_VLE_REL8 = 216, | ||
550 | diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c | ||
551 | index 7c99e43..d888aee 100644 | ||
552 | --- a/gas/config/tc-ppc.c | ||
553 | +++ b/gas/config/tc-ppc.c | ||
554 | @@ -87,11 +87,7 @@ static int set_target_endian = 0; | ||
555 | compensating for #lo being treated as a signed number. */ | ||
556 | #define PPC_HIGHESTA(v) PPC_HIGHEST ((v) + 0x8000) | ||
557 | |||
558 | -#define SEX16(val) (((val) ^ 0x8000) - 0x8000) | ||
559 | - | ||
560 | -/* For the time being on ppc64, don't report overflow on @h and @ha | ||
561 | - applied to constants. */ | ||
562 | -#define REPORT_OVERFLOW_HI 0 | ||
563 | +#define SEX16(val) ((((val) & 0xffff) ^ 0x8000) - 0x8000) | ||
564 | |||
565 | static bfd_boolean reg_names_p = TARGET_REG_NAMES_P; | ||
566 | |||
567 | @@ -1935,8 +1931,6 @@ ppc_elf_suffix (char **str_p, expressionS *exp_p) | ||
568 | MAP32 ("bitfld", BFD_RELOC_PPC_EMB_BIT_FLD), | ||
569 | MAP32 ("relsda", BFD_RELOC_PPC_EMB_RELSDA), | ||
570 | MAP32 ("xgot", BFD_RELOC_PPC_TOC16), | ||
571 | - MAP64 ("high", BFD_RELOC_PPC64_ADDR16_HIGH), | ||
572 | - MAP64 ("higha", BFD_RELOC_PPC64_ADDR16_HIGHA), | ||
573 | MAP64 ("higher", BFD_RELOC_PPC64_HIGHER), | ||
574 | MAP64 ("highera", BFD_RELOC_PPC64_HIGHER_S), | ||
575 | MAP64 ("highest", BFD_RELOC_PPC64_HIGHEST), | ||
576 | @@ -1946,14 +1940,10 @@ ppc_elf_suffix (char **str_p, expressionS *exp_p) | ||
577 | MAP64 ("toc@l", BFD_RELOC_PPC64_TOC16_LO), | ||
578 | MAP64 ("toc@h", BFD_RELOC_PPC64_TOC16_HI), | ||
579 | MAP64 ("toc@ha", BFD_RELOC_PPC64_TOC16_HA), | ||
580 | - MAP64 ("dtprel@high", BFD_RELOC_PPC64_DTPREL16_HIGH), | ||
581 | - MAP64 ("dtprel@higha", BFD_RELOC_PPC64_DTPREL16_HIGHA), | ||
582 | MAP64 ("dtprel@higher", BFD_RELOC_PPC64_DTPREL16_HIGHER), | ||
583 | MAP64 ("dtprel@highera", BFD_RELOC_PPC64_DTPREL16_HIGHERA), | ||
584 | MAP64 ("dtprel@highest", BFD_RELOC_PPC64_DTPREL16_HIGHEST), | ||
585 | MAP64 ("dtprel@highesta", BFD_RELOC_PPC64_DTPREL16_HIGHESTA), | ||
586 | - MAP64 ("tprel@high", BFD_RELOC_PPC64_TPREL16_HIGH), | ||
587 | - MAP64 ("tprel@higha", BFD_RELOC_PPC64_TPREL16_HIGHA), | ||
588 | MAP64 ("tprel@higher", BFD_RELOC_PPC64_TPREL16_HIGHER), | ||
589 | MAP64 ("tprel@highera", BFD_RELOC_PPC64_TPREL16_HIGHERA), | ||
590 | MAP64 ("tprel@highest", BFD_RELOC_PPC64_TPREL16_HIGHEST), | ||
591 | @@ -2923,76 +2913,55 @@ md_assemble (char *str) | ||
592 | break; | ||
593 | |||
594 | case BFD_RELOC_LO16: | ||
595 | - ex.X_add_number &= 0xffff; | ||
596 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
597 | + /* X_unsigned is the default, so if the user has done | ||
598 | + something which cleared it, we always produce a | ||
599 | + signed value. */ | ||
600 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
601 | + ex.X_add_number &= 0xffff; | ||
602 | + else | ||
603 | ex.X_add_number = SEX16 (ex.X_add_number); | ||
604 | break; | ||
605 | |||
606 | case BFD_RELOC_HI16: | ||
607 | - if (REPORT_OVERFLOW_HI && ppc_obj64) | ||
608 | - { | ||
609 | - /* PowerPC64 @h is tested for overflow. */ | ||
610 | - ex.X_add_number = (addressT) ex.X_add_number >> 16; | ||
611 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
612 | - { | ||
613 | - addressT sign = (((addressT) -1 >> 16) + 1) >> 1; | ||
614 | - ex.X_add_number | ||
615 | - = ((addressT) ex.X_add_number ^ sign) - sign; | ||
616 | - } | ||
617 | - break; | ||
618 | - } | ||
619 | - /* Fall thru */ | ||
620 | - | ||
621 | - case BFD_RELOC_PPC64_ADDR16_HIGH: | ||
622 | - ex.X_add_number = PPC_HI (ex.X_add_number); | ||
623 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
624 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
625 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
626 | + ex.X_add_number = PPC_HI (ex.X_add_number); | ||
627 | + else | ||
628 | + ex.X_add_number = SEX16 (PPC_HI (ex.X_add_number)); | ||
629 | break; | ||
630 | |||
631 | case BFD_RELOC_HI16_S: | ||
632 | - if (REPORT_OVERFLOW_HI && ppc_obj64) | ||
633 | - { | ||
634 | - /* PowerPC64 @ha is tested for overflow. */ | ||
635 | - ex.X_add_number | ||
636 | - = ((addressT) ex.X_add_number + 0x8000) >> 16; | ||
637 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
638 | - { | ||
639 | - addressT sign = (((addressT) -1 >> 16) + 1) >> 1; | ||
640 | - ex.X_add_number | ||
641 | - = ((addressT) ex.X_add_number ^ sign) - sign; | ||
642 | - } | ||
643 | - break; | ||
644 | - } | ||
645 | - /* Fall thru */ | ||
646 | - | ||
647 | - case BFD_RELOC_PPC64_ADDR16_HIGHA: | ||
648 | - ex.X_add_number = PPC_HA (ex.X_add_number); | ||
649 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
650 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
651 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
652 | + ex.X_add_number = PPC_HA (ex.X_add_number); | ||
653 | + else | ||
654 | + ex.X_add_number = SEX16 (PPC_HA (ex.X_add_number)); | ||
655 | break; | ||
656 | |||
657 | case BFD_RELOC_PPC64_HIGHER: | ||
658 | - ex.X_add_number = PPC_HIGHER (ex.X_add_number); | ||
659 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
660 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
661 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
662 | + ex.X_add_number = PPC_HIGHER (ex.X_add_number); | ||
663 | + else | ||
664 | + ex.X_add_number = SEX16 (PPC_HIGHER (ex.X_add_number)); | ||
665 | break; | ||
666 | |||
667 | case BFD_RELOC_PPC64_HIGHER_S: | ||
668 | - ex.X_add_number = PPC_HIGHERA (ex.X_add_number); | ||
669 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
670 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
671 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
672 | + ex.X_add_number = PPC_HIGHERA (ex.X_add_number); | ||
673 | + else | ||
674 | + ex.X_add_number = SEX16 (PPC_HIGHERA (ex.X_add_number)); | ||
675 | break; | ||
676 | |||
677 | case BFD_RELOC_PPC64_HIGHEST: | ||
678 | - ex.X_add_number = PPC_HIGHEST (ex.X_add_number); | ||
679 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
680 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
681 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
682 | + ex.X_add_number = PPC_HIGHEST (ex.X_add_number); | ||
683 | + else | ||
684 | + ex.X_add_number = SEX16 (PPC_HIGHEST (ex.X_add_number)); | ||
685 | break; | ||
686 | |||
687 | case BFD_RELOC_PPC64_HIGHEST_S: | ||
688 | - ex.X_add_number = PPC_HIGHESTA (ex.X_add_number); | ||
689 | - if ((operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
690 | - ex.X_add_number = SEX16 (ex.X_add_number); | ||
691 | + if (ex.X_unsigned && ! (operand->flags & PPC_OPERAND_SIGNED)) | ||
692 | + ex.X_add_number = PPC_HIGHESTA (ex.X_add_number); | ||
693 | + else | ||
694 | + ex.X_add_number = SEX16 (PPC_HIGHESTA (ex.X_add_number)); | ||
695 | break; | ||
696 | } | ||
697 | #endif /* OBJ_ELF */ | ||
698 | @@ -6566,51 +6535,25 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) | ||
699 | fieldval = value & 0xffff; | ||
700 | sign_extend_16: | ||
701 | if (operand != NULL && (operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
702 | - fieldval = SEX16 (fieldval); | ||
703 | + fieldval = (fieldval ^ 0x8000) - 0x8000; | ||
704 | fixP->fx_no_overflow = 1; | ||
705 | break; | ||
706 | |||
707 | - case BFD_RELOC_HI16: | ||
708 | - case BFD_RELOC_HI16_PCREL: | ||
709 | #ifdef OBJ_ELF | ||
710 | - if (REPORT_OVERFLOW_HI && ppc_obj64) | ||
711 | - { | ||
712 | - fieldval = value >> 16; | ||
713 | - if (operand != NULL && (operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
714 | - { | ||
715 | - valueT sign = (((valueT) -1 >> 16) + 1) >> 1; | ||
716 | - fieldval = ((valueT) fieldval ^ sign) - sign; | ||
717 | - } | ||
718 | - break; | ||
719 | - } | ||
720 | - /* Fall thru */ | ||
721 | - | ||
722 | case BFD_RELOC_PPC_VLE_HI16A: | ||
723 | case BFD_RELOC_PPC_VLE_HI16D: | ||
724 | - case BFD_RELOC_PPC64_ADDR16_HIGH: | ||
725 | #endif | ||
726 | + case BFD_RELOC_HI16: | ||
727 | + case BFD_RELOC_HI16_PCREL: | ||
728 | fieldval = PPC_HI (value); | ||
729 | goto sign_extend_16; | ||
730 | |||
731 | - case BFD_RELOC_HI16_S: | ||
732 | - case BFD_RELOC_HI16_S_PCREL: | ||
733 | #ifdef OBJ_ELF | ||
734 | - if (REPORT_OVERFLOW_HI && ppc_obj64) | ||
735 | - { | ||
736 | - fieldval = (value + 0x8000) >> 16; | ||
737 | - if (operand != NULL && (operand->flags & PPC_OPERAND_SIGNED) != 0) | ||
738 | - { | ||
739 | - valueT sign = (((valueT) -1 >> 16) + 1) >> 1; | ||
740 | - fieldval = ((valueT) fieldval ^ sign) - sign; | ||
741 | - } | ||
742 | - break; | ||
743 | - } | ||
744 | - /* Fall thru */ | ||
745 | - | ||
746 | case BFD_RELOC_PPC_VLE_HA16A: | ||
747 | case BFD_RELOC_PPC_VLE_HA16D: | ||
748 | - case BFD_RELOC_PPC64_ADDR16_HIGHA: | ||
749 | #endif | ||
750 | + case BFD_RELOC_HI16_S: | ||
751 | + case BFD_RELOC_HI16_S_PCREL: | ||
752 | fieldval = PPC_HA (value); | ||
753 | goto sign_extend_16; | ||
754 | |||
755 | @@ -6673,14 +6616,10 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) | ||
756 | case BFD_RELOC_PPC_GOT_DTPREL16_HA: | ||
757 | case BFD_RELOC_PPC64_TPREL16_DS: | ||
758 | case BFD_RELOC_PPC64_TPREL16_LO_DS: | ||
759 | - case BFD_RELOC_PPC64_TPREL16_HIGH: | ||
760 | - case BFD_RELOC_PPC64_TPREL16_HIGHA: | ||
761 | case BFD_RELOC_PPC64_TPREL16_HIGHER: | ||
762 | case BFD_RELOC_PPC64_TPREL16_HIGHERA: | ||
763 | case BFD_RELOC_PPC64_TPREL16_HIGHEST: | ||
764 | case BFD_RELOC_PPC64_TPREL16_HIGHESTA: | ||
765 | - case BFD_RELOC_PPC64_DTPREL16_HIGH: | ||
766 | - case BFD_RELOC_PPC64_DTPREL16_HIGHA: | ||
767 | case BFD_RELOC_PPC64_DTPREL16_DS: | ||
768 | case BFD_RELOC_PPC64_DTPREL16_LO_DS: | ||
769 | case BFD_RELOC_PPC64_DTPREL16_HIGHER: | ||
770 | @@ -6866,8 +6805,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) | ||
771 | case BFD_RELOC_PPC64_HIGHER_S: | ||
772 | case BFD_RELOC_PPC64_HIGHEST: | ||
773 | case BFD_RELOC_PPC64_HIGHEST_S: | ||
774 | - case BFD_RELOC_PPC64_ADDR16_HIGH: | ||
775 | - case BFD_RELOC_PPC64_ADDR16_HIGHA: | ||
776 | break; | ||
777 | |||
778 | case BFD_RELOC_PPC_DTPMOD: | ||
779 | @@ -6944,14 +6881,10 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) | ||
780 | case BFD_RELOC_PPC64_TOC16_LO: | ||
781 | case BFD_RELOC_PPC64_TOC16_HI: | ||
782 | case BFD_RELOC_PPC64_TOC16_HA: | ||
783 | - case BFD_RELOC_PPC64_DTPREL16_HIGH: | ||
784 | - case BFD_RELOC_PPC64_DTPREL16_HIGHA: | ||
785 | case BFD_RELOC_PPC64_DTPREL16_HIGHER: | ||
786 | case BFD_RELOC_PPC64_DTPREL16_HIGHERA: | ||
787 | case BFD_RELOC_PPC64_DTPREL16_HIGHEST: | ||
788 | case BFD_RELOC_PPC64_DTPREL16_HIGHESTA: | ||
789 | - case BFD_RELOC_PPC64_TPREL16_HIGH: | ||
790 | - case BFD_RELOC_PPC64_TPREL16_HIGHA: | ||
791 | case BFD_RELOC_PPC64_TPREL16_HIGHER: | ||
792 | case BFD_RELOC_PPC64_TPREL16_HIGHERA: | ||
793 | case BFD_RELOC_PPC64_TPREL16_HIGHEST: | ||
794 | diff --git a/gold/powerpc.cc b/gold/powerpc.cc | ||
795 | index 1aa4791..b8e932e 100644 | ||
796 | --- a/gold/powerpc.cc | ||
797 | +++ b/gold/powerpc.cc | ||
798 | @@ -5168,8 +5168,6 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object, | ||
799 | case elfcpp::R_PPC64_JMP_IREL: | ||
800 | case elfcpp::R_PPC64_ADDR16_DS: | ||
801 | case elfcpp::R_PPC64_ADDR16_LO_DS: | ||
802 | - case elfcpp::R_PPC64_ADDR16_HIGH: | ||
803 | - case elfcpp::R_PPC64_ADDR16_HIGHA: | ||
804 | case elfcpp::R_PPC64_ADDR16_HIGHER: | ||
805 | case elfcpp::R_PPC64_ADDR16_HIGHEST: | ||
806 | case elfcpp::R_PPC64_ADDR16_HIGHERA: | ||
807 | @@ -5178,8 +5176,6 @@ Target_powerpc<size, big_endian>::Scan::check_non_pic(Relobj* object, | ||
808 | case elfcpp::R_POWERPC_ADDR30: | ||
809 | case elfcpp::R_PPC64_TPREL16_DS: | ||
810 | case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
811 | - case elfcpp::R_PPC64_TPREL16_HIGH: | ||
812 | - case elfcpp::R_PPC64_TPREL16_HIGHA: | ||
813 | case elfcpp::R_PPC64_TPREL16_HIGHER: | ||
814 | case elfcpp::R_PPC64_TPREL16_HIGHEST: | ||
815 | case elfcpp::R_PPC64_TPREL16_HIGHERA: | ||
816 | @@ -5354,6 +5350,7 @@ Target_powerpc<size, big_endian>::Scan::local( | ||
817 | case elfcpp::R_POWERPC_GNU_VTINHERIT: | ||
818 | case elfcpp::R_POWERPC_GNU_VTENTRY: | ||
819 | case elfcpp::R_PPC64_TOCSAVE: | ||
820 | + case elfcpp::R_PPC_EMB_MRKREF: | ||
821 | case elfcpp::R_POWERPC_TLS: | ||
822 | break; | ||
823 | |||
824 | @@ -5391,8 +5388,6 @@ Target_powerpc<size, big_endian>::Scan::local( | ||
825 | case elfcpp::R_POWERPC_ADDR16_HI: | ||
826 | case elfcpp::R_POWERPC_ADDR16_HA: | ||
827 | case elfcpp::R_POWERPC_UADDR16: | ||
828 | - case elfcpp::R_PPC64_ADDR16_HIGH: | ||
829 | - case elfcpp::R_PPC64_ADDR16_HIGHA: | ||
830 | case elfcpp::R_PPC64_ADDR16_HIGHER: | ||
831 | case elfcpp::R_PPC64_ADDR16_HIGHERA: | ||
832 | case elfcpp::R_PPC64_ADDR16_HIGHEST: | ||
833 | @@ -5451,35 +5446,31 @@ Target_powerpc<size, big_endian>::Scan::local( | ||
834 | case elfcpp::R_POWERPC_REL16_HI: | ||
835 | case elfcpp::R_POWERPC_REL16_HA: | ||
836 | case elfcpp::R_POWERPC_SECTOFF: | ||
837 | - case elfcpp::R_POWERPC_SECTOFF_LO: | ||
838 | - case elfcpp::R_POWERPC_SECTOFF_HI: | ||
839 | - case elfcpp::R_POWERPC_SECTOFF_HA: | ||
840 | - case elfcpp::R_PPC64_SECTOFF_DS: | ||
841 | - case elfcpp::R_PPC64_SECTOFF_LO_DS: | ||
842 | case elfcpp::R_POWERPC_TPREL16: | ||
843 | + case elfcpp::R_POWERPC_DTPREL16: | ||
844 | + case elfcpp::R_POWERPC_SECTOFF_LO: | ||
845 | case elfcpp::R_POWERPC_TPREL16_LO: | ||
846 | + case elfcpp::R_POWERPC_DTPREL16_LO: | ||
847 | + case elfcpp::R_POWERPC_SECTOFF_HI: | ||
848 | case elfcpp::R_POWERPC_TPREL16_HI: | ||
849 | + case elfcpp::R_POWERPC_DTPREL16_HI: | ||
850 | + case elfcpp::R_POWERPC_SECTOFF_HA: | ||
851 | case elfcpp::R_POWERPC_TPREL16_HA: | ||
852 | - case elfcpp::R_PPC64_TPREL16_DS: | ||
853 | - case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
854 | - case elfcpp::R_PPC64_TPREL16_HIGH: | ||
855 | - case elfcpp::R_PPC64_TPREL16_HIGHA: | ||
856 | + case elfcpp::R_POWERPC_DTPREL16_HA: | ||
857 | + case elfcpp::R_PPC64_DTPREL16_HIGHER: | ||
858 | case elfcpp::R_PPC64_TPREL16_HIGHER: | ||
859 | + case elfcpp::R_PPC64_DTPREL16_HIGHERA: | ||
860 | case elfcpp::R_PPC64_TPREL16_HIGHERA: | ||
861 | + case elfcpp::R_PPC64_DTPREL16_HIGHEST: | ||
862 | case elfcpp::R_PPC64_TPREL16_HIGHEST: | ||
863 | + case elfcpp::R_PPC64_DTPREL16_HIGHESTA: | ||
864 | case elfcpp::R_PPC64_TPREL16_HIGHESTA: | ||
865 | - case elfcpp::R_POWERPC_DTPREL16: | ||
866 | - case elfcpp::R_POWERPC_DTPREL16_LO: | ||
867 | - case elfcpp::R_POWERPC_DTPREL16_HI: | ||
868 | - case elfcpp::R_POWERPC_DTPREL16_HA: | ||
869 | + case elfcpp::R_PPC64_TPREL16_DS: | ||
870 | + case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
871 | case elfcpp::R_PPC64_DTPREL16_DS: | ||
872 | case elfcpp::R_PPC64_DTPREL16_LO_DS: | ||
873 | - case elfcpp::R_PPC64_DTPREL16_HIGH: | ||
874 | - case elfcpp::R_PPC64_DTPREL16_HIGHA: | ||
875 | - case elfcpp::R_PPC64_DTPREL16_HIGHER: | ||
876 | - case elfcpp::R_PPC64_DTPREL16_HIGHERA: | ||
877 | - case elfcpp::R_PPC64_DTPREL16_HIGHEST: | ||
878 | - case elfcpp::R_PPC64_DTPREL16_HIGHESTA: | ||
879 | + case elfcpp::R_PPC64_SECTOFF_DS: | ||
880 | + case elfcpp::R_PPC64_SECTOFF_LO_DS: | ||
881 | case elfcpp::R_PPC64_TLSGD: | ||
882 | case elfcpp::R_PPC64_TLSLD: | ||
883 | break; | ||
884 | @@ -5713,6 +5704,7 @@ Target_powerpc<size, big_endian>::Scan::global( | ||
885 | case elfcpp::R_POWERPC_GNU_VTINHERIT: | ||
886 | case elfcpp::R_POWERPC_GNU_VTENTRY: | ||
887 | case elfcpp::R_PPC_LOCAL24PC: | ||
888 | + case elfcpp::R_PPC_EMB_MRKREF: | ||
889 | case elfcpp::R_POWERPC_TLS: | ||
890 | break; | ||
891 | |||
892 | @@ -5762,8 +5754,6 @@ Target_powerpc<size, big_endian>::Scan::global( | ||
893 | case elfcpp::R_POWERPC_ADDR16_HI: | ||
894 | case elfcpp::R_POWERPC_ADDR16_HA: | ||
895 | case elfcpp::R_POWERPC_UADDR16: | ||
896 | - case elfcpp::R_PPC64_ADDR16_HIGH: | ||
897 | - case elfcpp::R_PPC64_ADDR16_HIGHA: | ||
898 | case elfcpp::R_PPC64_ADDR16_HIGHER: | ||
899 | case elfcpp::R_PPC64_ADDR16_HIGHERA: | ||
900 | case elfcpp::R_PPC64_ADDR16_HIGHEST: | ||
901 | @@ -5897,35 +5887,31 @@ Target_powerpc<size, big_endian>::Scan::global( | ||
902 | case elfcpp::R_POWERPC_REL16_HI: | ||
903 | case elfcpp::R_POWERPC_REL16_HA: | ||
904 | case elfcpp::R_POWERPC_SECTOFF: | ||
905 | - case elfcpp::R_POWERPC_SECTOFF_LO: | ||
906 | - case elfcpp::R_POWERPC_SECTOFF_HI: | ||
907 | - case elfcpp::R_POWERPC_SECTOFF_HA: | ||
908 | - case elfcpp::R_PPC64_SECTOFF_DS: | ||
909 | - case elfcpp::R_PPC64_SECTOFF_LO_DS: | ||
910 | case elfcpp::R_POWERPC_TPREL16: | ||
911 | + case elfcpp::R_POWERPC_DTPREL16: | ||
912 | + case elfcpp::R_POWERPC_SECTOFF_LO: | ||
913 | case elfcpp::R_POWERPC_TPREL16_LO: | ||
914 | + case elfcpp::R_POWERPC_DTPREL16_LO: | ||
915 | + case elfcpp::R_POWERPC_SECTOFF_HI: | ||
916 | case elfcpp::R_POWERPC_TPREL16_HI: | ||
917 | + case elfcpp::R_POWERPC_DTPREL16_HI: | ||
918 | + case elfcpp::R_POWERPC_SECTOFF_HA: | ||
919 | case elfcpp::R_POWERPC_TPREL16_HA: | ||
920 | - case elfcpp::R_PPC64_TPREL16_DS: | ||
921 | - case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
922 | - case elfcpp::R_PPC64_TPREL16_HIGH: | ||
923 | - case elfcpp::R_PPC64_TPREL16_HIGHA: | ||
924 | + case elfcpp::R_POWERPC_DTPREL16_HA: | ||
925 | + case elfcpp::R_PPC64_DTPREL16_HIGHER: | ||
926 | case elfcpp::R_PPC64_TPREL16_HIGHER: | ||
927 | + case elfcpp::R_PPC64_DTPREL16_HIGHERA: | ||
928 | case elfcpp::R_PPC64_TPREL16_HIGHERA: | ||
929 | + case elfcpp::R_PPC64_DTPREL16_HIGHEST: | ||
930 | case elfcpp::R_PPC64_TPREL16_HIGHEST: | ||
931 | + case elfcpp::R_PPC64_DTPREL16_HIGHESTA: | ||
932 | case elfcpp::R_PPC64_TPREL16_HIGHESTA: | ||
933 | - case elfcpp::R_POWERPC_DTPREL16: | ||
934 | - case elfcpp::R_POWERPC_DTPREL16_LO: | ||
935 | - case elfcpp::R_POWERPC_DTPREL16_HI: | ||
936 | - case elfcpp::R_POWERPC_DTPREL16_HA: | ||
937 | + case elfcpp::R_PPC64_TPREL16_DS: | ||
938 | + case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
939 | case elfcpp::R_PPC64_DTPREL16_DS: | ||
940 | case elfcpp::R_PPC64_DTPREL16_LO_DS: | ||
941 | - case elfcpp::R_PPC64_DTPREL16_HIGH: | ||
942 | - case elfcpp::R_PPC64_DTPREL16_HIGHA: | ||
943 | - case elfcpp::R_PPC64_DTPREL16_HIGHER: | ||
944 | - case elfcpp::R_PPC64_DTPREL16_HIGHERA: | ||
945 | - case elfcpp::R_PPC64_DTPREL16_HIGHEST: | ||
946 | - case elfcpp::R_PPC64_DTPREL16_HIGHESTA: | ||
947 | + case elfcpp::R_PPC64_SECTOFF_DS: | ||
948 | + case elfcpp::R_PPC64_SECTOFF_LO_DS: | ||
949 | case elfcpp::R_PPC64_TLSGD: | ||
950 | case elfcpp::R_PPC64_TLSLD: | ||
951 | break; | ||
952 | @@ -7098,10 +7084,8 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
953 | |||
954 | case elfcpp::R_PPC64_TPREL16_DS: | ||
955 | case elfcpp::R_PPC64_TPREL16_LO_DS: | ||
956 | - case elfcpp::R_PPC64_TPREL16_HIGH: | ||
957 | - case elfcpp::R_PPC64_TPREL16_HIGHA: | ||
958 | if (size != 64) | ||
959 | - // R_PPC_TLSGD, R_PPC_TLSLD, R_PPC_EMB_RELST_LO, R_PPC_EMB_RELST_HI | ||
960 | + // R_PPC_TLSGD and R_PPC_TLSLD | ||
961 | break; | ||
962 | case elfcpp::R_POWERPC_TPREL16: | ||
963 | case elfcpp::R_POWERPC_TPREL16_LO: | ||
964 | @@ -7131,8 +7115,6 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
965 | case elfcpp::R_POWERPC_DTPREL16_HI: | ||
966 | case elfcpp::R_POWERPC_DTPREL16_HA: | ||
967 | case elfcpp::R_POWERPC_DTPREL: | ||
968 | - case elfcpp::R_PPC64_DTPREL16_HIGH: | ||
969 | - case elfcpp::R_PPC64_DTPREL16_HIGHA: | ||
970 | // tls symbol values are relative to tls_segment()->vaddr() | ||
971 | value -= dtp_offset; | ||
972 | break; | ||
973 | @@ -7273,34 +7255,6 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
974 | overflow = Reloc::CHECK_BITFIELD; | ||
975 | break; | ||
976 | |||
977 | - case elfcpp::R_POWERPC_ADDR16_HI: | ||
978 | - case elfcpp::R_POWERPC_ADDR16_HA: | ||
979 | - case elfcpp::R_POWERPC_GOT16_HI: | ||
980 | - case elfcpp::R_POWERPC_GOT16_HA: | ||
981 | - case elfcpp::R_POWERPC_PLT16_HI: | ||
982 | - case elfcpp::R_POWERPC_PLT16_HA: | ||
983 | - case elfcpp::R_POWERPC_SECTOFF_HI: | ||
984 | - case elfcpp::R_POWERPC_SECTOFF_HA: | ||
985 | - case elfcpp::R_PPC64_TOC16_HI: | ||
986 | - case elfcpp::R_PPC64_TOC16_HA: | ||
987 | - case elfcpp::R_PPC64_PLTGOT16_HI: | ||
988 | - case elfcpp::R_PPC64_PLTGOT16_HA: | ||
989 | - case elfcpp::R_POWERPC_TPREL16_HI: | ||
990 | - case elfcpp::R_POWERPC_TPREL16_HA: | ||
991 | - case elfcpp::R_POWERPC_DTPREL16_HI: | ||
992 | - case elfcpp::R_POWERPC_DTPREL16_HA: | ||
993 | - case elfcpp::R_POWERPC_GOT_TLSGD16_HI: | ||
994 | - case elfcpp::R_POWERPC_GOT_TLSGD16_HA: | ||
995 | - case elfcpp::R_POWERPC_GOT_TLSLD16_HI: | ||
996 | - case elfcpp::R_POWERPC_GOT_TLSLD16_HA: | ||
997 | - case elfcpp::R_POWERPC_GOT_TPREL16_HI: | ||
998 | - case elfcpp::R_POWERPC_GOT_TPREL16_HA: | ||
999 | - case elfcpp::R_POWERPC_GOT_DTPREL16_HI: | ||
1000 | - case elfcpp::R_POWERPC_GOT_DTPREL16_HA: | ||
1001 | - case elfcpp::R_POWERPC_REL16_HI: | ||
1002 | - case elfcpp::R_POWERPC_REL16_HA: | ||
1003 | - if (size == 32) | ||
1004 | - break; | ||
1005 | case elfcpp::R_POWERPC_REL24: | ||
1006 | case elfcpp::R_PPC_PLTREL24: | ||
1007 | case elfcpp::R_PPC_LOCAL24PC: | ||
1008 | @@ -7334,6 +7288,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
1009 | case elfcpp::R_POWERPC_TLS: | ||
1010 | case elfcpp::R_POWERPC_GNU_VTINHERIT: | ||
1011 | case elfcpp::R_POWERPC_GNU_VTENTRY: | ||
1012 | + case elfcpp::R_PPC_EMB_MRKREF: | ||
1013 | break; | ||
1014 | |||
1015 | case elfcpp::R_PPC64_ADDR64: | ||
1016 | @@ -7404,12 +7359,6 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
1017 | status = Reloc::addr16_u(view, value, overflow); | ||
1018 | break; | ||
1019 | |||
1020 | - case elfcpp::R_PPC64_ADDR16_HIGH: | ||
1021 | - case elfcpp::R_PPC64_TPREL16_HIGH: | ||
1022 | - case elfcpp::R_PPC64_DTPREL16_HIGH: | ||
1023 | - if (size == 32) | ||
1024 | - // R_PPC_EMB_MRKREF, R_PPC_EMB_RELST_LO, R_PPC_EMB_RELST_HA | ||
1025 | - goto unsupp; | ||
1026 | case elfcpp::R_POWERPC_ADDR16_HI: | ||
1027 | case elfcpp::R_POWERPC_REL16_HI: | ||
1028 | case elfcpp::R_PPC64_TOC16_HI: | ||
1029 | @@ -7424,12 +7373,6 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
1030 | Reloc::addr16_hi(view, value); | ||
1031 | break; | ||
1032 | |||
1033 | - case elfcpp::R_PPC64_ADDR16_HIGHA: | ||
1034 | - case elfcpp::R_PPC64_TPREL16_HIGHA: | ||
1035 | - case elfcpp::R_PPC64_DTPREL16_HIGHA: | ||
1036 | - if (size == 32) | ||
1037 | - // R_PPC_EMB_RELSEC16, R_PPC_EMB_RELST_HI, R_PPC_EMB_BIT_FLD | ||
1038 | - goto unsupp; | ||
1039 | case elfcpp::R_POWERPC_ADDR16_HA: | ||
1040 | case elfcpp::R_POWERPC_REL16_HA: | ||
1041 | case elfcpp::R_PPC64_TOC16_HA: | ||
1042 | @@ -7554,6 +7497,11 @@ Target_powerpc<size, big_endian>::Relocate::relocate( | ||
1043 | case elfcpp::R_PPC64_PLT16_LO_DS: | ||
1044 | case elfcpp::R_PPC64_PLTGOT16_DS: | ||
1045 | case elfcpp::R_PPC64_PLTGOT16_LO_DS: | ||
1046 | + case elfcpp::R_PPC_EMB_RELSEC16: | ||
1047 | + case elfcpp::R_PPC_EMB_RELST_LO: | ||
1048 | + case elfcpp::R_PPC_EMB_RELST_HI: | ||
1049 | + case elfcpp::R_PPC_EMB_RELST_HA: | ||
1050 | + case elfcpp::R_PPC_EMB_BIT_FLD: | ||
1051 | case elfcpp::R_PPC_EMB_RELSDA: | ||
1052 | case elfcpp::R_PPC_TOC16: | ||
1053 | default: | ||
1054 | diff --git a/include/elf/ppc64.h b/include/elf/ppc64.h | ||
1055 | index 78d947b..5888460 100644 | ||
1056 | --- a/include/elf/ppc64.h | ||
1057 | +++ b/include/elf/ppc64.h | ||
1058 | @@ -141,14 +141,6 @@ START_RELOC_NUMBERS (elf_ppc64_reloc_type) | ||
1059 | RELOC_NUMBER (R_PPC64_TLSLD, 108) | ||
1060 | RELOC_NUMBER (R_PPC64_TOCSAVE, 109) | ||
1061 | |||
1062 | -/* Added when HA and HI relocs were changed to report overflows. */ | ||
1063 | - RELOC_NUMBER (R_PPC64_ADDR16_HIGH, 110) | ||
1064 | - RELOC_NUMBER (R_PPC64_ADDR16_HIGHA, 111) | ||
1065 | - RELOC_NUMBER (R_PPC64_TPREL16_HIGH, 112) | ||
1066 | - RELOC_NUMBER (R_PPC64_TPREL16_HIGHA, 113) | ||
1067 | - RELOC_NUMBER (R_PPC64_DTPREL16_HIGH, 114) | ||
1068 | - RELOC_NUMBER (R_PPC64_DTPREL16_HIGHA, 115) | ||
1069 | - | ||
1070 | #ifndef RELOC_MACROS_GEN_FUNC | ||
1071 | /* Fake relocation only used internally by ld. */ | ||
1072 | RELOC_NUMBER (R_PPC64_LO_DS_OPT, 128) | ||
1073 | @@ -169,9 +161,8 @@ START_RELOC_NUMBERS (elf_ppc64_reloc_type) | ||
1074 | |||
1075 | END_RELOC_NUMBERS (R_PPC64_max) | ||
1076 | |||
1077 | -#define IS_PPC64_TLS_RELOC(R) \ | ||
1078 | - (((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA) \ | ||
1079 | - || ((R) >= R_PPC64_TPREL16_HIGH && (R) <= R_PPC64_DTPREL16_HIGHA)) | ||
1080 | +#define IS_PPC64_TLS_RELOC(R) \ | ||
1081 | + ((R) >= R_PPC64_TLS && (R) <= R_PPC64_DTPREL16_HIGHESTA) | ||
1082 | |||
1083 | |||
1084 | /* e_flags bits specifying ABI. | ||
1085 | -- | ||
1086 | 1.7.9.5 | ||
1087 | |||
diff --git a/recipes-devtools/e2fsprogs/e2fsprogs_1.42.9.bbappend b/recipes-devtools/e2fsprogs/e2fsprogs_1.42.9.bbappend new file mode 100644 index 0000000..c9eeb4e --- /dev/null +++ b/recipes-devtools/e2fsprogs/e2fsprogs_1.42.9.bbappend | |||
@@ -0,0 +1 @@ | |||
BBCLASSEXTEND += " nativesdk" | |||
diff --git a/recipes-devtools/valgrind/files/disable-power-isa-2.07-check.patch b/recipes-devtools/valgrind/files/disable-power-isa-2.07-check.patch new file mode 100644 index 0000000..88a8a54 --- /dev/null +++ b/recipes-devtools/valgrind/files/disable-power-isa-2.07-check.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | valgrind: Disable Power ISA 2.07 check | ||
2 | |||
3 | The Power ISA 2.07 check fails when not supported by both machine | ||
4 | architecture and gcc. | ||
5 | |||
6 | Upstream-Status: Inappropriate [disable feature] | ||
7 | |||
8 | Signed-off-by: Gabriel Barbu <gabriel.barbu@enea.com> | ||
9 | |||
10 | --- a/configure.ac 2014-05-05 17:06:29.674630565 +0200 | ||
11 | +++ b/configure.ac 2014-05-06 13:16:47.525598513 +0200 | ||
12 | @@ -1316,18 +1316,25 @@ | ||
13 | AM_CONDITIONAL(BUILD_DFP_TESTS, test x$ac_gcc_have_dfp_type = xyes) | ||
14 | |||
15 | # isa 2.07 checking | ||
16 | -AC_MSG_CHECKING([that assembler knows ISA 2.07 ]) | ||
17 | +AC_ARG_ENABLE([isa_2_07_check], | ||
18 | + [AS_HELP_STRING([--disable-isa_2_07_check], | ||
19 | + [disable Power ISA 2.07 check])], | ||
20 | + [], | ||
21 | + [disable_isa_2_07_check=no]) | ||
22 | |||
23 | -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
24 | -]], [[ | ||
25 | - __asm__ __volatile__("mtvsrd 1,2 "); | ||
26 | -]])], [ | ||
27 | -ac_asm_have_isa_2_07=yes | ||
28 | -AC_MSG_RESULT([yes]) | ||
29 | -], [ | ||
30 | -ac_asm_have_isa_2_07=no | ||
31 | -AC_MSG_RESULT([no]) | ||
32 | -]) | ||
33 | +AS_IF([test "x$disable_isa_2_07_check" = xno], | ||
34 | + [AC_MSG_CHECKING([that assembler knows ISA 2.07 ]) | ||
35 | + | ||
36 | + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
37 | + ]], [[ | ||
38 | + __asm__ __volatile__("mtvsrd 1,2 "); | ||
39 | + ]])], [ | ||
40 | + ac_asm_have_isa_2_07=yes | ||
41 | + AC_MSG_RESULT([yes]) | ||
42 | + ], [ | ||
43 | + ac_asm_have_isa_2_07=no | ||
44 | + AC_MSG_RESULT([no]) | ||
45 | + ])]) | ||
46 | |||
47 | AM_CONDITIONAL(HAS_ISA_2_07, test x$ac_asm_have_isa_2_07 = xyes) | ||
48 | |||
diff --git a/recipes-devtools/valgrind/valgrind_3.9.0.bbappend b/recipes-devtools/valgrind/valgrind_3.9.0.bbappend new file mode 100644 index 0000000..8992cb3 --- /dev/null +++ b/recipes-devtools/valgrind/valgrind_3.9.0.bbappend | |||
@@ -0,0 +1,7 @@ | |||
1 | EXTRA_OECONF_append_b4860qds-64b = " --disable-isa_2_07_check" | ||
2 | |||
3 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
4 | |||
5 | SRC_URI += "\ | ||
6 | file://disable-power-isa-2.07-check.patch \ | ||
7 | " | ||
diff --git a/recipes-enea/count-ticks/count-ticks/run-ptest b/recipes-enea/count-ticks/count-ticks/run-ptest new file mode 100644 index 0000000..a56e64a --- /dev/null +++ b/recipes-enea/count-ticks/count-ticks/run-ptest | |||
@@ -0,0 +1,23 @@ | |||
1 | #!/bin/sh -eu | ||
2 | |||
3 | fail () { | ||
4 | printf "%s" "$*" | ||
5 | exit | ||
6 | } | ||
7 | |||
8 | count_ticks --cpu 0 --start || fail "Failed starting tick counting" | ||
9 | find /usr -name dummy 2>&1 > /dev/null | ||
10 | |||
11 | nr_ticks=$(count_ticks --batch --cpu 0 --end) | ||
12 | |||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: count_ticks failed execution" | ||
15 | exit | ||
16 | fi | ||
17 | |||
18 | if [ $nr_ticks == 0 ]; then | ||
19 | echo "FAIL: count_ticks didn't see any ticks" | ||
20 | exit | ||
21 | fi | ||
22 | |||
23 | echo "PASS: count_ticks" | ||
diff --git a/recipes-enea/count-ticks/count-ticks_1.1.bb b/recipes-enea/count-ticks/count-ticks_1.1.bb new file mode 100644 index 0000000..caa6ed7 --- /dev/null +++ b/recipes-enea/count-ticks/count-ticks_1.1.bb | |||
@@ -0,0 +1,25 @@ | |||
1 | SUMMARY = "Tick count tool" | ||
2 | DESCRIPTION = "Count number of kernel ticks during command execution." | ||
3 | SECTION = "utils" | ||
4 | LICENSE = "BSD" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=b52bab7a403562f36be803f11489f1a4" | ||
6 | |||
7 | PR = "r1" | ||
8 | |||
9 | RDEPENDS_${PN} = "bash" | ||
10 | |||
11 | SRC_URI = "git://github.com/OpenEneaLinux/rt-tools.git;branch=master \ | ||
12 | file://run-ptest \ | ||
13 | " | ||
14 | |||
15 | SRCREV = "0fa0a8e084fe68e77a1f0968f2fbfa993292ae9c" | ||
16 | |||
17 | inherit ptest | ||
18 | |||
19 | S = "${WORKDIR}/git" | ||
20 | |||
21 | FILES_${PN} += "/bin/*" | ||
22 | |||
23 | do_install() { | ||
24 | install -D ${S}/install/bin/count_ticks ${D}/usr/bin/count_ticks | ||
25 | } | ||
diff --git a/recipes-enea/linx/linx-2.6.6/liblinx_nobase.patch b/recipes-enea/linx/linx-2.6.6/liblinx_nobase.patch new file mode 100644 index 0000000..05a4b7e --- /dev/null +++ b/recipes-enea/linx/linx-2.6.6/liblinx_nobase.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | From 5ea9763286eb43e01c4ef2f3db59e13367a77138 Mon Sep 17 00:00:00 2001 | ||
2 | From: jack zhang <jack.zhang@enea.com> | ||
3 | Date: Mon, 17 Dec 2012 03:52:11 +0100 | ||
4 | Subject: [PATCH] LXCR-995 As an Enea sales person, I want LINX added to Enea | ||
5 | Linux | ||
6 | Signed-off-by: jack zhang <jack.zhang@enea.com> | ||
7 | |||
8 | Upstream-Status: Pending | ||
9 | For details, see LINXCR-1518 | ||
10 | --- | ||
11 | liblinx/Makefile.am | 2 +- | ||
12 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
13 | |||
14 | diff --git a/liblinx/Makefile.am b/liblinx/Makefile.am | ||
15 | index 8559e43..3ce47d6 100644 | ||
16 | --- a/liblinx/Makefile.am | ||
17 | +++ b/liblinx/Makefile.am | ||
18 | @@ -47,7 +47,7 @@ dist_man7_MANS = $(LINXROOT)/doc/man7/linx.7 | ||
19 | |||
20 | include $(LINXROOT)/flags.am | ||
21 | |||
22 | -include_HEADERS = \ | ||
23 | +nobase_include_HEADERS = \ | ||
24 | $(LINXROOT)/include/linx.h \ | ||
25 | $(LINXROOT)/include/linx_ioctl.h \ | ||
26 | $(LINXROOT)/include/linx_socket.h \ | ||
27 | -- | ||
28 | 1.7.5.4 | ||
29 | |||
diff --git a/recipes-enea/linx/linx-2.6.6/linxcfg_nobase.patch b/recipes-enea/linx/linx-2.6.6/linxcfg_nobase.patch new file mode 100644 index 0000000..af4b477 --- /dev/null +++ b/recipes-enea/linx/linx-2.6.6/linxcfg_nobase.patch | |||
@@ -0,0 +1,38 @@ | |||
1 | From a3b3dc8117490ddfcc2081fca5ff663e4157a106 Mon Sep 17 00:00:00 2001 | ||
2 | From: jack zhang <jack.zhang@enea.com> | ||
3 | Date: Mon, 17 Dec 2012 03:57:15 +0100 | ||
4 | Subject: [PATCH] LXCR-995 As an Enea sales person, I want LINX added to Enea | ||
5 | Linux | ||
6 | Signed-off-by: jack zhang <jack.zhang@enea.com> | ||
7 | |||
8 | Upstream-Status: Pending | ||
9 | For details, see LINXCR-1518 | ||
10 | --- | ||
11 | linxcfg/Makefile.am | 4 +--- | ||
12 | 1 files changed, 1 insertions(+), 3 deletions(-) | ||
13 | |||
14 | diff --git a/linxcfg/Makefile.am b/linxcfg/Makefile.am | ||
15 | index 9fc8e84..287c71b 100644 | ||
16 | --- a/linxcfg/Makefile.am | ||
17 | +++ b/linxcfg/Makefile.am | ||
18 | @@ -24,16 +24,14 @@ dist_man1_MANS = \ | ||
19 | $(LINXROOT)/doc/man1/mkcmclcon.1 \ | ||
20 | $(LINXROOT)/doc/man1/rmcmclcon.1 | ||
21 | |||
22 | -include_HEADERS = \ | ||
23 | +nobase_include_HEADERS = \ | ||
24 | $(LINXROOT)/include/linxcfg.h \ | ||
25 | $(LINXROOT)/include/linux/ethcm_db_ioctl.h \ | ||
26 | $(LINXROOT)/include/linux/rlnh_db_ioctl.h \ | ||
27 | $(LINXROOT)/include/linux/tcpcm_db_ioctl.h \ | ||
28 | $(LINXROOT)/include/linux/shmcm_db_ioctl.h \ | ||
29 | - $(LINXROOT)/include/linux/riocm_db_ioctl.h \ | ||
30 | $(LINXROOT)/include/linux/cmcl_db_ioctl.h \ | ||
31 | $(LINXROOT)/include/linux/riocm_db_ioctl.h \ | ||
32 | - $(LINXROOT)/include/linux/cmcl_db_ioctl.h \ | ||
33 | $(LINXROOT)/include/db_ioctl.h \ | ||
34 | $(LINXROOT)/include/ethcm_db_ioctl.h \ | ||
35 | $(LINXROOT)/include/rlnh_db_ioctl.h \ | ||
36 | -- | ||
37 | 1.7.5.4 | ||
38 | |||
diff --git a/recipes-enea/linx/linx-mod-2.6.6/linx-kernel-modules.patch b/recipes-enea/linx/linx-mod-2.6.6/linx-kernel-modules.patch new file mode 100644 index 0000000..f29019b --- /dev/null +++ b/recipes-enea/linx/linx-mod-2.6.6/linx-kernel-modules.patch | |||
@@ -0,0 +1,288 @@ | |||
1 | Use KERNEL_SRC and modules_install to get use of pokys build kernel modules. | ||
2 | fix version.h problem. | ||
3 | |||
4 | Signed-off-by: Anders Roxell <anders.roxell@enea.com> | ||
5 | |||
6 | Upstream-status: Pending | ||
7 | --- | ||
8 | diff -uNr a/cmcl/Makefile b/cmcl/Makefile | ||
9 | --- a/cmcl/Makefile 2013-02-25 15:46:59.777325274 +0100 | ||
10 | +++ b/cmcl/Makefile 2013-02-25 15:57:22.038398316 +0100 | ||
11 | @@ -3,8 +3,8 @@ | ||
12 | LINX ?= $(CURDIR)/../../.. | ||
13 | include $(LINX)/net/linx/config.mk | ||
14 | |||
15 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
16 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
17 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
18 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
19 | |||
20 | ifneq ($(VENDOR_VERSION), "") | ||
21 | EXTRA_CFLAGS += -DGFP_IS_INT | ||
22 | @@ -38,15 +38,17 @@ | ||
23 | |||
24 | linx_cmcl-y += cmcl.o | ||
25 | |||
26 | +SRC := $(shell pwd) | ||
27 | + | ||
28 | modules: | ||
29 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
30 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
31 | $(CP) linx_cmcl.ko .. | ||
32 | |||
33 | clean: | ||
34 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
35 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
36 | $(LINXRM) Module.symvers Module.markers modules.order ../linx_cmcl.ko | ||
37 | |||
38 | -install: modules | ||
39 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
40 | +modules_install: modules | ||
41 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
42 | depmod | ||
43 | |||
44 | diff -uNr a/config.mk b/config.mk | ||
45 | --- a/config.mk 2013-02-25 15:46:59.781325113 +0100 | ||
46 | +++ b/config.mk 2013-02-25 16:13:30.672459997 +0100 | ||
47 | @@ -3,7 +3,7 @@ | ||
48 | # CROSS_COMPILE is cross compiler prefix (including full path) | ||
49 | CROSS_COMPILE ?= | ||
50 | # KERNEL is the path to your kernel sources | ||
51 | -KERNEL ?= | ||
52 | +KERNEL_SRC ?= | ||
53 | |||
54 | # Host architecture | ||
55 | HOST_ARCH ?= $(patsubst i%86,i386,$(shell uname -m)) | ||
56 | @@ -26,13 +26,13 @@ | ||
57 | endif | ||
58 | |||
59 | ifeq ($(ARCH),$(HOST_ARCH)) | ||
60 | -ifndef KERNEL | ||
61 | -KERNEL := $(HOST_KERNEL) | ||
62 | +ifndef KERNEL_SRC | ||
63 | +KERNEL_SRC := $(HOST_KERNEL) | ||
64 | endif | ||
65 | else | ||
66 | -ifndef KERNEL | ||
67 | +ifndef KERNEL_SRC | ||
68 | ifdef NEED_KERNEL | ||
69 | -$(error Please define KERNEL.) | ||
70 | +$(error Please define KERNEL_SRC.) | ||
71 | endif | ||
72 | endif | ||
73 | endif | ||
74 | @@ -53,8 +53,8 @@ | ||
75 | ifdef CROSS_COMPILE | ||
76 | $(ECHO) "# CROSS_COMPILE=$(CROSS_COMPILE)" | ||
77 | endif | ||
78 | -ifdef KERNEL | ||
79 | - $(ECHO) "# KERNEL=$(KERNEL)" | ||
80 | +ifdef KERNEL_SRC | ||
81 | + $(ECHO) "# KERNEL_SRC=$(KERNEL_SRC)" | ||
82 | endif | ||
83 | ifdef VERBOSE | ||
84 | $(ECHO) "# VERBOSE=$(VERBOSE)" | ||
85 | @@ -62,7 +62,7 @@ | ||
86 | $(ECHO) "# VERBOSE=no" | ||
87 | endif | ||
88 | |||
89 | -export ARCH CROSS_COMPILE KERNEL LINX | ||
90 | +export ARCH CROSS_COMPILE KERNEL_SRC LINX | ||
91 | |||
92 | .PHONY: echo_config | ||
93 | |||
94 | @@ -117,5 +117,5 @@ | ||
95 | # in the mercury linux distribution. | ||
96 | EXTRA_CFLAGS += -I$(KDIR)/arch/ppc -DRLNH_ALIGN_ANY | ||
97 | else # x86 | ||
98 | -KDIR := /lib/modules/$(shell uname -r)/build | ||
99 | +KDIR := /lib/modules/$(KERNEL_VERSION)/build | ||
100 | endif | ||
101 | diff -uNr a/ecm/Makefile b/ecm/Makefile | ||
102 | --- a/ecm/Makefile 2013-02-25 15:46:59.781325113 +0100 | ||
103 | +++ b/ecm/Makefile 2013-02-25 16:11:13.754388313 +0100 | ||
104 | @@ -5,8 +5,8 @@ | ||
105 | LINX ?= $(CURDIR)/../../.. | ||
106 | include $(LINX)/net/linx/config.mk | ||
107 | |||
108 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
109 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
110 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
111 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
112 | |||
113 | ifneq ($(VENDOR_VERSION), "") | ||
114 | EXTRA_CFLAGS += -DGFP_IS_INT | ||
115 | @@ -43,14 +43,16 @@ | ||
116 | linx_eth_cm-y += ecm_rx.o | ||
117 | linx_eth_cm-y += ecm_kutils.o | ||
118 | |||
119 | +SRC := $(shell pwd) | ||
120 | + | ||
121 | modules: | ||
122 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
123 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
124 | $(CP) linx_eth_cm.ko .. | ||
125 | |||
126 | clean: | ||
127 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
128 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
129 | $(LINXRM) Module.symvers Module.markers modules.order ../linx_eth_cm.ko | ||
130 | |||
131 | -install: modules | ||
132 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
133 | +modules_install: modules | ||
134 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
135 | depmod | ||
136 | diff -uNr a/Makefile b/Makefile | ||
137 | --- a/Makefile 2013-02-25 15:46:59.781325113 +0100 | ||
138 | +++ b/Makefile 2013-02-25 15:53:22.752757899 +0100 | ||
139 | @@ -63,9 +63,9 @@ | ||
140 | 2_6_11 := 132619 | ||
141 | |||
142 | # Vendors version of kernel, needed to catch certain back patches | ||
143 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
144 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
145 | # Main line kernel version | ||
146 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
147 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
148 | |||
149 | # | ||
150 | # 'gt_or_eq' | ||
151 | @@ -140,14 +140,16 @@ | ||
152 | obj-y += riocm/ | ||
153 | obj-y += cmcl/ | ||
154 | |||
155 | +SRC := $(shell pwd) | ||
156 | + | ||
157 | modules: | ||
158 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
159 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
160 | $(CP) */*.ko . | ||
161 | clean: | ||
162 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
163 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
164 | $(LINXRM) Module.symvers Module.markers modules.order | ||
165 | |||
166 | -install: modules | ||
167 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
168 | +modules_install: modules | ||
169 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
170 | depmod | ||
171 | |||
172 | diff -uNr a/riocm/Makefile b/riocm/Makefile | ||
173 | --- a/riocm/Makefile 2013-02-25 15:46:59.781325113 +0100 | ||
174 | +++ b/riocm/Makefile 2013-02-25 16:05:33.381125565 +0100 | ||
175 | @@ -5,8 +5,8 @@ | ||
176 | LINX ?= $(CURDIR)/../../.. | ||
177 | include $(LINX)/net/linx/config.mk | ||
178 | |||
179 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
180 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
181 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
182 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
183 | |||
184 | ifneq ($(VENDOR_VERSION), "") | ||
185 | EXTRA_CFLAGS += -DGFP_IS_INT | ||
186 | @@ -43,15 +43,17 @@ | ||
187 | linx_rio_cm-y += rio_rx.o | ||
188 | linx_rio_cm-y += rio_kutils.o | ||
189 | |||
190 | +SRC := $(shell pwd) | ||
191 | + | ||
192 | modules: | ||
193 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
194 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
195 | $(CP) linx_rio_cm.ko .. | ||
196 | |||
197 | clean: | ||
198 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
199 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
200 | $(LINXRM) Module.symvers Module.markers modules.order ../linx_rio_cm.ko | ||
201 | |||
202 | -install: modules | ||
203 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
204 | +modules_install: modules | ||
205 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
206 | depmod | ||
207 | |||
208 | diff -uNr a/shmcm/Makefile b/shmcm/Makefile | ||
209 | --- a/shmcm/Makefile 2013-02-25 15:46:59.781325113 +0100 | ||
210 | +++ b/shmcm/Makefile 2013-02-25 16:03:58.113250295 +0100 | ||
211 | @@ -5,8 +5,8 @@ | ||
212 | LINX ?= $(CURDIR)/../../.. | ||
213 | include $(LINX)/net/linx/config.mk | ||
214 | |||
215 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
216 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
217 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
218 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
219 | |||
220 | ifneq ($(VENDOR_VERSION), "") | ||
221 | EXTRA_CFLAGS += -DGFP_IS_INT | ||
222 | @@ -60,7 +60,7 @@ | ||
223 | -I$(LINX)/net/linx/include \ | ||
224 | -I$(LINX)/net/linx/shmcm | ||
225 | |||
226 | -INSTALLDIR = /lib/modules/`uname -r`/kernel/net/linx | ||
227 | +INSTALLDIR = /lib/modules/$(KERNEL_VERSION)/kernel/net/linx | ||
228 | MODULES = linx_shm_cm.ko | ||
229 | |||
230 | obj-m := linx_shm_cm.o | ||
231 | @@ -70,15 +70,17 @@ | ||
232 | linx_shm_cm-y += shmcm_tx.o | ||
233 | linx_shm_cm-y += shmcm_kutils.o | ||
234 | |||
235 | +SRC := $(shell pwd) | ||
236 | + | ||
237 | modules: | ||
238 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
239 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
240 | $(CP) linx_shm_cm.ko .. | ||
241 | |||
242 | clean: | ||
243 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
244 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
245 | $(LINXRM) Module.symvers Module.markers modules.order ../linx_shm_cm.ko | ||
246 | |||
247 | -install: modules | ||
248 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
249 | +modules_install: modules | ||
250 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
251 | depmod | ||
252 | |||
253 | diff -uNr a/tcp_cm/Makefile b/tcp_cm/Makefile | ||
254 | --- a/tcp_cm/Makefile 2013-02-25 15:46:59.781325113 +0100 | ||
255 | +++ b/tcp_cm/Makefile 2013-02-25 16:10:09.097187839 +0100 | ||
256 | @@ -3,8 +3,8 @@ | ||
257 | LINX ?= $(CURDIR)/../../.. | ||
258 | include $(LINX)/net/linx/config.mk | ||
259 | |||
260 | -KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
261 | -VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL)/include/linux/version.h) | ||
262 | +KERNEL_CODE := $(shell awk '/LINUX_VERSION_CODE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
263 | +VENDOR_VERSION := $(shell awk '/UTS_RELEASE/ {print $$3}' $(KERNEL_SRC)/include/generated/utsrelease.h) | ||
264 | |||
265 | ifneq ($(VENDOR_VERSION), "") | ||
266 | EXTRA_CFLAGS += -DGFP_IS_INT | ||
267 | @@ -38,15 +38,17 @@ | ||
268 | |||
269 | linx_tcp_cm-y += tcp_cm.o | ||
270 | |||
271 | +SRC := $(shell pwd) | ||
272 | + | ||
273 | modules: | ||
274 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules | ||
275 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules | ||
276 | $(CP) linx_tcp_cm.ko .. | ||
277 | |||
278 | clean: | ||
279 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` clean | ||
280 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) clean | ||
281 | $(LINXRM) Module.symvers Module.markers modules.order ../linx_tcp_cm.ko | ||
282 | |||
283 | -install: modules | ||
284 | - $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL) M=`pwd` modules_install | ||
285 | +modules_install: modules | ||
286 | + $(XMAKE) ARCH=$(ARCH) V=$(V) -C $(KERNEL_SRC) M=$(SRC) modules_install | ||
287 | depmod | ||
288 | |||
diff --git a/recipes-enea/linx/linx-mod-2.6.6/support-for-3.11-kernel-versions.patch b/recipes-enea/linx/linx-mod-2.6.6/support-for-3.11-kernel-versions.patch new file mode 100644 index 0000000..d6f9106 --- /dev/null +++ b/recipes-enea/linx/linx-mod-2.6.6/support-for-3.11-kernel-versions.patch | |||
@@ -0,0 +1,206 @@ | |||
1 | From 20294330f08283d28b6092b568156e29b1792328 Mon Sep 17 00:00:00 2001 | ||
2 | From: Adrian Dudau <adrian.dudau@enea.com> | ||
3 | Date: Thu, 12 Dec 2013 11:23:24 +0100 | ||
4 | Subject: [PATCH] support for 3.11 kernel versions | ||
5 | |||
6 | Fixed NULL pointer dereference in ecm_conn.c | ||
7 | |||
8 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
9 | --- | ||
10 | cfg/db_proc.c | 23 ++++++++++++++++++----- | ||
11 | ecm/ecm_conn.c | 11 ++++++++--- | ||
12 | ipc/hunt.c | 24 ++++++++++++++++++++++++ | ||
13 | 3 files changed, 50 insertions(+), 8 deletions(-) | ||
14 | |||
15 | diff --git a/cfg/db_proc.c b/cfg/db_proc.c | ||
16 | index c062a3d..bad0353 100644 | ||
17 | --- a/cfg/db_proc.c | ||
18 | +++ b/cfg/db_proc.c | ||
19 | @@ -41,6 +41,12 @@ | ||
20 | #include "db_format.h" | ||
21 | #include <asm/uaccess.h> | ||
22 | |||
23 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) | ||
24 | +#define PDE_INODE_NAME(inode) PDE_DATA(inode) | ||
25 | +#else | ||
26 | +#define PDE_INODE_NAME(inode) PDE(inode)->name | ||
27 | +#endif | ||
28 | + | ||
29 | struct db_seq { | ||
30 | const struct db_template *template; | ||
31 | struct list_head *list; | ||
32 | @@ -148,11 +154,11 @@ static int db_proc_open(struct inode *inode, struct file *file) | ||
33 | if (status != 0) | ||
34 | goto out_20; | ||
35 | |||
36 | - status = db_template_get(PDE(inode)->name, &p->template); | ||
37 | + status = db_template_get(PDE_INODE_NAME(inode), &p->template); | ||
38 | if (status != 0) | ||
39 | goto out_20; | ||
40 | |||
41 | - status = db_list_get(PDE(inode)->name, &p->list); | ||
42 | + status = db_list_get(PDE_INODE_NAME(inode), &p->list); | ||
43 | if (status != 0) | ||
44 | goto out_10; | ||
45 | |||
46 | @@ -161,7 +167,7 @@ static int db_proc_open(struct inode *inode, struct file *file) | ||
47 | return 0; | ||
48 | |||
49 | out_10: | ||
50 | - db_template_put(PDE(inode)->name, &p->template); | ||
51 | + db_template_put(PDE_INODE_NAME(inode), &p->template); | ||
52 | out_20: | ||
53 | kfree(p); | ||
54 | return status; | ||
55 | @@ -217,11 +223,11 @@ static int db_proc_release(struct inode *inode, struct file *file) | ||
56 | s = file->private_data; | ||
57 | p = s->private; | ||
58 | |||
59 | - status = db_list_put(PDE(inode)->name, &p->list); | ||
60 | + status = db_list_put(PDE_INODE_NAME(inode), &p->list); | ||
61 | if (status != 0) | ||
62 | return status; | ||
63 | |||
64 | - status = db_template_put(PDE(inode)->name, &p->template); | ||
65 | + status = db_template_put(PDE_INODE_NAME(inode), &p->template); | ||
66 | if (status != 0) | ||
67 | return status; | ||
68 | |||
69 | @@ -258,14 +264,21 @@ int db_proc_add(const char *name) | ||
70 | { | ||
71 | struct proc_dir_entry *pde; | ||
72 | |||
73 | +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) | ||
74 | + pde = proc_create_data(name, 0777, db_proc_root, | ||
75 | + &db_proc_file_ops, (void *)name); | ||
76 | +#else | ||
77 | pde = create_proc_entry(name, 0777, db_proc_root); | ||
78 | +#endif | ||
79 | if (pde == NULL) | ||
80 | return -EINVAL; | ||
81 | |||
82 | #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) | ||
83 | pde->owner = THIS_MODULE; | ||
84 | #endif | ||
85 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) | ||
86 | pde->proc_fops = &db_proc_file_ops; | ||
87 | +#endif | ||
88 | return 0; | ||
89 | } | ||
90 | EXPORT_SYMBOL(db_proc_add); | ||
91 | diff --git a/ecm/ecm_conn.c b/ecm/ecm_conn.c | ||
92 | index aaf5161..b81abd1 100644 | ||
93 | --- a/ecm/ecm_conn.c | ||
94 | +++ b/ecm/ecm_conn.c | ||
95 | @@ -905,8 +905,9 @@ static void free_ecm_connection(struct RlnhLinkObj *co) | ||
96 | { | ||
97 | /* Undo alloc_ecm_connection(). */ | ||
98 | if (co != NULL) { | ||
99 | - if (list_empty(&co->ecm_dev->conn_list)) | ||
100 | - dev_remove_pack(&co->ecm_dev->pt); | ||
101 | + if (co->ecm_dev != NULL) | ||
102 | + if (list_empty(&co->ecm_dev->conn_list)) | ||
103 | + dev_remove_pack(&co->ecm_dev->pt); | ||
104 | if (co->con_name != NULL) | ||
105 | kfree(co->con_name); | ||
106 | if (co->dev_name != NULL) | ||
107 | @@ -1315,7 +1316,11 @@ static int net_event(struct notifier_block *nb, unsigned long event, void *data) | ||
108 | struct ecm_work_net_event *p; | ||
109 | |||
110 | (void)nb; | ||
111 | - dev = data; | ||
112 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) | ||
113 | + dev = netdev_notifier_info_to_dev(data); | ||
114 | +#else | ||
115 | + dev = data; | ||
116 | +#endif | ||
117 | |||
118 | w = alloc_ecm_work(sizeof(*p), ECM_WORK_NET_EVENT, GFP_KERNEL); | ||
119 | if (w == NULL) | ||
120 | diff --git a/ipc/hunt.c b/ipc/hunt.c | ||
121 | index 843a893..f4564eb 100644 | ||
122 | --- a/ipc/hunt.c | ||
123 | +++ b/ipc/hunt.c | ||
124 | @@ -743,7 +743,9 @@ static inline struct sock *__locate_name(const char *name, | ||
125 | unsigned hash, uint32_t hunter_spid) | ||
126 | { | ||
127 | struct sock *s, *s_found = NULL; | ||
128 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) | ||
129 | struct hlist_node *node; | ||
130 | +#endif | ||
131 | |||
132 | linx_trace_enter(LINX_TRACEGROUP_IPC, | ||
133 | "%s, %d, 0x%x, 0x%x", name, len, hash, hunter_spid); | ||
134 | @@ -753,7 +755,11 @@ static inline struct sock *__locate_name(const char *name, | ||
135 | |||
136 | /* Traverse the list of sockets in the specified hash slot to find a | ||
137 | match. */ | ||
138 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) | ||
139 | + sk_for_each(s, &linx_sockets_bound[hash]) { | ||
140 | +#else | ||
141 | sk_for_each(s, node, &linx_sockets_bound[hash]) { | ||
142 | +#endif | ||
143 | linx_check_sock(s); | ||
144 | |||
145 | /* If the length of the aname are the same, potential match was found. */ | ||
146 | @@ -1122,7 +1128,9 @@ int linx_info_sockets(struct linx_info_sockets *isockets, | ||
147 | LINX_SPID __user * spids) | ||
148 | { | ||
149 | struct sock *sk; | ||
150 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) | ||
151 | const struct hlist_node *node; | ||
152 | +#endif | ||
153 | int i, tot_sockets = 0, tot_sockets_tmp = 0, max_sockets; | ||
154 | |||
155 | LINX_ASSERT(isockets != NULL); | ||
156 | @@ -1131,7 +1139,11 @@ int linx_info_sockets(struct linx_info_sockets *isockets, | ||
157 | |||
158 | read_lock_bh(&linx_socket_bound_unbound_lock); | ||
159 | /* Count the number of sockets the needs to be returned. */ | ||
160 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) | ||
161 | + sk_for_each(sk, &linx_sockets_unbound) { | ||
162 | +#else | ||
163 | sk_for_each(sk, node, &linx_sockets_unbound) { | ||
164 | +#endif | ||
165 | if (linx_sk(sk)->type == LINX_TYPE_REMOTE && isockets->remote) { | ||
166 | tot_sockets_tmp++; | ||
167 | } else if (linx_sk(sk)->type == LINX_TYPE_LOCAL && | ||
168 | @@ -1156,7 +1168,11 @@ int linx_info_sockets(struct linx_info_sockets *isockets, | ||
169 | |||
170 | tot_sockets_tmp = 0; | ||
171 | |||
172 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) | ||
173 | + sk_for_each(sk, &linx_sockets_unbound) { | ||
174 | +#else | ||
175 | sk_for_each(sk, node, &linx_sockets_unbound) { | ||
176 | +#endif | ||
177 | LINX_SPID spid = linx_sock_to_spid(sk); | ||
178 | if (linx_sk(sk)->type == LINX_TYPE_REMOTE && | ||
179 | isockets->remote) { | ||
180 | @@ -1197,7 +1213,11 @@ int linx_info_sockets(struct linx_info_sockets *isockets, | ||
181 | for (i = 0; i < LINX_HASH_SIZE; i++) { | ||
182 | tot_sockets_tmp = 0; | ||
183 | read_lock_bh(&linx_socket_bound_unbound_lock); | ||
184 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) | ||
185 | + sk_for_each(sk, &linx_sockets_bound[i]) { | ||
186 | +#else | ||
187 | sk_for_each(sk, node, &linx_sockets_bound[i]) { | ||
188 | +#endif | ||
189 | if (linx_sk(sk)->type == LINX_TYPE_REMOTE && | ||
190 | isockets->remote) { | ||
191 | tot_sockets_tmp++; | ||
192 | @@ -1222,7 +1242,11 @@ int linx_info_sockets(struct linx_info_sockets *isockets, | ||
193 | } | ||
194 | |||
195 | tot_sockets_tmp = 0; | ||
196 | +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) | ||
197 | + sk_for_each(sk, &linx_sockets_bound[i]) { | ||
198 | +#else | ||
199 | sk_for_each(sk, node, &linx_sockets_bound[i]) { | ||
200 | +#endif | ||
201 | LINX_SPID spid = linx_sock_to_spid(sk); | ||
202 | if (linx_sk(sk)->type == LINX_TYPE_REMOTE && | ||
203 | isockets->remote) { | ||
204 | -- | ||
205 | 1.8.3.2 | ||
206 | |||
diff --git a/recipes-enea/linx/linx-mod_2.6.6.bb b/recipes-enea/linx/linx-mod_2.6.6.bb new file mode 100644 index 0000000..aa38602 --- /dev/null +++ b/recipes-enea/linx/linx-mod_2.6.6.bb | |||
@@ -0,0 +1,32 @@ | |||
1 | SUMMARY = "LINX for Linux fast IPC" | ||
2 | DESCRIPTION = "LINX is a distributed communication protocol stack for transparent inter node and interprocess communication for a heterogeneous mix of systems." | ||
3 | HOMEPAGE = "http://linx.sourceforge.net/" | ||
4 | |||
5 | SECTION = "kernel/modules" | ||
6 | |||
7 | LICENSE = "GPLv2" | ||
8 | LIC_FILES_CHKSUM = "file://../../COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" | ||
9 | |||
10 | DEPENDS = "linux-libc-headers linx" | ||
11 | RRECOMMENDS_${PN} = "linx kmod" | ||
12 | |||
13 | SRC_URI = "http://linux.enea.com/linx/linx-${PV}.tar.gz" | ||
14 | |||
15 | SRC_URI[md5sum] = "f6d7e103eee0807cacf73aa20cf95571" | ||
16 | SRC_URI[sha256sum] = "a8fa3fe221e883ecb6afaa001652c96080a474b95e8d37c3bcf3e0c2ae618799" | ||
17 | |||
18 | S = "${WORKDIR}/linx-${PV}/net/linx" | ||
19 | |||
20 | inherit module | ||
21 | |||
22 | module_do_compile_prepend () { | ||
23 | |||
24 | HAS_LOADABLE_MODULES=$(cat ${STAGING_KERNEL_DIR}/.config | grep "CONFIG_MODULES=y") | ||
25 | |||
26 | if [[ ${#HAS_LOADABLE_MODULES} -eq 0 ]] ; then | ||
27 | echo "The specified Linux kernel has no support for pluggable modules (CONFIG_MODULES=y). Enable it before baking this." | ||
28 | exit 1 | ||
29 | fi | ||
30 | |||
31 | do_make_scripts | ||
32 | } | ||
diff --git a/recipes-enea/linx/linx.inc b/recipes-enea/linx/linx.inc new file mode 100644 index 0000000..072f468 --- /dev/null +++ b/recipes-enea/linx/linx.inc | |||
@@ -0,0 +1,22 @@ | |||
1 | SUMMARY = "LINX for Linux fast IPC" | ||
2 | DESCRIPTION = "LINX is a distributed communication protocol stack for transparent inter node and interprocess communication for a heterogeneous mix of systems." | ||
3 | HOMEPAGE = "http://linx.sourceforge.net/" | ||
4 | SECTION = "system/library" | ||
5 | |||
6 | DEPENDS = "linux-libc-headers virtual/libc" | ||
7 | RRECOMMENDS_${PN} = "linx-mod" | ||
8 | |||
9 | SRC_URI = "http://linux.enea.com/linx/linx-${PV}.tar.gz" | ||
10 | |||
11 | SRC_URI[md5sum] = "f6d7e103eee0807cacf73aa20cf95571" | ||
12 | SRC_URI[sha256sum] = "a8fa3fe221e883ecb6afaa001652c96080a474b95e8d37c3bcf3e0c2ae618799" | ||
13 | |||
14 | S = "${WORKDIR}/linx-${PV}" | ||
15 | |||
16 | inherit autotools | ||
17 | |||
18 | do_install_append () { | ||
19 | mkdir -p ${D}/etc | ||
20 | install -m 644 ${S}/linxgw/linxgws/example.conf ${D}/etc/linxgws.conf | ||
21 | } | ||
22 | |||
diff --git a/recipes-enea/linx/linx_2.6.6.bb b/recipes-enea/linx/linx_2.6.6.bb new file mode 100644 index 0000000..79f7ed7 --- /dev/null +++ b/recipes-enea/linx/linx_2.6.6.bb | |||
@@ -0,0 +1,6 @@ | |||
1 | require linx.inc | ||
2 | LICENSE = "BSD" | ||
3 | |||
4 | PR = "r0" | ||
5 | |||
6 | LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552" | ||
diff --git a/recipes-enea/list2mask/list2mask/run-ptest b/recipes-enea/list2mask/list2mask/run-ptest new file mode 100644 index 0000000..9eb6c2f --- /dev/null +++ b/recipes-enea/list2mask/list2mask/run-ptest | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/bin/sh -eu | ||
2 | |||
3 | mask=$(list2mask --cpus 2-3,5,7-8) | ||
4 | |||
5 | if [ $? -ne 0 ]; then | ||
6 | echo "FAIL: list2mask failed to execute" | ||
7 | exit | ||
8 | fi | ||
9 | |||
10 | if [ "$mask" != "1ac" ]; then | ||
11 | echo "FAIL: list2mask returns mask '$mask', expected '1ac'" | ||
12 | exit | ||
13 | fi | ||
14 | |||
15 | echo "PASS: list2mask" | ||
diff --git a/recipes-enea/list2mask/list2mask_1.0.bb b/recipes-enea/list2mask/list2mask_1.0.bb new file mode 100644 index 0000000..d72bcda --- /dev/null +++ b/recipes-enea/list2mask/list2mask_1.0.bb | |||
@@ -0,0 +1,25 @@ | |||
1 | SUMMARY = "Translate CPU list to a CPU mask" | ||
2 | DESCRIPTION = "Translate CPU list given on command line to a hexadecimal CPU mask. Can use kernel boot parameters isolcpus or nohz_full as input as well as a list given on command line." | ||
3 | SECTION = "utils" | ||
4 | LICENSE = "BSD" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=b52bab7a403562f36be803f11489f1a4" | ||
6 | |||
7 | PR = "r1" | ||
8 | |||
9 | RDEPENDS_${PN} = "bash" | ||
10 | |||
11 | SRC_URI = "git://github.com/OpenEneaLinux/rt-tools.git;branch=master \ | ||
12 | file://run-ptest \ | ||
13 | " | ||
14 | |||
15 | SRCREV = "db6eff03d80c04803fb146939c504b500e16fe2f" | ||
16 | |||
17 | inherit ptest | ||
18 | |||
19 | S = "${WORKDIR}/git" | ||
20 | |||
21 | FILES_${PN} += "/bin/*" | ||
22 | |||
23 | do_install() { | ||
24 | install -D ${S}/install/bin/${PN} ${D}/usr/bin/${PN} | ||
25 | } | ||
diff --git a/recipes-enea/partrt/partrt/run-ptest b/recipes-enea/partrt/partrt/run-ptest new file mode 100644 index 0000000..1c2d3c0 --- /dev/null +++ b/recipes-enea/partrt/partrt/run-ptest | |||
@@ -0,0 +1,9 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ./test_partition.py target > /dev/null | ||
4 | |||
5 | if [ $? -eq 0 ]; then | ||
6 | echo "PASS: test_partition" | ||
7 | else | ||
8 | echo "FAIL: test_partition" | ||
9 | fi | ||
diff --git a/recipes-enea/partrt/partrt_1.1.bb b/recipes-enea/partrt/partrt_1.1.bb new file mode 100644 index 0000000..8113805 --- /dev/null +++ b/recipes-enea/partrt/partrt_1.1.bb | |||
@@ -0,0 +1,30 @@ | |||
1 | SUMMARY = "CPU partitioning tool" | ||
2 | DESCRIPTION = "partrt is a tool for dividing a SMP Linux system into a real time domain and a non-real time domain." | ||
3 | SECTION = "utils" | ||
4 | LICENSE = "BSD" | ||
5 | LIC_FILES_CHKSUM = "file://LICENSE;md5=b52bab7a403562f36be803f11489f1a4" | ||
6 | |||
7 | RDEPENDS_${PN} = "bash" | ||
8 | RDEPENDS_${PN}-ptest += "python" | ||
9 | |||
10 | SRC_URI = "git://github.com/OpenEneaLinux/rt-tools.git;branch=master \ | ||
11 | file://run-ptest \ | ||
12 | " | ||
13 | |||
14 | SRCREV = "cbe36a4946a2b3bb4927ca3b8ac800111ae9ce49" | ||
15 | |||
16 | inherit ptest | ||
17 | |||
18 | S = "${WORKDIR}/git" | ||
19 | |||
20 | FILES_${PN} += "/bin/*" | ||
21 | |||
22 | do_install() { | ||
23 | install -d ${D}/usr/bin | ||
24 | install ${S}/install/bin/partrt ${D}/usr/bin | ||
25 | } | ||
26 | |||
27 | do_install_ptest() { | ||
28 | install ${S}/test/test_partition.py ${D}${PTEST_PATH} | ||
29 | sed -i s/target/${MACHINE}/ ${D}${PTEST_PATH}/run-ptest | ||
30 | } | ||
diff --git a/recipes-kernel/linux/files/0001-net-fib-fib6_add-fix-potential-NULL-pointer-derefere.patch b/recipes-kernel/linux/files/0001-net-fib-fib6_add-fix-potential-NULL-pointer-derefere.patch new file mode 100644 index 0000000..abd4430 --- /dev/null +++ b/recipes-kernel/linux/files/0001-net-fib-fib6_add-fix-potential-NULL-pointer-derefere.patch | |||
@@ -0,0 +1,52 @@ | |||
1 | From c5c56513b779cb082d05f63c606bde9321d395fb Mon Sep 17 00:00:00 2001 | ||
2 | From: Sona Sarmadi <sona.sarmadi@enea.com> | ||
3 | Date: Tue, 22 Apr 2014 13:52:58 +0200 | ||
4 | Subject: [PATCH] net: fib: fib6_add: fix potential NULL pointer dereference | ||
5 | |||
6 | When the kernel is compiled with CONFIG_IPV6_SUBTREES, and we return | ||
7 | with an error in fn = fib6_add_1(), then error codes are encoded into | ||
8 | the return pointer e.g. ERR_PTR(-ENOENT). In such an error case, we | ||
9 | write the error code into err and jump to out, hence enter the if(err) | ||
10 | condition. Now, if CONFIG_IPV6_SUBTREES is enabled, we check for: | ||
11 | if (pn != fn && pn->leaf == rt) | ||
12 | ... | ||
13 | if (pn != fn && !pn->leaf && !(pn->fn_flags & RTN_RTINFO)) | ||
14 | ... | ||
15 | Since pn is NULL and fn is f.e. ERR_PTR(-ENOENT), then pn != fn | ||
16 | evaluates to true and causes a NULL-pointer dereference on further | ||
17 | checks on pn. Fix it, by setting both NULL in error case, so that | ||
18 | pn != fn already evaluates to false and no further dereference | ||
19 | takes place. | ||
20 | |||
21 | This was first correctly implemented in 4a287eba2 ("IPv6 routing, | ||
22 | NLM_F_* flag support: REPLACE and EXCL flags support, warn about | ||
23 | missing CREATE flag"), but the bug got later on introduced by | ||
24 | 188c517a0 ("ipv6: return errno pointers consistently for fib6_add_1()"). | ||
25 | |||
26 | Signed-off-by: Daniel Borkmann <dborkman@redhat.com> | ||
27 | Cc: Lin Ming <mlin@ss.pku.edu.cn> | ||
28 | Cc: Matti Vaittinen <matti.vaittinen@nsn.com> | ||
29 | Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> | ||
30 | Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> | ||
31 | Acked-by: Matti Vaittinen <matti.vaittinen@nsn.com> | ||
32 | Signed-off-by: David S. Miller <davem@davemloft.net> | ||
33 | Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> | ||
34 | --- | ||
35 | net/ipv6/ip6_fib.c | 1 + | ||
36 | 1 file changed, 1 insertion(+) | ||
37 | |||
38 | diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c | ||
39 | index 5fc9c7a..45562f6 100644 | ||
40 | --- a/net/ipv6/ip6_fib.c | ||
41 | +++ b/net/ipv6/ip6_fib.c | ||
42 | @@ -828,6 +828,7 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, struct nl_info *info) | ||
43 | |||
44 | if (IS_ERR(fn)) { | ||
45 | err = PTR_ERR(fn); | ||
46 | + fn = NULL; | ||
47 | goto out; | ||
48 | } | ||
49 | |||
50 | -- | ||
51 | 1.7.10.4 | ||
52 | |||
diff --git a/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch b/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch new file mode 100644 index 0000000..9e42dbd --- /dev/null +++ b/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From 34a06b51a1928ed1692da4fce9f2203dfd306648 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Maxin B. John" <maxin.john@enea.com> | ||
3 | Date: Tue, 22 Apr 2014 07:26:59 +0200 | ||
4 | Subject: [PATCH] sdhci: fix Timeout error messages | ||
5 | |||
6 | If the driver doesn't implement proper card detection, | ||
7 | we shouldn't flood the console with Timeout error messages | ||
8 | |||
9 | Upstream-Status: Pending | ||
10 | |||
11 | Signed-off-by: Maxin B. John <maxin.john@enea.com> | ||
12 | --- | ||
13 | drivers/mmc/host/sdhci.c | 9 ++++++--- | ||
14 | 1 file changed, 6 insertions(+), 3 deletions(-) | ||
15 | |||
16 | diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c | ||
17 | index 79db375..c77117c 100644 | ||
18 | --- a/drivers/mmc/host/sdhci.c | ||
19 | +++ b/drivers/mmc/host/sdhci.c | ||
20 | @@ -2149,10 +2149,13 @@ static void sdhci_timeout_timer(unsigned long data) | ||
21 | spin_lock_irqsave(&host->lock, flags); | ||
22 | |||
23 | if (host->mrq) { | ||
24 | - pr_err("%s: Timeout waiting for hardware " | ||
25 | + /* If the driver doesn't implement proper card detection, | ||
26 | + we shouldn't flood the console with Timeout error messages */ | ||
27 | + if (!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)) { | ||
28 | + pr_err("%s: Timeout waiting for hardware " | ||
29 | "interrupt.\n", mmc_hostname(host->mmc)); | ||
30 | - sdhci_dumpregs(host); | ||
31 | - | ||
32 | + sdhci_dumpregs(host); | ||
33 | + } | ||
34 | if (host->data) { | ||
35 | host->data->error = -ETIMEDOUT; | ||
36 | sdhci_finish_data(host); | ||
37 | -- | ||
38 | 1.7.10.4 | ||
39 | |||
diff --git a/recipes-kernel/linux/files/Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch b/recipes-kernel/linux/files/Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch new file mode 100644 index 0000000..79e52c3 --- /dev/null +++ b/recipes-kernel/linux/files/Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch | |||
@@ -0,0 +1,13 @@ | |||
1 | diff --git a/net/core/scm.c b/net/core/scm.c | ||
2 | index 03795d0..b4da80b 100644 | ||
3 | --- a/net/core/scm.c | ||
4 | +++ b/net/core/scm.c | ||
5 | @@ -54,7 +54,7 @@ static __inline__ int scm_check_creds(struct ucred *creds) | ||
6 | return -EINVAL; | ||
7 | |||
8 | if ((creds->pid == task_tgid_vnr(current) || | ||
9 | - ns_capable(current->nsproxy->pid_ns->user_ns, CAP_SYS_ADMIN)) && | ||
10 | + ns_capable(task_active_pid_ns(current)->user_ns, CAP_SYS_ADMIN)) && | ||
11 | ((uid_eq(uid, cred->uid) || uid_eq(uid, cred->euid) || | ||
12 | uid_eq(uid, cred->suid)) || nsown_capable(CAP_SETUID)) && | ||
13 | ((gid_eq(gid, cred->gid) || gid_eq(gid, cred->egid) || | ||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch b/recipes-kernel/linux/files/HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch new file mode 100644 index 0000000..faeace9 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch | |||
@@ -0,0 +1,80 @@ | |||
1 | From 43622021d2e2b82ea03d883926605bdd0525e1d1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:29:55 +0200 | ||
4 | Subject: [PATCH] HID: validate HID report id size | ||
5 | |||
6 | The "Report ID" field of a HID report is used to build indexes of | ||
7 | reports. The kernel's index of these is limited to 256 entries, so any | ||
8 | malicious device that sets a Report ID greater than 255 will trigger | ||
9 | memory corruption on the host: | ||
10 | |||
11 | [ 1347.156239] BUG: unable to handle kernel paging request at ffff88094958a878 | ||
12 | [ 1347.156261] IP: [<ffffffff813e4da0>] hid_register_report+0x2a/0x8b | ||
13 | |||
14 | CVE-2013-2888 | ||
15 | |||
16 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
17 | Cc: stable@kernel.org | ||
18 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
19 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
20 | --- | ||
21 | drivers/hid/hid-core.c | 10 +++++++--- | ||
22 | include/linux/hid.h | 4 +++- | ||
23 | 2 files changed, 10 insertions(+), 4 deletions(-) | ||
24 | |||
25 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | ||
26 | index 36668d1..5ea7d51 100644 | ||
27 | --- a/drivers/hid/hid-core.c | ||
28 | +++ b/drivers/hid/hid-core.c | ||
29 | @@ -63,6 +63,8 @@ struct hid_report *hid_register_report(struct hid_device *device, unsigned type, | ||
30 | struct hid_report_enum *report_enum = device->report_enum + type; | ||
31 | struct hid_report *report; | ||
32 | |||
33 | + if (id >= HID_MAX_IDS) | ||
34 | + return NULL; | ||
35 | if (report_enum->report_id_hash[id]) | ||
36 | return report_enum->report_id_hash[id]; | ||
37 | |||
38 | @@ -404,8 +406,10 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) | ||
39 | |||
40 | case HID_GLOBAL_ITEM_TAG_REPORT_ID: | ||
41 | parser->global.report_id = item_udata(item); | ||
42 | - if (parser->global.report_id == 0) { | ||
43 | - hid_err(parser->device, "report_id 0 is invalid\n"); | ||
44 | + if (parser->global.report_id == 0 || | ||
45 | + parser->global.report_id >= HID_MAX_IDS) { | ||
46 | + hid_err(parser->device, "report_id %u is invalid\n", | ||
47 | + parser->global.report_id); | ||
48 | return -1; | ||
49 | } | ||
50 | return 0; | ||
51 | @@ -575,7 +579,7 @@ static void hid_close_report(struct hid_device *device) | ||
52 | for (i = 0; i < HID_REPORT_TYPES; i++) { | ||
53 | struct hid_report_enum *report_enum = device->report_enum + i; | ||
54 | |||
55 | - for (j = 0; j < 256; j++) { | ||
56 | + for (j = 0; j < HID_MAX_IDS; j++) { | ||
57 | struct hid_report *report = report_enum->report_id_hash[j]; | ||
58 | if (report) | ||
59 | hid_free_report(report); | ||
60 | diff --git a/include/linux/hid.h b/include/linux/hid.h | ||
61 | index 0c48991..ff545cc 100644 | ||
62 | --- a/include/linux/hid.h | ||
63 | +++ b/include/linux/hid.h | ||
64 | @@ -393,10 +393,12 @@ struct hid_report { | ||
65 | struct hid_device *device; /* associated device */ | ||
66 | }; | ||
67 | |||
68 | +#define HID_MAX_IDS 256 | ||
69 | + | ||
70 | struct hid_report_enum { | ||
71 | unsigned numbered; | ||
72 | struct list_head report_list; | ||
73 | - struct hid_report *report_id_hash[256]; | ||
74 | + struct hid_report *report_id_hash[HID_MAX_IDS]; | ||
75 | }; | ||
76 | |||
77 | #define HID_REPORT_TYPES 3 | ||
78 | -- | ||
79 | 1.7.9.5 | ||
80 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch b/recipes-kernel/linux/files/HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch new file mode 100644 index 0000000..860d710 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch | |||
@@ -0,0 +1,107 @@ | |||
1 | From 331415ff16a12147d57d5c953f3a961b7ede348b Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:50 +0200 | ||
4 | Subject: [PATCH] HID: provide a helper for validating hid reports | ||
5 | |||
6 | Many drivers need to validate the characteristics of their HID report | ||
7 | during initialization to avoid misusing the reports. This adds a common | ||
8 | helper to perform validation of the report exisitng, the field existing, | ||
9 | and the expected number of values within the field. | ||
10 | |||
11 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
12 | Cc: stable@vger.kernel.org | ||
13 | Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
14 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
15 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
16 | --- | ||
17 | drivers/hid/hid-core.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ | ||
18 | include/linux/hid.h | 4 ++++ | ||
19 | 2 files changed, 62 insertions(+) | ||
20 | |||
21 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | ||
22 | index ae88a97..be52c06 100644 | ||
23 | --- a/drivers/hid/hid-core.c | ||
24 | +++ b/drivers/hid/hid-core.c | ||
25 | @@ -801,6 +801,64 @@ int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size) | ||
26 | } | ||
27 | EXPORT_SYMBOL_GPL(hid_parse_report); | ||
28 | |||
29 | +static const char * const hid_report_names[] = { | ||
30 | + "HID_INPUT_REPORT", | ||
31 | + "HID_OUTPUT_REPORT", | ||
32 | + "HID_FEATURE_REPORT", | ||
33 | +}; | ||
34 | +/** | ||
35 | + * hid_validate_values - validate existing device report's value indexes | ||
36 | + * | ||
37 | + * @device: hid device | ||
38 | + * @type: which report type to examine | ||
39 | + * @id: which report ID to examine (0 for first) | ||
40 | + * @field_index: which report field to examine | ||
41 | + * @report_counts: expected number of values | ||
42 | + * | ||
43 | + * Validate the number of values in a given field of a given report, after | ||
44 | + * parsing. | ||
45 | + */ | ||
46 | +struct hid_report *hid_validate_values(struct hid_device *hid, | ||
47 | + unsigned int type, unsigned int id, | ||
48 | + unsigned int field_index, | ||
49 | + unsigned int report_counts) | ||
50 | +{ | ||
51 | + struct hid_report *report; | ||
52 | + | ||
53 | + if (type > HID_FEATURE_REPORT) { | ||
54 | + hid_err(hid, "invalid HID report type %u\n", type); | ||
55 | + return NULL; | ||
56 | + } | ||
57 | + | ||
58 | + if (id >= HID_MAX_IDS) { | ||
59 | + hid_err(hid, "invalid HID report id %u\n", id); | ||
60 | + return NULL; | ||
61 | + } | ||
62 | + | ||
63 | + /* | ||
64 | + * Explicitly not using hid_get_report() here since it depends on | ||
65 | + * ->numbered being checked, which may not always be the case when | ||
66 | + * drivers go to access report values. | ||
67 | + */ | ||
68 | + report = hid->report_enum[type].report_id_hash[id]; | ||
69 | + if (!report) { | ||
70 | + hid_err(hid, "missing %s %u\n", hid_report_names[type], id); | ||
71 | + return NULL; | ||
72 | + } | ||
73 | + if (report->maxfield <= field_index) { | ||
74 | + hid_err(hid, "not enough fields in %s %u\n", | ||
75 | + hid_report_names[type], id); | ||
76 | + return NULL; | ||
77 | + } | ||
78 | + if (report->field[field_index]->report_count < report_counts) { | ||
79 | + hid_err(hid, "not enough values in %s %u field %u\n", | ||
80 | + hid_report_names[type], id, field_index); | ||
81 | + return NULL; | ||
82 | + } | ||
83 | + return report; | ||
84 | +} | ||
85 | +EXPORT_SYMBOL_GPL(hid_validate_values); | ||
86 | + | ||
87 | /** | ||
88 | * hid_open_report - open a driver-specific device report | ||
89 | * | ||
90 | diff --git a/include/linux/hid.h b/include/linux/hid.h | ||
91 | index ee1ffc5..31b9d29 100644 | ||
92 | --- a/include/linux/hid.h | ||
93 | +++ b/include/linux/hid.h | ||
94 | @@ -756,6 +756,10 @@ u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags); | ||
95 | struct hid_device *hid_allocate_device(void); | ||
96 | struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id); | ||
97 | int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); | ||
98 | +struct hid_report *hid_validate_values(struct hid_device *hid, | ||
99 | + unsigned int type, unsigned int id, | ||
100 | + unsigned int field_index, | ||
101 | + unsigned int report_counts); | ||
102 | int hid_open_report(struct hid_device *device); | ||
103 | int hid_check_keys_pressed(struct hid_device *hid); | ||
104 | int hid_connect(struct hid_device *hid, unsigned int connect_mask); | ||
105 | -- | ||
106 | 1.7.9.5 | ||
107 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch new file mode 100644 index 0000000..a2641cf --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch | |||
@@ -0,0 +1,59 @@ | |||
1 | From 78214e81a1bf43740ce89bb5efda78eac2f8ef83 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:51 +0200 | ||
4 | Subject: [PATCH] HID: zeroplus: validate output report details | ||
5 | |||
6 | The zeroplus HID driver was not checking the size of allocated values | ||
7 | in fields it used. A HID device could send a malicious output report | ||
8 | that would cause the driver to write beyond the output report allocation | ||
9 | during initialization, causing a heap overflow: | ||
10 | |||
11 | [ 1442.728680] usb 1-1: New USB device found, idVendor=0c12, idProduct=0005 | ||
12 | ... | ||
13 | [ 1466.243173] BUG kmalloc-192 (Tainted: G W ): Redzone overwritten | ||
14 | |||
15 | CVE-2013-2889 | ||
16 | |||
17 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
18 | Cc: stable@vger.kernel.org | ||
19 | Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
20 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
21 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
22 | --- | ||
23 | drivers/hid/hid-zpff.c | 18 +++++------------- | ||
24 | 1 file changed, 5 insertions(+), 13 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/hid/hid-zpff.c b/drivers/hid/hid-zpff.c | ||
27 | index 6ec28a3..a29756c 100644 | ||
28 | --- a/drivers/hid/hid-zpff.c | ||
29 | +++ b/drivers/hid/hid-zpff.c | ||
30 | @@ -68,21 +68,13 @@ static int zpff_init(struct hid_device *hid) | ||
31 | struct hid_report *report; | ||
32 | struct hid_input *hidinput = list_entry(hid->inputs.next, | ||
33 | struct hid_input, list); | ||
34 | - struct list_head *report_list = | ||
35 | - &hid->report_enum[HID_OUTPUT_REPORT].report_list; | ||
36 | struct input_dev *dev = hidinput->input; | ||
37 | - int error; | ||
38 | + int i, error; | ||
39 | |||
40 | - if (list_empty(report_list)) { | ||
41 | - hid_err(hid, "no output report found\n"); | ||
42 | - return -ENODEV; | ||
43 | - } | ||
44 | - | ||
45 | - report = list_entry(report_list->next, struct hid_report, list); | ||
46 | - | ||
47 | - if (report->maxfield < 4) { | ||
48 | - hid_err(hid, "not enough fields in report\n"); | ||
49 | - return -ENODEV; | ||
50 | + for (i = 0; i < 4; i++) { | ||
51 | + report = hid_validate_values(hid, HID_OUTPUT_REPORT, 0, i, 1); | ||
52 | + if (!report) | ||
53 | + return -ENODEV; | ||
54 | } | ||
55 | |||
56 | zpff = kzalloc(sizeof(struct zpff_device), GFP_KERNEL); | ||
57 | -- | ||
58 | 1.7.9.5 | ||
59 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0004-HID-sony-validate-HID-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0004-HID-sony-validate-HID-output-report-details.patch new file mode 100644 index 0000000..3a4e843 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0004-HID-sony-validate-HID-output-report-details.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 9446edb9a1740989cf6c20daf7510fb9a23be14a Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:52 +0200 | ||
4 | Subject: [PATCH] HID: sony: validate HID output report details | ||
5 | |||
6 | This driver must validate the availability of the HID output report and | ||
7 | its size before it can write LED states via buzz_set_leds(). This stops | ||
8 | a heap overflow that is possible if a device provides a malicious HID | ||
9 | output report: | ||
10 | |||
11 | [ 108.171280] usb 1-1: New USB device found, idVendor=054c, idProduct=0002 | ||
12 | ... | ||
13 | [ 117.507877] BUG kmalloc-192 (Not tainted): Redzone overwritten | ||
14 | |||
15 | CVE-2013-2890 | ||
16 | |||
17 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
18 | Cc: stable@vger.kernel.org #3.11 | ||
19 | Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
20 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
21 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
22 | --- | ||
23 | drivers/hid/hid-sony.c | 4 ++++ | ||
24 | 1 file changed, 4 insertions(+) | ||
25 | |||
26 | diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c | ||
27 | index 30dbb6b..b18320d 100644 | ||
28 | --- a/drivers/hid/hid-sony.c | ||
29 | +++ b/drivers/hid/hid-sony.c | ||
30 | @@ -537,6 +537,10 @@ static int buzz_init(struct hid_device *hdev) | ||
31 | drv_data = hid_get_drvdata(hdev); | ||
32 | BUG_ON(!(drv_data->quirks & BUZZ_CONTROLLER)); | ||
33 | |||
34 | + /* Validate expected report characteristics. */ | ||
35 | + if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 0, 0, 7)) | ||
36 | + return -ENODEV; | ||
37 | + | ||
38 | buzz = kzalloc(sizeof(*buzz), GFP_KERNEL); | ||
39 | if (!buzz) { | ||
40 | hid_err(hdev, "Insufficient memory, cannot allocate driver data\n"); | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch new file mode 100644 index 0000000..e4eadff --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch | |||
@@ -0,0 +1,43 @@ | |||
1 | From 41df7f6d43723deb7364340b44bc5d94bf717456 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:53 +0200 | ||
4 | Subject: [PATCH] HID: steelseries: validate output report details | ||
5 | |||
6 | A HID device could send a malicious output report that would cause the | ||
7 | steelseries HID driver to write beyond the output report allocation | ||
8 | during initialization, causing a heap overflow: | ||
9 | |||
10 | [ 167.981534] usb 1-1: New USB device found, idVendor=1038, idProduct=1410 | ||
11 | ... | ||
12 | [ 182.050547] BUG kmalloc-256 (Tainted: G W ): Redzone overwritten | ||
13 | |||
14 | CVE-2013-2891 | ||
15 | |||
16 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
17 | Cc: stable@vger.kernel.org | ||
18 | Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
19 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
20 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
21 | --- | ||
22 | drivers/hid/hid-steelseries.c | 5 +++++ | ||
23 | 1 file changed, 5 insertions(+) | ||
24 | |||
25 | diff --git a/drivers/hid/hid-steelseries.c b/drivers/hid/hid-steelseries.c | ||
26 | index d164911..29f328f 100644 | ||
27 | --- a/drivers/hid/hid-steelseries.c | ||
28 | +++ b/drivers/hid/hid-steelseries.c | ||
29 | @@ -249,6 +249,11 @@ static int steelseries_srws1_probe(struct hid_device *hdev, | ||
30 | goto err_free; | ||
31 | } | ||
32 | |||
33 | + if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 0, 0, 16)) { | ||
34 | + ret = -ENODEV; | ||
35 | + goto err_free; | ||
36 | + } | ||
37 | + | ||
38 | ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); | ||
39 | if (ret) { | ||
40 | hid_err(hdev, "hw start failed\n"); | ||
41 | -- | ||
42 | 1.7.9.5 | ||
43 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch new file mode 100644 index 0000000..15cf09b --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 412f30105ec6735224535791eed5cdc02888ecb4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:30:49 +0200 | ||
4 | Subject: [PATCH] HID: pantherlord: validate output report details | ||
5 | |||
6 | A HID device could send a malicious output report that would cause the | ||
7 | pantherlord HID driver to write beyond the output report allocation | ||
8 | during initialization, causing a heap overflow: | ||
9 | |||
10 | [ 310.939483] usb 1-1: New USB device found, idVendor=0e8f, idProduct=0003 | ||
11 | ... | ||
12 | [ 315.980774] BUG kmalloc-192 (Tainted: G W ): Redzone overwritten | ||
13 | |||
14 | CVE-2013-2892 | ||
15 | |||
16 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
17 | Cc: stable@kernel.org | ||
18 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
19 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
20 | --- | ||
21 | drivers/hid/hid-pl.c | 10 ++++++++-- | ||
22 | 1 file changed, 8 insertions(+), 2 deletions(-) | ||
23 | |||
24 | diff --git a/drivers/hid/hid-pl.c b/drivers/hid/hid-pl.c | ||
25 | index d29112f..2dcd7d9 100644 | ||
26 | --- a/drivers/hid/hid-pl.c | ||
27 | +++ b/drivers/hid/hid-pl.c | ||
28 | @@ -132,8 +132,14 @@ static int plff_init(struct hid_device *hid) | ||
29 | strong = &report->field[0]->value[2]; | ||
30 | weak = &report->field[0]->value[3]; | ||
31 | debug("detected single-field device"); | ||
32 | - } else if (report->maxfield >= 4 && report->field[0]->maxusage == 1 && | ||
33 | - report->field[0]->usage[0].hid == (HID_UP_LED | 0x43)) { | ||
34 | + } else if (report->field[0]->maxusage == 1 && | ||
35 | + report->field[0]->usage[0].hid == | ||
36 | + (HID_UP_LED | 0x43) && | ||
37 | + report->maxfield >= 4 && | ||
38 | + report->field[0]->report_count >= 1 && | ||
39 | + report->field[1]->report_count >= 1 && | ||
40 | + report->field[2]->report_count >= 1 && | ||
41 | + report->field[3]->report_count >= 1) { | ||
42 | report->field[0]->value[0] = 0x00; | ||
43 | report->field[1]->value[0] = 0x00; | ||
44 | strong = &report->field[2]->value[0]; | ||
45 | -- | ||
46 | 1.7.9.5 | ||
47 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch new file mode 100644 index 0000000..9376c42 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch | |||
@@ -0,0 +1,195 @@ | |||
1 | From 0fb6bd06e06792469acc15bbe427361b56ada528 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:54 +0200 | ||
4 | Subject: [PATCH] HID: LG: validate HID output report details | ||
5 | |||
6 | A HID device could send a malicious output report that would cause the | ||
7 | lg, lg3, and lg4 HID drivers to write beyond the output report allocation | ||
8 | during an event, causing a heap overflow: | ||
9 | |||
10 | [ 325.245240] usb 1-1: New USB device found, idVendor=046d, idProduct=c287 | ||
11 | ... | ||
12 | [ 414.518960] BUG kmalloc-4096 (Not tainted): Redzone overwritten | ||
13 | |||
14 | Additionally, while lg2 did correctly validate the report details, it was | ||
15 | cleaned up and shortened. | ||
16 | |||
17 | CVE-2013-2893 | ||
18 | |||
19 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
20 | Cc: stable@vger.kernel.org | ||
21 | Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
22 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
23 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
24 | --- | ||
25 | drivers/hid/hid-lg2ff.c | 19 +++---------------- | ||
26 | drivers/hid/hid-lg3ff.c | 29 ++++++----------------------- | ||
27 | drivers/hid/hid-lg4ff.c | 20 +------------------- | ||
28 | drivers/hid/hid-lgff.c | 17 ++--------------- | ||
29 | 4 files changed, 12 insertions(+), 73 deletions(-) | ||
30 | |||
31 | diff --git a/drivers/hid/hid-lg2ff.c b/drivers/hid/hid-lg2ff.c | ||
32 | index b3cd150..1a42eaa 100644 | ||
33 | --- a/drivers/hid/hid-lg2ff.c | ||
34 | +++ b/drivers/hid/hid-lg2ff.c | ||
35 | @@ -64,26 +64,13 @@ int lg2ff_init(struct hid_device *hid) | ||
36 | struct hid_report *report; | ||
37 | struct hid_input *hidinput = list_entry(hid->inputs.next, | ||
38 | struct hid_input, list); | ||
39 | - struct list_head *report_list = | ||
40 | - &hid->report_enum[HID_OUTPUT_REPORT].report_list; | ||
41 | struct input_dev *dev = hidinput->input; | ||
42 | int error; | ||
43 | |||
44 | - if (list_empty(report_list)) { | ||
45 | - hid_err(hid, "no output report found\n"); | ||
46 | + /* Check that the report looks ok */ | ||
47 | + report = hid_validate_values(hid, HID_OUTPUT_REPORT, 0, 0, 7); | ||
48 | + if (!report) | ||
49 | return -ENODEV; | ||
50 | - } | ||
51 | - | ||
52 | - report = list_entry(report_list->next, struct hid_report, list); | ||
53 | - | ||
54 | - if (report->maxfield < 1) { | ||
55 | - hid_err(hid, "output report is empty\n"); | ||
56 | - return -ENODEV; | ||
57 | - } | ||
58 | - if (report->field[0]->report_count < 7) { | ||
59 | - hid_err(hid, "not enough values in the field\n"); | ||
60 | - return -ENODEV; | ||
61 | - } | ||
62 | |||
63 | lg2ff = kmalloc(sizeof(struct lg2ff_device), GFP_KERNEL); | ||
64 | if (!lg2ff) | ||
65 | diff --git a/drivers/hid/hid-lg3ff.c b/drivers/hid/hid-lg3ff.c | ||
66 | index e52f181..8c2da18 100644 | ||
67 | --- a/drivers/hid/hid-lg3ff.c | ||
68 | +++ b/drivers/hid/hid-lg3ff.c | ||
69 | @@ -66,10 +66,11 @@ static int hid_lg3ff_play(struct input_dev *dev, void *data, | ||
70 | int x, y; | ||
71 | |||
72 | /* | ||
73 | - * Maxusage should always be 63 (maximum fields) | ||
74 | - * likely a better way to ensure this data is clean | ||
75 | + * Available values in the field should always be 63, but we only use up to | ||
76 | + * 35. Instead, clear the entire area, however big it is. | ||
77 | */ | ||
78 | - memset(report->field[0]->value, 0, sizeof(__s32)*report->field[0]->maxusage); | ||
79 | + memset(report->field[0]->value, 0, | ||
80 | + sizeof(__s32) * report->field[0]->report_count); | ||
81 | |||
82 | switch (effect->type) { | ||
83 | case FF_CONSTANT: | ||
84 | @@ -129,32 +130,14 @@ static const signed short ff3_joystick_ac[] = { | ||
85 | int lg3ff_init(struct hid_device *hid) | ||
86 | { | ||
87 | struct hid_input *hidinput = list_entry(hid->inputs.next, struct hid_input, list); | ||
88 | - struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list; | ||
89 | struct input_dev *dev = hidinput->input; | ||
90 | - struct hid_report *report; | ||
91 | - struct hid_field *field; | ||
92 | const signed short *ff_bits = ff3_joystick_ac; | ||
93 | int error; | ||
94 | int i; | ||
95 | |||
96 | - /* Find the report to use */ | ||
97 | - if (list_empty(report_list)) { | ||
98 | - hid_err(hid, "No output report found\n"); | ||
99 | - return -1; | ||
100 | - } | ||
101 | - | ||
102 | /* Check that the report looks ok */ | ||
103 | - report = list_entry(report_list->next, struct hid_report, list); | ||
104 | - if (!report) { | ||
105 | - hid_err(hid, "NULL output report\n"); | ||
106 | - return -1; | ||
107 | - } | ||
108 | - | ||
109 | - field = report->field[0]; | ||
110 | - if (!field) { | ||
111 | - hid_err(hid, "NULL field\n"); | ||
112 | - return -1; | ||
113 | - } | ||
114 | + if (!hid_validate_values(hid, HID_OUTPUT_REPORT, 0, 0, 35)) | ||
115 | + return -ENODEV; | ||
116 | |||
117 | /* Assume single fixed device G940 */ | ||
118 | for (i = 0; ff_bits[i] >= 0; i++) | ||
119 | diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c | ||
120 | index 0ddae2a..8782fe1 100644 | ||
121 | --- a/drivers/hid/hid-lg4ff.c | ||
122 | +++ b/drivers/hid/hid-lg4ff.c | ||
123 | @@ -484,34 +484,16 @@ static enum led_brightness lg4ff_led_get_brightness(struct led_classdev *led_cde | ||
124 | int lg4ff_init(struct hid_device *hid) | ||
125 | { | ||
126 | struct hid_input *hidinput = list_entry(hid->inputs.next, struct hid_input, list); | ||
127 | - struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list; | ||
128 | struct input_dev *dev = hidinput->input; | ||
129 | - struct hid_report *report; | ||
130 | - struct hid_field *field; | ||
131 | struct lg4ff_device_entry *entry; | ||
132 | struct lg_drv_data *drv_data; | ||
133 | struct usb_device_descriptor *udesc; | ||
134 | int error, i, j; | ||
135 | __u16 bcdDevice, rev_maj, rev_min; | ||
136 | |||
137 | - /* Find the report to use */ | ||
138 | - if (list_empty(report_list)) { | ||
139 | - hid_err(hid, "No output report found\n"); | ||
140 | - return -1; | ||
141 | - } | ||
142 | - | ||
143 | /* Check that the report looks ok */ | ||
144 | - report = list_entry(report_list->next, struct hid_report, list); | ||
145 | - if (!report) { | ||
146 | - hid_err(hid, "NULL output report\n"); | ||
147 | + if (!hid_validate_values(hid, HID_OUTPUT_REPORT, 0, 0, 7)) | ||
148 | return -1; | ||
149 | - } | ||
150 | - | ||
151 | - field = report->field[0]; | ||
152 | - if (!field) { | ||
153 | - hid_err(hid, "NULL field\n"); | ||
154 | - return -1; | ||
155 | - } | ||
156 | |||
157 | /* Check what wheel has been connected */ | ||
158 | for (i = 0; i < ARRAY_SIZE(lg4ff_devices); i++) { | ||
159 | diff --git a/drivers/hid/hid-lgff.c b/drivers/hid/hid-lgff.c | ||
160 | index d7ea8c8..e1394af 100644 | ||
161 | --- a/drivers/hid/hid-lgff.c | ||
162 | +++ b/drivers/hid/hid-lgff.c | ||
163 | @@ -128,27 +128,14 @@ static void hid_lgff_set_autocenter(struct input_dev *dev, u16 magnitude) | ||
164 | int lgff_init(struct hid_device* hid) | ||
165 | { | ||
166 | struct hid_input *hidinput = list_entry(hid->inputs.next, struct hid_input, list); | ||
167 | - struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list; | ||
168 | struct input_dev *dev = hidinput->input; | ||
169 | - struct hid_report *report; | ||
170 | - struct hid_field *field; | ||
171 | const signed short *ff_bits = ff_joystick; | ||
172 | int error; | ||
173 | int i; | ||
174 | |||
175 | - /* Find the report to use */ | ||
176 | - if (list_empty(report_list)) { | ||
177 | - hid_err(hid, "No output report found\n"); | ||
178 | - return -1; | ||
179 | - } | ||
180 | - | ||
181 | /* Check that the report looks ok */ | ||
182 | - report = list_entry(report_list->next, struct hid_report, list); | ||
183 | - field = report->field[0]; | ||
184 | - if (!field) { | ||
185 | - hid_err(hid, "NULL field\n"); | ||
186 | - return -1; | ||
187 | - } | ||
188 | + if (!hid_validate_values(hid, HID_OUTPUT_REPORT, 0, 0, 7)) | ||
189 | + return -ENODEV; | ||
190 | |||
191 | for (i = 0; i < ARRAY_SIZE(devices); i++) { | ||
192 | if (dev->id.vendor == devices[i].idVendor && | ||
193 | -- | ||
194 | 1.7.9.5 | ||
195 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch new file mode 100644 index 0000000..1c53d77 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 0a9cd0a80ac559357c6a90d26c55270ed752aa26 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:55 +0200 | ||
4 | Subject: [PATCH] HID: lenovo-tpkbd: validate output report details | ||
5 | |||
6 | A HID device could send a malicious output report that would cause the | ||
7 | lenovo-tpkbd HID driver to write just beyond the output report allocation | ||
8 | during initialization, causing a heap overflow: | ||
9 | |||
10 | [ 76.109807] usb 1-1: New USB device found, idVendor=17ef, idProduct=6009 | ||
11 | ... | ||
12 | [ 80.462540] BUG kmalloc-192 (Tainted: G W ): Redzone overwritten | ||
13 | |||
14 | CVE-2013-2894 | ||
15 | |||
16 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
17 | Cc: stable@vger.kernel.org | ||
18 | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
19 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
20 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
21 | --- | ||
22 | drivers/hid/hid-lenovo-tpkbd.c | 10 +++++++++- | ||
23 | 1 file changed, 9 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/drivers/hid/hid-lenovo-tpkbd.c b/drivers/hid/hid-lenovo-tpkbd.c | ||
26 | index 07837f5..762d988 100644 | ||
27 | --- a/drivers/hid/hid-lenovo-tpkbd.c | ||
28 | +++ b/drivers/hid/hid-lenovo-tpkbd.c | ||
29 | @@ -339,7 +339,15 @@ static int tpkbd_probe_tp(struct hid_device *hdev) | ||
30 | struct tpkbd_data_pointer *data_pointer; | ||
31 | size_t name_sz = strlen(dev_name(dev)) + 16; | ||
32 | char *name_mute, *name_micmute; | ||
33 | - int ret; | ||
34 | + int i, ret; | ||
35 | + | ||
36 | + /* Validate required reports. */ | ||
37 | + for (i = 0; i < 4; i++) { | ||
38 | + if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1)) | ||
39 | + return -ENODEV; | ||
40 | + } | ||
41 | + if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2)) | ||
42 | + return -ENODEV; | ||
43 | |||
44 | if (sysfs_create_group(&hdev->dev.kobj, | ||
45 | &tpkbd_attr_group_pointer)) { | ||
46 | -- | ||
47 | 1.7.9.5 | ||
48 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch new file mode 100644 index 0000000..a249c54 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch | |||
@@ -0,0 +1,63 @@ | |||
1 | From 297502abb32e225fb23801fcdb0e4f6f8e17099a Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 11 Sep 2013 21:56:56 +0200 | ||
4 | Subject: [PATCH] HID: logitech-dj: validate output report details | ||
5 | |||
6 | A HID device could send a malicious output report that would cause the | ||
7 | logitech-dj HID driver to leak kernel memory contents to the device, or | ||
8 | trigger a NULL dereference during initialization: | ||
9 | |||
10 | [ 304.424553] usb 1-1: New USB device found, idVendor=046d, idProduct=c52b | ||
11 | ... | ||
12 | [ 304.780467] BUG: unable to handle kernel NULL pointer dereference at 0000000000000028 | ||
13 | [ 304.781409] IP: [<ffffffff815d50aa>] logi_dj_recv_send_report.isra.11+0x1a/0x90 | ||
14 | |||
15 | CVE-2013-2895 | ||
16 | |||
17 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
18 | Cc: stable@vger.kernel.org | ||
19 | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> | ||
20 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
21 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
22 | --- | ||
23 | drivers/hid/hid-logitech-dj.c | 10 ++++++++-- | ||
24 | 1 file changed, 8 insertions(+), 2 deletions(-) | ||
25 | |||
26 | diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c | ||
27 | index 7800b14..2e53024 100644 | ||
28 | --- a/drivers/hid/hid-logitech-dj.c | ||
29 | +++ b/drivers/hid/hid-logitech-dj.c | ||
30 | @@ -461,7 +461,7 @@ static int logi_dj_recv_send_report(struct dj_receiver_dev *djrcv_dev, | ||
31 | struct hid_report *report; | ||
32 | struct hid_report_enum *output_report_enum; | ||
33 | u8 *data = (u8 *)(&dj_report->device_index); | ||
34 | - int i; | ||
35 | + unsigned int i; | ||
36 | |||
37 | output_report_enum = &hdev->report_enum[HID_OUTPUT_REPORT]; | ||
38 | report = output_report_enum->report_id_hash[REPORT_ID_DJ_SHORT]; | ||
39 | @@ -471,7 +471,7 @@ static int logi_dj_recv_send_report(struct dj_receiver_dev *djrcv_dev, | ||
40 | return -ENODEV; | ||
41 | } | ||
42 | |||
43 | - for (i = 0; i < report->field[0]->report_count; i++) | ||
44 | + for (i = 0; i < DJREPORT_SHORT_LENGTH - 1; i++) | ||
45 | report->field[0]->value[i] = data[i]; | ||
46 | |||
47 | hid_hw_request(hdev, report, HID_REQ_SET_REPORT); | ||
48 | @@ -791,6 +791,12 @@ static int logi_dj_probe(struct hid_device *hdev, | ||
49 | goto hid_parse_fail; | ||
50 | } | ||
51 | |||
52 | + if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, REPORT_ID_DJ_SHORT, | ||
53 | + 0, DJREPORT_SHORT_LENGTH - 1)) { | ||
54 | + retval = -ENODEV; | ||
55 | + goto hid_parse_fail; | ||
56 | + } | ||
57 | + | ||
58 | /* Starts the usb device and connects to upper interfaces hiddev and | ||
59 | * hidraw */ | ||
60 | retval = hid_hw_start(hdev, HID_CONNECT_DEFAULT); | ||
61 | -- | ||
62 | 1.7.9.5 | ||
63 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch new file mode 100644 index 0000000..b243fc6 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 875b4e3763dbc941f15143dd1a18d10bb0be303b Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:31:28 +0200 | ||
4 | Subject: [PATCH] HID: ntrig: validate feature report details | ||
5 | |||
6 | A HID device could send a malicious feature report that would cause the | ||
7 | ntrig HID driver to trigger a NULL dereference during initialization: | ||
8 | |||
9 | [57383.031190] usb 3-1: New USB device found, idVendor=1b96, idProduct=0001 | ||
10 | ... | ||
11 | [57383.315193] BUG: unable to handle kernel NULL pointer dereference at 0000000000000030 | ||
12 | [57383.315308] IP: [<ffffffffa08102de>] ntrig_probe+0x25e/0x420 [hid_ntrig] | ||
13 | |||
14 | CVE-2013-2896 | ||
15 | |||
16 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
17 | Cc: stable@kernel.org | ||
18 | Signed-off-by: Rafi Rubin <rafi@seas.upenn.edu> | ||
19 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
20 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
21 | --- | ||
22 | drivers/hid/hid-ntrig.c | 3 ++- | ||
23 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/drivers/hid/hid-ntrig.c b/drivers/hid/hid-ntrig.c | ||
26 | index 98d1fdf..600f207 100644 | ||
27 | --- a/drivers/hid/hid-ntrig.c | ||
28 | +++ b/drivers/hid/hid-ntrig.c | ||
29 | @@ -115,7 +115,8 @@ static inline int ntrig_get_mode(struct hid_device *hdev) | ||
30 | struct hid_report *report = hdev->report_enum[HID_FEATURE_REPORT]. | ||
31 | report_id_hash[0x0d]; | ||
32 | |||
33 | - if (!report) | ||
34 | + if (!report || report->maxfield < 1 || | ||
35 | + report->field[0]->report_count < 1) | ||
36 | return -EINVAL; | ||
37 | |||
38 | hid_hw_request(hdev, report, HID_REQ_GET_REPORT); | ||
39 | -- | ||
40 | 1.7.9.5 | ||
41 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0011-HID-multitouch-validate-indexes-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0011-HID-multitouch-validate-indexes-details.patch new file mode 100644 index 0000000..ff425ec --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0011-HID-multitouch-validate-indexes-details.patch | |||
@@ -0,0 +1,86 @@ | |||
1 | From 8821f5dc187bdf16cfb32ef5aa8c3035273fa79a Mon Sep 17 00:00:00 2001 | ||
2 | From: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
3 | Date: Wed, 11 Sep 2013 21:56:58 +0200 | ||
4 | Subject: [PATCH] HID: multitouch: validate indexes details | ||
5 | |||
6 | When working on report indexes, always validate that they are in bounds. | ||
7 | Without this, a HID device could report a malicious feature report that | ||
8 | could trick the driver into a heap overflow: | ||
9 | |||
10 | [ 634.885003] usb 1-1: New USB device found, idVendor=0596, idProduct=0500 | ||
11 | ... | ||
12 | [ 676.469629] BUG kmalloc-192 (Tainted: G W ): Redzone overwritten | ||
13 | |||
14 | Note that we need to change the indexes from s8 to s16 as they can | ||
15 | be between -1 and 255. | ||
16 | |||
17 | CVE-2013-2897 | ||
18 | |||
19 | Cc: stable@vger.kernel.org | ||
20 | Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> | ||
21 | Acked-by: Kees Cook <keescook@chromium.org> | ||
22 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
23 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
24 | --- | ||
25 | drivers/hid/hid-multitouch.c | 26 ++++++++++++++------------ | ||
26 | 1 file changed, 14 insertions(+), 12 deletions(-) | ||
27 | |||
28 | diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c | ||
29 | index ac28f08..5e5fe1b 100644 | ||
30 | --- a/drivers/hid/hid-multitouch.c | ||
31 | +++ b/drivers/hid/hid-multitouch.c | ||
32 | @@ -101,9 +101,9 @@ struct mt_device { | ||
33 | unsigned last_slot_field; /* the last field of a slot */ | ||
34 | unsigned mt_report_id; /* the report ID of the multitouch device */ | ||
35 | unsigned pen_report_id; /* the report ID of the pen device */ | ||
36 | - __s8 inputmode; /* InputMode HID feature, -1 if non-existent */ | ||
37 | - __s8 inputmode_index; /* InputMode HID feature index in the report */ | ||
38 | - __s8 maxcontact_report_id; /* Maximum Contact Number HID feature, | ||
39 | + __s16 inputmode; /* InputMode HID feature, -1 if non-existent */ | ||
40 | + __s16 inputmode_index; /* InputMode HID feature index in the report */ | ||
41 | + __s16 maxcontact_report_id; /* Maximum Contact Number HID feature, | ||
42 | -1 if non-existent */ | ||
43 | __u8 num_received; /* how many contacts we received */ | ||
44 | __u8 num_expected; /* expected last contact index */ | ||
45 | @@ -312,20 +312,18 @@ static void mt_feature_mapping(struct hid_device *hdev, | ||
46 | struct hid_field *field, struct hid_usage *usage) | ||
47 | { | ||
48 | struct mt_device *td = hid_get_drvdata(hdev); | ||
49 | - int i; | ||
50 | |||
51 | switch (usage->hid) { | ||
52 | case HID_DG_INPUTMODE: | ||
53 | - td->inputmode = field->report->id; | ||
54 | - td->inputmode_index = 0; /* has to be updated below */ | ||
55 | - | ||
56 | - for (i=0; i < field->maxusage; i++) { | ||
57 | - if (field->usage[i].hid == usage->hid) { | ||
58 | - td->inputmode_index = i; | ||
59 | - break; | ||
60 | - } | ||
61 | + /* Ignore if value index is out of bounds. */ | ||
62 | + if (usage->usage_index >= field->report_count) { | ||
63 | + dev_err(&hdev->dev, "HID_DG_INPUTMODE out of range\n"); | ||
64 | + break; | ||
65 | } | ||
66 | |||
67 | + td->inputmode = field->report->id; | ||
68 | + td->inputmode_index = usage->usage_index; | ||
69 | + | ||
70 | break; | ||
71 | case HID_DG_CONTACTMAX: | ||
72 | td->maxcontact_report_id = field->report->id; | ||
73 | @@ -511,6 +509,10 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi, | ||
74 | mt_store_field(usage, td, hi); | ||
75 | return 1; | ||
76 | case HID_DG_CONTACTCOUNT: | ||
77 | + /* Ignore if indexes are out of bounds. */ | ||
78 | + if (field->index >= field->report->maxfield || | ||
79 | + usage->usage_index >= field->report_count) | ||
80 | + return 1; | ||
81 | td->cc_index = field->index; | ||
82 | td->cc_value_index = usage->usage_index; | ||
83 | return 1; | ||
84 | -- | ||
85 | 1.7.9.5 | ||
86 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch new file mode 100644 index 0000000..745fa9e --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 9e8910257397372633e74b333ef891f20c800ee4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:31:44 +0200 | ||
4 | Subject: [PATCH] HID: sensor-hub: validate feature report details | ||
5 | |||
6 | A HID device could send a malicious feature report that would cause the | ||
7 | sensor-hub HID driver to read past the end of heap allocation, leaking | ||
8 | kernel memory contents to the caller. | ||
9 | |||
10 | CVE-2013-2898 | ||
11 | |||
12 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
13 | Cc: stable@kernel.org | ||
14 | Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> | ||
15 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
16 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
17 | --- | ||
18 | drivers/hid/hid-sensor-hub.c | 3 ++- | ||
19 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c | ||
22 | index ffc80cf..6fca30e 100644 | ||
23 | --- a/drivers/hid/hid-sensor-hub.c | ||
24 | +++ b/drivers/hid/hid-sensor-hub.c | ||
25 | @@ -221,7 +221,8 @@ int sensor_hub_get_feature(struct hid_sensor_hub_device *hsdev, u32 report_id, | ||
26 | |||
27 | mutex_lock(&data->mutex); | ||
28 | report = sensor_hub_report(report_id, hsdev->hdev, HID_FEATURE_REPORT); | ||
29 | - if (!report || (field_index >= report->maxfield)) { | ||
30 | + if (!report || (field_index >= report->maxfield) || | ||
31 | + report->field[field_index]->report_count < 1) { | ||
32 | ret = -EINVAL; | ||
33 | goto done_proc; | ||
34 | } | ||
35 | -- | ||
36 | 1.7.9.5 | ||
37 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch b/recipes-kernel/linux/files/HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch new file mode 100644 index 0000000..7abf193 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch | |||
@@ -0,0 +1,49 @@ | |||
1 | From 1e87a2456b0227ca4ab881e19a11bb99d164e792 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:31:52 +0200 | ||
4 | Subject: [PATCH] HID: picolcd_core: validate output report details | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | A HID device could send a malicious output report that would cause the | ||
10 | picolcd HID driver to trigger a NULL dereference during attr file writing. | ||
11 | |||
12 | [jkosina@suse.cz: changed | ||
13 | |||
14 | report->maxfield < 1 | ||
15 | |||
16 | to | ||
17 | |||
18 | report->maxfield != 1 | ||
19 | |||
20 | as suggested by Bruno]. | ||
21 | |||
22 | CVE-2013-2899 | ||
23 | |||
24 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
25 | Cc: stable@kernel.org | ||
26 | Reviewed-by: Bruno Prémont <bonbons@linux-vserver.org> | ||
27 | Acked-by: Bruno Prémont <bonbons@linux-vserver.org> | ||
28 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
29 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
30 | --- | ||
31 | drivers/hid/hid-picolcd_core.c | 2 +- | ||
32 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
33 | |||
34 | diff --git a/drivers/hid/hid-picolcd_core.c b/drivers/hid/hid-picolcd_core.c | ||
35 | index b48092d..acbb0210 100644 | ||
36 | --- a/drivers/hid/hid-picolcd_core.c | ||
37 | +++ b/drivers/hid/hid-picolcd_core.c | ||
38 | @@ -290,7 +290,7 @@ static ssize_t picolcd_operation_mode_store(struct device *dev, | ||
39 | buf += 10; | ||
40 | cnt -= 10; | ||
41 | } | ||
42 | - if (!report) | ||
43 | + if (!report || report->maxfield != 1) | ||
44 | return -EINVAL; | ||
45 | |||
46 | while (cnt > 0 && (buf[cnt-1] == '\n' || buf[cnt-1] == '\r')) | ||
47 | -- | ||
48 | 1.7.9.5 | ||
49 | |||
diff --git a/recipes-kernel/linux/files/HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch b/recipes-kernel/linux/files/HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch new file mode 100644 index 0000000..f75e653 --- /dev/null +++ b/recipes-kernel/linux/files/HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch | |||
@@ -0,0 +1,36 @@ | |||
1 | From be67b68d52fa28b9b721c47bb42068f0c1214855 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <keescook@chromium.org> | ||
3 | Date: Wed, 28 Aug 2013 22:32:01 +0200 | ||
4 | Subject: [PATCH] HID: check for NULL field when setting values | ||
5 | |||
6 | Defensively check that the field to be worked on is not NULL. | ||
7 | |||
8 | Signed-off-by: Kees Cook <keescook@chromium.org> | ||
9 | Cc: stable@kernel.org | ||
10 | Signed-off-by: Jiri Kosina <jkosina@suse.cz> | ||
11 | Signed-off-by: Adrian Dudau <adrian.dudau@enea.com> | ||
12 | --- | ||
13 | drivers/hid/hid-core.c | 7 ++++++- | ||
14 | 1 file changed, 6 insertions(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c | ||
17 | index ebf5781..dcd60eb 100644 | ||
18 | --- a/drivers/hid/hid-core.c | ||
19 | +++ b/drivers/hid/hid-core.c | ||
20 | @@ -1169,7 +1169,12 @@ EXPORT_SYMBOL_GPL(hid_alloc_report_buf); | ||
21 | |||
22 | int hid_set_field(struct hid_field *field, unsigned offset, __s32 value) | ||
23 | { | ||
24 | - unsigned size = field->report_size; | ||
25 | + unsigned size; | ||
26 | + | ||
27 | + if (!field) | ||
28 | + return -1; | ||
29 | + | ||
30 | + size = field->report_size; | ||
31 | |||
32 | hid_dump_input(field->report->device, field->usage + offset, value); | ||
33 | |||
34 | -- | ||
35 | 1.7.9.5 | ||
36 | |||
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/arm_arch_timer-Keystone-2-architected-timer-frequenc.patch b/recipes-kernel/linux/files/arm_arch_timer-Keystone-2-architected-timer-frequenc.patch new file mode 100644 index 0000000..49bf07b --- /dev/null +++ b/recipes-kernel/linux/files/arm_arch_timer-Keystone-2-architected-timer-frequenc.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From e2d575410329f42542972b7276fbb1c2c7f48334 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Sixten=20Sj=C3=B6str=C3=B6m=20Thames?= | ||
3 | <Sixten.Sjoestroem.Thames@enea.com> | ||
4 | Date: Mon, 12 May 2014 21:18:47 +0200 | ||
5 | Subject: [PATCH] arm_arch_timer: Keystone 2 architected timer frequency fix | ||
6 | MIME-Version: 1.0 | ||
7 | Content-Type: text/plain; charset=UTF-8 | ||
8 | Content-Transfer-Encoding: 8bit | ||
9 | |||
10 | The arch timer frequency register returns incorrect values on early | ||
11 | versions of the Keystone 2 evm silicon. The frequency register always | ||
12 | returns 1000 MHz on bad silicon. This temporary fix solves that. | ||
13 | |||
14 | Signed-off-by: Sixten Sjöström Thames <Sixten.Sjoestroem.Thames@enea.com> | ||
15 | --- | ||
16 | drivers/clocksource/arm_arch_timer.c | 16 ++++++++++++++++ | ||
17 | 1 file changed, 16 insertions(+) | ||
18 | |||
19 | diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c | ||
20 | index a2b2541..321aba1 100644 | ||
21 | --- a/drivers/clocksource/arm_arch_timer.c | ||
22 | +++ b/drivers/clocksource/arm_arch_timer.c | ||
23 | @@ -23,6 +23,8 @@ | ||
24 | |||
25 | #include <clocksource/arm_arch_timer.h> | ||
26 | |||
27 | +#define K2_PG1_AT_FREQ 133120000UL | ||
28 | + | ||
29 | static u32 arch_timer_rate; | ||
30 | |||
31 | enum ppi_nr { | ||
32 | @@ -165,6 +167,20 @@ static int arch_timer_available(void) | ||
33 | if (arch_timer_rate == 0) { | ||
34 | freq = arch_timer_get_cntfrq(); | ||
35 | |||
36 | + /* The Keystone 2 EVM PG1.0 silicon has a malfunctional | ||
37 | + * Architected timer. The timer frequency register allways | ||
38 | + * incorrectly returns 1000 MHz. This is a temorary fix for | ||
39 | + * internal Enea Linux testing so that the same kernel can | ||
40 | + * be used on targets with both PG1.0 and PG1.1 silicon. | ||
41 | + * Another solution is to have different DTBs with hard | ||
42 | + * coded frequencies.*/ | ||
43 | + if (freq == 1000000000) { | ||
44 | + pr_warn("Keystone 2 EVM specific arch timer fix\n"); | ||
45 | + pr_warn("Set architected timer frequency to %u\n", | ||
46 | + K2_PG1_AT_FREQ); | ||
47 | + freq = K2_PG1_AT_FREQ; | ||
48 | + } | ||
49 | + | ||
50 | /* Check the timer frequency. */ | ||
51 | if (freq == 0) { | ||
52 | pr_warn("Architected timer frequency not available\n"); | ||
53 | -- | ||
54 | 1.7.10.4 | ||
55 | |||
diff --git a/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch b/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch new file mode 100644 index 0000000..b8ef705 --- /dev/null +++ b/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch | |||
@@ -0,0 +1,24 @@ | |||
1 | linux-qoriq-sdk: Repair a kernel compile issue due to a sintax error. | ||
2 | |||
3 | The define __hard_irq_disable() was done using ";" character | ||
4 | into the comment so the if structure did not recognized the | ||
5 | "else" branch. | ||
6 | |||
7 | Upstream-Status: Pending | ||
8 | |||
9 | Signed-off-by: Alexandru Vaduva <alexandru.vaduva@enea.com> | ||
10 | |||
11 | diff -ruN a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c | ||
12 | --- a/arch/powerpc/kernel/irq.c 2014-01-30 12:56:20.470918180 +0100 | ||
13 | +++ b/arch/powerpc/kernel/irq.c 2014-01-30 12:57:25.228109187 +0100 | ||
14 | @@ -227,8 +227,9 @@ | ||
15 | * common cases that we'll ignore for now), so we skip the | ||
16 | * (expensive) mtmsrd. | ||
17 | */ | ||
18 | - if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) | ||
19 | + if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) { | ||
20 | __hard_irq_disable(); | ||
21 | + } | ||
22 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
23 | else { | ||
24 | /* | ||
diff --git a/recipes-kernel/linux/files/cfg/00001-embedded.cfg b/recipes-kernel/linux/files/cfg/00001-embedded.cfg new file mode 100644 index 0000000..2f0e6bf --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00001-embedded.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_EMBEDDED=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00002-root_nfs.cfg b/recipes-kernel/linux/files/cfg/00002-root_nfs.cfg new file mode 100644 index 0000000..f8d8748 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00002-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/00003-fuse.cfg b/recipes-kernel/linux/files/cfg/00003-fuse.cfg new file mode 100644 index 0000000..43e95f2 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00003-fuse.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_FUSE_FS=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00004-systemtap.cfg b/recipes-kernel/linux/files/cfg/00004-systemtap.cfg new file mode 100644 index 0000000..88c278c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00004-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/00005-pramfs.cfg b/recipes-kernel/linux/files/cfg/00005-pramfs.cfg new file mode 100644 index 0000000..21aabc1 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00005-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/00006-with_modules.cfg b/recipes-kernel/linux/files/cfg/00006-with_modules.cfg new file mode 100644 index 0000000..f4b3ae2 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00006-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/cfg/00007-oprofile.cfg b/recipes-kernel/linux/files/cfg/00007-oprofile.cfg new file mode 100644 index 0000000..959e94b --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00007-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/00008-uio_m.cfg b/recipes-kernel/linux/files/cfg/00008-uio_m.cfg new file mode 100644 index 0000000..d82eee4 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00008-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/00009-e500mc_debug.cfg b/recipes-kernel/linux/files/cfg/00009-e500mc_debug.cfg new file mode 100644 index 0000000..eaddbaf --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00009-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/00010-pramfs-bsc913x.cfg b/recipes-kernel/linux/files/cfg/00010-pramfs-bsc913x.cfg new file mode 100644 index 0000000..1476224 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00010-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/00012-preempt.cfg b/recipes-kernel/linux/files/cfg/00012-preempt.cfg new file mode 100644 index 0000000..43fd0bd --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00012-preempt.cfg | |||
@@ -0,0 +1,9 @@ | |||
1 | CONFIG_GENERIC_LOCKBREAK=y | ||
2 | CONFIG_TREE_PREEMPT_RCU=y | ||
3 | CONFIG_PREEMPT_RCU=y | ||
4 | CONFIG_UNINLINE_SPIN_UNLOCK=y | ||
5 | CONFIG_PREEMPT=y | ||
6 | CONFIG_PREEMPT__LL=y | ||
7 | CONFIG_PREEMPT_COUNT=y | ||
8 | CONFIG_DEBUG_PREEMPT=y | ||
9 | CONFIG_RCU_CPU_STALL_VERBOSE=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00013-localversion.cfg b/recipes-kernel/linux/files/cfg/00013-localversion.cfg new file mode 100644 index 0000000..71481b4 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00013-localversion.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_LOCALVERSION_AUTO=n | ||
2 | CONFIG_DEFAULT_HOSTNAME="(none)" | ||
diff --git a/recipes-kernel/linux/files/cfg/00014-kgdb.cfg b/recipes-kernel/linux/files/cfg/00014-kgdb.cfg new file mode 100644 index 0000000..f23cfe3 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00014-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/00015-uio.cfg b/recipes-kernel/linux/files/cfg/00015-uio.cfg new file mode 100644 index 0000000..b26593e --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00015-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/00016-largefilessupport.cfg b/recipes-kernel/linux/files/cfg/00016-largefilessupport.cfg new file mode 100644 index 0000000..b3fae70 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00016-largefilessupport.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_LBDAF=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00017-preempt_keystone.cfg b/recipes-kernel/linux/files/cfg/00017-preempt_keystone.cfg new file mode 100644 index 0000000..89aea43 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00017-preempt_keystone.cfg | |||
@@ -0,0 +1,7 @@ | |||
1 | CONFIG_TREE_PREEMPT_RCU=y | ||
2 | CONFIG_PREEMPT_RCU=y | ||
3 | CONFIG_UNINLINE_SPIN_UNLOCK=y | ||
4 | CONFIG_PREEMPT=y | ||
5 | CONFIG_PREEMPT_COUNT=y | ||
6 | CONFIG_DEBUG_PREEMPT=y | ||
7 | CONFIG_RCU_CPU_STALL_VERBOSE=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00018-rt.cfg b/recipes-kernel/linux/files/cfg/00018-rt.cfg new file mode 100644 index 0000000..a15c930 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00018-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/00019-i2c.cfg b/recipes-kernel/linux/files/cfg/00019-i2c.cfg new file mode 100644 index 0000000..8dbcc3c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00019-i2c.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_I2C_CHARDEV=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00020-debug.cfg b/recipes-kernel/linux/files/cfg/00020-debug.cfg new file mode 100644 index 0000000..e4b87d5 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00020-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/00021-bootlogd.cfg b/recipes-kernel/linux/files/cfg/00021-bootlogd.cfg new file mode 100644 index 0000000..0d83d11 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00021-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/00022-mtd_tests.cfg b/recipes-kernel/linux/files/cfg/00022-mtd_tests.cfg new file mode 100644 index 0000000..1477bd7 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00022-mtd_tests.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_MTD_TESTS=m | |||
diff --git a/recipes-kernel/linux/files/cfg/00023-ikconfig.cfg b/recipes-kernel/linux/files/cfg/00023-ikconfig.cfg new file mode 100644 index 0000000..9e7666c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00023-ikconfig.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_IKCONFIG=y | ||
2 | CONFIG_IKCONFIG_PROC=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00024-preempt_romley-ivb.cfg b/recipes-kernel/linux/files/cfg/00024-preempt_romley-ivb.cfg new file mode 100644 index 0000000..c9b47ac --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00024-preempt_romley-ivb.cfg | |||
@@ -0,0 +1,8 @@ | |||
1 | CONFIG_TREE_PREEMPT_RCU=y | ||
2 | CONFIG_PREEMPT_RCU=y | ||
3 | CONFIG_RCU_STALL_COMMON=y | ||
4 | CONFIG_UNINLINE_SPIN_UNLOCK=y | ||
5 | CONFIG_PREEMPT=y | ||
6 | CONFIG_PREEMPT_COUNT=y | ||
7 | CONFIG_DEBUG_PREEMPT=y | ||
8 | CONFIG_RCU_CPU_STALL_VERBOSE=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00025-powertop.cfg b/recipes-kernel/linux/files/cfg/00025-powertop.cfg new file mode 100644 index 0000000..655c101 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00025-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/00026-ltp.cfg b/recipes-kernel/linux/files/cfg/00026-ltp.cfg new file mode 100644 index 0000000..e36a9c2 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00026-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/00027-lttng.cfg b/recipes-kernel/linux/files/cfg/00027-lttng.cfg new file mode 100644 index 0000000..1334194 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00027-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/00028-perf.cfg b/recipes-kernel/linux/files/cfg/00028-perf.cfg new file mode 100644 index 0000000..5fddec0 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00028-perf.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_CGROUP_PERF=y | ||
2 | CONFIG_PERF_EVENTS=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00029-devtmpfs.cfg b/recipes-kernel/linux/files/cfg/00029-devtmpfs.cfg new file mode 100644 index 0000000..5e9cf98 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00029-devtmpfs.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_DEVTMPFS=y | ||
2 | CONFIG_DEVTMPFS_MOUNT=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00030-latencytop.cfg b/recipes-kernel/linux/files/cfg/00030-latencytop.cfg new file mode 100644 index 0000000..0a42694 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00030-latencytop.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_LATENCYTOP=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00031-igb_drv.cfg b/recipes-kernel/linux/files/cfg/00031-igb_drv.cfg new file mode 100644 index 0000000..3498fd0 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00031-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/00032-dpa.cfg b/recipes-kernel/linux/files/cfg/00032-dpa.cfg new file mode 100644 index 0000000..c873cd5 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00032-dpa.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_FSL_FM_MAX_FRAME_SIZE=9600 | |||
diff --git a/recipes-kernel/linux/files/cfg/00033-kprobes.cfg b/recipes-kernel/linux/files/cfg/00033-kprobes.cfg new file mode 100644 index 0000000..e24be27 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00033-kprobes.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_KPROBES=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00034-cpusets.cfg b/recipes-kernel/linux/files/cfg/00034-cpusets.cfg new file mode 100644 index 0000000..ec8fad4 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00034-cpusets.cfg | |||
@@ -0,0 +1,3 @@ | |||
1 | CONFIG_CGROUPS=y | ||
2 | CONFIG_CPUSETS=y | ||
3 | CONFIG_CGROUP_PERF=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00035-netfilter.cfg b/recipes-kernel/linux/files/cfg/00035-netfilter.cfg new file mode 100644 index 0000000..2dfdba9 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00035-netfilter.cfg | |||
@@ -0,0 +1,113 @@ | |||
1 | CONFIG_NETFILTER=y | ||
2 | CONFIG_IP_NF_IPTABLES=y | ||
3 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y | ||
4 | CONFIG_BRIDGE_NF_EBTABLES=y | ||
5 | CONFIG_IP_VS=y | ||
6 | CONFIG_IP_NF_FILTER=y | ||
7 | CONFIG_IP_NF_TARGET_ULOG=y | ||
8 | CONFIG_IP_NF_IPTABLES=y | ||
9 | # | ||
10 | # Not directly sourced via a kernel type but via an external bb | ||
11 | # | ||
12 | CONFIG_NETFILTER=y | ||
13 | CONFIG_NETFILTER_ADVANCED=y | ||
14 | |||
15 | # | ||
16 | # Core Netfilter Configuration | ||
17 | # | ||
18 | CONFIG_NETFILTER_NETLINK=m | ||
19 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
20 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
21 | CONFIG_NF_CONNTRACK=m | ||
22 | CONFIG_NF_CONNTRACK_MARK=y | ||
23 | CONFIG_NF_CT_PROTO_GRE=m | ||
24 | CONFIG_NF_CT_PROTO_SCTP=m | ||
25 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
26 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
27 | CONFIG_NF_CONNTRACK_FTP=m | ||
28 | CONFIG_NF_CONNTRACK_H323=m | ||
29 | CONFIG_NF_CONNTRACK_IRC=m | ||
30 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
31 | CONFIG_NF_CONNTRACK_PPTP=m | ||
32 | CONFIG_NF_CONNTRACK_SANE=m | ||
33 | CONFIG_NF_CONNTRACK_SIP=m | ||
34 | CONFIG_NF_CONNTRACK_TFTP=m | ||
35 | CONFIG_NF_CT_NETLINK=m | ||
36 | CONFIG_NETFILTER_XTABLES=m | ||
37 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
38 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
39 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
40 | CONFIG_NETFILTER_XT_TARGET_HL=m | ||
41 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
42 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
43 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
44 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
45 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
46 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
47 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
48 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
49 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
50 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
51 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
52 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
53 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
54 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
55 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
56 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
57 | CONFIG_NETFILTER_XT_MATCH_HL=m | ||
58 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
59 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
60 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
61 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
62 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
63 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
64 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
65 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
66 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
67 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
68 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
69 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
70 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
71 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
72 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
73 | |||
74 | # | ||
75 | # IP: Netfilter Configuration | ||
76 | # | ||
77 | CONFIG_NF_DEFRAG_IPV4=m | ||
78 | CONFIG_NF_CONNTRACK_IPV4=m | ||
79 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
80 | CONFIG_IP_NF_IPTABLES=m | ||
81 | CONFIG_IP_NF_MATCH_AH=m | ||
82 | CONFIG_IP_NF_MATCH_ECN=m | ||
83 | CONFIG_IP_NF_MATCH_TTL=m | ||
84 | CONFIG_IP_NF_FILTER=m | ||
85 | CONFIG_IP_NF_TARGET_REJECT=m | ||
86 | CONFIG_IP_NF_TARGET_ULOG=m | ||
87 | CONFIG_NF_NAT=m | ||
88 | CONFIG_NF_NAT_NEEDED=y | ||
89 | CONFIG_NF_NAT_IPV4=m | ||
90 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
91 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
92 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
93 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
94 | CONFIG_NF_NAT_PROTO_GRE=m | ||
95 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
96 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
97 | CONFIG_NF_NAT_FTP=m | ||
98 | CONFIG_NF_NAT_IRC=m | ||
99 | CONFIG_NF_NAT_TFTP=m | ||
100 | CONFIG_NF_NAT_AMANDA=m | ||
101 | CONFIG_NF_NAT_PPTP=m | ||
102 | CONFIG_NF_NAT_H323=m | ||
103 | CONFIG_NF_NAT_SIP=m | ||
104 | CONFIG_IP_NF_MANGLE=m | ||
105 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
106 | CONFIG_IP_NF_TARGET_ECN=m | ||
107 | CONFIG_IP_NF_TARGET_TTL=m | ||
108 | CONFIG_IP_NF_RAW=m | ||
109 | CONFIG_IP_NF_ARPTABLES=m | ||
110 | CONFIG_IP_NF_ARPFILTER=m | ||
111 | CONFIG_IP_NF_ARP_MANGLE=m | ||
112 | |||
113 | CONFIG_NET_SCHED=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00036-ppc_virt.cfg b/recipes-kernel/linux/files/cfg/00036-ppc_virt.cfg new file mode 100644 index 0000000..e41d2e9 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00036-ppc_virt.cfg | |||
@@ -0,0 +1,5 @@ | |||
1 | CONFIG_VIRTUALIZATION=y | ||
2 | CONFIG_KVM_E500MC=y | ||
3 | CONFIG_BRIDGE=y | ||
4 | CONFIG_TUN=y | ||
5 | CONFIG_PCI_STUB=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00037-ppc_lxc.cfg b/recipes-kernel/linux/files/cfg/00037-ppc_lxc.cfg new file mode 100644 index 0000000..020a91a --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00037-ppc_lxc.cfg | |||
@@ -0,0 +1,30 @@ | |||
1 | CONFIG_MEMCG=y | ||
2 | CONFIG_MEMCG_KMEM=y | ||
3 | CONFIG_CGROUP_DEVICE=y | ||
4 | CONFIG_CPUSETS=y | ||
5 | CONFIG_PROC_PID_CPUSET=y | ||
6 | CONFIG_RESOURCE_COUNTERS=y | ||
7 | CONFIG_CGROUP_MEM_RES_CTLR=y | ||
8 | CONFIG_CGROUP_SCHED=y | ||
9 | CONFIG_FAIR_GROUP_SCHED=y | ||
10 | CONFIG_RT_GROUP_SCHED=y | ||
11 | CONFIG_CHECKPOINT_RESTORE=y | ||
12 | CONFIG_NAMESPACES=y | ||
13 | CONFIG_UTS_NS=y | ||
14 | CONFIG_IPC_NS=y | ||
15 | CONFIG_USER_NS=y | ||
16 | CONFIG_PID_NS=y | ||
17 | CONFIG_NET_NS=y | ||
18 | CONFIG_SECCOMP=y | ||
19 | CONFIG_SECURITY_APPARMOR=y | ||
20 | CONFIG_CGROUPS=y | ||
21 | |||
22 | CONFIG_CLS_CGROUP=m | ||
23 | CONFIG_BLK_CGROUP=m | ||
24 | CONFIG_NETPRIO_CGROUP=m | ||
25 | |||
26 | CONFIG_DEVPTS_MULTIPLE_INSTANCES=y | ||
27 | CONFIG_VETH=y | ||
28 | CONFIG_MACVLAN=y | ||
29 | CONFIG_CGROUP_CPUACCT=y | ||
30 | |||
diff --git a/recipes-kernel/linux/files/cfg/00038-hotplug_cpu.cfg b/recipes-kernel/linux/files/cfg/00038-hotplug_cpu.cfg new file mode 100644 index 0000000..3704a7a --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00038-hotplug_cpu.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_HOTPLUG_CPU=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00039-nohz.cfg b/recipes-kernel/linux/files/cfg/00039-nohz.cfg new file mode 100644 index 0000000..4cf684f --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00039-nohz.cfg | |||
@@ -0,0 +1,9 @@ | |||
1 | CONFIG_NO_HZ_COMMON=y | ||
2 | CONFIG_NO_HZ_FULL=y | ||
3 | CONFIG_VIRT_CPU_ACCOUNTING=y | ||
4 | CONFIG_VIRT_CPU_ACCOUNTING_GEN=y | ||
5 | CONFIG_CONTEXT_TRACKING=y | ||
6 | CONFIG_RCU_USER_QS=y | ||
7 | CONFIG_RCU_NOCB_CPU=y | ||
8 | CONFIG_RCU_NOCB_CPU_ALL=y | ||
9 | CONFIG_LOCKUP_DETECTOR=n | ||
diff --git a/recipes-kernel/linux/files/cfg/00040-9p.cfg b/recipes-kernel/linux/files/cfg/00040-9p.cfg new file mode 100644 index 0000000..4b9b161 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00040-9p.cfg | |||
@@ -0,0 +1,5 @@ | |||
1 | CONFIG_NET_9P=y | ||
2 | CONFIG_NET_9P_VIRTIO=y | ||
3 | CONFIG_NET_9P_DEBUG=y | ||
4 | CONFIG_9P_FS=y | ||
5 | CONFIG_9P_FS_POSIX_ACL=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00041-virtio.cfg b/recipes-kernel/linux/files/cfg/00041-virtio.cfg new file mode 100644 index 0000000..41f0dcd --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00041-virtio.cfg | |||
@@ -0,0 +1,8 @@ | |||
1 | CONFIG_VIRTIO_PCI=y | ||
2 | CONFIG_VIRTIO_BALLOON=y | ||
3 | CONFIG_VIRTIO_BLK=y | ||
4 | CONFIG_VIRTIO_NET=y | ||
5 | CONFIG_VIRTIO=y | ||
6 | CONFIG_VIRTIO_RING=y | ||
7 | CONFIG_VIRTIO_MMIO=y | ||
8 | CONFIG_VIRTIO_CONSOLE=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00042-vhost.cfg b/recipes-kernel/linux/files/cfg/00042-vhost.cfg new file mode 100644 index 0000000..87a6004 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00042-vhost.cfg | |||
@@ -0,0 +1,2 @@ | |||
1 | CONFIG_VHOST_NET=y | ||
2 | CONFIG_PCI_MSI=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00043-containers.cfg b/recipes-kernel/linux/files/cfg/00043-containers.cfg new file mode 100644 index 0000000..aac7304 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00043-containers.cfg | |||
@@ -0,0 +1,18 @@ | |||
1 | CONFIG_NAMESPACES=y | ||
2 | CONFIG_UTS_NS=y | ||
3 | CONFIG_IPC_NS=y | ||
4 | CONFIG_USER_NS=y | ||
5 | CONFIG_PID_NS=y | ||
6 | CONFIG_NET_NS=y | ||
7 | CONFIG_CGROUP_FREEZER=y | ||
8 | CONFIG_CGROUP_DEVICE=y | ||
9 | CONFIG_CGROUP_CPUACCT=y | ||
10 | CONFIG_RESOURCE_COUNTERS=y | ||
11 | CONFIG_CGROUP_SCHED=y | ||
12 | CONFIG_BLK_CGROUP=y | ||
13 | CONFIG_CPUSETS=y | ||
14 | CONFIG_MEMCG=y | ||
15 | CONFIG_MEMCG_KMEM=y | ||
16 | CONFIG_VETH=y | ||
17 | CONFIG_MACVLAN=y | ||
18 | CONFIG_DEVPTS_MULTIPLE_INSTANCES=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00044-numa.cfg b/recipes-kernel/linux/files/cfg/00044-numa.cfg new file mode 100644 index 0000000..e480f0c --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00044-numa.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_NUMA=y | |||
diff --git a/recipes-kernel/linux/files/cfg/00045-pci-stub.cfg b/recipes-kernel/linux/files/cfg/00045-pci-stub.cfg new file mode 100644 index 0000000..04aec57 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00045-pci-stub.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_PCI_STUB=m | |||
diff --git a/recipes-kernel/linux/files/cfg/00046-sata.cfg b/recipes-kernel/linux/files/cfg/00046-sata.cfg new file mode 100644 index 0000000..0a30897 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00046-sata.cfg | |||
@@ -0,0 +1,5 @@ | |||
1 | #enable SATA support | ||
2 | CONFIG_ATA=y | ||
3 | CONFIG_SATA_AHCI=y | ||
4 | CONFIG_SATA_AHCI_PLATFORM=y | ||
5 | CONFIG_SATA_PMP=y | ||
diff --git a/recipes-kernel/linux/files/cfg/00047-bridge.cfg b/recipes-kernel/linux/files/cfg/00047-bridge.cfg new file mode 100644 index 0000000..873cbf3 --- /dev/null +++ b/recipes-kernel/linux/files/cfg/00047-bridge.cfg | |||
@@ -0,0 +1 @@ | |||
CONFIG_BRIDGE=y | |||
diff --git a/recipes-kernel/linux/files/cfg/README b/recipes-kernel/linux/files/cfg/README new file mode 100644 index 0000000..abfff1e --- /dev/null +++ b/recipes-kernel/linux/files/cfg/README | |||
@@ -0,0 +1,9 @@ | |||
1 | In ordert to add a configuration fragment contained in a .cfg file, | ||
2 | please follow these steps: | ||
3 | |||
4 | 1. change to the directory that contains this README file. | ||
5 | 2. copy your fragment file here and make sure your file has a .cfg extension | ||
6 | 4. run the indexcfgs.pl utility from this directory to | ||
7 | index your file. | ||
8 | 5. check for the new name and use it to further reference your renamed | ||
9 | cfg file. | ||
diff --git a/recipes-kernel/linux/files/cfg/indexcfgs.pl b/recipes-kernel/linux/files/cfg/indexcfgs.pl new file mode 100755 index 0000000..96cd78a --- /dev/null +++ b/recipes-kernel/linux/files/cfg/indexcfgs.pl | |||
@@ -0,0 +1,167 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | #---------------------------------------------------------------------- | ||
3 | # indexcfgs.pl - utility to rename files in the current directory to an | ||
4 | # indexed format so that a unique index number is | ||
5 | # prepended to the current file name. The naming | ||
6 | # template is: | ||
7 | # | ||
8 | # DDDDD-<name-or-short-description.cfg> | ||
9 | # | ||
10 | # Usage: create the *.cfg file you need, with any name and .cfg | ||
11 | # extension. Run this script and it will automatically | ||
12 | # rename your file to the indexed format above. | ||
13 | # | ||
14 | # Author: Daniel BORNAZ <daniel.bornaz@enea.com | ||
15 | # Date: 2014/04/09 | ||
16 | # Version: 1.0 | ||
17 | # | ||
18 | #---------------------------------------------------------------------- | ||
19 | |||
20 | use strict; | ||
21 | use warnings; | ||
22 | use Getopt::Long; | ||
23 | |||
24 | my %args; | ||
25 | my $counter_indexed=0; | ||
26 | my $filetype="*.cfg"; | ||
27 | my $counter_queue=0; | ||
28 | my $max_index=0; | ||
29 | my $dir="./"; | ||
30 | my @files; | ||
31 | my @queue; | ||
32 | my $opt_strip; | ||
33 | my $opt_help; | ||
34 | |||
35 | |||
36 | #-------------------------------------------------------------------- | ||
37 | # strip the index from the file name | ||
38 | # | ||
39 | sub removeindex($){ | ||
40 | my $tmpname=shift; | ||
41 | my $newname; | ||
42 | |||
43 | if($tmpname=~/^\d{5}\-.*cfg/ig){ | ||
44 | $newname=substr($tmpname,6); | ||
45 | system("mv",$tmpname,$newname) == 0 | ||
46 | or die "Cannot rename $tmpname to $newname: $?"; | ||
47 | }else{ | ||
48 | return 0; | ||
49 | } | ||
50 | } | ||
51 | |||
52 | #-------------------------------------------------------------------- | ||
53 | # get the indexed file name, return the index | ||
54 | # | ||
55 | sub decodeindex($){ | ||
56 | my $tmpname=shift; | ||
57 | |||
58 | if($tmpname=~/^\d{5}\-.*cfg/ig){ | ||
59 | return substr($tmpname,0,5); | ||
60 | }else{ | ||
61 | return 0; | ||
62 | } | ||
63 | } | ||
64 | |||
65 | #-------------------------------------------------------------------- | ||
66 | # remove index from cfg files in current directory | ||
67 | # | ||
68 | sub strip_file_names { | ||
69 | print "Start removing index from $filetype files in $dir\n"; | ||
70 | |||
71 | opendir(DIR,$dir) or die $!; | ||
72 | |||
73 | while( my $file=readdir(DIR)){ | ||
74 | # retrieve cfg files (*.cfg) | ||
75 | if($file=~/cfg$/gi){ | ||
76 | removeindex($file); | ||
77 | } | ||
78 | } | ||
79 | |||
80 | closedir(DIR); | ||
81 | } | ||
82 | |||
83 | #-------------------------------------------------------------------- | ||
84 | # index current directory cfg files | ||
85 | # | ||
86 | sub index_file_names { | ||
87 | print "Start indexing $filetype files in $dir\n"; | ||
88 | |||
89 | opendir(DIR,$dir) or die $!; | ||
90 | |||
91 | while( my $file=readdir(DIR)){ | ||
92 | # retrieve cfg files (*.cfg) | ||
93 | if($file=~/cfg$/gi){ | ||
94 | @files=(@files,$file); | ||
95 | } | ||
96 | } | ||
97 | |||
98 | closedir(DIR); | ||
99 | |||
100 | |||
101 | # separate indexed file names from the ones to be processed | ||
102 | foreach my $file (@files){ | ||
103 | if($file=~/^\d{5}\-.*cfg/){ | ||
104 | my $crt_index=0; | ||
105 | |||
106 | $crt_index=decodeindex($file); | ||
107 | |||
108 | if($crt_index > $max_index){ | ||
109 | $max_index=$crt_index; | ||
110 | } | ||
111 | |||
112 | $counter_indexed++; | ||
113 | }else{ | ||
114 | @queue=($file,@queue); | ||
115 | $counter_queue++; | ||
116 | } | ||
117 | } | ||
118 | |||
119 | # set the next index number | ||
120 | $max_index++; | ||
121 | |||
122 | # index the enqueued file names | ||
123 | foreach my $file (@queue){ | ||
124 | my $newname; | ||
125 | |||
126 | $newname=sprintf("%05d-%s",$max_index++,$file); | ||
127 | system("mv",$file,$newname) == 0 | ||
128 | or die "Cannot rename $file to $newname: $?"; | ||
129 | } | ||
130 | |||
131 | printf("$counter_queue files indexed, ". | ||
132 | "$counter_indexed files already indexed. Done.\n"); | ||
133 | } | ||
134 | |||
135 | #-------------------------------------------------------------------- | ||
136 | # display usage help | ||
137 | # | ||
138 | sub print_usage { | ||
139 | print "\n"; | ||
140 | print " ./indexcfgs.pl [--strip]\n"; | ||
141 | print " no params: Index the *.cfg file names in current dir\n"; | ||
142 | print " to DDDDD-<original_file_name.cfg>\n"; | ||
143 | print " --strip: Strips the index from the *.cfg file names ". | ||
144 | "in current dir\n"; | ||
145 | print "\n"; | ||
146 | |||
147 | exit 0; | ||
148 | } | ||
149 | |||
150 | |||
151 | #--- Program starts here -------------------------------------------- | ||
152 | GetOptions(\%args, | ||
153 | "strip" => \$opt_strip, | ||
154 | "help" => \$opt_help, | ||
155 | ); | ||
156 | |||
157 | if(defined($opt_help)){ | ||
158 | print_usage(); | ||
159 | } | ||
160 | |||
161 | if(defined($opt_strip)){ | ||
162 | strip_file_names(); | ||
163 | }else{ | ||
164 | index_file_names(); | ||
165 | } | ||
166 | |||
167 | |||
diff --git a/recipes-kernel/linux/files/disable-cpu-hotplug-prt.patcher b/recipes-kernel/linux/files/disable-cpu-hotplug-prt.patcher new file mode 100644 index 0000000..b344cf7 --- /dev/null +++ b/recipes-kernel/linux/files/disable-cpu-hotplug-prt.patcher | |||
@@ -0,0 +1,56 @@ | |||
1 | diff -Naur a/git.old/.config b/git/.config | ||
2 | --- a/git.old/.config 2014-06-13 14:30:28.864224240 +0200 | ||
3 | +++ b/git/.config 2014-06-13 14:37:58.633342233 +0200 | ||
4 | @@ -280,14 +280,13 @@ | ||
5 | CONFIG_DEFAULT_CFQ=y | ||
6 | # CONFIG_DEFAULT_NOOP is not set | ||
7 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
8 | -CONFIG_FREEZER=y | ||
9 | +# CONFIG_FREEZER is not set | ||
10 | CONFIG_PPC_MSI_BITMAP=y | ||
11 | # CONFIG_PPC_XICS is not set | ||
12 | # CONFIG_PPC_ICP_NATIVE is not set | ||
13 | # CONFIG_PPC_ICP_HV is not set | ||
14 | # CONFIG_PPC_ICS_RTAS is not set | ||
15 | # CONFIG_GE_FPGA is not set | ||
16 | -CONFIG_FSL_CORENET_RCPM=y | ||
17 | |||
18 | # | ||
19 | # Platform support | ||
20 | @@ -413,8 +412,7 @@ | ||
21 | # CONFIG_MATH_EMULATION is not set | ||
22 | CONFIG_IOMMU_HELPER=y | ||
23 | CONFIG_SWIOTLB=y | ||
24 | -CONFIG_HOTPLUG_CPU=y | ||
25 | -CONFIG_ARCH_CPU_PROBE_RELEASE=y | ||
26 | +# CONFIG_HOTPLUG_CPU is not set | ||
27 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
28 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
29 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
30 | @@ -447,17 +445,9 @@ | ||
31 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
32 | # CONFIG_CMDLINE_BOOL is not set | ||
33 | CONFIG_EXTRA_TARGETS="" | ||
34 | -CONFIG_SUSPEND=y | ||
35 | -CONFIG_SUSPEND_FREEZER=y | ||
36 | +# CONFIG_SUSPEND is not set | ||
37 | # CONFIG_HIBERNATION is not set | ||
38 | -CONFIG_PM_SLEEP=y | ||
39 | -CONFIG_PM_SLEEP_SMP=y | ||
40 | -# CONFIG_PM_AUTOSLEEP is not set | ||
41 | -# CONFIG_PM_WAKELOCKS is not set | ||
42 | # CONFIG_PM_RUNTIME is not set | ||
43 | -CONFIG_PM=y | ||
44 | -# CONFIG_PM_DEBUG is not set | ||
45 | -CONFIG_PM_CLK=y | ||
46 | CONFIG_SECCOMP=y | ||
47 | CONFIG_ISA_DMA_API=y | ||
48 | |||
49 | @@ -1403,7 +1393,6 @@ | ||
50 | CONFIG_VT=y | ||
51 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
52 | CONFIG_VT_CONSOLE=y | ||
53 | -CONFIG_VT_CONSOLE_SLEEP=y | ||
54 | CONFIG_HW_CONSOLE=y | ||
55 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
56 | CONFIG_UNIX98_PTYS=y | ||
diff --git a/recipes-kernel/linux/files/disable-cpu-hotplug.patcher b/recipes-kernel/linux/files/disable-cpu-hotplug.patcher new file mode 100644 index 0000000..bc4c373 --- /dev/null +++ b/recipes-kernel/linux/files/disable-cpu-hotplug.patcher | |||
@@ -0,0 +1,57 @@ | |||
1 | diff --git a/git.old/.config b/git/.config | ||
2 | index 2232296..2aa1771 100644 | ||
3 | --- a/git.old/.config | ||
4 | +++ b/git/.config | ||
5 | @@ -285,14 +285,13 @@ CONFIG_DEFAULT_CFQ=y | ||
6 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
7 | CONFIG_UNINLINE_SPIN_UNLOCK=y | ||
8 | CONFIG_MUTEX_SPIN_ON_OWNER=y | ||
9 | -CONFIG_FREEZER=y | ||
10 | +# CONFIG_FREEZER is not set | ||
11 | CONFIG_PPC_MSI_BITMAP=y | ||
12 | # CONFIG_PPC_XICS is not set | ||
13 | # CONFIG_PPC_ICP_NATIVE is not set | ||
14 | # CONFIG_PPC_ICP_HV is not set | ||
15 | # CONFIG_PPC_ICS_RTAS is not set | ||
16 | # CONFIG_GE_FPGA is not set | ||
17 | -CONFIG_FSL_CORENET_RCPM=y | ||
18 | |||
19 | # | ||
20 | # Platform support | ||
21 | @@ -417,8 +416,7 @@ CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | ||
22 | # CONFIG_MATH_EMULATION is not set | ||
23 | CONFIG_IOMMU_HELPER=y | ||
24 | CONFIG_SWIOTLB=y | ||
25 | -CONFIG_HOTPLUG_CPU=y | ||
26 | -CONFIG_ARCH_CPU_PROBE_RELEASE=y | ||
27 | +# CONFIG_HOTPLUG_CPU is not set | ||
28 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
29 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
30 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
31 | @@ -451,17 +449,9 @@ CONFIG_PPC_4K_PAGES=y | ||
32 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
33 | # CONFIG_CMDLINE_BOOL is not set | ||
34 | CONFIG_EXTRA_TARGETS="" | ||
35 | -CONFIG_SUSPEND=y | ||
36 | -CONFIG_SUSPEND_FREEZER=y | ||
37 | +# CONFIG_SUSPEND is not set | ||
38 | # CONFIG_HIBERNATION is not set | ||
39 | -CONFIG_PM_SLEEP=y | ||
40 | -CONFIG_PM_SLEEP_SMP=y | ||
41 | -# CONFIG_PM_AUTOSLEEP is not set | ||
42 | -# CONFIG_PM_WAKELOCKS is not set | ||
43 | # CONFIG_PM_RUNTIME is not set | ||
44 | -CONFIG_PM=y | ||
45 | -# CONFIG_PM_DEBUG is not set | ||
46 | -CONFIG_PM_CLK=y | ||
47 | CONFIG_SECCOMP=y | ||
48 | CONFIG_ISA_DMA_API=y | ||
49 | |||
50 | @@ -1408,7 +1398,6 @@ CONFIG_SERIO_LIBPS2=y | ||
51 | CONFIG_VT=y | ||
52 | CONFIG_CONSOLE_TRANSLATIONS=y | ||
53 | CONFIG_VT_CONSOLE=y | ||
54 | -CONFIG_VT_CONSOLE_SLEEP=y | ||
55 | CONFIG_HW_CONSOLE=y | ||
56 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
57 | CONFIG_UNIX98_PTYS=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/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch b/recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch new file mode 100644 index 0000000..5acf97a --- /dev/null +++ b/recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch | |||
@@ -0,0 +1,19 @@ | |||
1 | diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c | ||
2 | index ae3d5b7..92cb18d 100644 | ||
3 | --- a/arch/powerpc/mm/tlb_nohash.c | ||
4 | +++ b/arch/powerpc/mm/tlb_nohash.c | ||
5 | @@ -596,8 +596,13 @@ static void __early_init_mmu(int boot_cpu) | ||
6 | /* XXX This should be decided at runtime based on supported | ||
7 | * page sizes in the TLB, but for now let's assume 16M is | ||
8 | * always there and a good fit (which it probably is) | ||
9 | + * | ||
10 | + * Freescale booke only supports 4K pages in TLB0, so use that. | ||
11 | */ | ||
12 | - mmu_vmemmap_psize = MMU_PAGE_16M; | ||
13 | + if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) | ||
14 | + mmu_vmemmap_psize = MMU_PAGE_4K; | ||
15 | + else | ||
16 | + mmu_vmemmap_psize = MMU_PAGE_16M; | ||
17 | |||
18 | /* XXX This code only checks for TLB 0 capabilities and doesn't | ||
19 | * check what page size combos are supported by the HW. It | ||
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/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..8c50a74 --- /dev/null +++ b/recipes-kernel/linux/kernel-configure.inc | |||
@@ -0,0 +1,47 @@ | |||
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 | # Some meta layers like meta-ti use defconfig file to point to a real | ||
21 | # default config file (use-kernel-config=config_filename) which is found | ||
22 | # under kernel path (${S}/arch/${archname}/configs/). | ||
23 | config=`cat ${1} | grep use-kernel-config | cut -d= -f2` | ||
24 | if [ "x${config}" != "x" ] | ||
25 | then | ||
26 | configfilepath=`find ${S}/arch/ -name ${config} -print | head -n 1` | ||
27 | if [ -f ${configfilepath} ] | ||
28 | then | ||
29 | cp ${configfilepath} ${1} | ||
30 | else | ||
31 | bbfatal "Specified config file:${config} was not found!" | ||
32 | fi | ||
33 | fi | ||
34 | |||
35 | O=${B} ${WORKDIR}/merge_config.sh -m ${1} ${addon_features} | ||
36 | |||
37 | mv -f ${B}/.config ${B}/.mconfig | ||
38 | |||
39 | # | ||
40 | #in linux kernel 2.6.33, kconfig does not support alldefconfig yet. | ||
41 | # | ||
42 | if [ "x${PV}" = "x2.6.33" ]; then | ||
43 | oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} allnoconfig | ||
44 | else | ||
45 | oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} alldefconfig | ||
46 | fi | ||
47 | } | ||
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-boundary_3.10.17.bbappend b/recipes-kernel/linux/linux-boundary_3.10.17.bbappend new file mode 100644 index 0000000..378c595 --- /dev/null +++ b/recipes-kernel/linux/linux-boundary_3.10.17.bbappend | |||
@@ -0,0 +1,30 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI_append = "file://cfg/00014-kgdb.cfg \ | ||
4 | file://cfg/00027-lttng.cfg \ | ||
5 | file://cfg/00028-perf.cfg \ | ||
6 | file://cfg/00025-powertop.cfg \ | ||
7 | file://cfg/00004-systemtap.cfg \ | ||
8 | file://cfg/00003-fuse.cfg \ | ||
9 | file://cfg/00034-cpusets.cfg \ | ||
10 | file://cfg/00030-latencytop.cfg \ | ||
11 | " | ||
12 | # | ||
13 | # The linux-boundary recipe doesn't implement a method to merge config fragments | ||
14 | # to the kernel config file, so we need to implement it ourselves. | ||
15 | # | ||
16 | |||
17 | # returns all the elements from the src uri that are kernel config files | ||
18 | def find_cfgs(d): | ||
19 | sources=src_patches(d, True) | ||
20 | sources_list=[] | ||
21 | for s in sources: | ||
22 | base, ext = os.path.splitext(os.path.basename(s)) | ||
23 | if ext and ext in ".cfg": | ||
24 | sources_list.append(s) | ||
25 | return sources_list | ||
26 | |||
27 | # apply kernel configs from the src uri | ||
28 | kernel_do_configure_prepend() { | ||
29 | ${S}/scripts/kconfig/merge_config.sh -m ${S}/.config ${@" ".join(find_cfgs(d))} | ||
30 | } | ||
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..0840625 --- /dev/null +++ b/recipes-kernel/linux/linux-bsc913x.bb | |||
@@ -0,0 +1,35 @@ | |||
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/00013-localversion \ | ||
12 | cfg/00006-with_modules \ | ||
13 | cfg/00001-embedded \ | ||
14 | cfg/00002-root_nfs \ | ||
15 | cfg/00029-devtmpfs \ | ||
16 | cfg/00021-bootlogd \ | ||
17 | cfg/00022-mtd_tests \ | ||
18 | " | ||
19 | |||
20 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} cfg/00020-debug" | ||
21 | |||
22 | STAGING_KERNEL_FEATURES_append = " \ | ||
23 | cfg/00033-kprobes \ | ||
24 | cfg/00007-oprofile \ | ||
25 | cfg/00019-i2c \ | ||
26 | " | ||
27 | |||
28 | require recipes-kernel/linux/linux-bsc913x.inc | ||
29 | require recipes-kernel/linux/staging-kernel.inc | ||
30 | require recipes-kernel/linux/pramfs-2.6.33.inc | ||
31 | |||
32 | # For linx-mod built | ||
33 | kernel_do_install_append() { | ||
34 | cp -fR ${S}/include/generated/* ${D}/usr/src/kernel/include/generated | ||
35 | } | ||
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..1b52c2b --- /dev/null +++ b/recipes-kernel/linux/linux-davinci-mainline.bbappend | |||
@@ -0,0 +1,23 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | KERNEL_FEATURES=" \ | ||
4 | cfg/00013-localversion \ | ||
5 | cfg/00006-with_modules \ | ||
6 | cfg/00001-embedded \ | ||
7 | cfg/00012-preempt \ | ||
8 | cfg/00002-root_nfs \ | ||
9 | cfg/00029-devtmpfs \ | ||
10 | cfg/00021-bootlogd \ | ||
11 | cfg/00022-mtd_tests \ | ||
12 | cfg/00027-lttng \ | ||
13 | cfg/00026-ltp \ | ||
14 | " | ||
15 | |||
16 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} \ | ||
17 | cfg/00020-debug \ | ||
18 | cfg/00033-kprobes \ | ||
19 | cfg/00007-oprofile \ | ||
20 | cfg/00019-i2c | ||
21 | " | ||
22 | |||
23 | require recipes-kernel/linux/staging-kernel.inc | ||
diff --git a/recipes-kernel/linux/linux-enea.inc b/recipes-kernel/linux/linux-enea.inc new file mode 100644 index 0000000..1579940 --- /dev/null +++ b/recipes-kernel/linux/linux-enea.inc | |||
@@ -0,0 +1,8 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "\ | ||
4 | file://cfg/00006-with_modules.cfg \ | ||
5 | file://cfg/00027-lttng.cfg \ | ||
6 | file://cfg/00016-largefilessupport.cfg \ | ||
7 | file://cfg/00034-cpusets.cfg \ | ||
8 | " | ||
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.10.bbappend b/recipes-kernel/linux/linux-keystone_3.10.bbappend new file mode 100644 index 0000000..7ff72c7 --- /dev/null +++ b/recipes-kernel/linux/linux-keystone_3.10.bbappend | |||
@@ -0,0 +1,41 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "file://disable_hw_checksum_offload.patch \ | ||
4 | file://arm_arch_timer-Keystone-2-architected-timer-frequenc.patch \ | ||
5 | file://Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch \ | ||
6 | file://0001-net-fib-fib6_add-fix-potential-NULL-pointer-derefere.patch \ | ||
7 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
8 | file://HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch \ | ||
9 | file://HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch \ | ||
10 | file://HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch \ | ||
11 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
12 | file://HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch \ | ||
13 | file://HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch \ | ||
14 | file://HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch \ | ||
15 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
16 | file://HID_CVE_patches/0011-HID-multitouch-validate-indexes-details.patch \ | ||
17 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
18 | file://HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch \ | ||
19 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
20 | " | ||
21 | |||
22 | KERNEL_FEATURES = " \ | ||
23 | cfg/00014-kgdb \ | ||
24 | cfg/00027-lttng \ | ||
25 | cfg/00028-perf \ | ||
26 | cfg/00025-powertop \ | ||
27 | cfg/00004-systemtap \ | ||
28 | cfg/00003-fuse \ | ||
29 | cfg/00017-preempt_keystone \ | ||
30 | cfg/00034-cpusets \ | ||
31 | cfg/00046-sata \ | ||
32 | " | ||
33 | KERNEL_DEFCONFIG = "${WORKDIR}/defconfig" | ||
34 | require kernel-configure.inc | ||
35 | |||
36 | do_configure_prepend() { | ||
37 | |||
38 | configure_kernel ${KERNEL_DEFCONFIG} "${KERNEL_FEATURES}" | ||
39 | |||
40 | } | ||
41 | |||
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..2c8d0a7 --- /dev/null +++ b/recipes-kernel/linux/linux-omap4_3.4.bbappend | |||
@@ -0,0 +1,36 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "file://fix_for_CVE-2013-2094.patch \ | ||
4 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
5 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
6 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
7 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
8 | " | ||
9 | |||
10 | KERNEL_FEATURES = " \ | ||
11 | cfg/00013-localversion \ | ||
12 | cfg/00006-with_modules \ | ||
13 | cfg/00001-embedded \ | ||
14 | cfg/00012-preempt \ | ||
15 | cfg/00002-root_nfs \ | ||
16 | cfg/00029-devtmpfs \ | ||
17 | cfg/00021-bootlogd \ | ||
18 | cfg/00022-mtd_tests \ | ||
19 | cfg/00026-ltp \ | ||
20 | cfg/00034-cpusets \ | ||
21 | " | ||
22 | |||
23 | KERNEL_DEFCONFIG = "${WORKDIR}/defconfig" | ||
24 | |||
25 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} \ | ||
26 | cfg/00020-debug \ | ||
27 | cfg/00033-kprobes \ | ||
28 | cfg/00007-oprofile \ | ||
29 | cfg/00019-i2c \ | ||
30 | cfg/00025-powertop \ | ||
31 | cfg/00030-latencytop \ | ||
32 | cfg/00004-systemtap \ | ||
33 | cfg/00014-kgdb \ | ||
34 | " | ||
35 | |||
36 | require recipes-kernel/linux/staging-kernel.inc | ||
diff --git a/recipes-kernel/linux/linux-qoriq-sdk-prt.bbappend b/recipes-kernel/linux/linux-qoriq-sdk-prt.bbappend new file mode 100644 index 0000000..6a16459 --- /dev/null +++ b/recipes-kernel/linux/linux-qoriq-sdk-prt.bbappend | |||
@@ -0,0 +1,73 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | |||
4 | SRC_URI += "file://add-no-error-uninitialized.patch \ | ||
5 | file://b4860-hard_irq_disable-bug.patch \ | ||
6 | file://Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch \ | ||
7 | file://0001-sdhci-fix-Timeout-error-messages.patch \ | ||
8 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
9 | file://HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch \ | ||
10 | file://HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch \ | ||
11 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
12 | file://HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch \ | ||
13 | file://HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch \ | ||
14 | file://HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch \ | ||
15 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
16 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
17 | file://HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch \ | ||
18 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
19 | file://powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch \ | ||
20 | " | ||
21 | |||
22 | SRC_URI_append_p2041rdb-prt = " \ | ||
23 | file://disable-cpu-hotplug-prt.patcher \ | ||
24 | " | ||
25 | KERNEL_FEATURES="\ | ||
26 | cfg/00013-localversion \ | ||
27 | cfg/00006-with_modules \ | ||
28 | cfg/00001-embedded \ | ||
29 | cfg/00002-root_nfs \ | ||
30 | cfg/00029-devtmpfs \ | ||
31 | cfg/00021-bootlogd \ | ||
32 | cfg/00022-mtd_tests \ | ||
33 | cfg/00030-latencytop \ | ||
34 | cfg/00026-ltp \ | ||
35 | cfg/00003-fuse \ | ||
36 | cfg/00034-cpusets \ | ||
37 | " | ||
38 | |||
39 | KERNEL_FEATURES_append_p4080ds="cfg/00032-dpa" | ||
40 | KERNEL_FEATURES_append_p2041rdb-prt=" \ | ||
41 | cfg/00032-dpa \ | ||
42 | cfg/00018-rt \ | ||
43 | " | ||
44 | KERNEL_FEATURES_append_p2020rdb-prt=" \ | ||
45 | cfg/00015-uio \ | ||
46 | cfg/00018-rt \ | ||
47 | " | ||
48 | |||
49 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} \ | ||
50 | cfg/00020-debug \ | ||
51 | cfg/00033-kprobes \ | ||
52 | cfg/00007-oprofile \ | ||
53 | cfg/00019-i2c \ | ||
54 | cfg/00027-lttng \ | ||
55 | cfg/00025-powertop \ | ||
56 | cfg/00004-systemtap \ | ||
57 | cfg/00014-kgdb \ | ||
58 | " | ||
59 | |||
60 | STAGING_KERNEL_FEATURES_RT_p4080ds="${STAGING_KERNEL_FEATURES} \ | ||
61 | cfg/00018-rt \ | ||
62 | " | ||
63 | |||
64 | require recipes-kernel/linux/staging-kernel.inc | ||
65 | require recipes-kernel/linux/pramfs-3.0.inc | ||
66 | |||
67 | |||
68 | do_configure_append_p2041rdb-prt() { | ||
69 | # patch the final .config file with the supplied "patcher" file, | ||
70 | # as this is to any versioned source file | ||
71 | cd ${B} | ||
72 | patch -p2 < ../disable-cpu-hotplug-prt.patcher | ||
73 | } | ||
diff --git a/recipes-kernel/linux/linux-qoriq-sdk.bbappend b/recipes-kernel/linux/linux-qoriq-sdk.bbappend new file mode 100644 index 0000000..e89f659 --- /dev/null +++ b/recipes-kernel/linux/linux-qoriq-sdk.bbappend | |||
@@ -0,0 +1,68 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | |||
4 | SRC_URI += "file://add-no-error-uninitialized.patch \ | ||
5 | file://b4860-hard_irq_disable-bug.patch \ | ||
6 | file://Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch \ | ||
7 | file://0001-sdhci-fix-Timeout-error-messages.patch \ | ||
8 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
9 | file://HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch \ | ||
10 | file://HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch \ | ||
11 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
12 | file://HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch \ | ||
13 | file://HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch \ | ||
14 | file://HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch \ | ||
15 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
16 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
17 | file://HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch \ | ||
18 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
19 | file://powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch \ | ||
20 | " | ||
21 | |||
22 | SRC_URI_append_p2041rdb = " \ | ||
23 | file://disable-cpu-hotplug.patcher \ | ||
24 | " | ||
25 | KERNEL_FEATURES="\ | ||
26 | cfg/00013-localversion \ | ||
27 | cfg/00006-with_modules \ | ||
28 | cfg/00001-embedded \ | ||
29 | cfg/00012-preempt \ | ||
30 | cfg/00002-root_nfs \ | ||
31 | cfg/00029-devtmpfs \ | ||
32 | cfg/00021-bootlogd \ | ||
33 | cfg/00022-mtd_tests \ | ||
34 | cfg/00030-latencytop \ | ||
35 | cfg/00026-ltp \ | ||
36 | cfg/00003-fuse \ | ||
37 | cfg/00034-cpusets \ | ||
38 | " | ||
39 | |||
40 | KERNEL_FEATURES_append_p4080ds="cfg/00032-dpa" | ||
41 | KERNEL_FEATURES_append_p2041rdb="cfg/00032-dpa" | ||
42 | KERNEL_FEATURES_append_p2020rdb="cfg/00015-uio" | ||
43 | |||
44 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} \ | ||
45 | cfg/00020-debug \ | ||
46 | cfg/00033-kprobes \ | ||
47 | cfg/00007-oprofile \ | ||
48 | cfg/00019-i2c \ | ||
49 | cfg/00027-lttng \ | ||
50 | cfg/00025-powertop \ | ||
51 | cfg/00004-systemtap \ | ||
52 | cfg/00014-kgdb \ | ||
53 | " | ||
54 | |||
55 | STAGING_KERNEL_FEATURES_RT_p4080ds="${STAGING_KERNEL_FEATURES} \ | ||
56 | cfg/00018-rt \ | ||
57 | " | ||
58 | |||
59 | require recipes-kernel/linux/staging-kernel.inc | ||
60 | require recipes-kernel/linux/pramfs-3.0.inc | ||
61 | |||
62 | |||
63 | do_configure_append_p2041rdb() { | ||
64 | # patch the final .config file with the supplied "patcher" file, | ||
65 | # as this is to any versioned source file | ||
66 | cd ${B} | ||
67 | patch -p2 < ../disable-cpu-hotplug.patcher | ||
68 | } | ||
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..56d5fef --- /dev/null +++ b/recipes-kernel/linux/linux-raspberrypi_3.6.11.bbappend | |||
@@ -0,0 +1,27 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | KERNEL_FEATURES="\ | ||
4 | cfg/00013-localversion \ | ||
5 | cfg/00006-with_modules \ | ||
6 | cfg/00001-embedded \ | ||
7 | cfg/00012-preempt \ | ||
8 | cfg/00002-root_nfs \ | ||
9 | cfg/00029-devtmpfs \ | ||
10 | cfg/00021-bootlogd \ | ||
11 | cfg/00022-mtd_tests \ | ||
12 | cfg/00026-ltp \ | ||
13 | " | ||
14 | |||
15 | STAGING_KERNEL_FEATURES = "${KERNEL_FEATURES} \ | ||
16 | cfg/00020-debug \ | ||
17 | cfg/00033-kprobes \ | ||
18 | cfg/00007-oprofile \ | ||
19 | cfg/00019-i2c \ | ||
20 | cfg/00027-lttng \ | ||
21 | cfg/00028-perf \ | ||
22 | cfg/00025-powertop \ | ||
23 | cfg/00030-latencytop \ | ||
24 | cfg/00004-systemtap \ | ||
25 | " | ||
26 | |||
27 | 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..02ff3e4 --- /dev/null +++ b/recipes-kernel/linux/linux-xlnx_3.8.bbappend | |||
@@ -0,0 +1,23 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI_append = "file://cfg/00014-kgdb.cfg \ | ||
4 | file://cfg/00027-lttng.cfg \ | ||
5 | file://cfg/00028-perf.cfg \ | ||
6 | file://cfg/00025-powertop.cfg \ | ||
7 | file://cfg/00004-systemtap.cfg \ | ||
8 | file://cfg/00003-fuse.cfg \ | ||
9 | file://cfg/00034-cpusets.cfg \ | ||
10 | file://Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch \ | ||
11 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
12 | file://HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch \ | ||
13 | file://HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch \ | ||
14 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
15 | file://HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch \ | ||
16 | file://HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch \ | ||
17 | file://HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch \ | ||
18 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
19 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
20 | file://HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch \ | ||
21 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
22 | " | ||
23 | |||
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..88d0885 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_3.10.bbappend | |||
@@ -0,0 +1,9 @@ | |||
1 | require linux-enea.inc | ||
2 | |||
3 | SRC_URI += "file://cfg/00031-igb_drv.cfg \ | ||
4 | file://cfg/00014-kgdb.cfg \ | ||
5 | file://cfg/00003-fuse.cfg \ | ||
6 | file://cfg/00024-preempt_romley-ivb.cfg \ | ||
7 | file://HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch \ | ||
8 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
9 | " | ||
diff --git a/recipes-kernel/linux/linux-yocto_3.14.bbappend b/recipes-kernel/linux/linux-yocto_3.14.bbappend new file mode 100644 index 0000000..d06f299 --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_3.14.bbappend | |||
@@ -0,0 +1,4 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/files:" | ||
2 | |||
3 | SRC_URI += "file://HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch \ | ||
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..cce31ab --- /dev/null +++ b/recipes-kernel/linux/linux-yocto_3.8.bbappend | |||
@@ -0,0 +1,21 @@ | |||
1 | require linux-enea.inc | ||
2 | |||
3 | SRC_URI += "file://cfg/00031-igb_drv.cfg \ | ||
4 | file://cfg/00014-kgdb.cfg \ | ||
5 | file://cfg/00003-fuse.cfg \ | ||
6 | file://Check_correct_namespace_when_spoofing_pid_over_SCM_RIGHTS.patch \ | ||
7 | file://HID_CVE_patches/0001-HID-validate-HID-report-id-size.patch \ | ||
8 | file://HID_CVE_patches/0002-HID-provide-a-helper-for-validating-hid-reports.patch \ | ||
9 | file://HID_CVE_patches/0003-HID-zeroplus-validate-output-report-details.patch \ | ||
10 | file://HID_CVE_patches/0004-HID-sony-validate-HID-output-report-details.patch \ | ||
11 | file://HID_CVE_patches/0005-HID-steelseries-validate-output-report-details.patch \ | ||
12 | file://HID_CVE_patches/0006-HID-pantherlord-validate-output-report-details.patch \ | ||
13 | file://HID_CVE_patches/0007-HID-LG-validate-HID-output-report-details.patch \ | ||
14 | file://HID_CVE_patches/0008-HID-lenovo-tpkbd-validate-output-report-details.patch \ | ||
15 | file://HID_CVE_patches/0009-HID-logitech-dj-validate-output-report-details.patch \ | ||
16 | file://HID_CVE_patches/0010-HID-ntrig-validate-feature-report-details.patch \ | ||
17 | file://HID_CVE_patches/0011-HID-multitouch-validate-indexes-details.patch \ | ||
18 | file://HID_CVE_patches/0012-HID-sensor-hub-validate-feature-report-details.patch \ | ||
19 | file://HID_CVE_patches/0013-HID-picolcd_core-validate-output-report-details.patch \ | ||
20 | file://HID_CVE_patches/0014-HID-check-for-NULL-field-when-setting-values.patch \ | ||
21 | " | ||
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..986b1a3 --- /dev/null +++ b/recipes-kernel/linux/linux_3.0.6.bb | |||
@@ -0,0 +1,28 @@ | |||
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=" \ | ||
12 | cfg/00013-localversion \ | ||
13 | cfg/00015-uio \ | ||
14 | " | ||
15 | |||
16 | STAGING_KERNEL_FEATURES="${KERNEL_FEATURES} cfg/00020-debug" | ||
17 | |||
18 | STAGING_KERNEL_FEATURES_append=" \ | ||
19 | cfg/00033-kprobes \ | ||
20 | cfg/00007-oprofile \ | ||
21 | cfg/00027-lttng \ | ||
22 | " | ||
23 | |||
24 | #STAGING_KERNEL_FEATURES_append_acp3448v2="" | ||
25 | |||
26 | require linux-3.0.6.inc | ||
27 | require staging-kernel.inc | ||
28 | 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..6ca0011 --- /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/00010-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..c61d1f8 --- /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/00005-pramfs" | ||
8 | STAGING_KERNEL_FEATURES_append = " cfg/00005-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..87d522e --- /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..d9b36a7 --- /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=4d92cd373abda3937c2bc47fbc49d690 \ | ||
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 ." | ||
diff --git a/recipes-test/ddt-runner/ddt-runner.bb b/recipes-test/ddt-runner/ddt-runner.bb new file mode 100644 index 0000000..f6d234e --- /dev/null +++ b/recipes-test/ddt-runner/ddt-runner.bb | |||
@@ -0,0 +1,24 @@ | |||
1 | LICENSE = "BSD" | ||
2 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" | ||
3 | INHIBIT_DEFAULT_DEPS = "1" | ||
4 | |||
5 | SRC_URI = "file://ddt-runner \ | ||
6 | file://scripts" | ||
7 | |||
8 | FILES_${PN} += "${libdir}/${PN}" | ||
9 | FILES_${PN} += "${bindir}/ddt-runner" | ||
10 | |||
11 | do_install () { | ||
12 | install -D ${WORKDIR}/ddt-runner ${D}${bindir}/ddt-runner | ||
13 | if [ -d "${WORKDIR}/scripts/${MACHINE}" ]; then | ||
14 | install -d ${D}${libdir}/${PN}/scripts | ||
15 | for file in ${WORKDIR}/scripts/${MACHINE}/* ; do | ||
16 | install $file ${D}${libdir}/${PN}/scripts | ||
17 | done | ||
18 | fi | ||
19 | } | ||
20 | |||
21 | do_patch[noexec] = "1" | ||
22 | do_configure[noexec] = "1" | ||
23 | do_compile[noexec] = "1" | ||
24 | do_build[noexec] = "1" | ||
diff --git a/recipes-test/ddt-runner/files/ddt-runner b/recipes-test/ddt-runner/files/ddt-runner new file mode 100644 index 0000000..5290530 --- /dev/null +++ b/recipes-test/ddt-runner/files/ddt-runner | |||
@@ -0,0 +1,19 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if [[ ! -d "/usr/lib/ddt-runner/scripts" ]]; then | ||
4 | echo "SKIP: No available driver testcase" | ||
5 | exit | ||
6 | fi | ||
7 | |||
8 | cd /usr/lib/ddt-runner/scripts | ||
9 | |||
10 | for x in * | ||
11 | do | ||
12 | if [[ -f $x ]]; then | ||
13 | date +%Y-%m-%dT%H:%M | ||
14 | echo "BEGIN: $x" | ||
15 | ./$x | ||
16 | echo "END: $x" | ||
17 | date +%Y-%m-%dT%H:%M | ||
18 | fi | ||
19 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/acp3448v2/ethernet b/recipes-test/ddt-runner/files/scripts/acp3448v2/ethernet new file mode 100755 index 0000000..10a16b4 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/acp3448v2/ethernet | |||
@@ -0,0 +1,97 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test ethernet functionality for acp3448v2. | ||
4 | # | ||
5 | |||
6 | ethernet_interface="eth0" | ||
7 | ethernet_ping_ipaddr="172.21.3.22" | ||
8 | ethernet_ipaddr=$1 | ||
9 | |||
10 | IFCONFIG=`which ifconfig` | ||
11 | |||
12 | for((num=0; num<16; num++)); | ||
13 | do | ||
14 | ethernet_interface=eth$num | ||
15 | $IFCONFIG $ethernet_interface up | ||
16 | $IFCONFIG | grep $ethernet_interface | ||
17 | if [ $? -eq 0 ]; then | ||
18 | echo "PASS: $ethernet_interface is up" | ||
19 | break | ||
20 | fi | ||
21 | done | ||
22 | |||
23 | if [ $num -eq 16 ]; then | ||
24 | echo "FAIL: $ethernet_interface is not up" | ||
25 | exit 1 | ||
26 | fi | ||
27 | |||
28 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
29 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
30 | fi | ||
31 | |||
32 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
33 | if [ $? -ne 0 ]; then | ||
34 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
35 | exit 1 | ||
36 | else | ||
37 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
38 | fi | ||
39 | |||
40 | mindatasize=56 | ||
41 | maxdatasize=650 | ||
42 | stepsize=100 | ||
43 | iteration=1 | ||
44 | datasize=$mindatasize | ||
45 | logfile=`/bin/mktemp` | ||
46 | statistics=`/bin/mktemp` | ||
47 | error=0 | ||
48 | |||
49 | trap cleanup SIGHUP SIGINT SIGTERM | ||
50 | |||
51 | clean_tasks() { | ||
52 | echo "Executing clean up tasks" | ||
53 | rm -f $logfile $statistics | ||
54 | } | ||
55 | |||
56 | cleanup() { | ||
57 | echo "Aborting script execution" | ||
58 | clean_tasks | ||
59 | exit 0 | ||
60 | } | ||
61 | |||
62 | echo "start ping test for $ethernet_interface..." | ||
63 | |||
64 | while [ $datasize -le $maxdatasize ]; do | ||
65 | for i in `seq 1 $iteration`; do | ||
66 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
67 | ping_err=`echo $?` | ||
68 | echo "" && cat $statistics | grep -r "PING" | ||
69 | cat $statistics | grep -r "received" | ||
70 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
71 | packets_received=`cat $statistics | \ | ||
72 | grep -r "received" | awk '{print$4}'` | ||
73 | |||
74 | # Evaluate possible errors on the ping operation | ||
75 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
76 | error=1 | ||
77 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
78 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
79 | fi | ||
80 | done | ||
81 | let datasize=$datasize+$stepsize | ||
82 | done | ||
83 | |||
84 | # Report failures | ||
85 | if [ $error -eq 1 ]; then | ||
86 | echo -e "=================== error report ===================\n" | ||
87 | cat $logfile | ||
88 | echo -e "====================================================\n" | ||
89 | clean_tasks | ||
90 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
91 | exit 1 | ||
92 | else | ||
93 | clean_tasks | ||
94 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
95 | fi | ||
96 | |||
97 | echo "PASS: $ethernet_interface test passed" exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/acp3448v2/flash b/recipes-test/ddt-runner/files/scripts/acp3448v2/flash new file mode 100755 index 0000000..30c5d06 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/acp3448v2/flash | |||
@@ -0,0 +1,45 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver function. | ||
4 | |||
5 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
6 | echo "PASS: show $part_num partitions" | ||
7 | else | ||
8 | echo "FAIL: show $part_num partitions" | ||
9 | fi | ||
10 | |||
11 | for((part=0; part<$part_num-1; part++)); | ||
12 | do | ||
13 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
14 | echo "PASS: show partition $part debug info" | ||
15 | else | ||
16 | echo "FAIL: show partition $part debug info" | ||
17 | fi | ||
18 | done | ||
19 | |||
20 | let "test_part=part_num-2" | ||
21 | |||
22 | if [ $(flash_erase -j /dev/mtd${test_part} 0 0 | grep -c '100 % complete') ]; then | ||
23 | echo "PASS: erase and format partition ${test_part}" | ||
24 | else | ||
25 | echo "FAIL: erase and format partition ${test_part}" | ||
26 | fi | ||
27 | |||
28 | mkdir -p /mnt/flash | ||
29 | mount -t jffs2 /dev/mtdblock${test_part} /mnt/flash | ||
30 | if [ $? -eq 0 ]; then | ||
31 | echo "PASS: mount partition ${test_part} as /mnt/flash" | ||
32 | else | ||
33 | echo "FAIL: mount partition ${test_part} as /mnt/flash" | ||
34 | fi | ||
35 | |||
36 | cd /mnt/flash | ||
37 | touch test | ||
38 | if [ $(ls | grep -c 'test') ]; then | ||
39 | echo "PASS: touch a file on partition ${test_part}" | ||
40 | else | ||
41 | echo "FAIL: touch a file on partition ${test_part}" | ||
42 | fi | ||
43 | |||
44 | cd ~ | ||
45 | umount /mnt/flash | ||
diff --git a/recipes-test/ddt-runner/files/scripts/acp3448v2/pci-express b/recipes-test/ddt-runner/files/scripts/acp3448v2/pci-express new file mode 100755 index 0000000..b04485f --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/acp3448v2/pci-express | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth0" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | #Intel Corporation 82574L Gigabit Network Card (intel e1000e) | ||
8 | vendor_id="8086" | ||
9 | product_id="10d3" | ||
10 | |||
11 | #find vendor id & product id | ||
12 | lspci -nn |grep $vendor_id:$product_id | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: pci-e ethernet card device does not exist" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: got pci-e ethernet card device" | ||
18 | fi | ||
19 | |||
20 | setpci -v -d $vendor_id:$product_id latency_timer=b0 | ||
21 | if [ $? -ne 0 ]; then | ||
22 | echo "FAIL: parameter changes to pci config space failed" | ||
23 | exit 1 | ||
24 | else | ||
25 | echo "PASS: parameter changes to pci config space success" | ||
26 | fi | ||
27 | |||
28 | IFCONFIG=`which ifconfig` | ||
29 | |||
30 | $IFCONFIG $ethernet_interface up | ||
31 | $IFCONFIG | grep $ethernet_interface | ||
32 | if [ $? -ne 0 ]; then | ||
33 | echo "FAIL: pci-e ethernet card device $ethernet_interface is not up" | ||
34 | exit 1 | ||
35 | else | ||
36 | echo "PASS: pci-e ethernet card device $ethernet_interface is up" | ||
37 | fi | ||
38 | |||
39 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
40 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
41 | fi | ||
42 | |||
43 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
44 | if [ $? -ne 0 ]; then | ||
45 | echo "FAIL: ipaddr of pci-e ethernet card device $ethernet_interface setup failed" | ||
46 | exit 1 | ||
47 | else | ||
48 | echo "PASS: ipaddr of pci-e ethernet card device $ethernet_interface setup success" | ||
49 | fi | ||
50 | |||
51 | mindatasize=56 | ||
52 | maxdatasize=650 | ||
53 | stepsize=100 | ||
54 | iteration=1 | ||
55 | datasize=$mindatasize | ||
56 | logfile=`/bin/mktemp` | ||
57 | statistics=`/bin/mktemp` | ||
58 | error=0 | ||
59 | |||
60 | trap cleanup SIGHUP SIGINT SIGTERM | ||
61 | |||
62 | clean_tasks() { | ||
63 | echo "Executing clean up tasks" | ||
64 | rm -f $logfile $statistics | ||
65 | } | ||
66 | |||
67 | cleanup() { | ||
68 | echo "Aborting script execution" | ||
69 | clean_tasks | ||
70 | exit 0 | ||
71 | } | ||
72 | |||
73 | echo "start ping test for pci-e ethernet card device $ethernet_interface..." | ||
74 | |||
75 | while [ $datasize -le $maxdatasize ]; do | ||
76 | for i in `seq 1 $iteration`; do | ||
77 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
78 | ping_err=`echo $?` | ||
79 | echo "" && cat $statistics | grep -r "PING" | ||
80 | cat $statistics | grep -r "received" | ||
81 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
82 | packets_received=`cat $statistics | \ | ||
83 | grep -r "received" | awk '{print$4}'` | ||
84 | |||
85 | # Evaluate possible errors on the ping operation | ||
86 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
87 | error=1 | ||
88 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
89 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
90 | fi | ||
91 | done | ||
92 | let datasize=$datasize+$stepsize | ||
93 | done | ||
94 | |||
95 | # Report failures | ||
96 | if [ $error -eq 1 ]; then | ||
97 | echo -e "=================== error report ===================\n" | ||
98 | cat $logfile | ||
99 | echo -e "====================================================\n" | ||
100 | clean_tasks | ||
101 | echo -e "FAIL: ping test for pci-e ethernet card device $ethernet_interface failed\n" | ||
102 | exit 1 | ||
103 | else | ||
104 | clean_tasks | ||
105 | echo -e "PASS: ping test for pci-e ethernet card device $ethernet_interface success\n" | ||
106 | fi | ||
107 | |||
108 | echo "PASS: pci express test passed" | ||
109 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/acp3448v2/usb b/recipes-test/ddt-runner/files/scripts/acp3448v2/usb new file mode 100755 index 0000000..aad0226 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/acp3448v2/usb | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test usb functionality for acp3448v2. | ||
4 | # | ||
5 | |||
6 | result=0 | ||
7 | devpath="" | ||
8 | usbinfo="" | ||
9 | |||
10 | usbutils_is_installed=`which lsusb` | ||
11 | if [ -z $usbutils_is_installed ]; then | ||
12 | echo "FAIL: Cannot find lsusb" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "$usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | sd=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
25 | if [ -z "$sd" ]; then | ||
26 | echo "FAIL: find sd device" | ||
27 | exit 1 | ||
28 | else | ||
29 | echo "PASS: find sd device" | ||
30 | fi | ||
31 | |||
32 | HDPARM=`which hdparm` | ||
33 | if [ -z $HDPARM ]; then | ||
34 | result=$? | ||
35 | echo "FAIL: find hdparm" | ||
36 | fi | ||
37 | echo "PASS: find hdparm" | ||
38 | |||
39 | for s in $sd | ||
40 | do | ||
41 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
42 | usbinfo=`ls -l $devpath | grep usb` | ||
43 | |||
44 | if [ -z "$usbinfo" ] ; then | ||
45 | continue | ||
46 | fi | ||
47 | |||
48 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
49 | |||
50 | echo "Testing $s" | ||
51 | $HDPARM -I $s | ||
52 | if [ $? -ne 0 ]; then | ||
53 | result=$? | ||
54 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
55 | else | ||
56 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
57 | fi | ||
58 | |||
59 | $HDPARM -tT $s | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
63 | else | ||
64 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
65 | fi | ||
66 | |||
67 | mkdir -p /mnt/usb_tmp | ||
68 | for partition in `ls "$s"[1-9]` | ||
69 | do | ||
70 | echo "Testing $partition" | ||
71 | |||
72 | mount "$partition" /mnt/usb_tmp | ||
73 | if [ $? -ne 0 ]; then | ||
74 | result=$? | ||
75 | echo "FAIL: mount $s" | ||
76 | else | ||
77 | echo "PASS: mount $s" | ||
78 | dd if=/dev/urandom of=/mnt/usb_tmp/writefile bs=1M count=50 | ||
79 | if [ $? -ne 0 ]; then | ||
80 | result=$? | ||
81 | echo "FAIL: write test on $s" | ||
82 | else | ||
83 | echo "PASS: write test on $s" | ||
84 | rm -f /mnt/usb_tmp/writefile | ||
85 | fi | ||
86 | dd if=$s of=/mnt/usb_tmp/readfile bs=1M count=10 | ||
87 | if [ $? -ne 0 ]; then | ||
88 | result=$? | ||
89 | echo "FAIL: read test on $s" | ||
90 | else | ||
91 | echo "PASS: read test on $s" | ||
92 | rm -f /mnt/usb_tmp/readfile | ||
93 | fi | ||
94 | umount /mnt/usb_tmp | ||
95 | fi | ||
96 | done | ||
97 | |||
98 | rm -fr /mnt/usb_tmp | ||
99 | done | ||
100 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/b4860qds-64b/ethernet b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/b4860qds-64b/flash b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/flash new file mode 100755 index 0000000..5728b73 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/flash | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in b4860qds-64b and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | fi | ||
12 | |||
13 | for((part=0; part<$part_num-1; part++)); | ||
14 | do | ||
15 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
16 | echo "PASS: show partition $part debug info" | ||
17 | else | ||
18 | echo "FAIL: show partition $part debug info" | ||
19 | fi | ||
20 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/b4860qds-64b/i2c b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/i2c new file mode 100755 index 0000000..5b312b9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/b4860qds-64b/rtc b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/b4860qds-64b/spi b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/spi new file mode 100755 index 0000000..b03431e --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/b4860qds-64b/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to b4860qds-64b cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd4" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock4" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/ethernet b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/ethernet new file mode 100755 index 0000000..df64e08 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/ethernet | |||
@@ -0,0 +1,89 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test ethernet interface for bsc9131rdb. | ||
3 | |||
4 | ethernet_interface="eth0" | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | IFCONFIG=`which ifconfig` | ||
9 | |||
10 | $IFCONFIG $ethernet_interface up | ||
11 | $IFCONFIG | grep $ethernet_interface | ||
12 | if [ $? -ne 0 ]; then | ||
13 | echo "FAIL: $ethernet_interface is not up" | ||
14 | exit 1 | ||
15 | else | ||
16 | echo "PASS: $ethernet_interface is up" | ||
17 | fi | ||
18 | |||
19 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
20 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
21 | fi | ||
22 | |||
23 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
24 | if [ $? -ne 0 ]; then | ||
25 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
29 | fi | ||
30 | |||
31 | mindatasize=56 | ||
32 | maxdatasize=650 | ||
33 | stepsize=100 | ||
34 | iteration=1 | ||
35 | datasize=$mindatasize | ||
36 | logfile=`/bin/mktemp` | ||
37 | statistics=`/bin/mktemp` | ||
38 | error=0 | ||
39 | |||
40 | trap cleanup SIGHUP SIGINT SIGTERM | ||
41 | |||
42 | clean_tasks() { | ||
43 | echo "Executing clean up tasks" | ||
44 | rm -f $logfile $statistics | ||
45 | } | ||
46 | |||
47 | cleanup() { | ||
48 | echo "Aborting script execution" | ||
49 | clean_tasks | ||
50 | exit 0 | ||
51 | } | ||
52 | |||
53 | echo "start ping test for $ethernet_interface..." | ||
54 | |||
55 | while [ $datasize -le $maxdatasize ]; do | ||
56 | for i in `seq 1 $iteration`; do | ||
57 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
58 | ping_err=`echo $?` | ||
59 | echo "" && cat $statistics | grep -r "PING" | ||
60 | cat $statistics | grep -r "received" | ||
61 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
62 | packets_received=`cat $statistics | \ | ||
63 | grep -r "received" | awk '{print$4}'` | ||
64 | |||
65 | # Evaluate possible errors on the ping operation | ||
66 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
67 | error=1 | ||
68 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
69 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
70 | fi | ||
71 | done | ||
72 | let datasize=$datasize+$stepsize | ||
73 | done | ||
74 | |||
75 | # Report failures | ||
76 | if [ $error -eq 1 ]; then | ||
77 | echo -e "=================== error report ===================\n" | ||
78 | cat $logfile | ||
79 | echo -e "====================================================\n" | ||
80 | clean_tasks | ||
81 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
82 | exit 1 | ||
83 | else | ||
84 | clean_tasks | ||
85 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
86 | fi | ||
87 | |||
88 | echo "PASS: $ethernet_interface test passed" | ||
89 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/flash b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/flash new file mode 100755 index 0000000..66631ba --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/flash | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the tests | ||
4 | # which include write operations since all partition are in use in bsc9131rdb | ||
5 | # and there might be possibility of corrupting data even if we backup in test | ||
6 | # script. | ||
7 | |||
8 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
9 | echo "PASS: $part_num partitions found" | ||
10 | else | ||
11 | echo "FAIL: $part_num partitions found" | ||
12 | exit 1 | ||
13 | fi | ||
14 | |||
15 | for((part=0; part<$part_num; part++)); | ||
16 | do | ||
17 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
18 | echo "PASS: show partition $part debug info" | ||
19 | else | ||
20 | echo "FAIL: show partition $part debug info" | ||
21 | exit 1 | ||
22 | fi | ||
23 | done | ||
24 | |||
25 | READ_TEST=`find / -name mtd_readtest.ko -print` | ||
26 | |||
27 | if [ ! -e $READ_TEST ]; then | ||
28 | echo "FAIL: $READ_TEST does not exist" | ||
29 | exit 1 | ||
30 | else | ||
31 | echo "PASS: $READ_TEST exists" | ||
32 | fi | ||
33 | |||
34 | for((part=0; part<$part_num; part++)); | ||
35 | do | ||
36 | dmesg -c > NULL | ||
37 | |||
38 | modprobe $READ_TEST dev=$part | ||
39 | |||
40 | bad_num=`dmesg | grep -c 'bad'` | ||
41 | if [ $bad_num -eq 0 ]; then | ||
42 | echo "PASS: read test for partition $part" | ||
43 | else | ||
44 | echo "FAIL: read test for partition $part" | ||
45 | fi | ||
46 | |||
47 | rmmod $READ_TEST | ||
48 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/i2c b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/i2c new file mode 100755 index 0000000..c4acd8e --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/i2c | |||
@@ -0,0 +1,75 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test i2c interface for bsc9131rdb | ||
3 | |||
4 | I2C_DETECT=`which i2cdetect` | ||
5 | if [ "x$I2C_DETECT" != "x" ]; then | ||
6 | echo "PASS: i2cdetect found" | ||
7 | else | ||
8 | echo "FAIL: i2cdetect not found" | ||
9 | exit 1 | ||
10 | fi | ||
11 | |||
12 | I2C_SET=`which i2cset` | ||
13 | if [ "x$I2C_SET" != "x" ]; then | ||
14 | echo "PASS: i2cset found" | ||
15 | else | ||
16 | echo "FAIL: i2cset not found" | ||
17 | exit 1 | ||
18 | fi | ||
19 | |||
20 | I2C_GET=`which i2cget` | ||
21 | if [ "x$I2C_GET" != "x" ]; then | ||
22 | echo "PASS: i2cget found" | ||
23 | else | ||
24 | echo "FAIL: i2cget not found" | ||
25 | exit 1 | ||
26 | fi | ||
27 | |||
28 | if I2C_ADAPTERS=`$I2C_DETECT -l |wc -l`; then | ||
29 | echo "PASS: $I2C_ADAPTERS i2c adapters found" | ||
30 | else | ||
31 | echo "FAIL: no i2c adapters found" | ||
32 | exit 1 | ||
33 | fi | ||
34 | |||
35 | adapters=0 | ||
36 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
37 | do | ||
38 | $I2C_DETECT -y $adapters | ||
39 | if [ $? -ne 0 ]; then | ||
40 | echo "FAIL: detect i2c adapter $adapters fail" | ||
41 | else | ||
42 | echo "PASS: detect i2c adapter $adapters success" | ||
43 | fi | ||
44 | adapters=`expr $adapters + 1` | ||
45 | sleep 1 | ||
46 | done | ||
47 | |||
48 | # Area of bus:i2c-0 addr:0x52 is free to read and write | ||
49 | $I2C_SET -y 0 0x52 0 0x55 | ||
50 | if [ $? -eq 0 ]; then | ||
51 | echo "PASS: i2c_set -y 0 0x52 0 0x55 success" | ||
52 | else | ||
53 | echo "FAIL: i2c_set -y 0 0x52 0 0x55 fail" | ||
54 | fi | ||
55 | |||
56 | num=`$I2C_GET -y 0 0x52 0 | grep -c '0x55'` | ||
57 | if [ $num -eq 1 ]; then | ||
58 | echo "PASS: i2c_get -y 0 0x52 0 success" | ||
59 | else | ||
60 | echo "FAIL: i2c_get -y 0 0x52 0 fail" | ||
61 | fi | ||
62 | |||
63 | $I2C_SET -y 0 0x52 0 0xaa | ||
64 | if [ $? -eq 0 ]; then | ||
65 | echo "PASS: i2c_set -y 0 0x52 0 0xaa success" | ||
66 | else | ||
67 | echo "FAIL: i2c_set -y 0 0x52 0 0xaa fail" | ||
68 | fi | ||
69 | |||
70 | num=`$I2C_GET -y 0 0x52 0 | grep -c '0xaa'` | ||
71 | if [ $num -eq 1 ]; then | ||
72 | echo "PASS: i2c_get -y 0 0x52 0 success" | ||
73 | else | ||
74 | echo "FAIL: i2c_get -y 0 0x52 0 fail" | ||
75 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/preempt_rt b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/preempt_rt new file mode 100755 index 0000000..111cfa2 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/preempt_rt | |||
@@ -0,0 +1,33 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test PREEMPT RT on target | ||
4 | # | ||
5 | |||
6 | uname -a | grep "PREEMPT RT" | ||
7 | if [ $? -ne 0 ]; then | ||
8 | echo "FAIL: The kernel include real-time patch" | ||
9 | echo 1 | ||
10 | fi | ||
11 | echo "PASS: The kernel include real-time patch" | ||
12 | |||
13 | ps | grep '\(\[irq/\)' | ||
14 | if [ $? -ne 0 ]; then | ||
15 | echo "FAIL: The IRQ handlers are treated by a patched kernel in kernel thread context." | ||
16 | exit 1 | ||
17 | fi | ||
18 | echo "PASS: The IRQ handlers are treated by a patched kernel in kernel thread context." | ||
19 | |||
20 | cyclictest -t5 -p 80 -i 10000 -l 100 | ||
21 | if [ $? -ne 0 ]; then | ||
22 | echo "FAIL: Test case: POSIX interval timer, Interval 10000 micro seconds,. 100 loops." | ||
23 | exit 1 | ||
24 | fi | ||
25 | echo "PASS: Test case: POSIX interval timer, Interval 10000 micro seconds,. 100 loops." | ||
26 | |||
27 | cyclictest -t5 -p 80 -n -i 10000 -l 100 | ||
28 | if [ $? -ne 0 ]; then | ||
29 | echo "FAIL: Test case: clock_nanosleep(TIME_ABSTIME), Interval 10000 micro seconds,. 100 loops." | ||
30 | exit 1 | ||
31 | fi | ||
32 | echo "PASS: Test case: clock_nanosleep(TIME_ABSTIME), Interval 10000 micro seconds,. 100 loops." | ||
33 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/spi b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/spi new file mode 100755 index 0000000..3386d6c --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/spi | |||
@@ -0,0 +1,56 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test spi flash functionality for bsc9131rdb. An spi | ||
3 | # flash M25P80 connect to bsc9131 cpu by spi bus, so the method is to read/write | ||
4 | # spi flash to verify whether the spi bus driver worked or not. | ||
5 | |||
6 | MTD_CHAR_DEVICE="/dev/mtd8" | ||
7 | MTD_BLOCK_DEVICE="/dev/mtdblock8" | ||
8 | |||
9 | FLASH_ERASE=`which flash_erase` | ||
10 | if [ "x$FLASH_ERASE" != "x" ]; then | ||
11 | echo "PASS: flash_erase found" | ||
12 | else | ||
13 | echo "FAIL: flash_erase not found" | ||
14 | exit 1 | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
25 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
29 | fi | ||
30 | |||
31 | $FLASH_ERASE -j $MTD_CHAR_DEVICE 0 0 | ||
32 | if [ $? -ne 0 ]; then | ||
33 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
34 | exit 1 | ||
35 | else | ||
36 | mkdir -p /mnt/spi | ||
37 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
38 | if [ $? -ne 0 ]; then | ||
39 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
40 | exit 1 | ||
41 | else | ||
42 | cp /bin/busybox /mnt/spi | ||
43 | file_num=`ls /mnt/spi |grep -c 'busybox'` | ||
44 | if [ $file_num -eq 1 ]; then | ||
45 | rm /mnt/spi/busybox | ||
46 | umount $MTD_BLOCK_DEVICE | ||
47 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
48 | else | ||
49 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
50 | exit 1 | ||
51 | fi | ||
52 | fi | ||
53 | fi | ||
54 | |||
55 | echo "PASS: spi bus test passed" | ||
56 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9131rdb/watchdog b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/watchdog new file mode 100755 index 0000000..71429fc --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9131rdb/watchdog | |||
@@ -0,0 +1,64 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test watchdog functionality for bsc9131rdb. | ||
4 | |||
5 | WATCHDOG=`which watchdog` | ||
6 | if [ "x$WATCHDOG" != "x" ]; then | ||
7 | echo "PASS: watchdog found" | ||
8 | else | ||
9 | echo "FAIL: watchdog not found" | ||
10 | exit 1 | ||
11 | fi | ||
12 | |||
13 | WATCHDOG_CONF=/etc/watchdog.conf | ||
14 | if [ -f $WATCHDOG_CONF ]; then | ||
15 | echo "PASS: watchdog config file found" | ||
16 | sed -i '23,23 s/#//' $WATCHDOG_CONF | ||
17 | else | ||
18 | echo "FAIL: watchdog config file not found" | ||
19 | exit 1 | ||
20 | fi | ||
21 | |||
22 | $WATCHDOG -v /dev/watchdog | ||
23 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
24 | if [ $watchdog_thread -eq 2 ]; then | ||
25 | echo "PASS: Watchdog daemon started successfully" | ||
26 | else | ||
27 | echo "FAIL: Failed to start watchdog daemon" | ||
28 | exit 1 | ||
29 | fi | ||
30 | |||
31 | sleep 5s | ||
32 | |||
33 | killall watchdog | ||
34 | |||
35 | retry=0 | ||
36 | while [ $retry -lt 10 ] | ||
37 | do | ||
38 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
39 | if [ $watchdog_thread -eq 1 ]; then | ||
40 | echo "PASS: Watchdog daemon stopped successfully" | ||
41 | break; | ||
42 | fi | ||
43 | sleep 1s | ||
44 | retry=`expr $retry + 1` | ||
45 | done | ||
46 | |||
47 | if [ $retry -eq 10 ]; then | ||
48 | echo "FAIL: Failed to stop watchdog daemon" | ||
49 | fi | ||
50 | |||
51 | found=0 | ||
52 | while read line | ||
53 | do | ||
54 | result=`echo $line | grep -c 'still alive after 1 interval'` | ||
55 | if [ $result -eq 1 ]; then | ||
56 | echo "PASS: Watchdog is still alive after 1 interval" | ||
57 | found=1 | ||
58 | fi | ||
59 | done < /var/log/messages | ||
60 | |||
61 | if [ $found -eq 0 ]; then | ||
62 | echo "FAIL: Watchdog is not alive after 1 interval" | ||
63 | fi | ||
64 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/ethernet b/recipes-test/ddt-runner/files/scripts/bsc9132qds/ethernet new file mode 100755 index 0000000..df64e08 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/ethernet | |||
@@ -0,0 +1,89 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test ethernet interface for bsc9131rdb. | ||
3 | |||
4 | ethernet_interface="eth0" | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | IFCONFIG=`which ifconfig` | ||
9 | |||
10 | $IFCONFIG $ethernet_interface up | ||
11 | $IFCONFIG | grep $ethernet_interface | ||
12 | if [ $? -ne 0 ]; then | ||
13 | echo "FAIL: $ethernet_interface is not up" | ||
14 | exit 1 | ||
15 | else | ||
16 | echo "PASS: $ethernet_interface is up" | ||
17 | fi | ||
18 | |||
19 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
20 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
21 | fi | ||
22 | |||
23 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
24 | if [ $? -ne 0 ]; then | ||
25 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
29 | fi | ||
30 | |||
31 | mindatasize=56 | ||
32 | maxdatasize=650 | ||
33 | stepsize=100 | ||
34 | iteration=1 | ||
35 | datasize=$mindatasize | ||
36 | logfile=`/bin/mktemp` | ||
37 | statistics=`/bin/mktemp` | ||
38 | error=0 | ||
39 | |||
40 | trap cleanup SIGHUP SIGINT SIGTERM | ||
41 | |||
42 | clean_tasks() { | ||
43 | echo "Executing clean up tasks" | ||
44 | rm -f $logfile $statistics | ||
45 | } | ||
46 | |||
47 | cleanup() { | ||
48 | echo "Aborting script execution" | ||
49 | clean_tasks | ||
50 | exit 0 | ||
51 | } | ||
52 | |||
53 | echo "start ping test for $ethernet_interface..." | ||
54 | |||
55 | while [ $datasize -le $maxdatasize ]; do | ||
56 | for i in `seq 1 $iteration`; do | ||
57 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
58 | ping_err=`echo $?` | ||
59 | echo "" && cat $statistics | grep -r "PING" | ||
60 | cat $statistics | grep -r "received" | ||
61 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
62 | packets_received=`cat $statistics | \ | ||
63 | grep -r "received" | awk '{print$4}'` | ||
64 | |||
65 | # Evaluate possible errors on the ping operation | ||
66 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
67 | error=1 | ||
68 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
69 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
70 | fi | ||
71 | done | ||
72 | let datasize=$datasize+$stepsize | ||
73 | done | ||
74 | |||
75 | # Report failures | ||
76 | if [ $error -eq 1 ]; then | ||
77 | echo -e "=================== error report ===================\n" | ||
78 | cat $logfile | ||
79 | echo -e "====================================================\n" | ||
80 | clean_tasks | ||
81 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
82 | exit 1 | ||
83 | else | ||
84 | clean_tasks | ||
85 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
86 | fi | ||
87 | |||
88 | echo "PASS: $ethernet_interface test passed" | ||
89 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/flash b/recipes-test/ddt-runner/files/scripts/bsc9132qds/flash new file mode 100755 index 0000000..66631ba --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/flash | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the tests | ||
4 | # which include write operations since all partition are in use in bsc9131rdb | ||
5 | # and there might be possibility of corrupting data even if we backup in test | ||
6 | # script. | ||
7 | |||
8 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
9 | echo "PASS: $part_num partitions found" | ||
10 | else | ||
11 | echo "FAIL: $part_num partitions found" | ||
12 | exit 1 | ||
13 | fi | ||
14 | |||
15 | for((part=0; part<$part_num; part++)); | ||
16 | do | ||
17 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
18 | echo "PASS: show partition $part debug info" | ||
19 | else | ||
20 | echo "FAIL: show partition $part debug info" | ||
21 | exit 1 | ||
22 | fi | ||
23 | done | ||
24 | |||
25 | READ_TEST=`find / -name mtd_readtest.ko -print` | ||
26 | |||
27 | if [ ! -e $READ_TEST ]; then | ||
28 | echo "FAIL: $READ_TEST does not exist" | ||
29 | exit 1 | ||
30 | else | ||
31 | echo "PASS: $READ_TEST exists" | ||
32 | fi | ||
33 | |||
34 | for((part=0; part<$part_num; part++)); | ||
35 | do | ||
36 | dmesg -c > NULL | ||
37 | |||
38 | modprobe $READ_TEST dev=$part | ||
39 | |||
40 | bad_num=`dmesg | grep -c 'bad'` | ||
41 | if [ $bad_num -eq 0 ]; then | ||
42 | echo "PASS: read test for partition $part" | ||
43 | else | ||
44 | echo "FAIL: read test for partition $part" | ||
45 | fi | ||
46 | |||
47 | rmmod $READ_TEST | ||
48 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/i2c b/recipes-test/ddt-runner/files/scripts/bsc9132qds/i2c new file mode 100755 index 0000000..c4acd8e --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/i2c | |||
@@ -0,0 +1,75 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test i2c interface for bsc9131rdb | ||
3 | |||
4 | I2C_DETECT=`which i2cdetect` | ||
5 | if [ "x$I2C_DETECT" != "x" ]; then | ||
6 | echo "PASS: i2cdetect found" | ||
7 | else | ||
8 | echo "FAIL: i2cdetect not found" | ||
9 | exit 1 | ||
10 | fi | ||
11 | |||
12 | I2C_SET=`which i2cset` | ||
13 | if [ "x$I2C_SET" != "x" ]; then | ||
14 | echo "PASS: i2cset found" | ||
15 | else | ||
16 | echo "FAIL: i2cset not found" | ||
17 | exit 1 | ||
18 | fi | ||
19 | |||
20 | I2C_GET=`which i2cget` | ||
21 | if [ "x$I2C_GET" != "x" ]; then | ||
22 | echo "PASS: i2cget found" | ||
23 | else | ||
24 | echo "FAIL: i2cget not found" | ||
25 | exit 1 | ||
26 | fi | ||
27 | |||
28 | if I2C_ADAPTERS=`$I2C_DETECT -l |wc -l`; then | ||
29 | echo "PASS: $I2C_ADAPTERS i2c adapters found" | ||
30 | else | ||
31 | echo "FAIL: no i2c adapters found" | ||
32 | exit 1 | ||
33 | fi | ||
34 | |||
35 | adapters=0 | ||
36 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
37 | do | ||
38 | $I2C_DETECT -y $adapters | ||
39 | if [ $? -ne 0 ]; then | ||
40 | echo "FAIL: detect i2c adapter $adapters fail" | ||
41 | else | ||
42 | echo "PASS: detect i2c adapter $adapters success" | ||
43 | fi | ||
44 | adapters=`expr $adapters + 1` | ||
45 | sleep 1 | ||
46 | done | ||
47 | |||
48 | # Area of bus:i2c-0 addr:0x52 is free to read and write | ||
49 | $I2C_SET -y 0 0x52 0 0x55 | ||
50 | if [ $? -eq 0 ]; then | ||
51 | echo "PASS: i2c_set -y 0 0x52 0 0x55 success" | ||
52 | else | ||
53 | echo "FAIL: i2c_set -y 0 0x52 0 0x55 fail" | ||
54 | fi | ||
55 | |||
56 | num=`$I2C_GET -y 0 0x52 0 | grep -c '0x55'` | ||
57 | if [ $num -eq 1 ]; then | ||
58 | echo "PASS: i2c_get -y 0 0x52 0 success" | ||
59 | else | ||
60 | echo "FAIL: i2c_get -y 0 0x52 0 fail" | ||
61 | fi | ||
62 | |||
63 | $I2C_SET -y 0 0x52 0 0xaa | ||
64 | if [ $? -eq 0 ]; then | ||
65 | echo "PASS: i2c_set -y 0 0x52 0 0xaa success" | ||
66 | else | ||
67 | echo "FAIL: i2c_set -y 0 0x52 0 0xaa fail" | ||
68 | fi | ||
69 | |||
70 | num=`$I2C_GET -y 0 0x52 0 | grep -c '0xaa'` | ||
71 | if [ $num -eq 1 ]; then | ||
72 | echo "PASS: i2c_get -y 0 0x52 0 success" | ||
73 | else | ||
74 | echo "FAIL: i2c_get -y 0 0x52 0 fail" | ||
75 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/preempt_rt b/recipes-test/ddt-runner/files/scripts/bsc9132qds/preempt_rt new file mode 100755 index 0000000..111cfa2 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/preempt_rt | |||
@@ -0,0 +1,33 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test PREEMPT RT on target | ||
4 | # | ||
5 | |||
6 | uname -a | grep "PREEMPT RT" | ||
7 | if [ $? -ne 0 ]; then | ||
8 | echo "FAIL: The kernel include real-time patch" | ||
9 | echo 1 | ||
10 | fi | ||
11 | echo "PASS: The kernel include real-time patch" | ||
12 | |||
13 | ps | grep '\(\[irq/\)' | ||
14 | if [ $? -ne 0 ]; then | ||
15 | echo "FAIL: The IRQ handlers are treated by a patched kernel in kernel thread context." | ||
16 | exit 1 | ||
17 | fi | ||
18 | echo "PASS: The IRQ handlers are treated by a patched kernel in kernel thread context." | ||
19 | |||
20 | cyclictest -t5 -p 80 -i 10000 -l 100 | ||
21 | if [ $? -ne 0 ]; then | ||
22 | echo "FAIL: Test case: POSIX interval timer, Interval 10000 micro seconds,. 100 loops." | ||
23 | exit 1 | ||
24 | fi | ||
25 | echo "PASS: Test case: POSIX interval timer, Interval 10000 micro seconds,. 100 loops." | ||
26 | |||
27 | cyclictest -t5 -p 80 -n -i 10000 -l 100 | ||
28 | if [ $? -ne 0 ]; then | ||
29 | echo "FAIL: Test case: clock_nanosleep(TIME_ABSTIME), Interval 10000 micro seconds,. 100 loops." | ||
30 | exit 1 | ||
31 | fi | ||
32 | echo "PASS: Test case: clock_nanosleep(TIME_ABSTIME), Interval 10000 micro seconds,. 100 loops." | ||
33 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/sdhc b/recipes-test/ddt-runner/files/scripts/bsc9132qds/sdhc new file mode 100644 index 0000000..1530c64 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/sdhc | |||
@@ -0,0 +1,77 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test SDHC card functionality for bsc9132rdb | ||
3 | |||
4 | DEV="mmc0:e624" | ||
5 | |||
6 | if [ -f /sys/bus/mmc/drivers/mmcblk/bind ]; then | ||
7 | echo "PASS: /sys/bus/mmc/drivers/mmcblk/bind found" | ||
8 | else | ||
9 | echo "FAIL: /sys/bus/mmc/drivers/mmcblk/bind not found" | ||
10 | exit 1 | ||
11 | fi | ||
12 | |||
13 | if [ -f /sys/bus/mmc/drivers/mmcblk/unbind ]; then | ||
14 | echo "PASS: /sys/bus/mmc/drivers/mmcblk/unbind found" | ||
15 | else | ||
16 | echo "FAIL: /sys/bus/mmc/drivers/mmcblk/unbind not found" | ||
17 | exit 1 | ||
18 | fi | ||
19 | |||
20 | if [ -f /sys/bus/mmc/drivers/mmc_test/bind ]; then | ||
21 | echo "PASS: /sys/bus/mmc/drivers/mmc_test/bind found" | ||
22 | else | ||
23 | echo "FAIL: /sys/bus/mmc/drivers/mmc_test/bind not found" | ||
24 | exit 1 | ||
25 | fi | ||
26 | |||
27 | if [ -f /sys/bus/mmc/drivers/mmc_test/unbind ]; then | ||
28 | echo "PASS: /sys/bus/mmc/drivers/mmc_test/unbind found" | ||
29 | else | ||
30 | echo "FAIL: /sys/bus/mmc/drivers/mmc_test/unbind not found" | ||
31 | exit 1 | ||
32 | fi | ||
33 | |||
34 | mount -t debugfs none /sys/kernel/debug | ||
35 | if [ $? -eq 0 ]; then | ||
36 | echo "PASS: successfully mount /sys/kernel/debug" | ||
37 | else | ||
38 | echo "FAIL: failed to mount /sys/kernel/debug" | ||
39 | fi | ||
40 | |||
41 | echo $DEV > /sys/bus/mmc/drivers/mmcblk/unbind | ||
42 | if [ $? -eq 0 ]; then | ||
43 | echo "PASS: successfully unbind mmcblk driver" | ||
44 | else | ||
45 | echo "FAIL: failed to unbind mmcblk driver" | ||
46 | fi | ||
47 | |||
48 | echo $DEV > /sys/bus/mmc/drivers/mmc_test/bind | ||
49 | if [ $? -eq 0 ]; then | ||
50 | echo "PASS: successfully bind mmc_test driver" | ||
51 | else | ||
52 | echo "FAIL: failed to bind mmc_test driver" | ||
53 | fi | ||
54 | |||
55 | # echo 0 means test all supported test cases | ||
56 | fail_num=`echo 0 > /sys/kernel/debug/mmc0/mmc0\:e624/test | grep -E -c 'FAILED|ERROR'` | ||
57 | if [ $fail_num -eq 0 ]; then | ||
58 | echo "PASS: all test cases passed" | ||
59 | else | ||
60 | echo "FAIL: some test cases failed" | ||
61 | fi | ||
62 | |||
63 | cat /sys/kernel/debug/mmc0/mmc0\:e624/test | ||
64 | |||
65 | echo $DEV > /sys/bus/mmc/drivers/mmc_test/unbind | ||
66 | if [ $? -eq 0 ]; then | ||
67 | echo "PASS: successfully unbind mmc_test driver" | ||
68 | else | ||
69 | echo "FAIL: failed to unbind mmc_test driver" | ||
70 | fi | ||
71 | |||
72 | echo $DEV > /sys/bus/mmc/drivers/mmcblk/bind | ||
73 | if [ $? -eq 0 ]; then | ||
74 | echo "PASS: successfully bind mmcblk driver" | ||
75 | else | ||
76 | echo "FAIL: failed to bind mmcblk driver" | ||
77 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/spi b/recipes-test/ddt-runner/files/scripts/bsc9132qds/spi new file mode 100755 index 0000000..3386d6c --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/spi | |||
@@ -0,0 +1,56 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test spi flash functionality for bsc9131rdb. An spi | ||
3 | # flash M25P80 connect to bsc9131 cpu by spi bus, so the method is to read/write | ||
4 | # spi flash to verify whether the spi bus driver worked or not. | ||
5 | |||
6 | MTD_CHAR_DEVICE="/dev/mtd8" | ||
7 | MTD_BLOCK_DEVICE="/dev/mtdblock8" | ||
8 | |||
9 | FLASH_ERASE=`which flash_erase` | ||
10 | if [ "x$FLASH_ERASE" != "x" ]; then | ||
11 | echo "PASS: flash_erase found" | ||
12 | else | ||
13 | echo "FAIL: flash_erase not found" | ||
14 | exit 1 | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
25 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
29 | fi | ||
30 | |||
31 | $FLASH_ERASE -j $MTD_CHAR_DEVICE 0 0 | ||
32 | if [ $? -ne 0 ]; then | ||
33 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
34 | exit 1 | ||
35 | else | ||
36 | mkdir -p /mnt/spi | ||
37 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
38 | if [ $? -ne 0 ]; then | ||
39 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
40 | exit 1 | ||
41 | else | ||
42 | cp /bin/busybox /mnt/spi | ||
43 | file_num=`ls /mnt/spi |grep -c 'busybox'` | ||
44 | if [ $file_num -eq 1 ]; then | ||
45 | rm /mnt/spi/busybox | ||
46 | umount $MTD_BLOCK_DEVICE | ||
47 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
48 | else | ||
49 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
50 | exit 1 | ||
51 | fi | ||
52 | fi | ||
53 | fi | ||
54 | |||
55 | echo "PASS: spi bus test passed" | ||
56 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/bsc9132qds/watchdog b/recipes-test/ddt-runner/files/scripts/bsc9132qds/watchdog new file mode 100755 index 0000000..2beb8a6 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/bsc9132qds/watchdog | |||
@@ -0,0 +1,64 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test watchdog functionality for bsc9132qds. | ||
4 | |||
5 | WATCHDOG=`which watchdog` | ||
6 | if [ "x$WATCHDOG" != "x" ]; then | ||
7 | echo "PASS: watchdog found" | ||
8 | else | ||
9 | echo "FAIL: watchdog not found" | ||
10 | exit 1 | ||
11 | fi | ||
12 | |||
13 | WATCHDOG_CONF=/etc/watchdog.conf | ||
14 | if [ -f $WATCHDOG_CONF ]; then | ||
15 | echo "PASS: watchdog config file found" | ||
16 | sed -i '23,23 s/#//' $WATCHDOG_CONF | ||
17 | else | ||
18 | echo "FAIL: watchdog config file not found" | ||
19 | exit 1 | ||
20 | fi | ||
21 | |||
22 | $WATCHDOG -v /dev/watchdog | ||
23 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
24 | if [ $watchdog_thread -eq 2 ]; then | ||
25 | echo "PASS: Watchdog daemon started successfully" | ||
26 | else | ||
27 | echo "FAIL: Failed to start watchdog daemon" | ||
28 | exit 1 | ||
29 | fi | ||
30 | |||
31 | sleep 5s | ||
32 | |||
33 | killall watchdog | ||
34 | |||
35 | retry=0 | ||
36 | while [ $retry -lt 10 ] | ||
37 | do | ||
38 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
39 | if [ $watchdog_thread -eq 1 ]; then | ||
40 | echo "PASS: Watchdog daemon stopped successfully" | ||
41 | break; | ||
42 | fi | ||
43 | sleep 1s | ||
44 | retry=`expr $retry + 1` | ||
45 | done | ||
46 | |||
47 | if [ $retry -eq 10 ]; then | ||
48 | echo "FAIL: Failed to stop watchdog daemon" | ||
49 | fi | ||
50 | |||
51 | found=0 | ||
52 | while read line | ||
53 | do | ||
54 | result=`echo $line | grep -c 'still alive after 1 interval'` | ||
55 | if [ $result -eq 1 ]; then | ||
56 | echo "PASS: Watchdog is still alive after 1 interval" | ||
57 | found=1 | ||
58 | fi | ||
59 | done < /var/log/messages | ||
60 | |||
61 | if [ $found -eq 0 ]; then | ||
62 | echo "FAIL: Watchdog is not alive after 1 interval" | ||
63 | fi | ||
64 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/ethernet b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/ethernet new file mode 100755 index 0000000..de1d427 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth0" | ||
4 | #sestord02 ip address | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | IFCONFIG=`which ifconfig` | ||
9 | |||
10 | $IFCONFIG $ethernet_interface up | ||
11 | $IFCONFIG | grep $ethernet_interface | ||
12 | if [ $? -ne 0 ]; then | ||
13 | echo "FAIL: $ethernet_interface is not up" | ||
14 | exit 1 | ||
15 | else | ||
16 | echo "PASS: $ethernet_interface is up" | ||
17 | fi | ||
18 | |||
19 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
20 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
21 | fi | ||
22 | |||
23 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
24 | if [ $? -ne 0 ]; then | ||
25 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
29 | fi | ||
30 | |||
31 | mindatasize=56 | ||
32 | maxdatasize=650 | ||
33 | stepsize=100 | ||
34 | iteration=1 | ||
35 | datasize=$mindatasize | ||
36 | logfile=`/bin/mktemp` | ||
37 | statistics=`/bin/mktemp` | ||
38 | error=0 | ||
39 | |||
40 | trap cleanup SIGHUP SIGINT SIGTERM | ||
41 | |||
42 | clean_tasks() { | ||
43 | echo "Executing clean up tasks" | ||
44 | rm -f $logfile $statistics | ||
45 | } | ||
46 | |||
47 | cleanup() { | ||
48 | echo "Aborting script execution" | ||
49 | clean_tasks | ||
50 | exit 0 | ||
51 | } | ||
52 | |||
53 | echo "start ping test for $ethernet_interface..." | ||
54 | |||
55 | while [ $datasize -le $maxdatasize ]; do | ||
56 | for i in `seq 1 $iteration`; do | ||
57 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
58 | ping_err=`echo $?` | ||
59 | echo "" && cat $statistics | grep -r "PING" | ||
60 | cat $statistics | grep -r "received" | ||
61 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
62 | packets_received=`cat $statistics | \ | ||
63 | grep -r "received" | awk '{print$4}'` | ||
64 | |||
65 | # Evaluate possible errors on the ping operation | ||
66 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
67 | error=1 | ||
68 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
69 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
70 | fi | ||
71 | done | ||
72 | let datasize=$datasize+$stepsize | ||
73 | done | ||
74 | |||
75 | # Report failures | ||
76 | if [ $error -eq 1 ]; then | ||
77 | echo -e "=================== error report ===================\n" | ||
78 | cat $logfile | ||
79 | echo -e "====================================================\n" | ||
80 | clean_tasks | ||
81 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
82 | exit 1 | ||
83 | else | ||
84 | clean_tasks | ||
85 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
86 | fi | ||
87 | |||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/flash b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/flash new file mode 100755 index 0000000..dffac6b --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/flash | |||
@@ -0,0 +1,49 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in p2041rdb and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | exit 1 | ||
12 | fi | ||
13 | |||
14 | for((part=0; part<$part_num; part++)); | ||
15 | do | ||
16 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
17 | echo "PASS: show partition $part debug info" | ||
18 | else | ||
19 | echo "FAIL: show partition $part debug info" | ||
20 | exit 1 | ||
21 | fi | ||
22 | done | ||
23 | |||
24 | READ_TEST=`find / -name mtd_readtest.ko -print` | ||
25 | |||
26 | if [ ! -e $READ_TEST ]; then | ||
27 | echo "FAIL: $READ_TEST does not exist" | ||
28 | exit 1 | ||
29 | else | ||
30 | echo "PASS: $READ_TEST exists" | ||
31 | fi | ||
32 | |||
33 | for((part=0; part<$part_num; part++)); | ||
34 | do | ||
35 | dmesg -c | ||
36 | |||
37 | insmod $READ_TEST dev=$part | ||
38 | |||
39 | finish=`dmesg | grep -c 'mtd_readtest: finished'` | ||
40 | if [ $finish -eq 1 ]; then | ||
41 | echo "PASS: read test $part" | ||
42 | else | ||
43 | echo "FAIL: read test $part" | ||
44 | rmmod $READ_TEST | ||
45 | exit 1 | ||
46 | fi | ||
47 | |||
48 | rmmod $READ_TEST | ||
49 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/i2c b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/i2c new file mode 100755 index 0000000..3801e9e --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/i2c | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test i2c bus functionality for p2041rdb board. | ||
3 | |||
4 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
5 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
6 | else | ||
7 | echo "FAIL: no i2c adapters found" | ||
8 | exit 1 | ||
9 | fi | ||
10 | |||
11 | if [ -z "$adapters" ]; then | ||
12 | adapters=0 | ||
13 | fi | ||
14 | |||
15 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
16 | do | ||
17 | i2cdetect -y $adapters | ||
18 | if [ $? -ne 0 ]; then | ||
19 | echo "FAIL: detect i2c adapter $adapters failed" | ||
20 | else | ||
21 | echo "PASS: detect i2c adapter $adapters success" | ||
22 | fi | ||
23 | adapters=`expr $adapters + 1` | ||
24 | sleep 1 | ||
25 | done | ||
26 | |||
27 | i2cdetect -y 0 | ||
28 | if [ $? -ne 0 ]; then | ||
29 | echo "FAIL: detect i2c bus 0 fail" | ||
30 | exit 1 | ||
31 | else | ||
32 | echo "PASS: detect i2c bus 0 success" | ||
33 | fi | ||
34 | |||
35 | #i2c bus 0, device address 0x52, DDR3 DIMM Socket 1, SPD EEPROM | ||
36 | i2cdump -f -y 0 0x52 |grep UG51U6400N8SU | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read SPD EEPROM on i2c bus 0 fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | echo "PASS: read SPD EEPROM on i2c bus 0 success" | ||
42 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/pci-express b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/pci-express new file mode 100755 index 0000000..33189f9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/pci-express | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth0" | ||
4 | #sestord02 ip address | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | #Intel Corporation 82574L Gigabit Network Card (intel e1000e) | ||
9 | vendor_id="8086" | ||
10 | product_id="10d3" | ||
11 | |||
12 | #find vendor id & product id | ||
13 | lspci -nn |grep $vendor_id:$product_id | ||
14 | if [ $? -ne 0 ]; then | ||
15 | echo "FAIL: pci-e ethernet card device does not exist" | ||
16 | exit 1 | ||
17 | else | ||
18 | echo "PASS: got pci-e ethernet card device" | ||
19 | fi | ||
20 | |||
21 | setpci -v -d $vendor_id:$product_id latency_timer=b0 | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: parameter changes to pci config space failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: parameter changes to pci config space success" | ||
27 | fi | ||
28 | |||
29 | IFCONFIG=`which ifconfig` | ||
30 | |||
31 | $IFCONFIG $ethernet_interface up | ||
32 | $IFCONFIG | grep $ethernet_interface | ||
33 | if [ $? -ne 0 ]; then | ||
34 | echo "FAIL: pci-e ethernet card device $ethernet_interface is not up" | ||
35 | exit 1 | ||
36 | else | ||
37 | echo "PASS: pci-e ethernet card device $ethernet_interface is up" | ||
38 | fi | ||
39 | |||
40 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
41 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
42 | fi | ||
43 | |||
44 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
45 | if [ $? -ne 0 ]; then | ||
46 | echo "FAIL: ipaddr of pci-e ethernet card device $ethernet_interface setup failed" | ||
47 | exit 1 | ||
48 | else | ||
49 | echo "PASS: ipaddr of pci-e ethernet card device $ethernet_interface setup success" | ||
50 | fi | ||
51 | |||
52 | mindatasize=56 | ||
53 | maxdatasize=650 | ||
54 | stepsize=100 | ||
55 | iteration=1 | ||
56 | datasize=$mindatasize | ||
57 | logfile=`/bin/mktemp` | ||
58 | statistics=`/bin/mktemp` | ||
59 | error=0 | ||
60 | |||
61 | trap cleanup SIGHUP SIGINT SIGTERM | ||
62 | |||
63 | clean_tasks() { | ||
64 | echo "Executing clean up tasks" | ||
65 | rm -f $logfile $statistics | ||
66 | } | ||
67 | |||
68 | cleanup() { | ||
69 | echo "Aborting script execution" | ||
70 | clean_tasks | ||
71 | exit 0 | ||
72 | } | ||
73 | |||
74 | echo "start ping test for pci-e ethernet card device $ethernet_interface..." | ||
75 | |||
76 | while [ $datasize -le $maxdatasize ]; do | ||
77 | for i in `seq 1 $iteration`; do | ||
78 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
79 | ping_err=`echo $?` | ||
80 | echo "" && cat $statistics | grep -r "PING" | ||
81 | cat $statistics | grep -r "received" | ||
82 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
83 | packets_received=`cat $statistics | \ | ||
84 | grep -r "received" | awk '{print$4}'` | ||
85 | |||
86 | # Evaluate possible errors on the ping operation | ||
87 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
88 | error=1 | ||
89 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
90 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
91 | fi | ||
92 | done | ||
93 | let datasize=$datasize+$stepsize | ||
94 | done | ||
95 | |||
96 | # Report failures | ||
97 | if [ $error -eq 1 ]; then | ||
98 | echo -e "=================== error report ===================\n" | ||
99 | cat $logfile | ||
100 | echo -e "====================================================\n" | ||
101 | clean_tasks | ||
102 | echo -e "FAIL: ping test for pci-e ethernet card device $ethernet_interface failed\n" | ||
103 | exit 1 | ||
104 | else | ||
105 | clean_tasks | ||
106 | echo -e "PASS: ping test for pci-e ethernet card device $ethernet_interface success\n" | ||
107 | fi | ||
108 | |||
109 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/rtc b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sata b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sata new file mode 100755 index 0000000..43a4932 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sata | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test sata devices on target | ||
4 | # | ||
5 | result=0 | ||
6 | devpath="" | ||
7 | satainfo="" | ||
8 | SD=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
9 | if [ -z "$SD" ]; then | ||
10 | echo "FAIL: find sata device" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: find sata device" | ||
14 | fi | ||
15 | HDPARM=`which hdparm` | ||
16 | if [ -z $HDPARM ]; then | ||
17 | result=$? | ||
18 | echo "FAIL: find hdparm" | ||
19 | fi | ||
20 | echo "PASS: find hdparm" | ||
21 | |||
22 | |||
23 | for s in $SD | ||
24 | do | ||
25 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
26 | satainfo=`ls -l $devpath | grep sata` | ||
27 | |||
28 | if [ -z "$satainfo" ] ; then | ||
29 | continue | ||
30 | fi | ||
31 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
32 | |||
33 | echo "testing $s" | ||
34 | $HDPARM -I $s | ||
35 | if [ $? -ne 0 ]; then | ||
36 | result=$? | ||
37 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
38 | else | ||
39 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
40 | fi | ||
41 | $HDPARM -tT $s | ||
42 | if [ $? -ne 0 ]; then | ||
43 | result=$? | ||
44 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
45 | else | ||
46 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
47 | fi | ||
48 | |||
49 | |||
50 | mkdir -p /mnt/sata_tmp | ||
51 | for partition in `ls "$s"[1-9]` | ||
52 | do | ||
53 | mount "$partition" /mnt/sata_tmp | ||
54 | if [ $? -ne 0 ]; then | ||
55 | result=$? | ||
56 | echo "FAIL: Mount $s" | ||
57 | else | ||
58 | echo "PASS: Mount $s" | ||
59 | dd if=/dev/urandom of=/mnt/sata_tmp/writefile bs=1M count=50 | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: write test on $s" | ||
63 | else | ||
64 | echo "PASS: write test on $s" | ||
65 | rm -f /mnt/sata_tmp/writefile | ||
66 | fi | ||
67 | dd if=$s of=/mnt/sata_tmp/readfile bs=1M count=10 | ||
68 | if [ $? -ne 0 ]; then | ||
69 | result=$? | ||
70 | echo "FAIL: read test on $s" | ||
71 | else | ||
72 | echo "PASS: read test on $s" | ||
73 | rm -f /mnt/sata_tmp/readfile | ||
74 | fi | ||
75 | umount /mnt/sata_tmp | ||
76 | fi | ||
77 | done | ||
78 | |||
79 | rm -fr /mnt/sata_tmp | ||
80 | done | ||
81 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sdhc b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sdhc new file mode 100755 index 0000000..b1bdab2 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/sdhc | |||
@@ -0,0 +1,40 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #the content of SD will be lost by running this test case. | ||
4 | |||
5 | SDHC_DEVICE="/dev/mmcblk0p1" | ||
6 | |||
7 | if [ ! -e $SDHC_DEVICE ]; then | ||
8 | echo "FAIL: $SDHC_DEVICE does not exist" | ||
9 | exit 1 | ||
10 | else | ||
11 | echo "PASS: $SDHC_DEVICE device exists" | ||
12 | fi | ||
13 | |||
14 | mount |grep mmcblk0p1 | ||
15 | if [ $? -eq 0 ]; then | ||
16 | umount $SDHC_DEVICE | ||
17 | fi | ||
18 | |||
19 | /sbin/mkfs.ext2 $SDHC_DEVICE | ||
20 | if [ $? -ne 0 ]; then | ||
21 | echo "FAIL: format $SDHC_DEVICE fail" | ||
22 | exit 1 | ||
23 | else | ||
24 | mkdir -p /mnt/sdhc | ||
25 | mount $SDHC_DEVICE /mnt/sdhc | ||
26 | if [ $? -ne 0 ]; then | ||
27 | echo "FAIL: mount $SDHC_DEVICE fail" | ||
28 | exit 1 | ||
29 | else | ||
30 | cp /bin/busybox /mnt/sdhc | ||
31 | ls /mnt/sdhc |grep busybox | ||
32 | if [ $? -ne 0 ]; then | ||
33 | echo "FAIL: read or write $SDHC_DEVICE fail" | ||
34 | exit 1 | ||
35 | else | ||
36 | umount $SDHC_DEVICE | ||
37 | echo "PASS: read or write $SDHC_DEVICE success" | ||
38 | fi | ||
39 | fi | ||
40 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/spi b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/spi new file mode 100755 index 0000000..a601517 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to b4860qds-64b cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd2" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock2" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/usb b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/usb new file mode 100755 index 0000000..017287f --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/usb | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test usb devices on p2041rdb target | ||
4 | # | ||
5 | |||
6 | USB_DISK=`ls /dev/sd*[1-9] | sort | tail -n 1` | ||
7 | |||
8 | usbutils_is_installed=`which lsusb` | ||
9 | if [ -z $usbutils_is_installed ]; then | ||
10 | echo "FAIL: Cannot find lsusb" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: usbutils found" | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: $usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | lsusb | grep -v root\ hub | ||
25 | mkdir -p /mnt/usb_ehci | ||
26 | mount $USB_DISK /mnt/usb_ehci | ||
27 | if [ $? -ne 0 ]; then | ||
28 | echo "FAIL: Mount USB device failed" | ||
29 | exit 1 | ||
30 | else | ||
31 | echo "PASS: Mount USB device succeed" | ||
32 | fi | ||
33 | |||
34 | echo "Begin test usb device..." | ||
35 | dd if=/dev/urandom of=/mnt/usb_ehci/testfile bs=1M count=50 | ||
36 | if [ $? -ne 0 ]; then | ||
37 | echo "FAIL: test failed" | ||
38 | rm -f /mnt/usb_ehci_testfile | ||
39 | umount /mnt/usb_ehci | ||
40 | rm -fr /mnt/usb_ehci | ||
41 | exit 1 | ||
42 | fi | ||
43 | |||
44 | echo "PASS: test succeed" | ||
45 | rm -f /mnt/usb_ehci_testfile | ||
46 | umount /mnt/usb_ehci | ||
47 | rm -fr /mnt/usb_ehci | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/watchdog b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/watchdog new file mode 100755 index 0000000..165bc12 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/imx6qsabrelite/watchdog | |||
@@ -0,0 +1,63 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test watchdog functionality for bsc9131rdb. | ||
4 | |||
5 | WATCHDOG=`which watchdog` | ||
6 | if [ "x$WATCHDOG" != "x" ]; then | ||
7 | echo "PASS: watchdog found" | ||
8 | else | ||
9 | echo "FAIL: watchdog not found" | ||
10 | exit 1 | ||
11 | fi | ||
12 | |||
13 | WATCHDOG_CONF=/etc/watchdog.conf | ||
14 | if [ -f $WATCHDOG_CONF ]; then | ||
15 | echo "PASS: watchdog config file found" | ||
16 | sed -i '23,23 s/#//' $WATCHDOG_CONF | ||
17 | else | ||
18 | echo "FAIL: watchdog config file not found" | ||
19 | exit 1 | ||
20 | fi | ||
21 | |||
22 | $WATCHDOG -v /dev/watchdog | ||
23 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
24 | if [ $watchdog_thread -eq 2 ]; then | ||
25 | echo "PASS: Watchdog daemon started successfully" | ||
26 | else | ||
27 | echo "FAIL: Failed to start watchdog daemon" | ||
28 | exit 1 | ||
29 | fi | ||
30 | |||
31 | sleep 5s | ||
32 | |||
33 | killall watchdog | ||
34 | |||
35 | retry=0 | ||
36 | while [ $retry -lt 10 ] | ||
37 | do | ||
38 | watchdog_thread=`ps | grep -c 'watchdog -v /dev/watchdog'` | ||
39 | if [ $watchdog_thread -eq 1 ]; then | ||
40 | echo "PASS: Watchdog daemon stopped successfully" | ||
41 | break; | ||
42 | fi | ||
43 | sleep 1s | ||
44 | retry=`expr $retry + 1` | ||
45 | done | ||
46 | |||
47 | if [ $retry -eq 10 ]; then | ||
48 | echo "FAIL: Failed to stop watchdog daemon" | ||
49 | fi | ||
50 | |||
51 | found=0 | ||
52 | while read line | ||
53 | do | ||
54 | result=`echo $line | grep -c 'still alive after 1 interval'` | ||
55 | if [ $result -eq 1 ]; then | ||
56 | echo "PASS: Watchdog is still alive after 1 interval" | ||
57 | found=1 | ||
58 | fi | ||
59 | done < /var/log/messages | ||
60 | |||
61 | if [ $found -eq 0 ]; then | ||
62 | echo "FAIL: Watchdog is not alive after 1 interval" | ||
63 | fi | ||
diff --git a/recipes-test/ddt-runner/files/scripts/keystone-evm/ethernet b/recipes-test/ddt-runner/files/scripts/keystone-evm/ethernet new file mode 100755 index 0000000..10a74fa --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/keystone-evm/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | #sestord02 ip address | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | IFCONFIG=`which ifconfig` | ||
9 | |||
10 | $IFCONFIG $ethernet_interface up | ||
11 | $IFCONFIG | grep $ethernet_interface | ||
12 | if [ $? -ne 0 ]; then | ||
13 | echo "FAIL: $ethernet_interface is not up" | ||
14 | exit 1 | ||
15 | else | ||
16 | echo "PASS: $ethernet_interface is up" | ||
17 | fi | ||
18 | |||
19 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
20 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
21 | fi | ||
22 | |||
23 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
24 | if [ $? -ne 0 ]; then | ||
25 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
29 | fi | ||
30 | |||
31 | mindatasize=56 | ||
32 | maxdatasize=650 | ||
33 | stepsize=100 | ||
34 | iteration=1 | ||
35 | datasize=$mindatasize | ||
36 | logfile=`/bin/mktemp` | ||
37 | statistics=`/bin/mktemp` | ||
38 | error=0 | ||
39 | |||
40 | trap cleanup SIGHUP SIGINT SIGTERM | ||
41 | |||
42 | clean_tasks() { | ||
43 | echo "Executing clean up tasks" | ||
44 | rm -f $logfile $statistics | ||
45 | } | ||
46 | |||
47 | cleanup() { | ||
48 | echo "Aborting script execution" | ||
49 | clean_tasks | ||
50 | exit 0 | ||
51 | } | ||
52 | |||
53 | echo "start ping test for $ethernet_interface..." | ||
54 | |||
55 | while [ $datasize -le $maxdatasize ]; do | ||
56 | for i in `seq 1 $iteration`; do | ||
57 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
58 | ping_err=`echo $?` | ||
59 | echo "" && cat $statistics | grep -r "PING" | ||
60 | cat $statistics | grep -r "received" | ||
61 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
62 | packets_received=`cat $statistics | \ | ||
63 | grep -r "received" | awk '{print$4}'` | ||
64 | |||
65 | # Evaluate possible errors on the ping operation | ||
66 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
67 | error=1 | ||
68 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
69 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
70 | fi | ||
71 | done | ||
72 | let datasize=$datasize+$stepsize | ||
73 | done | ||
74 | |||
75 | # Report failures | ||
76 | if [ $error -eq 1 ]; then | ||
77 | echo -e "=================== error report ===================\n" | ||
78 | cat $logfile | ||
79 | echo -e "====================================================\n" | ||
80 | clean_tasks | ||
81 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
82 | exit 1 | ||
83 | else | ||
84 | clean_tasks | ||
85 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
86 | fi | ||
87 | |||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/keystone-evm/flash b/recipes-test/ddt-runner/files/scripts/keystone-evm/flash new file mode 100755 index 0000000..ed2a619 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/keystone-evm/flash | |||
@@ -0,0 +1,49 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in keystone-evm and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | exit 1 | ||
12 | fi | ||
13 | |||
14 | for((part=0; part<$part_num; part++)); | ||
15 | do | ||
16 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
17 | echo "PASS: show partition $part debug info" | ||
18 | else | ||
19 | echo "FAIL: show partition $part debug info" | ||
20 | exit 1 | ||
21 | fi | ||
22 | done | ||
23 | |||
24 | READ_TEST=`find / -name mtd_readtest.ko -print` | ||
25 | |||
26 | if [ ! -e $READ_TEST ]; then | ||
27 | echo "FAIL: $READ_TEST does not exist" | ||
28 | exit 1 | ||
29 | else | ||
30 | echo "PASS: $READ_TEST exists" | ||
31 | fi | ||
32 | |||
33 | for((part=0; part<$part_num; part++)); | ||
34 | do | ||
35 | dmesg -c | ||
36 | |||
37 | insmod $READ_TEST dev=$part | ||
38 | |||
39 | finish=`dmesg | grep -c 'mtd_readtest: finished'` | ||
40 | if [ $finish -eq 1 ]; then | ||
41 | echo "PASS: read test $part" | ||
42 | else | ||
43 | echo "FAIL: read test $part" | ||
44 | rmmod $READ_TEST | ||
45 | exit 1 | ||
46 | fi | ||
47 | |||
48 | rmmod $READ_TEST | ||
49 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/keystone-evm/i2c b/recipes-test/ddt-runner/files/scripts/keystone-evm/i2c new file mode 100755 index 0000000..fd033bc --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/keystone-evm/i2c | |||
@@ -0,0 +1,44 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test i2c bus functionality for keystone-evm board. | ||
3 | |||
4 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
5 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
6 | else | ||
7 | echo "FAIL: no i2c adapters found" | ||
8 | exit 1 | ||
9 | fi | ||
10 | |||
11 | if [ -z "$adapters" ]; then | ||
12 | adapters=0 | ||
13 | fi | ||
14 | |||
15 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
16 | do | ||
17 | i2cdetect -y $adapters | ||
18 | if [ $? -ne 0 ]; then | ||
19 | echo "FAIL: detect i2c adapter $adapters failed" | ||
20 | else | ||
21 | echo "PASS: detect i2c adapter $adapters success" | ||
22 | fi | ||
23 | adapters=`expr $adapters + 1` | ||
24 | sleep 1 | ||
25 | done | ||
26 | |||
27 | i2cdetect -y 0 | ||
28 | if [ $? -ne 0 ]; then | ||
29 | echo "FAIL: detect i2c bus 0 fail" | ||
30 | exit 1 | ||
31 | else | ||
32 | echo "PASS: detect i2c bus 0 success" | ||
33 | fi | ||
34 | |||
35 | #i2c bus 0, device address 0x52, DDR3 DIMM Socket 1, SPD EEPROM | ||
36 | i2cdump -f -y 0 0x52 |grep UG51U6400N8SU | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read SPD EEPROM on i2c bus 0 fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | echo "PASS: read SPD EEPROM on i2c bus 0 success" | ||
42 | fi | ||
43 | |||
44 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/keystone-evm/spi b/recipes-test/ddt-runner/files/scripts/keystone-evm/spi new file mode 100755 index 0000000..bcebef9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/keystone-evm/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to keystone-evm cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd4" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock4" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2020rdb/ethernet b/recipes-test/ddt-runner/files/scripts/p2020rdb/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2020rdb/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2020rdb/flash b/recipes-test/ddt-runner/files/scripts/p2020rdb/flash new file mode 100755 index 0000000..302e328 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2020rdb/flash | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in p2020rdb and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | fi | ||
12 | |||
13 | for((part=0; part<$part_num-1; part++)); | ||
14 | do | ||
15 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
16 | echo "PASS: show partition $part debug info" | ||
17 | else | ||
18 | echo "FAIL: show partition $part debug info" | ||
19 | fi | ||
20 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2020rdb/i2c b/recipes-test/ddt-runner/files/scripts/p2020rdb/i2c new file mode 100755 index 0000000..5b312b9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2020rdb/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2020rdb/spi b/recipes-test/ddt-runner/files/scripts/p2020rdb/spi new file mode 100755 index 0000000..fc673ad --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2020rdb/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to p2020 cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd4" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock4" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2020rdb/usb b/recipes-test/ddt-runner/files/scripts/p2020rdb/usb new file mode 100755 index 0000000..970e913 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2020rdb/usb | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test usb functionality for p4080ds. | ||
4 | # | ||
5 | |||
6 | result=0 | ||
7 | devpath="" | ||
8 | usbinfo="" | ||
9 | |||
10 | usbutils_is_installed=`which lsusb` | ||
11 | if [ -z $usbutils_is_installed ]; then | ||
12 | echo "FAIL: Cannot find lsusb" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "$usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | sd=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
25 | if [ -z "$sd" ]; then | ||
26 | echo "FAIL: find sd device" | ||
27 | exit 1 | ||
28 | else | ||
29 | echo "PASS: find sd device" | ||
30 | fi | ||
31 | |||
32 | HDPARM=`which hdparm` | ||
33 | if [ -z $HDPARM ]; then | ||
34 | result=$? | ||
35 | echo "FAIL: find hdparm" | ||
36 | fi | ||
37 | echo "PASS: find hdparm" | ||
38 | |||
39 | for s in $sd | ||
40 | do | ||
41 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
42 | usbinfo=`ls -l $devpath | grep usb` | ||
43 | |||
44 | if [ -z "$usbinfo" ] ; then | ||
45 | continue | ||
46 | fi | ||
47 | |||
48 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
49 | |||
50 | echo "Testing $s" | ||
51 | $HDPARM -I $s | ||
52 | if [ $? -ne 0 ]; then | ||
53 | result=$? | ||
54 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
55 | else | ||
56 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
57 | fi | ||
58 | |||
59 | $HDPARM -tT $s | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
63 | else | ||
64 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
65 | fi | ||
66 | |||
67 | mkdir -p /mnt/usb_tmp | ||
68 | for partition in `ls "$s"[1-9]` | ||
69 | do | ||
70 | echo "Testing $partition" | ||
71 | |||
72 | mount "$partition" /mnt/usb_tmp | ||
73 | if [ $? -ne 0 ]; then | ||
74 | result=$? | ||
75 | echo "FAIL: mount $s" | ||
76 | else | ||
77 | echo "PASS: mount $s" | ||
78 | dd if=/dev/urandom of=/mnt/usb_tmp/writefile bs=1M count=50 | ||
79 | if [ $? -ne 0 ]; then | ||
80 | result=$? | ||
81 | echo "FAIL: write test on $s" | ||
82 | else | ||
83 | echo "PASS: write test on $s" | ||
84 | rm -f /mnt/usb_tmp/writefile | ||
85 | fi | ||
86 | dd if=$s of=/mnt/usb_tmp/readfile bs=1M count=10 | ||
87 | if [ $? -ne 0 ]; then | ||
88 | result=$? | ||
89 | echo "FAIL: read test on $s" | ||
90 | else | ||
91 | echo "PASS: read test on $s" | ||
92 | rm -f /mnt/usb_tmp/readfile | ||
93 | fi | ||
94 | umount /mnt/usb_tmp | ||
95 | fi | ||
96 | done | ||
97 | |||
98 | rm -fr /mnt/usb_tmp | ||
99 | done | ||
100 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/ethernet b/recipes-test/ddt-runner/files/scripts/p2041rdb/ethernet new file mode 100755 index 0000000..10a74fa --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | #sestord02 ip address | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | IFCONFIG=`which ifconfig` | ||
9 | |||
10 | $IFCONFIG $ethernet_interface up | ||
11 | $IFCONFIG | grep $ethernet_interface | ||
12 | if [ $? -ne 0 ]; then | ||
13 | echo "FAIL: $ethernet_interface is not up" | ||
14 | exit 1 | ||
15 | else | ||
16 | echo "PASS: $ethernet_interface is up" | ||
17 | fi | ||
18 | |||
19 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
20 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
21 | fi | ||
22 | |||
23 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
24 | if [ $? -ne 0 ]; then | ||
25 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
26 | exit 1 | ||
27 | else | ||
28 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
29 | fi | ||
30 | |||
31 | mindatasize=56 | ||
32 | maxdatasize=650 | ||
33 | stepsize=100 | ||
34 | iteration=1 | ||
35 | datasize=$mindatasize | ||
36 | logfile=`/bin/mktemp` | ||
37 | statistics=`/bin/mktemp` | ||
38 | error=0 | ||
39 | |||
40 | trap cleanup SIGHUP SIGINT SIGTERM | ||
41 | |||
42 | clean_tasks() { | ||
43 | echo "Executing clean up tasks" | ||
44 | rm -f $logfile $statistics | ||
45 | } | ||
46 | |||
47 | cleanup() { | ||
48 | echo "Aborting script execution" | ||
49 | clean_tasks | ||
50 | exit 0 | ||
51 | } | ||
52 | |||
53 | echo "start ping test for $ethernet_interface..." | ||
54 | |||
55 | while [ $datasize -le $maxdatasize ]; do | ||
56 | for i in `seq 1 $iteration`; do | ||
57 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
58 | ping_err=`echo $?` | ||
59 | echo "" && cat $statistics | grep -r "PING" | ||
60 | cat $statistics | grep -r "received" | ||
61 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
62 | packets_received=`cat $statistics | \ | ||
63 | grep -r "received" | awk '{print$4}'` | ||
64 | |||
65 | # Evaluate possible errors on the ping operation | ||
66 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
67 | error=1 | ||
68 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
69 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
70 | fi | ||
71 | done | ||
72 | let datasize=$datasize+$stepsize | ||
73 | done | ||
74 | |||
75 | # Report failures | ||
76 | if [ $error -eq 1 ]; then | ||
77 | echo -e "=================== error report ===================\n" | ||
78 | cat $logfile | ||
79 | echo -e "====================================================\n" | ||
80 | clean_tasks | ||
81 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
82 | exit 1 | ||
83 | else | ||
84 | clean_tasks | ||
85 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
86 | fi | ||
87 | |||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/flash b/recipes-test/ddt-runner/files/scripts/p2041rdb/flash new file mode 100755 index 0000000..2d10600 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/flash | |||
@@ -0,0 +1,49 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in p2041rdb and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | exit 1 | ||
12 | fi | ||
13 | |||
14 | for((part=0; part<$part_num; part++)); | ||
15 | do | ||
16 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
17 | echo "PASS: show partition $part debug info" | ||
18 | else | ||
19 | echo "FAIL: show partition $part debug info" | ||
20 | exit 1 | ||
21 | fi | ||
22 | done | ||
23 | |||
24 | READ_TEST=`find / -name mtd_readtest.ko -print` | ||
25 | |||
26 | if [ ! -e $READ_TEST ]; then | ||
27 | echo "FAIL: $READ_TEST does not exist" | ||
28 | exit 1 | ||
29 | else | ||
30 | echo "PASS: $READ_TEST exists" | ||
31 | fi | ||
32 | |||
33 | for((part=0; part<$part_num; part++)); | ||
34 | do | ||
35 | dmesg -c | ||
36 | |||
37 | insmod $READ_TEST dev=$part | ||
38 | |||
39 | finish=`dmesg | grep -c 'mtd_readtest: finished'` | ||
40 | if [ $finish -eq 1 ]; then | ||
41 | echo "PASS: read test $part" | ||
42 | else | ||
43 | echo "FAIL: read test $part" | ||
44 | rmmod $READ_TEST | ||
45 | exit 1 | ||
46 | fi | ||
47 | |||
48 | rmmod $READ_TEST | ||
49 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/i2c b/recipes-test/ddt-runner/files/scripts/p2041rdb/i2c new file mode 100755 index 0000000..58800ce --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/i2c | |||
@@ -0,0 +1,44 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test i2c bus functionality for p2041rdb board. | ||
3 | |||
4 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
5 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
6 | else | ||
7 | echo "FAIL: no i2c adapters found" | ||
8 | exit 1 | ||
9 | fi | ||
10 | |||
11 | if [ -z "$adapters" ]; then | ||
12 | adapters=0 | ||
13 | fi | ||
14 | |||
15 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
16 | do | ||
17 | i2cdetect -y $adapters | ||
18 | if [ $? -ne 0 ]; then | ||
19 | echo "FAIL: detect i2c adapter $adapters failed" | ||
20 | else | ||
21 | echo "PASS: detect i2c adapter $adapters success" | ||
22 | fi | ||
23 | adapters=`expr $adapters + 1` | ||
24 | sleep 1 | ||
25 | done | ||
26 | |||
27 | i2cdetect -y 0 | ||
28 | if [ $? -ne 0 ]; then | ||
29 | echo "FAIL: detect i2c bus 0 fail" | ||
30 | exit 1 | ||
31 | else | ||
32 | echo "PASS: detect i2c bus 0 success" | ||
33 | fi | ||
34 | |||
35 | #i2c bus 0, device address 0x52, DDR3 DIMM Socket 1, SPD EEPROM | ||
36 | i2cdump -f -y 0 0x52 |grep UG51U6400N8SU | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read SPD EEPROM on i2c bus 0 fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | echo "PASS: read SPD EEPROM on i2c bus 0 success" | ||
42 | fi | ||
43 | |||
44 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/pci-express b/recipes-test/ddt-runner/files/scripts/p2041rdb/pci-express new file mode 100755 index 0000000..91db286 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/pci-express | |||
@@ -0,0 +1,109 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth0" | ||
4 | #sestord02 ip address | ||
5 | ethernet_ping_ipaddr="172.21.3.22" | ||
6 | ethernet_ipaddr=$1 | ||
7 | |||
8 | #Intel Corporation 82574L Gigabit Network Card (intel e1000e) | ||
9 | vendor_id="8086" | ||
10 | product_id="10d3" | ||
11 | |||
12 | #find vendor id & product id | ||
13 | lspci -nn |grep $vendor_id:$product_id | ||
14 | if [ $? -ne 0 ]; then | ||
15 | echo "FAIL: pci-e ethernet card device does not exist" | ||
16 | exit 1 | ||
17 | else | ||
18 | echo "PASS: got pci-e ethernet card device" | ||
19 | fi | ||
20 | |||
21 | setpci -v -d $vendor_id:$product_id latency_timer=b0 | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: parameter changes to pci config space failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: parameter changes to pci config space success" | ||
27 | fi | ||
28 | |||
29 | IFCONFIG=`which ifconfig` | ||
30 | |||
31 | $IFCONFIG $ethernet_interface up | ||
32 | $IFCONFIG | grep $ethernet_interface | ||
33 | if [ $? -ne 0 ]; then | ||
34 | echo "FAIL: pci-e ethernet card device $ethernet_interface is not up" | ||
35 | exit 1 | ||
36 | else | ||
37 | echo "PASS: pci-e ethernet card device $ethernet_interface is up" | ||
38 | fi | ||
39 | |||
40 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
41 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
42 | fi | ||
43 | |||
44 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
45 | if [ $? -ne 0 ]; then | ||
46 | echo "FAIL: ipaddr of pci-e ethernet card device $ethernet_interface setup failed" | ||
47 | exit 1 | ||
48 | else | ||
49 | echo "PASS: ipaddr of pci-e ethernet card device $ethernet_interface setup success" | ||
50 | fi | ||
51 | |||
52 | mindatasize=56 | ||
53 | maxdatasize=650 | ||
54 | stepsize=100 | ||
55 | iteration=1 | ||
56 | datasize=$mindatasize | ||
57 | logfile=`/bin/mktemp` | ||
58 | statistics=`/bin/mktemp` | ||
59 | error=0 | ||
60 | |||
61 | trap cleanup SIGHUP SIGINT SIGTERM | ||
62 | |||
63 | clean_tasks() { | ||
64 | echo "Executing clean up tasks" | ||
65 | rm -f $logfile $statistics | ||
66 | } | ||
67 | |||
68 | cleanup() { | ||
69 | echo "Aborting script execution" | ||
70 | clean_tasks | ||
71 | exit 0 | ||
72 | } | ||
73 | |||
74 | echo "start ping test for pci-e ethernet card device $ethernet_interface..." | ||
75 | |||
76 | while [ $datasize -le $maxdatasize ]; do | ||
77 | for i in `seq 1 $iteration`; do | ||
78 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
79 | ping_err=`echo $?` | ||
80 | echo "" && cat $statistics | grep -r "PING" | ||
81 | cat $statistics | grep -r "received" | ||
82 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
83 | packets_received=`cat $statistics | \ | ||
84 | grep -r "received" | awk '{print$4}'` | ||
85 | |||
86 | # Evaluate possible errors on the ping operation | ||
87 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
88 | error=1 | ||
89 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
90 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
91 | fi | ||
92 | done | ||
93 | let datasize=$datasize+$stepsize | ||
94 | done | ||
95 | |||
96 | # Report failures | ||
97 | if [ $error -eq 1 ]; then | ||
98 | echo -e "=================== error report ===================\n" | ||
99 | cat $logfile | ||
100 | echo -e "====================================================\n" | ||
101 | clean_tasks | ||
102 | echo -e "FAIL: ping test for pci-e ethernet card device $ethernet_interface failed\n" | ||
103 | exit 1 | ||
104 | else | ||
105 | clean_tasks | ||
106 | echo -e "PASS: ping test for pci-e ethernet card device $ethernet_interface success\n" | ||
107 | fi | ||
108 | |||
109 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/sata b/recipes-test/ddt-runner/files/scripts/p2041rdb/sata new file mode 100755 index 0000000..b7f1fab --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/sata | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test sata devices on target | ||
4 | # | ||
5 | result=0 | ||
6 | devpath="" | ||
7 | satainfo="" | ||
8 | SD=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
9 | if [ -z "$SD" ]; then | ||
10 | echo "FAIL: find sata device" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: find sata device" | ||
14 | fi | ||
15 | HDPARM=`which hdparm` | ||
16 | if [ -z $HDPARM ]; then | ||
17 | result=$? | ||
18 | echo "FAIL: find hdparm" | ||
19 | fi | ||
20 | echo "PASS: find hdparm" | ||
21 | |||
22 | |||
23 | for s in $SD | ||
24 | do | ||
25 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
26 | satainfo=`ls -l $devpath | grep sata` | ||
27 | |||
28 | if [ -z "$satainfo" ] ; then | ||
29 | continue | ||
30 | fi | ||
31 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
32 | |||
33 | echo "testing $s" | ||
34 | $HDPARM -I $s | ||
35 | if [ $? -ne 0 ]; then | ||
36 | result=$? | ||
37 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
38 | else | ||
39 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
40 | fi | ||
41 | $HDPARM -tT $s | ||
42 | if [ $? -ne 0 ]; then | ||
43 | result=$? | ||
44 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
45 | else | ||
46 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
47 | fi | ||
48 | |||
49 | |||
50 | mkdir -p /mnt/sata_tmp | ||
51 | for partition in `ls "$s"[1-9]` | ||
52 | do | ||
53 | mount "$partition" /mnt/sata_tmp | ||
54 | if [ $? -ne 0 ]; then | ||
55 | result=$? | ||
56 | echo "FAIL: Mount $s" | ||
57 | else | ||
58 | echo "PASS: Mount $s" | ||
59 | dd if=/dev/urandom of=/mnt/sata_tmp/writefile bs=1M count=50 | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: write test on $s" | ||
63 | else | ||
64 | echo "PASS: write test on $s" | ||
65 | rm -f /mnt/sata_tmp/writefile | ||
66 | fi | ||
67 | dd if=$s of=/mnt/sata_tmp/readfile bs=1M count=10 | ||
68 | if [ $? -ne 0 ]; then | ||
69 | result=$? | ||
70 | echo "FAIL: read test on $s" | ||
71 | else | ||
72 | echo "PASS: read test on $s" | ||
73 | rm -f /mnt/sata_tmp/readfile | ||
74 | fi | ||
75 | umount /mnt/sata_tmp | ||
76 | fi | ||
77 | done | ||
78 | |||
79 | rm -fr /mnt/sata_tmp | ||
80 | done | ||
81 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/sdhc b/recipes-test/ddt-runner/files/scripts/p2041rdb/sdhc new file mode 100755 index 0000000..bc3026b --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/sdhc | |||
@@ -0,0 +1,41 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #the content of SD will be lost by running this test case. | ||
4 | |||
5 | SDHC_DEVICE="/dev/mmcblk0p1" | ||
6 | |||
7 | if [ ! -e $SDHC_DEVICE ]; then | ||
8 | echo "FAIL: $SDHC_DEVICE does not exist" | ||
9 | exit 1 | ||
10 | else | ||
11 | echo "PASS: $SDHC_DEVICE device exists" | ||
12 | fi | ||
13 | |||
14 | mount |grep mmcblk0p1 | ||
15 | if [ $? -eq 0 ]; then | ||
16 | umount $SDHC_DEVICE | ||
17 | fi | ||
18 | |||
19 | /sbin/mkfs.ext2 $SDHC_DEVICE | ||
20 | if [ $? -ne 0 ]; then | ||
21 | echo "FAIL: format $SDHC_DEVICE fail" | ||
22 | exit 1 | ||
23 | else | ||
24 | mkdir -p /mnt/sdhc | ||
25 | mount $SDHC_DEVICE /mnt/sdhc | ||
26 | if [ $? -ne 0 ]; then | ||
27 | echo "FAIL: mount $SDHC_DEVICE fail" | ||
28 | exit 1 | ||
29 | else | ||
30 | cp /bin/busybox /mnt/sdhc | ||
31 | ls /mnt/sdhc |grep busybox | ||
32 | if [ $? -ne 0 ]; then | ||
33 | echo "FAIL: read or write $SDHC_DEVICE fail" | ||
34 | exit 1 | ||
35 | else | ||
36 | umount $SDHC_DEVICE | ||
37 | echo "PASS: read or write $SDHC_DEVICE success" | ||
38 | fi | ||
39 | fi | ||
40 | fi | ||
41 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/p2041rdb/usb b/recipes-test/ddt-runner/files/scripts/p2041rdb/usb new file mode 100755 index 0000000..017287f --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p2041rdb/usb | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test usb devices on p2041rdb target | ||
4 | # | ||
5 | |||
6 | USB_DISK=`ls /dev/sd*[1-9] | sort | tail -n 1` | ||
7 | |||
8 | usbutils_is_installed=`which lsusb` | ||
9 | if [ -z $usbutils_is_installed ]; then | ||
10 | echo "FAIL: Cannot find lsusb" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: usbutils found" | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: $usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | lsusb | grep -v root\ hub | ||
25 | mkdir -p /mnt/usb_ehci | ||
26 | mount $USB_DISK /mnt/usb_ehci | ||
27 | if [ $? -ne 0 ]; then | ||
28 | echo "FAIL: Mount USB device failed" | ||
29 | exit 1 | ||
30 | else | ||
31 | echo "PASS: Mount USB device succeed" | ||
32 | fi | ||
33 | |||
34 | echo "Begin test usb device..." | ||
35 | dd if=/dev/urandom of=/mnt/usb_ehci/testfile bs=1M count=50 | ||
36 | if [ $? -ne 0 ]; then | ||
37 | echo "FAIL: test failed" | ||
38 | rm -f /mnt/usb_ehci_testfile | ||
39 | umount /mnt/usb_ehci | ||
40 | rm -fr /mnt/usb_ehci | ||
41 | exit 1 | ||
42 | fi | ||
43 | |||
44 | echo "PASS: test succeed" | ||
45 | rm -f /mnt/usb_ehci_testfile | ||
46 | umount /mnt/usb_ehci | ||
47 | rm -fr /mnt/usb_ehci | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/ethernet b/recipes-test/ddt-runner/files/scripts/p4080ds/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/flash b/recipes-test/ddt-runner/files/scripts/p4080ds/flash new file mode 100755 index 0000000..19f95aa --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/flash | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in p4080ds and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | fi | ||
12 | |||
13 | for((part=0; part<$part_num-1; part++)); | ||
14 | do | ||
15 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
16 | echo "PASS: show partition $part debug info" | ||
17 | else | ||
18 | echo "FAIL: show partition $part debug info" | ||
19 | fi | ||
20 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/i2c b/recipes-test/ddt-runner/files/scripts/p4080ds/i2c new file mode 100755 index 0000000..5b312b9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/rtc b/recipes-test/ddt-runner/files/scripts/p4080ds/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/sdhc b/recipes-test/ddt-runner/files/scripts/p4080ds/sdhc new file mode 100755 index 0000000..31a7c2f --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/sdhc | |||
@@ -0,0 +1,65 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test sdhc functionality for p4080ds. | ||
3 | # The content of SD will be lost by running this test case. | ||
4 | |||
5 | SDHC_DEVICE="/dev/mmcblk0" | ||
6 | SDHC_DEVICE_PART="/dev/mmcblk0p1" | ||
7 | SFDISK=`which sfdisk` | ||
8 | |||
9 | if [ -e $SDHC_DEVICE ]; then | ||
10 | echo "PASS: $SDHC_DEVICE device exists" | ||
11 | else | ||
12 | echo "FAIL: $SDHC_DEVICE does not exist" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | if [ -e $SDHC_DEVICE_PART ]; then | ||
17 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
18 | elif [ ! -z $SFDISK ]; then | ||
19 | |||
20 | echo "Try to create a partition" | ||
21 | |||
22 | $SFDISK $SDHC_DEVICE << EOF | ||
23 | ,,L | ||
24 | EOF | ||
25 | |||
26 | if [ -e $SDHC_DEVICE_PART ]; then | ||
27 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
28 | else | ||
29 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
30 | exit 1 | ||
31 | fi | ||
32 | |||
33 | else | ||
34 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
35 | exit 1 | ||
36 | fi | ||
37 | |||
38 | mount |grep mmcblk0p1 | ||
39 | if [ $? -eq 0 ]; then | ||
40 | umount $SDHC_DEVICE_PART | ||
41 | fi | ||
42 | |||
43 | /sbin/mkfs.ext2 $SDHC_DEVICE_PART | ||
44 | if [ $? -ne 0 ]; then | ||
45 | echo "FAIL: format $SDHC_DEVICE_PART fail" | ||
46 | exit 1 | ||
47 | else | ||
48 | mkdir -p /mnt/sdhc | ||
49 | mount $SDHC_DEVICE_PART /mnt/sdhc | ||
50 | if [ $? -ne 0 ]; then | ||
51 | echo "FAIL: mount $SDHC_DEVICE_PART fail" | ||
52 | exit 1 | ||
53 | else | ||
54 | cp /bin/busybox /mnt/sdhc | ||
55 | ls /mnt/sdhc |grep busybox | ||
56 | if [ $? -ne 0 ]; then | ||
57 | echo "FAIL: read or write $SDHC_DEVICE_PART fail" | ||
58 | exit 1 | ||
59 | else | ||
60 | umount $SDHC_DEVICE_PART | ||
61 | echo "PASS: read or write $SDHC_DEVICE_PART success" | ||
62 | fi | ||
63 | fi | ||
64 | fi | ||
65 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/spi b/recipes-test/ddt-runner/files/scripts/p4080ds/spi new file mode 100755 index 0000000..b4df851 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to p4080 cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd4" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock4" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/p4080ds/usb b/recipes-test/ddt-runner/files/scripts/p4080ds/usb new file mode 100755 index 0000000..970e913 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/p4080ds/usb | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test usb functionality for p4080ds. | ||
4 | # | ||
5 | |||
6 | result=0 | ||
7 | devpath="" | ||
8 | usbinfo="" | ||
9 | |||
10 | usbutils_is_installed=`which lsusb` | ||
11 | if [ -z $usbutils_is_installed ]; then | ||
12 | echo "FAIL: Cannot find lsusb" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "$usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | sd=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
25 | if [ -z "$sd" ]; then | ||
26 | echo "FAIL: find sd device" | ||
27 | exit 1 | ||
28 | else | ||
29 | echo "PASS: find sd device" | ||
30 | fi | ||
31 | |||
32 | HDPARM=`which hdparm` | ||
33 | if [ -z $HDPARM ]; then | ||
34 | result=$? | ||
35 | echo "FAIL: find hdparm" | ||
36 | fi | ||
37 | echo "PASS: find hdparm" | ||
38 | |||
39 | for s in $sd | ||
40 | do | ||
41 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
42 | usbinfo=`ls -l $devpath | grep usb` | ||
43 | |||
44 | if [ -z "$usbinfo" ] ; then | ||
45 | continue | ||
46 | fi | ||
47 | |||
48 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
49 | |||
50 | echo "Testing $s" | ||
51 | $HDPARM -I $s | ||
52 | if [ $? -ne 0 ]; then | ||
53 | result=$? | ||
54 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
55 | else | ||
56 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
57 | fi | ||
58 | |||
59 | $HDPARM -tT $s | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
63 | else | ||
64 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
65 | fi | ||
66 | |||
67 | mkdir -p /mnt/usb_tmp | ||
68 | for partition in `ls "$s"[1-9]` | ||
69 | do | ||
70 | echo "Testing $partition" | ||
71 | |||
72 | mount "$partition" /mnt/usb_tmp | ||
73 | if [ $? -ne 0 ]; then | ||
74 | result=$? | ||
75 | echo "FAIL: mount $s" | ||
76 | else | ||
77 | echo "PASS: mount $s" | ||
78 | dd if=/dev/urandom of=/mnt/usb_tmp/writefile bs=1M count=50 | ||
79 | if [ $? -ne 0 ]; then | ||
80 | result=$? | ||
81 | echo "FAIL: write test on $s" | ||
82 | else | ||
83 | echo "PASS: write test on $s" | ||
84 | rm -f /mnt/usb_tmp/writefile | ||
85 | fi | ||
86 | dd if=$s of=/mnt/usb_tmp/readfile bs=1M count=10 | ||
87 | if [ $? -ne 0 ]; then | ||
88 | result=$? | ||
89 | echo "FAIL: read test on $s" | ||
90 | else | ||
91 | echo "PASS: read test on $s" | ||
92 | rm -f /mnt/usb_tmp/readfile | ||
93 | fi | ||
94 | umount /mnt/usb_tmp | ||
95 | fi | ||
96 | done | ||
97 | |||
98 | rm -fr /mnt/usb_tmp | ||
99 | done | ||
100 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/pandaboard/ethernet b/recipes-test/ddt-runner/files/scripts/pandaboard/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/pandaboard/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/pandaboard/i2c b/recipes-test/ddt-runner/files/scripts/pandaboard/i2c new file mode 100755 index 0000000..5b312b9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/pandaboard/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/pandaboard/rtc b/recipes-test/ddt-runner/files/scripts/pandaboard/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/pandaboard/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/pandaboard/sdhc b/recipes-test/ddt-runner/files/scripts/pandaboard/sdhc new file mode 100755 index 0000000..e341ebc --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/pandaboard/sdhc | |||
@@ -0,0 +1,65 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test sdhc functionality for pandaboard. | ||
3 | # The content of SD will be lost by running this test case. | ||
4 | |||
5 | SDHC_DEVICE="/dev/mmcblk0" | ||
6 | SDHC_DEVICE_PART="/dev/mmcblk0p1" | ||
7 | SFDISK=`which sfdisk` | ||
8 | |||
9 | if [ -e $SDHC_DEVICE ]; then | ||
10 | echo "PASS: $SDHC_DEVICE device exists" | ||
11 | else | ||
12 | echo "FAIL: $SDHC_DEVICE does not exist" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | if [ -e $SDHC_DEVICE_PART ]; then | ||
17 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
18 | elif [ ! -z $SFDISK ]; then | ||
19 | |||
20 | echo "Try to create a partition" | ||
21 | |||
22 | $SFDISK $SDHC_DEVICE << EOF | ||
23 | ,,L | ||
24 | EOF | ||
25 | |||
26 | if [ -e $SDHC_DEVICE_PART ]; then | ||
27 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
28 | else | ||
29 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
30 | exit 1 | ||
31 | fi | ||
32 | |||
33 | else | ||
34 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
35 | exit 1 | ||
36 | fi | ||
37 | |||
38 | mount |grep mmcblk0p1 | ||
39 | if [ $? -eq 0 ]; then | ||
40 | umount $SDHC_DEVICE_PART | ||
41 | fi | ||
42 | |||
43 | /sbin/mkfs.ext2 $SDHC_DEVICE_PART | ||
44 | if [ $? -ne 0 ]; then | ||
45 | echo "FAIL: format $SDHC_DEVICE_PART fail" | ||
46 | exit 1 | ||
47 | else | ||
48 | mkdir -p /mnt/sdhc | ||
49 | mount $SDHC_DEVICE_PART /mnt/sdhc | ||
50 | if [ $? -ne 0 ]; then | ||
51 | echo "FAIL: mount $SDHC_DEVICE_PART fail" | ||
52 | exit 1 | ||
53 | else | ||
54 | cp /bin/busybox /mnt/sdhc | ||
55 | ls /mnt/sdhc |grep busybox | ||
56 | if [ $? -ne 0 ]; then | ||
57 | echo "FAIL: read or write $SDHC_DEVICE_PART fail" | ||
58 | exit 1 | ||
59 | else | ||
60 | umount $SDHC_DEVICE_PART | ||
61 | echo "PASS: read or write $SDHC_DEVICE_PART success" | ||
62 | fi | ||
63 | fi | ||
64 | fi | ||
65 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/pandaboard/usb b/recipes-test/ddt-runner/files/scripts/pandaboard/usb new file mode 100755 index 0000000..15c417a --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/pandaboard/usb | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test usb functionality for romley-ivb. | ||
4 | # | ||
5 | |||
6 | result=0 | ||
7 | devpath="" | ||
8 | usbinfo="" | ||
9 | |||
10 | usbutils_is_installed=`which lsusb` | ||
11 | if [ -z $usbutils_is_installed ]; then | ||
12 | echo "FAIL: Cannot find lsusb" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "$usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | sd=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
25 | if [ -z "$sd" ]; then | ||
26 | echo "FAIL: find sd device" | ||
27 | exit 1 | ||
28 | else | ||
29 | echo "PASS: find sd device" | ||
30 | fi | ||
31 | |||
32 | HDPARM=`which hdparm` | ||
33 | if [ -z $HDPARM ]; then | ||
34 | result=$? | ||
35 | echo "FAIL: find hdparm" | ||
36 | fi | ||
37 | echo "PASS: find hdparm" | ||
38 | |||
39 | for s in $sd | ||
40 | do | ||
41 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
42 | usbinfo=`ls -l $devpath | grep usb` | ||
43 | |||
44 | if [ -z "$usbinfo" ] ; then | ||
45 | continue | ||
46 | fi | ||
47 | |||
48 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
49 | |||
50 | echo "Testing $s" | ||
51 | $HDPARM -I $s | ||
52 | if [ $? -ne 0 ]; then | ||
53 | result=$? | ||
54 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
55 | else | ||
56 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
57 | fi | ||
58 | |||
59 | $HDPARM -tT $s | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
63 | else | ||
64 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
65 | fi | ||
66 | |||
67 | mkdir -p /mnt/usb_tmp | ||
68 | for partition in `ls "$s"[1-9]` | ||
69 | do | ||
70 | echo "Testing $partition" | ||
71 | |||
72 | mount "$partition" /mnt/usb_tmp | ||
73 | if [ $? -ne 0 ]; then | ||
74 | result=$? | ||
75 | echo "FAIL: mount $s" | ||
76 | else | ||
77 | echo "PASS: mount $s" | ||
78 | dd if=/dev/urandom of=/mnt/usb_tmp/writefile bs=1M count=50 | ||
79 | if [ $? -ne 0 ]; then | ||
80 | result=$? | ||
81 | echo "FAIL: write test on $s" | ||
82 | else | ||
83 | echo "PASS: write test on $s" | ||
84 | rm -f /mnt/usb_tmp/writefile | ||
85 | fi | ||
86 | dd if=$s of=/mnt/usb_tmp/readfile bs=1M count=10 | ||
87 | if [ $? -ne 0 ]; then | ||
88 | result=$? | ||
89 | echo "FAIL: read test on $s" | ||
90 | else | ||
91 | echo "PASS: read test on $s" | ||
92 | rm -f /mnt/usb_tmp/readfile | ||
93 | fi | ||
94 | umount /mnt/usb_tmp | ||
95 | fi | ||
96 | done | ||
97 | |||
98 | rm -fr /mnt/usb_tmp | ||
99 | done | ||
100 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/proliant-m800/ethernet b/recipes-test/ddt-runner/files/scripts/proliant-m800/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/proliant-m800/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/proliant-m800/i2c b/recipes-test/ddt-runner/files/scripts/proliant-m800/i2c new file mode 100755 index 0000000..5202950 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/proliant-m800/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/proliant-m800/sata b/recipes-test/ddt-runner/files/scripts/proliant-m800/sata new file mode 100755 index 0000000..25bf15a --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/proliant-m800/sata | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test sata devices on target | ||
4 | # | ||
5 | result=0 | ||
6 | devpath="" | ||
7 | satainfo="" | ||
8 | SD=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
9 | if [ -z "$SD" ]; then | ||
10 | echo "FAIL: find sata device" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: find sata device" | ||
14 | fi | ||
15 | HDPARM=`which hdparm` | ||
16 | if [ -z $HDPARM ]; then | ||
17 | result=$? | ||
18 | echo "FAIL: find hdparm" | ||
19 | fi | ||
20 | echo "PASS: find hdparm" | ||
21 | |||
22 | |||
23 | for s in $SD | ||
24 | do | ||
25 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
26 | satainfo=`ls -l $devpath | grep sata` | ||
27 | |||
28 | if [ -z "$satainfo" ] ; then | ||
29 | continue | ||
30 | fi | ||
31 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
32 | |||
33 | echo "testing $s" | ||
34 | $HDPARM -I $s | ||
35 | if [ $? -ne 0 ]; then | ||
36 | result=$? | ||
37 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
38 | else | ||
39 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
40 | fi | ||
41 | $HDPARM -tT $s | ||
42 | if [ $? -ne 0 ]; then | ||
43 | result=$? | ||
44 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
45 | else | ||
46 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
47 | fi | ||
48 | |||
49 | |||
50 | mkdir -p /mnt/sata_tmp | ||
51 | for partition in `ls "$s"[1-9]` | ||
52 | do | ||
53 | mount "$partition" /mnt/sata_tmp | ||
54 | if [ $? -ne 0 ]; then | ||
55 | result=$? | ||
56 | echo "FAIL: Mount $s" | ||
57 | else | ||
58 | echo "PASS: Mount $s" | ||
59 | dd if=/dev/urandom of=/mnt/sata_tmp/writefile bs=1M count=50 | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: write test on $s" | ||
63 | else | ||
64 | echo "PASS: write test on $s" | ||
65 | rm -f /mnt/sata_tmp/writefile | ||
66 | fi | ||
67 | dd if=$s of=/mnt/sata_tmp/readfile bs=1M count=10 | ||
68 | if [ $? -ne 0 ]; then | ||
69 | result=$? | ||
70 | echo "FAIL: read test on $s" | ||
71 | else | ||
72 | echo "PASS: read test on $s" | ||
73 | rm -f /mnt/sata_tmp/readfile | ||
74 | fi | ||
75 | umount /mnt/sata_tmp | ||
76 | fi | ||
77 | done | ||
78 | |||
79 | rm -fr /mnt/sata_tmp | ||
80 | done | ||
81 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/romley-ivb/ethernet b/recipes-test/ddt-runner/files/scripts/romley-ivb/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/romley-ivb/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/romley-ivb/rtc b/recipes-test/ddt-runner/files/scripts/romley-ivb/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/romley-ivb/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/romley-ivb/sata b/recipes-test/ddt-runner/files/scripts/romley-ivb/sata new file mode 100755 index 0000000..25bf15a --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/romley-ivb/sata | |||
@@ -0,0 +1,81 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | #This script is to test sata devices on target | ||
4 | # | ||
5 | result=0 | ||
6 | devpath="" | ||
7 | satainfo="" | ||
8 | SD=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
9 | if [ -z "$SD" ]; then | ||
10 | echo "FAIL: find sata device" | ||
11 | exit 1 | ||
12 | else | ||
13 | echo "PASS: find sata device" | ||
14 | fi | ||
15 | HDPARM=`which hdparm` | ||
16 | if [ -z $HDPARM ]; then | ||
17 | result=$? | ||
18 | echo "FAIL: find hdparm" | ||
19 | fi | ||
20 | echo "PASS: find hdparm" | ||
21 | |||
22 | |||
23 | for s in $SD | ||
24 | do | ||
25 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
26 | satainfo=`ls -l $devpath | grep sata` | ||
27 | |||
28 | if [ -z "$satainfo" ] ; then | ||
29 | continue | ||
30 | fi | ||
31 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
32 | |||
33 | echo "testing $s" | ||
34 | $HDPARM -I $s | ||
35 | if [ $? -ne 0 ]; then | ||
36 | result=$? | ||
37 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
38 | else | ||
39 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
40 | fi | ||
41 | $HDPARM -tT $s | ||
42 | if [ $? -ne 0 ]; then | ||
43 | result=$? | ||
44 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
45 | else | ||
46 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
47 | fi | ||
48 | |||
49 | |||
50 | mkdir -p /mnt/sata_tmp | ||
51 | for partition in `ls "$s"[1-9]` | ||
52 | do | ||
53 | mount "$partition" /mnt/sata_tmp | ||
54 | if [ $? -ne 0 ]; then | ||
55 | result=$? | ||
56 | echo "FAIL: Mount $s" | ||
57 | else | ||
58 | echo "PASS: Mount $s" | ||
59 | dd if=/dev/urandom of=/mnt/sata_tmp/writefile bs=1M count=50 | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: write test on $s" | ||
63 | else | ||
64 | echo "PASS: write test on $s" | ||
65 | rm -f /mnt/sata_tmp/writefile | ||
66 | fi | ||
67 | dd if=$s of=/mnt/sata_tmp/readfile bs=1M count=10 | ||
68 | if [ $? -ne 0 ]; then | ||
69 | result=$? | ||
70 | echo "FAIL: read test on $s" | ||
71 | else | ||
72 | echo "PASS: read test on $s" | ||
73 | rm -f /mnt/sata_tmp/readfile | ||
74 | fi | ||
75 | umount /mnt/sata_tmp | ||
76 | fi | ||
77 | done | ||
78 | |||
79 | rm -fr /mnt/sata_tmp | ||
80 | done | ||
81 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/romley-ivb/usb b/recipes-test/ddt-runner/files/scripts/romley-ivb/usb new file mode 100755 index 0000000..15c417a --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/romley-ivb/usb | |||
@@ -0,0 +1,100 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test usb functionality for romley-ivb. | ||
4 | # | ||
5 | |||
6 | result=0 | ||
7 | devpath="" | ||
8 | usbinfo="" | ||
9 | |||
10 | usbutils_is_installed=`which lsusb` | ||
11 | if [ -z $usbutils_is_installed ]; then | ||
12 | echo "FAIL: Cannot find lsusb" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | usbdev_num=`lsusb | grep -v root\ hub | wc -l` | ||
17 | if [ $usbdev_num -eq 0 ]; then | ||
18 | echo "FAIL: USB device is not connected" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "$usbdev_num USB device(s) connected" | ||
22 | fi | ||
23 | |||
24 | sd=`ls -l /dev/sd[^0-9] | awk '{print $5 $6 "," $10}'` | ||
25 | if [ -z "$sd" ]; then | ||
26 | echo "FAIL: find sd device" | ||
27 | exit 1 | ||
28 | else | ||
29 | echo "PASS: find sd device" | ||
30 | fi | ||
31 | |||
32 | HDPARM=`which hdparm` | ||
33 | if [ -z $HDPARM ]; then | ||
34 | result=$? | ||
35 | echo "FAIL: find hdparm" | ||
36 | fi | ||
37 | echo "PASS: find hdparm" | ||
38 | |||
39 | for s in $sd | ||
40 | do | ||
41 | devpath=`echo "$s" | awk -F "," '{print "/sys/dev/block/" $1 ":" $2}'` | ||
42 | usbinfo=`ls -l $devpath | grep usb` | ||
43 | |||
44 | if [ -z "$usbinfo" ] ; then | ||
45 | continue | ||
46 | fi | ||
47 | |||
48 | s=`echo "$s" | awk -F "," '{print $3}'` | ||
49 | |||
50 | echo "Testing $s" | ||
51 | $HDPARM -I $s | ||
52 | if [ $? -ne 0 ]; then | ||
53 | result=$? | ||
54 | echo "FAIL: $HDPARM -I $s Detailed/current information directly from $s" | ||
55 | else | ||
56 | echo "PASS: $HDPARM -I $s Detailed/current information directly from $s" | ||
57 | fi | ||
58 | |||
59 | $HDPARM -tT $s | ||
60 | if [ $? -ne 0 ]; then | ||
61 | result=$? | ||
62 | echo "FAIL: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
63 | else | ||
64 | echo "PASS: $HDPARM -tT $s Perform device/cache read timings on $s" | ||
65 | fi | ||
66 | |||
67 | mkdir -p /mnt/usb_tmp | ||
68 | for partition in `ls "$s"[1-9]` | ||
69 | do | ||
70 | echo "Testing $partition" | ||
71 | |||
72 | mount "$partition" /mnt/usb_tmp | ||
73 | if [ $? -ne 0 ]; then | ||
74 | result=$? | ||
75 | echo "FAIL: mount $s" | ||
76 | else | ||
77 | echo "PASS: mount $s" | ||
78 | dd if=/dev/urandom of=/mnt/usb_tmp/writefile bs=1M count=50 | ||
79 | if [ $? -ne 0 ]; then | ||
80 | result=$? | ||
81 | echo "FAIL: write test on $s" | ||
82 | else | ||
83 | echo "PASS: write test on $s" | ||
84 | rm -f /mnt/usb_tmp/writefile | ||
85 | fi | ||
86 | dd if=$s of=/mnt/usb_tmp/readfile bs=1M count=10 | ||
87 | if [ $? -ne 0 ]; then | ||
88 | result=$? | ||
89 | echo "FAIL: read test on $s" | ||
90 | else | ||
91 | echo "PASS: read test on $s" | ||
92 | rm -f /mnt/usb_tmp/readfile | ||
93 | fi | ||
94 | umount /mnt/usb_tmp | ||
95 | fi | ||
96 | done | ||
97 | |||
98 | rm -fr /mnt/usb_tmp | ||
99 | done | ||
100 | exit $result | ||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/ethernet b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/ethernet new file mode 100755 index 0000000..5355f10 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/ethernet | |||
@@ -0,0 +1,88 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | ethernet_interface="eth1" | ||
4 | ethernet_ping_ipaddr="172.21.3.22" | ||
5 | ethernet_ipaddr=$1 | ||
6 | |||
7 | IFCONFIG=`which ifconfig` | ||
8 | |||
9 | $IFCONFIG $ethernet_interface up | ||
10 | $IFCONFIG | grep $ethernet_interface | ||
11 | if [ $? -ne 0 ]; then | ||
12 | echo "FAIL: $ethernet_interface is not up" | ||
13 | exit 1 | ||
14 | else | ||
15 | echo "PASS: $ethernet_interface is up" | ||
16 | fi | ||
17 | |||
18 | if [ "x$ethernet_ipaddr" != "x" ]; then | ||
19 | $IFCONFIG $ethernet_interface $ethernet_ipaddr | ||
20 | fi | ||
21 | |||
22 | $IFCONFIG $ethernet_interface |grep 'inet addr:' |sed -e 's@inet addr:@@' |sed q | awk '{print $1}' | ||
23 | if [ $? -ne 0 ]; then | ||
24 | echo "FAIL: ipaddr of $ethernet_interface setup failed" | ||
25 | exit 1 | ||
26 | else | ||
27 | echo "PASS: ipaddr of $ethernet_interface setup success" | ||
28 | fi | ||
29 | |||
30 | mindatasize=56 | ||
31 | maxdatasize=650 | ||
32 | stepsize=100 | ||
33 | iteration=1 | ||
34 | datasize=$mindatasize | ||
35 | logfile=`/bin/mktemp` | ||
36 | statistics=`/bin/mktemp` | ||
37 | error=0 | ||
38 | |||
39 | trap cleanup SIGHUP SIGINT SIGTERM | ||
40 | |||
41 | clean_tasks() { | ||
42 | echo "Executing clean up tasks" | ||
43 | rm -f $logfile $statistics | ||
44 | } | ||
45 | |||
46 | cleanup() { | ||
47 | echo "Aborting script execution" | ||
48 | clean_tasks | ||
49 | exit 0 | ||
50 | } | ||
51 | |||
52 | echo "start ping test for $ethernet_interface..." | ||
53 | |||
54 | while [ $datasize -le $maxdatasize ]; do | ||
55 | for i in `seq 1 $iteration`; do | ||
56 | ping -c 1 -s $datasize $ethernet_ping_ipaddr > $statistics | ||
57 | ping_err=`echo $?` | ||
58 | echo "" && cat $statistics | grep -r "PING" | ||
59 | cat $statistics | grep -r "received" | ||
60 | [ `echo $?` -eq 0 ] || packets_received=0 && \ | ||
61 | packets_received=`cat $statistics | \ | ||
62 | grep -r "received" | awk '{print$4}'` | ||
63 | |||
64 | # Evaluate possible errors on the ping operation | ||
65 | if [ $ping_err -ne 0 ] || [ $packets_received -eq 0 ]; then | ||
66 | error=1 | ||
67 | echo -e `cat $statistics | grep -r PING` >> $logfile | ||
68 | echo -e "Size: $datasize Iteration: $i\n" >> $logfile | ||
69 | fi | ||
70 | done | ||
71 | let datasize=$datasize+$stepsize | ||
72 | done | ||
73 | |||
74 | # Report failures | ||
75 | if [ $error -eq 1 ]; then | ||
76 | echo -e "=================== error report ===================\n" | ||
77 | cat $logfile | ||
78 | echo -e "====================================================\n" | ||
79 | clean_tasks | ||
80 | echo -e "FAIL: ping test for $ethernet_interface failed\n" | ||
81 | exit 1 | ||
82 | else | ||
83 | clean_tasks | ||
84 | echo -e "PASS: ping test for $ethernet_interface success\n" | ||
85 | fi | ||
86 | |||
87 | echo "PASS: $ethernet_interface test passed" | ||
88 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/flash b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/flash new file mode 100755 index 0000000..7fa897c --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/flash | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # This script is used to test flash driver functionality. I removed the write | ||
4 | # operations since all partition are in use in zc702-zynq7 and there might be | ||
5 | # possibility of corrupting data even if we backup in test script. | ||
6 | |||
7 | if part_num=`cat /proc/mtd | grep -c 'mtd'`; then | ||
8 | echo "PASS: show $part_num partitions" | ||
9 | else | ||
10 | echo "FAIL: show $part_num partitions" | ||
11 | fi | ||
12 | |||
13 | for((part=0; part<$part_num-1; part++)); | ||
14 | do | ||
15 | if [ $(mtd_debug info /dev/mtd$part | grep -c 'mtd.type') ]; then | ||
16 | echo "PASS: show partition $part debug info" | ||
17 | else | ||
18 | echo "FAIL: show partition $part debug info" | ||
19 | fi | ||
20 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/i2c b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/i2c new file mode 100755 index 0000000..5b312b9 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/i2c | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if I2C_ADAPTERS=$(i2cdetect -l |wc -l); then | ||
4 | echo "PASS: found $I2C_ADAPTERS i2c adapters" | ||
5 | else | ||
6 | echo "FAIL: no i2c adapters found" | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ -z "$adapters" ]; then | ||
11 | adapters=0 | ||
12 | fi | ||
13 | |||
14 | while [ $adapters -lt $I2C_ADAPTERS ] | ||
15 | do | ||
16 | i2cdetect -y $adapters | ||
17 | if [ $? -ne 0 ]; then | ||
18 | echo "FAIL: detect i2c adapter $adapters failed" | ||
19 | else | ||
20 | echo "PASS: detect i2c adapter $adapters success" | ||
21 | fi | ||
22 | adapters=`expr $adapters + 1` | ||
23 | sleep 1 | ||
24 | done | ||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/rtc b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/rtc new file mode 100755 index 0000000..0d38293 --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/rtc | |||
@@ -0,0 +1,42 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RTC_DEVICE="/dev/rtc" | ||
4 | |||
5 | if [ ! -e $RTC_DEVICE ]; then | ||
6 | echo "FAIL: rtc device does not exist" | ||
7 | exit 1 | ||
8 | else | ||
9 | echo "PASS: rtc device exists" | ||
10 | fi | ||
11 | |||
12 | /sbin/hwclock -f $RTC_DEVICE | ||
13 | if [ $? -ne 0 ]; then | ||
14 | echo "FAIL: rtc device open failed" | ||
15 | exit 1 | ||
16 | else | ||
17 | echo "PASS: rtc device open success" | ||
18 | fi | ||
19 | |||
20 | |||
21 | /sbin/hwclock --systohc | ||
22 | if [ $? -ne 0 ]; then | ||
23 | echo "FAIL: sync system clock and hardware clock failed" | ||
24 | exit 1 | ||
25 | else | ||
26 | echo "PASS: sync system clock and hardware clock success" | ||
27 | fi | ||
28 | |||
29 | RTC_TIME=$(/sbin/hwclock -r |awk '{print $4}') | ||
30 | echo $RTC_TIME | ||
31 | SYS_TIME=$(date +%m/%d/%Y-%X |awk '{print $1}' |awk -F- '{print $2}') | ||
32 | echo $SYS_TIME | ||
33 | |||
34 | if [ "$RTC_TIME" = "$SYS_TIME" ] ; then | ||
35 | echo "PASS: system time same with hardware time" | ||
36 | else | ||
37 | echo "FAIL: system time different with hardware time" | ||
38 | exit 1 | ||
39 | fi | ||
40 | |||
41 | echo "PASS: rtc test successful" | ||
42 | exit 0 | ||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/sdhc b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/sdhc new file mode 100755 index 0000000..e341ebc --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/sdhc | |||
@@ -0,0 +1,65 @@ | |||
1 | #!/bin/sh | ||
2 | # This script is used to test sdhc functionality for pandaboard. | ||
3 | # The content of SD will be lost by running this test case. | ||
4 | |||
5 | SDHC_DEVICE="/dev/mmcblk0" | ||
6 | SDHC_DEVICE_PART="/dev/mmcblk0p1" | ||
7 | SFDISK=`which sfdisk` | ||
8 | |||
9 | if [ -e $SDHC_DEVICE ]; then | ||
10 | echo "PASS: $SDHC_DEVICE device exists" | ||
11 | else | ||
12 | echo "FAIL: $SDHC_DEVICE does not exist" | ||
13 | exit 1 | ||
14 | fi | ||
15 | |||
16 | if [ -e $SDHC_DEVICE_PART ]; then | ||
17 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
18 | elif [ ! -z $SFDISK ]; then | ||
19 | |||
20 | echo "Try to create a partition" | ||
21 | |||
22 | $SFDISK $SDHC_DEVICE << EOF | ||
23 | ,,L | ||
24 | EOF | ||
25 | |||
26 | if [ -e $SDHC_DEVICE_PART ]; then | ||
27 | echo "PASS: $SDHC_DEVICE_PART device exists" | ||
28 | else | ||
29 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
30 | exit 1 | ||
31 | fi | ||
32 | |||
33 | else | ||
34 | echo "FAIL: $SDHC_DEVICE_PART does not exist" | ||
35 | exit 1 | ||
36 | fi | ||
37 | |||
38 | mount |grep mmcblk0p1 | ||
39 | if [ $? -eq 0 ]; then | ||
40 | umount $SDHC_DEVICE_PART | ||
41 | fi | ||
42 | |||
43 | /sbin/mkfs.ext2 $SDHC_DEVICE_PART | ||
44 | if [ $? -ne 0 ]; then | ||
45 | echo "FAIL: format $SDHC_DEVICE_PART fail" | ||
46 | exit 1 | ||
47 | else | ||
48 | mkdir -p /mnt/sdhc | ||
49 | mount $SDHC_DEVICE_PART /mnt/sdhc | ||
50 | if [ $? -ne 0 ]; then | ||
51 | echo "FAIL: mount $SDHC_DEVICE_PART fail" | ||
52 | exit 1 | ||
53 | else | ||
54 | cp /bin/busybox /mnt/sdhc | ||
55 | ls /mnt/sdhc |grep busybox | ||
56 | if [ $? -ne 0 ]; then | ||
57 | echo "FAIL: read or write $SDHC_DEVICE_PART fail" | ||
58 | exit 1 | ||
59 | else | ||
60 | umount $SDHC_DEVICE_PART | ||
61 | echo "PASS: read or write $SDHC_DEVICE_PART success" | ||
62 | fi | ||
63 | fi | ||
64 | fi | ||
65 | |||
diff --git a/recipes-test/ddt-runner/files/scripts/zc702-zynq7/spi b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/spi new file mode 100755 index 0000000..15df9bc --- /dev/null +++ b/recipes-test/ddt-runner/files/scripts/zc702-zynq7/spi | |||
@@ -0,0 +1,48 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | #An spi flash M25P80 connect to pandaboard cpu by spi bus, so the method | ||
4 | #is to read/write spi flash to verify whether the spi bus driver worked | ||
5 | #or not. | ||
6 | |||
7 | MTD_CHAR_DEVICE="/dev/mtd4" | ||
8 | MTD_BLOCK_DEVICE="/dev/mtdblock4" | ||
9 | |||
10 | if [ ! -e $MTD_CHAR_DEVICE ]; then | ||
11 | echo "FAIL: spi flash device $MTD_CHAR_DEVICE does not exist" | ||
12 | exit 1 | ||
13 | else | ||
14 | echo "PASS: spi flash device $MTD_CHAR_DEVICE exists" | ||
15 | fi | ||
16 | |||
17 | if [ ! -e $MTD_BLOCK_DEVICE ]; then | ||
18 | echo "FAIL: spi flash device $MTD_BLOCK_DEVICE does not exist" | ||
19 | exit 1 | ||
20 | else | ||
21 | echo "PASS: spi flash device $MTD_BLOCK_DEVICE exists" | ||
22 | fi | ||
23 | |||
24 | /usr/sbin/flash_erase -j $MTD_CHAR_DEVICE 0 0 | ||
25 | if [ $? -ne 0 ]; then | ||
26 | echo "FAIL: format spi flash device $MTD_BLOCK_DEVICE fail" | ||
27 | exit 1 | ||
28 | else | ||
29 | mkdir -p /mnt/spi | ||
30 | mount -t jffs2 $MTD_BLOCK_DEVICE /mnt/spi | ||
31 | if [ $? -ne 0 ]; then | ||
32 | echo "FAIL: mount spi flash device $MTD_BLOCK_DEVICE fail" | ||
33 | exit 1 | ||
34 | else | ||
35 | cp /bin/busybox /mnt/spi | ||
36 | ls /mnt/spi |grep busybox | ||
37 | if [ $? -ne 0 ]; then | ||
38 | echo "FAIL: read or write spi flash device $MTD_BLOCK_DEVICE fail" | ||
39 | exit 1 | ||
40 | else | ||
41 | umount $MTD_BLOCK_DEVICE | ||
42 | echo "PASS: read or write spi flash device $MTD_BLOCK_DEVICE success" | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | |||
47 | echo "PASS: spi bus test passed" | ||
48 | exit 0 | ||
diff --git a/recipes-test/perf-networking/files/perf-networking b/recipes-test/perf-networking/files/perf-networking new file mode 100755 index 0000000..f865374 --- /dev/null +++ b/recipes-test/perf-networking/files/perf-networking | |||
@@ -0,0 +1,14 @@ | |||
1 | #!/bin/sh | ||
2 | server_ip="172.24.0.50" | ||
3 | |||
4 | if ping -c1 $server_ip > /dev/null | ||
5 | then | ||
6 | netperf -H $server_ip -t TCP_STREAM | ||
7 | netperf -H $server_ip -t TCP_MAERTS | ||
8 | netperf -H $server_ip -t TCP_RR | ||
9 | netperf -H $server_ip -t TCP_CRR | ||
10 | netperf -H $server_ip -t UDP_STREAM | ||
11 | netperf -H $server_ip -t UDP_RR | ||
12 | else | ||
13 | echo "Error: Server is down!" | ||
14 | fi | ||
diff --git a/recipes-test/perf-networking/perf-networking_1.0.bb b/recipes-test/perf-networking/perf-networking_1.0.bb new file mode 100644 index 0000000..aa32a7d --- /dev/null +++ b/recipes-test/perf-networking/perf-networking_1.0.bb | |||
@@ -0,0 +1,19 @@ | |||
1 | SUMMARY = "A simple shell script to run network performance tests" | ||
2 | DESCRIPTION = "The perf-networking package installs the perf-networking \ | ||
3 | shell script which runs tests using the netperf package" | ||
4 | SRC_URI += "file://perf-networking" | ||
5 | |||
6 | LICENSE = "MIT" | ||
7 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \ | ||
8 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
9 | |||
10 | RDEPENDS_${PN}= "netperf" | ||
11 | |||
12 | do_install () { | ||
13 | install -D ${WORKDIR}/perf-networking ${D}${bindir}/perf-networking | ||
14 | } | ||
15 | |||
16 | do_patch[noexec] = "1" | ||
17 | do_configure[noexec] = "1" | ||
18 | do_compile[noexec] = "1" | ||
19 | do_build[noexec] = "1" | ||
diff --git a/recipes-test/stress/files/stress-itemx-after-item-only.patch b/recipes-test/stress/files/stress-itemx-after-item-only.patch new file mode 100644 index 0000000..5ef40bb --- /dev/null +++ b/recipes-test/stress/files/stress-itemx-after-item-only.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | stress: fix documentation build failure on Fedora | ||
2 | |||
3 | Building the documentation for stress failed due to errors like this | ||
4 | one: | ||
5 | stress.texi:68: @itemx must follow @item | ||
6 | |||
7 | Upstream-Status: Submitted [Amos Waterland <apw@debian.org>] | ||
8 | |||
9 | Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com> | ||
10 | --- a/doc/stress.texi 2005-03-10 02:16:02.000000000 +0100 | ||
11 | +++ b/doc/stress.texi 2014-04-17 17:10:25.826749256 +0200 | ||
12 | @@ -65,7 +65,7 @@ | ||
13 | @itemx --help | ||
14 | Show help information. | ||
15 | |||
16 | -@itemx --version | ||
17 | +@item --version | ||
18 | Show version information. | ||
19 | |||
20 | @item -v | ||
21 | @@ -84,7 +84,7 @@ | ||
22 | @itemx --timeout @var{secs} | ||
23 | Time out after @var{secs} seconds. | ||
24 | |||
25 | -@itemx --backoff @var{usecs} | ||
26 | +@item --backoff @var{usecs} | ||
27 | Wait for factor of @var{usecs} microseconds before starting work. | ||
28 | |||
29 | @item -c @var{forks} | ||
30 | @@ -99,10 +99,10 @@ | ||
31 | @itemx --vm @var{forks} | ||
32 | Spawn @var{forks} processes each spinning on @samp{malloc()}. | ||
33 | |||
34 | -@itemx --vm-bytes @var{bytes} | ||
35 | +@item --vm-bytes @var{bytes} | ||
36 | Allocate @var{bytes} number of bytes. The default is 1. | ||
37 | |||
38 | -@itemx --vm-hang | ||
39 | +@item --vm-hang | ||
40 | Instruct each vm hog process to go to sleep after allocating memory. This | ||
41 | contrasts with their normal behavior, which is to free the memory and | ||
42 | reallocate @emph{ad infinitum}. This is useful for simulating low memory | ||
43 | @@ -117,10 +117,10 @@ | ||
44 | @itemx --hdd @var{forks} | ||
45 | Spawn @var{forks} processes each spinning on @samp{write()}. | ||
46 | |||
47 | -@itemx --hdd-bytes @var{bytes} | ||
48 | +@item --hdd-bytes @var{bytes} | ||
49 | Write @var{bytes} number of bytes. The default is 1GB. | ||
50 | |||
51 | -@itemx --hdd-noclean | ||
52 | +@item --hdd-noclean | ||
53 | Do not unlink file(s) to which random ASCII data is written. | ||
54 | |||
55 | @end table | ||
diff --git a/recipes-test/stress/stress_1.0.4.bb b/recipes-test/stress/stress_1.0.4.bb new file mode 100644 index 0000000..af69de4 --- /dev/null +++ b/recipes-test/stress/stress_1.0.4.bb | |||
@@ -0,0 +1,13 @@ | |||
1 | inherit autotools | ||
2 | |||
3 | HOMEPAGE = "http://people.seas.harvard.edu/~apw/stress/" | ||
4 | DESCRIPTION = "stress is a deliberately simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system. It is written in C, and is free software licensed under the GPLv2." | ||
5 | |||
6 | LICENSE = "GPLv2+" | ||
7 | LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" | ||
8 | |||
9 | SRC_URI="http://people.seas.harvard.edu/~apw/stress/stress-${PV}.tar.gz;name=tar \ | ||
10 | file://stress-itemx-after-item-only.patch" | ||
11 | |||
12 | SRC_URI[tar.md5sum] = "890a4236dd1656792f3ef9a190cf99ef" | ||
13 | SRC_URI[tar.sha256sum] = "057e4fc2a7706411e1014bf172e4f94b63a12f18412378fca8684ca92408825b" | ||
diff --git a/recipes-test/systest-runner/files/systest-runner b/recipes-test/systest-runner/files/systest-runner new file mode 100644 index 0000000..13ad005 --- /dev/null +++ b/recipes-test/systest-runner/files/systest-runner | |||
@@ -0,0 +1,30 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | while true; do | ||
4 | if [ -d /usr/lib/systest-runner/tests ]; then | ||
5 | cd /usr/lib/systest-runner/tests >/dev/null | ||
6 | break | ||
7 | fi | ||
8 | if [ -d /usr/lib32/systest-runner/tests ]; then | ||
9 | cd /usr/lib32/systest-runner/tests >/dev/null | ||
10 | break | ||
11 | fi | ||
12 | if [ -d /usr/lib64/systest-runner/tests ]; then | ||
13 | cd /usr/lib64/systest-runner/tests >/dev/null | ||
14 | break | ||
15 | fi | ||
16 | break | ||
17 | done | ||
18 | |||
19 | for x in * | ||
20 | do | ||
21 | echo $x | ||
22 | if [[ -f $x ]]; then | ||
23 | date +%Y-%m-%dT%H:%M | ||
24 | echo "BEGIN: $x" | ||
25 | ./$x | ||
26 | echo "END: $x" | ||
27 | date +%Y-%m-%dT%H:%M | ||
28 | fi | ||
29 | done | ||
30 | |||
diff --git a/recipes-test/systest-runner/files/tests/ltp b/recipes-test/systest-runner/files/tests/ltp new file mode 100755 index 0000000..ebdc32f --- /dev/null +++ b/recipes-test/systest-runner/files/tests/ltp | |||
@@ -0,0 +1,23 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | cd /opt/ltp >/dev/null | ||
4 | addgroup nobody | ||
5 | sed -i -e "/mounts | sort -b$/s/$/ | grep -v deleted/" ./testscripts/test_fs_bind.sh | ||
6 | |||
7 | logname=`date +"%Y_%m_%d_%H_%M_%S"`".log" | ||
8 | ./runltp -p -d /tmp -l $logname | ||
9 | |||
10 | if [ ! -d ./results ]; then | ||
11 | echo "FAIL: no result found" | ||
12 | exit 1 | ||
13 | fi | ||
14 | |||
15 | cat ./results/$logname | while read line | ||
16 | do | ||
17 | resultLine=`echo $line | grep -c -E "PASS|FAIL"` | ||
18 | if [ $resultLine -eq 1 ]; then | ||
19 | testcase=`echo $line | awk '{print $1}'` | ||
20 | result=`echo $line | awk '{print $2}'` | ||
21 | echo "$result: $testcase" | ||
22 | fi | ||
23 | done | ||
diff --git a/recipes-test/systest-runner/files/tests/perf-network b/recipes-test/systest-runner/files/tests/perf-network new file mode 100755 index 0000000..28d88d5 --- /dev/null +++ b/recipes-test/systest-runner/files/tests/perf-network | |||
@@ -0,0 +1,13 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | logname=`date +"%Y_%m_%d_%H_%M_%S"`".log" | ||
4 | perf-networking |tee /tmp/$logname | ||
5 | |||
6 | if grep -Fq "Error:" /tmp/$logname | ||
7 | then | ||
8 | echo "FAIL: Test failed" | ||
9 | exit 1 | ||
10 | else | ||
11 | echo "PASS: Performed the netperf tests" | ||
12 | exit 0 | ||
13 | fi | ||
diff --git a/recipes-test/systest-runner/files/tests/posixtest b/recipes-test/systest-runner/files/tests/posixtest new file mode 100755 index 0000000..cf92261 --- /dev/null +++ b/recipes-test/systest-runner/files/tests/posixtest | |||
@@ -0,0 +1,40 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | printit() { | ||
4 | echo "" | ||
5 | sed -i -e "s|FAILED:|FAIL:|g" -e "s|UNRESOLVED:|FAIL:|g" -e "s|UNSUPPORTED:|SKIP:|g" -e "s|UNTESTED:|SKIP:|g" $1 | ||
6 | cat $1 | while read line | ||
7 | do | ||
8 | resultLine=`echo $line | grep -c -E "PASS|FAIL"` | ||
9 | if [ $resultLine -eq 1 ]; then | ||
10 | testcase=`echo $line | awk -F: '{print $1}'` | ||
11 | result=`echo $line | awk -F: '{print $3}'` | ||
12 | if [ -n "$testcase" ] && [ -n "$result" ]; then | ||
13 | echo "$result: $testcase" | ||
14 | fi | ||
15 | fi | ||
16 | done | ||
17 | } | ||
18 | |||
19 | cd /opt/ltp/testcases/open_posix_testsuite >/dev/null | ||
20 | |||
21 | make test | ||
22 | |||
23 | FILES=$(find . -name "logfile.*-test") | ||
24 | for f in $FILES | ||
25 | do | ||
26 | printit $f | ||
27 | done | ||
28 | |||
29 | printf "\n\nRunning POSIX Option Group Feature Tests" | ||
30 | printf "\n========================================\n" | ||
31 | |||
32 | ./bin/run-all-posix-option-group-tests.sh | ||
33 | |||
34 | FILES=$(find . -name "logfile") | ||
35 | for f in $FILES | ||
36 | do | ||
37 | printit $f | ||
38 | done | ||
39 | |||
40 | |||
diff --git a/recipes-test/systest-runner/systest-runner.bb b/recipes-test/systest-runner/systest-runner.bb new file mode 100644 index 0000000..01fe054 --- /dev/null +++ b/recipes-test/systest-runner/systest-runner.bb | |||
@@ -0,0 +1,28 @@ | |||
1 | |||
2 | LICENSE = "BSD" | ||
3 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" | ||
4 | INHIBIT_DEFAULT_DEPS = "1" | ||
5 | |||
6 | SRC_URI = "file://systest-runner \ | ||
7 | file://tests/ltp \ | ||
8 | file://tests/perf-network \ | ||
9 | file://tests/posixtest \ | ||
10 | " | ||
11 | |||
12 | STEST_PATH="${libdir}/${PN}" | ||
13 | |||
14 | FILES_${PN} +="${STEST_PATH}" | ||
15 | FILES_${PN} += "${bindir}/systest-runner" | ||
16 | |||
17 | do_install () { | ||
18 | install -D ${WORKDIR}/systest-runner ${D}${bindir}/systest-runner | ||
19 | install -d ${D}${STEST_PATH}/tests | ||
20 | for file in ${WORKDIR}/tests/* ; do | ||
21 | install $file ${D}${STEST_PATH}/tests | ||
22 | done | ||
23 | } | ||
24 | |||
25 | do_patch[noexec] = "1" | ||
26 | do_configure[noexec] = "1" | ||
27 | do_compile[noexec] = "1" | ||
28 | do_build[noexec] = "1" | ||